たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

新時代の古典: WaveNet

今やニューラルボコーダは当たり前で、用途に合わせて多種多様.
その原点、WaveNet.
今ではWaveNetそのものは使われないが、その根本的アイデアは当たり前レベルに普及し、モジュールも各所で使われている.
いわば新古典であるWaveNetをいま振り返る.

Summary

WaveNetは音声波形生成タスクを以下の組み合わせで解決.

  • 生成モデル: 8bit μ-law softmaxからのサンプリング
  • 自己回帰: 出力 xt-1ã‚’ xt 生成の入力へ
  • CausalConv: 自己回帰入力をConvで処理
  • DilatedConv: 疎なConvで広い受容野
  • Gated Activation Unit: ReLUに代わるゲート付き活性化関数
  • Residual connection: 効率のいい学習
  • Skip connection: 効率のいい学習

根本的には、広い自己回帰入力を取り込めば高音質の音声波形生成モデルができる、に尽きる.
アイデアとしてはシンプル過ぎるくらいだがこれを実現しちゃったため、世界は Before WaveNet と After WaveNet で激変した.
公式デモ.

生成モデル

N bit の確率分布としてモデル化し最尤推定で学習.
一般的な音声の16-bitだと216通りでsoftmaxが爆発するため、μ-lawアルゴリズムを利用.

自己回帰

生成モデルからサンプリングした値を自己回帰、それだけ.

CausalConv

直角三角形の受容野.
自己回帰するため、未来方向の情報をマスク無しで利用できると情報がleakしてしまう(無変換の学習で精度100%出る).
Convカーネルを左右非対称にする(= t+k部を0マスクする)ことでこれに対応.

DilatedConv

デカいkernelを円形歯抜けにするConv.
計算量に対する受容野の大きさが改善する (Dilation factorを上げるほど疎で広い).

なんとなくstrideを彷彿とさせて次元が縮みそうだが、stride=1にすればちゃんと入出力次元が一致する(0が多い普通のデカいkernel使うのと等価なので). poolingやstrided convだと次元が縮む.

gated activation unit

Gated Activation Unit は活性化関数/ユニットの一種であり(解説)、音声ドメインでの有用性からReLUの代替として導入された1.
今でもConv系の処理ではしばしば登場.

Residual Connection

WaveNetは自己回帰なので時間方向の次元圧縮が無い. なのでResidual Connectionを採用しやすい.
受容野を広げるたびに層が深くなるので深層学習のベストプラクティスとして採用2.
ResBlock内にDilatedConv-GAU-pointwiseConvが入る.

Skip Connection

各層の出力分岐をskip connectionで最終層に直結.
Residual Connectionと同様の理由で採用.

論文には無いが、層が積みあがって得られる広いcontextとskip connectionからくる局所情報(≈自己回帰)の両方から最終出力を決めたい(≈U-Net)、というお気持ちもあると思ってる.

まとめ

上記のように、広い受容野を拾って効率よく学習できるようにしたうえで自己回帰をして分布モデル化してるだけ.
これだけだが、世界を変えた.

Original paper

Paper

@misc{1609.03499,
Author = {Aaron van den Oord and Sander Dieleman and Heiga Zen and Karen Simonyan and Oriol Vinyals and Alex Graves and Nal Kalchbrenner and Andrew Senior and Koray Kavukcuoglu},
Title = {WaveNet: A Generative Model for Raw Audio},
Year = {2016},
Eprint = {arXiv:1609.03499},
}

  1. “In our initial experiments, we observed that this non-linearity worked significantly better than the rectified linear activation function (Nair & Hinton, 2010) for modeling audio signals.” Oord, et al. (2016). WaveNet: A Generative Model for Raw Audio.

  2. “residual … connections are used … to speed up convergence and enable training of much deeper models.” Oord (2016).