【機械学習エンジニアの悲喜交々:前編】導入から運用ノウハウまで。FIVEの動画広告システムを作り上げてきた精鋭エンジニアが語る機械学習の現場

FIVE は「動画配信テクノロジー」と「モバイルファースト・クリエイティブ」を組み合わせて、スマートフォンでの映像流通を一手に担う事業を展開しています。

そんなFIVE社が「life at FIVE.」と題し刊行するインタビューシリーズ。

<前回までの記事は以下のリンクより>

これまで三回に渡り、個々人のバックグラウンドからビジョンまでを中心にお送りしてきた「life at FIVE.」。第四弾にあたる今回は少々趣向を変え、エンジニアによる座談会の模様を前篇後編の二回に渡ってお送りいたします。

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

「機械学習」
人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のこと。開発者があらかじめ全ての動作をプログラムするのではなく、データをAI自身が解析し、法則性やルールを見つけ出す特徴を持っている。つまり、「トレーニング」により特定のタスクを実行できるようになるようなAIのこと。

座談会参加エンジニア

小西 祐介 / ファイブ株式会社 Co-founder, CTO
2009年、Google日本法人に新卒2期生として入社。Google Play、Android、Googleショッピングのエンジニアリング、製品開発を担当。2014 年にFIVEをGoogle日本法人新卒1期生の菅野圭介と共同設立。ICPC、TopCoder Openなど、国内外のプログラミングコンテストで多数入賞。IPSJ Science Research Award for Young Scientists 受賞。

佐藤 喬之 / ファイブ株式会社 エンジニア
前々職にてコマース系のWEBサービス開発に参加。その後広告業界に興味を持ち、前職にて広告関連の仕事に従事。その後設立間もないFIVEに参画。入社以来、FIVEの基盤を支える様々なシステム開発を担当。現在も担当領域は多岐に渡る。

類地 孝介 / ファイブ株式会社 エンジニア
前職もベンチャー企業に在籍し、主にソーシャルゲームの開発に従事。ベトナム支社を立ち上げ、様々な新規サービスの開発・運営を一手に担当。その後、当時まだ社員数が十名以下だったFIVEに参画。2017年にはHaskell入門の書籍を執筆・刊行している。

牟田 秀俊 / ファイブ株式会社 エンジニア
Googleの新卒第一期生として入社。アメリカ法人にて機能開発に従事。在籍中に携わったアプリのコンバージョン数を数えるパイプラインのメンテナンス業務などを通し、もっと基礎的な部分のシステム開発に携わりたいという想いから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言語に似ているが、簡単なコマンドによりいろいろな機能が実現できる。標準では用意されていない機能も比較的容易に拡張できるメリットがある。

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

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

一同:(爆笑)

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

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

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

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

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

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

次回の後編はいよいよ具体的な機械学習の現場へ!まだまだ続くエンジニア座談会もお楽しみに!


ファイブ株式会社's job postings
3 Likes
3 Likes

Weekly ranking

Show other rankings