Contenu connexe Similaire à Encoder-decoder 翻訳 (TISハンズオン資料) (20) Encoder-decoder 翻訳 (TISハンズオン資料)1. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 1
Encoder-decoder 翻訳
Yusuke Oda
(NAIST)
@odashi_t
2015/12/10 TIS Hands-On
2. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 2
機械翻訳
● 機械翻訳 (Mahcine Translation: MT)
– ある言語の文を、計算機で別の言語の文に変換
– 使用する情報やアルゴリズムによって色々な手法が存在
● ルールベース翻訳 … 人間が書いた変換ルールを使用
● 用例翻訳 … 登録された文の単語を置き換えて翻訳
● 統計的機械翻訳
彼 は 望遠鏡 で 女の子 を 見た
He saw a girl with a telescope
3. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 3
統計的機械翻訳
● 統計的機械翻訳 (Statistical Machine Translation: SMT)
– 大量の対訳文から翻訳に必要な情報を自動的に学習
原言語文原言語文原言語文目的言語文
原言語文原言語文原言語文原言語文
翻訳
アルゴリズム
学習
– フレーズ翻訳 … 原言語の単語列を使用
– 構文翻訳 … 原言語の構文木を使用
– Seq-to-seq 翻訳 … 原言語の意味表現を使用
直訳
意訳
4. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 4
フレーズ翻訳
● 単語列をグループ化、変換、並べ替え
– 現在主流の手法
彼 は 望遠鏡 で 女の子 を 見た
He sawa girlwitha telescope
He saw a girl with a telescope
5. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 6
Sequence-to-sequence 翻訳
● 部分的な変換ルールは学習せず、文全体の情報を用いて翻訳
直訳手法
原言語
目的
言語
理解
原言語を解析
分解
細かいルールに分割
再構築
ルールを結合
原言語
目的
言語
理解
原言語の
意味を抽出
再構築
意味表現から
直接単語を生成
Sequence-to-sequence
意味表現
6. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 7
ニューラルネット翻訳
● Sequence-to-sequence 翻訳の一種
● 意味の解析・単語の生成にニューラルネットを使用
– 複雑さ: 従来の翻訳アルゴリズムよりも圧倒的に単純
– 翻訳精度: 設定次第で従来手法に匹敵・凌駕
原言語
目的
言語
ニューラル
ネット
(単語生成)
ニューラル
ネット
(意味解析)
意
味
表
現
● Encoder-decoder 翻訳モデル
– 最も簡単な sequence-to-sequence 翻訳モデル
– リカレントニューラルネットを使用
7. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 8
リカレントニューラルネット (1)
● リカレントニューラルネット (Recurrent Neural Network: RNN)
– フィードバック付きのニューラルネット
– 時系列データの解析によく用いられる
8. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 9
リカレントニューラルネット (2)
● 時間方向に伸展したRNN
– 中間層には入力の種類と順序に関する情報が蓄積される
データ1 データ2 データ3
データ1
データ1
→データ2
データ1
→データ2
→データ3
9. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 10
Encoder-decoder 翻訳モデル (1)
● 原言語側と目的言語側の2本のRNNを結合
– 原言語側 … 入力単語の情報を蓄積
– 目的言語側 … 蓄積された情報を取り出しながら単語を生成
END runs he
走る は 彼
Encoder
Decoder
10. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 11
Encoder-decoder 翻訳モデル (2)
END runs he
走る は 彼
● 埋め込み層 (embedding layer)
– 特定の単語の意味をベクトルで表現
11. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 12
Encoder-decoder 翻訳モデル (3)
END runs he
走る は 彼
● 隠れ層 (hidden layer)
– 単語の意味の蓄積・放出
12. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 13
Encoder-decoder 翻訳モデル (4)
END runs he
走る は 彼
● 出力層 (softmax)
– 次に生成する単語の確率を推定
14. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 15
Chainer で Encoder-decoder 翻訳
● Chainer - http://chainer.org/
– ニューラルネットのフレームワーク
– ソースコードの計算式がそのままニューラルネットの構造になる
● 複雑な形状のニューラルネットを記述するのに最適
は
(一例、他の定式化も可能)
15. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 16
Chainer で Encoder-decoder 翻訳
● Chainer - http://chainer.org/
– ニューラルネットのフレームワーク
– ソースコードの計算式がそのままニューラルネットの構造になる
● 複雑な形状のニューラルネットを記述するのに最適
import numpy as np
import chainer.functions as F
from chainer import Variable
W_xi = F.EmbedID(VOCAB, EMBED)
W_ip = F.Linear(VOCAB, HIDDEN)
W_pp = F.Linear(HIDDEN, HIDDEN)
...
x = Variable(np.array([[w]], dtype=np.float32))
i = F.tanh(W_xi(x))
p = F.tanh(W_ip(i) + W_pp(p))
は
16. 15/12/10 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 17
See Also
● ChainerとRNNと機械翻訳 - Qiita
– http://qiita.com/odashi_t/items/a1be7c4964fbea6a116e
● スタンドアロンで動くニューラル翻訳
– https://github.com/odashi/chainer_examples
– 現在Chainer1.4以前で対応
● サンプルデータ
– https://drive.google.com/open?id=0B3O7bgd3mym6VG9OVHRmRlBLbkk