連載「最適化のライフレッスン」
公開順に読み進められる連載です。
- 「経験が浅いうちほど、ルールに頼った方がいい」を過学習の実験で確かめてみた
多項式回帰で過学習を実際に発生させ、正則化で抑える実験をしながら、「データ(経験)が少ないほど強い制約が必要で、増えるほど制約を緩めていい」という関係を数値で確認してみた
- 「前の経験は新しい挑戦の助けになる」を転移学習の実験で検証したら、そう単純ではなかった
手書き数字0-4で事前学習したニューラルネットの重みを5-9の分類に転移させる実験をしたら、まっさらな状態から学習させた方が精度も収束速度も勝るという意外な結果になった。原因を探ると「死んだユニット」の存在が見えてきた
- ランダムな200箇所から出発したら、勾配降下法は1つも正解にたどり着けなかった。焼きなまし法で局所最適解から抜け出す実験
無数の局所最適解を持つAckley関数の上で、通常の勾配降下法・Momentum・焼きなまし法(Simulated Annealing)を200箇所のランダムな開始点から競走させたら、GDは0%、Momentumも2.5%しか正解にたどり着けず、SAだけが100%成功した。一時的に悪化を受け入れることの意味を実験で確かめた
- 平均も分散も相関も同じまま、恐竜をサーモンに変えてみた。焼きなまし法でDatasaurusを再現する
「要約統計量が同一なのに散布図が全く違う」有名なDatasaurus dozenを、鑑賞するだけでなく自作してみた。原論文と同じ焼きなまし法をnumpyで実装し、統計量を小数2桁で固定したまま恐竜を円・星・X・サーモンに変形。目標の形が小さすぎると数学的に不可能になるという発見や、恐竜を「作る」方向が難しい理由など、動かして初めて分かったことをまとめた
- 「破局的忘却」を実際に起こしてみたら、Task A精度は0.9834から0.0000まで消えた。10%のリハーサルでも一度は9.9%まで沈んでから戻ってきた
手書き数字0-4を98.3%まで学習させたMLPに、リハーサルなしで5-9だけを学習させ続けたら、Task A精度はわずか30ステップで0.0000まで完全に消えた。訓練データの10%をTask Aのリハーサルに充てても、最初の20ステップ前後では精度が一度9.9%まで沈み、そこから150ステップほどかけて94%台まで回復するという、教科書通りにはいかない経過をたどった