ラビットチャレンジ 深層学習day3レポート 要点まとめ

Section1 再帰型ニューラルネットワークの概念

RNN(再帰型ニューラルネットワーク)の全体像

RNN:
時系列データに対応可能な、ニューラルネットワーク。

時系列データ:
時間的順序を追って一定間隔ごとに観察され,しかも相互に統計的依存関係が認められるようなデータの系列
音声データ、テキストデータ、株価データなど時間的なつながりのあるデータ
テキストデータも単語一つ一つをある時点のデータとして扱うと時系列データとみなせる。

RNNの全体像

RNNも基本的な構造は変わらない

左側も右側の図でも同じものを表している。
左側はある時点で入力層から出力層に出すのに加えてもう一度中間層に入力として使うことを表している。
右側の図は添え字の数字がある時刻を表している。右に出ている矢印が次の時刻の中間層に出力を渡している。
中間層の矢印からの出力は時刻0のときから情報を含んでいる。

RNNの重みは3種類。
入力層から中間層への重み\(W_(in)\)、中間層の次の時刻への重み\(W\)、中間層から出力層への重み\(W_(out)\)。

RNNの特徴
時系列モデルを扱うには、初期の状態と過去の時間t-1の状態を保持し、そこから次の時間でのtを再帰的に求める再帰構造が必要になる。

 

BPTT

BPTT:
RNNにおけるパラメータ調整方法の一種。
誤差逆伝播のRNN版。

Section2 LSTM

全体像

RNNの課題
時系列をさかのぼればさかのぼるほど、勾配が消失していく
⇒ 長い時系列の学習が困難

RNNのネットワークの構造を変えて解決したものがLSTM。

勾配爆発:
勾配が、層を逆伝播するごとに指数関数的に大きくなっていくこと。
学習率の変更などによってよくおこる。

勾配クリッピング
勾配爆発を防ぐために、勾配のノルムが閾値をこえたら、勾配のノルムを閾値に正規化する。

LSTMの全体図
青い点線が時間的なループ。
黒い点線の部分が中間層。
時間軸は上から下に向かっている。
CECを取り囲むようにいろいろな機能がある。

CEC

RNNでいうところの中間層のキモになる機能。
CECに入力層や中間層のこれまでの記憶だけを持たせる。
RNNでは考えることと記憶させることの両方の機能を持たせていた。そのため遡るほど記憶ができなくなっていた。
CECは記憶だけに絞ることで勾配消失や勾配爆発を防ぐ。

勾配消失および勾配爆発の解決方法として、勾配が、1であれば解決できる。
CECの勾配は1にして解決。

CECは入力データについて、時間依存度に関係なく重みが一律である。
⇒ CECにはニューラルネットワークの学習特性が無いということ。

CECの周りに学習機能を配置して、どう覚えるか、どう記憶するかを制御する。

入力ゲートと出力ゲート

入力・出力ゲートの役割

入力・出力ゲートを追加することで、それぞれのゲートへの入力値の重みを、重み行列W,Uで可変可能とする。

忘却ゲート

CECは、過去の情報が全て保管されている。
過去の情報が要らなくなった場合でも削除することはできず保管され続ける。
過去の情報が要らなくなった場合にそのタイミングで情報を忘却する機能が実現するのが忘却ゲート。

覗き穴結合

CECの保存されている過去の情報を、任意のタイミングで他のノードに伝播させたり、あるいは任意のタイミングで忘却させたい。CEC自身の値もゲート制御に影響を与えるようにした機能。

実際のところは大きな影響を与えることはできなかった。

Section3 GRU

LSTMではパラメータ数が多く、計算負荷が高くなる問題があった。RNNを改善しようとしてやりすぎた。
それを改良したのがGRUである。

GRU:
従来のLSTMでは、パラメータが多数存在していたため、計算負荷が大きかった。しかし、GRUでは、そのパラメータを大幅に削減し、精度は同等またはそれ以上が望める様になった構造。
メリット:
計算負荷が低い。

CECと入力ゲート、出力ゲート、忘却ゲートがなくなって、代わりにリセットゲートと更新ゲートが加わった。

隠れ層に計算状態を保存していくのがGRUの特徴。
リセット、更新ゲートは隠れ層の情報を制御する。

Section4 双方向RNN

過去の情報だけでなく、未来の情報を加味することで、精度を向上させるためのモデル。
実用例は文章の推敲や機械翻訳などがある。
株価のような時系列データには使用できないが、文章のような先の情報まで一括でわかるようなデータに適用できる。

Section5 Seq2Seq

Seq2seqはEncoder-Decoderモデルの一種を指す。
具体的な用途には機械対話や、機械翻訳などがある。

Encoder RNN

ユーザーがインプットしたテキストデータを単語等のトークンに区切って渡す構造。

処理の流れ
Taking :文章を単語等のトークン毎に分割し、トークンごとのIDに分割する。one-hotベクトルになる。
Embedding :IDからそのトークンを表す分散表現ベクトルに変換。意味が近いものは似たベクトル表現にする。
Encoder RNN:ベクトルを順番にRNNに入力していく。

・vec1をRNNに入力し、hidden stateを出力。このhiddenstateと次の入力vec2をまたRNNに入力してきたhidden stateを出力という流れを繰り返す。
・最後のvecを入れたときのhiddenstateをfinalstateとしてとっておく。このfinalstateがthoughtvectorと呼ばれ、入力した文の意味を表すベクトルとなる

Decoder RNN

システムがアウトプットデータを単語等のトークンごとに生成する構造

処理手順

  1. Decoder RNN: Encoder RNN のfinal state (thought vector) から、各token の生成確率を出力
    final state をDecoder RNN のinitial state ととして設定し、Embedding を入力。
  2. Sampling:生成確率にもとづいてtoken をランダムに選ぶ。
  3. Embedding:2で選ばれたtoken をEmbedding してDecoder RNN への次の入力とする。
  4. 1 -3 を繰り返し、2で得られたtoken を文字列に直す。

 

HRED

Seq2Seqは一問一答しかできない。
過去の文脈ををどうにかして取れるようにしたのがHRED。

HREDは過去n-1 個の発話から次の発話を生成する。
Seq2seqでは会話の文脈無視で応答がなされたが、HREDでは前の単語の流れに即して応答されるため、より人間らしい文章が生成される。

VHRED

HREDの課題であったバリエーションに乏しい返答を改善したもの。
VAEの潜在変数の概念を追加することで解決した構造。

オートエンコーダ

教師なし学習の一つ。
そのため学習時の入力データは訓練データのみで教師データは利用しない。

オートエンコーダ構造説明入力データから潜在変数zに変換するニューラルネットワークをEncoder。逆に潜在変数zをインプットとして元画像を復元するニューラルネットワークをDecoderとする。

オートエンコーダ具体例
MNISTの場合、28×28の数字の画像を入れて、同じ画像を出力するニューラルネットワークということになる。

メリット:次元削減が行えること

VAE

オートエンコーダの潜在変数zに確率分布z∼N(0,1)を仮定したもの。
データを潜在変数zの確率分布という構造に押し込めることができる。

Section6 word2vec

単語をベクトル表現にする手法。

word2vecは学習データからボキャブラリを作成する方法である。

メリット
大規模データの分散表現の学習が、現実的な計算速度とメモリ量で実現可能にした。

本来はボキャブラリ×ボキャブラリだけの重み行列が必要になるが、ボキャブラリ×任意の単語ベクトル次元で重み行列で済むようになった。

Section7 Attention Mechanism

seq2seqでは長い文章への対応が難しかった。2単語でも100単語でも固定次元ベクトルの中に入力しなければならない。

文章が長くなるほどそのシーケンスの内部表現の次元も大きくなっていく仕組みが必要だった。

Attention Mechanismは一文の中で特に重要な単語を自力で見つける機構。

重要な情報だけを拾い集めることで中間層の情報量が一定でもその中で使っていくことができる。

近年の自動翻訳にはほとんどこれが使われているくらい強力。

 

コメント

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