Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2019/12/05] 推薦・機械学習勉強会 #28

Open
yu-ya4 opened this issue Nov 28, 2019 · 6 comments
Open

[2019/12/05] 推薦・機械学習勉強会 #28

yu-ya4 opened this issue Nov 28, 2019 · 6 comments

Comments

@yu-ya4
Copy link
Contributor

yu-ya4 commented Nov 28, 2019

Why

この会は、推薦や機械学習、その周辺技術を通じてサービスを改善することにモチベーションのある人達の集まりです。

発信のため、ここは public にしてあります。外部からの参加をご希望の方は Wantedly よりご連絡ください!

What

Wantedly では隔週木曜日に

  • 推薦の評価指標について議論したい
  • 〇〇っていうライブラリ / フレームワークを導入してみたい
  • 他社の基盤事例をみんなにシェアして自社の基盤開発に活かしたい
  • もっと推薦を良くするためにどんなものが必要か議論したい

といった話をする「推薦・機械学習勉強会」を開催しています。
この ISSUE はその会で話すネタを共有するための場所です。

話したいことがある人はここにコメントしましょう!
会の間に話した内容もここにメモしましょう!

prev: #26

@yu-ya4
Copy link
Contributor Author

yu-ya4 commented Nov 28, 2019

Instagram の推薦システムの概要

Link: https://ai.facebook.com/blog/powered-by-ai-instagrams-explore-recommender-system/

推薦システムの設計を記述する独自言語 IGQL

以下のような形で推薦システムのアルゴリズムを記述できる。

user
.let(seed_id=user_id)
.liked(max_num_to_retrieve=30)
.account_nn(embedding_config=default)
.posted_media(max_media_per_account=10)
.filter(non_recommendable_model_threshold=0.2)
.rank(ranking_model=default)
.diversify_by(seed_id, method=round_robin)
  • C++ で実行。実行効率最強。
  • Python ライクなアルゴリズム記述
  • 実験が爆速に。

アカウントを embedding する ig2vec

ユーザの過去のアカウントとの interaction 系列を文書とみなして word2vec ライクな学習を行う Ig2vec というアルゴリズムを利用して,似ているアカウントを判定する。同じような interaction 系列を持つアカウントは似ている。(ユーザとアカウントを使い分けてるので注意。)

スクリーンショット 2019-12-05 17 28 29

embedding だけを用いてアカウントのトピックを予測する分類器を訓練させて,その分類性能で embedding 自体を評価。
さくっと personalize したランキングを作れた。

推薦システムの仕組み

sourcing stage と ranking stage の2層に分かれている。
前者でザックリと推薦する候補を絞って,後者で候補を並び替えてランキングを作成する。

スクリーンショット 2019-12-05 17 48 22

  • Candidate Generation
    • ユーザの過去の interaction したアカウントを seed アカウントとする
    • seed アカウントに近い/似ていいるアカウントを取得する
      • embedding を利用
    • アカウントが持つコンテンツ(写真とか動画とか)を取得する
    • ここで不適切なコンテンツの filtering も行う
    • ユーザごとに 500 件にまで絞る
  • Ranking candidates
    • 3 つのステージがある
      • First pass
        • 軽量なモデル。候補のコンテンツの蒸留に用いる。
        • 500 -> 150
      • Second pass
        • 軽い NN。もうちょい候補を絞る。
        • 150 -> 50
      • Final pass
        • 本気の NN。最終的なスコアリングを行う。
        • 50 -> 25

スクリーンショット 2019-12-05 18 02 30

  • ユーザの各コンテンツへの positive な interaction を予測する。
  • multi-task multi-label (MTML) neural network
  • interaction の重みは人によって変える(人によって like と save の重みが違う)
  • ヒューリスティックなシンプルなルールを追加して多様性を考慮している。
  • 同じアカウントのメディアとかはあまり重複しないようにペナルティを与えている。

@hakubishin3
Copy link
Collaborator

Target Encodingはなぜ有効なのか

Target Encodingの有効性をシンプルな実例を使って紹介しました.
https://speakerdeck.com/hakubishin3/target-encoding-hanazeyou-xiao-nafalseka

@yuko-i
Copy link

yuko-i commented Dec 4, 2019

Hugging Face の Transformers v2.2.0 リリース

https://github.com/huggingface/transformers/releases/tag/v2.2.0

4つの新しいモデルが追加

  • ALBERT
    BERTの軽量+高速+高精度(?) 版 / H(hidden)×V(vocabulary)からE×V+H×Eへ因数分解 / レイヤー間でパラメータを共有
  • CamemBERT
    フランス語で学習させたモデル
  • DistilRoberta
    RoBERTaの蒸留モデル, RoBERTaの二倍の速さ
    RoBERTa: BERTの改良版 / 動的Mask / 連続文書適否の学習排除 / バイト単位のトークン化
  • GPT-2 XL
    OpenAI発のテキスト生成モデルの大きいやつ?

seq2seqモデルを簡単に作れるようなクラスが用意された

  • PreTrainedEncoderDecoder

Screenshot 2019-12-04 23 18 32

  • Model2Model

Screenshot 2019-12-04 23 17 19

解説+サンプルソース
https://medium.com/huggingface/encoder-decoders-in-transformers-a-hybrid-pre-trained-architecture-for-seq2seq-af4d7bf14bb8

@agatan
Copy link
Contributor

agatan commented Dec 5, 2019

それなりの速度でユーザのフィードバックを推薦に活用する方法を知りたい

近々 People でやりたい、というわけでもないのだけど、単純にどうやるのか興味があったので。

@agatan
Copy link
Contributor

agatan commented Dec 5, 2019

前に ALBERT については読んだので参考までに: #18 (comment)

@shugo1107
Copy link

https://medium.com/karakuri/%E9%96%93%E9%9A%94%E5%8F%8D%E5%BE%A9%E3%81%AEdeep-learning%E3%81%B8%E3%81%AE%E5%BF%9C%E7%94%A8-2cde9ef903e7

@yu-ya4 yu-ya4 changed the title [2019/12/5] 推薦・機械学習勉強会 [2019/12/05] 推薦・機械学習勉強会 Dec 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants