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

10年前、機械学習企業はほとんど存在しなかった、あるいは最大でごくわずかでした。その状況の主な理由は、当時実際に機能し、ビジネス価値を提供しているアルゴリズムがあまりにも少なかったためです。例えば、自動翻訳はまだほとんど機能しておらず、ほとんどのビジネスで使用できるレベルには程遠いです。

Lokadは広範な機械学習分野に適合し、特に統計学習に興味を持っています。私自身、機械学習の分野で10年近く働いていますが、典型的な縮小包装ソフトウェアの世界と比較して、この分野は非常に異なることに驚かされます。機械学習は独自のソフトウェアの世界です。

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

  • スマートなスパムフィルター:まったく誤検知がないと言えるほど、akismetが私のブログで71,000件以上のスパムコメントをキャッチしました。
  • 音声認識:Dragon Dictateは、ユーザーの調整後わずか数分で非常に印象的な仕事をしています。
  • 手書き認識や方程式認識はWindows 7に組み込まれています。

機械学習は主流になりました。

1. 製品は変わるが、ユーザーインターフェースは変わらない

ほとんどのソフトウェア企業にとって、顧客の目に新しいものをもたらすことが継続的な収益を得る方法です。SaaSはこの財務的側面を徐々に変えつつありますが、ほとんどのSaaS製品では、進化はユーザーインターフェースに非常に具体的な変更を伴います

それに対して、機械学習では、通常、新機能を追加することを意味しません。ほとんどの進化は、非常に少ないかまったく表面化しない内部で起こります。Google検索はおそらく最も成功した機械学習製品であり、10年以上もそのままの状態です。最近では、ユーザーの好みに基づいたランキングのカスタマイズが追加されましたが、この変更はローンチからほぼ10年後に行われ、ほとんどのユーザーにはまだ気付かれていないと思われます。

それでも、Googleのチームが過去10年間何もしていなかったわけではありません。実際にはその逆で、Googleのチームは非常に巧妙なトリックを使っているウェブスパマーに対して戦いを繰り広げ、技術を猛烈に改善してきました。

2. パフォーマンスの桁数の向上

ソフトウェアのパフォーマンスに関しては、通常、縮小包装の操作は100ミリ秒以内に行われます。たとえば、最適化されたアプリケーションの場合、サーバーサイドでのウェブページの生成に必要な計算時間は5ミリ秒から最も遅いもので500ミリ秒の範囲になると思われます。それより遅い場合、ユーザーはウェブサイトの訪問を諦めます。ほとんどのウェブアプリケーションについて、このパフォーマンス範囲が99%に当てはまると推測されます。

しかし、機械学習に関しては、典型的な計算コストは桁数で変動し、ミリ秒から数週間に及びます。

現在、2GhzのCPUの1ヶ月の価格は10ドルに下がり、次の5年でこの価格は1ドル未満になると予想しています。また、大規模な並列化により、1ヶ月のCPUの処理を数時間で圧縮することができます。ほとんどの機械学習アルゴリズムでは、タスクにより多くのCPUを割り当てることで精度を向上させることができます。

したがって、1ヶ月のCPU投資(10ドル)で1%の精度向上を達成することは、非常に利益が上がる可能性がありますが、それは機械学習以外のほとんど、もしくはすべてのソフトウェア領域にとっては単なる狂気です。

3. スケーラビリティの難題

Web2.0などのスケーリングアップは確かに課題ですが、最終的にはその90%が1つの技術にかかっています。それは、最も頻繁に表示されるアイテムのインメモリキャッシュです。

それに対して、機械学習アルゴリズムのスケーリングアップは通常、非常に複雑なタスクです。Googleは数年かけて大規模な疎行列の対角化(PageRank)を実行することに成功しましたが、線形代数は機械学習の問題において最も難しい数学の分野では明らかにありません。

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

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

4. ユーザーフィードバックは通常間違っています

賢い人々は廊下の使いやすさテストを行うことを勧めています。これは、機械学習製品に適用されるユーザーインターフェースにも当てはまりますが、技術の核心を改善する場合、ユーザーフィードバックは実際に実装された場合にはほとんど役に立たず、むしろ有害です。

主な問題は、機械学習では、ほとんどの「良い/正しい/予想される」動作が残念ながら直感に反することです。たとえば、Lokadでは、よくある顧客の苦情は、不正確と見なされるフラットな予測です。しかし、これらのフラットな予測は、それらの顧客の最善の利益になるだけであり、実際にはより正確です。

スパムフィルタについては詳しいのですが、私がakismetの人々に提案するほとんどの提案は、実際にはただのジャンクであると確信しています。なぜなら、スパムフィルタの課題は「どのようにスパムをフィルタリングするか」ではなく、「合法的なメールをフィルタリングせずにスパムをフィルタリングするか」ということです。そして、はい、Pfizerの人々はシルデナフィルシトレート化合物についてのメールで議論する権利があります。

5. しかし、ユーザーデータには真実があります

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

この特定の側面は、機械学習において頻繁に鶏卵の問題につながります。コンテキスト広告の表示を最適化し始めるには、多くの広告主とパブリッシャーが必要です。しかし、多くの広告主とパブリッシャーがいなければ、技術を改善することもできず、結果として多くの広告主とパブリッシャーを説得することもできません。

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

賢い人々は、ソフトウェア会社を頻繁に破壊する戦略的なミスの一種として、ゼロから書き直すことを勧めています。しかし、機械学習では、ゼロから書き直すことが頻繁に会社を救う唯一の方法です。

90年代の終わりに、主要な検索エンジンであるAltavistaは、大規模な対角化に基づくクレイジーな数学的アイデアに基づいたランキング技術を書き直す時間を取りませんでした。その結果、未経験の人々によって率いられた小さな会社(Google)に圧倒されました。

チューニングと逐次改善は、古典的なソフトウェアエンジニアリングの核心であり、機械学習にも当てはまります - ほとんどの場合。次の1%の精度を得ることは、既存のアルゴリズムを微調整し、アルゴリズムの動作についてより深い洞察を得るために、過程で多くの特別な報告メカニズムを設計することによって頻繁に達成されます。

しかし、その方法で次の1%の精度を得るためには、前のものよりも10倍の努力が必要です。そして、数ヶ月または数年後、技術は行き詰まってしまいます。

そこで、数学の核心が重要になります。数学は、次のパフォーマンスの段階に飛び込むために重要です。以前のアプローチでは10%の改善さえも不可能に思えるような改善を実現します。そして、新しい理論を試すことは、ルーレットをプレイするようなものです。ほとんどの場合、負けてしまい、新しい理論は追加の改善をもたらしません。

結局のところ、機械学習で進歩するということは、高い確率で失敗するアプローチを頻繁に試すことを意味します。しかし、時折、実際にうまくいき、技術は飛躍します。