TFUG #3
TFUG #3に参加しました。
2017/02/22 @Google(六本木)
https://tfug-tokyo.connpass.com/
メモメモです。
Retty
講演者:RettyのCTO
Retty流『2200万ユーザを支える機械学習基盤』の作り方
http://qiita.com/taru0216/items/dda1f9f11397f811e98a
今日は機械学習基盤のDocker部分を話す。
Rettyの紹介
Rettyトップページ
https://retty.me/
Recommend + Happy = Retty (創業6年ちょい)
「食を通じて世界中の人々をHappyに」
「人から探せるグルメサービス」
月間利用者数2200万人。
Rettyトップユーザーズ:ユーザからグルメな人を発掘してレコメンドに利用。
https://retty.me/top-users/
RettyはCGM(consumer generated media)。
利用者が作っていくメディア。
Rettyで扱うデータ
- 自然言語:口コミ300万件
- 人:行動、ソーシャルグラフ
- 画像:料理1000万枚
- お店:全国80万店舗(常にアップデートが必要)
DeepLearninig, Word2Vec, LDA, LSI・・・
機械学習基盤@Docker
インフラ:GPU付き自作サーバを全自動ネットブート(Kubernetes + Docker + Tensorflow)
使い方:SSHでログイン
コーディング:PythonユーザはJupyter Notebook
機械学習エンジニアは自分の要件にあったGPUサーバを選んで使う。
DockerはKubernetesで構築管理、OS(Ubuntu)部分はjuju + MaaS。
配備しているCuda Docker、Anaconda Docker、SSH Docker・・・は全て別々に配備されるDockerイメージだが、Fromは同じ(コアDockerイメージを用意し、継承ビルドしている)。
シェルプロンプトにビルドバージョンが出るようにし、Dockerイメージバージョンを明示している。
新しいDockerイメージはKubernetesで全マシンに配布している。
Kubernetes構築はjuju + MaaSで実現している。
ノートPCにも同じ環境を用意した(Ubuntu Desktop)。
DeepLearningの自然言語処理応用(文字単位CNN)
課題
日本語では単語の切れ目がわからない。
すもももももももものうち ← どこで切れている?
MeCabはあるが、辞書が必要→未知の単語は対応できない。
Rettyは口語表現(口コミ)→ギャル語とか。
解決策:character-level CNN
文字列のベクトル化(Word2Vec)。しかしWord2Vecは分かち書きが必要。やっぱりMeCab?
文字単位CNN:文字毎にCNNを適用し、単語はNNで見つけさせる。
https://papers.nips.cc/paper/5782-character-level-convolutional-networks-for-text-classification.pdf
http://qiita.com/bokeneko/items/c0f0ce60a998304400c8
カラフルボード株式会社
SENSY
http://sensy.jp/
パーソナルAI。感性を学習する人工知能。
弱いAI(特化型AI)。
適用分野
toC: ファッション、chatbot、グルメ。
toB: toCサービスを応用して企業提供。API。コンサルティング。
機械学習・深層学習事例
ファッション:ユーザのコーディネート
各画像の推定スコア(CNN、chainerを利用)
→商品企画の方向性、需要予測、MD計画の最適化
→今後はtensorflowによる分散学習が必要(速度がでない)
グルメ:お酒の推薦
chatbot:サポート業務のAI化
広告CVR予測:オートエンコーダーで予測回帰モデル
入力層1000次元 → 中間層200次元 → 出力層1000次元に戻す。
シグモイド関数。
Tensorflowのデバッグ
GMOインターネット
NNで広告配信ユーザの最適化
Akane:ユーザごとにより適切な広告を配信する。
多層パーセプトロンのNN。
ユーザのWeb行動履歴(とてもスパース)、データ加工(圧縮、Embedding)→機械学習。
Kerasを利用(書くのが簡単)。
https://keras.io/