ITと哲学と

IT系エンジニアによる技術と哲学のお話。

Sequence models & Attention mechanism

CouseraのDeeplearningコースの最終回. 長かった.

Various sequence to sequence architectures

Basic Models

センテンスの翻訳タスクを扱う基本的なモデルを図1に示す.

f:id:masamasah:20181015151629j:plain

このモデルはセンテンスtoセンテンスのタスクでよく使われる.

EncoderとDecoderの組み合わせは,センテンスtoセンテンスのタスク以外に,画像toセンテンスのタスクなんかでも使われる(図2).

f:id:masamasah:20181015151645j:plain

Picking the most likely sentence

LanguageModelを用いた文章生成では,各softmaxアウトプットの結果から,その確率に沿って単語をピックアップして,センテンスの生成を行っていた.

翻訳タスクにおいては,そうではなく,「一番確からしい」センテンスを得たい.

Greedy search

softmaxの値を参照し,初めの単語としてもっともそれらしいものを選択する. さらに,その結果を持って次の単語としてもっともそれらしいものを選択すると行ったように1つずつ単語を確定させていく方法をgreedy searchと呼ぶ.

これは,センテンスを文の先頭から見て決めて行くものであり,センテンス全体として確からしいものが得られにくいという課題がある.

これを解決するのが次章で説明するBeam Searchである.

Beam Search

Greedy Searchの問題を解消する.

簡単に述べると,選択肢をB個(ハイパーパラメータ)しながらセンテンスを最後まで形成し,その中で一番それらしいものを選ぶと行った方法である.

まず,センテンスの初めの単語としてふさわしいであろう単語をB個選択する. 次に,それぞれ選択されたB個が与えられた際の各単語の事後条件を求める.

その事後条件から,改めてB個を候補として記憶する.

さらに,それぞれのB個の単語の組み合わせが得られた際の,各単語の事後条件を求めて,TopB個を候補として記憶する.

センテンス終端文字が得られるまでこれを繰り返し,最終的に得られたB個の候補センテンスから,もっとも確からしいものを採用する.

これによって,初めに先頭単語を決めて,順番にその次の単語を決めて行く方法に比べて,全体を通してより確からしいセンテンスを選択することが可能になる.

Refinements to Beam Search

前述の方法を定式化すると図3のようになる.

f:id:masamasah:20181015151702j:plain

式を見るとわかるが,これをそのまま実施すると,短いセンテンスの方が有利になるという問題が起こる.

これを補正するために,翻訳語センテンスの長さTyを使った補正ずみの式を図4に示す.

f:id:masamasah:20181015151713j:plain

Error analysis in beam search

RNNでモデルを学習し,そのモデルから得られた確率を用いてBeamSearchでセンテンスを完成させる.

プロジェクトを進める上で,ボトルネックになっている箇所を見つけるために,ErrorAnalysisを実施する必要があり,ここではその方法を述べる.

方法は簡単で,以下の通り.

最終的に得られた翻訳結果y(微妙に間違っているもの)と人間が翻訳した正解翻訳結果yを考える. まず,RNNを用いてP(y|x)を求める.次に,P(y|x)を求める.

この結果,P(y|x)>P(y|x)であれば,RNNはyをより確からしい翻訳結果だと主張しているとみなせる.逆にP(y*|x)<P(y|x)であればRNNはyをより良い翻訳結果だと主張していることになる.

つまり,前者であればRNNは正しく翻訳を評価できているため,問題はRNNの後にセンテンスを整形してるBeamSearchのアルゴリズムにあると思われる.この場合はBの値を大きくして精度を高める必要があるかもしれない.

逆に後者であれば,RNNが正しく翻訳を評価できておらず,RNN側の性能改善が求められる.

以上がBeamSearchとRNNについてのErrorAnalysisの進め方である.

Attention Model Intuition

これまでのモデルでは,センテンスの翻訳を,翻訳元の文章全てを見てやってきた.

だが,長い翻訳元の文などについてこれを実施するのはあまり実用的ではない.

構造的に近しい箇所の翻訳元センテンスだけをみれば,正しい翻訳は実施できるからである.

ということで,全ての文章を見て判断するのではなく,翻訳済みセンテンスの1単語を決める際に,どの程度の範囲のinputの情報を参考にすれば良いか?ということをうまく調整してくれるのがAttention Modelである.

Attention Model

AttentionModelを図5に示す.

f:id:masamasah:20181015151727j:plain

α<t, t'>は,単語tを決定するのに,翻訳元のt'番目の単語をどの程度考慮すべきかと言った重みを示す.

Speech recognition

Speech recognition

音声認識システムでは,図6のようなモデルが使われる.

f:id:masamasah:20181015151739j:plain

ここで得られたttthh_ee_ qqq__みたいなアウトプットを整形して,"The quick brown fox"といった正解を導き出すことができる.

Trigger Word Detection

Alexaのようなトリガーする単語の検知システムも似たようなモデルになる. 図7にイメージを示す.

f:id:masamasah:20181015151757j:plain

こんな感じで,Many-to-Manyのアーキテクチャでトリガーワードが検知されたら1を返すようなスタイルになる.