Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 1
Chainerによる
RNNLM・RNN翻訳モデルの実装
+@
Yusuke Oda
2016/03/07 関西MT...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 3
Sequence-to-sequence 翻訳(一般人向け)
● 部分的な変換ルールは学習せず、文全体の情報を用いて...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 4
ニューラルネット翻訳(一般人向け)
● Sequence-to-sequence 翻訳の一種
● 意味の解析・単語の...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 5
リカレントニューラルネット (1)
● リカレントニューラルネット (Recurrent Neural Networ...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 6
リカレントニューラルネット (2)
● 時間方向に伸展したRNN
– 中間層には入力の種類と順序に関する情報が蓄積さ...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 7
Encoder-decoder 翻訳モデル (1)
● 原言語側と目的言語側の2本のRNNを結合
– 原言語側 … ...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 8
Chainer で Encoder-decoder 翻訳
● Chainer - http://chainer.or...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 9
Chainer で Encoder-decoder 翻訳
● Chainer - http://chainer.or...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 10
Encoder-decoder 翻訳の実装
# encoding
_p, p = init()­­­­­­­­­­...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 11
Decoder
Attention (1)
● Attention ... 入力の情報から必要な情報をその都度生成...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 12
Attention (2)
● Global attention ... 現在のデコーダ状態から各単語の重みを計算...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 13
Attention (3)
● Global attentionのナイーブな実装 (赤字: Chainer/Num...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 14
Attention (4)
● Local attention ... 原言語の1か所に集中する縛りを導入
– A...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 15
LSTM (long/short-term memory) (1)
● LSTM ... 過去のRNNの全状態の線...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 16
LSTM (long/short-term memory) (2)
● LSTM ... 過去のRNNの状態の線形...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 17
LSTM (long/short-term memory) (3)
● LSTM ... 過去のRNNの状態の線形...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 18
LSTM (long/short-term memory) (4)
● LSTM ... 過去のRNNの状態の線形...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 19
GRU (Gated Recurrent Unit) (1)
● GRU: LSTMとは異なる種類の記憶素子
– ...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 20
GRU (Gated Recurrent Unit) (2)
● GRU: LSTMとは異なる種類の記憶素子
– ...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 21
Stacked RNN
● RNNの出力を次のRNNに入力
– 単純にRNNのdeep化とも考えられる(が、どうい...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 22
動くコード例
● https://github.com/odashi/chainer_examples/
– En...
16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 24
…ニューラルネット翻訳を実際に使うと
● 遅い
– GPUがないとお話にならない
● 簡単なコーパスなら「それなり...
Upcoming SlideShare
Loading in …5
×
Upcoming SlideShare
Selective encoding for abstractive sentence summarization
Next
Download to read offline and view in fullscreen.

Share

ChainerによるRNN翻訳モデルの実装+@

Download to read offline

Presented in 関西MT勉強会 (2016/3/7)

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

ChainerによるRNN翻訳モデルの実装+@

  1. 1. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 1 Chainerによる RNNLM・RNN翻訳モデルの実装 +@ Yusuke Oda 2016/03/07 関西MT勉強会
  2. 2. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 3 Sequence-to-sequence 翻訳(一般人向け) ● 部分的な変換ルールは学習せず、文全体の情報を用いて翻訳 直訳手法 原言語 目的 言語 理解 原言語を解析 分解 細かいルールに分割 再構築 ルールを結合 原言語 目的 言語 理解 原言語の 意味を抽出 再構築 意味表現から 直接単語を生成 Sequence-to-sequence 意味表現
  3. 3. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 4 ニューラルネット翻訳(一般人向け) ● Sequence-to-sequence 翻訳の一種 ● 意味の解析・単語の生成にニューラルネットを使用 – 複雑さ: 従来の翻訳アルゴリズムよりも単純 – 翻訳精度: 設定次第で従来手法に匹敵 原言語 目的 言語 ニューラル ネット (単語生成) ニューラル ネット (意味解析) 意 味 表 現 ● Encoder-decoder 翻訳モデル – 最も簡単な sequence-to-sequence 翻訳モデル – リカレントニューラルネットを使用
  4. 4. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 5 リカレントニューラルネット (1) ● リカレントニューラルネット (Recurrent Neural Network: RNN) – フィードバック付きのニューラルネット – 時系列データの解析によく用いられる
  5. 5. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 6 リカレントニューラルネット (2) ● 時間方向に伸展したRNN – 中間層には入力の種類と順序に関する情報が蓄積される(はず) データ1 データ2 データ3 データ1 データ1  →データ2 データ1  →データ2   →データ3
  6. 6. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 7 Encoder-decoder 翻訳モデル (1) ● 原言語側と目的言語側の2本のRNNを結合 – 原言語側 … 入力単語の情報を蓄積 – 目的言語側 … 蓄積された情報を取り出しながら単語を生成 END runs he 走る は 彼 Encoder Decoder
  7. 7. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 8 Chainer で Encoder-decoder 翻訳 ● Chainer - http://chainer.org/ – ニューラルネットのフレームワーク – ソースコードの計算式がそのままニューラルネットの構造になる ● 複雑な形状のニューラルネットを記述するのに最適 は (一例、他の定式化も可能)
  8. 8. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 9 Chainer で Encoder-decoder 翻訳 ● Chainer - http://chainer.org/ – ニューラルネットのフレームワーク – ソースコードの計算式がそのままニューラルネットの構造になる ● 複雑な形状のニューラルネットを記述するのに最適 import numpy as np import chainer.functions as F import chainer.links as L from chainer import Variable xi = L.EmbedID(VOCAB, EMBED) ip = L.Linear(VOCAB, HIDDEN) pp = L.Linear(HIDDEN, HIDDEN) ... x = Variable(np.array([[w]], dtype=np.float32)) i = F.tanh(xi(x)) p = F.tanh(ip(i) + pp(p)) は
  9. 9. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 10 Encoder-decoder 翻訳の実装 # encoding _p, p = init()­­­­­­­­­­­­­­­­­­­­­­­­­­何か初期化 for word in reversed(sentence):   x = Var([[stoi(word)]])­­­­­­­­­­­­­­­単語ID化   _p, p = lstm(_p, xp(x) + pp(p))­­­­­­­LSTMに入力 ­­­­­­この時点でpに入力系列の情報が入っている(はず)­­­­­­ # decoding y = stoi('SOL') while y != stoi('EOL'):   _p, p = lstm(_p, yp(y) + pp(p))­­­­­­­デコーダの状態遷移   y = softmax(py(p)).data.argmax()­­­­­­次の単語   print(itos(y))              ● Enc-dec のナイーブな実装 (赤字: Chainer/NumPy関数、緑: 重み行列)
  10. 10. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 11 Decoder Attention (1) ● Attention ... 入力の情報から必要な情報をその都度生成 – 入力長に(あまり)依存しない解析が可能 – 使いやすいらしく、割と色々応用されている ● 翻訳、キャプション生成、画像生成(ビットマップ、ベクタ)、構文解析、etc – 詳しくは http://www.slideshare.net/yutakikuchi927/deep-learning-nlp-attention SRC TRGEncoder DecoderEnc-dec Attention A quick brown fox jumps ... Enc 速い 茶色の
  11. 11. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 12 Attention (2) ● Global attention ... 現在のデコーダ状態から各単語の重みを計算、線形和 [Luong et al., 2015, Effective Approaches to Attention-based Neural Machine Translation]
  12. 12. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 13 Attention (3) ● Global attentionのナイーブな実装 (赤字: Chainer/NumPy関数、緑: 重み行列) a_list:入力単語のベクトル表現(encoderの出力), p:デコーダの状態 _p, p = init() y = stoi('SOL') while y != stoi('EOL'):   e_list = []­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­重みのリスト   e_sum = zeros(...)­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­分母   for a in a_list:     w = tanh(aw(a) + pw(p))­­­­­­­­­­­­­­­­­­­­­­­­­何か変換して     e = exp(we(w))­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­重み計算     e_list.append(e)     e_sum += e   c = zeros(...)­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­線形和   for a, e in zip(a_list, e_list):     e /= e_sum     c += reshape(batch_matmul(a, e), ...)   _p, p = lstm(_p, ch(p) + hh(p) + yh(Var([[y]])))­­次の状態   y = softmax(py(p)).data.argmax()­­­­­­­­­­­­­­­­­­次の出力   print(itos(y))
  13. 13. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 14 Attention (4) ● Local attention ... 原言語の1か所に集中する縛りを導入 – Attentionの特性が鮮鋭になる 正規分布を掛け合わせて 中心から外れたところの重みを無視 (わりと雑…) Chainerで実装する場合は この式を追加するだけ [Luong et al., 2015, Effective Approaches to Attention-based Neural Machine Translation]
  14. 14. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 15 LSTM (long/short-term memory) (1) ● LSTM ... 過去のRNNの全状態の線形和で次回の出力を生成 – 長距離のbackpropagationが「まともに」計算できるので、長周期の構造学習が可能 – Encoder-decoder系のネットワークでは使わないとお話にならない 電気回路っぽく書いた LSTMセル sigmoid tanh
  15. 15. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 16 LSTM (long/short-term memory) (2) ● LSTM ... 過去のRNNの状態の線形和で次回の出力を生成 – 長距離のbackpropagationが「まともに」計算できるので、長周期の構造学習が可能 – Encoder-decoder系のネットワークでは使わないとお話にならない 電気回路っぽく書いた LSTMセル 赤: 記憶が行われるパス
  16. 16. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 17 LSTM (long/short-term memory) (3) ● LSTM ... 過去のRNNの状態の線形和で次回の出力を生成 – 長距離のbackpropagationが「まともに」計算できるので、長周期の構造学習が可能 – Encoder-decoder系のネットワークでは使わないとお話にならない 電気回路っぽく書いた LSTMセル 赤: 記憶が行われるパス 青: ゲート
  17. 17. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 18 LSTM (long/short-term memory) (4) ● LSTM ... 過去のRNNの状態の線形和で次回の出力を生成 – 長距離のbackpropagationが「まともに」計算できるので、長期の構造学習が可能 – Encoder-decoder系のネットワークでは使わないとお話にならない 電気回路っぽく書いた LSTMセル 赤: 記憶が行われるパス 青: ゲート 緑: Peephole connection (Chainerの標準実装には 今の所ないようなので注意)
  18. 18. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 19 GRU (Gated Recurrent Unit) (1) ● GRU: LSTMとは異なる種類の記憶素子 – 内部に明示的なメモリセルは持たない – 新しい情報に更新するか、元の情報を残すかのみ判断 [Chung et al., 2014, Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling]
  19. 19. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 20 GRU (Gated Recurrent Unit) (2) ● GRU: LSTMとは異なる種類の記憶素子 – 内部に明示的なメモリセルは持たない – 新しい情報に更新するか、元の情報を残すかのみ判断 – LSTMとどちらが良いのかは一概に言えない – Chainerに入っているので簡単に切り替え可能(lstmをgruに変更) Nottingham MuseData [Chung et al., 2014, Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling]
  20. 20. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 21 Stacked RNN ● RNNの出力を次のRNNに入力 – 単純にRNNのdeep化とも考えられる(が、どういう影響があるのかはよく分からない) – 3〜8段くらいが使われているようである – 段ごとにRNNの方向を折り返すなどのバリエーションあり LSTMなど
  21. 21. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 22 動くコード例 ● https://github.com/odashi/chainer_examples/ – Encoder-decoder – Attention ● Global attention ● Local attention ● LSTM/GRU ● Stacked LSTM – どちらもそこまで頑張って実装してないので速度はそれなり – いくつかLSTMの実装が入っている (@prajdabreさんありがとう!) 何か要望があったら 適当にissue/pullreq投げて下さい。
  22. 22. 16/03/23 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 24 …ニューラルネット翻訳を実際に使うと ● 遅い – GPUがないとお話にならない ● 簡単なコーパスなら「それなり」の文を生成できる – …構造としては言語モデル、文法に対して非常に頑健だが ● 内容語を間違える – 「Where is the station? →」   「レストランはどこですか。」 – PBMT・T2Sなど既存のSMTではほぼありえない間違い ● 未知語に弱い – ニューラルネットの次元が固定長 ● 学習に効かないレアな単語は落とすしかない – 「辞書を追加」といった操作が難しい ● 中で何が起こっているのか分からない – 人手によるチューニングは既存のSMT以上に困難 – 辛うじてattention系モデルは「アライメント」の可視化が可能(でも生成される単語は不明) スライドおわり 沢山人がいるので 実際に試した人の 意見が聞きたい
  • JunyaOkawa

    Jun. 30, 2018
  • norihiroyoshida0623

    May. 9, 2017
  • soichiroyamaguchi52

    Mar. 26, 2017
  • kentarorikimaru

    Nov. 25, 2016
  • karupagyu

    Sep. 15, 2016
  • TomoyaKita

    Jul. 22, 2016
  • moriemonmist

    Jul. 13, 2016
  • green_air

    Apr. 15, 2016
  • eve0917

    Mar. 26, 2016

Presented in 関西MT勉強会 (2016/3/7)

Views

Total views

9,379

On Slideshare

0

From embeds

0

Number of embeds

428

Actions

Downloads

69

Shares

0

Comments

0

Likes

9

×