RyotaUshio / ml

0 stars 0 forks source link

レポートのための観察記録、考察など #14

Closed RyotaUshio closed 3 years ago

RyotaUshio commented 3 years ago

aic.py 中間層のニューロン数を5, 10, 20, 50, 100, 200, 500, 1000, 2000と変えて MNISTを学習させ、それぞれについてAIC・BICを計算し、過学習との関係を調べた。

学習条件:

観察

次実験するときは、毎回netを上書きしてしまわないでlistにでもappendして残しておこうと思う。 また、正則化の影響も調べたい。

RyotaUshio commented 3 years ago

学習曲線(learning curve)というと思ってたのとはちょっと違うのを指すらしい

RyotaUshio commented 3 years ago

minibatch_iterでshuffle=Falseとすると、損失のグラフが異様に滑らかになるのがわかる。

RyotaUshio commented 3 years ago

Dropoutエグすぎる。dropout=[0.2, 0.5, 0.5] Dropoutなしで計算した検証用データに対する損失は、訓練中の部分ネットワークで計算した訓練データの損失を下回った Accuracyは訓練データで99%以上、テストデータでも98%以上

RyotaUshio commented 3 years ago

Dropout使用時は荷重減衰を使わないほうがいいっぽい。

RyotaUshio commented 3 years ago

自己符号化器(autoencoder)の実験。積層の場合、Encoder側の活性化関数にReLUを多段で重ねると信号の値がかなり大きくなり、 Decoder側を全部sigmoidにしたりすると、(sigmoidは原点から遠いほど平らになるので)内側のsimple autoencoderの出力はほとんど二値化のようになってしまった。sigmoidを出力層だけにするとうまくいった。

RyotaUshio commented 3 years ago

MLPの最後の隠れ層の出力は線形分離可能、またはいくつかの超平面でほぼ分離可能になっているはずなので、それを特徴抽出・クラスタリングに使えないか?と思った。結果は鮮やかだった!(mlp3d.py, fig/mlp3d_[123].png) 1,2はReLU、3はtanh

RyotaUshio commented 3 years ago

テストデータ集合を同じようにプロットするとfig/mlp3d_test.pngのようになった。訓練データでは1つのクラスがシュッとまとまってクラス間が分離しており、その間の領域はスカスカになっていてすばらしかった。が、テストデータではそうはいかないこともわかった。過学習との関係でこれを調べても面白そう(過学習対策しないときは訓練データの分離がすばらしいがテストデータはそうでもない、対策すると訓練データはそこそこだがテストデータもそんなに悪くならない、などありえそう)。

RyotaUshio commented 3 years ago

PCAは団子みたいになってカス。

RyotaUshio commented 3 years ago

クラスタリングにおける正規化(~白色化)の意義 参考:https://www.kamishima.net/archive/clustering.pdf のp.41

RyotaUshio commented 3 years ago

mlp3d.pyの訓練結果。