NLPニューステキスト分類-タスク5

Task5-深層学習に基づくテキスト分類のためのWord2vec

1.ワードベクトル
このセクションでは、word2vecを介してワードベクトルを学習します。word2vecモデルの背後にある基本的な考え方は、コンテキストに表示される単語を予測することです。入力テキストごとに、コンテキストウィンドウと中央の単語を選択し、この中央の単語に基づいて、ウィンドウ内の他の単語の確率を予測します。したがって、word2vecモデルは、新しいコーパスから新しい単語のベクトル表現を簡単に学習できます。これは、効率的なオンライン学習アルゴリズムです(オンライン学習word2vecの主なアイデア:単語とコンテキストを通じてお互いを予測し、対応する2つのアルゴリズムはそれぞれ:
1。スキップグラム(SG):予測コンテキスト
2.連続バッグオブワード(CBOW):予測ターゲットワード

2.スキップグラムの原理とネットワーク構造
ここに写真の説明を挿入
Word2Vvecモデルは実際には2つの部分に分かれており、最初の部分はモデルの構築であり、2番目の部分はモデルを介して埋め込まれた単語ベクトルWord2Vvecを取得することです。モデリングプロセス全体は、実際には自動エンコーダー(auto-エンコーダーの考え方は非常に似ています。つまり、最初にトレーニングデータに基づいてニューラルネットワークを構築します。モデルがトレーニングされると、トレーニングされたモデルを使用して新しいタスクを処理することはありません。本当に必要なのは、トレーニングデータを介したモデルです。隠れ層の重みマトリックスなど、学習したパラメーター-Word2vecのこれらの重みは、実際には学習しようとしている「単語ベクトル」であることが後でわかります。

2.1スキップグラムプロセス

「郵便配達員に吠えた犬」という文があるとします。

1.まず、入力単語として文の途中の単語を選択します。たとえば、入力単語として「dog」を選択します。

2.入力ワード1を使用して、Iskipウィンドウと呼ばれるパラメーターを定義します。これは、現在の入力ワードの片側(左側または右側)から選択するワードの数を表します。skip window = 2を設定すると、最終的にウィンドウ内の単語(入力単語を含む)が取得されます。これは、[The、 'dog'、barked'at] skip window = 2です。つまり、左側の入力単語の左側で2つの単語を選択します。右側の単語と2つの単語がウィンドウに入るので、ウィンドウ全体のサイズはspan = 2x2 = 4です。もう1つのパラメータはnumskipsと呼ばれ、ウィンドウ全体から出力ワードとして選択するさまざまなワードの数を表します。skipwindow= 2、num skips = 2の場合、2つのセット(入力ワード、出力)を取得します。単語形式のトレーニングデータ)、つまり(dog、 "barked)、(dog '、' the)。

3.ニューラルネットワークは、これらのトレーニングデータに基づいて確率分布を出力します。この確率は、入力ワードの出力ワードとして、辞書内の各ワードの可能性を表します。この文は少し複雑です。例を見てみましょう。2番目のステップでは、スキップウィンドウとnum skips = 2の2セットのトレーニングデータを取得しました。最初に一連のデータ(犬、吠え声)を使用してニューラルネットワークをトレーニングすると、モデルは、「犬が入力単語として使用されたときの語彙の各単語、出力単語としての可能性もつまり、モデルの出力確率は、辞書内の各単語が入力単語と同時に表示される可能性を表します。たとえば、ニューラルネットワークモデルに「ソビエト」という単語を入力すると、最終モデルの出力確率では、「ユニオン」、「ロシア」などの関連する単語の確率は、「スイカ」、「カンガルー」などの関連しない単語よりもはるかに高くなります。テキストの「ソビエト」のウィンドウに「ユニオン」、「ロシア」が表示される可能性が高いためです。

テキストに単語のペアを入力して、上記の確率計算を完了するようにニューラルネットワークをトレーニングします。次の図は、トレーニングサンプルの例を示しています。「クイックブラウンフォックスは怠惰な犬を飛び越える」という文を選択し、ウィンドウサイズを2(window_size = 2)に設定します。これは、入力ワードと入力ワードの前後の2つのワードのみを選択して結合することを意味します。次の図で、青は入力ワードを表し、ボックスはウィンドウにあるワードを表します。
ここに写真の説明を挿入
ここに写真の説明を挿入
私たちのモデルは、単語の各ペアの出現数から統計を学習します。たとえば、私たちのニューラルネットワークは( "Soviet"、 "Union")に似たトレーニングサンプルペアをより多く取得する可能性がありますが、( 'Soviet、 "Sasquatch")の組み合わせはめったに見られません。したがって、モデルをトレーニングすると、入力として「ソビエト」という単語が与えられ、「ユニオン」または「ロシア」の出力結果は「サスカッチ」よりも高い確率で与えられます。

PS:入力ワードと出力ワードの両方がワンホットエンコードされます。慎重に検討してください。入力がワンホットエンコードされた後、ほとんどの次元は0(実際には1つの位置のみが1)であるため、このベクトルは非常にまばらです。結果はどうなるでしょうか。1x10000ベクトルと10000x300行列を乗算すると、かなりの計算リソースが消費されます。効率的な計算のために、行列内の対応するベクトルでディメンション値が1のインデックス行のみが選択されます。

ここに写真の説明を挿入

2.2スキップグラムトレーニング

上記の部分から、Word2vecモデルは超大規模なニューラルネットワークであることがわかります(重み行列は非常に大きいです)。例:10,000語の語彙があります。300次元の単語ベクトルを埋め込む場合、入力-非表示層の重み行列と非表示層の出力層の重み行列は両方とも10000x 300 = 300万の重みになります。この場合、巨大なニューラルネットワークでの勾配降下は非常に遅いです。さらに悪いことに、これらの重みを調整して過適合を回避するには、多くのトレーニングデータが必要です。数百万および数億のトレーニングサンプルの重みマトリックスは、このモデルのトレーニングが災害になることを意味します。

解決:

1.一般的な単語のペアまたはフレーズを単一の「単語」として扱います
2.高頻度の単語をサンプリングしてトレーニングサンプルの数を減らします
3.最適化ターゲットに「ネガティブサンプリング」方式を使用して、それぞれが各トレーニングサンプルのトレーニングでは、モデルの重みのごく一部のみが更新されるため、計算負荷が軽減されます。

おすすめ

転載: blog.csdn.net/DZZ18803835618/article/details/107696554