統計的機械翻訳(SMT)とニューラル機械翻訳(NMT)って何ですか? - Qiita
統計的機械翻訳(SMT)とニューラル機械翻訳(NMT)って何ですか? - Qiita を読んだメモ
/icons/hr.icon
近年の機械翻訳
近年ではニューラルネットワークを使った機械翻訳が多く登場しています。NMT(ニューラル機械翻訳)は2014年に提案され、あっという間に従来研究の精度を超えました。自然言語処理という分野自体もBERTやXLNetといったSOTAモデルが登場し、SOTA合戦が止まりません。
NMT(ニューラル機械翻訳)
BERT is ...?
XLNet is ... ?
SOATモデル is ... ?
わからない of わからない
なお、ニューラルネットワークを使わず、統計的な情報を利用して翻訳する手法はSMT(統計的機械翻訳)、さらにそれを句で拡張したものをPBSMT(Phrase-Based SMT)と呼びます。
特定のルールに基づいて翻訳する手法はRMT(ルールベース)と呼ばれます。
SMT(統計的機械翻訳) = Statistical Machine Translation
PBSMT(Phrase-Based SMT) is 句(フレーズ)に拡張したSMT
RMT(ルールベース機械翻訳) = Rule Based Machine Translation
参考
ニューラル機械翻訳以前を支えた「ルールベース機械翻訳(RMT)」と「統計的機械翻訳(SMT)」 | 株式会社 十印
Google翻訳にも2016年にNMTが採用されました(GNMTと呼ばれます)
Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
/icons/hr.icon
SMTとPBSMT(統計的機械翻訳)
SMTは学習データから統計モデルを学習し、統計モデルを翻訳器として機械翻訳を実現します。統計モデルは翻訳モデルと言語モデルに分かれ、それぞれ翻訳の確かさと文法の確かさを評価します。
このあと、翻訳モデルと言語モデルが登場しそう
要するに、大量の対訳文から統計モデルを作成し、確率の最も高い文を翻訳結果とするわけですね。
なるほど確率ね。
PBSMTはSMTが単語ごとに翻訳するために文脈情報を活用しにくいという問題を抱えていたため、フレーズ(句/部分単語列)を単位として翻訳するように拡張したモデルです。
SMTは 単語ごとに翻訳 するんだね。
翻訳の単位を単語->フレーズに拡張したのか〜 論文っぽいやつ -> Statistical phrase-based translation
言語モデル
言語モデルは言語らしさを確立としてモデル化します。例えば長さ$ Mの単語列 $ w_{1} ... w_{M}の生起確率は
$ P(w_{1},...,w_{M}) = \prod^{m}_{t=1}P(w_{t}|w_{1},...,w_{t−1})
と表せます。
m じゃなくて M では? $ \prod^{M}_{t=1}
N-gram言語モデルでは$ N番目の単語がその直前の$ N−1個の単語に依存すると仮定しています。すなわち言語モデルでは直前の単語の並びによってその文が自然か(自然であれば高い確率を出力)を評価します。
直前の単語の並びによってその文が自然か なるほどね
n-gram言語モデル - 長岡技術科学大学 自然言語処理研究室
O'Reilly Japan - ゼロから作るDeep Learning ❷
翻訳モデル
翻訳モデルは原言語$ f(入力側)と目的言語$ e(出力側)の意味的な等価性を確率的に評価します。
こっちは「意味が同じかどうか」という観点ね
アライメント(両フレーズの対応)を$ aとし、翻訳モデルを$ P(f|e)とすると
$ P(f|e) = \sum_{a}P(f,a|e) = \sum_{a}P(f|e,a)P(a|e)
となります。式変形にはベイズの定理を使っています。
アライメント ってなんや
【機械学習】Google翻訳(みたいなもの)を自作してみた。 - Qiita
翻訳確率
言語モデルと翻訳モデルを使って翻訳する確率(翻訳結果としてどれだけふさわしいか)を得られます。
「その文が自然か」と「入力文と意味が同じか」という両方で翻訳する確率を決めるってことね
翻訳確率を$ ê、原言語を$ f、目的言語を$ eとすると
$ ê = \argmax_{e}P(e|f)=\argmax_{e}P(f|e)P(e)
と表せます。ここで出てきた$ P(f|e)は翻訳モデル、$ P(e)は言語モデルです。$ \argmax_{e}f(x)は$ f(x)が最大となる$ xを返します。つまり$ P(f|e)P(e)が最大となる解をふさわしい翻訳結果として出力します。
入力(翻訳前の文字列)$ fに対して出力(翻訳語の文字列)$ eを選択する確率は...
「出力$ eに対して入力$ fがどの程度意味的に等価であるか」x「出力$ eの文がどの程度自然か」
もっと詳しくはこちら
統計的機械翻訳 | 言語知能研究グループ | 協創情報研究部 | 各部の紹介| NTTコミュニケーション科学基礎研究所
機械翻訳技術の研究と動向 - 後藤功雄 | NHK技研 R&D/No.168/2018.3
/icons/hr.icon
NMT(ニューラル機械翻訳)
NMTは1つのニューラルネットワークを用意することで、訓練と翻訳を完結させることができます。
1つの ... ?
seq2seq
ここではNMTの例として、最も広く知られているであろうseq2seq(Encoder-Decoderモデル)を紹介します。seq2seqは入力文を変換するEncoder、出力文を生成するDecoder(と、入力文のどこに注視するかを決定するAttention)で構成されています。
お、encoder-decoder翻訳モデルだ
ChainerとRNNと機械翻訳 - Qiitaでは 入力言語側(encoder)と出力言語側(decoder)の2個のRNNを用意して、それを中間ノードで繋ぎ合わせたもの と紹介されていた
Encoderでは入力となる文字列を単語ごとに分散表現というベクトルに変換します(embedding)。
Encoderでなにをやってるか、という話。
よくわからん。embedding
これにより、ベクトルに変換することで定量的に単語が扱える(数値として単語の意味を捉えられる)ようになります。
なるほど?
分散表現を獲得するツールにはWord2Vecがあります。分散表現は通常、大規模なコーパスから学習することも多いですが、ネットワーク内で同時に分散表現を学習することもあります。
word2vecだ、聞いたことあるぞ。
embeddingされた単語はRNNに取り込まれます。RNNについて詳しい説明は省略しますが、RNNはループを持つニューラルネットワークであり、時系列データを扱えます。
RNNは時系列データを扱える
文字列は時系列データです(並び順が存在する)。機械翻訳においてRNNは入力単語とその前後の単語との結びつきを考慮するために使われます。
並び順が存在するデータを「時系列データ」と称すると、異論出てきそう
入力単語とその前後の単語との結びつきを考慮するために使われます。 どういう目的で使われいるのか書かれているの感謝
DecoderはEncoderと同様にRNNで構成されますが、RNNの出力はベクトルであるため、確率の形としてsoftmax関数で正規化します。すなわちsoftmax関数で出力された最も高い確率の単語が殆ど翻訳文として採用されます。
Decoderの話。ほぼ省略されているなぁ。
softmax関数はベクトルを正規化するために使うのか〜!
Attentionはseq2seqが提案されたよりも後に出てきた機構ですが、近年の系列変換モデルでは使うのが当然ですので、ここではまとめてseq2seqと呼びます。
Attentionの話
何度か目にしたけど、ちゃんと理解していないやつ。
通常のRNNは系列データが長くなるほど初期の入力がDecoderに伝搬しづらくなるという欠点がありました。何故なら通常、EncoderからDecoderへの伝搬は最後の状態出力のみを使うからです。
そりゃそうだよな〜、という感じがする
入力系列$ x_{1},...,x_{I}に対して各時刻で符号化されたベクトル$ h_{1}^{(s)},...,h_{I}^{(s)}はRNNの遷移関数を$ Ψ^{(s)}とすると次のように再帰的に計算できます。
$ h^{(s)}_{i} = Ψ_{(s)}(x_{i},h^{(s)}_{i−1})
すなわちDecoderへ伝搬するのは$ h_{I}^{(s)}であり、長さ$ Iの情報が固定長ベクトルに格納されていることになります。
RNNの遷移関数ってなに?
この問題を解決するためにEncoderの各時刻の中間ベクトル(隠れ状態ベクトル)の重み付き平均を計算します。これはsoft attention(ソフト注意機構)と呼ばれます。
この問題 って、どの問題?
attentionの種類
soft attention: 隠れ状態ベクトルの重み付き平均を計算する
hard attention: 確率に従って見るべき中間ベクトルを選択する
local attention: その他(よく分かっていない)
参考
Neural Machine Translation by Jointly Learning to Align and Translate
今更ながらchainerでSeq2Seq(2)〜Attention Model編〜 - Qiita
Seq2Seq+Attentionのその先へ - Qiita
Attention Seq2Seqで対話モデルを実装してみた – 戦略コンサルで働くデータサイエンティストのブログ
Deep Learning で使われてる attention ってやつを調べてみた - 終末 A.I.
論文解説 Attention Is All You Need (Transformer) - ディープラーニングブログ