隠れた表現を視覚化することでニューラルネットワークをより深く理解する

隠れた表現を視覚化することでニューラルネットワークをより深く理解する

この記事では、隠し表現の視覚化を使用して、ニューラル ネットワークのトレーニング プロセスをより直感的に理解する方法を紹介します。この記事で使用されているツールは Neural Embedding Animator です。これを使用すると、モデルの動作をより深く理解し、トレーニング中のデータ表現の変化を理解し、モデルを比較し、単語埋め込みの変化を理解することができます。

単語埋め込みのインタラクティブな視覚化

ニューラルネットワークを視覚化するのはとても楽しいです。教師あり学習の場合、ニューラル ネットワークのトレーニング プロセスは、入力データ ポイントのセットを線形分類器で分類できる表現に変換する方法を学習することと見なすことができます。この記事では、トレーニング プロセスをより直感的に理解できるように、これらの (非表示の) 表現を視覚化に使用したいと思います。この種の視覚化により、ニューラル ネットワークのパフォーマンスに関する興味深い洞察が得られます。

私はたくさんのアイデアを思いつき、最終的に Andrej Karpathy の研究 (CNN コードの t-SNE 視覚化) から理論的なサポートを得ました。

この考え方はシンプルで、次の手順で簡単に説明できます。

  • ニューラルネットワークをトレーニングします。
  • トレーニングが完了すると、ネットワークは検証/テスト データ内の各データ ポイントに対して最終的な隠し表現 (埋め込み) を生成します。この隠された表現は、基本的にニューラル ネットワークの最後の層の重みです。この表現は、ニューラル ネットワークがデータを分類する方法を近似します。
  • 視覚化のために、重みを 2 次元または 3 次元に減らす必要があります。次に、これらの点を散布図上で視覚化し、空間内でどのように分離されているかを確認します。 T-SNE や UMAP などの一般的な次元削減手法がいくつかあります。

上記の手順では、トレーニングが完了した後にデータ ポイントを視覚化しますが、トレーニング中に複数のポイントで視覚化することも興味深い拡張機能になると思います。こうすることで、各視覚化を個別に確認し、物事がどのように変化しているかについての洞察を得ることができます。たとえば、トレーニングが完了するまで各エポックの後に視覚化し、比較することができます。これをさらに拡張すると、視覚化アニメーションが生成されます。これは、これらの静的視覚化を使用し、それらの間の制御ポイントを補間することによって実現できます。つまり、ポイントごとの変換が実現されます。

このアイデアは私を興奮させます。これらの視覚化を生成するために、D3.js に基づく JavaScript ツールを開発しました。静的な視覚化とアニメーション画像の両方を生成できます。動的グラフの場合、比較する隠し表現を含む 2 つの csv ファイルをアップロードする必要があります。このツールはファイル内のポイントをアニメーション化できます。アニメーションを制御して、トレーニング プロセス中に特定のポイント セットがどのように移動するかを確認することもできます。この記事の冒頭に例があるので、読者は試してみることができます。

  • ツール (Neural Embedding Animator) アドレス: https://bl.ocks.org/rakeshchada/raw/43532fc344082fc1c5d4530110817306/
  • README: https://bl.ocks.org/rakeshchada/43532fc344082fc1c5d4530110817306

これは決して複雑なツールではありません。私はただ自分のビジョンを実践したかっただけです。

しかし、このアニメーション方法には問題があります。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つの点を見てみましょう。一つは侮辱であり、もう一つはそうではありません。このテキストはどういう意味ですか?

  • テキスト 1 (青い矢印の付いた緑の点): 「blah blah blah blah blah blah blah」
  • テキスト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)」からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  機械学習について知っておくべき5つのこと

>>:  興味深く実用的なオープンソース人工知能プロジェクトトップ10

ブログ    
ブログ    
ブログ    

推薦する

年末ですね!ファーウェイクラウド開発者デーと2023イノベーションサミットが成功裏に開催されました

12月20日、ファーウェイクラウド開発者デーと2023イノベーションシェアリングサミットが成功裏に開...

Pythonがリードを拡大、PyTorchはわずか6.4%

最近、有名なデータサイエンスのウェブサイト KDnuggets が、2018 年のデータサイエンスお...

直接的な選好最適化戦略を用いたミストラル7bモデルの微調整

翻訳者|朱 仙中レビュー | Chonglou導入通常、事前トレーニング済みの大規模言語モデル (L...

...

Github ホットリスト: 2021 年の最もクールな AI 論文 33 件をレビュー!多くの中国人作家が選ばれた

[[435977]]現在、AI技術は急速に進歩しており、毎年多くの優れた論文が発表されています。 2...

Microsoft と Meta が提携し、Bing 検索を Meta AI チャットボットに統合

9月28日早朝、Meta Connect 2023において、MetaはMeta AIという新しいチャ...

...

長文情報の精度はChatGPTを上回る、Metaは大規模モデルの幻覚を軽減する新手法を提案

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

周紅一の2024年大模型予測は8つの点を検証し、ソラの出現は予想を超えていると述べている

「私は講義をするときに利益を請求しません。私の目的は、無料の授業、共有、科学普及、コミュニケーション...

ディープラーニングを自分の仕事にどのように統合しますか?

[[200786]]序文人工知能は現在、あらゆる分野で最もホットな技術です。最初の2年間が「インタ...

2021年は新たなAIを形作る

人工知能が世界を形作っています。コロナウイルスを克服する方法、自動車の自動化、ロボット工学など、世界...

研究によると、話題が真実か虚偽かに関係なく、AIが書いたマイクロブログは実際の人間よりも説得力があるという。

6月29日、最新の研究により、人工知能によって生成されたツイートは実際の人間が書いたものよりも説得...

...

...

9つの一般的な畳み込みニューラルネットワークの紹介

畳み込みの目的は、入力から有用な特徴を抽出することです。画像処理では、さまざまなフィルターを選択でき...