日本ソフトウェア科学会により、今年4月に発足された「機械学習工学研究会(MLSE)」。
その最初の活動であるキックオフシンポジウムが、機械学習・ソフトウェア工学を代表する研究者とエンジニアの登壇者を招き、5月17日に開催されました。
機械学習工学研究会は研究者とエンジニアの情報共有の場
機械学習工学研究会発足の背景には、機械学習を利用するシステム開発や運用、保守において、効率や信頼性を向上するための工学的原則や方法論などの知見が確立されていない、という現状があります。
このような現状を踏まえ、機械学習システムに対しては「機械学習工学」ともいうべき新たなパラダイムの確立・体系化が必要であるという認識に立ち、日本ソフトウェア科学会 機械学習工学研究会 を立ち上げます。
例としてあげられる、機械学習工学研究会の議論の対象がこちらです。
- 機械学習プロジェクトを運用するマネジメント手法や組織論
- 機械学習システムのための要求分析、目的設計、工数見積もり手法
- 効率的な教師データの収集・整備、前処理の方法
- 機械学習システム開発を効率的に行うためのフレームワークやプログラミング言語、開発環境
- 機械学習システムの設計に用いるアーキテクチャ
- 機械学習システムのテスト・検証、デバッグ、モニタリング手法
- 機械学習システムを支えるプラットフォームやインフラストラクチャ、ハードウェア
キックオフシンポジウムでは、
- 機械学習への期待
- 機械学習の現状
- 機械学習のこれから
という3つの大きなテーマで講演が進められました。
そして今回のシンポジウムからピックアップしてご紹介するのは、「機械学習はどこへ向かうのか」というテーマで計7名のスペシャリストを招き、株式会社Preferred Networks 最高戦略責任者 丸山 宏氏をモデレーターとして迎えたパネルディスカッション。
登壇された方々の紹介はこちらからご確認できます。
機械学習は完全ではない。重要なのは残りの1%を人間が補完すること
パネルディスカッションのメインテーマは、機械学習における品質保証について。
冒頭で話されたのは、“機械学習は完全ではない”ということでした。そこに対してどのようなアプローチをとるのか、ディスカッションは進んでいきました。
「機械学習システムの開発を始める企業は、そもそもやることも、ユースケースも決まっていないという状況が大変多いです。
そのような企業でよくあるのが、なにかしらのパターン認識を実際にやってみて、ある程度の精度で成功した後にユースケースを考える、といったこと。
ですが、結果としてパターン認識に成功したとしても、この方法では、本番環境に落とし込んで業務で使うことはできませんでした。というのは、そもそも要求事項が定義されていない、といったことがあるからです。」
機械学習システムのアプローチとして必要なのは、データセットはもちろん、ユースケースが定義されていること。そして機械学習を扱う以上は確率、それに伴う間違いを含んだスコープ定義のなかで資料をつめ、イテレーションしながらデプロイすることだと思います。
「有賀さんは機械学習を使わなくて良いなら使わないほうが良い、とおっしゃっていましたが、機械学習の品質保証に関して一言いただければと思います。」
「現状の機械学習では“ヒューマン・イン・ザ・ループ”というのが大前提です。99%の正解率を持つ機械学習を使ったシステムに対して、残りの1%を人間が補完する、もしくは、99%の状態でデプロイして、ユーザーからのフィードバックを追加の教師データとする、というようなサイクルが必要となります。
機械学習を使う際に、継続的にシステムを改善し続けられるビジネス的な枠組みを持ち、常に継続のためのコストをかけられるという前提をもって取り組むのがおすすめです。もしくは、完全にルールベースのシステムを構築するかです。そのほうがコストがかからないのではないでしょうか。」
あくまで製品、サービス、プロジェクト全体の一部として機械学習が機能しているのを認識し、不確実性を考慮した、それ以外の設計とシステム開発が重要になってくるようです。
機械学習の理想の形にはまだまだ届かない
「機械学習のやり方は、バッチ学習とオンライン学習の2つがありますが、品質・性能を保証するという観点でいうと、今の段階ではバッチ学習である必要があります。
オンライン学習はパラメーターをユーザーに任せるので、危険です。それが原因でシステムがおかしくなってしまうこともあるので。」
バッチ学習は学習対象となるデータをまとめて処理する手法。一方、オンライン学習とは、対象となるデータは用意せずに、新しく入ってきたデータのみを使い学習を行なう手法です。オンライン学習ではAI自らがユーザーの入力に合わせて学習していくというメリットもありますが、ユーザーの入力データによって精度が落ちることもあるので、実用が困難というデメリットもあります。
ユーザーとしては、製品やサービスのなかでAIが勝手に学習して、勝手に賢くなるが理想ですが、それを実現するオンライン学習はまだまだ難しいよう。
学習の手法という視点での品質保証に関する議論はあっても、プロジェクト全体の設計で補うのが現実的だといいます。
「さまざまな環境に対しても不具合なく動作する機械学習のアルゴリズムや理論はいくつかありますが、今のところオンライン学習ではほぼ無理でしょうね。」
「機械学習を組み込んだシステムは、
- 機械学習モデル
- アプリケーション
という2つの側面からの品質保証があります。データの準備、データ前処理、モデルに入れる、学習させる、といった工程のなかで問題点を探して品質を向上させるのと、アプリケーション側で、たとえばユーザーに写真をもう一度取り直してもらうとっいった形で精度を担保することができます。」
ユーザーの負担を増やすことで品質を向上させるのは、トレードオフの関係になっきます。それを踏まえたうえで、バッチ学習による学習モデル精度の担保・精度の向上と、アプリケーション側で精度をカバーするという2点で、品質を保証していく必要があるということですね。
小さく検証して横にスケールする。POCを活用することで、機械学習プロジェクトの形式化が可能に?
「精度という点でいうと、機械学習に携わるエンジニアは精度重視のあまり開発工程やその後のメンテナンスを軽視する傾向にあると、日本のお客様ではよく聞きます。それは海外でも同様の課題なんでしょうか?」
「海外も同様で、エンジニアとビジネス観点の目線は違いますね。エンジニアの方は要求仕様がきた際のレスポンスも数学で答えようとしますしね。
精度をだしつつ、かつビジネス的にもスケールしていきたいといった場合には、POCが有効です。POCを使うことで、人間では90%の精度を機械学習で95%に持っていく、といったにぎりがしやすくなります。またPOCの良いところは、コンビニエンスストアなどの1店舗で精度が担保できれば、ほかの店舗への横展開が可能になる点です。
要求仕様はわからないけど、人間では限界がある業務、たとえば故障検知や発注の自動化など、人間による精度のベースラインがあるものに対してAIでなにかしたい、という要望はPOCを使った進め方もできますし、比較レスポンスも返しやすいですね。」
まずは小さく適用して、うまくいった際に同じモデルで横展開していく。その方法を展開できる企業やサービスは親和性があるそうです。
ほかの方の意見と同様、精度に関しては100%はほぼ無理なので、機械学習をフィルターとして補完的に人間が使うことで、精度の高い形でスケールできるとのこと。そんな方法論がうまく形式化して一般の実務の世界に認識されて展開されていくのではないかと、工藤さん。
機械学習工学研究会(MLCE)はまさにそういった観点で、新たなパラダイムの確立・体系化をビジョンに掲げています。
機械学習システムには、外からの助けが必須
今回のディスカッションでとくに強調されていたのは、機械学習で精度100%は、ほぼ不可能だということでした。そこで重要となるのが、機械学習の不確実性を前提とした設計・開発と、それをいかに人が補完的に使えるか、という点で意見が一致していました。
それを知らないままプロジェクトを進めれば、例えば100%の精度ができているかどうか、ということだけがプロジェクト成功の評価指標となってしまい、失敗に終わってしまいます。
ですが、機械学習の不確実性を認識してプロジェクトに取り組むことで、「機械学習では95%を目指し、それを人が補完的に使うことで100%に持っていく」といった方針のもとでの全体設計や開発が可能になります。
今回は、体系化されていない機械学習プロジェクトをどのように成功に導くのか、そのノウハウや実務レベルでの重要なポイントを知れたディスカッションになりました。
記事では紹介しきれなかった講演内容、スライド資料も多くあります。ぜひ参考にしてください。