前に書いてある
- 画像の読み込みに失敗した場合は、科学オンライン。
- この記事は、School of Software の Zhang 氏が提供した教材を要約したレビュー ノートであり、教科書の多数のスクリーンショットであり、参考用です。テスト会場 (主に教科書) を完全にカバーするという保証はありません。
現在、2 冊目はまだ 3 章が残っており、メモも取られていないため、後でゆっくりと完成させる予定です。- 急いで書いたので、抜けや間違いがあればご指摘ください。
2023/6/7 (Gated RNN の別の章が追加されました。次の 2 章を行うには遅すぎると思います。最初に最後の 2 章については本を読んでください。) 2023/6/8
0:02別の章が更新されました、みなさん、一時的に更新します。もう移動しません。最初にレビューします。レビューがよければ、最終章を更新します。
2023/6/8 0:59 皆さん、まだ完成しました!すべての試験で良い成績を収めました!
2023/6/8 18:00 テストが終わり、ノートでテストのポイントが網羅されており、効果的な復習になります。
記事ディレクトリ
ディープラーニングを始める
2. パーセプトロン
パーセプトロンは複数の入力信号を受信し、単一の信号を出力します。パーセプトロンの信号には 2 つの値 (1/0) しかありません。
具体的には、w1とw2は入力信号の重要度を制御するパラメータ、biasはニューロンの活性化のされやすさ(出力信号がどの程度1になるか)を調整するパラメータです。
3. ニューラルネットワークの導入
1.アクティベーション機能
ステップ関数
シグモイド
シグモイド関数とステップ関数の比較
ReLU関数
線形活性化関数の問題
2. ニューラルネットワーク行列の乗算
行列乗算の例
シンボル指定
順伝播
3. 出力機能
a. 恒等関数
b. ソフトマックス関数
向上
ソフトマックス機能
4. ニューラルネットワーク推論段階
a. 正規化
b. バッチ処理
4. ニューラルネットワーク学習
データドリブン、データから学びます。
1. ニューラルネットワークトレーニングに関する概念
トレーニングデータ
最適なパラメーターを見つけるためにモデルをトレーニングおよび学習するために使用されるデータ。
テストデータ
モデルの汎化能力をテストするためのデータ。
一般化
これは、トレーニング データに関する知識を学習した後に、未観測 (学習済み) データを処理するモデルの能力を指します。
過学習
あるデータセットのみに過学習した状態では、データの個別性が学習され、共通性は無視されます。
損失関数
ニューラルネットワークは、現在の状態を表すある指標を利用し、それを手がかりに最適なパラメータを見つけますが、この指標が損失関数です。
平均二乗誤差関数
クロスエントロピーエラー
ミニバッチ
小規模なバッチ学習の場合、すべてのデータの損失を一度に計算するには遅すぎるため、少しずつ計算する必要があります。
なぜ損失関数が必要なのでしょうか?
離散的な精度を変更せずにパラメーターを微調整します。
損失は継続的であり、パラメーターの微調整が変化する可能性があります。
2. 数値微分
勾配
勾配降下法
学習率
3. ニューラルネットワークの学習ステップ
これは実際にはランダムであり、一度走査しただけではすべてのデータを観察できるわけではありません。
5. 誤差逆伝播
計算グラフソリューション
例
演算グラフ機能
これを利用して、バックプロパゲーション (連鎖則) を介して導関数を効率的に計算できます。
計算グラフと逆伝播
実際には、偏導関数を後ろから前に連鎖させることです。
ここでの例は、 t = x + y 、 z = t 2 t = x+y、 z = t^2です。t=バツ+よ、z=t2
簡単な例:
バックプロパゲーションの計算:
活性化関数バックプロパゲーション
履歴書
シグモイド
アフィン層
(ここで、行列の乗算の形が少し変わっています。列ベクトルとして書かれています。実際の計算では行ベクトルとして計算され、結果は行ベクトルとして書くことができます)
入力
バッチバージョンの計算
Softmax-with-Loss層
ティティt私ははラベルです、yi y_iy私ははソフトマックスの出力です。
勾配確認
6. 学習関連スキル
1. オプティマイザの選択(降下法)
a.シンガポールドル
SGD が楕円空間を降下するとき、ジグザグに進みます。
b. 勢い
c. アダグラード
d. アダム
MomentumとAdaGradを組み合わせた手法。
e. 複数の方法の比較
2. 重みの初期値
すべてを 0 に初期化することも、すべてを同じに初期化することもできません。それ以外の場合、誤差逆伝播では、すべての重み値が同様に更新されます。
シグモイド関数の場合、出力が 0 に近づき続ける (または 1 に近づく) と、その導関数の値は徐々に 0 に近づきます。0 と 1 に偏ったデータ分布により、バックプロパゲーションの勾配の値が減少し続け、最終的には消滅します。この問題は勾配消失と呼ばれます。
a. Xavier 初期値を使用する
シグモイドとタン関数が適用可能で、初期標準偏差は1 n \sqrt {\frac{1}{n}}です。n1(n は前の層のノードの数) の分布。
b. Heの初期値
標準偏差2 n \sqrt {\frac{2}{n}} を使用しますn2ReLU のガウス分布が適しています。
3. バッチ正規化
バッチ標準の利点:
- 学習を早くすることができる(学習率を高めることができる)。
- 初期値への依存度が低い(初期値に対して神経質になることが少ない)。
- 過学習を抑制します(ドロップアウトの必要性を軽減します)。
4. 正則化
過学習
理由
体重減少
脱落
ニューロンは学習中にランダムに削除されます。
5. ハイパーパラメータの検証
ハイパーパラメータの最適化
ハイパーパラメータの「適切な値」の範囲を徐々に狭めます。
7. 畳み込みニューラルネットワーク
1.畳み込み層
a. 全結合層の問題
データの形状は無視されます (3D データは 1D に引き伸ばされます)。
畳み込み層の入力と出力を入力(出力)と呼びます機能マップ。
b. 畳み込み演算
c. 充填
出力のサイズを変更するには
d. 歩幅
e. パラメータに従って画像サイズを計算します。
f. 3次元畳み込み
各レイヤーチャネルの畳み込みと加算
複数のコンボリューション カーネルは、チャネル レベルで複数のコンボリューション出力を取得します。
バッチ畳み込み演算。
2. プーリング層
高さと長さの計算を減らすためです。MAX や Average などのプーリング方法があります。
a. プーリング層の例
b. プーリング層の機能
3.CNNの可視化
4. CNN代表
1、ルネット
2、アレックスネット
3、VGG
4、グーグルネット
5、レスネット
八、ディープラーニング
1.ネットワークを深化させる
a. 動機
高度なディープラーニング
2. 自然言語と単語の分散表現
1. 自然言語処理
日本語や英語など、私たちが日常生活で使う言語を自然言語といいます。いわゆる自然言語処理 (Natural Language Processing、NLP) は、その名前が示すように、自然言語を処理する科学です。
3つの方法
- シソーラスベースのアプローチ
- カウントベースのアプローチ
- 推論ベースのメソッド (word2vec)
2. 同義語辞典
a. 定義
類語辞典では、同じ意味 (同義語) を持つ単語、または似た意味 (同義語) を持つ単語が同じグループにグループ化されます。
場合によっては、上位と下位、全体の部分など、より詳細な関係が定義されることがあります。
b. 短所
- 時代の変化に適応するのが難しい
- 人件費が高い
- 微妙な違いを言葉で表現できない
3. カウントベースの方法
a. コーパス
大量のテキストデータ。
b. 分散表現
分散表現では、単語が固定長ベクトルとして表現されます。このようなベクトルは、密なベクトルで表現されるという特徴がある。
c. 分散された仮定
単語の意味がその周囲の単語によって形成されると推測する考え方は、分散仮説です。
ウィンドウサイズ: コンテキストのサイズ (つまり、その周囲に単語がいくつあるか) はウィンドウ サイズと呼ばれます。
d. 共起行列
各行は対応する単語のベクトルに対応し、値は対応するベクトルが単語の周囲に出現する回数です。(スライディングウィンドウは一定の値に設定されています)
単語のベクトル表現は共起行列から取得できます。
e. ベクトル間の類似性
コサイン類似度
f. ベクトル類似性ソート
4. カウント方法の改善
共起行列を直接使用する場合の欠点: と car が drive と car より近く、実際の状況に反します。
a. ポイント相互情報量
点相互情報量を使用する、つまり、単語が文中に出現する回数と、単語が他の単語と共起する回数を考慮します。
C ( x ) / C ( y ) C(x) / C(y)C ( x ) / C ( y )は、文中に単語 x または y が出現する回数を表します。
C ( x , y ) C(x, y)C ( x ,y )は単語の共起数を表します。
b. 時間厳守の相互情報
つまり、ポイント相互情報量 PMI の最大値と 0 を取得します。
c. 次元削減
上記の行列は比較的疎であり、ノイズの影響を受けやすいことがわかります。(情報を保持する前提で)ベクトルの次元を下げる必要がある。
特異値分解に基づく次元削減
まとめ
3.word2vec
実際にコーパスで処理する単語の数は非常に多く、単語が100wあると共起行列の次元は100w×100wとなり、特異値分解を行うのは困難です。
推論ベースの手法ではニューラル ネットワークが使用され、膨大なデータに対してミニバッチ学習のみが必要です。複数のマシンを同時に実行します。
word2vec という用語は、もともとプログラムまたはツールを指すために使用されていましたが、この言葉が普及するにつれて、一部の文脈ではニューラル ネットワーク モデルも指すようになりました。正しくは、CBOW モデルとスキップグラム モデルは、word2vec で使用される 2 つのニューラル ネットワークです。
1. 推論ベースの方法
2. ニューラルネットワークにおける単語の処理方法
ニューラル ネットワークを使用するには、入力値はベクトルである必要があり、直接処理することはできないため、まず単語の予備的なベクトル表現を実行する必要があります。ワンホットは、単語 (セット、重複排除) の数と、入力ニューロンの数と同じ数のニューラル ネットワークを使用できます。
3.CBOWモデル
コンテキストを使用してオブジェクトを予測するニューラル ネットワーク。コンテキストとして N 個の単語を考慮すると、N 個の入力層が存在します。
N = 2 の場合、ネットワーク構造は次のようになります。
W_{in} で W を学習しましたWで重み行列は単語のベクトル表現です。
視覚的表現:
4. word2vec の重みと分散表現
重みは 2 つあり、どちらも表現できますが、どちらを使用すればよいでしょうか?
3 つのオプション:
- 只用W in W_{in}Wで;
- W out W_{out}のみを使用してくださいWあなたは_;
- 最初の 2 つを同時に使用します。
通常、W_{in} では Wのみを使用しますWで
5. スキップグラム確率モデル
これは、中心となる単語に基づいてコンテキストを予測する、反転された CBOW として理解できます。
6. カウントベースと推論ベースの比較
- 計数ベースの手法はコーパス全体のデータを一度学習することで単語の分散表現を取得しますが、推論ベースの手法は学習用のバッチデータ(ミニバッチ)を繰り返し使用します。
- 新しい単語を語彙に追加する必要がある場合、カウントベースの方法ではすべての計算を最初から行う必要がありますが、推論ベースの方法では漸進的な学習が可能です。
- カウントベースの方法は単語の類似性に基づいていますが、推論ベースの方法は単語間のパターン関係も理解します。
7. まとめ
4 番目に、word2vec の速度
1. 問題点
- 語彙サイズが増加すると、入力ワンホット次元が膨大になり、入力層と出力層のノードの数が膨大になります。
- 語彙サイズが増加すると、ニューロンと重み行列W が中間層 W_{out} から外れます。Wあなたは_乗算が非常に遅く、ソフトマックス層の計算量も増えて非常に遅いです。
2.解決する
a. 最初の質問の分析
次の計算を考えてみましょう。実際には W 行列の特定の行を受け取りますが、この計算ではリソースが消費されます。
間奏曲:
単語の密なベクトル表現は、単語の埋め込みまたは単語の分散表現と呼ばれます。
b. 埋め込み層の働き
次にバックプロパゲーションについて考えます。Embedding 層の順伝播は、重み行列 W から特定の行を抽出し、その特定の行のニューロンをそのまま次の層に渡すだけです。したがって、バックプロパゲーションでは、前の層(出力側の層)から渡された勾配がそのまま次の層(入力側の層)に渡されます。ただし、前の層からの勾配は重み勾配 dW の特定の行 (idx) に適用されます。
簡単な説明: 順伝播中に、idx の行を直接抽出して次の層に渡します。バックプロパゲーション中に、取得された特定の行の勾配は W 型行列 dW に変換され、前の層に返されます。idx に繰り返しがある場合(0、2、0、3 など)、勾配を返すときに上書きではなく 0 の勾配が追加されます。
c. ネガティブサンプリング
上記の 2 番目の問題を解決するには、** を実行する方法があります。ネガティブサンプリング**。
問題の変換
多分類問題を 2 分類問題に変換します。
-
いくつかの文脈を考慮した場合、中心となる単語は何でしょうか?
-
変換すると、次のようになります。いくつかの文脈を与え、次に中心となる単語を与え、それが中心となる単語かどうかを尋ねます。
-
グラフを使用してネットワーク構造を表現する
-
つまり、W out W_{out}を直接取り出します。Wあなたは_中心の単語が位置する列 (つまり、中心の単語を表すベクトル) を抽出し、中間層のニューロンとの内積を計算します。
-
最後に、シグモイド活性化関数が使用され、クロスエントロピー損失関数を通じて損失が計算されます。
ネガティブサンプリングの考え方
多分類を二値分類問題に変換した後、中心の単語のみが提供されます。つまり、中心の単語の高い予測スコアのみが保証されますが、他の単語の低いスコアは保証されません。
モデルのスコアが正しい単語に対して高く、間違った単語に対して低くなるよう、否定的な例を提供する必要があります。それにより差が広がります。
否定的な例をすべて計算に使用することはできません。そうしないと語彙が膨大になり、計算が困難になります。トレーニングを提供するには、少数 (5 または 10) の否定的な例を提供する必要があります。正のサンプルの損失と負のサンプルの損失を加算して、最終的な損失を取得します。
ネガティブサンプリング法
コーパス内の単語の単語頻度を計算し、確率分布として表現します。次に、確率分布を使用してネガティブ サンプリングを実行し、よく使用される単語が抽出される確率が高く、まれな単語が抽出されにくいことを確認します。
3. word2vecの応用
移行学習: word2vec によって学習された単語の分散表現は、テキスト分類、テキスト クラスタリング、品詞タグ付け、センチメント分析などの他のタスクで使用できます。
4. word2vec評価指標
a. 類似性
猫と動物の類似性、猫と車の類似性
b. 類推に関する質問
王様:女王様=男性:?
5. まとめ
5.RNN
1. 言語モデル
言語モデルは、一連の単語の出現確率を与えます。確率を使用して単語のシーケンスの可能性を評価します。
2.RNNモデル
a. 構造図
b. 計算式
c. バックプロパゲーション
時間ベースのバックプロパゲーション、BPTT
次の RNN 層チェーンの導出には、最初の層が必要です。(そんなに計算量が多いの?前回の微分値を再利用できるの?)
d. 短縮された BPTT
より長い時系列データを処理する場合、より長い層のネットワークを水平に拡張する必要がありますが、バックプロパゲーション(勾配の消失)には良くありませんが、適切な長さで切り捨てることができ、サブネットワークごとにバックプロパゲーションを実行できます。
順方向伝播は切り捨てられません。カットされたブロックごとに、まず最初のブロックで順方向伝播を実行し、次に逆方向伝播を実行し、次に 2 番目のブロックで...
学習順序:
e. トレーニング例
各単語が順番にネットワークに入力され、最初に埋め込みが実行されて分散表現が得られ、次に RNN 層に入り、RNN は先頭に隠れ状態を出力し、次の RNN に隠れ状態を出力します。一瞬。この層の RNN は Affine を介して Softmax に渡されます。
f. 時間レイヤーへの統合
g. バッチ処理
位置をオフセットし、系列長 1000 のネットワークを 10 個に分割した場合のミニバッチの例は次のようになります。
h. モデル評価指標
困惑/フォーク度:
ラベルに対応する予測確率の逆数を示します。確率が大きいほど逆数は小さくなり、パープレキシティ/フォークは小さくなります。
3. 単純な RNN の欠点
- 逆伝播の場合、スカラーW h T W_h^TWhTT 回倍加されたため、勾配が消失または爆発し、トレーニングを続行できなくなりました。長期にわたる一連の情報を記憶できなくなります。
- If W h T W_h^TWhTは行列なので、W h T W_h^Tを判断する必要がありますWhTの特異値の最大値で、1より大きい場合は勾配爆発が起こりやすく、1より小さい場合は勾配が消滅します。
4. まとめ
六、ゲート型RNN
前述したように、単純な RNN には勾配消失と勾配爆発という問題が存在する可能性があるため、この章では上記 2 つの問題について説明し、解決します。
1. 単純な RNN 問題の分析と解決策
a. 勾配爆発
勾配爆発を解決する確立された方法: 勾配クリッピング。簡単に言えば、勾配クリッピング法は、しきい値のしきい値を設定します。このしきい値を超えると、アルゴリズムはニューラル ネットワークで使用されるパラメーターの勾配を a g ^ \hat g に統合します。g^(パラメータの勾配は特定の方法で結合されます)。g ^ \hat gのときg^∣ ∣ g ^ ∣ ∣ || \hat g ||の L2 ノルム∣∣g^∣∣閾値に達すると補正されます。疑似コードは次のとおりです。
b. 勾配の消失
勾配消失の場合、x > 0 のとき ReLU 関数の微分関数が 1 になるため、tanh 活性化関数を ReLU 関数で置き換えることができ、勾配爆発の問題をある程度軽減できます。この章では主に、勾配消失問題を軽減するための単純な RNN 構造への変更、つまり LSTM (ゲート RNN) を紹介します。
表現を容易にするために、次の図に示すように、簡略化されたグラフィック手法が導入されています。
2、LSTM
a. 構造
まず、LSTM と RNN の構造の違いを見てみましょう。
ご覧のとおり、LSTM はct c_tを追加します。cた、時刻 t における LSTM のメモリを保存するために使用され、過去から時刻 t までのすべての情報のメモリが保存されます。
その間ct c_tcたどうやって計算するのですか?
ご覧のとおり、ct c_tcた前の瞬間のct − 1 c_{t-1}に基づきますct − 1そしてht − 1 h_{t-1}ht − 1および現在の入力xt x_tバツた何らかの計算により得られます。そしてht h_{t}hたby ct c_tcたタンを通じて入手。
b. 出力ゲート
そして、「ゲート」の概念をLSTMにどのように反映させるのでしょうか?
この「ゲート」は「出力ゲート」と呼ばれ、流出率ベクトルを求め、ht h_{t}hたht − 1 h_{t-1}を反映するアダマール積を実行します (対応する位置を乗算します)。ht − 1の各要素の「電流制限」出力。
このゲートを計算グラフに適用します。
c. 忘れられた門
思い出す必要のない記憶を忘れるために使用される忘れの門。
d. 新しいメモリユニット
忘却の門しかないなら、記憶だけが忘れられる。したがって、ネットワークにメモリを追加するには、新しいメモリ ユニットを追加する必要があります。
e. 入力ゲート
新しいメモリをネットワークに自由に追加することはできず、追加された情報をトレードオフする (つまり、重み付けする) 必要があるため、新しく追加されたメモリ情報は入力ゲートによって重み付けされます。
f. LSTM バックプロパゲーション
すべてのゲートを紹介した後、LSTM バックプロパゲーションの構造を見てみましょう
g. グラデーションが消えないのはなぜですか?
メモリユニット c を観察して、勾配消失の問題を解決する方法を分析します。まず、c がバックプロパゲーションの過程で + および × の計算ノードを通過することがわかります。+ ノードを通過する間、勾配は変化しません。そして、ここでの × ノードは行列の結果ではなく、アダマール積 (対応する位置要素の乗算) です。したがって、伝播と逆伝播のプロセスでは、異なる値に対してスコア計算が実行されます。忘却ゲートでは、忘れるべき要素については傾きが小さくなり、そうでない場合は傾きが大きくなります。したがって、メモリユニットの勾配を勾配が消失することなく伝播できることが期待できる。
(素晴らしい)
h. 統合コンピューティング
以前の単純な RNN とは異なり、LSTM の重み行列 W は 4 つのゲートの重みを統合します。(統合後の動作高速化も可能)
形状の問題を見てください。
私。時間LSTM
j. LSTM マルチレイヤ
一般に、複数の LSTM 層をスタックすると、RNNLM の精度が向上します。
k. 過学習問題を抑制する
一般に、ネットワーク層の数が深くなると、過学習が発生しやすくなります。オーバーフィッティングを抑制するために、スタックされた LSTM でドロップアウトを実行できます。しかし、LSTM のタイミング方向 (水平方向) にドロップアウト層が追加されると、時間の経過とともにメモリが大幅に失われます。したがって、深さ方向にドロップアウトを追加することを選択します。
ドロップアウト以外にもウェイトシェアを行うことも可能です。語彙サイズを V とすると、埋め込み層の重み形状はV × HV \times Hとなります。V×H、アフィン層の重み形状はH × VH \times VH×Vなので、埋め込み層の重みを直接転置してアフィン層に適用できます。二人は結ばれる。過学習を抑制する効果が得られる。なぜ?これにより、トレーニング パラメーターが削減され、過剰適合が抑制され、モデルの精度が向上するためです。
3. まとめ
7、RNN ベースのテキスト生成
1. RNN/LSTMに基づくテキスト生成
RNNLM は、機械翻訳などのさまざまなアプリケーションに使用されました。RNN はテキスト生成にも使用できます。
単純な RNN または LSTM を直接使用する場合、ネットワークによるソフトマックス出力の最後の層の後に、確率分布を使用して単語を出力します (最も可能性の高い値を取得するのではなく、確率的に値を取得します)。ただし、テキスト生成も実行できます。しかし、効果が低い可能性があります。
2、seq2seq
以下は、非常に優れたテキスト生成モデル seq2seq です。これは、Encoder-Decoder モデル、つまりエンコーダー-デコーダー モデルとしても知られています。コーディングは、特定のルールに基づいて情報を変換するプロセスです。デコード時に情報を復元するプロセス。たとえば、文字「A」を 1000001 にエンコードし、その後 1000001 を文字「A」にデコードできます。このモデルは比較的単純なので、すぐに習得できます。
簡単に言うと、以下のネットワーク構造を見てください。
左側にはエンコーダがあります。これは、前に学習した LSTM と同様の LSTM 層です。ただし、エンコーダは上方向の出力は気にせず、主に時系列データの隠れ状態 h、つまり右端の出力 h を取得します。
右側はデコーダです。これは LSTM 全体であり、基本的に前の LSTM と同じです。つまり、追加の初期隠れ状態 h (つまり、左側のデコーダによって送信された h) を受け取ります。
トレーニング中、エンコーダーとデコーダーは同時にデータを入力し、エンコーダーは日本語の「I am a cat」を入力し、デコーダーは開始記号 + 英語の「I am a cat」を入力します。
モデルをテストするとき、エンコーダーは日本語で「吾輩は猫である」を入力し、デコーダーは開始文字を入力します。あとは出力するエンコーダ次第ですが、うまく訓練すれば「I am a cat」を英語で出力することもできます。わかりやすいつまり、私が日本語と開始文字を与え、あなたは私が与えた開始文字に従って英語を出力します。
文内の単語数が異なる場合はどうなりますか? 具体的な内容については説明しませんが、これだけ理解してください。
デコーダが文字列を生成するとき、正確な値が必要な場合は、最も高い確率で結果が取得され、ランダム性を追加したい場合は、各結果の確率に基づいて数値が生成されます。
モデルの構造はここまでですが、非常に単純です。
3. seq2seqの改良
seq2seq を加算計算用にトレーニングする場合、これは計算機ではなく言語モデルであるため、パフォーマンスがあまり良くない可能性があります。
改善するには次の 2 つの方法があります。
a. データを反転する
たとえば、データに 5 + 75 がある場合、反転後は 75 + 5 になります。
逆データを使用してトレーニングすると、精度が向上します。
b. ピーキー
デコーダの場合、その入力はエンコーダによって送信された h のみであり、LSTM 層に直接入力されます。このhをもっと使いこなせるか?
改善前:
改善後:
実際、h は隠れ状態として LSTM に渡されるだけでなく、LSTM の入力とアフィン層の入力とベクトル結合されて入力として使用されます。
hをプライベートではなく複数のレイヤーで共有することです。もしかしたら、より正確な判断ができるかもしれません。
4. LSTMの応用
-
機械翻訳
-
自動要約
-
質問応答システム
-
メールの自動返信
5. まとめ
八、Attention
つまり、注意メカニズムです。
1. seq2seqの不足
seq2seq を改善するための 2 つのアプローチは以前に紹介しました。1 つはデータの反転用、もう 1 つは h 共有 (ピーキー) 用です。実際、改善はそれほど大きくありません。
機械翻訳の場面を考えてみましょう。エンコーダが中国語の「私は猫です」を入力したとき、seq2seq は開始文字の後に「私は猫です」と書きます。実際、翻訳するときは、その関係をより深く考えることができます。 「I」が「I」に対応する、「is」が「am」に対応するなど、単語間の対応関係や単語間の対応関係を把握することで、翻訳精度が大幅に向上します。では、どうすればそれを達成できるのでしょうか?アテンション メカニズムはこれを行うことで、LSTM が各瞬間に対応する単語にさらに注意を払うようにし、翻訳の精度を向上させます。
2. アテンションメカニズム
seq2seq のエンコーダは、直前の隠れ状態 h をデコーダに入力するため、最後の単語「cat」に含まれる情報が比較的大きな割合を占めます。デコーダに送信される各単語の情報量のバランスをとるために、各瞬間の隠れた状態が行列 hs に結合され、一緒にデコーダに入力されます。以下に示すように:
では、デコーダーの LSTM はどのようにして hs の情報を結合し、対応する単語にさらに注意を払うことができるのでしょうか?
これを行うには、LSTM の出力 r と hs の各ベクトルとの内積を実行して、初期重みベクトルを取得します (hs 内の r に近い単語に対応するベクトルは、大きい方の r との内積の後に取得されます)値)。初期重みベクトルを各数値が正となるように正規化(ソフトマックス)し、rとの類似度を反映し、確率和が1となる重みベクトルを求める。以下に示すように: 不均一から (.8、.1、.03、.05、.02)
そして、得られた重みベクトルと hs 行列を乗算することで、この層の翻訳に対応する hs の単語に関するより多くの情報を抽出することができます。
たとえば、重みベクトルが (.8、.1、.03、.05、.02) で、翻訳したい文が「I am a cat」の場合、LSTM は最初の瞬間に「I」を挿入します。この単語の情報は、重み 0.8 (さらに重み 0.8 を持つ他の情報の合計) を乗算することによって抽出されます (双方向 LSTM ではないため、ここではあまり厳密ではありませんが、最初にこのように理解してください)物事を遅らせないように)。このようにして、「I」という単語により多くの注意を払うことができ、「I」をより正確に翻訳することができます。
seq2seq のデコーダに注目が追加されました。
知らせ、アテンション層を介した LSTM の出力も LSTM 自体の出力と結合され、Affine 層に入力されます。
この後双方向LSTMやseq2seqの深掘りもあるので書きません、試験を受けない気がします(読みたい学生は本を読んでください)。
3. アテンションメカニズムの適用
-
NMT: ニューラル機械翻訳
-
変成器
-
等