テキストデータはどこにでもある 既存の企業でも、新しいサービスを開発している企業でも、テキスト データを活用して製品の機能を検証、改善、拡張できます。テキストデータから意味を抽出し学習する科学は、自然言語処理 (NLP) として知られる活発な研究テーマです。 NLP では日々新たな重要な進歩があり、非常に大きな分野となっています。しかし、Insight チームは、何百もの企業と協力した結果、いくつかの重要な実世界のアプリケーションが他のアプリケーションよりも頻繁に出現することを発見しました。
オンラインで入手できる NLP に関する論文やチュートリアルは多数ありますが、これらの問題を効果的かつ根本的に解決するためのガイドラインやテクニックを見つけるのは困難でした。 この記事の用途は何ですか? 私たちは、年間数百のプロジェクトを主導し、全米のトップチームからアドバイスを受けた後、上記の問題を解決するための機械学習ソリューションを構築する方法を説明するためにこの投稿を書きました。まずは最もシンプルなアプローチから始めて、次に特徴エンジニアリング、単語埋め込み、ディープラーニングなどのより微妙なソリューションに移ります。 この記事を読むと、次のことがわかります。
この記事は、効果的な標準アプローチの概要としても機能するステップバイステップのガイドとして作成されました。 ステップ1: データを収集する サンプルデータソース すべての機械学習の問題は、電子メール、投稿、ツイートのリストなどのデータから始まります。テキスト情報の一般的なソースは次のとおりです。
「ソーシャルメディア上の災害」データセット ソーシャルメディア災害データセット この記事では、図 8 に示す「ソーシャル メディア上の災害」というタイトルのデータセットを使用します。 寄稿者は、「火災」「隔離」「混乱」などさまざまな用語を検索した後、1万件以上のツイートを調べ、そのツイートが災害イベントに言及しているかどうか(その単語を含むジョーク、映画レビュー、その他の災害に関連しないものではないかどうか)を示しました。 私たちの仕事は、映画などの関連トピックではなく、壊滅的な出来事に関するツイートを検出することです。なぜでしょうか? 考えられる応用例の 1 つは、アダム・サンドラーの最新作映画のレビューを無視して、緊急事態を法執行機関にのみ通知することです。このタスクの特に難しい点は、両方のクラスにツイートの検索に使用される同じ検索用語が含まれているため、それらを区別するにはより微妙な違いを使用する必要があることです。 この記事の残りの部分では、災害に関するツイートを「災害」、それ以外のツイートを「無関係」と呼ぶことにします。 ラベル データにラベルを付けたので、どのツイートがどのカテゴリに属しているかがわかります。 Richard Socher が以下で概説しているように、複雑な教師なし手法を最適化しようとするよりも、モデルをトレーニングするのに十分なデータを見つけてラベル付けする方が、多くの場合、より高速で、より簡単で、安価です。 ステップ2: データのクリーニング 私たちが従う最初のルールは、「モデルの良し悪しはデータの良し悪しによって決まる」というものです。 データ サイエンティストの重要なスキルの 1 つは、次のステップでモデルとデータのどちらに取り組むべきかを知ることです。経験則としては、まずデータを見てから整理するのが良いでしょう。クリーンなデータセットにより、モデルは無関係なノイズに過剰適合することなく、意味のある特徴を学習できるようになります。 データをクリーンアップするためのチェックリストは次のとおりです。
これらの手順を実行し、追加のエラーがないか確認したら、クリーンなラベル付きデータを使用してモデルのトレーニングを開始できます。 ステップ3: 適切なデータ表現を見つける 機械学習モデルは数値を入力として受け取ります。たとえば、画像を処理するモデルでは、各カラー チャネルの各ピクセルの強度を表すためにマトリックスを使用します。 数字のマトリックスで表現されたスマイリーフェイス 私たちのデータセットは文のリストなので、アルゴリズムがデータからパターンを抽出するには、まずそれをアルゴリズムが理解できる形、つまり数字のリストとして表現する方法を見つける必要があります。 ワンホットエンコーディング(単語の袋) コンピューターでテキストを表現する自然な方法は、各文字を個別に数値としてエンコードすることです。この単純な表現を分類器に入力する場合、分類器はデータのみに基づいて単語の構造を最初から学習する必要がありますが、これはほとんどのデータセットでは不可能です。より高レベルのアプローチを使用する必要があります。 たとえば、データセット内のすべての一意の単語の語彙を構築し、語彙内の各単語に一意のインデックスを関連付けることができます。各文は、語彙内の異なる単語の数と同じ長さのリストとして表されます。このリストの各インデックスには、特定の単語が文中に出現する回数がマークされています。これは文中の単語の順序を完全に無視した表現であるため、bag-of-words モデルと呼ばれます。下の図の通りです。 文章を単語の集まりとして表現します。左側に文章、右側に説明があります。ベクトル内の各インデックスは特定の単語を表します。 組み込み視覚化 「ソーシャル メディア災害」の例では、語彙のサイズは約 20,000 語であり、各文は長さ 20,000 のベクトルとして表されることになります。各文には語彙のごく一部しか含まれていないため、ベクトルの大部分はゼロで埋められます。 埋め込みが問題に関連する情報(つまり、ツイートが災害に関するものかどうか)をキャプチャしているかどうかを確認するには、埋め込みを視覚化して、クラス間の分離が適切かどうかを確認することをお勧めします。通常、語彙は非常に大きく、20,000 次元でデータを視覚化することは不可能であるため、PCA などの手法はデータを 2 次元に投影するのに役立ちます。下の図の通りです。 Bag of Words埋め込みの視覚化 2 つのクラスは適切に分離されていないように見えますが、これは埋め込みの特徴である可能性があり、あるいは単に次元削減によるものである可能性もあります。バッグ・オブ・ワード機能が有用かどうかを理解するために、バッグ・オブ・ワード機能に基づいて分類器をトレーニングすることができます。 ステップ4: 分類 初めて問題に取り組む場合、一般的なベストプラクティスは、その問題を解決できる最もシンプルなツールから始めることです。データを分類する場合、その汎用性と解釈可能性から、ロジスティック回帰が最も人気があります。トレーニングは非常に簡単で、モデルから最も重要な係数を簡単に抽出できるため、結果を解釈できます。 データを、モデルを適合させるためのトレーニング セットと、未知のデータにどの程度一般化できるかを確認するためのテスト セットの 2 つの部分に分割します。トレーニング後、75.4% の精度を達成しました。まあ十分だ!最も一般的なカテゴリ (「関係ない」) を推測すると、回答の 57% しか得られません。しかし、75% の精度は私たちのニーズには十分ですが、モデルを理解せずにリリースすることはできません。 ステップ5: 確認 混同マトリックス 最初のステップは、モデルが犯す間違いの種類と、最も望ましくない間違いはどれかを理解することです。この例では、誤検知により無関係なツイートが災害として分類され、誤検知により災害が無関係なツイートとして分類されます。あらゆる潜在的なイベントに対応することを優先する場合は、偽陰性を減らす必要があります。ただし、リソースが制限されている場合は、誤報を減らすために誤検知率を低くすることを優先する場合があります。この情報を視覚化する良い方法は、モデルによる予測と実際のラベルを比較する混同行列を使用することです。理想的には、マトリックスは左上隅から右下隅までの対角線になるはずです (私たちの予測は事実とまったく同じです)。 混同マトリックス(緑は高い割合、青は低い割合を示す) 私たちの分類器は、偽陽性よりも偽陰性を多く生成します(比例して)。言い換えれば、私たちのモデルが犯す最も一般的なエラーは、災害を重要でないものと誤って分類することです。誤検知が法執行機関にとって大きなコストとなる場合、これは私たちの分類器にとって良いバイアスとなる可能性があります。 モデルの説明 モデルを検証し、その予測を説明するには、モデルが決定を下すためにどの単語を使用するかを確認することが重要です。データに偏りがある場合、分類器はサンプル データ内では正確な予測を行いますが、モデルは現実世界ではうまく一般化されません。ここでは、災害クラスと無関係クラスの最も重要な単語をプロットします。バッグ・オブ・ワードとロジスティック回帰を使用して単語重要度グラフをプロットするのは、モデルが予測に使用する係数を抽出してランク付けするだけでよいため簡単です。 言葉の袋: 言葉の重要性 私たちの分類器はいくつかのパターン (hiroshima、holocaust) を正しく検出しましたが、明らかに意味のない用語 (heyoo、x1392) に過剰適合しているようでした。現在、私たちの bag-of-words モデルは、さまざまな単語の大規模な語彙を処理し、すべての単語を平等に扱っています。ただし、これらの単語の中には非常に頻繁に使用されるものもあり、予測にノイズを追加するだけになります。次に、単語の頻度を考慮した文を表現する方法を試し、データからより多くの信号を抽出できるかどうかを確認します。 ステップ6: 語彙構造を数える TF-IDF モデルが意味のある単語にさらに重点を置くようにするために、bag-of-words モデルで TF-IDF スコア (用語頻度、逆ドキュメント頻度) を使用できます。 TF-IDF は、データセット内での単語の希少性に基づいて単語に重みを付け、頻度が高すぎてノイズを追加するだけの単語を軽視します。これは、新しい埋め込みの PCA 投影です。 TF-IDF埋め込みの視覚化 上から見ると、2 つの色の違いがより明白であることがわかります。これにより、分類器が 2 つのグループを分離しやすくなります。これによってパフォーマンスが向上するかどうか確認してみましょう。新しい埋め込みに対して別のロジスティック回帰をトレーニングすると、76.2% の精度が得られます。 ごくわずかな改善。私たちのモデルはより重要な単語を学習し始めていますか?モデルの「不正」を防ぎながらより良い結果を達成できれば、そのモデルを本当にアップグレードと見なすことができます。 TF-IDF: 単語の重要度 選択された単語はより関連性が高いようです。テスト セットの精度はわずかに向上しただけでしたが、モデルが使用する用語に対する信頼が高まり、顧客と対話するシステムにモデルを展開する際の安心感が増しました。 ステップ7: セマンティクスの力 ワード2ベクトル 当社の最新モデルは、頻繁に使用される単語を認識できます。ただし、このモデルを展開すると、トレーニング セットでこれまで見たことのない単語に遭遇する可能性が高くなります。以前のモデルでは、トレーニング中に非常に類似した単語を見た後でも、これらのツイートを正確に分類できませんでした。 この問題を解決するには、単語の意味を理解する必要があります。つまり、「good」や「positive」などの単語は、「apricot」や「continent」などの単語よりも近いことを理解する必要があります。セマンティクスをキャプチャするために使用するツールは Word2Vec と呼ばれます。 事前に学習した単語を使用する Word2Vec は、単語の連続的な埋め込みを見つけるための技術です。大量のテキストを読み、類似の文脈に現れる単語を記憶することで学習します。十分なデータでトレーニングした後、語彙内の各単語に対して 300 次元のベクトルが生成され、意味が似ている単語は互いに近くなります。 この論文 (https://arxiv.org/abs/1301.3781) の著者は、非常に大規模なコーパスで事前トレーニングされたモデルのソースコードを公開しました。これを使用して、モデルに意味的知識を組み込むことができます。事前トレーニング済みのベクトルは、この記事に関連付けられたリポジトリにあります。 意味レベルの表現 分類器の文埋め込みを素早く取得する方法は、文内のすべての単語の Word2Vec スコアを平均することです。これは、以前と同じように bag-of-words アプローチですが、今回は文の構文のみが失われ、意味情報は保持されます。 Word2Vec 文埋め込み 以前の手法を使用して視覚化された新しい埋め込み: Word2Vec 埋め込み視覚化 ここでは 2 つの色のグループがはるかに分離されているように見え、新しい埋め込みにより、分類器が 2 つのクラス間の分離を見つけるのに役立つはずです。同じモデルを 3 回目にトレーニングした後 (ロジスティック回帰)、精度は 77.7%となり、これまでで最高の結果となりました。モデルを確認する時間です。 複雑さと解釈可能性のトレードオフ 私たちの埋め込みは、以前のモデルのように単語ごとに 1 次元ベクトルとして表現されないため、どの単語が分類に最も関連しているかを確認するのは困難です。ロジスティック回帰の係数にはまだアクセスできますが、それらは単語のインデックスではなく、埋め込みの 300 次元に関連しています。 精度がこれほど低い場合、解釈可能性をすべて失うのは厳しいトレードオフのように思われます。ただし、より複雑なモデルの場合は、分類器がどのように機能するかについての洞察を得るために、LIME などのブラックボックスの説明者を活用することができます。 ライム LIME は Github でオープンソース パッケージとして入手できます。ブラックボックスの説明機能を使用すると、ユーザーは入力を乱し(この場合は文から単語を削除)、予測がどのように変化するかを確認することで、特定の例に対する分類器の決定を説明できます。 データセットの文章の説明をいくつか見てみましょう。 「関連」として分類する正しい災害用語を選択してください。 ここでは、単語が分類に寄与するかどうかは明らかではないようです。 しかし、データセット内の何千もの例を研究する時間はありません。代わりに、テスト ケースの代表的なサンプルに対して LIME を実行し、どの単語が強い貢献者として現れ続けるかを確認します。この方法を使用すると、以前のモデルと同様に単語の重要度スコアを取得し、モデルの予測を検証できます。 Word2Vec: 単語の重要度 モデルは関連性の高い単語を選択したようです。つまり、理解可能な決定を下したようです。これまでのモデルの中で、これらが最も関連性の高い単語であると思われるため、本番環境に展開することをお勧めします。 ステップ8: セマンティクスを活用し、エンドツーエンドのアプローチを使用する 高密度の文埋め込みを生成するための高速かつ効率的な方法を導入しました。しかし、単語の順序を無視すると、文章の文法情報がすべて失われます。これらの方法で十分な結果が得られない場合は、文全体を入力として受け取り、中間表現を構築せずにラベルを予測する、より複雑なモデルを使用できます。一般的なアプローチは、Word2Vec や、GloVe や CoVe などの最近の方法を使用して、文を個々の単語ベクトルのシーケンスとして扱うことです。これが私たちが次にやろうとしていることです。 効率的なエンドツーエンドのアーキテクチャ 文分類用の畳み込みニューラル ネットワークは、非常に速くトレーニングでき、エントリー レベルのディープラーニング アーキテクチャです。畳み込みニューラル ネットワーク (CNN) は主に画像データでのパフォーマンスで知られていますが、テキスト関連のタスクでも優れた結果を提供できます。このモデルは単語の順序を保持し、どの単語シーケンスがターゲット クラスを予測するかについての貴重な情報を学習します。以前のモデルとは対照的に、このモデルは「Alex は植物を食べます」と「植物は Alex を食べます」を区別できます。 このモデルのトレーニングには、以前の方法よりも多くの作業はかからず、以前の方法よりもはるかに優れたモデルが得られ、 79.5% の精度を達成しました。上記のモデルと同様に、次のステップでは、説明した方法を使用して予測を調査して説明し、それが実際にユーザーに展開するのに最適なモデルであることを確認する必要があります。今では、これを自分で処理することに慣れているはずです。 要点のまとめ 私たちがこれまでに成功裏に使用した方法を簡単にまとめると次のようになります。
|
<<: 千年紀の文化遺産の碑文を解読するAIの能力は人間より30%高い
>>: 【専門家がここにいるエピソード3】大量ログ分析とインテリジェントな運用・保守
[[341606]]ある調査では、2025年までに中国の教育用ロボット市場は3000億ドルに達し、...
翻訳者 |李睿レビュー | Chonglou AI 拡張ソフトウェア エンジニアリングは、人工知能と...
海外メディアの報道によると、デザインソフトウェアプロバイダーのAdobeは最近、インドの生成AIスタ...
導入機械学習プロジェクトに取り組むとき、すべてのデータ サイエンティストが直面しなければならない質問...
編集者注: Amazon の Echo スマート スピーカーや自動運転車などのスクリーンレス ユーザ...
機械経済は、長年にわたる急速な社会の発展と新しい製造プロセスへの移行によって進化してきました。第一次...
人工知能は近年急速に発展し、さまざまな業界の無数のユースケースで強力なイノベーションツールとして広く...
RNA 3D 構造予測は長年の課題です。タンパク質構造予測における最近の進歩に触発され、南開大学、山...
近年、科学技術分野で最もホットな言葉は何でしょうか?5G、人工知能などが間違いなくそのリストに入って...
まず、技術発展の観点から見ると、人工知能技術の発展は避けられません。現在、クラウドコンピューティング...
10月22日、海通国際証券のアナリストであるPu Deyu氏が最近、Appleが早ければ2024年末...
テクノロジーは私たちの世界を変えました。それは何十億もの人々に考え、アイデア、洞察を共有する機会を与...