🐒

Stanford NLP with Deep Learning Lecture7のまとめ(モデル編)

2023/06/07に公開

1.はじめに

本稿は前稿で述べることができなかったNMTの各種モデルとAttentionについて述べていきます。
ニューラルネットを用いた機械翻訳の先駆モデルであるSeq2Seqを中心に述べていきます。

2.Seq2Seq

前稿でも述べた通り、NMTの先駆モデルであるSeq2Seqについて述べていきます。
そもそもSeq2Seqとは2014年に[2]の論文中のにおいて登場したend-to-endのニューラルネットを用いて、機械翻訳において高い精度を当時誇っていたモデルです。

2-1:モデルの内部構造

モデルに関しては講義で用いられていた図がかなりわかりやすかったので引用させていただきます。
図1)Seq2Seqの内部構造([1]より引用)

図1を見てわかる通り、Seq2Seqモデルは翻訳前の言語を理解するEncoder RNNsと翻訳後の言語の文章を予測するDecoder RNNsの2つの分けられます。

Encoder RNNs :

source sentence(翻訳前の言語の文章)をEncode(符号化)する役割を持つRNNs
最終層の出力をDecoder RNNsも渡すことで翻訳を可能にしている。

Decoder RNNs :

Encoder RNNsから得たベクトル情報をもとにtarget sentence(翻訳後の言語の文章)を随時生成していく役割をもつRNNs

!!Encoder RNNsとDecoder RNNs内では重みWは共有するものの、二つのRNNs間では共有しないという特徴を持ちます。

Seq2Seqモデルの学習

Seq2Seqは機械翻訳タスク以外にも要約、対話、係り受け解析などなど他のタスクでも高い精度を叩き出しました。
それには各タスクごとに適した学習を行ったことに由来しています。
Seq2Seqモデルの学習はSMTの時同様、条件付き確率の最適化を目標に行なっていきます。

<学習手順>
  1. SMTと同様に大量のParallel corpus(翻訳前後の文のペア)を準備する
  2. corpusをもとにDecoder RNNsの部分を用いて学習していく

SMTと異なる点としては各ステップでそれまでの損失も考慮して勾配計算が行われるという点にあります。(条件付き確率を以下のように考えます)
ex)単語数Tのある文章xを他の言語の文章yに翻訳したい時を考える

P(y\ |\ x) = P(y_1 \ |\ x)P(y_2 \ |\ y_1,x)\cdots P(y_T \ |\ y_1, \cdots, y_{T-1},x)

また、 Seq2Seqモデルは"end-to-end"モデル(Encoder, Decoderが一貫しているモデル)なので、学習に用いるのはDecoder部分のみですが勾配計算によるパラメータ更新はEncoder RNNsのパラメータに対しても行われます。(図2参照)

図2)Seq2SeqにおけるBack Propagation([1]より引用, Jは損失)

3.Multi-layer RNNs

これまでのRNNs
:一層のRNNs上で何度もtimestepを繰り返すことで複雑な表現力を実現していました。

この層をいっぱい増やせば表現力がさらに上がるのでは、、?
→Multi-layer RNNs(別名stacked RNNs)の誕生

このMulti-layer RNNsを用いた機械翻訳の様子を図3に示します。
Multi-layer RNNsを用いることでNMTは表現力の向上で精度が上がっただけではなくより、人間らしい特徴の捉え方が可能になりました。
というのもこの層の深さによって、モデルが捉える意味が以下のように変わるため可能になりました。

  • 低層(浅い階層)のRNNsでは低レベルの特徴である単語単体の意味や熟語単体の意味を捉えている
  • 高層(深い階層)のRNNsでは高レベルの特徴である文脈を考慮した意味などの隠れた意味を捉えている

一概にMulti-layerにすればいいというわけでもなく、今回のRNNなどの深層学習モデルとの相性が良いため精度が向上した。
また、学習時にはSkip-connectionやDense-connectionといった工夫が必要となる(Lecture6参照)。
図3) Multi-layer RNNsを用いたNMT([1]より引用)

4.Seq2SeqとAttention

以下にMulti-layerのように層を重ねたとしてもSeq2Seqモデルにはボトルネックがあります。
 これはSeq2Seqモデルの構造に由来しており、図1から見て分かる通りSeq2SeqモデルはEncoderの最終層の出力のみをDecoderの入力としています。
これでは情報量の保持に限界があるため、系列長の長い入力の時にうまく対応できません。
それに対応した手段としてMax-PoolingやMean-Poolingが挙げられますが、これは機械翻訳のタスクにおいて適したPooling手法とは言えません。
そこで考えられたのが「Attention」です。
 Attentionは人間が翻訳を考える時のように、Decoder部分の各ステップでEncoderの情報を参照しています。そのため各ステップにおいてSource Sentence(入力)とDecoderの隠れ層の出力をもとに算出されるスコアを利用して次の単語の予測を行っています。(図4, 5参照)

図4)Decoderの最初の地点([1]より引用) 図5)Decoderの第2地点([1]より引用)

4-1:Seq2SeqにおけるAttentionの手順

図4,5から分かりますが、Seq2Seq+Attentionは以下の手順で翻訳後の文章の生成を行っています。

  1. Encoderは通常通り行い、最終層の出力をもとにDecoderにおける始めの地点の隠れ層の出力を得る
  2. Decoderの隠れ層の出力とEncoderの各ステップにおける隠れ層の出力の内積をとってAttention scoreとする
  3. Attention scoreをsoftmax関数に入れることでAttention分布(確率分布)を作成する
  4. 3の分布をもとに重み付き和を求める
  5. 4と1のDecoderの隠れ層をもとに予測単語を求める
  6. 1~6をDecoderの各ステップで繰り返し行う

これによって都度、Source Sentenceの情報を参照しながら、翻訳を行うことを可能にしました。
!!今回Seq2Seqに用いているAttentionはTransformerに採用されているAttentionとは異なっています。

5.各種Decodingについて

これまではSeq2Seqを中心とした各種モデルの中身について触れてきました。
最後にDecoder部分における工夫について述べていきたいと思います。

5-1:Greedy decoding

まず初めに基本的なdecoding手法であるGreedy decodingについてです。
Greedy decoding:
各ステップで最も確率の高い単語を選択していく手法

この手法自体は悪い手法ではないのですが、場合によっては以下の問題が生じてしまいます。

  • 一度間違えると引き返すことができず、そこから間違ったままになってしまう

この解決策として登場したDecoding手法が次のExhaustive search decodingです。

5-2:Exhaustive search decoding

Greedy decodingの問題点である引き返せない問題に対して対処した手法がこのExhaustive search decodingです。
中身は、\displaystyle\sum_{t=1}^T P(y_t\ |\ y_1, \cdots, y_{t-1}, x)を最大化することを目的として各ステップにおける取り得る予測単語\hat{y}全てを保持するという手法になっています。
ここで気づく方もいるかもしれませんがこの手法には致命的な問題点があります。
それは、Tの値が増加すればするほど保持しないといけない単語が増えることで計算コストが膨大になっていくという問題です。
この問題を解決するために提案されたのが次のBeam Search decodingです。

5-3:Beam Search decoding

Beam Search decodingはExhaustive search decodingの問題点である保持する単語の増加問題に対して、保持する単語の上位数を決めて対処しました。
この時の上位数とは以下式で表されるscore をもとに決定されます。また、scoreをもとに保持される翻訳候補のことをhyposesisと呼びます。

score(y_1, \cdots, y_t) = \sum_{i-1}^t \log P_{LM}(y_i\ |\ y_1, \cdots, y_{i-1}, x)

これを系列長の最後まで行い、最もscoreが高かった候補をその予測結果として出力します。(図6参照)
 ただ、注意点としてはこの手法はあくまでもscoreが高いものを選んでいるだけなので必ず最適解になるというわけではありません。

図6) Beam Search deコーディングの様子([1]より引用)

これはBeam Search decodingにおける終了地点の決定に由来しています。
Greedy decodingなどの手法においては終了の合図として<END>トークンを用意していました。
しかし、Beam Search decodingにおいて<END>トークンをそのまま用いてしまうと良きせぬタイミングでhyposesisが終了する可能性があります。
そのため、以下のような工夫を用いて終了のタイミングを決定しています。

  • TimeStepの回数を事前に決めておき、そこに到達したら終了する
  • 任意の個数終了したhyposesisができたらそこで終了する

ただこの方法でもhyposesisの長さによってscoreが不公平であるという問題点があります。
これは確率の対数をとっているため長さが長いということはそれだけ負の値を加算されていくことに由来しています。

この問題点に対しては長さに応じて正規化をかけることで対処しました。

score(y_1, \cdots, y_t) = \frac{1}{t}\sum_{i-1}^t \log P_{LM}(y_i\ |\ y_1, \cdots, y_{i-1}, x)

6. まとめ

今回はLecture7の機械翻訳の各種モデルや内部構造についてまとめていきました。
いよいよAttentionが登場したわけですがすでにこれまでの技術より人間に近づいてることが見て取れますね、、、
ここからさらに発展していってより人に近い回答ができるようになっていくわけですが本当にターミネーターの世界が遠くない未来になりそうですね
AIに淘汰されないよう研鑽あるのみです、、。

7.参考資料

[1]Stanford CS224N NLP with Deep Learning | Winter 2021 | Lecture 7 - Translation, Seq2Seq, Attention
[2]Sequence to Sequence Learning with Neural Networks, Ilya Sutskever,Oriol Vinyals, Quoc V. Le 2014

Discussion