freeeの開発情報ポータルサイト

サービスをつくるエンジニアが機械学習を学ぶべき3つの理由

こんにちは。freee 共同創業者 CTO の横路です。

freeeは現在、「スモールビジネスに携わるすべての人が創造的な活動にフォーカスできるよう」というミッションのもと、テクノロジーによる中小ビジネスのバックオフィス効率化とデータドリブンな経営意思決定支援を実現すべく、スモールビジネスAIラボチームを立ち上げて活動しています。

その中で、サービス・プロダクトづくりをリードし顧客に価値を届けてきたソフトウェアエンジニアこそ機械学習を学び、顧客の課題解決のいちオプションとして身につけはじめるべきだという実感を得たので、エンジニアリング対象としての機械学習について紹介します。

サービスをつくるエンジニアが機械学習を学ぶべき3つの理由

サービス開発で顧客に価値を届けるソフトウェアエンジニアこそが機械学習を学ぶべきだと思う理由は、以下の3つです。

  • サービスが対象としているトピックについて 深いドメイン知識を持っている
  • サービスを開発して実運用できる 高い技術スキルを持っている
  • 機械学習エンジニアリングに関する ツールやノウハウが民主化してきている

機械学習を活用したプロダクトづくりで重要なのは、データそのものと、鋭い課題設定・特徴選択・実装・モニタリング・解釈のイテレーションです。そして、そこで必要になるのが、深いドメイン知識と実運用システムをつくるための技術スキル、最低限の機械学習エンジニアリングの知識です。

極端なことを言えば、これまでサービス開発でドメイン知識や技術スキルを得てきたエンジニアであれば、アルゴリズムの深い知識がなくてもデータドリブンなプロダクト開発をスモールスタートできる状況になっています。機械学習エンジニアリングのためのツールやノウハウは、それくらいにまで民主化されて手の届きやすいものになってきています。

もちろんデータアナリスト・データサイエンティスト・データエンジニアと明確に役割を分けたチームで密にやっていくという方法もあるだろうし、正確さや精度がビジネスにクリティカルに効くサービスなど、シニアなデータサイエンティストの参画が不可欠になるサービスもあると思います。しかし、サービスづくりの当事者であるエンジニア自身が「機械学習で顧客にどんな価値を届けていけるか」「シニアデータサイエンティストの手を借りるとどんな世界が実現するのか」の勘所を得るためにも、まずはじめてみることが重要だと考えています。

サービスづくりの現場においては、普段から深くドメイン知識に触れ、サービスづくりで課題を解決してきたエンジニアこそ、機械学習をつかったサービスづくりに最短でキャッチアップし、高速なローンチ&イテレートをすることができると思います。

機械学習を学ぶハードルは本当に高いのか?

実感として、機械学習エンジニアリングの全体観が見えればハードルは思ったほど高くないと思います。

ハードルが高く見える理由は3つあると思っています。

  • データがないと始められない
  • 機械学習の本や講習を受けただけでは、サービスに活かせるようにならない
  • 投資対効果が見えず、スモールスタートのしかたがわからない

データがないと始められないのは本当で、顧客の課題解決のためには、まず顧客の課題をよく理解して、それらに関するデータを集めなければなりません。逆に、先行するサービスでデータやドメイン知識の蓄積がある場合は、それだけで機械学習を検討してみる価値があると思います。

座学とサービス応用のギャップについては、これまでアルゴリズムの詳細や数式をはじめから強く意識させ、理論から理解していくタイプの入門書が多かったことも一因としてあるかと思います。それだけで挫折した人も多かったかと思いますし、Couseraの機械学習コースを受けたはいいが、次に何をやればいいのかわからないという現象もよく聞きます。

この問題や投資対効果が見えない問題については、機械学習のプロセス全体をおおまかに把握し、機械学習入門がカバーしている領域がその一部だということがわかれば、次のステップが見えてくると思います。Googleの例をはじめ、機械学習エンジニアリングのスモールスタートのやりかたなど、実践ノウハウが少しずつ共有されはじめてきたこともあり、実運用ノウハウの共有はこれからさらに活発化していくと思われます(後述しますが、freeeも発信していく予定です)。

f:id:yokoji:20170228103944p:plain

機械学習をプロダクトに活かすために、何をどう学ぶか

機械学習のプロセスをおおまかに把握したら、機械学習をプロダクトに活かすために最初に学ぶべきは、次の3ステップです。

  • 機械学習で解くべき問題を見つける
  • 基本的なアルゴリズムとツールの勘所を知る
  • データを扱うためのお作法・効果検証や投資判断の勘所を知る

一番重要なのは解くべき問題をシャープに見つけることで、そのためにはまず自分のドメイン知識がある分野に絞ってはじめてみることです。どんな領域のどんな問題に機械学習が適用されているのか?については、このページが参考になります。ほとんどの問題は機械学習でなくても解けますし、まずは簡単な経験則に基づいたルールベースの方法から始めて、シンプルなルールでうまくいくなら機械学習を使う必要はありません。

基本的なアルゴリズムとツールの勘所については、ある程度デファクトスタンダードが決まってきていて、それらを使っていくうちに精度と計算量のバランスなどがわかってくる印象です。アルゴリズム毎のインタフェースの違いはツールがうまく吸収してくれていることが多いので、アルゴリズム毎にライブラリを覚えるような手間は少ないです。

このあたりを身につける手段は、本当に充実してきていて、Pythonのモダンなツールで手を動かしながら機械学習の手法を学ぶ方法はたくさんあります。

筆者は、オンラインで対話式に手を動かして学べるDataQuestをベースに学習しつつ、Hands-On Machine Learning with Scikit-Learn and TensorFlowで足りないところを補完しました。Python機械学習プログラミング監訳者による読み方が参考になる)もとてもよかったです。

データを扱うためのお作法としては、データクリーニング・前処理・評価の習慣をつけておくことが重要です。手法はいろいろありますが、こちらも基本的にツールに含まれているので、簡単に利用することができます。データの素性を正確に把握しておくことは適切な結果を得るために非常に重要で、提供サービスの性質によっては、かなりシビアに見ていく必要があります。

効果検証については、戦略的データサイエンス入門が秀逸だと感じたのでぜひ一読をおすすめします。機械学習の性能で見るべきメトリクスを、ビジネス的な要件を踏まえた上で見る癖をつけられるようになりますし、体系的なデータリテラシーの基本が身につきます。メトリクス計測の仕組み自体は基本的にツールに含まれています。

サービスをつくるエンジニアのための機械学習勉強会を開催します

freeeでは以上の学ぶべきポイントを踏まえ、機械学習エンジニアリングの勉強会を2つ企画しています。

  1. 4月に「機械学習を活用したサービスづくり」について他社と合同勉強会をやります
  2. 社内の機械学習勉強会を、社外にも開放します

合同勉強会では、機械学習で解くべき問題をいかに見つけてどのようにプロダクトに昇華させたのか?開発プロセスやイテレーションはどうしているか?など、実際にサービスをつくり運用している各社から、実践的な内容をお伝えする予定です。

社内勉強会では、Couseraの機械学習コースの内容をベースにKaggleの演習問題を織り交ぜて、Pythonで手を動かしながらキャッチアップしています。これまでサービスづくりはバリバリこなしてきたが、機械学習にキャッチアップする時間がまだとれていないエンジニアの方に、ぜひ参加してほしいと思っています。

f:id:yokoji:20170228104141j:plain

これらの勉強会の詳細については、後日本ブログにて公開しますので、みなさまぜひご参加ください。

freeeの機械学習への取り組みはまだこれから加速していくところですが、本日プレス発表を行った金融機関向けのリアルタイム経営シグナルや、前回ブログで紹介したようなSpark GraphXを使った取引ネットワーク推測、会計向けの共通言語処理ライブラリ、会計上の処理モレ・ダブリ・ミスを自動で見つけてサポートする機能、経理処理マッチングの開発などもはじめていて、今後ブログや勉強会で具体的な取り組みや、機械学習で溜まっていく負債をどう解消していくかなど、実運用ノウハウを随時発信していく予定です。

まとめ

ハードルが高いと思われがちな機械学習ですが、サービスづくりに必要な機械学習は民主化が進み、エンジニアリングの対象になってきている実感があります。データの蓄積があるサービスに携わる、業務理解と技術力のあるソフトウェアエンジニアこそ、いま機械学習をはじめるべきではないかと思います。

機械学習の要求するエンジニアリングの癖をソフトウェア開発のベテランたちが深く理解し、(機械学習に比べたら)歴史あるソフトウェアエンジニアリングのプラクティスとうまく対比・融合させて発信・共有しあうことで、次世代のサービスづくりのプラクティスを築いていきたいですね!

最後に

freeeでは、データドリブンなサービスづくり、環境づくりを一緒にやっていくエンジニア、そして彼らと共に価値をつくりだすシニアデータサイエンティストを募集しています。セクシーなデータセットとサービスづくりのエンジニアリングのプロたちが集うfreeeで、データドリブンなプロダクト開発をリードし、一緒に日本の生産性を上げるチャレンジをしませんか?