Deep Neural Network (DNN)は画像認識問題に始まり様々なメディアの認識生成問題へと応用されている。その理由はDNNがもつ汎用性と実装の簡易さにある。しかし一方でDNNを使いこなし、スクラッチから学習することは一筋縄にいかない。なぜならDNNの利用にはある種の職人芸が必要だからだ。

ここでいう職人芸とは実際に対象(DNN)を操作し得た体験を積み重ねることで得られる技術のことだ。表層的な恩恵以上の能力をDNNを通して得ようとするとこの職人芸が必要になってしまう。数多く行われているDNN実験でも、条件が異なるはずの論文の実験設定をとりあえず踏襲したり、「◯◯◯には〜が良いらしい」という意見を含めた含めた条件で実験が行われることがあるのが実際ではないだろうか。

なぜ職人芸が必要なのか。端的に言えば「DNNの仕組みがわかっていないこと」なのだろう。DNNの仕組みを数理的に理解しようとする研究は進められているが、ここでは工学的な道具としての側面から考えてみよう。私が考えるDNNに職人芸が必要とされる理由は大きく分けて4つある:

  1. データ依存であること
  2. ハイパーパラーメータの相互的な関係がわからないこと
  3. 振る舞いが実装に依存すること
  4. ニューラルネットワークの「寛容さ」

1つめはDNNが機械学習であることに起因する。基本的にはDNNは問題に特化したモデルを作る必要があり、そのためのデータが必要だ。つまりDNNモデルの振る舞いは訓練データの分布に依存する。解きたい問題ごとにデータが変わるので都度調整が必要なわけだ。訓練データの正規化や質のあり方に関する議論/研究は行われている。しかしデータ処理の方法を超えてデータ獲得の制約(例えば集められるデータの数とか)によってどうしても分布は偏ってしまう。

2つめは代表的な機械学習の難しさなのかもしれない。勾配法の学習率やモデルの構造など、DNNを訓練/テストする「正しい」条件はたくさんあり、その自由度はモデルや学習方法が複雑になるほど多くなる傾向にある。このようなパラメータの組み合わせを網羅的に検証するには1回の試行のコストがかかりすぎる。そのためベイズ最適化やヒューリスティックによるメタ学習の方法がたまに使われる。しかしDNNの運用には計算コストが多くかかるので呑気に探索をする余裕がない場合も多い。

3つめ。同じ論文を追実装してもまったく実験結果が異なるのはDNNではよくあることだ。論文の数式を満たすが互いに異なる振る舞いをする実装が可能なことが原因だ。逆に言えば論文の記述の問題とも言えるかもしれない。浮動小数点の丸め誤差にはじまり、論文の紙面では些細でも実際の計算には重大なポイントが潜んでいることが多々ある。おそらくこの現象は1、2の理由も深く絡んでいる。実装ごとに実験条件が微妙に異なっていて、その「微妙な違い」が何万回もの最適化ステップの結果大きな違いを生み出している可能性は高い。この3つ目の要因は強化学習のようなオンライン学習では特に顕著のように思う。オンライン学習では進捗具合に応じて探索して得られる訓練データが変わるため、条件の差異は収束結果に累積的に波及する。最近では論文誌に実装の公開を奨励するものもある。

最後の理由はDNNの良いところでもあり、最も辛いところだろう。「何か間違っているかもしれないが、なんとなくそれっぽく動く」というやつだ。つまりDNN(というかニューラルネットワーク)が多少の最適化手法の間違いでもその汎化能力で吸収しまうことがある。少しの間違いにも不寛容ですぐに悪い振る舞いを示すならすぐに失敗であることがわかる。しかしそうでない場合には潜在的な問題やミスに気づくのが難しい。不思議なことに、なんどもこうした失敗を繰り返していくに連れて疑うべき点をあぶり出す方法論が染み付いてくる。人間が逆にDNNに適応しているのだ。

ここまでなぜDNNには職人芸が必要なのかを見てきた。これらの要因の一部はこれからの研究によって解消されるかもしれない。しかしまだまだこれからという印象だ。つまるところ私たちはDNNという広大な未知の領域の一部を開拓しどうにか手懐けているに過ぎない。職人芸は言語化されていない技術として捉えることもできる。現にパラメータ探索の研究はそれに当たるだろう。まだまだDNNの振る舞いを制御するための研究はたくさんの可能性がある。