前回 に引き続き、有賀康顕さん本橋智光さんの対談全4回の第2回をお届けいたします。今回は機械学習に関する人材市場の盛り上がりについての話から、データーサイエンティストとしての働き方についての議論へと話が続きます。
加熱する機械学習市場
有賀: 「機械学習ええやん」というバズり方と、それに伴う人材市場の過剰な煽りに居心地の悪さも感じています。僕も前職のクックパッドはWeb系で、Railsアプリなんかも書いていたんですけれど、最近聞いた話では、これまでRailsを書いてきたようなWebのサーバーサイドのエンジニアやAndroidやiOSのエンジニアが、転職時の面接なんかで軒並み「僕は機械学習できる会社でなければ転職しません」というようなことを言っているそうでして。そう言って機械学習を実践している会社に行くというようなことが起きていてと。
本橋: 機械学習ブームについて言うと、僕らの頃より多分新しい手法がどんどん生まれていますし、今の若者は機械学習にずっと詳しい。めちゃくちゃできるなと思っています。そういう若い人たちが出てくると、エンジニアの単価はどんどん下がってくると思っています。需要と供給を考えるとそうなるなと。
有賀: そうなんですよ。4年とか5年とか前だと、機械学習ができる人ってまだ少なかったんですが、だんだん大学で機械学習系のことやってましたという人が修士課程を終えて市場に出てきている。聞いてる感じだと、(給与水準が)一部上のレイヤーの単価は、経験を積んで上がっているようなんです。でも明らかに安いレンジの求人も増えていて「ああ、これ完全にあれだな。新卒の修士卒の学生が単価下げてるな」みたいなことを感じています。
本橋: 新卒の修士卒の学生はかなり優秀なので、そういう人たちが活躍しつつ経験を詰めるようなビジネス環境を作らないと。
有賀: わかります、わかります。そういう意味では僕らの『仕事ではじめる機械学習』なんかも、プライマリのターゲットは機械学習を業務で使いたいというソフトウェアエンジニアなんですが、セカンダリのターゲットとしては、機械学習系の研究室で研究をしていて修士課程を終えたけれど、エンジニアリングをしたこともないし、プロダクトを作ったこともないという人たちで、そういう所にリーチするかは分かりませんけど、届くといいなという思いがあります。
そういう意味ではやはり機械学習ができて、エンジニアリングの経験もあるという人の価値が高いのには変わりがないのだと思っています。一番のコアは何かというと、解決可能な問題を一定の粒度で切り出してシステムに入れる。「お金を稼ぐ」というゴールがあり、そのKPIがなにで、機械学習的なアプローチをするとその問題をどういう風に改善、ないしは低減できるかと。
例えばコストを減らすという課題があるとして、Webの会社でユーザーはメッセージを送ったり、掲示板のようなもの何かを書けるという機能があるとします。そこにSPAMとかネガティブな投稿に関する問題があって、それをすべて人手を使って、目で検査するのはコストがかかる。そこに一次フィルタとして機械学習を導入してチェックの効率を上げられるよね、という使い方とか。でも機械の判断にも誤りがあるので、そこはマンパワーでカバーしようとか。そういう全体設計をどうするかという。
本橋: 本当そうなんですよね。今はブームなんで「機械学習をやりたいからなんとなくPoCをパッとやって…」みたいな始まりが多いんですけど、ビジネスにつなげるためにはPoCで終わりにしてはいけないじゃないですか。最終的には、コスト削減か売上を上げることにつなげないといけない。これをきちんと設計できているケースは結構すくないですよね。
例えば、機械学習の精度がどう利益に繋がるか設計するときに、ある一定の精度を満たせば利益が出て一定額儲かる世界と、もうひとつは精度を上げれば上げるほど儲かるという世界がある。後者は例えば広告のターゲティングとかですよね。
有賀: あー。
本橋: で、高度な機械学習のできる、自分でアルゴリズム作ってカスタマイズもできるエンジニア達には、後者の、精度を上げるほど儲かる仕組みを作って、そこに専念させてあげないと、たぶん仕事として本気で機械学習に取り組み続けられないし。そうじゃない世界だと、機械学習に専念しようとしても、ビジネススキーム的に「そんなのやって意味があるの?」ということになってしまうと思っています。なので、そういうフィールドを作ってあげないとなと思いつつ、世の中にそういうフィールドってGoogleみたいな広告マッチングの他にいくつあるのだろうという疑問も感じていますね。
有賀: いやあ。
本橋: でも今は前者の案件が大量にあるから、そういう案件をまずは大量にやってくんだろうなと思っています。で、そうすると結局、高度なモデリングは一定の精度を達成するために必要になるんですけど、それ以外は問題の設計とか切り分けなんかがホットなポイントなんだろうなという気がしていて。
僕自身がこれまでやってきて、製造業とかレジャー業とか小売り業とか運輸業とか、かなり色々な業界に対して分析コンサルをやっていたので見てきたのですが、それぞれ多種多様なテーマがあって、一番大変なところはその問題設計するところでしたね。あと多分、これからは、モデルを運用するところがかなりホットになっていくと思ってます。
有賀: わかります、わかります。
「モデルの運用」が今後の課題に
本橋: いまだに答えの出ない問題があって。例えば障害の発生を防ぐために障害予知モデルを使って製造時のパラメータを決める現場があるとするじゃないですか。この現場において、どうやって運用で解決すべきか分からない問題2つあるんですよ。
ひとつは、モデルを使って運用したら、基本的には障害が起きなくなるわけじゃないですか。すると障害データが集まらず、安全なデータばかり集まってしまう。結果、どんどんパラメータが安全側に振られちゃって、実はもう少し攻めても障害は起きないのだけれど、どんどん安全に安全に偏っていき効率を悪くしていくという悪循環にはまっていく。そうならないためには運用をどうすればいいんだろうとか。
有賀: そこでいうと、製造業系なんかでよくある例だと、製造ラインのセンサーデータなんかを使って、製造機器が故障して不良品ができるというようなことを、あらかじめ予測する。Predictive Maintenanceとか言うじゃないですか。 [1] 機械が壊れる予兆が出てきたら交換しちゃうというような話があって、そこの機器が壊れるみたいなのを予測するとか、どの要素が不良につながりそうなのかなのを予測するということは普通にあって、そこはそこで普通にやればいいんじゃないかなと思っています。パラメータを安全側に倒すのかそうでないかという点については、それができるかどうかは分からないけど、バンディット的なアプローチ [2] が適用できるかなとは思いますが、リアルにA/Bテストとかはできないので。
本橋: 不良品だといいのですけど、製造業でヤバい障害には生死にかかわるようなものもあるので、そういうところでバンディット的な手法がとれるか?といえばできないですよね。一方で、攻めなくなってどんどん安全に振っていくという課題があって、安全になるのはいいことかもしれないけれど、データに偏りがどんどん生じてきて、結局何も分からないモデルになっていくような、今までのやり方に対する答えだけを出していくようになっていく気がしていて。
有賀: 介入行為によってフィードバックループが発生して、そのフィードバックループによってデータの傾向がどんどん変わっていって、それに対してある種、過学習的な状態のモデルになっていくと。
本橋: そうです、そうです。これまでとは違う意味の過学習とでもいうものが出てくるんだろうなと。
有賀: あー。
本橋: これを踏まえてどう設計できるのかが難しいデータ分析の問題になると思っています。もうひとつですが、製造ラインが変わることがあるんです。製造機械が変わったりと。その時に、いまだと転移学習のような手法はあるものの、そういう所で、リアルの変化に対してモデルを追随させる時に、どうオンラインというかアクティブに追随できるか。
機械学習的なモデルを使う世界が普通になったとして、急に環境が変わってこれまでのモデルが使えないという時に、今までだと立ち上げ時に頑張っていた工場のおじさんとかいたのに、そういう経験のない人たちが普通になる訳じゃないですか。そういう時にどうするんだろうと。今までは「モデルを信頼すればいいよ」というやり方を学んでいた人たちが、あるとき「しばらくはモデルを信用できません」という時に、どうすればいいのか。
有賀: 多分、データの傾向が変わるという話は、運用して半年くらいすると起こると思うので、それが連続的に起こらない、要するにナレッジが切れるみたいな事はおそらく起こらないと思うんです。それに対して、どんどん変化していく現実に追従し続けるとなると、やっぱりさっきおっしゃっていた転移学習的なアプローチになるかなと思っています。
というのは、この間Googleが出していたTensorFlow Extended(TFX)っていう――Googleの出している機械学習のシステムはどういう風に作られているかとか、どういう事に気を付けてるかについての――論文 [3] を読んだのですが、そこに書いてあったのがWarm-starting、どう日本語にしていいのか分からないんですが、例としてGoogle Play Storeのランキングの問題について、人気のあるものをランキングの上の方に出すというモデルがあると。それで、あれって日々トレンドが変わるので、モデルの学習を1からしていると非常に時間がかかりすぎる。
Deep Learningのネットワークのモデルを、毎日スクラッチからアップデートするのはナンセンスだと。その中で、Freshness、つまりデータの新しさをモデルに反映するにはどうしたらいいのかという点について彼らはwarm-startingって言いかたをしていて、既存のモデルがあって、それに対して新しいデータに、最後、なんだろう転移学習的なアプローチをしていて、新規のものに適応するっていうようなアプローチをすると。
それを読んでああ、なるほど。そうするとニューラルネットワークでやる一つの価値でやるっていうのがまた別の角度から出てくるんだなと思ったんです。 [4]
従来の、例えばSVMでやったいたときにも、オンラインのアルゴリズムで追加するというのはもちろんあったのだけど、それって転移学習的な感じでガチっと行くというよりは、追加でデータを入れられるよという感じにしかならないから、どこまで変化に適応できるかというとそれほどでもなかったように思ってました。
それをニューラルネットワークにするとうまく行きそうという試みをGoogleではやってるというのを見て、ああ面白いなと読んでいました。
本橋: いや僕不勉強で、その論文全然知らなかったんですけど。そう考えると、やっぱりモデルを選択するときに、ただ精度がいいから選ぶというのは結構ナンセンスになってくる気がします。
有賀: そうですね。そこは、昔Machine Learning Casual Talksというイベントで、Gunosyの関さんに発表していただいたことがあるんですけど、その時に「モデルの予測精度はあくまで大前提、目標となる精度を達成するのがスタートラインで、そこからビジネスのKPI、例えばコンバージョンレートとかCTRとか、そういうものをどれだけ達成できるか。いわゆるオンラインでビジネスの目標値を追いかけるというのを併せてやってかなきゃいけない」という話がでていて。だから、モデルの精度的なところをトラックしながら、ビジネスのKPIもトラックして、こっちがちゃんとよくなっていくのをを見て行かないといけないよね、という話をされてて。やっぱりそうなんだなと。
本橋: そうですよねw
有賀: 当たり前の話ではあるのだけれど、モデルの話にフォーカスしていくのは…学生の時は、例えば新手法とか何か改善手法を提案して、新規性がここで、これだけ性能がよくなりましたみたいな話にフォーカスできるんです。だけどビジネスはそれだけではないので、性能が1%上がって幾ら儲かるの?と。もはや(モデルの精度そのものは)あまり関係ない。下手すると90%の性能でも、後段の人手のチェックが楽になれば充分ペイするみたいなことがあり得るので。
[1] | Predictive Maintenanceは日本語では予知保全と呼ばれる。英語の頭文字をとってPM、または状態基準保全などと呼ばれることもある。 |
[2] | 「多腕バンディット問題」のこと。一般的なWebのABテストのように静的にコンテンツを出し分けるのではなく、動的にコンテンツを出す量をコントロールしながら、最も良いものを探索する問題。強化学習の分野に属する。 https://www.oreilly.co.jp/books/9784873116273/ https://www.ai-gakkai.or.jp/my-bookmark_vol31-no5/ |
[3] | https://dl.acm.org/citation.cfm?id=3098021 |
[4] | 転移学習は、ある領域で学習済みのモデルを別の領域に適応させる手法。ニューラルネットワークの入力に近い層のパラメータを固定して、出力に近い層だけを新しいデータセットで学習させる方法が知られている。以下の記事などを参照。 https://qiita.com/icoxfog417/items/48cbf087dd22f1f8c6f4 |
ベンダーのデータサイエンティストとして何ができるか?
本橋: 面白いところですよね、本当にね。
有賀: いま盛り上がっているのは、僕らとしてはすごいありがたい話で、端的に言うと皆さん予算取りをしやすいんだろうなって。
本橋: でしょうね。
有賀: それはいいんだろうなって思うんですけど、その反面、お客さんとかと話していると「AIとか機械学習でなんかやれって言われているんですけど助けてください」と言われて、「分かりました。じゃあ一緒に何ができそうかデータ使ったプロダクトを考えましょう」と答える、みたいなことがあるんですけど、なかなかあの、なんて言ったらいいんですかね。
大きな会社だと難しそうだなって思うのが、新しいプロダクトを自分で作るってことをあまり経験してこなかった、企画部門が考えてきたものをそのまま実装するみたいな事が多かったりするので、それをどうやって自分事に変えていく事ができるのかというようなことを考えていて
先ほども言いましたけど、究極的にはデータプロダクトは内製化した方がいいんじゃないかなって思ってるんです。仮説を立てて検証してみたいな事を、自分たちでできるようになるのが一番スピードも速い。外部の人にお願いしても「雨が降ったらワイパーが動く」みたいな、「それ当たり前だろ」みたいな分析結果しかでませんでしたと。「それ、お前のドメイン知識が圧倒的に少ないからな」という結果になるので、そこを自分たちでやれるといいのだろうなと思うんですけれどね。なかなかでも、色々なお客さんと話していると難しい事も多い。一緒に伴走して坂を上ってくれるような、マラソンの42.195kmを完走することは決まっているんだけど、どうやってトレーニングしていいか分からないみたいな、そういう人たちが圧倒的に多いので、そこをなんかうまく自分たちでやれるように回していくような形ができないかなと思うんですけど。
本橋: いやあ、そうですよね。最近は内部で抱えようみたいな動きは多い気がしてますけどね。ただやっぱり内部で抱える時に、データーサイエンティストだけいればいいかといえば、そうでもないじゃないですか。
有賀: ですねえ。
本橋: 例えば基盤がなかったら、データサイエンティストとして採用されてきた来たけど、入社したら何もデータがなくて、まずは基盤整備をやることになったとか。よくあるパターンかと。
有賀: よくあるつらいやつですね。
本橋: でもよく分からない人が言う「データサイエンティスト」って何でもできる人なんですよね。本来はデータサイエンティストといっても守備範囲はいろいろある訳で。だからそこは、きちっと作っていかないといけないものの、エンジニア文化がよく分からない会社も多いのでハードルが高いですよね。
有賀: そういう意味だと、これはデータ系の話ではないですけれど、日経電子版のチーム。あそこはとても良いという話よくしています。データではないですけれど、エンタープライズでもああやって内製化して上手く回しているような、そういった会社さんもあるという話をさせていただくんですけれど。彼等みたいに自分たちで回した方がスピード感が早くなるという面は絶対あると思うので、そこが上手くいくといいなって思います。
本橋: そうですね。いま元気ある会社は結局、内部でエンジニア抱えてやっているところが多いですよね。あまり外注しないで。ベンダーのデータサイエンティストが本当に必要なのかとw 僕も元々はベンダーのデータサイエンティストだったので、自分の首を絞めるんですけれど。
有賀: 僕は、今も言ったんですけどお客さんを育てていって、羽ばたかせるみたいな。それをどんどんやっていって…
本橋: コーチャーみたいな。
有賀: そう。そしてもっと難しい問題になったときに、またピンポイントでとか、薄くコンサルティングで入りますっていう流れができると良いんじゃないかなと思っていて。自分たちで機械学習のモデルを作成すると、1回だけの作り切りってモデルはほとんどない。だいたいモデルが腐っていって、半年から1年たつと精度が下がっていくんですけど、って話がある。それをメンテナンスし続けるようなことを考えると、ある程度は内部でそういうものをハンドリングできないとだめで、自分たちで試行錯誤したけれどダメだったんですと言って…
本橋: そういう困っている時に来ると。
有賀: そう。そんな感じの方がいいんじゃないですかね。
本橋: そうなんですよね、仰る通りです。正直、すごいハイスキルなものを求めなければ、内部で人を育てることはできると思うんですよね。基礎をきちんと覚えてという感じで。ライブラリがとても整備されているので、素人でもそこそこのモデルは作れて、(特殊な問題でなければ)意外と一般的なデータサイエンティストと大きな差は出ないですからねw
(次回につづく)
- 有賀康顕(ありがみちあき)
電機メーカーの研究所、レシピサービスの会社を経て現在はCloudera所属。フィールドデータサイエンティストとして、データ活用や機械学習の支援を行う。
オライリー・ジャパンより『 仕事ではじめる機械学習 』を発行(共著)。
- 本橋智光(もとはしともみつ)
SIerの研究員、Web系企業のデータサイエンティストを経て、現在はデジタル医療スタートアップのサスメド株式会社のCTO。株式会社ホクソエムにも所属。量子アニーリングコンピュータの検証に個人事業主として従事。製造業、小売業、金融業、運輸業、レジャー業、Webなど多様な業種なデータ分析を経験。
技術評論社より『 前処理大全 』を発行。
※このプロフィールは対談時のものです。