単語ベクトルからNLP分類問題への6番目のレッスン

nlpの1つの一般的なタスク

単語のセグメンテーション、
品詞タグ付け、
自動要約、
参照解決、
機械翻訳、
トピック認識、
テキスト分類

2単語ベクトル表現

テキストは写真やビデオとは異なります。写真やビデオは自然にバイナリ形式で表現され、コンピュータで処理できます。
テキストは人工であり、人間だけが理解できます。コンピュータにテキストを理解させるには、単語ベクトルを使用する必要があります。

表現方法は次のことを解決できる必要があります
。1単語の類似性を確認する必要があります。
たとえば、カエル​​のヒキガエルのラナは類似しています。

2英語のベクトル空間分布の類似性12 34は
スペイン語の12 34と類似している必要があります

3ベクトル空間の下部構造
ベクトルは操作に使用できます

2.1個別の表現

1ワンホット
2バッグオブワード
ドキュメントのベクトルは、各単語の単語ベクトル表現を直接追加できます。
ここに画像の説明を挿入

3 tf-idf 4bi
-gramおよびn-gram

離散表現の問題:
1。単語ベクトル間の関係を測定する方法はありません
。2 語彙の次元はコーパスとともに拡大します。3。n
-gramはコーパスとともにより速く拡大します
。4。データのまばらさ。

2.2分散表現

単語の近くの単語を使用して、単語を表します。
ローカルウィンドウの単語と単語の共起行列は、文法的および意味的な情報をマイニングできます。
例:
ディープラーニング
が好きです。NLPが好きです。
飛行が好きです。
ウィンドウが1(通常は5〜10)の場合、そのような行列を取得できます。
ここに画像の説明を挿入

これは対角配列です。
私と好きは二度現れる
私と楽しむ一回現れる...

既存の問題:

•ベクトルの次元は辞書のサイズに比例して増加し
ます•辞書全体を格納するためのスペースが非常に大きい
•テキスト分類モデルなどの一部のモデルはスパース性の問題に直面します
•モデルは不安定になります

SVD次元削減

2.3 NNLM(2013)

NNLM =ニューラルネットワーク言語モデル
以下のコンテンツは、CSDNブロガー「MaFeifei」の元の記事から複製されたものです。

NNLMは、言語モデルから開始し(つまり、計算確率の観点から)、目的関数のモデルを最適化するニューラルネットワークを構築します。トレーニングの開始点は、ニューラルネットワークを使用して言語モデルを構築し、単語を実現することです。予測タスク、および最適化プロセス後のモデルの副産物それは単語ベクトルです。

ニューラルネットワークモデルをトレーニングするときの目標は、単語の確率を予測することです。つまり、単語環境で、次にどの単語を使用するかを予測します。目的関数は次のとおりです。ある程度のネットワークトレーニングの後、最終モデルパラメータは、Wordベクトルの使用法と見なすことができます。
ここに画像の説明を挿入

2.3.1モデル

NNLM(4層ニューラルネットワーク)のネットワーク構造を右に示します。主なパラメータは次のとおりです。

  [1]词库大小(假定有8W个词)            

  [2]转化的词向量大小(假定为300维长度)            

  [3]输入层神经元数(即词的滑动窗口容量,假定滑窗大小为4)            

  [4]隐层神经元数量(假定为100个)            

  [5]输出层神经元数(对应词容量,有8W个)

  [6]由输入层到投影层的矩阵C(一个大的矩阵,大小为8W*300,是最后求解的目的,开始时随机初始化)          

  [7]从投影层到隐层的权值矩阵H和偏置矩阵B          

  [8]从隐层到输出层的权值矩阵U和偏置矩阵D

ここに画像の説明を挿入
次に、NNLMモデルを下から上に分析してみましょう。

1コーパスから一度に4つのデータをスライドさせ、最初の3つの単語をワンホットエンコーディング形式に変換し、3つのワンホットフォームをネットワークへの入力としてフィードします。

2マッピングレイヤーへの入力から行われるのは(ワンホットベクトル*行列C)です。ここで、単語のワンホットエンコーディングは1の位置に従ってC行列に対応し、300次元を抽出します。対応する位置の単語ベクトル。このベクトルを投影層の出力として使用します。

ここに画像の説明を挿入

3前のステップでは、投影層は単語のワンホット表現を300次元の密なベクトルとして表現します。投影層から隠れ層までは完全に接続された接続方法です。パラメーターの数は3 * 100です。 、および各隠れ層神経要素は3本の線で接続され、最後にtan関数を使用してHとBを組み合わせ、活性化出力を取得します。

4隠れ層から出力層まで、常に完全接続の形式であり、接続線の数は100 * 8Wであり、softmax関数を使用してUとDを組み合わせて最終的な確率出力を取得します。

5クロスエントロピー損失関数の値を計算し、勾配降下モードでバックプロパゲーションを実行し、バックプロパゲーションプロセス中にパラメーター行列C、H、B、U、およびDを更新します。(C、H、B、U、およびDはそれぞれどういう意味ですか?)

データのバッチを継続的に供給することにより、ネットワークは逆伝播および調整され、最後に単語予測タスクのモデルがトレーニングされ、トレーニングされたモデルのCマトリックスの各列が1つとして使用され、ワンホットワードに対応します。エンコーディング内の1ワードのベクトル(サイズ1 * 300)。このワードベクトルは、変換する結果です。

2.3.2機能

利点:NNLMモデルによって生成された単語ベクトルは、次元をカスタマイズでき、新しい拡張単語によって次元が変更されることはありません。ここで生成された単語ベクトルは、特徴距離に従って単語と単語の類似性を測定できます。たとえば、上記は300次元に固定されています。
短所:計算の複雑さが大きすぎ、パラメーターが多すぎます(word2vecは改善されています)。
ここに画像の説明を挿入

各トレーニングサンプルの計算の複雑さ:NxD + NxDxH + HxV
この段落は、ほとんど詳細を話すこと知るために参照し説明することもできます。

2.4 Word2Vector:CBOWの連続した単語の袋

NNLMは複雑すぎます。

2.4.1サンプル処理

スライディングウィンドウの長さはn = 5です。スライディングウィンドウ範囲では、中央の単語が予測オブジェクトとして使用され、左右の単語がコンテキストとして使用されます。
例:I | love | eat | Haidilao |鍋。私の4つの言葉、愛、海底撈火、鍋を文脈として、真ん中の言葉を食べるべきだと予測されています。

2.4.2構造

入力は4つのVx1ベクトルであり、前のステップの行列CはDxV次元であり、各Cxベクトル= Dx1ベクトルです。これらの4つのベクトルを追加し、それらを入力としてsoftmaxに送信して、中心の単語を推定します。
NNLMとの違いは、非表示が削除されることです。
ここに画像の説明を挿入

2.4.3 CBOW:階層的ソフトマックス

上記のW行列(つまり、SUMから出力層まで)には、DxV次元が必要です。Vは少し大きいです。

ハフマンツリーは、単語の頻度に応じて辞書内の単語をエンコードできます。エンコード後の頻度が高い単語は、エンコード長が短くなります。このツリーの深さはlog2 Vlog_2Vです。l o g2V

その場合、出力層は2レベルの分類になります。

計算:対数尤度

2.4.4 CBOW:負のサンプルサンプリング

正しい言葉:食べる。
マイナスの利益:食べる言葉ではありません。約300語をとることができます。どの言葉を取るべきですか?

辞書の各単語は、線分の各セグメントに対応しています。
線分長=カウンター(w)∑u∈Dカウンター(u)\ dfrac {counter(w)} {\ sum_ {u \ in D}カウンター(u)}U Dc o u n t e r u C O U N T EのR W

[0,1]をM = 1 0 8 10 ^ 8に除算します1 0[1、M]の数がランダムに生成されるたびに、 8つの等しい分割が行われ、どの単語がその部分に対応するかが確認されます。したがって、頻繁に出現する単語が選択される可能性が高くなります。

2.4.5 Word2Vec:スキップグラムモデル

見出し語を使用して周囲の単語を予測する

2.4.6word2vecの問題

1 gobal co-currenceマトリックスに含まれる情報を使用せずに、各ローカルコンテキストウィンドウを個別にトレーニングします。
2単語を多義語として表すことはできず、各単語には一意のベクトルがあります。

2.4.6word2vecの利点

ここに画像の説明を挿入
ここに画像の説明を挿入

word2vecは単語の類似性を保証し、
woman-manの結果がqueue-kingに類似していることを見つけることができます

ツールライブラリグーグルword2vec、これはC ++バージョンです。
ツールgensimは、word2vec、fast-text、その他のツールを統合します。詳細については、リンクを参照してください
テキスト分類にはword2vec + CNNを使用します。詳細については、リンクを参照してください

おすすめ

転載: blog.csdn.net/flying_all/article/details/114111646