雑な感想とメモ【eureka Meetup #02 - Machine Learning Eve -】@20170518

eurekaさんのオフィスで開催された勉強会に参加してきたので、忘れないように簡単な感想とメモを残しておく。 あくまで自分の備忘のためかつ、発表を聞きながらとったメモなので、詳しくは近いうちに上げられるであろう発表スライドを参考にするのが良い。

基本的に機械学習未経験者だが、興味はあったし、eurekaさんのオフィスを見てみたいというのもあったので目的は達成できたかなと思う。ピザも美味しかった(夜の炭水化物を控えているのになんてことだ)。

肝心な内容については、機械学習未経験者だったのでついていくのがやっとだった。聞いたことが用語もあったのでその辺はふんふんと聞いていた。

1人目の@pottavaさんの発表は機械学習について導入から浅く広く解説してくれていた印象があり、わかりやすかった。1人目でよかった。 元はAWS機械学習をするという話をするつもりだったそうだが、この変更はかなり僕にとっててはありがたかった。

2人目の村上さんはNVIDIAの方で、終始NVIDIAの宣伝という感じだったが、GPUがどういう風に機械学習の流行に影響を与えていたか、についてより具体的に知れたのはよかった。 また、ディープラーニングフレームワークについて、簡単にまとめられていたので参考にできると思う。

3人目、4人目は、eurekaの中の人で、実際にpairsでどのように機械学習を利用しているか、導入しようとしているか、という話が聞けたので、今後、もしも機械学習をプロダクトに入れることになった場合には参考になると思った。あんまり詳しいところは、confidencialと言っていたので、メモもいい感じにカットしてあるつもり。

4人とも、機械学習を触ったことがなくても、クラウドAPIでもローカルでも良いからまず触ってみよう、ということを言っていて、こういう勉強会で少しでもモチベーションが上がっているうちに手を動かしておいた方が良いなと思っている。 実際無記名のアンケートでもそんな声がちらほらあったように思う。

TODO: 上げられた資料のリンクを貼る


以下メモ

あまり本には載っていない機械学習の話

@pottava さん SUPINF

機械学習で何が変わるの

どんなふうに応用されているのか

サービスに導入するには

職種によって考えるべき

先ずはクラウドAPIを叩いたり本読んだりしよう

おすすめ書籍 「Hands-On Machine Learning with Scikit-Learn & TensorFlow」 使うところから、運用までカバーしている

機械学習のおさらい

機械学習とは

客観的事実をコンピュータに与えなにかの結果を出力させる 実テータを食わせて、コンピュータに計算させる 関数の定数をコンピュータが決めさせる

学習と推論

y = ax + b でaとbを決める段階が学習 yを決める段階が推論

優れた推論のためには優れたモデルが必要

解きたい問題によってaとbの決め方が変わる

例)恋愛 * 機械学習

  • その人との相性
  • その人の5年後の収入予測
  • 純粋に幸せになれるのか など

機械学習と深層学習

ディープラーニング = 深層学習 多層構造のネットワーックを用いた機械学習 解決したい問題によって使うロジックが異なる

例)AlphaGoなど

実践的なネットワーク

層の深さ 152層が意味のある深さということが言われ始めている できるのか?→フレームワークが助けてくれる 利用者はアルゴリズムの実装をすることなく各種パラメタの指定だけで学習・推論ができる

フレームワークを使って、アルゴリズムの実装を知ることなく実装できる TensorFlow、MXNet、CNTK、Caffe2、Chainer…

機械学習の流れ

  1. データ収集
  2. データ前処理
  3. 学習
  4. 推論

データ収集

自社製品に沿ったデータ 一般公開されたデータで勉強もできる(MNISTなど)

データ前処理

pythonだけで済むならそれでいいものの専用ソフトウェアやサービスを使わないと辛い

学習

推論

ビジネスと直結するので24/365の運用

ローカルでもできるのでまず叩いてみるというのが重要

GPUディープラーニング開発を始めてみよう

村上真奈さん NVIDIA

NVIDIANVIDIAGPUについて

1999年にGPUを発明 NVIDIA = AIコンピューティングカンパニー ビジュアルコンピューティング(NVIDIAを救ったのはバーチャファイター) ↓ GPUコンピューティング ↓ AIコンピューティング CUDA汎用計算による計算が根幹

GPUロードマップ

計算を早くするために2年に1度ハードウェアのアーキテクチャを変えている 現在はPascal次はVolta 頭文字がシリーズを表している

GPUディープラーニング

ディープラーニングを加速s流3つの要因

認識精度向上のためモデルはディープに、データはより大きく

ディープラーニングフレームワークはたくさんある

ディープラーニング CUDA数学ライブラリ cuBLAS、cuDNN、cuSPARSE マルチCPU間通信 ビデオ解析 インファレンス

どのようなフレームワークでもCPUモード、GPUモードがありGPUモードにするとNVIDIAGPUが使われる

複数GPUを使うと、かなり線形的に計算速度が上がる

ディープラーニング

ディープラーニングを始める際に悩みがちなこと

計算リソース

オンプレ 既存のワークステーションNVIDIA GPUを増設 - PXIex16レーンに空きはあるか? - 電源容量は足りているか?(例えばGeforce TITAN Xならピークで250w使う)

クラウド - AWSMicrosoft Azure、Google Cloud Platform、 IBM Bluemix Infrastructureなど Deep Learning AMI

ディープラーニングフレームワーク

はじめはやりたいことによってググるべし コミュニティが活性化しているものを選ぶべし

hello worldの敷居が高い問題

ゼロから作るDeepLearning

イラストで学ぶディープラーニング

Pairsの成長を支えている機械学習の使いどころ

Tamaki Tetsumoto eureka

  • BIチーム立ち上げ
  • KPIの設定
  • 効果測定 Pairsは会員数500万人

Pairsのサービスモデル

ユーザーストーリー

Register Search Like Match Message Meet…

ユーザーとサービスの接点

  • Mail & Push
  • Help Center

組織体制

Acquisition UI/UX CRM CC / PCC

  • Brand & PR(オフラインでユーザーにアプローチするチーム)

CTOチーム - BI - Under the hood: 高い技術で解決 - SRE - QA

改善できそうなところ

  • より相性のよいお相手を表示してマッチ効率をあげたい
  • やり取りのスピードを上げてモチベーションを維持したい
  • 適切な対象者に効果的なお知らせを
  • 投稿監視や問い合わせのコストを削減したい

どうやって改善するか

  • 獲得予測モデル: 予算の再激化
  • 検索アルゴリズム: スコアリング調整
  • テキスト審査システム: 審査の自動化
  • KPI設計: ユーザセグメント最適化
  • 画像審査システム: 自動審査

具体例、顧客獲得予測

  • 新規獲得、流入予測の作成
  • 広告コストと獲得件数をExcelに取り込む
  • 式を組み、線形モデルを作成
  • 手動で調整を加えて予測を作成
  • 広告予算と獲得予測の作成

今後の展望は予測モデルを機械学習で獲得予測を算出する データの前処理で精度を上げていきたい

適切な対象者に適切訴求をする

各ファネルで効果的な訴求が何かを調査 - 登録経路 - いいね回数 - 返信までの時間

ゴール設定: 登録後の定着率アップ データセットの準備: いいね送信数やプロフィール設定 考察&再調整: 寄与率と特徴量の予測相関から着地を決める

Pairsの投稿監視システム

James eureka

投稿監視(Bayesianフィルター)

メールは99.5%なのに はじめは81%しかできなかった

考えられる理由

  • 件名がない
  • 日本語をトークンに分けるのは難しい、事例も少ない
  • Pairsの細かいルールが多い
  • メッセージは普通にメールより短い

→ パラメータチューニングで96%まで上げた

画像監視

暴力や裸 半分以上は友達も写っている写真

顔認識の背景

Viola-Jones

初めてのリアルタイムアルゴリズム(SNOWはこれ?)

Viola-Jones顔認識

  • 顔の明暗を見る
  • Haar Feature
  • 編集されたら厳しい
  • 質が悪ければ厳しい
  • 正面を見ていないと厳しい

OpenCV コードはわかりにくい

  • Goラッパーがわかりやすい
  • 顔認識の実装が簡単

Google Vision API

→ カメラを見ていて質が高ければViola-Jones

実際は組み合わせて使った