構造に前提を埋める ── 畳み込みと再帰
第2章で、過学習の手当てとして「容量を下げる」を挙げました。ただし下げすぎれば今度は足りなくなる——両側から挟まれた、いかにも分の悪い話でした。
この章は第3の道です。容量をただ減らすのではなく、正しい方向にだけ減らす。そのために、データについて知っていることを構造そのものに埋め込みます。第1章で「第5章から、扱うデータの形に応じてどんな前提を構造に埋めるかが始まる」と書いたのは、ここのことです。
1. 全結合は「何も仮定しない」ことの代償を払っている
の画像を128個の特徴に写す全結合層は、重みが 個(+バイアス128)。
この層は画素の並び方を一切知りません。画像をバラバラに並べ替えてから学習しても、同じ精度に達します。並びに意味があるという情報が、構造のどこにも入っていないからです。
代償は2つ出ます。
- パラメータが多い。 入力が になると 個(→128のまま)。
- ずらした画像が別物になる。 猫が1画素右にいるだけで、入ってくる数の並びは全部違います。対応するには、ずれた例をデータで覚えるしかありません。
2. 畳み込み ── 3つの前提を同時に入れる
同じ重みの小さな窓を、全位置に滑らせます。1次元で書くと
ここで入っている前提は3つです。
- 局所性:遠く離れた画素は直接には関係しない(窓の外は見ない)
- 重み共有:同じ特徴は画像のどこにあっても同じ重みで検出する
- 平行移動の同等性:入力がずれれば、出力も同じだけずれる
パラメータ数が変わります。
| 層 | 重み+バイアス |
|---|---|
| 全結合 | 100,480 |
| 畳み込み ch | 320 |
| 畳み込み ch | 832 |
約314分の1。 しかも畳み込みの数は入力の大きさに依りません。 でも でも 320 のままです(全結合は 、 と増えます)。
窓は小さくても、重ねれば届く範囲は広がります。 を 層重ねたときに1つの出力が見ている範囲(受容野)は 画素。
| 層数 | 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| 受容野(1辺) | 3 | 5 | 9 | 17 |
1層ごとに両側へ1画素ずつ。 深さは、小さい窓のまま広い範囲を見るための仕掛けでもあります。
3. 「ずれても同じ」は、どこまで本当か
式(2)は本当に成り立つのか、2通りの順番で計算して比べます。A: ずらしてから通す/B: 通してからずらす。
実測しました(長さ32・カーネル )。
| ずらし量 | 山の位置 | 畳み込み(巻き戻し) | 畳み込み(0で埋める) | 全結合 |
|---|---|---|---|---|
| 1 | 11〜 | 0 | 0 | 0.8583 |
| 7 | 17〜 | 0 | 0 | 0.6100 |
| 18 | 28〜 | 0 | 0.1500 | — |
| 22 | 0〜 | 0 | 0.0750 | — |
| 25 | 3〜 | 0 | 0 | — |
(出力そのものの大きさは 0.5155 です。全結合の差 0.86 は「まったく別物」の意味。)
巻き戻しなら常に厳密に0、0で埋めると山が端をまたぐ回だけ崩れます。同等性は「畳み込みだから成り立つ」のではなく、端の扱いまで決めて初めて成り立つ性質でした。実際の画像モデルは0埋めが普通なので、端の近くでは同等性が崩れている——教科書の図が隠しがちな事実です。
4. 系列 ── 時間の方向に重みを共有する
長さの変わる系列には、画像とは別の前提が要ります。どの時刻でも同じ規則が働く。これを重み共有で書くと
は時刻によらず同じ1枚です。これで長さがいくつでも扱えます。
代わりに、第3章で見た積が時間の方向に現れます。
層を重ねたときと同じ形ですが、今度は同じ が 回掛かります。第0部の第1章の式(6)()がそのまま効いて、固有値の 乗が出ます。
活性化を外した線形の場合に測ると、きれいに が出ます( は の最大固有値の絶対値)。
| 10 | 0.761 | 4.71 | |
| 50 | 0.345 | ||
| 100 | 0.354 |
と同じ桁です。 なら消え、 なら爆発する——線形ならそのとおりです。
ところが を入れると変わります。
| での 勾配 | の平均 | |
|---|---|---|
| 0.8 | 0.966 | |
| 1.0 | 0.927 | |
| 1.2 | 0.834 | |
| 2.0 | 0.488 |
では爆発しません。 を上げると が大きくなり、 が落ちて打ち消すからです。第3章の結論——効くのは(重みの大きさ)×(活性化の傾き)の積——が、ここでも同じ形で出ています。
5. ゲート ── 掛け算で「通す量」を決める
積が 回続くのが問題なら、積の中身を1に近づけられるようにすればよい。そのために、通す量そのものを学習します。
(忘却ゲート)と (入力ゲート)は0〜1の値で、 はアダマール積です(第0部の第1章で「アダマール積が主役になる場所」として挙げた2つめがこれ)。
この経路の勾配は
が1回も出てきません。 重み行列の積ではなく、ゲートの値の積だけ。 が1に近ければ、 が大きくても残ります。
| 0.90 | 0.122 | |
| 0.95 | 0.358 | |
| 0.99 | 0.818 | 0.366 |
| 1.00 | 1.000 | 1.000 |
素の RNN は でも で でした。 なら 0.366——3千倍以上残っています。
よくある誤解: 「畳み込みは画像用、再帰は系列用の道具である」
道具の名前ではなく、どの前提を埋めたかで見ると違う景色になります。
| 構造 | 埋めた前提 | 共有している軸 |
|---|---|---|
| 全結合 | なし | (共有しない) |
| 畳み込み | 近くだけが関係する/位置が変わっても同じ規則 | 空間 |
| 再帰 | 時刻が変わっても同じ規則 | 時間 |
| 注意機構 | どこを見るかを入力ごとに決める | (重みは共有、結び付きは可変) |
畳み込みは1次元にすれば音声やテキストに使えますし(実際に使われています)、再帰は画像の走査にも使えます。選ぶ基準はデータの種類ではなく、その前提が当たっているかどうかです。
当たっていない前提を埋めると、容量を減らしたぶんがそのまま損になります。表形式のデータ(列の並びに意味がない)に畳み込みを当てるのが典型で、列を並べ替えたら別の答えが出るという、埋めたはずの前提と正反対の性質が出ます。
演習
答えは閉じてあります。手を動かしてから開いてください。
演習1. 入力 の画像を扱います。(a) 全結合で256個の特徴に写すときのパラメータ数。(b) ch の畳み込みでは。(c) 入力を にしたとき、それぞれどうなりますか。
答えを見る
(a) 個。
(b) 個。 約410分の1です。
(c) 全結合は 個(16倍)。畳み込みは 2,560 のまま。 畳み込みのパラメータ数は窓の大きさとチャネル数だけで決まり、入力の大きさに依りません。これは「同じ重みを全位置で使い回す」ことの直接の帰結です。
演習2. の畳み込みを重ねます。(a) 受容野を31画素にするには何層要りますか。(b) なら。(c) 大きい窓を1層使うのと、小さい窓を重ねるのと、パラメータ数はどちらが少ないですか(1チャネルとして)。
答えを見る
(a) 15層。 より 。
(b) 受容野は なので → 8層( 画素で超える)。
(c) 小さい窓を重ねるほうが少ない。 受容野9画素をつくるのに、 を1層なら81個、 を4層なら 個。しかも層の間に活性化が入るぶん、同じ受容野でより複雑な形が書けます。これが ばかり使われる理由です(ただし層が増えるので、第3章の積の問題は増えます)。
演習3. 長さ200の系列を素の RNN で扱います。 の最大固有値の絶対値は 0.9 でした。(a) 勾配はおおよそ何倍になりますか(線形として)。(b) ゲートで を保てたら。(c) (b) が可能なのはなぜですか。
答えを見る
(a) 。 事実上ゼロで、系列の先頭は末尾の損失に影響できません。
(b) 。 3分の1強が残ります。
(c) 掛かるものが変わったから。 素の RNN では が掛かり、 は系列全体で1枚しかないので、どの時刻にも同じ縮小率が強制されます。ゲートの経路は だけが掛かり、 は時刻ごと・成分ごとに入力から決まるので、「ここは覚えておく()」「ここは忘れる()」を使い分けられます。保つべき所だけ1に近づけられるのが違いです。
この章で言っていないこと
- LSTM/GRU の完全な式は書いていません。 本文の式(5)はセル状態の経路だけを取り出したもので、実際には出力ゲートや の作り方が付きます。記事側に譲りました。
- プーリング・ストライド・ダイレーションは扱っていません。受容野の計算は stride 1 の場合だけです。プーリングは平行移動不変性(同等性ではない)を足す仕掛けで、別の話になります。
- 注意機構は表で1行触れただけです。「どこを見るかを入力ごとに決める」構造で、第6章以降の主題になります。
- RNN の実測は幅64・固定の初期値での1回の測定です。 と の掛け合わせという形は変わりませんが、値は設定で変わります。
- 本文の数値はすべて実際に計算して確かめています(パラメータ数、受容野、2通りの順番の差(巻き戻し/0埋め/全結合)、線形RNNの と の一致、 入りでの勾配と の平均、ゲートの )。
コメント
コメントにはログインが必要です