ニューラルネットワークワードベクトルモデルのWord2Vec

1はじめに

         ワンホットに基づいて語彙をエンコードする方法は、本当に頭痛の種で無力です。面倒なのは、占有スペースが大きく、計算量が多いことです。このような単純で失礼な方法が現在に受け継がれているのは無力です。今日は、単語ベクトルを生成するためのニューラルネットワーク言語モデル基づくアーティファクトを紹介します前回のニューラルネットワーク言語モデルの記事では、言語モデルの作業方法を紹介しました。入力は埋め込みレイヤーを介してベクトルに変換され、次にベクトルは投影レイヤーを使用して、非表示レイヤーを介して、次に出力レイヤーにステッチされます。したがって、単語ベクトルマトリックスは入力レイヤーで取得されます。言語モデルの中核は、テキストを表現し、テキストを生成することです。ワードベクトルは、データ前処理の一部である1つのリンクにすぎません。今日説明する単語ベクトルモデルは正反対であり、その核心は言語モデルの助けを借りて単語ベクトルを生成することです。

2.Word2Vecの概要

           次の図に示すように、基本的な考え方は、語彙をベクトル空間にマッピングし、ベクトル間の余弦距離を使用して、語彙間のポイントの類似性を表すことです。以下に示すように。

          

           Word2Vecには、ベクトルを生成するためのCBOWとSkip-Gramの2つのモデルが含まれています。以下に示すように、CBOWは周囲の単語を使用して中央の単語を予測し、Skip-Gramは中央の単語を使用して周囲の単語を予測します。考え方はGramに似ています。以下に詳しく紹介します。

          

3.スキップ-グラム

         このモデルでは、入力が与えられると、単語に近い出力単語が得られます。下の図に示すように、中間の単語と周囲の単語を1つのチームにグループ化します。

         

          次の図は、スキップグラム作業の全体的なプロセスです。最初に、コーパスのテキストに基づいて語彙を作成し、次に単語のワンホットエンコーディングを実行します。入力層と隠れ層の間の行列は単語埋め込み行列と同等であり、隠れ層の出力はコンテキストに対応する単語ベクトルであり、単語ベクトルにすべての単語ベクトルを掛けて類似性を求めます。出力レイヤーでsoftmaxを使用して、類似性を確率に変換します。真の値は、コンテキストに近い単語から選択した値です。

         

       したがって、取得した隠れ層レイヤーの最終的な重みWは、単語埋め込みマトリックスと同等であり、このレイヤーの出力は、最終的な単語ベクトルマトリックスです。トレーニングが完了すると、出力レイヤーが削除されます。

 

                    

4.CBOW

             CBOWのアイデアは、周囲の単語を使用して中間の単語を予測することです。このプロセスでは、周囲の単語で構成されるコンテキストを入力し、埋め込みマトリックスから対応する単語ベクトルを見つけてから、コンテキスト内のベクトルを非表示レイヤー出力として追加して平均化します。最後に、softmaxを使用して確率を予測します。ネットワークトレーニングが完了すると、隠れ層の出力は必要な単語ベクトルになります。

                                  

5.ハフマンツリー

          ハフマンツリーは最適バイナリツリーと呼ばれ、加重パス長が最も短いツリーです。

       

    構築プロセスは次のとおりです。これは、毎回最小のツリーを子ノードとして選択し、合計を上位ノードとして使用し、継続的に繰り返してツリーを形成することと見なすことができます。

         元のword2vector出力レイヤーは、毎回すべてのワードのソフトマックスを計算する必要があります。これには、大量の計算と遅い収束が必要です。ツリー構造を使用して、各ノードは2つの分類にシグモイドを使用します。正の例は右に、負の例は1-シータが左になります。すべての確率の合計が1であることを証明できます。このように、対応するノードについて、対応するパス上のすべての確率の乗算を計算します。重みが大きいほど、対応するパスは短くなります。これにより、一方では計算が高速化されます。重みが逆方向に調整されると、パス上になります。のすべてのノードが調整され、収束速度も高速化されます。

6.ネガティブサンプリング

        元のラベルはワンホットエンコーディングであるため、データは非常に離散的です。また、毎回調整できるポジティブな例は1つだけなので、効率は非常に低くなります。したがって、ネガティブサンプリングとは、ネガティブな例の一部を選択して損失を調整することです。ネガティブなサンプルをランダムに選択すると、発生回数の多いサンプルが選択される可能性が高くなります。このように、損失調整は毎回少しずつ多くなり、収束速度は速くなります。

7.まとめ

        この記事では、word2vectorのCBOWとSkip-Gramの2つの単語ベクトルモデルを紹介します。CBOWは周囲の単語を使用して中央の単語を予測し、Skip-Gramは中央の単語を使用して周囲の単語を予測します。もちろん、予測は単語ベクトルモデルの本当の目的ではありません。その核心は、この言語モデルの構造を使用して単語ベクトルモデルを生成することです。モデルを使用するプロセスでは、後続の出力レイヤーは必要ありません。つまり、非表示レイヤーの出力は、必要な単語ベクトルです。同時に、従来の損失は語彙のすべての単語の確率を計算することであるため、一般的に言えば、語彙の数が非常に多いため、速度が非常に遅くなり、毎回逆調整の肯定的な例が1つだけあります。このため、ハフマンツリーとネガティブサンプリングの2つの最適化方法を導入しました。ハフマンツリーは最適な加重バイナリツリーです。各ノードを逆方向に調整すると、パス上のすべてのパラメータが次のように調整されます。ネガティブサンプリングが使用されます。ネガティブサンプルの一部は逆調整に使用されます。加重ネガティブサンプリングを使用します。つまり、発生回数が多いほど、選択される可能性が高くなります。同じことが収束をスピードアップすることができます。

8.ナンセンス

        この時点で、私は嘔吐しようとしています。私はうまく始めたり終わらせたりすることができない人です。一つのことが長すぎると、私は非常にイライラし、もっと早く終わらせたいと思います。これは、ダ・ヴィンチが絵を描き終えられないときにいつも諦めるのと同じですが、私は少し肌が厚いですか?しかし、私が言いたいのは、あなたの不完全な自己を受け入れることを学ぶことです。すべてを未完成のままにしておかなければならないと言われているように、創造物は嫉妬することはできず、幽霊や神々を傷つけることもできません。自分のカルマを果たさなければならないのなら、そのメリットは利益を上げようとしなければなりません。内部の変化がなければ、外部の心配を引き付けます。なので、子供の頃からずっと3位で、毎年賞を受賞していましたが、恥ずかしくて3位の証明書をもらってすぐに捨ててしまいました。私は高校までそれを理解しました。最初の2つよりも優れているというわけではありませんでした。私の才能を隠すことが神の意図でした。あなたが改善したいのなら、あなたは自分自身を認識しなければなりません。他人を信じないでください、そして時間を信じないでください。時間と他人は2つの最大の嘘つきです。

 

BigBang中国語の字幕があります

 

おすすめ

転載: blog.csdn.net/gaobing1993/article/details/108479888