生成型レコメンドモデル Sona を知って思うことなど

Yandex の生成型レコメンドモデル Sona をきっかけに、次のトークン予測をユーザー行動の予測や Web UX の改善へ応用する可能性を考えてみました。

音楽の推薦とWebサイトでの次の行動を、トークンの流れでつなぐイラスト

ゼンクエンジニアのすぎもとです。

レコメンドエンジンというジャンルがあります。よく見るのは EC サイトで「この商品を買った人におすすめ」みたいな「何かをした人に、何かを推薦(レコメンド)する」やつですね。実はゼンクもこのレコメンドエンジンを持ってます。 TenVoice というサービスがそれになります。場面に応じておすすめ商品を自動的に提案する仕組みで、飲食店などを想定して作られています。これは中身は割とシンプルで、特定の数式(ここがキモです)で重みづけを行い、それに基づいておすすめを算出するものです。

生成型レコメンドエンジン Sona

で、最近ニュースを見ていておもしろいレコメンドエンジンがあったので紹介したいと思います。それが、 Yandex 社が発表した「Sona」というレコメンドエンジン、というか「レコメンドモデル」というべきものですね。

Sona は、Yandex Music 向けに開発された生成型レコメンドモデルです。自社サービスの推薦基盤として開発され、技術レポートに仕組みや実験結果が公開されています。候補の選定からランキングまでを一つのモデルで扱う、という取り組みです。YandexによるSonaの発表

これ、面白いことに生成AI的な考えでつくられてるんですよ。

LLMがこれまでの文章から次のトークンを順に予測して「今日は晴れです。」を生成するフロー図

文章を生成する LLM の仕組みは単純化すると、 これまでのトークン列を見て、次に来るトークンを予測する というものです。Sona ではこれを、 これまでのユーザー行動を見て、次におすすめするアイテムを予測する という問題に置き換えています。

曲そのものを「トークン」にする

特に面白いのが、推薦候補を生成するときに、各楽曲を単純な曲IDではなく、Semantic IDと呼ばれる3個のトークンの組 で表現する点です。

イメージとしては、次のようになります。数字は説明用の例です。

曲A → [152, 837, 41]
曲B → [152, 837, 92]
曲C → [152, 211, 17]

この ID は単なる連番ではありません。楽曲の音声やメタデータから得た特徴に、ユーザーの聴き方に関する情報を反映し、それを圧縮して作ります。そのため、内容や聴かれ方が似た曲は、Semantic ID の先頭部分を共有しやすくなります。数字そのものの大小が、曲の似ている度合いを表すわけではありません。Sona Technical Report:Semantic Tokenizer

そしてモデルは、次のような流れで推薦候補を生成します。

Sonaがユーザー行動から3個のトークンを予測し、曲の候補を取り出してランキングするフロー図

LLMが文章をトークンごとに生成するのと、かなり似た方法です。ただし、3個のトークンが必ず一つの曲だけを指すとは限らないので、対応する候補を取り出してからランキングする処理も入ります。Sona Technical Report:Overall Framework

「次のトークン予測」を「次のおすすめ予測」に使うわけですね。

「次の行動予測」なら何でもいけるんじゃないの?

このモデルを見ていて、これって結局「それまでの行動から次の行動を予測する」ってことだよなーと思ったんですよね。つまり、これって、レコメンドじゃなくても使えそうじゃないですか?

たとえば、Webサイト上のユーザー行動も、順番に並べれば一種のシーケンスになります。

トップページ、料金ページ、FAQ、比較ページの順に進んだ後の行動を予測するフロー図

ここで「?」に入る次の行動を予測します。対象はページ遷移だけでなく、次のような操作や結果でもよさそうです。

  • ボタンのクリック
  • FAQの展開
  • 検索
  • 戻る操作
  • フォーム入力
  • 離脱

Web上の操作を「言語」のような系列として扱えば「このユーザーは次に何をしそうか」をモデル化できそうです。

そうすると、どの導線を自然に進んでいるのか、どこで迷っている可能性があるのか、どこから離脱しそうなのか、といった UX 分析にも使えるのでは? って思うんですよね。たとえば、料金ページと FAQ を何度も行き来したあとに離脱するケースが多ければ、「料金について必要な情報を見つけにくいのかもしれない」という仮説を立てられます。

A/Bテストと組み合わてみる

ただし、モデルが学習できるのは、基本的に「現在のUIでユーザーがどう行動したか」なので、そこから、このボタンを移動すれば UX が改善すると直接断定することはできません。

そこで、A/Bテストと組み合わせます。

行動ログから改善案の作成、A/Bテスト、ユーザー反応の取得、再学習へ進むUX改善サイクル図

こうすると、モデルは「どこを改善すべきか」「どの仮説から試すべきか」を絞り込み、その仮説が本当に有効かどうかをA/Bテストで確かめる、という役割分担になります。

先ほどの例なら、料金ページにFAQへのリンクを追加したり、よくある疑問の答えをその場で読めるようにしたりする案を試行します。そのうえで、フォームの完了率や目的の情報への到達率など、改善したい指標が実際に変わったかを確認します。

Web分析で何が起きたかを把握することに加えて、このアプローチでは、

  • このユーザーは次に何をしそうか
  • そして、どこで想定した導線から外れそうか

という問いにも踏み込めそうな気がしています。

このレコメンドモデルの考え方、いろいろアイデアが思いつきそうじゃないですか?

定性的な予測と定量的な予測

ところで――話がどんどん広がってしまい恐縮ですが――ゼンクでは需要予測のサービスをやっています。需要予測ではたとえば過去の売り上げデータをもとに未来の売り上げを予測する、といった定量的な予測になります。

いっぽうで、今回取り上げたこれらの行動予測は、定性的なデータを扱えることになります。ここが似てるようで異なるアプローチです。これ、両方を組み合わせると結構ビジネス的に価値のあるサービスになりそうだな、なんてことを思ったりしました。

というわけで、何か具体的にビジネスを思いついたわけではないのですが、いろいろ可能性のあるサービスだなと思ったので記事にしてみました。このジャンル、まだまだ面白いものが出てきそうで楽しみです。

それでは、また。