nlpのクラシックモデル(3)

このシリーズは、7月のアルゴリズムnlp雇用クラスの研究ノートです。

5NLPの畳み込みニューラルネットワーク

RNNの問題:
1時間計算量が高い
2最後のベクトルにはすべての情報が含まれています。少し信頼できない

CNNは、畳み込みカーネルを介してローカル特徴をキャプチャできますが、特定の長さの単語シーケンスを表すために文で使用できますか?
例文:彼は上海交通大学を卒業しました。
長さが3に設定されている場合、

が上海
から
上海交通大学に卒業したCNNキャプチャできるはずです。上海交通大学

そのような単語シーケンスの特徴

5.1畳み込み

畳み込み演算:ウィンドウ内の各要素に畳み込みカーネルが乗算され、その付加値が畳み込み後の特徴値として使用されます。
ここに画像の説明を挿入

import numpy as np
m1 = np.matrix('0.2,0.1,-0.3,0.4;0.5,0.2,-0.3,-0.1;-0.1,-0.3,-0.2,0.4')
m2 = np.matrix('3,1,2,-3;-1,2,1,-3;1,1,-1,1')
m3 = np.multiply(m1,m2)
print(m3)
value = np.sum(m3)
print(value)

値は-1.0です

この畳み込み演算は1次元です。つまり、畳み込みカーネルのサイズはnxkです(kは単語ベクトルの次元です)。この畳み込みは、ngramワードモデルと同等です。

5.2マルチチャネル

畳み込みカーネルのサイズがnのサイズに変更されます。
入力は3xk畳み込みカーネルを通過して、3グラムの語順ベクトルを取得します。
入力は4xk畳み込みカーネルを通過して、4グラムの語順ベクトルを取得します。
入力は、複数の畳み込みカーネルを通過して、複数の特徴を取得できます。
ここに画像の説明を挿入

この図は、n = 3の3つの畳み込みカーネルの後に得られた特徴ベクトルを示しています。
各畳み込みカーネルのサイズは異なる場合があります。

5.2最大プーリング

畳み込みカーネルnが異なるため、計算結果も異なります。
nが大きいほど、計算結果も大きくなります。
これは私たちが望んでいることではありません。最大プーリングを使用して解決します。
最大プーリング:各畳み込み結果の最大値を取得します。x個の畳み込み層が渡されると、最終的にx次元ベクトルが取得されます。
ここに画像の説明を挿入

最後に、3次元ベクトル(0.3、1.6、1.4)を取得します

上記のプロセスは、論文で見ることができます:YoonKim「文分類のための畳み込みニューラルネットワーク」。

入力:1つの文、長さn、各単語の語彙をチェックし、nx100次元の行列を取得
し、1次元の畳み込みを実行し、300の畳み込みカーネルを維持します。最後に、300次元の文表現ベクトルが取得されます。
MLPへの入力として、分類が実現されます。

オープンソースツールのfasttextはそのような原則です。

コードケース:https://github.com/silverriver/NLP_Course/blob/main/TextCNN/main.ipynb

おすすめ

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