こちらの勉強会に参加してきました。
詳解ディープラーニングの著者、巣籠悠輔さんをお招きしての質問会です。
といってもエントリーしたときにはすでに質問が締め切られていたので聞きに行っただけでしたが。
率直な感想を言うと、わりと意地悪な質問が多かったのに著者の巣籠さんが真摯に答えようとしていたところに感動した。
ですかね。勉強が浅かったのですべて吸収しきれていないのが残念です。
以下にメモった内容を残しておきます。
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に近づけるのか→どう微分をしているのか
コメント