渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

データサイエンティスト&機械学習(人工知能)エンジニアのスキル要件と、過熱する人工知能ブームが生み出す狂騒曲と(2018年2月版:追記あり)

f:id:TJO:20180130155202p:plain
(Image by Pixaby)

この記事は去年はてブ1100以上ついてしまった与太記事の続編です。その時はタイトルを読んで字の如く「データサイエンティスト」と「機械学習エンジニア」の満たすべきスキル要件(の2017年版)について考察したものでした。

で、まだ1年しか経ってないのに何でまた引き合いに出したのかというと、最近のメディア報道やニュースリリースの類などを見ていると「データサイエンティストにディープラーニングをやらせる」とか「高度な統計分析のできるエンジニアが必要」みたいなどう見ても色々混同している感のある内容が目に付くので、改めてちょっと自己流に交通整理してみようかなと思ったのでした。

特に、空前の人工知能ブームで「人工知能」の語が人口に膾炙すると同時に2014年頃にブームが終わったはずの「データサイエンティスト」の語が何故か復権してしまい、そこら中のメディアでかつて空回りした前回のブームと同じように濫用されている感があります(上記の5年間振り返り記事でも書きました)。それに伴い、そもそも論としての「ビッグデータ」とか「データ活用」などを取り巻く社会の動きにもかなりの混乱というかカオスが起きているように見受けられます。その辺の事情もちょっと掘り下げながら、ダラダラと論じてみようと思います。


データサイエンティストと機械学習人工知能)エンジニアのスキル要件を振り返る(2018年2月版)


一応この1年間での業界の進歩をある程度念頭に置いた上で、僕が個人的に考える「データサイエンティスト」と「機械学習人工知能)エンジニア」の要件を挙げるとこんな感じになります。「俺が考えた最強のネットワーク選手権」状態がまだまだ続いていることを勘案して、色々アップデートしてあります。ちなみに、人工知能ブーム以前から機械学習に継続的に取り組み続けている一部の老舗企業では両者は特に分けずにまとめて「データサイエンティスト」と総称しているケースが多い*1ことを付記しておきます。

データサイエンティスト:「アナリスト」の発展版


機械学習人工知能)エンジニア:「エンジニア」の発展版

  • 講談社MLPシリーズの中で業務に関連する主要な巻がカバーする機械学習の手法と実装
  • 黄色い本(PRML)及びカステラ本(ESL)に相当する一般的な機械学習の知識
  • Deep Learningの実装経験及びその知識、そして代表的なフレームワークの知識(TensorFlow, Keras, MXnet, PyTorch, Chainer, Theano...)
  • 各種トップカンファレンスやarXivの論文含めてDeep Learning諸系統の最先端の研究開発動向に詳しいこと
  • Python、さらに加えて実行速度の速い言語(C++, Javaなど)でコードが書ける
  • SQL文法を含むデータベース操作の技術
  • クラウドの知識

相変わらず僕はガチのエンジニアではないので*2、後者の要件については伝聞に頼る部分が大きいことにご注意ください。ただしこの後者の要件について前回の記事以降改めて別の数人の機械学習エンジニアに意見を求めたところ、やはり大枠で同意というコメントが大半でした(だからと言って正しいとは限りませんが)。最近はGoodfellow本やKeras本やCASIなど新たなテキストも出てきていて必ずしも上記の通りではなくなりつつありますし(というかもっと進んできているというべきか)、場合によっては分散処理がある程度orがっつり書けた方が良いとかあったりもしますが、最大公約数を取れば大体こんなものでしょう。もちろん異論反論大歓迎ですので、色々コメントをいただければ有難いですm(_ _)m


重要なポイントとしては「データサイエンティストは『アナリスト』の発展版」機械学習エンジニアは『エンジニア』の発展版」だというところかと。言い換えると要は「アナリストvs.エンジニア」という住み分け構造に、それぞれ統計学機械学習やプログラミングを付け足していった結果が、「データサイエンティストvs.機械学習エンジニア」という住み分けである、ということですね。


故に、データサイエンティストと言ったら都度データを貰ってきては統計分析するというアドホック分析に、機械学習エンジニアと言ったらシステム上に機械学習アルゴリズムを実装する系のシステム業務に、それぞれ特化する傾向が概して強いように見えます。もちろんお互いにある程度のオーバーラップはあるものの(特にデータサイエンティストは多少は機械学習案件の相談には乗れないと困ることが多いので)、大枠ではある程度はきちんと分けられるべきものかなと。ここのところが少なくとも日本社会では*3あまり認識されていないように思います。


もちろん、これは僕が主観に基づいて線を引いた結果でしかないので、社会全体でもこうでなければいけないなどということはありません。ただ、僕自身の6年弱のデータ分析業界経験から言えば、両者の人材はそもそも向かっている方向性が異なるので、このような線の引き方が最も妥当そうに見えます。


根底に「統計学機械学習への社会の側の理解不足」がある



ちょっと古い記事ですが、個人的には今でもこの記事の通りで統計学は『説明』に使うもの、機械学習は『予測』に使うもの」ぐらいの理解で基本的には十分だと思っています。もう少し付け加えるなら統計学アドホック分析として都度分析するもの、機械学習はシステム実装して自動化に使うもの」といったところでしょうか。線形モデルやロジスティック回帰など互いに重なる部分は大きくあるものの、その思想に相違点があるというのが僕の認識です。


しかしながら、世の中に流布する様々な記事や資料を見ていると「?????」と訝らざるを得ないことが非常に多いです。こういう風に社会の側から理解されている(もしくは理解されていない)のであれば、そりゃうまくいかないことも多かろうよと呆れ返ることも多々あります。


その典型例に近いのがこちらのメディア記事です。

大量のデータを基に自ら学習する「ディープラーニング(深層学習)」と呼ばれる手法を採用。犯罪学や統計学の数式を学ばせ、過去に事件事故が起きた場所や時間、気象条件や地形などさまざまなデータを取り込む

「自ら学習」する「ディープラーニング」に「統計学の数式」を「学ばせ」って、一体何をどうしたらこういう書き方になるんでしょうか。おそらく物凄い伝言ゲームが裏にあったんだろうなぐらいのことは推測できますが。。。念のために一応解説しておくと、ディープラーニング(Deep Learning)も機械学習の一種なので、ある程度事前に定められたモデルに対して訓練データと新規データを用意し、訓練データをより良く再現し尚且つ新規データの予測性能にも優れるように、最適化計画を解いてモデルが含む膨大な数のパラメータを調整していくというプロセスを踏むようになっています。「統計学の数式を学ぶ」って、どこのSFなんですかと。


この例を見ても分かる通り、「ビッグデータ」がブームになってから10年近くが経った今も「統計学」「機械学習」に対する社会の側*4の理解はかなり怪しいままだと言って差し支えないでしょう。むしろ、空前の人工知能ブームが到来して猫も杓子も人工知能だのディープラーニング(カナ)だのに熱を上げ、ブーム便乗商法で中身のない*5「薄い本」や「薄い記事」ばかりが氾濫した結果、かえって歪んだ理解が広まっているのではないかという印象すらあります。


人工知能ブームの過熱で人材の住み分けもカオスになっている


他にも、最近話題になったのが「データサイエンティスト」募集なのに、

というどこかの伝統的日系大企業の求人情報。冒頭に挙げたデータサイエンティストのスキル要件と見比べてもらえれば分かるかと思いますが、必須と歓迎が逆になっています。。。こうなるともう、募集元が何をやりたいのか全然分からないです*6。でもそういう感じの人材募集はこの昨今だとそこら中に本当に掃いて捨てるほど転がっています。


理由を挙げたらキリがないと思いますが、根幹にあるのは「採用する側の統計学機械学習に対する理解不足」でしょう。それらを用いたデータ分析とはどういうものかを理解しないまま、人工知能ブームに乗って生半可どころか知識ゼロでとにかく人材を集めようとすれば、こうなるのは無理からぬことです。


データ分析業界あるあるなのが「ビッグデータ」とか「データ活用」という名の下で行われるプロジェクトの類で、そういうものの大半は必ずと言っていいほど統計学機械学習がごっちゃになった何だか良く分からないミックスみたいなものを総称して「データサイエンス」みたいに呼んだ挙句、そのごっちゃになった微妙な理解のまま人材やリソースの調達に走るみたいなことになりやすいんですよね。。。そうなると、例えば役員会の意思決定のために統計分析をするのか?それとも末端の個々のユーザー向けにone-to-oneマーケティングを行うために機械学習システムを導入するのか?みたいなシンプルな問題にすら、どうあがいてもたどり着けないということになりがちです。



前回の記事で見た通りですが、その辺のカオスを解決していくにはある程度段階を踏んでいかなければいけません。けれども、そこが全然出来ていないがために遮二無二資金とリソースと人員を投下しては失敗する、を繰り返す現場の話も業界内ではチラホラ聞きます。そういうカオスが社会の中に巣食うからこそ、統計分析の仕事に機械学習実装経験のあるエンジニアが呼ばれたり、機械学習システムを作る仕事に統計分析に長けたデータサイエンティストが呼ばれたりするのでしょう。


どちらの人材も「獅子の子落とし」扱いされやすい


元はと言えば、以下の報道を見かけたのがこの記事を書こうと思ったきっかけだったのでした。

無料会員登録すれば全文読めるので興味のある方は読んでみるとよろしいかと思いますが、よくよく内容を読むと結構ひどい話で要約すると

  • 内閣府の20代・30代の若手官僚2人が独学で新たな景気分析のモデリング手法を開発
  • 2人とも統計学機械学習は業務時間外に書籍(自腹)や無料オンラインコースで学んだ
  • 無料利用が可能なtech系各社のデータ分析系APIで実際の分析作業を行なった(無料利用範囲を超えた時は同僚に代わりにアカウントを作ってもらってしのいだ)
  • 2人の上司曰く「官僚は自主的に勉強するのが基本、今後も内閣府としてサポートするつもりはない」
  • 2年前に「霞ヶ関ビッグデータ強化とデータサイエンティストの育成が急務」と言っていたのは肝心の内閣府

というお話です。ぶっちゃけ、これほどのスキルのある人材なら霞ヶ関なんかで燻っていないで山とあるtech企業のいずれかに転職なさってみては如何ですか*7としか思わないんですが(笑)、旗を振ってる内閣府のお膝元でこの有様なのであれば国の取り組みなんて残りは推して知るべしと言った方が良さそうです。


この例に限らず、日本ではデータサイエンティストも機械学習エンジニアも「獅子の子落とし」が如く*8、「何の手助けもない試練の中から這い上がってきた者だけがプロとして扱われ成功する」的な要素が濃いように見受けられます。理由は単純で、肝心の採用する側に経験や知識がないせいか、原則として経験者採用以外は行われないからです。



以前の記事でも取り上げたことがありますが、経験者採用しかされない一方で上記の内閣府の例のようにOJTすらも組織立ってなされないとなると、データサイエンティストや機械学習エンジニアとして一人前になるには自力でゼロから研鑽を積んだ挙句自力で職務経験を積む努力しかない、というかなりつらい立場に追いやられがちです*9


しかしそうなってしまう背景には先述したように、肝心の人材を求める側(現場・企業)に統計学機械学習の理解が不足していて、そもそもどういう人材を採れば良いかも分からないし、どうやって人材を育成すれば良いかも分からないという実態があるのだと考えられます。ここのところを解決しない限りは、恐らくですが今後もこの空前の人工知能ブームにまつわる狂騒曲は各地で繰り返され続けるのでしょう。。。残念ながら。


最後に


という感じで色々ダラダラと論ってきましたが、人材育成やスキル要件に関しては正直言って僕にも名案があるわけではない*10ので、データサイエンティストや機械学習エンジニアになりたいという人は上の方で引用した「未経験者が職務経験を積む方法」の記事などを参考に、皆さん頑張っていただくしかないのかなと。


社会の統計学機械学習人工知能)への理解不足をどうするかという点に関しても、同様にぶっちゃけ現状だと打つ手なしかなと。あえて言えば個別の人・現場・企業ごとに各個撃破の要領できちんとeducation / trainingしていくしか方法はないだろうと考えますが、それも巷に溢れる「薄い本」や「薄い記事」による刷り込みが進んでしまっている状況ではなかなかに手強いです。


そういう意味で言うと、このカオスが収まるには人工知能ブームが一旦沈静化する必要があるのかなと。ブームが過ぎて幻滅期に突入すると色々不景気にはなりますが、おかしな話も同時に減ります。そこからが本当の勝負だと信じて、僕自身は地道に学びながら牙と刃を研いでいようと思います。。。


追記(2018年2月19日)


某所で是非公開なさってくださいとお願いしていた、hottolink社さんのR&D部長でいらっしゃる榊さんのブログ記事が公開されていましたので、是非併せてお読み下さい。

既存の資料を調査する上で気づいたのは、世間で言われるデータサイエンティストの定義が多様すぎる・曖昧すぎるのは皆さんが指摘する通りなのですが、そもそも「自社のビジネス・組織の現状にフィットする定義」を社外に求めることが間違っていたのだと気づかされました。


残念ながら、どんなに適切にかつ汎用的に定義されていても自社にフィットする定義を見つけることは難しいと思います。それよりは、既存の資料を参考にしつつ、自社にとっての「データサイエンティスト」を定義していくことが、自社の求める人材やそれに期待する役割を明確にする上で重要なのではないかと思います。

これはまさに仰る通りですね。このブログ記事で挙げたような要件はあくまでも叩き台に過ぎませんので、個々の企業・現場におけるデータサイエンティスト・機械学習エンジニアの定義をそこから深掘りして考えていって下さると良いのかなと思っています。

*1:その場合は人材募集時に想定業務と要件のところでどちらの系統かを明記していることが多い印象

*2:先日久しぶりにコードを書いてコミットする系の仕事をして、嗚呼やっぱり自分は性格が大雑把過ぎてエンジニアには不向きだと再認識しましたorz

*3:もっとも英語圏のメディアや記事を見ていても大差ない気がしますが

*4:「非専門家たち」と言い換えても良い

*5:それどころか内容が間違っている

*6:何をやりたいかがそもそも決まっていない可能性の方が高いが

*7:何なら引き抜きに行こうかしらん笑

*8:ちなみに実際の獅子というかライオンは子供が崖から落ちたら親が助けに行くそうです笑

*9:その点で大学・大学院で統計学機械学習についての専門教育を受けられる関連専攻の学生・院生さんたちは恵まれていると言って良いかと

*10:ただし僕自身がどうしているかはノーコメント