wantedly/machine-learning-round-table

[2024/03/21]推薦・機械学習勉強会

Opened this issue · 3 comments

Why

推薦・機械学習勉強会は、推薦や機械学習、その周辺技術を通じてサービスを改善することにモチベーションのある人達の集まりです。ニュースやブログから論文まで、気になったものについてお互い共有しましょう!

発信のため、ここは public にしてあります。外部からの参加をご希望の方は合田/hakubishin3角川/nogawanogawa林/python_walker まで DM を送るか、Wantedly Visit の募集(https://www.wantedly.com/projects/391912) よりご連絡ください!

What

Wantedly では隔週水曜日に

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

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

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

prev: #237

オフラインとオンラインのA/Bテストを通じてオープンチャットのレコメンドモデルを改善

LINEでのオープンチャットのレコメンドモデルを改善するプロセスの話。

  • オープンチャットレコメンドの難しさ
    • 同じユーザーが短期間のうちに複数のチャットに参加するといったことが発生しにくい
    • 同じチャットに対して再参加するといった動きは起きづらい (ECでのレコメンドとの違い)
  • 使っているモデル: Field-aware Factorization Machines
  • 開発の流れ
    • オフラインテスト
      • ポジションバイアス等を減らすために、レコメンド経由以外で発生したチャットへの参加を正解ラベルとして利用
    • オンラインテスト
      • ABテスト
  • オンラインテスト・オフラインテストの辛み
    • サービスが軌道に乗ってきた段階で改善幅が小さくなり、オフラインテストとオンラインテストが相関しなくなってきた
    • オンラインの結果を受けてオフラインをやり直し、再度オンラインという流れを繰り返していると、変更点が多岐にわたることで問題箇所が見えづらくなった
  • 解決策:Adhoc ABテスト
    • treatment群の比率を小さくしてABを行う
    • 変更点を段階的にtreatment群に積み上げていって、変更箇所の効果を検証していく
    • 最後に1:1分割でABテストを行う

Sequential A/B Testing Keeps the World Streaming Netflix

概要

NetflixにおけるSequential A/B testの取り組みを紹介した記事。複数回のパートで連載されている。

  • Part1: Continuous Data(2024/2/13)
    • Play-Delay(再生ボタン押してから再生されるまでの時間)のようなContinuousなデータの分布に対するtest
  • Part2: Counting Process(2024/3/19)
    • Successfulな再生の開始回数のようなCountのデータに対するtest

モチベーション

ソフトウェアの変更によりバグやパフォーマンスのデグレが生まれてユーザ体験に悪影響を与えないか?を確認したい。

要求は以下

  • 問題がある場合はそれを早く検出したい
  • 偽陽性はなるべくなくしたい
  • 平均値や**値だけではなく、分布の変化を検出したい

一般的なfixed-nやfixed-timeなA/Bテストでは以下のような問題がある

  • 十分なデータを集めてから検定、だと問題がある場合ユーザ体験への悪影響が長くなる
  • かといって少量のデータで検定、だと大きな変化しか検出できない
  • また、何回も繰り返し検定を行うと第一種過誤が増幅する(Peekingと呼ばれる問題)

ソリューション

  • Sequential TestによってPeekingを回避しながら、蓄積されていくデータに対して逐次的に検定を行うことができる
  • (なぜそれが可能なのか?という中身を理解できていないので、論文読みたい)

参考文献

QA

Q. 記事内のグラフのデータってシミュレーションデータ?by林さん
A. Netflixの実データとのこと

GitHub Actions に Python のパッケージインストーラー uv を導入する

1コミットごとに発生するBillable timeが1 Workflow単体で見ても26分も節約することができました! 当然ですが、アジリティにも影響する重要な要素ですので、課金の節約以上に開発速度や開発体験の向上が期待できます!

パッケージインストールがめっちゃ速くなるらしい、すごい。

進化的アルゴリズムによる基盤モデルの構築

この辺の知識がなさすぎて全くわかってないけど、基盤モデルを組み合わせて新しい基盤モデルを作る手法らしい。画像と日本語LLM、みたいな組み合わせで学習させることができるらしい。