アルファ碁の学習に使われたCNNも、ディープフェイクを実現しているGANも、自然言語処理などで活躍しているRNNもディープラーニングの一種である。
もちろん、これらはそれぞれネットワークの組み方が全く異なるので、十把一絡げにディープラーニングと呼んでまとめてしまうことに問題があるのは重々承知だが、それでもディープラーニングを万能と捉えるような考え方には反対である。
このシリーズは、 機械学習を使って株価を予測したい人に役立つヒント集のつもりで執筆している。「こうすると失敗する」といった例や「こういったアプローチで取り組むのは有効」 という例を示していくものである。
但し、今回は株価予測に限らず、機械学習に取り組みたい、もしくは利用を検討したい人も注目すべき内容であると考えている。
前回:人工知能で株価を予測したい人へのヒント集(4):ニュースフィードを画像として捉える
ノーフリーランチ定理
万能な手法というものがあれば、それは「あらゆる問題」に対して最適な手法ということになる。しかし、少し考えれば分かるように、ある問題に特化して考えられたアルゴリズムがあれば、そちらの方が性能が良くなるケースがあるというのは当然であり、その意味で万能なアルゴリズムは無い。これをノーフリーランチ定理と言う。
経済学畑の人も「うまい話は無い」という意味でノーフリーランチという言葉を聞いたことがあろうが、機械学習においても大雑把に見れば同様の意味で使われている。
嘗ては遺伝的アルゴリズムなどの汎用アルゴリズムに対して指摘された言葉であり、何でもかんでも遺伝的アルゴリズムで解決しようとする動きに制約をかけた。
最近またディープラーニングが同様の立場になりつつあるようである。もっとも、ディープラーニングの方が遺伝的アルゴリズムに比べれば平均的な性能は遥かに高いし、冒頭で指摘したようにCNNやRNNなどモデルの組み方は全く異なるので、ここでノーフリーランチ定理を出すことに疑問を呈する人もいるだろう。
「人工知能で株価を予測したい人へのヒント集」と銘打っていて何だが、筆者がこの記事で本当に対象としているのは「細かなディープラーニングの違いが分からない人」である。こうした人からすれば、個々の手法の違いが分からないので、現実の様々な問題がディープラーニングで片付けられているように見える。
ディープラーニングが上手くいくのは上手くいくまで続けるから(かもしれない)
ディープラーニングの「一種」であることは共通していても、個々のモデルは全く異なるものであり、実際には個別の問題に最適化されている。これを理解せずにディープラーニングを万能視することは非常に危険である上、流行りに飛びついてしまえばお金の無駄になってしまうかもしれない。
関連記事:「うちの会社に人工知能(AI)を導入したい」と思った時に読む記事
そもそも何故ディープラーニングがうまくいくかについては幾つか仮説があるが、断定されているわけではない。代表的な仮説に以下の3つがある。
- 複雑な関数を近似できるから
- コスト関数が凸に近いから
- 上手くいくまで続けるから
1に異論を唱える人はまずいないだろう。過学習をうまく回避しなければならないが、ネットワークを多層に組むことで複雑な事象を複雑な関数で近似できるということは確かである。
2は部分的には証明されている。ディープラーニングのコスト関数を描くと、大雑把に見ればお椀型のような凸関数の形状に近く、より誤差が低い方向に向かって収束していきやすいという可能性がある。
3は身も蓋もない仮説であるが、そう言わざるを得ない側面がある。「画像の場合はCNNがうまくいきやすい」といった傾向は見られるが、どのような画像の場合なら、畳み込み層やプーリング層はどれくらい重ねれば良いのか、インセプション層はどのように使えば良いのか、ストライド幅は、パディングはどうしようか、等人間が決めること(あるいは様々なパラメータを試して実験する)があまりにも多い。
こうした人間が決める値をハイパーパラメータと言うが、これの決め方は職人芸の域であり、「この場合はこうすれば良い」と広く支持されている理論は無い。
世の中に出てくるディープラーニングについての報告は「上手くいったものばかり」である。当然である。企業にしたって失敗したものを公表しても、デメリットがあってもメリットはまず無い。
実際に学習させる過程においては上手くいくまでやっているわけで、上手くいったものしか報告されない。ニュースだけを見ていれば「ディープラーニングの成功例で溢れている」が、失敗したものは世に出てこないだけである。これは生存バイアスの一種であるので注意が必要である。
他の手法も検討すべき
人工知能で株価を予測したくて本記事を閲覧している人のために、少し情報を付加しなければならないだろう。
執筆時点(2019年11月4日)なら、いきなりディープラーニングというよりかは、まずランダムフォレスト系のLightGBMを使ったり、遺伝的アルゴリズムで重要な特徴量を抽出するといった前処理を行うことが重要だろう。スタッキングによって新たに特徴量を作り出すことも良いかもしれない。
また、未だ発展途上である強化学習的な手法を取り入れることも重要だろう。特にトレーディングにおいては状態空間や行動空間、報酬系を定義しやすいので、強化学習と親和性が高い。その過程でDeep Q-Networkに到達して結局はディープラーニングを使うことになるかもしれないが、いきなりディープラーニングを採用する理由にはならない。
ディープラーニングはまともにやるとGPUやらRAMやらで非常にコストがかかる。新しい手法を生み出すつもりで取り組む必要があろう。
前回:人工知能で株価を予測したい人へのヒント集(4):ニュースフィードを画像として捉える
次回:人工知能で株価を予測したい人へのヒント集(6):未来人によるチート