E資格ガチ攻略:WaveNet & PixelCNN
〜自己回帰モデルの「サイズ合わせ」と「ギミック」を瞬殺する〜
今回は、WaveNetとPixelCNNについて勉強しましょう。ぶっちゃけ、これらは「しりとり画像・音声版」だと思えば余裕です。試験に出るポイントを俗語マシマシで一気に畳み込みます。
1. 基本思想:自己回帰(Autoregressive)
基本はこれ:「過去の自分を見て、次を決める」。未来のデータは見ない。
これは同時確率分布の分解で、次のように表されます:
p(x) = Π p(xi | x1, ..., xi-1)
講師:この「Π(パイ)」は掛け算の合図!「これまでのデータを全部ヒントにして次を決める」って意味。ちなみにΣが出てきたらlogを取った後(対数尤度)だから注意な!
2. PixelCNN(画像生成のヤベー奴)
画像を1ピクセルずつ生成する自己回帰モデル。CNNの並列性とRNNの表現力のいいとこ取り。スピードが上がり、画像が綺麗になったよ。
① マスク付き畳み込み
- 目的: 未来のピクセル(右・下)を絶対に見ないため
- マスクA: 最初の層。中心ピクセルすら見ない完全過去依存+RGBチャネル依存も遮断
- マスクB: 2層目以降。自分の情報はOK+チャネル間依存も許可
② Blind Spot(死角)と2スタック構造
通常のマスク付き畳み込みでは、情報が斜め方向に伝播しないため、右上が見えない「死角」が生まれる。
これを解決するのが:
- 垂直スタック: 上方向の情報を処理
- 水平スタック: 左方向の情報を処理
→ この2つを組み合わせて死角ゼロにするのがGated PixelCNN
3. WaveNet(音声生成の伝説)
生の音声波形を直接生成するモデル。PixelCNNの1次元版。
試験に出る3大ギミック
- 因果的畳み込み: 未来の音を見ない(自己回帰制約)
- 膨張畳み込み: 間隔を空けて受容野を指数的に拡大
- μ-law: 非線形圧縮 → 256段階量子化 → Softmaxで分類
4. 【必殺】logの使い分けパズル
- p(x): 掛け算(Π)→ アンダーフロー注意
- log p(x): 足し算(Σ)→ 計算安定
- -log p(x): 損失関数(最小化)
「未来を見るな、依存関係を制御しろ!」
これさえ守れば、WaveNetとPixelCNNは攻略完了。