参考資料:テキスト分類用TextCNNとDPCNN
TextCNN は、2014 年の論文「文分類のための畳み込みニューラル ネットワーク」で提案されました。
TextCNN のネットワーク構造は次のとおりです。
(1) TextCNN の最初の層は埋め込み層です
Embedding 层的输入维度为 [n,k,2]:
其中n表示句子长度,k 为 word embedding (vector)的维度,2表示通道数。
即 embedding 采用的是 word2vec 的方式,代码中 k = 128
为了方便批处理,通常对长度不等的句子进行 padding 操作。
単語埋め込みベクトルを取得する方法は、事前トレーニングと「新規トレーニング」に分けられます。事前トレーニングされた単語埋め込みは、他のコーパスの単語分布を使用してより多くの事前知識を取得できますが、現在のネットワークによってトレーニングされた単語埋め込みは、現在のタスクに関連する単語分布特性をより適切に捕捉できます。
埋め込み層はデュアル チャネル (静的および非静的) の形式を採用します。
static 表示预训练的 word embedding ,在训练过程中不被改变;
non-static 表示“参与网络训练”的 word embedding ,其作为参数在训练过程中发生改变。
(2) TextCNN の 2 番目の層は畳み込み層 Conv1d です
CV フィールドとは異なり、NLP のコンボリューション カーネルは一方向にのみスライドするため、
一般に Conv1d を使用すると、Conv1d はテキストに使用され、Conv2d は画像に使用され、Conv3d はビデオに使用されます。
CV のコンボリューション カーネルに適用すると、長さと幅の 2 次元の局所的な特徴を捕捉するために、コンボリューション カーネルは通常、長さと幅の 2 方向でコンボリューション演算を実行します。
文の中で単語は特徴です。つまり、文の長さは 1 つの次元だけです。したがって、NLP のコンボリューション カーネルの幅は単語埋め込み次元 k と同じであり、コンボリューション カーネルは文の長さの方向にのみコンボリューション演算を実行します。
Conv1d 层的输入维度为 [n,k,2],图中示例使用了 4 个大小为 m*k 的卷积核(实际为64个);
则输入的维度为 [n-m+1,1,4],即 4 个 (n-m+1)*1 的向量。
(3) TextCNN の 3 番目の層は最大プーリング層 MaxPool1d です
畳み込み層と同様に、NLP のプーリング層は一方向でのみプーリング操作を実行します。
MaxPool1d 层的输入是 4 个 (n-m+1)*1 的向量,的向量,输出 4 个标量。
即 MaxPool1d 会将一个向量转为标量。
(4) TextCNN の 4 番目の層はソフトマックス出力層です
コンボリューション カーネルのサイズは通常それほど大きくないため、TextCNN は長距離テキストの特徴をキャプチャするのには理想的ではありませんが、短いテキスト シーンや中程度のテキスト シーンでより効果的です。2017 年に提案された DPCNN は、長距離テキストの特徴を効果的にキャプチャできます。