ハードウェア能力の増大と膨大なデータにより、パターン認識、自然言語処理、強化学習など既存の機械学習アプローチが実現可能になった。人工知能は開発プロセスに影響を与えており、バージョン管理、CI/CD、テストなどは複雑さを増している。
Goto Berlin 2018において、ThoughtWorksでAIのグローバルヘッドを務めるChristoph Windheuser氏が業界におけるAI応用について語った。InfoQではこのカンファレンスをQ&Aとサマリー、記事で紹介している。
機械学習アプローチの最大の利点は、プログラミングの代わりにデータから学習することで、アルゴリズムの動作を最適化できることだ、Windheuser氏は主張する。このことは、光学的および音響的パターン認識や自然言語処理など、プログラムできない動作をアルゴリズムが実現できることを意味する。それにより、まったく新しいアプリケーションが可能になる、その可能性は無限大だ、彼は語る。
データサイエンスおよび機械学習のプロジェクトでは、開発者はプログラムするコードだけでなく、トレーニングパターンやそのパターンから抽出した特徴、学習アルゴリズムのパラメータ並びにハイパーパラメータといった、膨大な量のデータにも気を配る必要がある、Windheuser氏は語る。このことは、開発プロセスに新たな次元の複雑さをもたらす。
講演の後、InfoQはWindheuser氏にインタビューした。
InfoQ: AIで何が可能になりますか?
Christoph Windheuser: ハードウェア能力が大きく高まり、膨大なデータが利用可能になることで、古くよく知られた機械学習アプローチが、突如として、スケーラブルで運用可能な方法で適用できるようになりました。音声認識や画像認識など、あらゆる種類のパターン認識、自然言語処理の分野では、言語翻訳、感情分析、意図の認識、音声合成、チャットボットなどがよく知られています。強化学習を用いると、ゲームやチェスのプレイ戦略、車をスムーズに安全に運転する戦略なども学習できます。これらはみな、機械学習アプローチなしでは不可能でしょう。
InfoQ: AIを適用する上で、データはどのような役割を果たしますか?
Windheuser: データはあらゆる機械学習アルゴリズムの基盤です。バックプロパゲーションのような教師あり学習の場合、ネットワークの優れた一般化を達成するには、最適化する(重み付けする)パラメータよりもはるかに多くのトレーニングパターンが必要になります。そして、多数のレイヤーおよびレイヤーごとのユニット数を持つディープラーニングモデルの場合、パラメータの数はすぐに数百万にもなり、うまくトレーニングするにはさらに多くのトレーニングパターンが必要になります。
教師あり学習の場合、トレーニングパターンにはラベル(例えば、そのパターンの正しい分類)が必要になります。このラベルは通常、手作業で作成しなくてはなりません。それに加えて、学習アルゴリズムが消化できるように、データパターンを適切な形式にする必要があります。つまり、トレーニングデータから正しい特徴を抽出する必要があります。トレーニングアルゴリズムから適切な結果を得るために、これは非常に重要です。
例えば、食料品店の商品に対する今後の顧客需要を学習したい場合、これまでの売上データを使って今後の売上を予測できます。POSデータをそのまま使うことで、ネットワークをトレーニングできるでしょう。しかし、例えば、POSデータのタイムスタンプから平日を抽出して、これを追加の特徴としてネットワークに入力すると非常に役立ちます。顧客需要は平日に大きく依存しているため、これはネットワークがより簡単に、より迅速に学習・収束するのに役立ちます。
InfoQ: AIはソフトウエア開発およびデプロイメントのプロセスをどのように変えますか?
Windheuser: AIはすでに様々な方法で開発プロセスを変えています。どこかがおかしくなったり、トレーニング実験が期待する結果にならなかった場合、コードとデータをすべて過去の所定の一貫した時点に戻して、ロールバックできる必要があります。私たちはDVC (Data Science Versioning Control - dvc.org) というオープンソースのツールを使い、良い体験が得られました。データがリモートのクラウドにあっても、このツールはこうした作業を実行できます。
また、CI/CD(継続的インテグレーション/継続的デリバリー)環境のセットアップはますます複雑になっています。通常は、複数のストリームおよびパイプラインを並行して使います。例えば、アプリケーション開発用と、データサイエンスおよび機械学習モデル用といった具合にです。トレーニングを加速するため、数台のマシンでトレーニングを分散実行する場合、パイプラインのファインイン(fan-in)とファンアウト(fan-out)を用いて、トレーニングを並列化し、あとで同期させてテストする必要があります。私たちが実行している多くのプロジェクトでは、GoCD環境を使っています。これはThoughtWorksが開発したオープンソースのツールで、こうした複雑なCI/CD環境を管理することができます。
機械学習コンポーネントを含むアプリケーションのテストもますます需要が増えています。各種コンポーネントのユニットテストの他、独立したテストセットで達成したエラーレートや混合マトリックスといった複数のKPIを用いて、トレーニングフェーズがうまくいっているかテストする必要があります。また、たいていの場合、機能テストを完全に自動化することはできません。例えば、チャットボットを見てみましょう。人間がチャットボットに実際に使う可能性がある対話のうち、ほんの一部しかテストできないため、その機能を自動でテストすることはできません。機械学習アプリケーションの機能テストにはかなりの労力がかかるため、私たちはしばしば、古典的な「テストピラミッド」の代わりに「テストテーブル」から話します。
InfoQ: 今後、AIで何がもたらされますか?
Windheuser: この分野は急速に変化しており、その研究開発には世界中で莫大なお金が費やされているため、予測するのは困難です。AIとその応用を新たなレベルに引き上げるためには、例えば、教師なし学習、現実世界の知識獲得、推論などの分野において、新たな科学的ブレークスルーを必要としています。これは今後数ヶ月あるいは数年で登場するかもしれませんし、再びAIの冬の時代を迎えて何十年もかかるかもしれません。最終的には、超人的な知性を持った汎用人工知能(AGI: Artificial General Intelligence)が実現すると私は信じていますが、それでも長い年月がかかるでしょう。