「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
(Convolutional Neural Network: CNN)
(Recurrent Neural Network: RNN)
特徴 †
- 中間層に再帰構造(再帰セル)を追加したニューラルネットワークの総称。
Wh、Wx、bの変数の訓練だけが必要(xが入力、hが出力)
- h0=tanh(h-1Wh+x0Wx+b)
- h1=tanh(h0Wh+x1Wx+b)
- ...
- hn=tanh(hn-1Wh+xnWx+b)
- 特の自然言語や音声データの時間的構造を学習する。
- 時間順序を持つ可変長の系列データ入力を扱える。
- 過去の系列を記憶した上で将来の予測ができる。
- 一時刻前の中間層の出力を自らの入力に戻す。
- 情報を一時的に記憶して振る舞いを動的に変化させる。
- 長期に渡る特徴の学習は苦手。
- 勾配消失・爆発の問題(の回避方法、BPTT法が定着
- 重み衝突(入力重み衝突、出力重み衝突)
- 入力重み衝突:入力が重要なら重みを大きくするが、時系列を考慮できない。
- 出力重み衝突:出力(再起の入力)が重要なら重みを大きくするが、時系列を考慮できない。
構造 †
- 隠れ層(追加可能)
- 隠れ層 → 隠れ層(再帰)
- オプション:(隠れ層 → 隠れ層(再帰))
- オプション:(隠れ層 → 隠れ層(全結合))
- 多対多(Seq2Seq)
例:文を入力すると翻訳文が返る。
RNNでできること †
系列データ(順序関係に重要な意味のあるデータ) の解析
時系列データの変動 †
- 長期変動(トレンド)
- 通り長期に渡る全体的な上がり下がりの変動
- 毎日(週/月/年)の、より長い期間で同じ傾向が見れられる。
- 周期変動(季節性)
- 一定期間ごとに繰り返される周期的な上下変動
- 年単位や月単位、週単位の周期等が考えられる。
- 不規則変動(残差)
- 長期変動、周期変動を除去したあとに残った傾向
- ランダムに発生するであろうノイズ
説明系列と目的系列、教師データ化 †
- 目的系列は1つの系列から成る。
- 説明系列は複数の系列から成るケースがある。
- 目的系列を教師データに変換するには
元データからxタイムステップずらす。
- 1ステップ先を予想する場合、x=1
- 3ステップ先を予想する場合、x=3
- 説明系列と目的系列は1つの同じ系列であるケースがあり、この場合、
目的系列は説明系列をxタイムステップずらして教師データを作成する。
時系列データのデータ分割 †
- 時系列を維持して訓練・テストのデータ分割を行う。
- ランダムとかシャッフルをして取り出さない
誤差計算の方法 †
- BPTT法(Backpropagation Through Time: 通時的誤差逆伝播法)と呼ばれる。
- DNNと同様に誤差逆伝播法による学習ができる。
- 二乗誤差関数(回帰)、クロスエントロピー誤差(分類)
- 出力層から入力層へ遡る。再帰層は時間方向にも遡る。
- 再帰層は前再帰の出力を入力に使っているので
再帰後の勾配の算出に再帰前の勾配の算出が必要。
・系列が長くなるほど、勾配消失問題が起こり易い(→ Truncated BPTT法)。
・遠く離れた依存性を学習しなくなりRNNの利点を生かせなくなる(→ LSTM)。
- Truncated BPTT法
- サンプル毎ではなくタイムステップ毎に誤差を算出
- ミニバッチのn番目のx行目とのn+1番目のx行目は連続性を保つこと。
RNNの発展形 †
- Bidirectional RNN(バイディレクショナル リカレントネットワーク)
- 前方向のRNN層に加え、逆方向のRNN層も追加。
- 過去だけでなく未来の情報も利用し効果的に予測。
- RNN Encoder Decoder
- Seq2Seqモデルとも呼ばれ、機械翻訳や質問応答タスクで使用されることが多い。
- RNN Encoderによってエンコードされた情報をRNN Decoderの始めの内部状態として入力。
- Attention機構
「時間の重み」の概念をネットワークに組み込んだもの。
- 近年、Attention機構を追加することにより精度が向上したモデルも多い。
- Attentionの重みによってどの時間の入力を重視しているか確認することが可能。
- 機構
- メモリアクセスのようなもので、
・メモリセルをKey・Valueの対で構成する。
・Queryに近いKeyでメモリセルからValueを返す。
- y = f(x, h(, r)) の精度向上に関する情報 r を、
x, h に応じて、メモリから拾い上げる機能を実現する。
- 自己アテンション
・Key・Value生成とQueryの生成が同じデータから行われる。
・系列の文脈に応じて重要な情報を拾いながらベクトル列の特徴抽出を行う。
- ソースターゲット・アテンション
・Key・Value生成とQueryの生成が異なるデータから行われる。
・...
参考 †
YouTube? †