【機械学習エンジニアの悲喜交々:前編】
導入から運用ノウハウまで。FIVEの動画広告システムを作り上げてきた精鋭エンジニアが語る機械学習の現場
  • Co-founder, CTO 小西 祐介
  • Software Engineer 佐藤 喬之
  • Software Engineer 類地 孝介
  • Software Engineer 牟田 秀俊
【機械学習エンジニアの悲喜交々:前編】
導入から運用ノウハウまで。FIVEの動画広告システムを作り上げてきた精鋭エンジニアが語る機械学習の現場
  • Co-founder, CTO 小西 祐介
  • Software Engineer 佐藤 喬之
  • Software Engineer 類地 孝介
  • Software Engineer 牟田 秀俊
今回は、エンジニアによる座談会の模様を前篇後編の二回に渡ってお送りいたします。

テーマは「機械学習の悲喜交々」。最近ニュース記事などで頻繁に見かける「機械学習」と呼ばれる技術に対して、CEOの菅野が聞き手となり、現場で実際に向き合っているFIVEエンジニア陣の本音を赤裸々に語っていただきました。嬉しさの裏に隠されている人知れぬ努力、未来的だと呼ばれる革新技術運用の泥臭さ。そんな機械学習の裏側を“用語解説付き”でお送りいたします。
小西 祐介

小西 祐介

Co-founder, CTO

東京大学大学院修士課程にてコンピューターサイエンスを修了後、2009年に Google Japan に入社。Google Play、Android、Google ショッピングのエンジニアリング、製品開発を担当。2014 年にFIVE を設立。ICPC や TopCoder Open など、国内外のプログラミングコンテストで多数入賞。IPSJ Science Research Award for Young Scientists 受賞。
佐藤 喬之

佐藤 喬之

Software Engineer

大阪大学大学院生物科学科修了後、大手インターネット企業にてEコマースシステムの開発、広告配信システムの開発やビッグデータ分析等に従事しながら、プライベートではスマートフォンアプリの開発やウェブサービスを運営。2015年、FIVEへ参画。
類地 孝介

類地 孝介

Software Engineer

東京工業大学大学院修士課程にて制御理論を修了。株式会社オルトプラスのスタートアップ、東証一部上場、ベトナム支社のスタートアップに関わり、サーバサイドの開発、運用、継続的機能拡張、最適化を行う。2016年にFIVEへ参画。関数型言語Haskellを好む。
牟田 秀俊

牟田 秀俊

Software Engineer

東京大学大学院修士課程にてコンピューターサイエンスを修了後、2009年に Google Japan に入社。その後2012年に Google アメリカ本社へ異動し、スマートフォンアプリ向けの広告に広く携わる。2017年FIVEに参画。

インタビュアー/ファシリテーター:菅野圭介 CEO

自分が当たり前に使ってたものが、外に来ると全然当たり前じゃなかった

さて、今回は機械学習分野のエンジニア座談会ということでよろしくお願いします。聞き手は菅野なのですが、えーと、社外秘もいろいろあると思いますが一旦あんまり気にせず(笑)、ざっくばらんに話していければと思います。

一同:よろしくお願いします。

折角なので、一応主題を設けたいと思っております。ズバリ「機械学習エンジニアの悲喜交交」でいきたいな、と(笑)。

機械学習に携わっていると、人間にできない大きなジャンプが生まれることもあれば、その十倍くらい大変なこともあると思うんですけど、実際に現場でのその泥臭さを含めて色々と話を訊いていきたいと思います。
世の中的に、機械学習というものは”銀の弾”というような扱われ方をすることがあるわけですが、その背景には並々ならぬ努力と時間を要しているという実情を伝えていきたいなと。また、それってそもそも機械学習ではなく「最適化」なのでは?という実態もけっこう多い。僕らも事業を行ってきたなかで、機械学習はデータ量が十分ではないタイミングで導入しても仕方がなくて、「最適化」が十分に効果的なフェーズもあるということも経験則としてわかっていたりします。事前に予測した事と結果というのが往々にして外れる事も多いのでその時の対処の仕方や分析の方法などなどが肝だったりもするわけです。

というような観点から、いまこの瞬間に機械学習に携わるエンジニアとしてのリアリティみたいなところを共有していこうという趣旨でございます。それでは、まずは小西さんに話を振りたいと思います。


小西
小西

はい、よろしくお願いします。


機械学習って巷では良く耳にしますね。ただ、機械学習がワークするタイミングについてお訊きしたいなと。ビジネスの状況だったりそこで扱うデータの量だったり様々な側面があると思いますが、機械学習導入のタイミングとして適した時期ってあるんですかね。われわれの事業を振り返ってみてどうです?


小西
小西

「機械学習をいつ始めれば良いのか」というのは、結論“明確ではない“というのが正直なところです(笑)。ただ、データが足りていない時に何をやっても意味がなく、人手でなんとかやってきた時代から、キャンペーン数や新しいメディアもどんどん増えていくと、毎回人手でやっていることが非効率になってきます。そこのタイミングでちょっとずつ強化していくのが良いかなと。


なるほど。この辺について、佐藤さんや類地さんはFIVEの有史以来のシステムを見てきていますが、いかがでしょうか?


佐藤
佐藤

実際僕らの配信ロジックも徐々に人手で出来る限界が近づいてきたというか。
当初はネットワークの規模的に「このメディアにはこのキャンペーンを流せば広告効果が高い」というのを把握できていたので、人手で運用した方が効率は良かったんですが、そこから徐々にフリークエンシーやユーザー属性データなどをつかった配信アルゴリズムに改善していくなかで、今までヒューリスティックに書いていた部分がどうしても最適化しづらくなってきたんです。そこで「そろそろ限界だよね」という話に自然となっていきました。それまで「ホワイトリストやブラックリストを適切に運用しましょう」とか「予算管理をちゃんとしましょう」というオペレーショナルな施策の方が売上のインパクトは大きかったんですけど、そこは大きく変わりましたね。

「フリークエンシー」
一人の消費者(ユーザー)が一つの広告に何回接触したかを示す用語。リーチが、ターゲット全体に対する広告の接触率を表すのに対して、フリークエンシーは接触の深さ(つまり回数)を示す。
また、一人のユーザーが一つの広告に対して接触できる数を指定する機能を「フリークエンシーキャップ」と呼ぶ。

「ホワイトリストとブラックリスト」
配信可能な案件やメディアのリストをホワイトリスト、NGな案件やメディアのリストをブラックリストと呼ぶ。
クライアント(広告主)にとってのホワイトリストとブラックリストの定義は主に、自社の広告が配信可能なメディアか否か(ブランドイメージを崩さないか などの理由が主)。メディアにとってのホワイトリストとブラックリストの定義は主に、そのメディアの広告枠に配信可能なクリエイティブか否か(メディアの景観に合っているか などの理由が主) である。

類地
類地

パフォーマンス調整に限らず、僕らのスタンスとして「どんなシステムでも、まず最初はとりあえず人手で運用してみて、人手が足りなくなってきたらそろそろ自動化するか」という感じなのですが、全体的にシステムが大きくなってきたので導入数も増えているというのが実情ですね。


小西
小西

ほんと、色々作りましたね(笑)。「とりあえず全部人手でやってみるけど、ログだけは絶対全部溜めておく」という決まりを作って。これまではそのログを後から検証して作るものを定めてきたんです。そんな中で、徐々にデータも溜まってきたので機械学習へ移行してきたという感じです。


一般的に、ログは全部取っておかなくて捨てちゃうケースもある?


小西
小西

いやぁ、そんなもったいない事考えたことがないからわからないです (笑)

一同:(笑)


小西
小西

けれど、最初から「これは後々役に立ちそうだ」と思うログを残せるように最初からシステムを仕込んでおいたりはしてますね。


アーキテクチャの部分とかSDKの作り方などの面でも「どのログ残すか」というところで、最初から織り込んで設計するわけですね。

「アーキテクチャ」
ハードウェア、OS、ネットワーク、アプリケーションソフトなどの基本設計や設計思想のこと

「SDK」
「Software Development Kit(ソフトウェア開発キット)」の略であるシステムに対応したソフトウェアを開発するために必要なプログラムや文書などをひとまとめにしたパッケージのこと。
アプリへの広告配信は主にこのSDKを用いる。広告配信に必要な機能を一まとめにし、配信タグでは出来ない、アプリの挙動と密接に連携した広告配信が出来るようになるのが最大のメリット。

小西
小西

そうですね。広告パフォーマンスに効きそうな部分はサーバーに全部伝えておくという感じです。


類地
類地

そこら辺の勘所がないと、最初からシステム向上に効果のありそうなものもわからなかったりするので。一昔前だとログ分析周りって結構めんどくさくて…。大量のデータがあったとしてもクエリを一個打つだけで何十時間もかかりますという状況だったりして。「それをできるだけリアルタイムにするために、ログのスキーマをちゃんと設計するところから考えて、実際のアプリに組み込んで実装して、そのログが溜まったら解析しましょう」というようなすごい長いことをやらないといけなかった。
今はBigQueryのような便利な解析プラットフォームがあるので、とりあえず最初の段階で必要そうなものをログに全部入れ込んでおいて、後で全部さらって解析しましょうという感じなのでだいぶ楽になりました。


小西
小西

本当良い時代になりましたよね (笑)。



牟田さんにお訊きしたいのですが、牟田さんはGoogleの巨大な広告システムをつくっていたわけですが、Googleが二十年近くかけて構築してきた機械学習ベースのシステムと、現状のFIVEのプロダクトとの間にはだいぶ距離があるのも事実で。その振れ幅を客観視した時に、今のFIVEのシステムや機械学習に対するアプローチの中で何か感じることってあったりしますか?


牟田
牟田

自分が当たり前に使ってたものが、外に来ると全然当たり前じゃなかったってことを一番実感しました (笑)。「CTRが何%上がった」という計算をするだけでも一苦労なんだなぁと、常々実感してます。「CTRが5%上がったのが本当に5%だったのか」というのを検証するのが凄く大事で。

「CTR」
Click Through Rateの略で、広告がクリックされる確率を示す言葉。
小西
小西

そうですね、全部自分で集計して、その数字が本当に統計的に意味があるのかどうかという疑問を解消するためにRを叩くところまで、ワンストップでやらなくてはいけないって感じですね。

「R(言語)」
統計解析やその結果をグラフィカルに表示するためのシステム「R」用の言語のことである。
R言語は見かけはC言語に似ているが、簡単なコマンドによりいろいろな機能が実現できる。標準では用意されていない機能も比較的容易に拡張できるメリットがある。
牟田
牟田

自分でどう評価して、その評価方法が本当に正しいのかと言うのをこれもまた自分で検証する部分が、基本的だけど楽しいですね。

それって、なんか、大変なだけに聞こえるんだけど(笑) 楽しい事なのかな?(笑)

一同:(爆笑)

小西
小西

いやぁ、それはエンジニアにしかわからないですよ (笑)。上から下まで全部理解できるっていうのは楽しいことです。


やっぱりその、原理的なところに触れる喜びみたいのがあるのかな?


小西
小西

今までわかってなかった訳じゃないけど、実際に自分で作ってみようというのが楽しいですよね。


牟田
牟田

車輪の再発明はみんなやっちゃう(笑)。既成品を使うのが絶対正しいっていうのは分かっているけど、作り直すことはそれはそれで楽しい。


まぁでも、車輪の再発明をしようと思ってしてる訳ではないでしょ?


小西
小西

勿論、そういう訳ではないですね。それが一番早いからそれをやっているという感じです。


まだまだ続くエンジニア座談会。次回の後編もお楽しみに!

life at FIVE

MEMBER'S INTERVIEW