深層学習DAY3要約

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

・RNNとは

時系列データに対応可能なニューラルネットワークである。

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

 

・時系列データとは?

時間的順序を追って一定間隔ごとに観察され、しかも相互に統計的依存関係が認められるようなデータの系列。(音声データ、テキストデータなど)

 

・BPTTとは

誤差逆伝播法の一種である。

RNNにおけるパラメータ調整法の一種である。

 

Section2) LSTM

・RNNの課題

時系列を遡れば遡るほど、勾配が消失していくため、長い時系列の学習が困難。

解決策として、ネットワークの構造自体を変えて解決したものがLSTM

 

・勾配消失問題

誤差逆伝播法が下位層に進んでいくほど勾配が小さくなっていく。そのため入力層付近で、学習が進まなくなる。

 

・勾配爆発

勾配が層を逆伝播するごとに指数関数的に大きくなること

 

CEC

中間層で肝になる機能、記憶機能だけ持つ。これまでの入力値や中間層を記憶させる。

 

・入力ゲート

入力された値をどの程度記憶するのかを決定する。

 

・出力ゲート

次時刻に出力させる値をどの程度中間層の記憶を使うかを決める。

 

・忘却ゲート

過去の情報がいらなきなった場合に、どの程度忘却させるかを決める。

 

・のぞき穴結合

CECの保存させている過去の情報を任意のタイミングで、他のノードに伝播させたり、忘却させたりしたい。

CEC自身の値に重み行列を介して伝播可能にした構造。

 

Section3) GRU

・LSTMの課題

LSTMではパラメータ数が多く、計算負荷が高くなる問題があった。

GRUではそのパラメータを大幅に削減し、精度は同等またはそれ以上が望めるようになった構造。

ゲートはリセットと更新ゲートの二つ。

 

Section4)双方向RNN

過去の情報だけではなく、未来の情報を加味することで、精度を向上させるためのモデル。

実用例として、文章の推敲や、機械翻訳等がある。

双方向RNNでは、順方向と逆方向に伝播した時の中間層表現を合わせたものが特徴量になる。

 

Section5)Seq2Seq

Seq2Seqとは

Encoder-decoderモデルの一種を指す。

使用用途として、機械と岩や、機械翻訳に使用されている。

 

Encoder RNN

ユーザーがインプとした情報を、単語等のトークンに区切って渡す構造。

Taking:文章を単語等のトークン事に分割し、トークン毎のIDに分割する。

Embedding:IDからそのトークンを表す分散表現ベクトルに変換。数字の並びが似かよっている事は似かよった意味を持つ単語という事になる ⇒ 単語の意味を抽出したベクトル。

Encoder RNN:ベクトルを順番にRNNに入力していく。

最後のベクトルを入れた時の隠れ状態をFinal stateとして取っておく。

 

Decoder RNN

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

Decorder RNNのFinal stateをDecoder RNNのInitial stateととして設定し、Embeddingを入力。

Sampling:生成確率に基づいてトークンをランダムに選ぶ

EMbedding:2で選ばれたトークンをEmbeddingしてDecorder Rnnへの次の入力とする

Detokenize:1ー3を繰り返し2で得られたトークンを文字列に直す

 

Seq2Seqの課題

一問一答しかできない

問に対して文脈も何もなく、ただ応答が行われる。

 

HREDとは

・過去の発話から次の発話を生成する。

・Seq2Seq ±ContextRNN

 

VHREDとは

HREDに、VAEの潜在変数の概念を追加したもの。

 

オートエンコーダとは

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

 

VAE

通常のオートエンコーダーの場合、何かしらの潜在変数zにデータを押し込めているものの、その構造がどのようなものかわからない。VAEはこの潜在変数zに確率分布を仮定したもの。VAEはデータを潜在変数zの確率分布という構造に押し込めることを可能にします。

 

Section6)Word2Vec

学習データからボキャブラリを作成

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

 

Section7) Attention

Seq2Seqでは長い文章への対応が難しい。(隠れ層ベクトルが固定長だから)

解決策として、文章が長くなるほどそのシーケンスの内部表現の次元も大きくなっていく仕組みが必要。入力と出力のどの単語が関連しているのか、関連度を学習する仕組み。