P82 式3.17 -(t-y)は間違い?

間違い。t-yが正解。

誤差逆伝播法について

ニューラルネットワークはパラメータを最適化したいというモチベーションしかない。 誤差を最小化したい。そのために出てきたのが誤差逆伝播法。

誤差関数$ E_{(w,b)} $について

$ \frac{\partial E}{\partial W} = 0 $にしたい。

複雑なモデルの最適パラメータを求めるときには解析的には求められない。 -> 勾配降下法を用いる

P127

基本は重みx入力

$$ y = f(Wx + b) $$

式3.96も同じ

$$ \delta_j = f'(p_j)\sum_{k=1}^K v_{jk}\delta_k $$

活性化関数のおすすめ

ReLUかLReLU

学習率の設定

Adam(計算量多め)かRMSProp

AutoEncoder

DeepLearning発展の歴史

  • Deep Belief Nets(DBN)
  • Stacked denoising Autoencoders(SdA)

上記2つは事前学習という教師なし学習のステップが含まれていた。

  • DBNはRBM(制限ボルツマンマシン)
  • SdAはdA( denoising Autoencoders)

手法

入力(Visible) <-> 隠れ層 で 教師なし学習をする。(入力と出力が一致するように学習する。)

隠れ層 -> 中間層

中間層 <-> 隠れ層 でまた学習

隠れ層 -> ロジスティック回帰

最後に全体でFine Tuningする。

上記の通り計算量が多い。

AutoEncoderの復活

画像生成の分野で使われている。

Variational Auto Encoders(VAE)など。

余談

DLでは低次元レイヤーであるほど点や線などの特徴を抽出し、高次元になるほど輪郭などの情報を抽出する。

5章

sin波のRNN学習に必要なデータ

全パターン(sin波の周期)を含むように予測する

なぜ重みは固定なのに全時系列を表現できるのか?

教師データの中に共通のパターンが存在する。

重みWはそのすべてのパターンを表現できるように調整されるだけ。

あらゆる関数はマクローリン展開により多項式で近似できる。

機械学習はそもそも何をしているか

$$ y = f(x) $$

入力に何らかの関数を当てはめると出力yがでる。その関数を求める。

その神関数fを合成関数

$$ f = g \circ h \circ i \circ j \circ k... $$

で求める。それぞれの関数がニューラルネットワークの各層にあたる。

合成関数をやりすぎるのがオーバーフィッティング。

sin波の場合隠れ層1層なので、P.212の式(5.4)(5.5)のU,W,Tの3つのパラメータで近似ができるようになるということ。

それ以上に複雑だと隠れ層を増やしたりLSTM(パラメータ15個)やGRU(パラメータ数8個)が必要。

CECで誤差をとどまらせるとは?

CECの値を次の時系列でも用いるということ。

式(5.30)や式(5.31)は1でなくても消えなければ良い。しかし、2とかだと勾配爆発する可能性があるので1にする。

機械学習は物事を理想的な状態で記述することが多い。

4.5章の重みの正則化についても同様。世の中が理想的な状態であったら、データが正規分布に従っていたら、といった仮定が多い。

時間依存性のある信号・ない信号とは?

判断式は式(5.36)。これが入力値を時間依存性ありなし判断を行う。

LSTM

忘却ゲート

基本的なモチベーション:短期の周期と長期の周期が混ざったデータを判別したい。

wwwwWWWWWW
p波 s波

となったとき、忘却ゲートがないとp波をCECが忘れられず、s波以降の予測に悪影響が出る

覗き穴結合

CECの状態がどのゲートからもわからないので、CEC自体の状態がわかればもっと良いのではないか?

でもkerasでもchainerでも実装されておらず、あまり効果はない。

Adding Problem

Adding ProblemはLSTMが最初に発表されたときに使われた。

P.245で誤差関数の値が0.1767になるのは?

書いてあるとおり。

誤差関数の選択肢は?

微分$ \frac{\partial E}{\partial W} $が計算できればよい。計算しやすいものが選ばれる。

機械学習は基本分類問題と回帰問題の2つに分けられる。

e.g.

  • 株価が上がるか下がるかは分類。 Logistic Regression使うのでCross Entropy誤差関数を使うのが普通。
  • 株価がいくらになるかが回帰。 二条誤差関数を使うのが普通。

GRUがLSTMに勝る?

GRUはパラメータ数がLSTMより少ないのでGRUのほうが早いのは確実だが、精度はケース・バイ・ケース。

第6章

attentionとは

時間に重みをつける。どの過去の値が重要なのかというのを決める。FXでは遅行スパンとかが該当する?

BiRNN

それぞれ独立のNNで学習されたときとは異なるのか?

異なる。式(6.3)で過去と未来の出力を合わせて出力するので、誤差が異なるようになる。

式(6.2)の(t-1)は(t+1)の誤りである。

RNN Encoder-Decoder Sequence to Sequence

なぜ2つのRNNによるEncoder-Decoder構造にしなければならないのか?

Encoder-Decoderだと逐次的に予測できるので。

足し算問題のパラメータはどうなる?

自分で計算しよう。

attention と RNN Encoder-Decoderは組み合わせ可能。

attentionを入れてもそんなに前のことを見ていないというデータもあり、ケース・バイ・ケースだが基本入れておいたほうが良い。

Memory Networksは複雑になっている?

外部記憶は構造上外部にあるように見えているが、実際はニューラルネットワーク内に組み込まれている。

全般

ChainerやPyTorch

TensorFlowやKerasのほうがグローバルの人気やバックアップが強いので。

数式レベルでいじりたいならTensorFlowを使おう。

時系列解析のネットワーク層数

バーニーおじさんのルール…パラメータ数の10倍のデータ数があるといい

逆算してパラメータ、層数を決めよう。

新しいNNモデルを理解するコツ

基本

  • $ y=f(x) $のfをどう頑張るか
  • どう誤差を0に近づけるのか→どう微分をしているのか

In [ ]: