blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2024.11.07 インターンレポート

「Pococha」のユーザに喜んでもらえるアイテムレコメンドについて考えた話

by Yuri Takaki

#internship #recommendation #pococha #NLP #word2vec

はじめに

自己紹介

はじめまして、2024年のAIスペシャリストコースのサマーインターンシップに参加した、高木柚李です。
修士一年で、大学では脳科学を専攻しています。趣味でWebアプリ周りの技術を勉強したり、インターンで購買データを分析したり、福島県で ハッカソンを開催 したりしています。
▶︎ より詳細な自己紹介は こちら

本記事の内容

今回のインターンシップでは、ライブコミュニケーションアプリ「Pococha」における、課金アイテムのレコメンドアルゴリズムの開発に取り組みました。ユーザへの提供価値を踏まえてアルゴリズムを考える経験は、新鮮で勉強になりました。本記事では、技術面とビジネス面の両面から、Pocochaにおけるレコメンドの役割について、考えたり感じたりしたことをまとめます。

こんな人に読んでほしい

  1. DeNAのサマーインターンシップに興味がある人
  2. NLPを活用したレコメンド技術に興味がある人
  3. 良好なユーザ体験を実現するレコメンドについて考えてみたい人

課題説明

インターンシップでは、Pocochaにおけるアイテムレコメンドへの活用を目的として、アイテムの埋め込み表現の獲得と、レコメンドへの活用方法の提案に取り組みました。すなわち、アイテムに対して何らかの類似性のようなものを定義する方法を考え、それをもとに実際にレコメンドを行ってみることに取り組みました。

そこでまず、Pocochaの特徴を整理し、レコメンドシステムに求められているものについて考えてみました。

Pocochaとは?

Pocochaとは、株式会社ディー・エヌ・エー(DeNA Co., Ltd.)が提供するライブコミュニケーションアプリです。ライバーとリスナーの距離感が近く、一人ひとりと丁寧にコミュニケーションをとる文化が魅力です。初見のリスナーに対してもユーザ名を呼んで挨拶をしてくれるので、はじめて使うときは驚く人も多いかもしれません。

ポコチャ

またPocochaには、ライバーとリスナーが協力してランクアップを目指す、サクセスストーリーとしての側面があります。リスナーから応援されるとライバーのランクが上昇し、それにともなって配信報酬も向上する仕組みになっています。ライバーの中には職業としてライバーを実施している方も少なくなく、リスナーは配信を視聴したりリアクションを行ったりすることで、推しのライバーを気持ち・生活の両面で支援できます。

Pocochaのアイテムとは?

アイテムとは、配信の視聴中にコイン(アプリ内通貨)を消費して使用できるデジタルコンテンツで、現在 400種類以上 (期間限定も含めれば600種類近く)の個性豊かなアイテムが存在しています。 アイテムを使用すると、配信・視聴中の画面にさまざまなエフェクトが発生して、配信を盛り上げることができます。価格は1コインから5555コインまで幅広く、気軽にリアクションを示したり、高級感のあるエフェクトで配信を盛り上げたりなど、さまざまな使い方ができます。 アイテム

アイテムレコメンドで実現したいこと

Pocochaはアイテムの種類が豊富なため、かえってどのアイテムを使っていいかわからない、という問題が存在しています。リスナーがアイテムを使う場合、①自分でタブを開き、②スクロールして400種類の中から使いたいアイテムを探し、③アイテムを使用する という動作が必要です。ライブ配信を楽しんでいるときに、これらの動作を行うのは面倒です。もしレコメンドシステムが①と②の部分を最適化できれば、アイテムを使うための時間短縮と、新しいアイテムに出会うハードルを下げるという2点でユーザ体験を向上できます。

ここで、レコメンドの最適化とは何か、目標をより具体化して考えます。まず、アイテムがユーザに対して提供する価値として、たとえば以下のものが考えられます。

  1. リアクション手段の多様化
  2. ライバーや他リスナーとの一体感獲得
  3. 金銭面でライバーを応援する手段を提供

今回はとくに、2の他ユーザとの一体感獲得に着目します。Pocochaにおいては、お決まりのアイテム使用パターンを共有することが配信枠の一体感を構成する重要な要素です。たとえば、リスナーのランクアップなど特定の目標を達成した際にアイテムでお祝いする文化が存在したり、特定のアイテムが使用された際にはライバーが一発芸を行うなど配信枠独自のルールを設けている場合もあります。このように、「枠の特性なども考慮した、シチュエーションにあったアイテム」を、「決まったタイミングで使用する」ことが、配信枠の一体感を醸成し、リスナーがその一員としての承認を獲得するために重要です。これを踏まえて、文脈とタイミングを踏まえたアイテム使用を支援するようなレコメンドの実現を今回の目標とします。

実装したレコメンドシステム

レコメンドシステムに求められるもの

文脈とタイミングを踏まえたアイテム使用を支援するようなレコメンドを実現するためには、文脈を捉えたアイテム推薦と、それをタイミングを逃さないうちに素早く提示する仕組みが必要です。

まず文脈については、配信中に直近使用されたアイテムの履歴と、その配信枠でよく使用されているアイテム傾向を組み合わせて予測を行います。たとえば、連投が起きやすいアイテムが使用されたら他のユーザにも連投を推薦したり、「たまやー」というアイテムが投げられたら「かぎやー」という返答アイテムの使用を促すなど、アイテム同士の相関を利用します。また配信枠ごとの傾向を取得するために、そのライバーの過去の配信でよく使用されているアイテムを優先して推薦します。

次にタイミングについては、推薦候補の個数を制限することと、モデルの軽量化によって実現します。推薦候補については、選ぶ手間を省くために10個以内とし、5秒以内に推論を行えるような軽量なモデルを目指します。

実装したレコメンドシステムの構造

今回は、2-topレコメンドモデルというレコメンド方法を採用しました。これは大量の候補の中から2段階の絞り込みを行うというモデルであり、効率的に推薦対象を決定できます。実装したモデルを以下に示します。 提案モデル まず、600種類のアイテムの中からアイテム同士の類似性が高いもの200個を抽出し、その中でそのライバーの過去配信での出現頻度が高いもの10個に頻度スコアを加算した上で、類似度スコアと頻度スコアの合計値が高いアイテムの上位10個を最終的に推薦します。

アイテムの類似度計算

アイテムの類似度については、Word2vecを用いて計算します。Word2vecとは、入力された文章をもとに単語同士が同じ文脈で出現しやすいかどうかを学習するNLPモデルであり、軽量で解釈性が高いという強みがあります。このモデルを用いることで、アイテムを多次元のベクトルに変換し、それらのベクトルのコサイン類似度でアイテムの類似度を表現することができます。Word2vecの詳細な仕組みについてはこちらの Hironsan様の記事 が大変わかりやすかったので共有いたします。

今回のモデル作成では、実配信におけるアイテムの使用系列を文章として捉え、各アイテムを単語としてそれらの類似度を計算しました。また、「ハート」という1コインのアイテムは使用頻度が高すぎて学習におけるノイズになってしまうため、今回の学習からは除外しました。

結果として得られたアイテムごとのベクトルを2次元のベクトルに次元削減し、マッピングしたものが以下の図になります。このマップ上で距離が近いアイテムほど、類似度が高いとみなすことができます。 類似度マップ このマップから、「たまやー」というアイテムとそれに呼応して使用される「かぎやー」というアイテムの類似度が高いという特徴や、豪華なエフェクトを持ち応援の意味合いが強い高級アイテムが図の下部分に集中する特徴など、Pocochaの特性を踏まえたアイテム類似度を獲得している様子がわかります。

性能評価

評価方法

レコメンドモデルの性能を評価するために、今回は実際の配信におけるアイテム使用を予測してみます。実際のライブ配信から5秒間のチャンクを切り出し、その時間内に使用されたアイテム系列の前半部分から後半部分を予測した際の的中率を用いて評価しました。配信中にいくつかのアイテムが使用されたときに、それに呼応してユーザが使っているアイテムを予測するイメージです。具体的な予測方法を以下の図に示します。 性能評価

推薦アイテムからみる定性的評価

まず、実際にどのようなアイテムがモデルにより予測されたのかを定性的に見ていきます。予測結果の例を以下の図に示します。 評価事例1 事例①では、前半に初心者用のアイテム「Pococha始めたばかりです!」と「たまやー」が使用された場合には、同様の初心者向けアイテムや「かぎやー」などの花火関連アイテムがレコメンドされ、「かぎやー」の予測に成功しています。一方で、「花火ハート」アイテムについては予測に失敗しています。その理由として、花火ハートは1コインのアイテムであり、さまざまな文脈で気軽に使用されるため、アイテム系列との紐付けがうまくいかなかった可能性があります。

事例②では、前半にユーザのランクアップを祝福するアイテム「初コアおめ!」と、花火系のアイテムである「初代花火」が使用された場合に、予測されるアイテムが祝福系のアイテムと花火系のアイテムに二分されてしまいました。その結果、10個しかないレコメンド枠が各話題に分割されて消費されてしまい、結果として「たまやー」などの花火系アイテムの予測がうまくいかないという事態が生じました。

これらの事例から、作成したモデルは一定程度直感に合うレコメンドを実現していると考えられます。一方で、レコメンド枠の都合上推薦できるアイテムの数に限りがあり、また意味が類似したアイテムも多く存在することから、特定のアイテムをピンポイントで予測することは難しい部分もあるという結果が得られました。

実配信のデータを活用した定量的評価

次に、レコメンドしたアイテムが実際の配信で使われたアイテムをどれだけカバーできていたのか、定量的に見ていきます。以下に、提案したモデルの予測精度を示します。 推薦精度 提案したモデルは、実配信で使用されたアイテムのうち約85%の予測に成功しています。ここで、アルゴリズムの特性を踏まえて性能を評価するために、予測対象のアイテムがチャンクの前半で既に出現していたか、という点に注目します。今回のアルゴリズムでは単語同士の類似度をWord2vecで獲得した埋め込み表現のコサイン類似度で計算するため、同一単語は類似度スコアが最大になります。よって、前半のアイテムの類似アイテムとしてモデルが同一アイテムを推薦しやすいため、前半に出現したアイテムが後半に再度使用される場合にモデルの正答率が高くなる傾向があります。そこで、予測精度を再出現時(前半に出現したアイテムが後半に再度登場する場合、上図の右下のハートの例)と新規出現時(前半に出現していないアイテムが後半に新たに登場する場合、上図の右下のたまやー→かぎやーの例)のそれぞれについて計算します。

その結果、提案したモデルはアイテム再出現時にはほぼ100%予測に成功しましたが、アイテム新規出現時には約25%の正答率に留まりました。Pocochaには複数ユーザでアイテムを連投する文化があるため、全体の8割近くのアイテムが再出現アイテムに分類されます。その結果、再出現アイテムに対する予測性能が高いという提案モデルの特徴により、全体の予測精度が比較的高くなったと考えられます。再出現アイテムについてはモデルの性能は十分ですが、新規出現アイテムについてはやや精度不足だと考えられます。

今後の展望

モデルの性能をより高めるためには、新規出現アイテムに対する予測精度を高めていくことが必要です。そのためには、アイテム同士の類似度をより高精度に予測することが重要です。安価で文脈にあまり関係なく出現するアイテムを予測対象から外すことや、transformer等のモデルを用いてより文脈を考慮した予測を行うことが効果的であると考えられます。

また、アイテムを使用する文脈をより正確に捉えるために、配信タイトルや配信コメントを予測に組み込むことも考えられます。しかし、Pocochaのコメントは配信の話題や配信のスタイルと関連の低いものも多い( 過去記事参照 )ため、ノイズを除去して分析に活用することが現実的に可能なのか検討が必要です。

さらに、今回レコメンドしたアイテムをどのようなUIで提供していくかも重要です。他のユーザがアイテムを使用した際に画面にポップアップを出したり、リズムゲームのようにコンボ性を意識したUIなど、触っていて楽しい、アイテムを使ってみたくなるUIと組み合わせることで真価が発揮されそうです。

まとめ

今回のインターンシップでは、ライブコミュニケーションアプリ「Pococha」における、アイテムのレコメンドアルゴリズムの開発に取り組みました。アプリの特徴を考慮してレコメンドシステムに求められる要素を考える経験は、技術とビジネスの両面を踏まえた価値提供を大事にしたい自身にとって非常に魅力的な経験でした。アルゴリズムにはまだまだ改善の余地がありますが、自身の能力を最大限発揮してユーザが楽しいと思えるレコメンドモデルの考案・実装に取り組むことができ、とても楽しく、勉強になりました。

また何より、インターンシップで出会ったDeNA社員の方々の、自分らしさを持って仕事をしている姿勢が印象に残りました。論文を執筆したり、Kaggleを極めたり、勉強会を開いたり、エンジニアとして働く中で自分らしさを追求する姿勢は、エンジニア就職のイメージ自体を変えるものでした。DeNAに興味をお持ちの人も、就職に今は興味がない人も、DeNAのインターンシップを通じて「AIエンジニアとして働く」ことの視野を広げてみてください!

参考文献

[1]絵で理解するWord2vecの仕組み https://qiita.com/Hironsan/items/11b388575a058dc8a46a

[2]「Pococha」における配信の話題抽出・カテゴライズの検証 https://engineering.dena.com/blog/2023/11/intern_pococha_topic/

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。