オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】seq2seq / Encoder-Decoder Model #実装編 #03

この記事の読者


深層学習・ディープラーニングのタスクの1つである「文章生成」について その1つのアルゴリズムとである「seq2seq / Encoder-Decoder Model」について知りたい.

Index

seq2seq

「#実装編 #02」では、簡単な問題で学習するコードを実装した.

「#実装編 #03」 では、「#アルゴリズム編 #02」 で記した seq2seq の改善手法「Peeky」と学習を実装する.

Decoder

「#実装編 #01」との、変更点とその実装箇所をまとめる.

アルゴリズム内容は「#アルゴリズム編 #02」にて.

変更点

Peeky のスクリプトの変更点は、Decoder のみ.

Encoder には変更点はない.

Decoder / DecoderCell のコードは「#実装編 #01」で作成したものをベースに改良.

スクリプト

DecoderCell



Encoder の情報を連結し、次のレイヤに渡すようにする.


Decoder



Encoder の情報を保持し、時系列ごとの処理のたびに、PeekyDecoderCell に渡す.


Seq2seq



全体のseq2seq モデルは PeekySeq2seq class と定義.

変更箇所は、使用する Decoder を PeekyDecoder に変更するのみ.

学習

タスクとデータセットについては、「#実装編 #02」と同様に「足し算」のタスクとデータセット.

スクリプト



学習のスクリプトの変更点は、Seq2seq class を PeekySeq2seq class に変更.

データセットや、評価関数は、「deep-learning-from-scratch-2」を利用させていただきます.

精度比較

まとめ

  • DecoderCell, Decoder class を PeekyDecoderCell, PeekyDecoder として改良
  • 全体的な精度は変わらなそう?(学習不足)であるが、精度の上昇は Peeky 実装の方が早そう

参考