機械学習 は、センサーデータやデータベースなどのデータに基づいて、コンピュータが時間とともにパフォーマンスを向上させるためのアルゴリズムの設計と開発に関わる人工知能の一分野である。 Wikipedia

10年前、機械学習企業は実質的に存在しなかったか、せいぜい僅かに存在していただけだった。 当時、実際に機能しビジネス価値を提供するアルゴリズムがそれほど多くなかったことが主な理由である。例えば、自動翻訳は今なおほとんど機能しておらず、ほとんどの企業で使える状態には程遠い。

Lokadは広範な機械学習分野に属し、特に統計的学習に関心を持っている。個人的には、私はほぼ10年間機械学習分野で働いてきたが、この分野が典型的な パッケージソフトウェアの世界 と比べていかに根本的に異なるかを見るたびに驚かされる。 機械学習は独自のソフトウェア世界である。

人工知能と見なされた分野での科学的進歩は、他の多くのソフトウェア分野と比べ非常に遅かった。しかし、あまり知られていない事実は、科学的進歩が着実に進んでいるということである。そして現在、成功している機械学習企業はかなり存在している:

  • スマートなスパムフィルター:すごいことに、akismetは私のブログで71,000件以上のスパムコメントを捕捉し、ほとんど誤検知がなかった。
  • 音声認識:Dragon Dictateは、ユーザー調整を数分行っただけでかなり印象的なパフォーマンスを発揮している。
  • 手書き認識や数式認識までもがWindows 7に組み込まれている。

機械学習は主流となった。

1. 製品は変わるがユーザーインターフェースはそのまま

ほとんどのソフトウェア企業にとって、顧客の目に新しい何かを提供することが定期収入を得る唯一の方法である。SaaSはこの財務面を徐々に変えつつあるが、それでもほとんどのSaaS製品では、進化はユーザーインターフェースに非常に具体的な変化を伴う

逆に、機械学習における開発は通常、新機能の追加を意味しない。進化の大部分は 内部深く で起こり、表面上の変化はほとんどまたは全く見られない。おそらくすべての機械学習製品の中で最も成功しているGoogle検索は、非常にシンプルであり、これが10年以上続いている。最近、ユーザーの好みに基づくランキングのカスタマイズが追加されたが、この変更はローンチからほぼ10年後となり、大多数のユーザーには依然として認識されていないだろう。

しかし、これはGoogleの人々が過去10年間何もしていなかったという意味ではない。実際は正反対で、Googleのチームは非常に巧妙な手法を用いるウェブスパマーとの戦いにおいて、技術を猛烈に改善し続けている。

2. パフォーマンスにおける10桁の差

ソフトウェアのパフォーマンスに関して言えば、通常のパッケージソフトウェアの操作は100ms以内に完了する。例えば、最適化されたアプリケーションでは5ms、最も遅いものであれば500msと、ウェブページアプリケーションを生成するためにサーバー側で必要とされる通常の計算時間はこの範囲にあると推測している。それ以上に遅いと、ユーザーはあなたのウェブサイトの訪問を断念してしまうだろう。検証はほとんど不可能だが、このパフォーマンス範囲はウェブアプリケーションの99%に当てはまると考えられる。

しかし、機械学習に関しては、典型的な計算コストはミリ秒から週間に及ぶ10桁以上の幅がある。

現代では、2GhzのCPU月額料金は10ドルまで下がっており、今後5年以内には1ドル未満になると予想している。また、CPU1か月分の計算は、大規模な並列処理によって数時間の実時間に圧縮できる。ほとんどの機械学習アルゴリズムでは、精度 を向上させるために、より多くのCPUを投入することが可能である。

したがって、1か月のCPU投資(10ドル)で精度を1%向上させることは大きな利益をもたらす可能性があるが、そのような考え方は、機械学習以外のほとんどすべてのソフトウェア分野では全く馬鹿げている。

3. ハードコアなスケーラビリティの課題

例えばTwitterのようなWeb2.0のスケーリングアップは確かに挑戦であるが、最終的には解決策の90%は、最も頻繁に閲覧される項目のインメモリキャッシングという単一の技術に依存している。

逆に、機械学習アルゴリズムのスケーリングアップは通常、非常に複雑で恐ろしい課題である。Googleが大規模な疎行列の対角化(PageRank)を実現するまでには数年を要した。そして、線形代数は機械学習の問題において最も挑戦的な数学分野ではない。

機械学習の根本的な問題は、精度を向上させる最も効率的な方法は、より多くの入力データを追加することにある。例えば、スパムフィルターの精度を改善したい場合、アルゴリズムの改善を試みることもできるが、既に「スパム」または「非スパム」とフラグ付けされたより大きな入力データベースを使用することもできる。実際、十分な処理能力があれば、よりスマートなアルゴリズムを用いるよりも、大きな入力データによって精度を向上させる方がはるかに容易である。

しかし、機械学習において大量のデータを扱うことは、データを単純に分割することができないため複雑な問題である。単純な分割は、入力データを捨て、利用可能なすべてのデータを活用しない 局所的 な計算を行うのと同義である。結論として、機械学習はアルゴリズムを分散させる非常に巧妙な方法を必要とする。

4. ユーザーフィードバックは通常全く誤っている

賢明な人々は廊下でのユーザビリティテストを行うことを勧める。これは機械学習製品にどのようなユーザーインターフェースを実装しても同様だが、技術の核心部分を改善する際、ユーザーフィードバックは実質的に役に立たない

主要な問題は、機械学習において、ほとんどの 良い/正しい/期待される 挙動が残念ながら直感に反するものであるという点にある。例えば、Lokadでは、頻繁に顧客から、平坦な予測 が誤っているとの苦情が寄せられる。しかし、その平坦な予測は、実はその顧客にとって より精度が高い という利益にかなっているのだ。

スパムフィルタリングについて十分な知識を持っているとはいえ、私が考案してakismetに送る提案の99%は、彼らにとっては単なるゴミに過ぎないだろう。なぜなら、スパムフィルタリングの課題は 「どのようにスパムをフィルタするか」 ではなく、「正当なメールをフィルタせずにスパムをフィルタするか」 という点にあるからである。そして実際、ファイザーの関係者はシルデナフィルクエン酸塩化合物についてメールで議論する権利を有している、全てのメールがフィルタされることなく。

5. しかしユーザーデータこそが真実を保持している

機械学習においては、モックデータやシナリオはほとんど意味をなさない。実際のデータは予想外の多くの驚きをもたらす。この分野で10年間働いてきたが、調査してきたすべての新しいデータセットは多くの面で驚かされる。自作のデータで作業するのは全く無意味である。実際の顧客データがなければ、機械学習では何もできない。

この特定の側面はしばしば、機械学習における鶏と卵の問題を引き起こす:文脈広告の表示を最適化し始めるには、大量の広告主と出版社が必要となる。しかし、大量の広告主と出版社がいなければ、技術を洗練させることも、結果として彼らを説得して参加させることもできない。

6. チューニング vs. 数学、進化 vs. 革命

賢明な人々は、ゼロからの書き直しがしばしばソフトウェア企業を潰すという戦略的過ちであると助言する。しかし、機械学習においては、ゼロからの書き直しが会社を救う唯一の方法であることが多い

90年代の終わりごろ、主要な検索エンジンであったAltavistaは、大規模な対角化に基づく狂気の数学的アイデアを用いたランキング技術の書き直しに時間を割かなかった。その結果、未熟な人々に率いられた小さな企業(Google)に圧倒された。

クラシックなソフトウェア工学の核心はチューニングと漸進的改善にあり、これは機械学習においてもほとんどの場合当てはまる。 次の1%の精度向上は、既存のアルゴリズムを微調整し洗練することで頻繁に達成され、その過程でアルゴリズムの動作に関するより深い洞察を得るために無数のアドホックなレポート機構が設計される。

しかし、その方法で得られる新たな1%の精度向上は、前回のものの10倍の労力を必要とし、数ヶ月あるいは数年後には技術が行き詰まってしまう。

ここでハードコアな数学が活躍する。数学は次のパフォーマンス段階へ飛躍するために不可欠である。これは、以前のアプローチでは不可能と思われた10%の改善を実現するような飛躍である。その後、新しい理論を試すことはルーレットを回すようなもので、大抵の場合は失敗し、新理論は追加の改善をもたらさない。

結局のところ、機械学習で進歩を遂げるということは、高い確率で失敗する運命にあるアプローチを非常に頻繁に試すことを意味する。しかし、時折実際に何かが機能し、技術が飛躍的に進歩することもある。