Amazon Web Services ブログ

Amazon SageMaker Neural Topic Model で、補助語彙チャンネル、新しいトピック評価メトリクス、およびトレーニングサブサンプリングのサポートを開始

このブログ記事では、Amazon SageMaker Neural Topic Model (NTM) の 3 つの新機能をご紹介します。これらの新機能では、ユーザーの生産性を向上し、トピック評価機能を強化し、さらにはモデルトレーニングのスピードアップに貢献しています。これらの新機能に加えて、スパース (疎) 処理とパラメータサーバーを最適化することで、アルゴリズムの速度をトレーニングに 2 倍、単一 GPU 上での評価に 4 倍向上させました。マルチ GPU トレーニングでは、さらなるスピードアップが可能です。

Amazon SageMaker NTM は、大量の文書集合 (コーパス) のトピック分布を学習する、教師なし学習アルゴリズムです。SageMaker NTM を使用して、文書分類、情報検索、コンテンツの推奨といったユースケースのための機械学習ソリューションを構築できます。Amazon SageMaker NTM についてもっと知りたい方は、Introduction to the Amazon SageMaker Neural Topic Model をご参照ください。

機械学習をよく知らない、あるいは他のタスクに専念したいという方には、完全自動化した Amazon Comprehend トピックモデリング API が最適です。データサイエンスの専門家の方で、ご自身のトピックモデルの構築やチューニングのさまざまなレイヤーをもっと細かく制御したい場合には、Amazon SageMaker NTM がぴったりです。例えば、カスタマイズした語彙を必要とするドキュメントトピックタグ付けアプリケーションを構築していて、ニューラルネットワークのレイヤー数などのアルゴリズムハイパーパラメータを調整する必要があるとしましょう。Amazon SageMaker NTM なら、一貫性および一意性スコアの目標精度を満たすトピックモデルをトレーニングすることができます。このような場合には、Amazon SageMaker NTM は適切なツールでしょう。

補助語彙チャネル

トピックモデルをトレーニングする際に、顧客がトピックの内容を理解できるよう、各トピックのトップワードを知ることが重要です。Amazon SageMaker NTM モデルの整数表現ではなく、各トピックの単語の実際の表現を検索したい場合、補助語彙チャネル機能を使用すれば、手動マッピングの作業を省けるようになりました。

現在のところ、Amazon SageMaker NTM トレーニングジョブを実行すると、トレーニング状況と評価メトリクスが Amazon CloudWatch Logs に出力され、Jupyter コンソール内にも直接出力されます。出力の中には、検出した異なるトピックのトップワードのリストが含まれます。補助語彙チャネルのサポートが利用できる前は、トップワードは整数で表現され、実際の単語が何であるかを知るには、整数を外部のカスタム語彙ルックアップテーブルにマッピングする必要がありました。補助語彙チャネルのサポートのおかげで、ユーザーはボキャブラリーファイルを追加のデータ入力チャネルとして加えることができるようになりました。さらに、Amazon SageMaker NTM は整数ではなく、トピックの実際の単語を出力します。この機能で、整数を実際の語彙にマッピングするのに必要だった手作業を排除できます。次のサンプルは、カスタム語彙テキストファイルがどのようなものかを示しています。テキストファイルには、データに含まれる整数 ID に対応する順序で、1 行につき 1 単語のリストが含まれているだけです。

absent
absentee
absolute
absolutely

トレーニングジョブに補助語彙を含めるには、ボキャブラリーファイル vocab.txt に名前を付け、それを補助ディレクトリに配置する必要があります。補助語彙ファイルを追加するシンタックスについては、次のサンプルコードを参照してください。ボキャブラリーファイルでは、UTF-8 エンコーディングをサポートしています。

# s3_aux_data contains the auxiliary channel path on s3.E.g. "s3://bucketname/auxiliary"
s3_aux = s3_input(s3_aux_data, distribution='FullyReplicated', content_type='text/plain')
s3_train = s3_input(s3_train_data, distribution='ShardedByS3Key',
                    content_type='application/x-recordio-protobuf')
s3_val = s3_input(s3_val_data, distribution='FullyReplicated',
                  content_type='application/x-recordio-protobuf')
ntm.fit({'train': s3_train, 'validation': s3_val, 'auxiliary': s3_aux})

トレーニングが完了すると、出力は次のようになります :

[09/07/2018 12:55:38 INFO 139989295474496] Topics from epoch:final (num_topics:20) [wetc 0.37, tu 0.75]:
[09/07/2018 12:55:38 INFO 139989295474496] [0.39, 0.72] game season september released power episode novel player ign jack playstation career trek boy life caused music people death fan
[09/07/2018 12:55:38 INFO 139989295474496] [0.31, 0.75] single hit design tube speed tropical maximum final nuclear storm mm taxonomy drum peaked depth wave reached wind lb iii
[09/07/2018 12:55:38 INFO 139989295474496] [0.35, 0.65] died record recorded st highway ny rule intersection chart intersects connector house century reached death billboard route charter king sr
[09/07/2018 12:55:38 INFO 139989295474496] [0.42, 0.77] gameplay player game battalion group division goal league mode match win football infantry score japanese attack regular enemy defeating yard
[09/07/2018 12:55:38 INFO 139989295474496] [0.38, 0.74] creek century mile water completed construction battalion freeway river destroyer interchange operation highway foot service city tower intersection cambridge gun
[09/07/2018 12:55:38 INFO 139989295474496] [0.36, 0.83] stone personnel film built chart long song sr rock album hop certification u rolling listing provided carey instrument instrumentation single
[09/07/2018 12:55:38 INFO 139989295474496] [0.37, 0.83] description forest possession era straight century remains round record existed yellow semi current county goal designation latin east hindu age
[09/07/2018 12:55:38 INFO 139989295474496] [0.40, 0.73] novel u bishop king archbishop fiction state poem god story henry cathedral expressed entire church new change originally turn force
[09/07/2018 12:55:38 INFO 139989295474496] [0.33, 0.73] game gameplay star race tournament body episode series developer unit player ha leslie character announced ray session international staff andy
[09/07/2018 12:55:38 INFO 139989295474496] [0.43, 0.86] team season game competition appearance florida play ground level brown japan goal summer host australia flight live feature specie injury
[09/07/2018 12:55:38 INFO 139989295474496] [0.35, 0.70] personnel surrender heavy reached radio single party bishop hit wave ship british parliament territory mm gun robert equipment issued armament
[09/07/2018 12:55:38 INFO 139989295474496] [0.41, 0.80] line french german zealand club race poem men force class light british position african american boat share smith veronica crew
[09/07/2018 12:55:38 INFO 139989295474496] [0.40, 0.83] simpson million development network map percent female doe level volume police people park developed water production business company public begin
[09/07/2018 12:55:38 INFO 139989295474496] [0.33, 0.70] game hill manchester building player division train battalion church oslo elected film vote baltimore amateur seat gate regiment infantry borough
[09/07/2018 12:55:38 INFO 139989295474496] [0.38, 0.63] ship water wind caused storm homer people poem hour affected line episode movement effect developed viewer house burn death street
[09/07/2018 12:55:38 INFO 139989295474496] [0.35, 0.82] raaf battalion party political building command rebel unit emperor hm granted outbreak brigade army restaurant cambridge appointed squadron commanded church
[09/07/2018 12:55:38 INFO 139989295474496] [0.30, 0.85] painting pagan century wasp altar architecture medieval church mary archaeologist era settlement witchcraft breed ode centre shakespeare religious scholar creek
[09/07/2018 12:55:38 INFO 139989295474496] [0.40, 0.70] episode season black series star aired character film female dvd speed rating nielsen simpson plot writer nbc director producer game
[09/07/2018 12:55:38 INFO 139989295474496] [0.41, 0.68] government community killed force vote archbishop turned death house dublin scholar legislation continued died opposed god king existed county official
[09/07/2018 12:55:38 INFO 139989295474496] [0.31, 0.70] class draft season assigned defense touchdown route ton division decommissioned line destroyer fleet mm torpedo boat tube sister king battleship

単語埋め込みトピックコヒーレンスメトリクス

トレーニング済み Amazon SageMaker NTM モデルのパフォーマンスを評価するために、トレーニングジョブによって発生した複雑度のメトリクスを調べることができます。モデルの品質のもう一つの尺度は、各トピックのトップワードの意味的な類似性です。高品質なモデルは、トピックごとに意味的に類似する単語がある必要があります。トレーニング中にトピックの一貫性を効率的に測定したい場合、新しい単語埋め込みトピックコヒーレンス (WETC) 機能を使用できるようになりました。

正規化自己相互情報量 (NPMI) のような従来の方法は、広く受け入れられているものの、大きな外部コーパスが必要です。新しい WETC 測定基準では、トレーニング済み単語埋め込みの、Glove-6B-400K-50d を使用することで、トピック内の単語の類似性を測定します。

感覚的に言えば、語彙の各単語にはベクトル表現 (埋め込み) が与えられます。トピックのトップワードに対応するベクトル間のペアワイズコサイン類似性を平均化することによって、トピックの WETC を計算します。最後に、全トピックの WETC を平均して、モデルの単一スコアを取得します。

今回のテストでは、WETC が効果的な代替として NPMI と非常によく相関していることを示しています。ペアワイズ WETC 計算および NPMI との相関については、論文[1]を参照してください。

WETC 値の範囲は 0 ~ 1 で、値が大きいほどトピックの一貫性が高いことを示します。典型的な値は、0.2 〜 0.8 の範囲にあります。ボキャブラリーファイルが与えられる度に、WETC メトリクスを評価します。トピックに対する平均 WETC スコアは、すべてのトピックのトップワードの上のログに表示されます。各トピックの WETC メトリクスは、各トピックのトップワードとともに表示されます。スクリーンショットの例をご覧ください。

注 : 提供された語彙の中の単語の多くがトレーニング済み単語埋め込みで見つからないような状況では、WETC スコアは誤解を生む可能性があります。そのため、警告メッセージを表示して、語彙内のどのくらいの単語が埋め込みをしていないかを正確にユーザーに警告します :

[09/07/2018 14:18:57 WARNING 140296605947712] 69 out of 16648 in vocabulary do not have embeddings! Default vector used for unknown embedding!

トピック一意性メトリクス

好ましいトピックモデリングアルゴリズムでは、トピックの重複を避けるために、独自のトピックを生成する必要があります。トレーニング済み Amazon SageMaker NTM モデルのトピックの独自性を知り、品質を評価するために、新しいトピック一意性 (TU) メトリクスを使用できるようになりました。

TU の仕組みを理解するために、K 個のトピックがあると仮定し、各トピックの上位 n 個の単語を抽出します。トピック k の TU は、次のように定義されます :

cnt(i,k) は、i 番目のトップワードでトピック k 内にあり、全トピックにわたってトップワードに現れる総回数を表しています。例えば、i 番目のトップワードはトピック k 内にあり、トピック k, にのみ現れるのであれば、cnt(i,k)=1; 回である一方、単語がすべてのトピックに現れるのであれば、 cnt(i,k)=K 回となります。最終的に、平均 TU は次のように計算されます :

TU 値の範囲は 1/K と 1 の間です。ここで K はトピックの数を表します。TU 値が高いほど、検出したトピックのトピック一意性が高くなります。

TU スコアは、ボキャブラリーファイルの有無に関わらず表示されます。トピックの平均 TU スコアは、すべてのトピックのトップワードの上のログに表示されます。各トピックの TU スコアは、各トピックのトップワードとともに表示されます。スクリーンショットの例をご覧ください。

トレーニングサブサンプリング

トピックモデルのトレーニングは、大規模なテキストコーパスを扱うことが多いため、トピックモデルのトレーニングには非常に時間がかかることがあります。大きなテキストコーパスを使った Amazon SageMaker NTM を使用して、モデルのパフォーマンスを維持しながら、モデルトレーニングのスピードを上げたい場合、新しいトレーニングサブサンプリング機能を利用できるようになりました。

典型的なオンライントレーニングでは、トレーニングデータセット全体が各エポックのトレーニングアルゴリズムに与えられます。コーパスが大きいと、トレーニング時間が長くなります。トレーニングデータセットを効率的にサブサンプリングすることで、モデルのパフォーマンスを維持しながら、より速くモデルを収束することが可能となりました。Amazon SageMaker NMT の新しいサブサンプリング機能により、新しいハイパーパラメータ sub_sample を使用して、トレーニングに利用するトレーニングデータの割合を指定できます。例えば、sub_sample に 0.8 を指定すると、Amazon SageMaker NTM はトレーニングデータの 80% を各エポックにランダムに使用します。その結果、アルゴリズムは、異なるエポック中に、異なるサブセットのデータを確率的にカバーします。この値は、Amazon SageMaker コンソール、あるいは直接トレーニングコードで設定することもできます。この値をトレーニング用に設定する方法については、次のサンプルコードを参照してください。

ntm.set_hyperparameters(num_topics=num_topics, feature_dim=vocab_size, mini_batch_size=128, epochs=100, sub_sample=0.7)

sub_sample ハイパーパラメータの有用性を実証するため、wikitext-103 データセット [2] のトレーニング用に、ハイパーパラメータを 1.0 と 0.2 に設定します。どちらの設定においても、検証データの損失が 3 つの連続したエポックで改善しない場合、NTM はトレーニングを早期終了します。以下のように、検証の損失と両方の設定の合計時間に基づいて、最高エポックの TU、WETC、および NPMI を割り出します。

sub_sample TU WETC NPMI 総時間 (秒) 最適エポック
1.0 0.9 0.13 0.163 900 18
0.2 0.91 0.17 0.204 673 49

sub_sample を 0.2 に設定すると、収束するエポックがより多くなっても (18 の代わりに 49)、合計トレーニング時間が短縮されることが分かります。各エポックのデータのランダムなサブセット上でのトレーニングによって分散されるため、収束までのエポック数の増加が予想されます。しかし、トレーニングはサブサンプリングレート 0.2 で、各エポックで約 5 倍速くなるため、全体的なトレーニング時間は短縮します。さらに、サブサンプリングを用いたトレーニングの終了時には、TU、WETC、および NPMI で、より高いスコアも実現します。実験の詳細は、ノートブックにあります。

3 つの新機能が実際にどのように使用されているかについて、完全なサンプルノートを見たい場合は、こちらのノートブックを参照してください。

まとめ

このブログ記事では、3 つの新しい Amazon SageMaker NTM 機能をご紹介しました。この記事とサンプルノートブックで、補助語彙チャネルを追加し、トピックの整数単語表現を人間が理解できる語彙に自動的にマッピングする方法を学びました。新しい単語埋め込みトピックコヒーレンスとトピック一意性のメトリクスを使用して、トレーニング済みモデルの品質を評価することも学びました。最後に、モデルのパフォーマンスを維持しながら、サブサンプリング機能を使用して、モデルのトレーニング時間を短縮する方法を学びました。

[1] Ran Ding、Ramesh Nallapati、Bing Xiang2018 コヒーレンス認識ニューラルトピックモデリング (EMNLP 2018 にて入選)

[2] Stephen Merity、Caiming Xiong、James Bradbury、Richard Socher2016Pointer Sentinel Mixture Models


著者について

David Ping は、AWS ソリューションアーキテクト部の、プリンシパルソリューションアーキテクトです。AWS を使ったクラウドと機械学習ソリューションを構築し、お客様をサポートしています。ニューヨークの中心部に暮らしながら、最新の機械学習テクノロジーを楽しく学んでいます。

Feng Nan は、AWS AI Algorithms チームのアプライドサイエンティストで、Amazon SageMaker の機械学習アルゴリズムを研究および開発しています。Amazon に来る前、限られたリソースでの機械学習に焦点を当てた論文を執筆し、ボストン大学でシステムエンジニアリングの博士号を取得しました。

Ran Ding は AWS AI Algorithms チームのアプライドサイエンティストで、Amazon SageMaker の機械学習アルゴリズムを研究および開発しています。Amazon以前は、ワシントン大学で電気工学の博士号を取得し、光学プロセッサーを製造するスタートアップ企業で働いていました。

Ramesh Nallapati は、AWS AI SageMaker チームのシニアアプライドサイエンティストです。主に自然言語処理の分野で、大規模な新しいディープニューラルネットワークの構築に取り組んでいます。深層学習に情熱を注いでおり、AI の最新動向を楽しく学んでいます。また、この分野で貢献できることに興奮しています。

Patrick Ng は、AWS AI SageMaker Algorithms チームのソフトウェア開発エンジニアです。ディープニューラルネットワークと自然言語処理の分野を中心に、スケーラブルな分散機会学習アルゴリズムの構築に取り組んでいます。  Amazon に来る前は、コーネル大学でコンピュータサイエンスの博士号を取得し、機械学習システムを構築するスタートアップ企業にいました。