機械学習を工学する話・イン・宮島

こんにちは。LeapMindでエンジニアやってます、今井です。

今日は私の「副業」について、ちょっくらお話をば。
副業と言っても、不動産投資でお金儲けウッハウハとか、そういう話ではありません。割とマジメなお話です。

私達が扱うDeep Learning、あるいはDeep Learningを含む機械学習という技術が、近年爆発的に普及しつつあるのはご存知のとおりです。
が、この機械学習というのは、実は製品化するのがとてもとても難しい技術なのです。

以前から、ITシステム・ソフトウェアを作るために「ソフトウェア工学」と呼ばれる学問があり、かれこれ50年ほどの歴史があります。お客様からの要求をいかに実現可能な仕様に落とし込み、それを日々の開発でどう作り上げ、どう品質確保して、お客様にお出しするか、という一連の技術に関する学問です。
ところが、機械学習・Deep Learningを使った途端、これがほとんどまともに使えなくなるのです。
これはなんとかしなければならぬ(強い意志)、ということで、以前はソフトウェア工学研究者だった私は、現在「機械学習工学」という学術分野を立ち上げようとしています。「機械学習システムのためのソフトウェア工学」といった趣旨です。

で、ちょうど先週1/18〜19に、広島は宮島で行われた、『ウィンターワークショップ2018・イン・宮島』(情報処理学会 ソフトウェア工学研究会 主催)という学会で、「機械学習工学」のセッションを企画・開催しました。

これが、当日の様子です。

いやー宮島名物あなごめし、美味かった……ではなく。

えー、当日の様子はこちらのページの下の方に載っているので、そちらを御覧ください。

LeapMindからは、日頃様々なお客様からの案件に奔走してひーひー言っている白井も参加。また、私と同じ企画メンバーとして、LeapMindと同じくDeep LearningをコアビジネスにしているPreferred Networks 丸山宏CSO、そして国立情報学研究所 吉岡信和准教授にも参加頂きました。(当日不参加でしたが、国立情報学研究所 石川冬樹准教授も企画に参加されました。)

当日の「機械学習工学」セッション参加者は総勢11名。
そのほとんどは、時代の流れで機械学習プロジェクトに関わるようになった(関わらざるを得なくなった)ソフトウェアエンジニア/研究者でした。

2日にわたるセッションの内容は、機械学習プロジェクトにおける要求分析からテスト・検証、プロジェクトマネジメントまで多岐にわたり、とてもここで全てをご紹介するのは難しいのですが、印象的だった話題にいくつか触れてみたいと思います。

『PoC貧乏』
機械学習・Deep Learningのプロジェクトにおいては、たいていPoC(Proof of Concept)というものをまず作ってお客様に提示します。機械学習で何ができるか、どの程度のことができるかを、簡単に機械学習モデルを作ってみて評価するものです。
ですが、本当に難しいのは「PoCから先」、実製品・サービスに機械学習モデルを組み込んでいく作業なのです。
もちろんお客様はPoCをもらえば満足なのではなく、その先を作ることが最終目標にあるのですが、実はこの先を見込んだ開発ができている企業というのはとても少ないのが現状です。
というところで、「PoC止まり」のプロジェクトばかりになってしまう『PoC貧乏』を脱したい、という思いを参加者の多くが持っていました。
(この辺りの苦労については、株式会社キカガクの吉崎さんが書かれたQiita記事が大変良くまとまっています。)

『お客様の期待値コントロール』
当日話が出た「あるある」として

お客様「AI使えば何かできるでしょ。作ってよ」
ベンダー「えっ、じゃ……こんな感じになりますが、どうですか?」
お客様「は? こんなんしかできないの? 全然だめじゃん」

そしてお客様は失望し、我々は失注します。双方にとって何の得もない、極めて残念なパターンです。
これを如何に回避するか? という話を、私達は当日どマジメに話し合っていました。(いや、本当にこれ、業界を通じて深刻な問題なのです。)
その中で、

  • 今の機械学習・Deep Learningは「何ができて、何ができない」かを、私達エンジニア側・ベンダ側がもっと発信していくべき
  • お客様サイドでのデータ収集・アノテーションが品質に致命的に効いてくることから、普通のITシステムとは違ってプロジェクト成功のためにはお客様サイド、ユーザーサイドの努力も相当必要

というような意見が出ていました。

機械学習エンジニアとソフトウェアエンジニアとのギャップ
(最近の事情はわかりませんが)これまでは大学なんかでも、機械学習とソフトウェア工学・コンピュータ科学は別々の学科で教えられてきたことが多く、なので両方のスキルを持ち合わせたエンジニアはとても少ない、というのが実情です。
ですので、機械学習のエンジニアとソフトウェアのエンジニアが協業してシステムを開発するか、あるいはどちらかのエンジニアがもう一方の技術を学んでいくしかありません。もちろん業務をこなしながらです。このギャップを埋めるにはどうするか、といった議論をしていました。

ということで、今はまだ黎明期にある機械学習システム・ソフトウェアの作り方を工学する話、今後も活動の折にちょくちょく、こちらでも書いていければと思います。

その他、ワークショップ当日の議論内容はこちらにまとめられていますので、よかったらご覧くださいませ。

—— ここから宣伝 ——

LeapMindは絶賛人材募集中です。詳しくは下記Wantedlyを。ぜひ私と一緒にDeep Learningハードウェア作りましょう〜〜

エンジニア以外でも、ありとあらゆる職種にて仲間を募集しています。お問合わせはお気軽に。

———

▼LeapMindの最新情報をCheck!

LeapMind HP:http://leapmind.io/
Facebook:https://www.facebook.com/leapmind.io/
Twitter:https://twitter.com/leapmind_inc
Wantedly:https://www.wantedly.com/companies/leapmind/

Posted by takeo