こんにちは。 ML チームの大城(k.oshiro)です。
こちらの記事は Gunosy Tech Blog Festa の 4 日目の記事です。
今回は、KDDI 株式会社が提供しているショート動画アプリ auShort において、推薦モデルの改善を行い、主要KPIである視聴時間を大きく向上させた事例について紹介します。
auShort と推薦システム
「auShort」は、楽しむ・役立つ・トクする動画を提供する au 公式の無料アプリで、スワイプ操作で次々と動画を視聴できるのが特徴です。
Gunosy はこのアプリの推薦システムを担当しており、アプリのファーストビューにある「おすすめチャンネル」の動画配信バックエンドを構築しています。
従来モデルの仕組み
私たちが運用している推薦モデルは、ニューラルネットワークベースのモデルです。 動画の特徴(Title, Tag, Description, Provider)と、ユーザーの特徴(視聴履歴)をそれぞれベクトルに変換し、ベクトル同士の距離が近いものを「興味がある動画」として推薦する仕組みです。
ショート動画には「クリック」という概念がないため、Positive なログの定義を「一定時間( 5 秒)以上の視聴」として学習させていました。
※ システムの基本的なアーキテクチャや立ち上げ時の詳細については、以下の記事を参照してください。
抱えていた 2 つの課題
従来モデルの運用を続ける中で、大きく2つの課題が見えていました。
1. KPI と目的変数の乖離
アプリの KPI は「総視聴時間」の最大化ですが、モデルの目的変数は「 5 秒以上視聴するかどうか」という二値分類に近いものでした。 つまり、モデルは「 5 秒以上視聴するかどうか」は予測できても、「どちらがより長く(例えば 30 秒 vs 60 秒)視聴されるか」を推論するのはやや苦手な構造になっていました。
2. 推薦粒度の粗さ
従来のモデルでは、「スポーツ」「動物」「グルメ」といった大きなカテゴリ単位での推薦は可能でしたが、より詳細な文脈を捉えきれていませんでした。 例えば、野球ファンのユーザーに対して、単に「野球動画」を出すことはできても、「阪神タイガース」や「読売ジャイアンツ」といった特定のチーム単位(エンティティ)で視聴履歴にマッチした推薦ができていない状態でした。
視聴時間の直接予測
当初、課題 1 ( KPI との乖離)を解決するために、「視聴時間を直接予測可能にする」というように目的関数の変更を考えていました。 これは、これまで 5 秒以上かどうかを学習していたものを、視聴時間を直接学習するように変更を行うものです。
結果としては、今回の実験では視聴時間を直接最適化しようとすると学習を安定させることが難しく、オフラインでの検証においても視聴時間の向上が見られなかったため、方針の変更をすることにしました。
推薦粒度の細分化
そこで、課題 1 ( KPI との乖離)への対処としていた視聴時間予測は一度諦め、「課題 2 の推薦粒度の粗さを解決する」という方針に切り替えました。
そもそもの「推薦の粒度が粗く、ユーザーの細かい興味に刺さっていない」という体験上の課題を解決するために、モデルアーキテクチャの変更・調整を少しずつ行い、定性的に推薦動画のリストを比較して改善を進めました。
具体的な改善内容
- ライブラリの刷新: 特徴量抽出に使用していたライブラリを変更し、単語間の関係性をより賢く捉えられるようにしました。
- モデルアーキテクチャの変更: Title, Description, Tag, Provider のそれぞれに対して個別のエンコーダーを用意し、重要度(Weight)を導入しました。加えて、 Pooling の方法も調整するなどして、視聴動画のエンティティにより細かく反応するようにしました。
- パラメータチューニング: 実際に推薦されるリストを目視確認しながら、モデルのパラメータを地道に調整しました。
改善後の変化(定性評価)
この変更により、推薦リストの質が明らかに変化しました。
- 野球ファンの場合: 以前はざっくりとした野球動画が並んでいましたが、改善後は「阪神 × 巨人」といった具体的な対戦カードや、特定球団に偏った動画が並ぶようになりました。
- ドラマファンの場合: 特定の制作会社やシリーズ作品がまとめて推薦されるようになり、ユーザーの好みをより鋭く捉えられるようになりました。

A/B テストの結果
調整したモデルを用いて A/B テストを実施したところ、当初想定していたよりも大きな改善結果が得られました。
主要 KPI である視聴時間が大きく向上し、当初設定していた目標値を大幅に超える結果を達成しました。 また、視聴数などの関連指標においてもポジティブな成果が見られ、ユーザー体験の質が向上したことが確認できました。
まとめ
今回は動画推薦モデルにおいて、目的変数の見直しと推薦粒度の細分化を行うことで、主要 KPI である視聴時間を大きく向上させた事例を紹介しました。 当初試みた「視聴時間の直接予測」から紆余曲折ありましたが、結果として「ユーザーが好む動画を細かく捉えて推薦する」というアプローチで KPI を向上させることができました。
今後も、様々な観点でユーザーに最適な動画を配信できるよう、推薦システムの改善に取り組んでいく予定です。