Upgrade to Pro — share decks privately, control downloads, hide ads and more …

エムスリーにおける 機械学習活用事例と開発の効率化

nishiba
January 28, 2019
6.5k

エムスリーにおける 機械学習活用事例と開発の効率化

Machine Learning Casual Talks #8
https://mlct.connpass.com/event/113173/

nishiba

January 28, 2019
Tweet

Transcript

  1. 自己紹介 • 西場正浩(m_nishiba) • エムスリー株式会社 • AI・機械学習チーム / 採用チーム リーダー

    • 数理ファイナンス(Ph.D.) → 金融機関(クオンツ) → エムスリー(機械学習エンジニア) • 最近プロダクトマネジメントの勉強をしている。 ◦ 【PLAID × M3】「新規事業」を加速するためのサービス開発体制とは? #MLCT いっぱい書き込もう! 機械学習 × プロダクトマネジメント 数年で価値がさらに高まりそう。 クラウド型電子カルテ エムスリーデジカルについて発表!!
  2. AI・機械学習チームの目標 • 2017年7月に立ち上げ、約1年6ヶ月。 ◦ 年間利益目標10億円以上。2年後に50億円以上。 • 利益目標を設定する理由 ◦ 社内で存在意義を説明しやすい。 ◦

    チームを拡大しやすい。 ◦ ユーザーに役に立つものであれば、利益があるはず! ◦ 研究開発にとどまらず、ユーザーに価値を届けることを常に意識する。 ◦ 大きいところを狙う! ”機械学習は掛け算”の場合が多い。 • アルゴリズムのOSS化 ◦ ニュース記事の推薦、関連同士の類似度計算 ◦ 例: Criteoのデータを使ったFactorization Machineの数値実験 ◦ 公開できるレベルのアルゴリズムを作る。作りたい人を集める。 優秀な人の市場価値を適 切にあげていきたい。
  3. AI・機械学習チームのメンバー構成 • 機械学習エンジニア : 2人 (2月から+1人) • データエンジニア: 2人 •

    webアプリケーションエンジニア : 1人 • 企画からサービスリリースまで対応できるようにする。 ◦ データ基盤、機械学習アルゴリズムはセットで改善していく ◦ アルゴリズムはサービスで使われて初めて 価値がある。 ◦ 価値とチームの仕事が結びつくようにしたい。 2017年2月 入社 2017年7月 立ち上げ(1人) 2018年2月 ML Eng入社(2人) 2018年4月 Data Eng入社(3人) 2018年7月 Data Eng入社(4人) 2018年7月中旬 Web Eng入社(5人) 2019年2月 ML Eng入社予定(6人)
  4. AI・機械学習チームの仕事・役割 • マネジメント ◦ チームマネジメント ◦ プロダクトマネジメント ◦ プロジェクトマネジメント ◦

    サービス企画 • 開発 ◦ 機械学習アルゴリズム開発 ◦ アプリケーション開発(機械学習アルゴリズム搭載) ◦ 機械学習基盤開発 ◦ データ分析基盤開発
  5. 1年半で作ったシステム A→Zで命名(欠番は・・・) • Archimedes … ニュース記事の推薦システム ◦ 記事情報を特徴量化 ◦ ユーザーのアクセスログから短期興味・長期興味を数値化

    ◦ 興味に基づき記事を推薦する • Bourbaki … バナー広告デザインの出し分け ◦ ユーザーの属性データに応じて Contextual Bandit方を使って適切なデザインの出し分け ◦ 基本的にユーザー
  6. 1年半で作ったシステム • Cantor … ユーザー視点で関連度を計算する。 ◦ 協調フィルタリングで文書間の類似度を計算 ◦ 類似度をTextCNNを用いて予測 ◦

    CNNと協調フィルタリングを使った日本語文書のリコメンド • Feynman(開発中) … クローラー&検索 ◦ 医療関係者がみたい医療情報と患者がみたい医療情報は当然異なる。 ◦ 論文や医療情報サイトのクローラー ◦ キーワード検索エンジン
  7. 1年半で作ったシステム • Gauss … テキストコンテンツへのキーワード抽出(薬剤・疾患名) ◦ キーワードマッチングによりキーワードを抽出 ◦ TFIDF等の文書内での単語の重要度を計算し、重要なキーワードのみ残す。 ◦

    薬剤名と関連のある疾患名の短縮形が含まれる場合は正式名に変換する。 • Hilbert … 画像診断 • Isaacs(開発中) … キーワードに関連するコンテンツ検索 ◦ 記事内のキーワードに「関連するアイテム一覧」ページにリンクを貼る ◦ 医療キーワードと関連の高いアイテムを検索する。 ◦ 医療用語に注目した文書の類似度計算
  8. チーム立ち上げ時に適したプロジェクト • 機械学習スキルというより企画力 • 成功確率が高そうなプロジェクト企画 ◦ 既存のサービスの改善 ▪ 不確実性が少ない(サービス自体は成功している)。 ▪

    ABテストができる体制になっている。 ▪ 期待収益の計算ができる。 ◦ アルゴリズムで改善できることが分かっている ▪ ルールベースでも良いからアルゴリズムが KPIに影響することが既知。 ◦ すでに自社・他社で成功事例がある。 ▪ 全く新しいアルゴリズムで挑戦!というより既存の成功例を真似る。 ◦ ベンチマークをサクッと作ることができる。 ◦ 横展開できる・次のプロジェクトにつながる。 ▪ 失敗をダイレクトに活かすことができる。 ◦ プロジェクトの中止の基準や判断基準を最初に同意する。 傷口を小さくしたい
  9. プロジェクトの開発体制 • 体制 ◦ サービス担当(ビジネス担当) ◦ 機械学習エンジニア(基本 1人) ◦ データ(基盤)エンジニア(基本1人)

    • エンジニアは1〜3個の掛け持ちをする場合もある。 ◦ 同じ技術が応用できるようにする。 ◦ 技術調査が共通化できる。 ▪ 翻訳と要約 ▪ テキストベースのコンテンツの推薦アルゴリズムを複数サービスで。 ▪ 関連するニュース記事とキーワード検索 • 複数人でアルゴリズムを作らない。 ◦ コミュニケーションコストを極力下げたい。 ◦ 責任を明確にしたい。 自分で考え自分で実現したほうが 楽しい。
  10. 役割分担 • 機械学習エンジニアの役割 ◦ 開発 ◦ BigQueryからデータ取得 → S3やDynamo等に結果を出力 ◦

    Dockerイメージの作成とエントリーポイントの定義 ◦ 単体テストのカバレッジは 80%以上を目指す。品質に MLエンジニアが責任を持つ ◦ 基本的には、1サービス1機械学習エンジニア ◦ jupyter notebookは基本的に使わない。 • 上手くやらないと再現や使い回しが難しくなる。 ◦ 企画 ▪ ユーザーにどのような価値を届けるか? ▪ 精度やバックテストはどのように行うか? 達成基準をどうするか? ▪ 撤退する判断時期・基準をどうするか?
  11. ソースコード • モジュール化 ◦ OSS化 ▪ gokart, redshells ◦ 社内PyPIレポジトリ

    ▪ m3downloader, m3mushroom • タスクの共通化 ◦ データパイプラインライブラリ luigi(gokart)を使ってタスクを定義 ▪ Data Pipeline Casual Talk ◦ データや計算結果の再現が容易 ◦ インターフェイスが統一され再利用しやすい
  12. アルゴリズム • 基本的にテキストの特徴量化が活かせるものを中心に開発している。 ◦ 失敗しても知見・スキル・コードが蓄積される ◦ 成功したら効率的に横展開できる。 • 横展開できるもの ◦

    例: 医療ニュースメルマガの推薦システム。別メルマガや別媒体で使用可能。 • 発展で次のサービスに活きるもの ◦ 例: 記事間の類似度 → キーワードと記事の類似度 → 検索エンジン • 既存のサービスも改善できるもの ◦ 例: 記事間の類似度(記事の特徴量化) → 推薦システムの改良
  13. 今後のチームの展開 • チーム拡大 5人 → 20人以上 ◦ データ(基盤)エンジニア ◦ 機械学習エンジニア

    ◦ プロダクトマネージャー • US案件第一弾を完了させる。 ◦ 年間2プロジェクト以上をUSで行う。 • 医療関係者向け検索エンジン開発 (次に詳しく) ◦ 医療情報に簡単にアクセスできるようにする。 • 全サービス(20以上)のUX改善&新機能追加 • 数十億円規模のサービスを作る。 もっと医療に変革を!! USに移籍もあり 抜本的に改善できるサービスを作りたい
  14. 医療関係者向け検索エンジン開発(検討中) • 仮説 ◦ 医療関係者が一般的な検索エンジンで検索するのは困難では? 【理由】: ▪ 患者や一般の人が知りたい情報と医療関係者が知りたい情報に乖離が大きい • 【糖尿病の専門家】と【非医療従事者】が知りたい情報は違うはず。

    ▪ 専門的な医療情報はクローズドなサイトで提供されている • エムスリーのサイトはログイン後しか見れない。 • 目標 ◦ 医師が行う医療情報の検索の 90%はエムスリー経由で行われるようにする。 • 現状 ◦ クローラーの準備開始 ◦ 作りたい人募集中!! 今ならメイン開発者になれるよ!!!
  15. 個人のキャリア(※かなり個人の感想) • 会社員として年収◦千万ほしい(SO含む)。 ◦ 一流の戦略コンサルや投資銀行はもらっている額 • そのために ◦ 給料の高い業界で働く ◦

    給料の高い会社で働く ◦ 勤め先の昇給の仕組みや水準を理解する ◦ ※ 給料はアウトプットの大きさやスキルの高さで決まるわけではない • 40歳前後で起業するかも。 ◦ 成功確率が高いらしい。 • そのために ◦ プロジェクトと結果を出すために必要なことは何でもする。 ◦ 組織で誰もしない仕事も何でもする。 ◦ 上司と目標だけ決めて後は責任をもって自由にやる。丸投げされたい。 ▪ 例: 収益(機械学習)、採用人数(組織)、集客(勉強会) この時点で色々と限定される 意外と知らない人が多い 出世したいなら 上司を出世させ ることも重要
  16. 個人のキャリア(※かなり個人の感想) • ビジネス貢献 ◦ ユーザー満足度、UXの向上 ◦ 利益貢献 ◦ ビジネス企画 •

    組織貢献 ◦ 組織運営 ◦ 採用 ◦ 組織目標へのコミットメント • 技術貢献 ◦ 機械学習 キャリアの最初は下の方が重要 今の私は上の方が重要 ※ 常に3つの軸を考えたほうが良い。 半年後には経営にももっ と積極的に関わっていき たい。
  17. Q&A Q ばんくしさんへ、スマホで機械学習の状態を監視や操作をするために使った技術を知りたいです! A そうですね。私も知りたいです。 Q プロジェクトの取捨選択や推進をできるレベルの人材ってどれくらいいますか? A 機械学習に関しては一人です。 Q

    AIチームの目標が売上◦億円にするのめっちゃ良いですが、売上の定義ってどうしてますか?レコメンドを導入したとして、そのレコメンドからのコン バージョンは100%AIチームの売上になるんでしょうか? A 既存のアルゴリズムと比較して改善幅をAIチームの利益貢献にしています。他グループとダブルカウントになっている部分もあります。 Q エムスリーのMLチーム、MLエンジニア以外にデータエンジニアとアプリエンジニアがいるそうですが、データエンジニアとアプリエンジニアに常に仕 事がある状況になっていますか?個人的にそういうチーム構成を考えているけど、MLエンジニア以外の常時的な仕事を生み出すことが難しそう。 A 2000年創業なのでデータ基盤の整備など仕事は多いです。さらに技術調査等のタスクもあります。例えばAWSをメインで使っていたのですがGCP の検討も必要です。現状、何かとタスクは多いです。
  18. Q&A Q 特徴量を自分で作ってロジスティック回帰を使う、NNのモデルを使う、アンサンブルをするなどで、精度と複雑さや時間とのトレードオフがあると思い ますが、この辺実務ではどのように対応されていますか? A 今のところ、妥当な開発期間内で作れる&サービスの要求レベルを満たす範囲で良い精度のものを採用しています。特にトレードオフは意識してい ないです。 Q サービスのインフラは何を使っていますか?(AWS, GCP,

    オンプレ...) ミニマムにスタートアップするとしたらどのインフラを選びますか? A クラウドが良いのでは?今はAWSが多いですが、GCPも良さそう。 Q 医療とITでビジネスインパクトが一番大きいのはカルテの共有と診断の(やや)自動化とのことかと思います。M3ではクラウドカルテのサービスがあ るようですが、どれだけ使われていて、分析がなされているのでしょうか? A ぜひ、一緒にチャレンジしましょう!!
  19. Q 運用の際、モデルの精度の許容範囲はどのように決めていますか? A サービス担当(オーナー)の人と相談して決めています。決定権はサービス担当にあると考えています。 Q 自分の会社でも利益を目標にしているのですが、機械学習やディープラーニング以外を使っていなくても自チームの調査で課題を見つけて他のソ リューションで解決した場合も実績に加算していますか? A 加算していません。だたそういうのめっちゃ好きです。 Q

    採用活動に関連して,ML関連の技術を持っている人材は不足していると言われていますが,未経験or経験が浅い人材でも採用して自社で鍛える上 げることもありますか? A 私は未経験で採用されました。バックグラウンドが応用数学のPh.D.で数値計算系のシステムの開発経験がありました。また、転職活動中にPRML を読みました。証明や練習問題も解いて、主要なアルゴリズムはpythonで実装しました。 Q すべてのMLフレームワークに精通していますか? A していません。 Q&A
  20. Q&A Q MLは大きいところを狙いたいので老舗大企業と組みたい vs 老舗大企業は組織間の壁が厚く辛い のジレンマに陥ることってありますか(私は陥って います) A 特にそういうことは感じていないですね。エムスリーは大企業だと思いますが、ベンチャーと組むことも多い印象です。 Q

    tfidfでキーワード抽出するときの、文章集合ってどうやって定義してますか? A やりたいタスク次第ですね。例えば、医療用語が上位になりやすくしたいのであれば、一般的な記事等も付加します。 Q 商品のレビュー情報から特徴量ベクトルやクラスタをつくりたいのですが、TF-IDF、Okapi BM25以外にオススメの手法ありますか? A テキストの特徴量化ということですよね?最近SCDVを活用しました。結構いい感じです。 Q 「上司の評価をあげる」ために具体的にどんなことをされてましたか? A 大きくはチーム目標を達成するために成果を上げることと、マネジメントのコストを下げること。上司が他のこともできるようにしたいと思っています。
  21. Q&A Q 機械学習エンジニアが1人から2人になった時には、どんなきっかけがあったのでしょうか。 A 立ち上げ当初から求人は出していました。いい人が来たので採用しました。採用は長期戦なので人手不足が深刻になる前から準備したほうが良いと 思います。 Q ゼロから環境を作る場合に、おすすめのインフラ構成を教えていただきたいです。(学習環境、推論環境) 条件次第とは思いますが。 A

    あまり私は詳しくないのでなんとも。 Q 5人で あの数のプロダクト回すのたいへんじゃないですか? A はい。大変です。うちに来ませんか? Q 西場さんに質問です。失敗プロジェクトの割合はどれくらいでしょうか? 投資が承認さない辛みとかありますでしょうか? そのとき、どんな対策を? A 3割4割は失敗に近いと思います。失敗しても辛くならないように、技術やソースコードを他のプロジェクトでも活用できるようなプロジェクトを立ててい ます。また成功確率を上げるためにプロダクトマネジメントを勉強しています。
  22. Q&A Q 業務経験がない新人エンジニアの良い教育方法とかあったら教えて欲しいです。 A 私は教育はできないです。なので、チャレンジングなプロジェクトをアサインして自分で学んでもらうしかないです。失敗は許容します。 Q 「プロジェクトの中止の基準をきめる」時の決め方ってどうされてますか?単純にROIが出てれば継続って感じでしょうか? A 想定していた結果がでなかったら中止ですね。プロジェクトを立てる⇒データを調査する⇒アルゴリズムのプロトタイピングする⇒システムを開発する ⇒ABテストをする

    といった流れが基本ですが、各ステップでネガティブに想定とは違うと中止したほうが良いと思います。 Q チーム立ち上げ時のプロジェクトとして、成功確率が高そうなものの項目がいくつかありましたが、 その中でも優先順位として上のものや経験則とし て成功しやすかったものはありますか? A 「すでに自社・他社で成功事例がある。」は優先順位が高いと思います。
  23. Q&A Q MLエンジニアという職種になると、MLを使わないという選択をした場合にどう関わっていくのかが気になりますが、そこの橋渡しはどうしています か? A 橋渡しが基本です。 Q クラウドにおけるデータセキュリティ対策はどうしていますか? A 私は詳しくないです

    Q なんばんくしもらえますか? A 実力次第で結構貰えると思いますよ。 Q エムスリーのMLチームの人数が少ないのは能力に対する要求水準が高いからですか? A 高い・低いは主観的なのでわかりません。私は高くないと思っています。最低年間60本くらい論文読んで、6本くらい数値実験を再現する。ということ or それに準ずる実績があることを最低ラインにしたいとは思います。勉強好きな人が好き。