オートエンコーダ:圧縮して復元しながら学ぶ
入力をいったん小さくまとめてから元に戻すことで、データの特徴を学ぶしくみを学びます。基礎層では、圧縮して復元するオートエンコーダのしくみをつかみます。深掘り層では、エンコーダとデコーダの機構、積層オートエンコーダ、そしてデータを生成できる変分オートエンコーダ (VAE) や、VQ-VAE・info VAE・β-VAE といった亜種まで説明できるようになります。
ねらい
このレッスンでは、入力をいったん小さくまとめてから元に戻すことで、データの特徴を学ぶしくみを学びます。
基礎
圧縮して復元するオートエンコーダ(autoencoder)のしくみをつかみます。
1. オートエンコーダは、圧縮して復元します
オートエンコーダは、入力をいったん小さくまとめ、そこから元の入力を復元しようとするネットワークです。入力と同じものを出口でもう一度作り直すのが目標です。
ここで肝心なのは、途中でいったん小さくまとめる点です。情報を小さく絞りこむと、余計な部分は落ち、元に戻すのに欠かせない特徴だけが残ります。そうしないと、うまく復元できないからです。復元をうまくやろうと学習するうちに、データの重要な特徴を自然と学び取っていきます。
先ほどの景色の話でいえば、要点にまとめる部分と、要点から景色を思いえがく部分の、両方をいっしょに練習しているようなものです。うまく思いえがけるように練習を重ねると、何が要点かをうまくつかめるようになります。
ポイント
オートエンコーダは、入力を小さくまとめてから元に戻します。うまく復元しようと学ぶうちに、データの重要な特徴だけが、絞りこまれて残ります。
ここまでの要点
- オートエンコーダは、入力を小さくまとめ、そこから元の入力を復元するネットワークです。
- うまく復元しようと学ぶうちに、データの重要な特徴を学び取ります。
まずは全体像をつかめれば十分という人は、ここで区切って大丈夫です。「小さくまとめて元に戻す。その練習で特徴を学ぶ」と押さえられていれば、この先の深掘りに進む土台はできています。
発展
ここからは、内部の2つの部分、積み重ねての利用、そしてデータを生み出せる発展形までを順に見ます。
2. エンコーダ・ボトルネック・デコーダ
オートエンコーダは、大きく2つの部分からなります。
前半のエンコーダ(encoder)は、入力を受け取り、だんだん小さくまとめていきます。まとめた結果は、少ない数からなる、短い表現になります。この部分を潜在表現(せんざいひょうげん)と呼びます。潜在とは「表に現れず内側にひそむ」という意味で、入力の要点を内側にまとめた表現、という意味あいです。
後半のデコーダ(decoder)は、この短い潜在表現を受け取り、元の入力を復元しようとします。
エンコーダとデコーダの境目にある、いちばん細く絞りこまれた部分をボトルネックといいます。びんの首のように細くなっているようすを表す言葉です。ここで情報が絞られるからこそ、重要な特徴だけが通り、余計な情報は落とされます。
このしくみは、次元削減とも深く関わります。次元削減とは、多くの数で表されたデータをより少ない数で表し直すことです。オートエンコーダのボトルネックは、まさにこの次元削減を行っています。次元削減そのものは、クラスタリングと次元削減のレッスンでくわしく扱いました。ここでは、オートエンコーダがデータを少ない数にまとめるしくみを持つ、という点を押さえてください。
理解の確認
オートエンコーダは、入力を小さくまとめるエンコーダと、元に戻すデコーダからなります。境目のいちばん細い部分がボトルネックで、ここで重要な特徴が絞りこまれます。これは次元削減を行うしくみでもあります。
3. 積層オートエンコーダと、その使い道
オートエンコーダは、層を何段も深く積み重ねて作れます。層を深く積み重ねたオートエンコーダを積層オートエンコーダといいます。英語では stacked autoencoder(スタックド・オートエンコーダ)と表記します。深く積み重ねることで、より複雑な特徴を段階的にまとめられます。
積層オートエンコーダには、歴史的に重要な使い道がありました。事前学習への利用です。事前学習とは、目的の課題に取りかかる前に、別のやり方でネットワークをあらかじめ学ばせておくことです。ディープラーニングがまだ深く学習しにくかった時代に、オートエンコーダで各層を順に学ばせ、良い初期状態を作ってから本番の学習に移る、という工夫が使われました。事前学習の今の位置づけは、転移学習を学ぶレッスンでくわしく扱います。ここでは、積層オートエンコーダが、深い学習を助ける事前学習に使われた、という歴史を押さえてください。
理解の確認
積層オートエンコーダは、層を深く積み重ねたオートエンコーダです。ディープラーニングが深く学習しにくかった時代に、各層を順に学ばせて良い初期状態を作る、事前学習に使われました。
4. 変分オートエンコーダ (VAE):データを生み出す
ふつうのオートエンコーダは、入力を復元することが目的でした。これを発展させ、新しいデータを生み出せるようにしたのが、変分オートエンコーダ (VAE) です。VAE は、ブイエーイーと読み、英語では variational autoencoder(バリエーショナル・オートエンコーダ)と表記します。
ふつうのオートエンコーダは、入力ごとに潜在表現を1つの点として決めます。これに対し VAE は、潜在表現を1つの点ではなく、確率分布として表します。確率分布とは、値がどのあたりにどれくらいの確からしさで散らばるかを表したものです。VAE は、潜在の空間になめらかな広がりを持たせます。
この広がりがあるおかげで、学習した後に、潜在の空間から適当な点を選んでデコーダに通すと、学習データに似た、新しいデータを生み出せます。たとえば顔の画像で学習すれば、実在しない新しい顔を作れます。ふつうのオートエンコーダが「復元する」だけだったのに対し、VAE は「生み出せる」点が、大きな違いです。VAE は、データを生み出す生成モデルの、代表的な1つです。
ポイント
変分オートエンコーダ (VAE) は、潜在表現を確率分布として表します。この広がりのおかげで、潜在の空間から点を選ぶと、新しいデータを生み出せます。
理解の確認
変分オートエンコーダ (VAE) は、潜在表現を1つの点ではなく確率分布として表します。潜在の空間になめらかな広がりを持たせるため、そこから点を選んでデコーダに通すと、学習データに似た新しいデータを生み出せます。
5. VAE の亜種
VAE には、目的に応じたいくつかの亜種があります。代表的なものとして、VQ-VAE・info VAE・β-VAE が知られています。
β-VAE(ベータ・ブイエーイー)は、潜在表現の各成分が、それぞれ独立した分かりやすい意味を持つように調整したものです。たとえば1つの成分が顔の向き、別の成分が表情、というように、意味がきれいに分かれることをねらいます。潜在表現の性質を制御する強さをベータという数で加減します。
VQ-VAE(ブイキュー・ブイエーイー)は、潜在表現をなめらかに連続した値ではなく、とびとびの決まった記号の並びで表すものです。連続した値の代わりに、あらかじめ用意した見本の中から選ぶ形にします。画像や音声の生成で、質の高い結果を出すのに役立ちました。
info VAE(インフォ・ブイエーイー)は、潜在表現が入力の情報をよく保つように、学習のしかたを工夫したものです。
これらは、いずれも VAE の考え方を土台に、潜在表現の質や性質を高めるために形を変えた亜種です。細部よりも、VAE から派生した発展形であるという位置づけを押さえてください。
理解の確認
VQ-VAE・info VAE・β-VAE は、いずれも VAE の亜種です。β-VAE は潜在表現の各成分に分かりやすい意味を持たせ、VQ-VAE は潜在表現をとびとびの記号で表し、info VAE は情報をよく保つよう工夫します。
理解度の確認
説明できる項目にチェックを入れましょう。すべて確認できたら、完了ボタンで記録します。
分からなかった点・気になった点
読み込み中です。