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

[2024/05/27]推薦・機械学習勉強会 #249

Open
chimuichimu opened this issue May 24, 2024 · 5 comments
Open

[2024/05/27]推薦・機械学習勉強会 #249

chimuichimu opened this issue May 24, 2024 · 5 comments

Comments

@chimuichimu
Copy link
Collaborator

Why

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

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

What

Wantedly では隔週水曜日に

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

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

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

prev: #247

@chimuichimu chimuichimu changed the title [2024/5/27]推薦・機械学習勉強会 [2024/05/27]推薦・機械学習勉強会 May 24, 2024
@chimuichimu
Copy link
Collaborator Author

chimuichimu commented May 24, 2024

ベクトルデータの容量を96%削減するBinary Embedding

課題感

RAG におけるドキュメントの Embedding の保管で、データ容量が大きくなってしまう

BinaryEmbedding とは?

  • ベクトルの各要素の値を1 bit にまで落とし込んで、容量を削減する手法
  • 32 bit の float データを 1 bit にするので、データ量は96%ほど削減できる

精度とのトレードオフ

精度の影響を以下の3つの手法で確認

  1. binary embedding
  2. int8 embedding
  3. binary embedding with rerank

シンプルな1.の手法では全体的に精度が悪く、ドキュメントのサイズが大きくなった時の下がり幅も大きかった。一方で3.の rerank を入れた手法では元の embedding と同程度の精度が出せることが確認できた。

Infinite Nature and the nature of industries: This 'wild' demo shows the diverse possibilities of AI

Google I/O で展示された Infinite Nature という生成的推薦とマルチモーダル意味検索デモについての記事

@hakubishin3
Copy link
Collaborator

hakubishin3 commented May 26, 2024

データ基盤のためのリーダブルSQL

データ基盤は継続的に運用してバグを発見・修正する必要がある
そのために管理しやすいSQLを書くためのポイントが紹介されている

  1. 適切なCTEsをつけてあげる
  2. サブクエリを使わない
  3. finalのCTEsを必ず使う
  4. import CTEsとFunctional CTEsを分けて書く
  5. (import) CTEsでは必要なものを明記する
  6. joinしたカラムにはjoin元のCTEsを明記する

@KKaichi
Copy link

KKaichi commented May 26, 2024

News Recommendation with Category Description by a Large Language Model

概要

  • LLMを使用して詳細なカテゴリ説明を生成しニュース推薦システムに応用する手法を提案
  • MINDデータセットを用いた評価実験で、NAML、NRMS、NPAなどの最新のコンテンツベースの推薦モデルに対して適用し、AUCが最大5.8%向上した

手法

  • ニュースカテゴリ説明の自動生成
    • GPT-4を使用してカテゴリの説明を生成
    • 実験で使用したMINDデータセット内の全270ニュースカテゴリの生成された説明の平均語数は57.7語であった
      プロンプト

あなたは素晴らしいニュースライターです。読者に記事に関するより詳細で有益な情報を提供することで支援します。ユーザーが「The news category is category」という形式でニュース記事の特定のカテゴリを入力します。入力されたカテゴリについて約50語で詳細な説明を英語で提供してください。可能な限り、引用符(")やアポストロフィ(')、アスタリスク(*)、および同様の強調のための記号の使用を避けてください。

ユーザメッセージ

ニュースカテゴリはtv-golden-globesです。

出力

TV-Golden Globesカテゴリは、特にテレビ業界におけるゴールデングローブ賞に関連するニュースに焦点を当てています。これには、ノミネート、受賞者、式典での注目すべき瞬間、反応、そしてイベントを取り巻く論争やハイライトが含まれます。このイベントはテレビにおける優秀さを称えます。

  • カテゴリ説明を追加の入力特徴として推薦モデルに統合
    • 𝐷𝑡𝑖𝑡𝑙𝑒をニュースタイトルテキスト、𝐷𝑑𝑒𝑠𝑐を生成されたカテゴリ説明として、推薦モデルの推論フェーズでは、BERTの特殊なSEPトークンを使用して𝐷𝑡𝑖𝑡𝑙𝑒と𝐷𝑑𝑒𝑠𝑐を連結し、生成されたテキストをニュースエンコーダに入力。
    • 事前学習済みモデルDistilBERT-base(distilbert-base-uncased)とBERT-base(bert-base-uncased)を使用してエンコーディング

感想

  • ちょうどこちらの記事を参考に実装する機会があり、とてもわかりやすかったのでこちらも共有とさせてください!

@Hayashi-Yudai
Copy link
Collaborator

Hayashi-Yudai commented May 27, 2024

機械学習モデルの解釈を営業にわかりやすく説明するための機械学習モデルを作った

営業の人に機械学習モデルを売ってもらうためにモデルの解釈性について考えた経験について紹介されている。

  • 背景
    • 顧客を説得して広告を表示するユーザーセグメントを判別するためのモデル「AIセグメント」を使ってもらいたい
    • 実際に商談するのはエンジニアではなく営業のメンバー
  • 重視したポイント
    • 納得度:モデルの出力が直感的にただしそうと思えるかどうか
    • 意外性:人によるセグメント分けに対して優位性があるかどうか
  • 手法
    • Global Surrogate Model:メインモデルの出力を近似する線形モデルを学習
    • 納得度や意外性につながる説明をするための説明変数を選定
    • 複数パターンの説明変数を使ったモデルを用意
      • 顧客にとってもっとも刺さる説明を営業メンバーが使い分けられるようにするため

@nogawanogawa
Copy link
Contributor

nogawanogawa commented May 27, 2024

データ基盤のためのリーダブルSQL

上で書かれてたので割愛。非常に参考になる。

Chronon — A Declarative Feature Engineering Framework

Airbnbの特徴量エンジニアリングフレームワークの話。
公式ドキュメントとか見ると実質Feature Storeのように見える)

https://github.com/airbnb/chronon

  • さまざまなデータソース(バッチ、イベントストリーム、エンドポイントで持っている情報etc... )から同じ意味の変換を定義するのがそもそも大変
  • しかも、変換のタイミングによって不完全な変換になることがあり、学習時と推論時の特徴量の分布がおなじようにならない

こういった課題に対して、複雑かつデータソースごとの変換を記述せず、Accuracy パラメータによって変換による分布の形状を選べるようにしたのが特徴。

image

過去5時間以内にユーザーによって閲覧された回数を集計する例

image

特徴量は、低レイテンシのエンドポイントを介するものもあれば、一定の間隔でデータを更新するのが正しいものもある。これらの特性はAccuracyパラメータで設定することでどれくらいの不確かさを許容するかを設定していくらしい。

「OSSになったよ」というブログはこちら: https://medium.com/airbnb-engineering/chronon-airbnbs-ml-feature-platform-is-now-open-source-d9c4dba859e8

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