このリポジトリでは、標準ペンツリーバンク(PTB)コーパスで3つの言語モデルをトレーニングします。このコーパスは、それぞれ約929Kおよび73Kトークンのトレーニングと検証セットに分割されています。 (1)線形補間を備えた従来のTrigramモデル、(2)(Bengio et al。、2003)で説明されている神経確率論的言語モデル、および(3)(Zaremba et al。、2015)に続く長期記憶(LSTM)単位を持つ正規化された再発性ニューラルネットワーク(RNN)を実装します。また、LSTMモデルの一連の変更を実験し、マルチレイヤーモデルを使用して検証セットで92.9の困惑を達成します。
スタンフォードセンチメントツリーバンクセンチメント分類タスクでは、映画のレビューから取られた文のコーパスが提供されています。各文は、正、負、またはニュートラルのいずれかとしてタグ付けされています。中立的な例を削除し、肯定的な文と否定的な文の間のバイナリ決定としてタスクを策定することに従ってください(Kim、2014)。
各モデルバリアントについて、予測を正式にします
テストケースの場合
として

どこ
アクティベーション関数です、
私たちの学んだ体重です、
入力用の機能ベクトルです
、 そして
バイアスベクトルです。この問題セットでは、 

すべてのために
SST-2データセットの正と負の感情の入力のみを考慮しているためです。すべてのモデルの実装にPytorchを使用し、すべてのモデルは、サイズ10のバッチ、1E-4の学習率、Adamオプティマイザー、および負のログ尤度損失関数を使用して、それぞれ10エポックのためにトレーニングされます。このセットアップの唯一の例外は、学習パラメーターを備えた1つのエポックに適合した多項ナイーブベイズでした
= 1.0。
させて

トレーニングケースの機能カウントベクトルになります
分類ラベル付き
。
機能のセットです
機能の発生数を表します
トレーニングの場合
。のカウントベクトルを定義します
として
=
+
、平滑化パラメーター用
。私たちは王とマニングをフォローして、カウントを二等にします。
= 
。式(1)に関しては、
正の例と否定的な例の数の間のログカウント比は、
= log(
/
) どこ
そして
トレーニングデータセットの肯定的および否定的なトレーニングケースの数、
入力の発生数です
、 そして
マップするバイナリインジケーター関数です
それ以外の場合は0と0を超える場合は1に。 Unigramsのみが機能として考えています。
重量とバイアスのマトリックスを学びます
そして
それは最適化する

どこ
は
- 各トレーニングサンプルの単語のバッグカウントを表す次元ベクトル。実装では、表現します
そして
1つの完全に接続された層を使用して、シグモイドの活性化下で2つのユニット出力層に直接マッピングします。
CBOWアーキテクチャでは、単語の長さの文の各単語
にマッピングされます
- 次元の埋め込みベクトル。すべての単語の埋め込みベクトルは平均化されて、単一の機能ベクトルを生成する
それは入力全体を表します。特に、

どこ

そして

、 そして
=
すべてのために
それぞれ文の寸法と単語の埋め込みです。このエンコード
次に、SoftMaxアクティブ化の下で出力クラスを表す2つの出力ユニットに直接マッピングする完全に接続された単一のレイヤーに渡されます。
させて

である
- 次元の単語ベクトルに対応します
- 入力文の単語。入力バッチですべての文章を同じ長さにパディングした後
、 どこ
バッチ内のすべての文の最大長文であり、各文は次のように表されます

どこ
連結操作です。させて
単語の連結を表します
、
、...、
。畳み込みニューラルネットワークでは、畳み込み操作を適用します

フィルターサイズ
フィルターサイズが効果的には、コンバージングする単語のウィンドウサイズである機能を生成するために。させて
この操作によって生成される機能になります。それから

どこ
バイアス用語です
修正線形単位(Relu)関数です。フィルター長サイズを適用します
入力文の単語のすべての可能なウィンドウで、機能マップが生成されます

実装では、フィルターサイズを越えて複雑にします

そして、それぞれの機能を連結します
単一のベクトルに。マックスオーバータイムプーリング操作(Collobert et al、2011)をこのベクトルの連結機能マップに適用します。
、そして取得します
= max(
)。次に、ドロップアウトを適用します
= 0.50から
正規化が過剰適合に対する測定として、これを完全に接続されたレイヤーに渡し、出力を介してソフトマックスを計算します。
最後に、CNNアーキテクチャの一連の変更を実装して、SST-2データセットでわずかなパフォーマンスを改善しました。この実装では、スタンフォードのグローブ事前に訓練されたベクトル(Pennington et al。、2014)を利用して、これらの変更を行います。
次に(Kim、2014)、畳み込みと最大プーリングの手順で2つの単語埋め込みテーブルを使用します。1つは非静的な手順で、1つはモデルの通常のモジュールとしてトレーニング中に更新され、もう1つはトレーニングの実行中に省略され、静的として保存されます。モデルのフォワードパスでは、これらの2つの埋め込みセットは「チャネル」ディメンションに沿って一緒に連結され、グローブモデルの300次元のそれぞれに2つの値を持つ単一のテンソルとして3つの畳み込み層に渡されます。
3つの畳み込みカーネルからの最大プール機能を表す結合機能ベクトルを生成した後、入力の非パッドワードカウントを単一の追加の寸法として追加するだけで、301次元テンソルを生成し、2ユニットの出力にマッピングされます。エンジニアリングの観点から、これにより、SST-2データセットのパフォーマンスがわずかに向上し、平均して肯定的な文は否定的な文よりもわずかに長いことがわかります。19.41ワード対19.17です。これが異なるデータセットに当てはまるかどうか、またはSST-2に固有のものであるかどうかは明らかではありません。 (それは完全には明らかではありませんが、そうでないと思われ、興味深いコーパスと言語の質問を暗示しているようです。「肯定的な」文は一般的に「ネガティブ」な文章よりも長いですか?)
上記の2つの変更に加えて、以下を含むCNNアーキテクチャの他の幅広い変更も実験しました。
最終出力ユニットにマッピングする前に、Maxpooled CNNベクターと平均CBOWベクトルと連結することにより、CBOWモデルとCNNアーキテクチャを組み合わせます。
グローブの埋め込みをGoogleNewsの埋め込みに置き換えました(Mikolov et al。、2013)。このアイデアは、これらの埋め込みがニュース記事で訓練されたため、PTBに有用なドメイン特異性があるかもしれないという考えから生まれました。
CNNアーキテクチャのコンテキストで(Kim、2014)が記述したように、「マルチチャネル」埋め込みを実装しました。トレーニング中に更新される単一の埋め込み層を使用するだけでなく、事前に訓練された重量マトリックスは、トレーニング中に更新される1つは、トレーニング中に省略され、トレーニング中に変化しないようにする2つの別々の埋め込み層にコピーされます。フォワードパスワードインデックスは各テーブルに個別にマッピングされ、2つのテンソルが埋め込み寸法に沿って連結され、各トークンの単一の600次元の埋め込みテンソルを生成します。
バッチングへのさまざまなアプローチを実験しました。コーパスをトレーニング中に単一の切れ目のないシーケンスとしてモデル化する代わりに(TorchTextのBPTTIteratorなど)、コーパスを個々の文に分割してから、各トークンの個別のトレーニングケースを作成しました。たとえば、「私は黒猫が好き」という文章では、5つのコンテキストを作成しました。
a。 「 <SOS>私」
b。 「 <SOS>私は好きです」
c。 「 <SOS>私は黒が好きです」
d。 「 <SOS>私は黒猫が好きです」
e。 「 <SOS>私は黒猫が好き<EOS> 」
モデルは、最初のT -1トークンからの時間ステップTで、各コンテキストで最後のトークンを予測するように訓練されています。 Pytorchのpack_padded_sequence関数を使用して、LSTMへの可変長入力を処理しました。実際には、これは単語の前にコンテキストからより広い範囲の機能を設計するのが容易になるため、魅力的でした。たとえば、 T -1コンテキストを介した前方と後方の両方のパスで双方向BPTTIteratorを簡単に実装できます。しかし、これを試した後、コーパスの文は記事によってグループ化されているため、テーマ /概念レベルでもグループ化されているため、 BPTTIteratorのコーパスの連続表現と競争することは決してないことに気付きました。これは、モデルが次にどのタイプの単語が来るべきかについての文の境界を越えて有用な情報を学ぶことができることを意味します。
ドロップアウト率の変化、最初の埋め込み層などにドロップアウトを適用するなど、さまざまな正規化戦略を実験しました。
これらの変更は、初期の単一層である1000ユニットのLSTMで改善されませんでした。私たちの最高のパフォーマンスモデルは、セクション3.4で説明されているモデルでした。セクション3モデルのそれぞれで達成した困惑を表1に示します。
| モデル | 困惑 |
|---|---|
| 直線的に補間されたトリグラム | 178.03 |
| 神経言語モデル(5グラム) | 162.2 |
| 1層LSTM | 101.5 |
| 3層LSTM +接続 | 92.9 |
接続を備えたマルチレイヤーLSTMは、単純なLSTMベースラインを打ち負かしましたが、同じコーパスと同様のアーキテクチャを使用して(Zaremba et al。、2015)が記述した78.4の検証困惑パフォーマンスを再現することはできませんでした。すなわち、論文で説明されている構成(2層、650および1500ユニットのアーキテクチャ)を使用する場合、モデルは5-6エポック内で過剰にぴったりです。対照的に、(Zaremba et al。、2015)は、最大55のエポックのトレーニングに言及しています。
4つのクラスのモデルを訓練しました。線形補間を備えた従来のTrigramモデルで、期待最大化によって学習された重みがあります。単純なニューラルネットワーク言語モデル(Bengio et al。、2003);単一層LSTMベースライン。また、3層の異なるサイズを使用し、最初の2つのレイヤーの接続をスキップし、正規化(Zaremba et al。、2015)を使用するこのモデルの拡張。最終モデルは、ほぼ同等のハイパーパラメーターを使用して(Zaremba et al。、2015)によって報告された78.4および82.7と比較して、92.9の困惑を達成します。
Y.ベンギオ、R。デュチャルム、P。ビンセント、C。ジョビン。 「神経確率論的言語モデル。」 Journal of Machine Learning Research 3、1137〜1155ページ。 2003年。
D.ジュラフスキー。 「言語モデリング:n-gramsの紹介。」講義。スタンフォード大学CS124。 2012年。
Y.キム。 「文の分類のための畳み込みニューラルネットワーク。」自然言語処理における経験的方法に関する2014年の会議(EMNLP)の議事録、1746〜1751ページ。 2014年。
T.ミコロフ、K。チェン、G。コラド、J。ディーン。 「ベクター空間における単語表現の効率的な推定。」 arxiv preprint arxiv:1301.3781。 2013年。
J.ペニントン、R。ソチャー、C。マニング。 「グローブ:単語表現のためのグローバルベクター。」自然言語処理における経験的方法に関する2014年の会議(EMNLP)の議事録、1532-1543ページ。 2014年。
W. Zaremba、I。Sutskever、O。Vinyals。 2015年。「再発ニューラルネットワークの正規化。」 arxiv preprint arxiv:1409.2329。 2015年。