マンガ「EPOCH — 時代の前夜」Arc 2(ディープラーニング革命 1991-2017)の統合解説。
所要時間: 約14分(読み物12分 + 確認問題2分)
Arc 1 で、私たちはニューラルネットの基本を一通り手に入れた。
パーセプトロン → 多層ニューラルネット → 誤差逆伝播法。 そして過学習との戦い、正則化、評価指標。
道具は揃っている。理屈のうえでは、層を深く重ねるほど複雑な概念を表現できるはずだった。
ところが 2000 年代前半、その「はず」は現実になっていなかった。 3 層を超えて深くすると、むしろ精度が落ちる。 ニューラルネットは学会の片隅に追いやられ、資金も人も離れていった。
第二次 AI ブームのあとに来た、長い冬である。
この章は、その冬がどう明けたかの話だ。
Arc 1 を読んでいない読者のために、ここで道具をひととおり組み立て直しておく。 本章の「深くすると学習できない」という話は、この手続きのどこが壊れるかの話だからだ。
何を手がかりにするかで、機械学習は大きく三つに分かれる。
| 手がかり | 何をする | この本での例 | |
|---|---|---|---|
| 教師あり学習 | 正解ラベル | 入力から正解を当てる | 画像分類・翻訳・音声認識 |
| 教師なし学習 | 無し(データの形だけ) | 似たもの同士を寄せる・構造を見つける | この章の事前学習 |
| 強化学習 | 遅れて届く報酬 | 試して、良かった行動を強める | Scene 7 の AlphaGo |
Arc 2 で扱うものの多くは教師あり学習だ。 だがこの章の突破口になったのは、正解を使わない学習のほうだった。
入力に重みを掛けて足し、閾値を超えたら 1 を出す。これが計算点 1 個の全部だ。
Arc 1 では「合計が閾値 $\theta$ を超えたら」と書いた。ここでは $b = -\theta$ と置き直して、 バイアス $b$ を「つねに 1 を入れる入力」への重みとして式に畳み込んである。 同じことを言っているが、こう書くと式が 1 本にまとまり、以後バイアスも「重み」の一種として まとめて扱える。
ただしこの 1 個では、入力空間を直線 1 本でしか分けられない。 XOR(排他的論理和)のように直線で分けられない配置は、どう重みを動かしても解けない。 これが Arc 1 で AI を最初の冬へ送った壁だった。
計算点を並べて層にし、層を重ねる。第 $m$ 層の $j$ 番目から $i$ 番目へ向かう重みを $w^{(m)}_{ij}$ と書く。
層を重ねれば複雑な構造をいくらでも作れる——ように見えるが、ここに落とし穴がある。 1 次式を何段合成しても 1 次式にしかならない。何層積んでも、引けるのは直線 1 本だけだ。
そこで、各層の出力に非線形な関数をはさむ。 つまり各層は「前の層の値に重みを掛けて足す」→「その和を活性化関数に通す」の 2 段で、 出てきた値がその層の値になる。これを層の数だけ繰り返して、入力から出力へ届く。
| 関数 | 式 | 出力域 | 微分の最大値 |
|---|---|---|---|
| シグモイド | $1/(1+e^{-x})$ | 0〜1 | 0.25 |
| tanh | $\tanh x$ | −1〜1 | 1.0 |
| ReLU | $\max(0, x)$ | 0〜∞ | 1.0(x>0) |
非線形をはさんだ瞬間、曲がった境界が引けるようになり、XOR も解ける。 2000 年代の主流はシグモイドだった。その「微分の最大値 0.25」が、この章の主題になる。
出力 $y$ と 正解 $\hat{y}$ の差を測り、それを小さくするように重みを動かす。
測り方(損失関数)は二乗誤差なら $L=\frac{1}{2}\sum_k (y_k-\hat{y}_k)^2$。
重み 1 個を動かしたとき $L$ がどう動くかは、連鎖律で分解できる。
$$\frac{\partial L}{\partial w}=\frac{\partial L}{\partial y}\cdot\frac{\partial y}{\partial w}$$
あとは坂を下る方向へ、学習率 $\eta$ の歩幅で動かすだけだ。
w ← w − η ∂L/∂w これを出口側の層から入口側へ、順に繰り返す
出口で測った 1 個の誤差が、つなぎ目の重みに応じて分かれながら手前の層へ戻っていく。 線形な層なら、手前の層に届く量は「そのつなぎ目の重み × 出口でのズレ」になる。
マンガ Scene 1 で黎明が「ズレを逆向きにたどる」と言っていたのが、この計算だ。 あの場面でニューラルネットの上を右から左へ戻っていった矢印は、一本ずつがこの掛け算にあたる。 次章の勾配消失は、この掛け算に活性化関数の微分がもう 1 つ掛かることで起きる。
では、境界を動かして XOR の壁にぶつかり、活性化関数を ON/OFF して直線が曲がる瞬間を見て、 逆伝播の 1 ステップを数字で追える。
誤差逆伝播法は、出口で測った誤差を入口へ向かって逆向きに伝え、 途中の重みを少しずつ直していく手続きだった。
問題は、その「逆向きに伝える」ときに何が起きるかにある。
誤差を1層戻すたびに、活性化関数の微分が掛け算される。
シグモイド関数の微分は、最大でも 0.25。
5層戻ると 0.25^5 ≒ 0.001
10層戻ると 0.25^10 ≒ 0.00000095
→ 入口側の層には、ほとんど何も届かない。
これが勾配消失問題(vanishing gradient problem)だ。
深い層の入口側は、学習が始まってもほぼ初期値のまま動かない。 つまり「深いネットワークを作った」のではなく、 「浅いネットワークの手前に、ランダムなゴミが積んである」状態になる。
しかも当時は、そのランダムな初期値から始めるしかなかった。 出発点が悪ければ、勾配降下法は近くの悪い谷(局所解)に落ちて出てこられない。
ここで、当時の主流だった手法と比べてみるとわかりやすい。
| サポートベクターマシン (SVM) | 深いニューラルネット | |
|---|---|---|
| 理論 | 最適解が保証される(凸最適化) | 局所解に落ちる。保証なし |
| データ量 | 少なくてもよく効く | 大量に要る |
| 特徴量 | 人間が設計する | 自動で学習する(はずだった) |
| 当時の評価 | 手堅い本命 | 動かない挑戦者 |
SVM は「解が一意に決まる」という強さを持っていた。 対する深層ニューラルネットは、動く保証がない。 研究者が SVM を選ぶのは、当時としてはまったく合理的な判断だった。
だから問題はこう立てられる。
ランダムでない、「まともな初期値」を先に手に入れられないか?
Q: 正解ラベルを使わずに、ネットワークの重みを「意味のある値」に 近づけることはできるだろうか? 手がかりは、入力データそのものしかない。
→ 考えたら次へ。
2006 年、トロント大学のジェフリー・ヒントンらが出した答えが 事前学習(pre-training)だ。
発想はこうだ。一気に全体を学習させるのをやめる。
従来: [入力]→[層1]→[層2]→[層3]→[出力] を丸ごと逆伝播
→ 誤差が層1まで届かない
事前学習:
① まず [入力]→[層1] だけを、正解ラベル無しで学習
② 次に [層1の出力]→[層2] だけを、同じく学習
③ 同様に [層2の出力]→[層3]
④ 最後に全体を、正解ラベル付きで微調整 (ファインチューニング)
各層を 1 枚ずつ、その層に流れてくるデータだけを頼りに学習する。 逆伝播が長い距離を旅する必要がないので、勾配は消えない。
正解ラベルが無いのに、何を目指して重みを動かすのか。 答えは「入力を、自分で復元できるようになれ」である。
オートエンコーダ(自己符号化器)がその代表だ。
入力 x →→ [符号化] →→ h →→ [復号化] →→ x'
(784次元) (100次元) (784次元)
目標: x' が x に一致すること。正解ラベルは要らない。
100次元しか通れない細い通路を通して元に戻せるなら、
その 100 次元 h は「x の本質を圧縮したもの」になっているはずだ。
この h が、次の層への入力になる。 層を重ねたものを積層オートエンコーダ(stacked autoencoder)と呼ぶ。
ヒントンらがこのとき使ったもう一つの部品が 制限付きボルツマンマシン(RBM: Restricted Boltzmann Machine)である。 可視層と隠れ層の 2 層だけからなり、同じ層の中では結合しない(=制限付き)。 これを積み上げたネットワークが深層信念ネットワーク(DBN: Deep Belief Network)だ。
[隠れ層] ○ ○ ○ ○ 同じ層の中は結合しない
│╳│╳│╳│ (=「制限付き」の意味)
[可視層] ○ ○ ○ ○ ○
RBM もオートエンコーダも、やっていることの核は同じ—— 正解ラベル無しで、入力データの構造そのものを写し取ることだ。
事前学習で得られた重みは、まだ答えを出せない。 これは良い初期値にすぎない。
最後に出力層を付け、正解ラベルを使って全体を誤差逆伝播で微調整する。 これがファインチューニング(fine-tuning)である。
事前学習 : 教師なし。データの構造を写す。→ 良い初期値
ファインチューニング : 教師あり。目的のタスクに合わせる。→ 完成
ランダムな出発点ではなく、データの構造をすでに反映した出発点から始める。 これだけで、深いネットワークが奥まで学習できるようになった。
2006 年、ヒントンらは事前学習を用いた深いネットワークで、 手書き数字認識をはじめとする課題で当時の最高水準を更新した。 「深い構造は学習できない」という前提が崩れた瞬間である。
この前後から、深い層を持つニューラルネットの手法群は ディープラーニング(深層学習)と呼ばれるようになる。
ひとこと注: 「ディープラーニング」という語そのものは 2006 年の発明ではなく、 それ以前から別の文脈で使われていた。2006 年が転換点なのは、 深い構造が実際に学習できると示されたからだ。
ここで、正直に書いておくべきことがある。
事前学習は、現在ではほとんど使われていない。
2006年: 事前学習でなければ深いネットは学習できなかった
↓
2010年代: ReLU、より良い重み初期化 (Xavier / He)、
バッチ正規化、そして大量のデータと GPU
↓
現在: ランダム初期値から直接学習できる。事前学習の出番は消えた
では 2006 年の仕事は無駄だったのか。まったく逆だ。
事前学習は「深いネットワークには意味がある」ことを証明した。 その証明があったから、人と金が戻り、ReLU も GPU も ImageNet も追いかけてきた。 橋を架けたあとで、その橋が使われなくなることはある。 だが、渡った者がいなければ向こう岸には誰も行けなかった。
ここまでの Concept Map:
深いネットワークは学習できるようになった。 だが「学習できる」ことと「役に立つ」ことは違う。
機械が最初に実用の水準へ届いた分野——それは画像だった。
しかし Arc 1 の全結合ニューラルネットは、画像を「ただの数字の並び」としてしか 受け取れない。重みの数が爆発するうえに、猫が写る位置がずれただけで別物に見えてしまう。
人間の視覚はそんな数え方をしていない。 では、どういう仕組みなら「どこにあっても猫は猫」と分かるのか?
→ 次章: 「機械が見た — CNN と畳み込みの魔法」
試読はここまでです。第 2 章から先は、マンガ本編 8 話・巻末解説 8 章・インタラクティブ図解を収めた製品版でお読みいただけます。
製品版について →