$30 off During Our Annual Pro Sale. View Details »

ニューラルネット4

Ayumu
March 07, 2019

 ニューラルネット4

2019/03/07
長岡技術科学大学 自然言語処理研究室
学部4年 守谷 歩

Ayumu

March 07, 2019
Tweet

More Decks by Ayumu

Other Decks in Technology

Transcript

  1. ニューラルネット
    2019/03/07
    長岡技術科学大学 自然言語処理研究室
    学部4年 守谷 歩
    RNN,LSTM,seq2seq,Attention,Pointer Net,
    Transformer

    View Slide

  2. RNN 復習
    ⚫RNNはニューラルネットを繰り返していく方法
    ⚫今までのニューラルネットと違い、同じレイヤに対してデータを送り
    続ける
    ⚫時間という観点で見るととある時刻におけるRNNのレイヤではひと
    つ前のレイヤからの出力を以下のように得る

    = tanh(ℎ−1

    +


    + )
    RNN RNN RNN RNN
    xt x1 x2 xt
    ・・・

    View Slide

  3. 勾配消失
    ⚫RNNでは物事の推論を行うにあたって長い記憶をすることが苦手
    ⚫勾配がレイヤを通るたびに弱くなり、ほとんど情報を持たなくなっ
    てしまう勾配消失か勾配が大きくなりすぎる勾配爆発が起こる。
    ⚫原因として、逆伝搬時に微分が行われ、tanhノードを通った場合、
    その微分は1以下となり、勾配がどんどん小さくなっていく。
    = tanh ,


    = 1 − 2
    ⚫またRNNを時間として考えた時の行列の積の計算では、毎回同じ
    重みが使われており、勾配がどんどん大きくなっていく。

    View Slide

  4. LSTM
    ⚫勾配消失の対策として、LSTMがある
    ⚫LSTMには記憶セルcが、レイヤ内でデータの受け渡しをし、隠れ
    状態hのみを次のレイヤに出力する。
    ⚫LSTMではoutputゲート、inputゲート、forgetゲートそして、状態を
    記憶する処理によって勾配消失を防いでいる。

    View Slide

  5. LSTMクラスの実装
    ⚫各処理を定式化すると以下のようになる。
    ⚫Forgetゲート: =
    (


    + ℎ−1


    + )
    ⚫Inputゲート:i =
    (


    + ℎ−1

    + )
    ⚫Outputゲート:o =
    (


    + ℎ−1

    + )
    ⚫記憶セルの更新:g = ℎ(


    + ℎ−1


    + )
    ⚫記憶セルc:
    = ⨀−1
    + ⨀
    ⚫出力:ht
    = ⨀tanh(
    )

    View Slide

  6. seq2seq
    ⚫ニューラルネットを使った言語モデルでは、ある単語が与えられた場合、
    その単語の次の文字に対しての確率分布を出力していた。
    ⚫seq2seqはEncoder-Decoderモデルと呼ばれ、2つのモジュールが存在す
    る。
    ⚫Encoderでは入力されたデータ任意の長さの固定長ベクトルに変換する。
    Decoderでは固定長にしたベクトルに対してLSTM言語モデルを当てはめ
    て出力させる。
    ⚫また、入力分を反転させて学習させる手法(Reverse)やエンコーダの情
    報をデコーダの複数レイヤに与える(Peeky)といった手法で精度を向上さ
    せることができる。

    View Slide

  7. Seq2seq問題点
    ⚫Seq2seqはその手法として、入力文をエンコーダから、デコーダに
    固定長のベクトルとして送り、出力の生成を行っていた。しかし、入
    力文が大きい場合でも、固定長のベクトルにしないといけないと
    いった点で、表現力の限界が来る。
    ⚫また、入力文に大きな差があった場合、出力される文の精度があ
    まり高くない。

    View Slide

  8. Attention概要
    ⚫Attentionとは、次の隠れ層hを予測する場合に、過去のtつの隠れ
    層を参照して過去のどの点を重要視するかの重みを見る手法であ
    る。
    ⚫具体的な方法としては、Decoderの隠れ層のベクトルhtとEncoder
    の全時刻の隠れ層のベクトルhsのスコア計算を行い、時刻tにおい
    てどの入力単語に注視をするかを決める手法である。

    View Slide

  9. Pointer Network概要,CopyNet概要
    ⚫Pointer Networkとは、Encoderで入力を読み、DecoderでAttentionを使
    いどの入力を選択するかを決定する。
    ⚫Attentionによって得られる入力単語の分布を出力単語の分布としてみ
    てあげることによって分布の次元を可変とすることができる。
    ⚫CopyNetはseq2seqモデルとPointer Networkの機構を組み合わせたモ
    デル
    ⚫Decoderでの出力の際にモデルの保持している辞書の分布と入力から
    の単語を選択する分布によって単語の選ばれる確率を計算している。

    View Slide

  10. Transformer
    ⚫Self Attentionといった考え方を用いる
    ⚫Self Attentionでは、一つの時系列データを対象として、各
    要素がほかの要素に対してどのような関連性があるかを見
    るものである。
    ⚫今までのAttentionでは異なる2つの時系列のデータを入力
    して処理していたが、Self Attentionでは、2つの入力に対し
    てひとつの時系列データを入力する。
    ⚫学習速度や翻訳での精度などの向上がみられた

    View Slide

  11. 参考資料
    ⚫ゼロから作る Deep Learning
    ⚫ゼロから作る Deep Learning2 自然言語処理編
    ⚫強化学習と深層学習 <>
    ⚫[機械学習]パラメータの重みの初期値:https://qiita.com/m-hayashi/items/02065a2e2ec3e2269e0b
    ⚫ChainerとRNNと機械翻訳:https://qiita.com/odashi_t/items/a1be7c4964fbea6a116e
    ⚫[機械学習]Google翻訳(みたいなもの)を自作してみた。:https://qiita.com/R-
    Yoshi/items/9a809c0a03e02874fabb
    ⚫Xavierの初期値 Heの初期値の考察:http://murayama.hatenablog.com/entry/2017/11/25/231609
    ⚫Dual Learning for Machine Translation
    ⚫Seq2Seq+Attentionのその先へ:https://qiita.com/ymym3412/items/c84e6254de89c9952c55
    ⚫Attention Is All You Need

    View Slide