オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

人工知能への学習もソフトウェアの品質に影響するようになるのかも

»

2015/2/19にDevelopers Summit 2015(デブサミ)のセッションで対談をする機会をいただきました。私は聞き手となり、機械学習、人工知能のエキスパートであるIBM東京基礎研究所の渡辺氏に質問に答えていただきました。

開発の構成要素として人工知能を使おうとするときに疑問に思うことを質問しました。まず、人工知能を大別し、汎用人工知能とタスク特化型の機械学習があること、このセッションでは主にタスク特化型の機械学習を中心に考えることにしました。

最初の質問はタスク特化型の機械学習と通常のプログラムの違いはどこにあるかでした。次のように回答いただきました。通常のプログラムは事前にロジックを決めて実装しておきます。プログラムを実行する際には、何らかの入力に対してあらかじめ決まっているロジックによって出力が得られます。機械学習では学習のフェーズがあり、そのフェーズで学習データを与えて学習モデルを作ると教えていただきました。そして、入力を与えると作ったモデルによって出力(モデルによる予測)が得られるというものでした。事前に決めておかず学習するという点が大きく異なります。

機械学習の仕組みをプログラムに含めると、ソフトウェアの品質は予測結果(つまり学習モデルを構築するための学習データや学習フェーズ)にも依存しそうです。何を実現するかにもよりますが、まずプログラムを完成する前に通常のデバッグやテストがあって、その後にモデルの学習のフェーズを経るものも出てきそうです。そうすると学習フェーズで学習モデルが期待通りに構築されているかどうかを確認するという作業が必要になってきそうです。画像認識や自然言語の解釈のように学習モデルが汎用的に通用するものであれば、学習済のモデルを利用したり購入したりして、それを利用するプログラムでは、学習のフェーズを設けなくてもよいようにすることもできそうです。学習モデルを作る部分だけを請け負うような形態が出てくると検収の作業も必要になりそうです。また、プログラムを書かずに、完全に学習だけで期待する動作をさせるような場合には、最初のデバッグやテストがいらなくなるでしょう。

そうすると、学習データや学習のさせ方もソフトウェアの品質を決める要素の一つになりそうです。既に画像認識で機械学習がかなり精度を高めていますが、ここでもお手本となる学習データを大量に用意しているようです。機械学習には入力と出力の関係が明確でないものもあります。効果の高い学習データを集めるには、これまでのテストやデバッグとはまた違った考え方が必要になりそうです。

本ブログエントリを書くきっかけとなったデブサミのセッションのタイトルは「身近になりつつある人工知能。エンジニアとして知っておくべき勘所とは?」です。アブストラクト等はこちらにあります。聴講いただいた方のツイートをまとめてくださっています(こちらから)。

Comment(0)