オートエンコーダは入力と同じものを出力するように学習するらしい
答えを丸写しするだけやん。何がうれしいん?
【疑問】入力をそのまま出力するオートエンコーダ、何の役に立つん?積層オートエンコーダと事前学習【G検定】
前提のおさらい。多層パーセプトロンは、入力層・隠れ層・出力層をつないで、出力と正解の誤差が小さくなるように重みを学習する
>>1
ポイントは、真ん中の隠れ層を入力より小さくすること
784画素の画像を32次元に縮めて(エンコーダ)、そこから784画素に戻す(デコーダ)。32次元に 分の1に詰めてもとに戻せるなら、その32個の数に画像の大事な特徴が入ってる
>>3
丸写しできん幅に絞るから、どこを残すかを学ぶしかない。正解のラベルは要らん。入力そのものが正解
>>3
学習は、入力と出力の差を小さくする。入力 (1, 0, 1)、復元が (0.9, 0.1, 0.8) なら、平均二乗誤差は
>>3
それって主成分分析と同じことちゃうの?次元を減らしてるだけやん
>>6
活性化関数を使わない線形のオートエンコーダを平均二乗誤差で学習すると、主成分分析と同じ空間を見つけることが知られてる
活性化関数を入れて層を深くすれば、曲がった関係も表せる。そこが主成分分析より広いところ
積層オートエンコーダは、オートエンコーダを何段も重ねたもの
1段目で入力を縮めて、その縮めた表現を入力にして2段目を学習して、と1層ずつ順番に学ぶ
>>8
なんで1層ずつ学ぶん?全部まとめて学習したらええやん
>>9
昔は深いネットワークをまとめて学習すると、勾配消失でうまくいかんかった。そこで、1層ずつオートエンコーダで初期値を作っておいて(事前学習)、最後に全体を正解つきデータで調整(ファインチューニング)した
ヒントンらの2006年の論文あたりから広まった、ディープラーニングの初期のやり方
>>10
今はReLUや正規化、スキップ結合のおかげで、この事前学習なしでも深いネットワークを学習できる。ただ「ラベルなしデータで先に学んでおく」という考え方自体は、今の事前学習モデルにも引きつがれてる
管理人のひとこと
- オートエンコーダは真ん中の層を小さくして入力を復元するように学ぶ。784画素を32次元(24.5分の1)に詰めて戻せれば、その32個に大事な特徴が入る。ラベルは要らない。
- 誤差は入力と復元の差で、(1, 0, 1) と (0.9, 0.1, 0.8) なら平均二乗誤差0.02。
- 線形のオートエンコーダは主成分分析と同じ空間を見つける。活性化関数と深さで曲がった関係も表せる。
- 積層オートエンコーダは1層ずつ学んで初期値を作り(事前学習)、最後に全体を調整する。深いネットの学習が難しかったころのやり方で、考え方は今の事前学習につながる。