AutoML Natural Language 初心者向けガイド

はじめに

自社のウェブサイトに問い合わせフォームがあるとします。このフォームから毎日多くのメッセージを受け取ります。その多くはなんらかの方法で対応可能ですが、すべてのメッセージが一斉に届き、異なる従業員がいろいろなタイプのメッセージを処理するため、メッセージへの対応が遅れがちです。自動化されたシステムによってメッセージを分類し、適切な担当者が適切なコメントを見られるようになれば、非常に効率的です。

分類された画像

コメントを認識して、それが苦情なのか、過去のサービスに対する肯定的な評価なのか、業務内容に関する問い合わせなのか、アポイントの申し込みなのかを判断するシステムが必要です。

機械学習(ML)がこの問題に適したツールである理由

従来のプログラミングでは、コンピュータに従わせる段階的な命令をプログラマーが指定する必要があります。しかし、このアプローチではすぐに行き詰まります。お客様のコメントは語彙と構造が非常に広範で多様であるため、簡単なルールセットでは捕捉できません。手動でフィルタを作成しようとしても、お客様のコメントの大部分を分類できないことがすぐにわかります。ここで必要になるのが、多様なコメントに対して汎用化できるシステムです。ルールの数が指数関数的に増加せざるを得ない状況への対処には、サンプルから学習できるシステムが必要となります。こうした問題の解決に最適なのが機械学習システムです。

Cloud Natural Language API と AutoML Natural Language のどちらのツールが適切か

Natural Language API は、テキストから構文、エンティティ、感情を検出し、テキストを事前定義された一連のカテゴリに分類します。テキストがニュース記事やその他の分類したいコンテンツで構成されている場合、またはサンプルの感情を検出することに興味がある場合は、Natural Language API を試してみる価値があります。しかし、テキストのサンプルが Natural Language API の感情ベースまたは垂直トピックベースの分類スキームにうまく適合せず、代わりに独自のラベルを使用したい場合は、カスタム分類を試してみてニーズに合うかどうか調べてみることをおすすめします。

Natural Language API と AutoML Natural Language の比較

Natural Language API を試すAutoML を使ってみる

AutoML Natural Language に含まれる要素

機械学習で望ましい結果を得るには、データを使用してアルゴリズムをトレーニングする必要があります。アルゴリズムの詳細やトレーニング方法は、ユースケースに応じて変わります。機械学習にはさまざまな分野があり、それらはすべて異なる問題を解決し、異なる制約の中で動作します。AutoML Natural Language を使用すると、ラベル付きデータからパターンを認識するようコンピュータをトレーニングする、教師あり学習を実施できます。教師付き学習を使用することで、関心のあるコンテンツをテキストで認識するようカスタムモデルをトレーニングできます。

データ準備

AutoML Natural Language を使用してカスタムモデルをトレーニングするには、分類するテキスト項目のラベル付きサンプル(入力)と、ML システムに予測させるカテゴリまたはラベル(回答)を提供します。

ユースケースを評価する

データセットを用意するときは、常にユースケースの検討から始めます。まずは以下の点を考慮します。

  • どのような結果を得ようとしているのか。
  • 結果を得るには、どのようなカテゴリを認識する必要があるか。
  • 人間がそれらのカテゴリを認識することは可能か。AutoML Natural Language は人間が一度に覚えて割り当てるよりも多くのカテゴリを処理できますが、人間が認識できないカテゴリについては、AutoML Natural Language にとっても認識するのが困難です。
  • システムに分類させるデータの種類と範囲を最もよく反映するサンプルはどのようなものか。

Google の ML プロダクトを支える基本原則は、人間を中心とした機械学習です。これは責任ある AI への取り組みを重視したアプローチであり、公平性への取り組みなどが含まれます。ML における公平性の目的とは、過去に差別や過小評価の対象になった人種、収入、性的指向、宗教、性別などの特性を理解し、そのような特性がアルゴリズム システムやアルゴリズムによる意思決定に現れる場合に、不公平で偏見的な扱いを防止することです。詳細については、インクルーシブ ML ガイドをお読みいただくか、下記のガイドラインの「公平性の認識」の注記 でご確認いただけます。データセットを用意するためのガイドラインを読み進めながら、ご自身のユースケースに関係するところで機械学習における公平性について検討してみてください。

データを調達する

必要なデータが決まったら、データの調達方法を見つける必要があります。まず、組織で現在収集しているあらゆるデータを考慮に入れるところから始めます。モデルのトレーニングに必要なデータがすでに収集されている場合もあります。必要なデータがない場合、自力で収集することも、サードパーティ プロバイダにデータの収集を委託することもできます。

十分な数のラベル付きサンプルを各カテゴリに含める

AutoML Natural Language のトレーニングでは、カテゴリまたはラベルごとに最低でも 10 個のテキスト サンプルが必要です。各ラベルに対応する高品質なサンプルを数多く用意すれば、ラベルがうまく認識される可能性もそれだけ高まります。一般的には、トレーニング プロセスに取り込むラベル付きデータが多いほど、モデル品質は向上します。必要なサンプルの数は、予測するデータの一貫性の度合いや、目標とする精度によっても異なります。一貫性のあるデータセットのサンプルを少なくするか、精度を 97% ではなく 80% にすることもできます。ラベルごとに 50 のサンプルを使用してモデルをトレーニングし、結果を評価します。サンプルを追加して、精度の目標に達するまで再トレーニングします。ラベルごとに数百、数千ものサンプルが必要になることもあります。

カテゴリごとに均等にサンプルを分布させる

カテゴリごとに取得するトレーニング サンプルの数をほぼ同じにすることが重要です。1 つのラベルに対して豊富なデータがある場合でも、各ラベルの分布を均等にするのがベストです。モデルの構築に使用するお客様のコメントの 80% が見積もり依頼だった場合を想像してみてください。このようにラベルの分布が均等でない場合、モデルはあえてあまり一般的でないラベルを予測するよりも、お客様のコメントは見積もり依頼である、と常に報告する方が安全だと学習する可能性が非常に高まります。これは、多肢選択式テストを作るときにほとんどすべての正解を「C」にするようなものです。抜け目のない受験生なら、質問を見なくても毎回「C」と答えればよいことにすぐに気付くでしょう。

各ラベルにほぼ同数のサンプルを調達することは、常に可能であるとは限りません。カテゴリによっては、高品質でバイアスのないサンプルを調達することが困難な場合もあります。そのような状況では、最もサンプル数の少ないラベルが、最もサンプル数の多いラベルの 10% 以上になるようにします。したがって、最もサンプル数の多いラベルに 10,000 個のサンプルがある場合、最もサンプル数の少ないラベルには少なくとも 1,000 個のサンプルが必要になります。

問題空間内のバリエーションを収集する

同様の理由で、問題空間内の多種多様性を反映したデータを集めるようにしてください。提供するサンプルの幅が広くなるほど、モデルは新しいデータをより適切に一般化できます。たとえば、家電製品に関する記事をトピックに分類しようとしているとします。提供されるブランド名と技術仕様が多くなるほど、モデルは記事のトピックをより簡単に判断できるようになります。その記事がトレーニング セットに含まれていないブランドに関するものであっても問題ありません。また、モデルのパフォーマンスをさらに向上させるために、「none_of_the_above」ラベルを含めて、定義されたラベルのいずれとも一致しないドキュメントをこのラベルに分類することもできます。

モデルの意図する出力にデータを合わせる

テキストと出力

予測の対象に似たテキストのサンプルを探します。たとえば、ガラス細工に関するソーシャル メディアの投稿を分類しようとしている場合、ガラス細工に関する情報のウェブサイトでトレーニングされたモデルでは、おそらく良いパフォーマンスは得られないでしょう。こうしたウェブサイトでは、語彙やスタイルが大きく異なる可能性があるためです。トレーニングのサンプルは、そのモデルを使用して分類する予定のものと同じデータセットから作成された実世界のデータにするのが理想的です。

カスタムモデルの作成時に AutoML Natural Language がどのようにデータセットを使用するかを考慮する

データセットには、トレーニング セット、検証セット、テストセットが含まれます。分割を指定しない場合(データの準備を参照)、AutoML Natural Language は自動的にコンテンツ ドキュメントの 80% をトレーニングに、10% を検証に、10% をテストに使用します。

トレーニング、検証、テストセット

トレーニング セット

データの大部分をトレーニング セットに含めるようにします。これはトレーニング中にモデルが「見る」データであり、モデルのパラメータ、つまりニューラル ネットワークのノード間の接続の重みを学習するために使用されます。

検証セット

検証セットは「dev」セットとも呼ばれ、同じくトレーニング プロセス中に使用されます。モデルの学習フレームワークは、トレーニング プロセスの各反復処理でトレーニング データを取り込んだ後、検証セットに対するモデルのパフォーマンスに基づき、そのハイパーパラメータ(モデルの構造を指定する変数)を調整します。トレーニング セットを使用してハイパーパラメータを調整しようとすると、モデルがトレーニング データに過度に適合してしまい、正確に一致しないサンプルを一般化するのが困難になる可能性が高まります。多少違ったデータセットを使ってモデル構造を細かく調整することで、モデルがより適切に一般化されます。

テストセット

テストセットはトレーニング プロセスには使用されません。モデルのトレーニングが完了した後、AutoML Natural Language はテストセットをモデル向けの課題として使用します。テストセットに対するモデルのパフォーマンスを知ることで、モデルが実世界のデータに対してどのように機能するかをおおよそ理解できます。

手動分割

自分でデータセットを分割できます。データを手動で分割すると、プロセスをより詳細に制御できます。また、モデルのトレーニング ライフサイクルの特定の部分に特定のサンプルを確実に含めたい場合に適しています。

 

インポートするデータを準備する

データの手動分割と自動分割のどちらが適切かを判断したら、次の 3 つの方法で AutoML Natural Language にデータを追加できます。

  • テキスト サンプルを並べ替え、ラベルに対応するフォルダに保存してデータをインポートできます。
  • トレーニング データの準備で説明されているように、パソコンや Cloud Storage から、ラベルを埋め込んだ CSV 形式のデータをインポートできます。データセットを手動で分割する場合は、このオプションを選択して CSV の形式を適切に設定する必要があります。
  • データにまだラベル付けが行われていない場合は、ラベル付けが行われていないテキストのサンプルをアップロードし、AutoML Natural Language UI を使用してそれぞれにラベルを適用できます。

評価

モデルのトレーニングが完了すると、モデルのパフォーマンスの概要が表示されます。詳細な分析を表示するには、[評価] または [評価全体を見る] をクリックします。

モデルを評価する前の留意点

モデルのデバッグは、モデル自体よりもデータを対象とするものです。本番環境への移行前後でモデルのパフォーマンスを評価しているときに、モデルが予期しない動作をするようになった場合は、いったん戻ってデータをチェックし、改善が必要な箇所を見つける必要があります。

AutoML Natural Language で実施可能な分析

AutoML Natural Language の評価セクションでは、テストサンプルに対するモデルの出力と一般的な機械学習の指標を使用してカスタムモデルのパフォーマンスを評価できます。このセクションでは、次の各コンセプトについて説明します。

  • モデルの出力
  • スコアしきい値
  • 真陽性、真陰性、偽陽性、偽陰性
  • 適合率と再現率
  • 適合率 / 再現率曲線
  • 平均適合率

モデルの出力の解釈方法

AutoML Natural Language はテストデータからサンプルを取り出し、モデルに対して新しい課題を提示します。モデルはそれぞれのサンプルについて、各ラベルがそのサンプルにどれくらい強く関連付けられているかを示す一連の数値を出力します。数値が高い場合、高い信頼度でそのラベルをドキュメントに適用できるとモデルが判断したことを示します。

スコアしきい値とは

スコアしきい値を設定することによって、上記の確率を「オン」または「オフ」の値に変換できます。スコアしきい値とは、モデルで特定のテスト項目にカテゴリを割り当てるために必要な信頼度です。UI のスコアしきい値スライダーは、データセット内のさまざまなしきい値の影響をテストするための視覚的なツールです。上述の例では、すべてのカテゴリのスコアしきい値を 0.8 に設定した場合、「Great Service」と「Suggestion」は割り当てられますが、「Info Request」は割り当てられません。スコアしきい値が低い場合、モデルはより多くのテキスト項目を分類しますが、より多くのテキスト項目が誤って分類されるリスクがあります。スコアしきい値が高い場合、モデルが分類するテキスト項目は少なくなりますが、誤って分類されるリスクも低くなります。UI でカテゴリごとにしきい値を微調整して実験できます。ただし、本番環境でモデルを使用するときには、ご自身が最適であると判断したしきい値を適用する必要があります。

信頼しきい値

真陽性、真陰性、偽陽性、偽陰性とは

スコアしきい値を適用すると、モデルの予測は次の 4 つのカテゴリのいずれかになります。

信頼性カテゴリの説明

これらのカテゴリを使用して、モデルの有効性の評価に役立つ指標である適合率と再現率を計算できます。

適合率、再現率とは

適合率と再現率は、モデルがどの程度適切に情報を取得しているか、そしてどれだけの情報を除外しているかを把握するのに役立ちます。適合率は、あるラベルが割り当てられたすべてのテストサンプルのうち、実際にそのラベルに分類されなければならないものの数を示します。再現率は、あるラベルが割り当てられなければならないすべてのテストサンプルのうち、実際にそのラベルが割り当てられたものの数を示します。

適合率や再現率を高めるために最適化する必要があるか

ユースケースによっては、適合率または再現率を高めるために最適化した方がよい場合もあります。それを判断する材料として、次の 2 つのユースケースを考えてみましょう。

ユースケース: 緊急のドキュメント

たとえば、緊急を要するドキュメントを他よりも優先するシステムを作成するとします。

この場合の偽陽性とは、緊急ではないドキュメントが緊急を要するものとして分類されることです。ユーザーはこれを緊急でないとして却下し、先に進むことができます。

この場合の偽陰性とは、緊急を要するドキュメントがそのように分類されないことです。これは問題を引き起こす可能性があります。

この場合は、再現率を高めるように最適化することをおすすめします。この指標は、行われたすべての予測において、除外された量を測定します。再現率の高いモデルでは、わずかな関連性を持つサンプルにもラベルを付ける可能性が高いため、カテゴリのトレーニング データが少ない場合に役立ちます。

ユースケース: スパムフィルタ

たとえば、スパムであるメール メッセージをそうでないメッセージから自動的にフィルタリングするシステムを作成するとします。

この場合の偽陰性とは、スパムメールが検出されず、受信トレイに表示されることです。通常、これによってユーザーが受ける影響は、少しの不快感といった程度です。

この場合の偽陽性とは、メールが誤ってスパムとして分類され、受信トレイから削除されることです。それが重要なメールだった場合、ユーザーに重大な影響が及ぶ危険性があります。

この場合は、適合率を高めるように最適化することをおすすめします。この指標は、行われたすべての予測に対し、それらがどの程度適切かを測定します。適合率の高いモデルは、最も関連性の高いサンプルのみにラベルを付ける可能性が高いため、目的のカテゴリがトレーニング データ内によく見られる場合に便利です。

混同行列の使用

混同行列を使用すると、各ラベルに対するモデルのパフォーマンスを比較できます。理想的なモデルでは、対角線上のすべての値が高くなり、他の値はすべて低くなります。これは、目的のカテゴリが正しく識別されていることを示しています。他の値が高い場合は、モデルがテスト項目をどう誤って分類しているかを知るための手がかりとなります。

混同行列

適合率 / 再現率曲線の解釈

適合率 / 再現率曲線

スコアしきい値ツールを使用すると、選択したスコアしきい値が適合率と再現率にどう影響するかを調べることができます。スコアしきい値バーのスライダーをドラッグすると、そのしきい値が適合率と再現率のトレードオフ曲線のどこに位置するのか、またそのしきい値が適合率と再現率のそれぞれにどう影響するのかを見ることができます(多分類モデルの場合、これらのグラフの適合率と再現率は、適合率と再現率の指標の計算に使用される唯一のラベルが、返されるラベルのセットの中で最も高いスコアを持つラベルであることを意味します)。これは、偽陽性と偽陰性のバランスを取るのに役立ちます。

モデル全体で許容できると思われるしきい値を選択したら、個々のラベルをクリックし、そのしきい値が各ラベルの適合率 / 再現率曲線のどこに位置するかを確認できます。場合によっては、いくつかのラベルで誤った予測が多くなることがあります。その場合は、これらのラベルにカスタマイズした分類別のしきい値を選択できます。たとえば、顧客のコメントのデータセットを見た際に、しきい値が 0.5 の場合に、すべてのコメントタイプに対して合理的な適合率と再現率が得られることに気付いたとします。ただしコメントタイプが「Suggestion」の場合は例外的にこの傾向が見られませんでした。おそらくこれは「Suggestion」が非常に一般的なカテゴリであるためです。このカテゴリでは、偽陽性が数多く見られます。この場合、予測のための分類子を呼び出すときに、「Suggestion」のしきい値だけを 0.8 にできます。

平均適合率とは

モデル精度については、適合率 / 再現率曲線の下の領域が有用な指標となります。これは、モデルがすべてのスコアしきい値にわたってどの程度良好に機能しているかを測定します。AutoML Natural Language では、この指標を「平均適合率」と呼びます。このスコアが 1.0 に近ければ近いほど、モデルはテストセットに対して適切に機能しています。各ラベルについてランダムに推測するモデルの場合に得られる平均適合率はおよそ 0.5 です。

モデルをテストする

AutoML Natural Language は、データの 10%(データ分割を自分で行った場合は、選択したパーセンテージ)を自動的に使用して、モデルのテストを行います。テストデータに対するモデルのパフォーマンスは、[評価] ページで確認できます。また、モデルのサニティ チェックを行う場合のために、サニティ チェックの方法もいくつか用意されています。最も簡単な方法は、[予測] ページのテキスト ボックスにテキスト サンプルを入力し、サンプルに対してモデルが選択するラベルを確認することです。モデルの性能が良ければ、これで期待に沿った結果が得られるはずです。受け取ると予想される各種コメントのサンプルをいくつか試してみてください。

モデルを独自の自動テストで使用する場合、[予測] ページにはモデルをプログラムで呼び出す方法が示されます。