この記事では、隠し表現の視覚化を使用して、ニューラル ネットワークのトレーニング プロセスをより直感的に理解する方法を紹介します。この記事で使用されているツールは Neural Embedding Animator です。これを使用すると、モデルの動作をより深く理解し、トレーニング中のデータ表現の変化を理解し、モデルを比較し、単語埋め込みの変化を理解することができます。 単語埋め込みのインタラクティブな視覚化 ニューラルネットワークを視覚化するのはとても楽しいです。教師あり学習の場合、ニューラル ネットワークのトレーニング プロセスは、入力データ ポイントのセットを線形分類器で分類できる表現に変換する方法を学習することと見なすことができます。この記事では、トレーニング プロセスをより直感的に理解できるように、これらの (非表示の) 表現を視覚化に使用したいと思います。この種の視覚化により、ニューラル ネットワークのパフォーマンスに関する興味深い洞察が得られます。 私はたくさんのアイデアを思いつき、最終的に Andrej Karpathy の研究 (CNN コードの t-SNE 視覚化) から理論的なサポートを得ました。 この考え方はシンプルで、次の手順で簡単に説明できます。
上記の手順では、トレーニングが完了した後にデータ ポイントを視覚化しますが、トレーニング中に複数のポイントで視覚化することも興味深い拡張機能になると思います。こうすることで、各視覚化を個別に確認し、物事がどのように変化しているかについての洞察を得ることができます。たとえば、トレーニングが完了するまで各エポックの後に視覚化し、比較することができます。これをさらに拡張すると、視覚化アニメーションが生成されます。これは、これらの静的視覚化を使用し、それらの間の制御ポイントを補間することによって実現できます。つまり、ポイントごとの変換が実現されます。 このアイデアは私を興奮させます。これらの視覚化を生成するために、D3.js に基づく JavaScript ツールを開発しました。静的な視覚化とアニメーション画像の両方を生成できます。動的グラフの場合、比較する隠し表現を含む 2 つの csv ファイルをアップロードする必要があります。このツールはファイル内のポイントをアニメーション化できます。アニメーションを制御して、トレーニング プロセス中に特定のポイント セットがどのように移動するかを確認することもできます。この記事の冒頭に例があるので、読者は試してみることができます。
これは決して複雑なツールではありません。私はただ自分のビジョンを実践したかっただけです。 しかし、このアニメーション方法には問題があります。T-SNE/UMAP が完了した後、それぞれの 2D/3D 表現に矛盾が生じます。まず、ハイパーパラメータとランダムシードを設定するときは注意してください。第二に、私の知る限り、T-SNE は、類似のオブジェクトが近くにあり、類似していないオブジェクトが遠くにあるような方法で埋め込もうとします。したがって、2 つの視覚化、たとえばエポック 1 と 2 をアニメーション化する場合、純粋なランダム性によって生じた動きと、ニューラル ネットワークが実際に学習しているときに発生する重みの変化を区別することが難しい場合があります。そうは言っても、私の実験では、興味深い結論に到達するのに役立つ妥当なアニメーションを作成できることもありました。 GIFリスト: この視覚化フレームワークには多くの興味深い用途があります。分類問題の例をいくつか示します。
上記の状況を、具体的な実例を用いて以下に説明します。 1. データに対するモデルの挙動をよりよく理解する 1. 悪意のあるコメントの分類タスク ここで使用した最初の例は、私がこのツールを開発していたときに、Kaggle の興味深い自然言語処理コンペティション「有害なコメントの分類」から得たものです。コンテストの目的は、テキストコメントを有害、わいせつ、脅迫、侮辱などのさまざまなカテゴリに分類することです。これはマルチラベル分類問題です。 ニューラル ネットワーク モデルでは、最も単純なもの (畳み込み/再帰のないフィードフォワード ニューラル ネットワーク) からより複雑なものまで、いくつかのアーキテクチャを試しました。ニューラル ネットワークの最後の層では、バイナリ クロス エントロピー損失とシグモイド活性化関数を使用しました。この方法では、ラベルごとに 2 つの確率のみが出力されるため、マルチラベル分類が実現します。結果を示すために、調整されていない事前トレーニング済みの単語埋め込みで初期化された双方向 LSTM からの隠し表現を使用します。 そこで、上記と同じ手順を実行し、検証セット内の各テキストレビューの潜在表現を最後のレイヤーから抽出し、T-SNE/UMAP 操作を実行して 2 次元に縮小し、ツールを使用して視覚化しました。トレーニングは早期終了する前に 5 エポック実行されました。 UMAP を使用する利点の 1 つは、速度が桁違いに速く、高品質のパフォーマンスを維持できることです。 Google は最近リアルタイム TSNE をリリースしましたが、まだ調べていません。 以下は、エポック 5 の終了時の視覚化の拡大バージョンです。視覚化されているカテゴリは侮辱なので、赤い点は侮辱であり、緑の点は非侮辱です。 上の写真の青い矢印で指している2つの点を見てみましょう。一つは侮辱であり、もう一つはそうではありません。このテキストはどういう意味ですか?
モデルが重複した 2 つのテキストを組み合わせる方法は興味深いです。また、ここでの侮辱はかなり弱いようです。 赤い点の集まりの中心にあるいくつかの緑の点についても興味があります。モデルがそれらを区別できないのはなぜでしょうか? テキストはどのようになっているでしょうか? たとえば、上の画像で黒い矢印が指しているポイントのテキストは次のようになります。 「私をトラブルメーカーと呼ばないでください。あなたもXYZと同じくらい人種差別主義者で右翼です」(名前の参照など、元のテキストに若干の変更を加えました)。 うーん、これは侮辱のようです。つまり、間違ったラベルです。ここに赤い点があるはずです。 誤って配置されたポイントのすべてが誤ってラベル付けされているわけではない可能性がありますが、上記の手順に従って視覚化を深く掘り下げると、データのすべての特性が明らかになる可能性があります。 また、これはトークン化や前処理などの操作がモデルのパフォーマンスに与える影響を明らかにするのにも役立つと思います。上記のテキスト 2 では、正しい句読点 (たとえば、各「I hate you」の後にピリオドを使用する) がモデルの役に立つ可能性があります。大文字の使用が役立つと思われる例は他にもいくつかあります。 2. Yelpレビュー感情分類タスク このアプローチを別のデータセットでも試してみたいと思います。そこで、Kaggle (https://www.kaggle.com/yelp-dataset/yelp-dataset) から Yelp レビュー データを選択し、シンプルな感情分類器を実装することにしました。 *** スコアをバイナリに変換しました。作業が簡単になります。したがって、-1、2、3 つ星は否定的なレビュー、4 つ星と 5 つ星は肯定的なレビューです。ここでも、埋め込みを単純なフィードフォワード ニューラル ネットワーク アーキテクチャで処理し、埋め込みを圧縮してから完全に接続されたレイヤーにフィードして確率を出力します。これは NLP 分類タスクとしては型破りなアーキテクチャですが、どのように機能するか興味がありました。早期終了する前に、10 エポックのトレーニングが実行されました。 最後のエポックの終わりの視覚化は次のとおりです。 黒い矢印が指している箇所のテキストは次のとおりです。 「ここに来るたびに、食べ物はおいしいです。残念ながらサービスはあまりよくありません。私は好きな食べ物のためにここに来るだけです。」 これは中立的なレビューですが、おそらく肯定的な側面が強いでしょう。したがって、モデルにとって、この点を正のクラスターに配置することはまったく悪いことではありません。さらに、このモデルは単語を個別に処理します (n-gram なし)。これにより、上記のテキスト「not very good」で単語「not」が抜け落ちるなどの現象が説明されます。以下は、上記のグラフで負の点に最も近い正の点のテキストです。 「この店が大好きです。基本メニューはラーメンだけですが、味もサービスも最高です。値段も手頃で雰囲気も素敵です。間違いなく近所の名店です。」 このモデルは、上記の 2 つのテキストを空間的に非常に近い位置に配置します。これにより、モデルの制限 (n グラムをキャプチャしないなど) が再度確認される可能性があります。 このような分析によって、どの例がモデルにとって「難しい」か「簡単」かを理解するのに役立つのではないかと、時々考えます。これは、隣接する誤分類されたポイントを観察することで理解できます。これを理解したら、この知識を使用して、モデルがこれらの例をよりよく理解できるように、さらに手作りの機能を追加したり、モデルのアーキテクチャを変更して、これらの「難しい」例をよりよく理解できるようにしたりすることができます。 2. ニューラルネットワークのトレーニング中のデータ表現の変化を理解する これを理解するにはアニメーションを使用します。私がアニメーション視覚化を理解する方法は、通常、ポイントのサブセットを選択し、トレーニング中にその近傍がどのように変化するかを観察することです。ニューラル ネットワークが学習するにつれて、この近傍は分類タスクに対してますます代表的なものになります。言い換えれば、分類タスクの観点から類似性を定義すると、ネットワークが学習するにつれて、類似するポイントは空間的に近くなります。前述の Neural Embedding Animator ツールのスライダーを使用すると、アニメーションを制御し、このポイントのセットを監視することができます。 下の図は、悪意のあるコメントの分類タスクにおける 4 つのエポック (エポック 2 からエポック 5) にわたるデータの隠し表現の進化を示すアニメーションです。動きを観察しやすくするために、いくつかのポイントを選択しました。緑の点は悪意のないカテゴリを表し、赤の点は悪意のあるカテゴリを表します。 大きく異なる距離で移動する点のペア (F と G または C と I) もあれば、常に近い距離にある点のペア (D と K または N と O) もあります。 したがって、これらのポイントに対応する文を手動で確認すると、ニューラル ネットワークが現在のエポックで何を学習したかを把握できます。まったく関係のない 2 つの文が隣り合っている場合 (例: エポック 2 の E と F)、モデルにはまだ学習の余地があると想定します。全体的な文の意味は異なっていても、ニューラル ネットワークが類似の文をグループ化しているのを目にすることもあります。この効果は、トレーニングが進むにつれて消えます(検証損失が減少する)。 記事の冒頭で述べたように、この動作は一貫性を保証するものではありません。場合によっては、点の近傍がまったく意味をなさないことがあります。しかし、これらのアニメーションを作成し、ポイントの軌道の劇的な変化を観察することで、役立つ洞察が得られることを期待しています。 また、yelp データセットを使用して同じ実験を繰り返しましたが、同じ結果が得られました。 以下は、1 エポックのトレーニング後のニューラル ネットワークの結果です。 2 つのクラスの間には多くの重複があり、ネットワークはクラス間の明確な境界を実際には学習していません。 以下は、5 エポックのトレーニング後の表現の進化を示すアニメーションです。 2 つのクラスターがそれぞれのクラスでより密になり、ネットワークが 2 つのクラスをより適切に分離していることがわかります。 注: これらのエポック間の表現の変化をアニメーション化しています。誰もが、ミニバッチやハーフエポックなど、これらのことをより細かく管理する必要があります。これにより、より微妙な変化を検出できるようになります。 3. モデルの比較 これは非常に直感的に実行できます。比較したいモデルの最後のエポックの終わりの表現を選択し、それをツールに挿入するだけです。 ここで比較する 2 つのモデルは、単純なフィードフォワード ニューラル ネットワーク (畳み込みや再帰なし) と双方向 LSTM です。これらはすべて、事前にトレーニングされた単語埋め込みを使用して初期化されます。 したがって、悪意のあるコメントの分類チャレンジとわいせつクラスについては、次の図はモデル間の表現の変化を示しています。 赤い点はすべてわいせつクラスを表し、緑の点は非わいせつクラスを表します。 BiLSTM は 2 つのクラスを分離する際に優れたパフォーマンスを発揮することがわかります。 4. 単語埋め込みの視覚化 私は単語埋め込みが大好きなので、NLP 関連の分析で試しています。このフレームワークは、特に単語の埋め込みに適しているはずです。それでは、それによって何が理解できるか見てみましょう。 以下は、Yelp タスクでモデルを調整したときに単語の埋め込みがどのように変化するかを示すアニメーションの例です。これらは 50 次元の Glove ワード ベクトルで初期化されます。下の画像はこの記事の冒頭のgifと同じです。説明のために、色を削除し、いくつかのデータ ポイントにラベルを追加しました。 興味深いことに、埋め込みを調整すると、「食べ物」という単語は最初は「ラーメン」や「豚肉」などの食べ物を含むカテゴリの空間距離から遠く離れていますが、その後徐々に近づいていきます。したがって、モデルは「ラーメン」、「豚肉」などがすべて食べ物であると学習する可能性があります。同様に、「レストラン」の近くに「テーブル」なども見られます。このアニメーションにより、興味深いパターンを簡単に見つけることができます。 もう一つの興味深い試みは、ツールをリバース エンジニアリングしてカスタム分析を実行することです。たとえば、ヘイトコメント分類タスクでヘイトワードの埋め込みがどのように変化するかが興味深いです。私は、上記のトロール分類タスクに基づいてモデルを作成し、埋め込みを最初から学習しました(したがって、事前トレーニング済みの埋め込みによる重みの初期化はありません)。与えられたデータ量ではモデルが困難になる可能性がありますが、試してみる価値はあります。アーキテクチャは BiLSTM と同じです。そこで、悪意のある単語をすべて赤くして、アニメーションでトレースしました。次の図は、単語埋め込みの進化を示しています。(PG-13 警告!) これは魅力的に見えませんか? モデルは、罵り言葉 (悪意を伝える言葉) を 1 つのクラスターにうまくグループ化しました。 この投稿が、データ ポイントの隠れた表現を視覚化するさまざまな方法と、それがモデルに有用な洞察をもたらす方法についての理解を深める助けになったことを願っています。これらの分析をさらに多くの機械学習の問題に適用することを楽しみにしています。他の人も同じことを考え、このことから何らかの価値を得てくれることを願っています。これらは、機械学習モデルのブラックボックス化を軽減するのに役立つと信じています。 PS: PCA を使用して潜在表現を 2 次元に縮小し、そこからアニメーションを生成してみました。 PCA の利点の 1 つは、確率的ではないため、最終的な表現が一貫していることです。ただし、PCA のローカル近隣は、T-SNE のローカル近隣ほど解釈可能ではない可能性があります。つまり、トレードオフなのですが、両方のアプローチの長所を活用するアイデアをお持ちの方がいらっしゃれば、とても嬉しいです! 参考: https://rakeshchada.github.io/Neural-Embedding-Animation.html [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id: Almosthuman2014)」からのオリジナル記事です] この著者の他の記事を読むにはここをクリックしてください |
>>: 興味深く実用的なオープンソース人工知能プロジェクトトップ10
翻訳者 | 夏東偉校正 | 梁哲、孫淑娟医療においては、データは患者の健康記録、医師の指示、処方箋か...
人工知能 (AI) と機械学習 (ML) の機能は徐々に拡大していますが、創造性、共感、感情認識など...
おそらく、これを敢えて実行できるのはマスク氏だけだろう。 Microsoft の論文を証拠として使っ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[243140]] 1. 背景2017年6月に電子商取引認知マップが発表されて以来、実践から体系...
米国現地時間の水曜日、マスク氏はソーシャルメディア上で、同社が今週、一部の選ばれた顧客に対して初の「...
過去数年間、機械学習 (ML) と人工知能 (AI) の専門家は、以前は完全に人間が実行できると考え...
ロボットは大学のキャンパスに食べ物を配達したり、ゴルフコースでホールインワンを達成したりすることがで...
人工知能を現実のものにするには?では、データから知恵に至るまで、人工知能を現実のものにするにはどうす...
[[330057]]人工知能 (AI) は、情報の収集からビジネス価値を抽出することを目的とするデー...
テクノロジーは建設業界にかつてないほど大きな影響を与えています。クラウドベースのコラボレーションやデ...
インテリアデザインや装飾に AI を応用することで、エンジニアやインテリアデザイナーは、機械学習によ...