モデルの表現力を十分複雑にしてから、最後に無駄を省き最適にする
読んだもの
Deep Clustered Convolutional Kernelsという論文を読む。
アブストとイントロのみ理解する。
アブスト
Deep Neural Networks(DNN)はネットワーク構造などのパラメータ設定に関してトライアンドエラーを繰り返す必要がありコストが高くなる。
そしてそれらは最終的な性能を決定する重要な要素である。
本手法では自動でそれらを決定する手法を提案する。
この手法では、訓練時においてモデルの複雑さを少しずつ上げていき、かつモデルの冗長性も選択的に除去していく。
CNNにおいては、この手法は逐次的に分離、統合クラスとリングを畳み込みカーネルに対して確率的勾配法に基づき行う。
イントロ
DNNは性能が良くて注目されている。
しかしその複雑さゆえにDNNのモデル構造選択は難しく、専門家による慎重に選ばれる必要がある。
そしてこのモデル選択によってDNNの性能が大きく左右されている。
このモデル構造最適化問題は、組合せ爆発しており非常に解くのが難しいが、従来、層数の少ない簡単なモデルに関しては戦略が編み出されており、本論ではそれを参考にしている。
例えば音声認識などで使われる混合ガウスをベースにした隠れマルコフモデルでは、split/mergeアルゴリズムを用いる事で各コンポーネント毎にHMMが持つ状態の複雑さを独立に変動させて性能向上を行っている。
情報理論においても最小記述長(Minimum description length, MDL)を指標にする事でモデル選択を行っている。
しかしながら、これらの手法は全て浅いネットワーク(隠れ層の数が少ない)に対するものでありDNNへの応用はなかった。
DNNに関して確認出来るものは、ヒューリスティックなものや、ランダム最適化、あるいはベイズ最適化などである。
これらの手法は、しかしながら、DNNの構造パラメータの一部のもの最適化であり、それ以外のDNNのネットワーク構造(層数、各層のフィルタ数、カーネルサイズ等)はまだトライアンドエラーに頼るものである。
本論ではターゲットを畳み込みNNにしぼり、それらの各層の複雑さを最適化する手法を提案する。
すなわち、本論の手法では、従来と違い、モデルの複雑さは訓練時に逐次的に最適化される(確率的勾配法を用いる)。
その他
結局、提案する手法はDeep Clustered Convolutional Kernels(DCCKs)と呼ばれる。
DCCKsでは、split/merge法を訓練時に適用する。
これは、最初にデータから新たな変動性(パターン)が観測されるにつれ、モデルの表現力(複雑さ)を上げていく方向に最適化していく。
そして最終的にはモデルの表現性を逆に下げていき、モデルの冗長性を最小化する。
この手法は音声認識等で使われるGaussian kernel HMMsで用いられるsplit/merge法や、オッカムの剃刀の哲学にもとづいている。
所感
baysian optimizationてモデル構造含め全部ハイパーパラメータ最適化出来ると思ってたけどやっぱ違うのか。