G検定(ジェネラリスト検定)
せきそうおーとえんこーだ
積層オートエンコーダ
SAE
Stacked Autoencoders
積層オートエンコーダは、隠れ層が1つだけの浅いオートエンコーダを何段も積み重ねて、深いオートエンコーダを作る考え方です。深いオートエンコーダは浅いものより優れた圧縮を得られると報告されており、その訓練では浅いオートエンコーダを下の段から1つずつ学習させる貪欲な事前学習がよく使われます。
詳しい説明
オートエンコーダの基本の形
オートエンコーダとは、入力をそのまま出力へ写し取るように訓練されるニューラルネットワークです。内部には、入力を表す値の組(コードと呼びます)を求める隠れ層 があります。
オートエンコーダは2つの部分に分かれます。入力 からコードを作る部分をエンコーダと呼び、 と書きます。コードから入力を作り直す部分をデコーダと呼び、作り直した結果を再構成 と書きます。
入力をそのまま写すだけなら、 となる関数を覚えれば済みます。しかしそれでは、入力について何も学んでいないのと同じです。そこでオートエンコーダは、完全な写し取りができないように制約をかけて設計します。制約のもとで入力をできるだけよく作り直そうとするので、コード には入力のうち作り直しに役立つ性質が残ります。
浅いオートエンコーダと深いオートエンコーダ
このページでは、エンコーダの中の隠れ層がコードの層1つだけのものを浅いオートエンコーダと呼びます。これに対して深いオートエンコーダは、エンコーダの内部に少なくとも1つ、追加の隠れ層を持ちます。
イアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)の教科書 Deep Learning(2016年)の第14章は、深いオートエンコーダが浅いオートエンコーダや線形のオートエンコーダより優れた圧縮を得られたという報告を紹介しています。報告はジェフリー・ヒントン(Geoffrey Hinton)とルスラン・サラフトディノフ(Ruslan Salakhutdinov)による2006年の研究です。
浅いオートエンコーダを積み重ねるという訓練の考え方
深いオートエンコーダは、層が多いぶん訓練の手間も増えます。同じ教科書の第14章は、深いオートエンコーダを訓練する一般的な戦略として、浅いオートエンコーダを積み重ねたものを貪欲に事前学習する方法を挙げています。積層オートエンコーダという呼び名は、この積み重ねの形から来ています。
ここでいう貪欲とは、全体をまとめて一度に学習させず、目の前の1段だけを学習させて、その結果を固定したまま次の段へ進むという進め方です。1段ごとに見れば、学習させるのは浅いオートエンコーダ1つだけです。
3段を積み重ねる架空の例
架空の設定で流れを追います。入力は784個の数値の並びとし、コードの次元を段ごとに小さくすることを制約として使います。
1段目は、元の入力 (784次元)を784次元に縮めて784次元に作り直す浅いオートエンコーダを学習させ、256次元のコード を得ます。2段目は、(256次元)を入力とみなし、256次元を64次元に縮めて256次元に作り直す浅いオートエンコーダを学習させ、64次元のコード を得ます。3段目は、(64次元)を入力とみなし、64次元を16次元に縮めて64次元に作り直す浅いオートエンコーダを学習させ、16次元のコード を得ます。
1段目では、元の入力 を作り直せるように浅いオートエンコーダを学習させます。学習が済んだら、そのエンコーダに全データを通して256次元のコード を得ます。
2段目では、元の入力ではなく を入力とみなして、新しい浅いオートエンコーダを学習させます。このとき1段目の重みは動かしません。2段目が作り直す相手は ではなく です。学習が済んだら、64次元のコード を得ます。
3段目も同じように、 を入力として学習させ、16次元のコード を得ます。
3つのエンコーダを順につなぐと、784次元の入力を256次元、64次元、16次元と段階的に縮める深いエンコーダになります。3つのデコーダを逆の順につなぐと、16次元のコードから64次元、256次元、784次元と戻す深いデコーダになります。こうして組み上がったものが、事前学習を終えた深いオートエンコーダです。
1段の学習で何を小さくしているか
各段の浅いオートエンコーダは、その段の入力と再構成がどれだけ違うかを数で測り、その違いが小さくなるように学習します。架空の4次元の値で違いの測り方を示します。
ある段の入力が で、再構成が だったとします。成分ごとの差を2乗して足すと、次のようになります。
この値が小さいほど、その段はよく作り直せています。積み重ねの訓練では、この計算の相手が段ごとに変わります。1段目が小さくするのは元の入力 との違いです。2段目は との違い、3段目は との違いを小さくします。
読むときに混同しやすい点
積層オートエンコーダは、特別な部品を持つ新しいモデルの名前というより、浅いオートエンコーダを積み重ねるという組み立て方と訓練の進め方を指す呼び名です。1段ずつの学習は、深いオートエンコーダを訓練するための一般的な戦略の1つとして紹介されており、深いオートエンコーダを作る唯一の方法としては書かれていません。
また、上の例の784、256、64、16という次元の数は説明のための架空の値です。何段積むか、各段のコードを何次元にするかは、扱うデータと目的によって変わります。
事前学習を終えたあとに全体をどう扱うか、また現在の深層学習でこの訓練の進め方がどの程度使われているかは、このページの根拠にした資料の範囲では確かめていません。事前学習そのものについては、事前学習の語のページで確かめてください。
試験で問われること
G検定
- 積層オートエンコーダは、隠れ層が1つの浅いオートエンコーダを積み重ねて深いオートエンコーダを組み立てる考え方です。
- 訓練では、浅いオートエンコーダを下の段から1つずつ学習させ、前の段のコードを次の段の入力にします。全体を一度に学習させない点から、貪欲な事前学習と呼ばれます。
- 深いオートエンコーダはエンコーダの内部に追加の隠れ層を持ち、浅いものや線形のものより優れた圧縮を得られたと報告されています(ヒントンとサラフトディノフ、2006年)。
- オートエンコーダは、入力からコードを作るエンコーダ h = f(x) と、コードから入力を作り直すデコーダ r = g(h) の2つの部分からなります。
最終更新日: 2026/09/23