ラビットチャレンジ 深層学習day4レポート 実装演習

Section1~4は講義内に実装演習がないため割愛

割愛

Section5 Transformer

Seq2Seq

エラーの対策としてwheelライブラリのバージョン0.34.2を指定してインストールコマンドを実行する

Seq2Seqモデルの訓練結果:

エポックが進むにつれ、訓練、検証データともにloss(誤差)が下がり、BLEUの評価は上がっていることがわかる。

生成のコード

生成の結果

src: show your own business .
tgt: 自分 の 事 を しろ 。
out: 自分 の よけい を <UNK> な 。
BLEUの評価
17.97129686894934

実行するために英文がランダムに選択され、それに対する教師データとモデルの翻訳が出力される。
何回か実行してほかにも出力してみる。

src: he lived a hard life .
tgt: 彼 は つら い 人生 を 送 っ た 。
out: 彼 は 人生 に 命 を た た 。
BLEUの評価:17.97129686894934

src: no . i ‘m sorry , i ‘ve got to go back early .
tgt: ごめん なさ い 。 早 く 帰 ら な く ちゃ 。
out: 早 く 帰 っ た い 、 、 に に ま い 。
BLEUの評価:17.97129686894934

src: she wrote to me to come at once .
tgt: 彼女 は 私 に すぐ 来 い と の 便り を よこ し た 。
out: 彼女 は すぐ に 来る 手紙 を と た 。
BLEUの評価:17.97129686894934

src: i can ‘t swim at all .
tgt: 私 は 少し も 泳げ な い 。
out: 私 は まったく 泳げ な い 。
BLEUの評価:17.97129686894934

最後の「 i can ‘t swim at all .」の訳はかなりうまくおこなっているが、ほかの翻訳はうまくいっていない。
BLEUの評価は個々の訳で変わるのかと思って実行したが、変化がなかった。このニューラルネットモデルの全体的な評価なんだろうか。

Transformer

  • 実行ファイルは「lecture_chap2_exercise_public.ipynb」
  • 英語から日本語の翻訳を行う
  • データセットのコーパスはchap1と同じ田中コーパス
  • 評価はBLEU

Position Encodingの可視化

Transformerは系列の処理にRNNを使用しないので、そのままでは単語列の語順を考慮することができない。そのため、入力系列の埋め込み行列に単語の位置情報を埋め込むPosition Encodingを加算する

出力結果

ハイパーパラメータの設定

 

訓練データの出力結果

エポック2ですでにSeq2Seq並みのBLEUの値が出ている。
最終的にSeq2Seqの2倍以上のBLEUの評価値になっている。
訓練データと検証データの誤差もSeq2Seqの時に比べて半分ほどになっている。

生成

生成された文は次の通り。BLEUの評価値が上がっても翻訳できていない文章がおおい。

src: show your own business .
tgt: 自分 の 事 を しろ 。
out: <UNK> を 見せ て くれ 。

src: show your own business .
tgt: 自分 の 事 を しろ 。
out: 自分 の 商売 を 自分 の <UNK> に し て くださ い 。

src: the water was cut off yesterday .
tgt: 昨日 水道 を 止め られ た 。
out: その <UNK> は 昨日 水 を 切 っ て い た 。

src: i should like to see you this afternoon .
tgt: 今日 の 午後 お 会 い し た い の で す が 。
out: 午後 に は 君 に 会 い に 入 っ て い る 。

src: i gave him a call .
tgt: 私 は 彼 に 電話 を し た 。
out: 私 は 彼 に 電話 を かけ た 。

Section6は講義内に実装演習がないため割愛

コメント

タイトルとURLをコピーしました