rnn-based translation models (japanese)

28
16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 1 RNN-based Translation Models Yusuke Oda @odashi_t 2016/5/12 NAIST MT-Study Group

Upload: naist-machine-translation-study-group

Post on 17-Jan-2017

256 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 1

RNN-based Translation Models

Yusuke Oda@odashi_t

2016/5/12 NAIST MT-Study Group

Page 2: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 2

Neural Network

Page 3: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 3

Neural Network (1)● Neural Network 任意の(劣)微分可能な関数の連結

入力層 隠れ層 隠れ層 出力層

Page 4: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 4

Neural Network (2)● つなぎ方はほぼ自由

Page 5: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 5

Neural Network の学習● →出力に「損失」=「値の悪さ」を定義   損失が小さくなるよう関数を調整

– 勾配法で更新:

– 関数の勾配をどう求める?

● ネットワークが複雑だと直接計算するのが困難

Page 6: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 6

Backpropagation (誤差逆伝播) (1)

1. 変数の勾配を「直後の変数の勾配」を用いて求める

(直接計算)

Page 7: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 7

Backpropagation (誤差逆伝播) (2)

1. 変数の勾配を「直後の変数の勾配」を用いて求める

2. 関数の勾配も同様

Page 8: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 8

NNで頻繁に使う関数・導関数

線形写像

sigmoid

tanh

lamp (ReLU)

Page 9: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 9

NN-basedTranslation Models

Page 10: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 10

Sequence-to-sequence 翻訳(一般人向け)● 部分的な変換ルールは学習せず、文全体の情報を用いて翻訳

直訳手法

原言語 目的言語

理解原言語を解析

分解細かいルールに分割

再構築ルールを結合

原言語 目的言語

理解原言語の

意味を抽出

再構築意味表現から

直接単語を生成

Sequence-to-sequence

意味表現

Page 11: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 11

ニューラルネット翻訳(一般人向け)● Sequence-to-sequence 翻訳の一種

● 意味の解析・単語の生成にニューラルネットを使用

– 複雑さ: 従来の翻訳アルゴリズムよりも単純

– 翻訳精度: 設定次第で従来手法に匹敵

原言語 目的言語

ニューラルネット

(単語生成)

ニューラルネット

(意味解析)

意味表現

● Encoder-decoder 翻訳モデル

– 最も簡単な sequence-to-sequence 翻訳モデル

– リカレントニューラルネットを使用

Page 12: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 12

リカレントニューラルネット (1)● リカレントニューラルネット (Recurrent Neural Network: RNN)

– フィードバック付きのニューラルネット

– 時系列データの解析によく用いられる

Page 13: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 13

リカレントニューラルネット (2)● 時間方向に伸展したRNN

– 中間層には入力の種類と順序に関する情報が蓄積される(はず)

データ1 データ2 データ3

データ1データ1 →データ2

データ1 →データ2  →データ3

Page 14: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 14

Encoder-decoder 翻訳モデル (1)● 原言語側と目的言語側の2本のRNNを結合

– 原言語側 … 入力単語の情報を蓄積

– 目的言語側 … 蓄積された情報を取り出しながら単語を生成

END runs he

走る は 彼

Encoder

Decoder

Page 15: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 15

Chainer で Encoder-decoder 翻訳● Chainer - http://chainer.org/

– ニューラルネットのフレームワーク

– ソースコードの計算式がそのままニューラルネットの構造になる

● 複雑な形状のニューラルネットを記述するのに最適

は(一例、他の定式化も可能)

Page 16: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 16

Chainer で Encoder-decoder 翻訳● Chainer - http://chainer.org/

– ニューラルネットのフレームワーク

– ソースコードの計算式がそのままニューラルネットの構造になる

● 複雑な形状のニューラルネットを記述するのに最適

import numpy as npimport chainer.functions as Fimport chainer.links as Lfrom 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))

Page 17: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 17

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に入力系列の情報が入っている(はず)­­­­­­

# decodingy = 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関数、緑: 重み行列)

Page 18: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 18

Decoder

Attention (1)● Attention ... 入力の情報から必要な情報をその都度生成

– 入力長に(あまり)依存しない解析が可能

– 使いやすいらしく、割と色々応用されている

● 翻訳、キャプション生成、画像生成(ビットマップ、ベクタ)、構文解析、etc

– 詳しくは http://www.slideshare.net/yutakikuchi927/deep-learning-nlp-attention

SRC TRGEncoder DecoderEnc-dec

AttentionA

quick

brown

fox

jumps

...

Enc

速い

茶色の

Page 19: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 19

Attention (2)● Global attention ... 現在のデコーダ状態から各単語の重みを計算、線形和

[Luong et al., 2015, Effective Approaches to Attention-based Neural Machine Translation]

Page 20: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 20

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))

Page 21: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 21

Attention (4)● Local attention ... 原言語の1か所に集中する縛りを導入

– Attentionの特性が鮮鋭になる

正規分布を掛け合わせて中心から外れたところの重みを無視

(わりと雑…)

Chainerで実装する場合はこの式を追加するだけ

[Luong et al., 2015, Effective Approaches to Attention-based Neural Machine Translation]

Page 22: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 22

LSTM (long/short-term memory) (1)● LSTM ... 過去のRNNの全状態の線形和で次回の出力を生成

– 長距離のbackpropagationが「まともに」計算できるので、長周期の構造学習が可能

– Encoder-decoder系のネットワークでは使わないとお話にならない

電気回路っぽく書いたLSTMセル

sigmoid

tanh

Page 23: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 23

LSTM (long/short-term memory) (2)● LSTM ... 過去のRNNの状態の線形和で次回の出力を生成

– 長距離のbackpropagationが「まともに」計算できるので、長周期の構造学習が可能

– Encoder-decoder系のネットワークでは使わないとお話にならない

電気回路っぽく書いたLSTMセル

赤: 記憶が行われるパス

Page 24: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 24

LSTM (long/short-term memory) (3)● LSTM ... 過去のRNNの状態の線形和で次回の出力を生成

– 長距離のbackpropagationが「まともに」計算できるので、長周期の構造学習が可能

– Encoder-decoder系のネットワークでは使わないとお話にならない

電気回路っぽく書いたLSTMセル

赤: 記憶が行われるパス

青: ゲート

Page 25: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 25

LSTM (long/short-term memory) (4)● LSTM ... 過去のRNNの状態の線形和で次回の出力を生成

– 長距離のbackpropagationが「まともに」計算できるので、長期の構造学習が可能

– Encoder-decoder系のネットワークでは使わないとお話にならない

電気回路っぽく書いたLSTMセル

赤: 記憶が行われるパス

青: ゲート

緑: Peephole connection(Chainerの標準実装には今の所ないようなので注意)

Page 26: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 26

GRU (Gated Recurrent Unit) (1)● GRU: LSTMとは異なる種類の記憶素子

– 内部に明示的なメモリセルは持たない

– 新しい情報に更新するか、元の情報を残すかのみ判断

[Chung et al., 2014, Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling]

Page 27: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 27

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]

Page 28: RNN-based Translation Models (Japanese)

16/05/12 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 28

Stacked RNN● RNNの出力を次のRNNに入力

– 単純にRNNのdeep化とも考えられる(が、どういう影響があるのかはよく分からない)

– 3〜8段くらいが使われているようである

– 段ごとにRNNの方向を折り返すなどのバリエーションあり

LSTMなど