まさか⁉︎と思ったら本物だった。Twitterのアルゴリズムが公開、早速和訳してみた。
Twitterのレコメンデーションアルゴリズム
Twitterは、今世界で起きていることの中から最高のものをお届けすることを目的としています。そのためには、毎日投稿される約5億件のツイートの中から、最終的にあなたの端末の「For You」タイムラインに表示されるトップツイートを抽出する推薦アルゴリズムが必要です。このブログでは、このアルゴリズムがどのようにあなたのタイムラインに表示されるツイートを選んでいるのかをご紹介します。
私たちのレコメンデーションシステムは、多くの相互接続されたサービスや仕事によって構成されていますが、この投稿で詳しく説明します。アプリの中でツイートが推薦される領域は、検索、探索、広告などたくさんありますが、この記事では、ホームタイムラインの「あなたのために」フィードに焦点を当てます。
ツイートはどのように選ばれるのか?
Twitterのレコメンデーションの基盤は、ツイート、ユーザー、エンゲージメントデータから潜在的な情報を抽出する一連のコアモデルと機能です。これらのモデルは、「将来、他のユーザーと交流する確率はどのくらいか」、「Twitter上のコミュニティとその中でのトレンドツイートは何か」など、Twitterネットワークに関する重要な質問に答えることを目的としています。これらの質問に正確に答えることで、Twitterはより適切なレコメンデーションを提供できるようになります。
レコメンデーションパイプラインは、これらの機能を消費する3つの主要なステージで構成されています:
candidate sourcing(候補ソーシング)と呼ばれるプロセスで、異なるレコメンデーションソースから最適なツイートを取得する。
機械学習モデルを使用して、各ツイートをランク付けします。
ブロックしたユーザーのツイート、NSFWコンテンツ、すでに見たツイートなどを除外するなどのヒューリスティックやフィルタを適用する。
For Youタイムラインの構築と配信を担当するサービスは、Home Mixerと呼ばれています。Home Mixerは、コンテンツのフィードを構築するためのScalaのカスタムフレームワークであるProduct Mixerをベースに構築されています。このサービスは、異なる候補ソース、スコアリング機能、ヒューリスティック、フィルターをつなぐソフトウェアのバックボーンとして機能します。
この図は、タイムラインを構築するために使用される主要なコンポーネントを示しています:
このシステムの主要な部分を、1回のタイムラインリクエストで呼び出される順番に、Candidate Sources(候補者ソース)から候補者を取得するところから見ていきましょう。
Candidate Sources(候補者情報源)
Twitterは、ユーザーの最近の関連ツイートを取得するために使用するいくつかの候補ソースを備えています。各リクエストに対して、これらのソースを通じて数億のプールからベストな1500ツイートを抽出するよう試みます。私たちは、あなたがフォローしている人(In-Network)とフォローしていない人(Out-of-Network)から候補を見つけます。現在、For Youのタイムラインは、ユーザーによって異なるかもしれませんが、平均して50%のネットワーク内ツイートと50%のネットワーク外ツイートで構成されています。
ネットワーク内ソース
In-Networkソースは最大の候補ソースで、あなたがフォローしているユーザーからの最も関連性の高い最新のツイートを配信することを目的としています。ロジスティック回帰モデルを用いて、あなたがフォローしているユーザーのツイートを関連性に基づいて効率的にランク付けします。そして、上位のツイートは次のステージに送られます。
ネットワーク内ツイートのランキングで最も重要な要素は、Real Graphです。リアルグラフは、2人のユーザー間のエンゲージメントの可能性を予測するモデルです。あなたとツイート作成者の間のReal Graphのスコアが高いほど、彼らのツイートをより多く含めることになります。
In-Networkソースは、Twitterで最近取り組まれているテーマです。このサービスは、各ユーザーのツイートのキャッシュからネットワーク内ツイートを提供するために使用されていました。また、数年前に更新・学習されたロジスティック回帰ランキングモデルの再設計も行っているところです!
ネットワーク外の情報源
ユーザーのネットワークの外にある関連ツイートを見つけるのは、より厄介な問題です。作者をフォローしていない場合、あるツイートが自分に関連するかどうかをどうやって判断すればいいのでしょうか。Twitterは、この問題に対処するために2つのアプローチをとっています。
ソーシャルグラフ
私たちの最初のアプローチは、あなたがフォローしている人や同じような興味を持つ人のエンゲージメントを分析することで、あなたが関連性を見出すであろうものを推定することです。
エンゲージメントとフォローのグラフをたどり、以下の質問に答えます:
私がフォローしている人たちは、最近どのようなツイートをしたのだろうか?
私と同じようなツイートを「いいね!」しているのは誰で、その人たちが最近「いいね!」したものは何か?
これらの質問に対する答えに基づいて候補となるツイートを生成し、ロジスティック回帰モデルを用いてランク付けします。このようなグラフの探索は、Out-of-Networkレコメンデーションに欠かせないものです。私たちは、この探索を行うために、ユーザーとツイート間のリアルタイムなインタラクショングラフを保持するグラフ処理エンジン、GraphJetを開発しました。Twitterのエンゲージメントとフォローのネットワークを検索するこのようなヒューリスティックは有用であることが証明されていますが(これらは現在ホームタイムラインのツイートの約15%に対応しています)、ネットワーク外のツイートのより大きなソースとなっているのは、エンベッディングスペースへのアプローチです。
エンベッディングスペース
エンベッディングスペースアプローチは、コンテンツの類似性に関するより一般的な問いに答えることを目的としています:どのようなツイートやユーザーが私の興味と似ているのか?
エンベッディングは、ユーザーの興味とツイートのコンテンツを数値で表現することで機能します。 そして、この埋め込み空間における任意の2人のユーザー、ツイート、ユーザーとツイートのペアの間の類似度を計算することができます。正確な埋め込みを生成すれば、この類似度を関連性の代用として使うことができます。
Twitterの最も有用な埋め込み空間の1つがSimClustersです。SimClustersは、カスタム行列因数分解アルゴリズムを用いて、影響力のあるユーザーのクラスターを中心としたコミュニティを発見します。コミュニティは145kあり、3週間ごとに更新されます。ユーザーとツイートはコミュニティの空間に表現され、複数のコミュニティに所属することができます。コミュニティの規模は、個人の友達グループの数千人から、ニュースやポップカルチャーの数億人規模まで様々です。これらは、最も大きなコミュニティの一部です:
各コミュニティにおけるツイートの人気度を見ることで、ツイートをこれらのコミュニティに埋め込むことができます。あるコミュニティのユーザーがそのツイートを気に入れば気に入るほど、そのツイートはそのコミュニティと関連づけられることになります。
ランキング
For Youのタイムラインの目標は、関連性の高いツイートを提供することです。パイプラインのこの時点では、関連性のある候補が1500件ほどあります。スコアリングは、各候補ツイートの関連性を直接予測し、タイムライン上のツイートをランク付けするための主要なシグナルとなります。この段階では、どの候補から発信されたものであるかは関係なく、すべての候補が平等に扱われます。
ランキングは、ツイートの相互作用を継続的にトレーニングし、肯定的なエンゲージメント(いいね、リツイート、返信など)を最適化する、約4800万パラメータのニューラルネットワークで実現されています。このランキングメカニズムは、何千もの特徴を考慮し、10個のラベルを出力して各ツイートにスコアを付けます(各ラベルはエンゲージメントの確率を表します)。このスコアからツイートがランク付けされます。
ヒューリスティック、フィルター、製品の特徴
ランキングの段階を経て、ヒューリスティックとフィルターを適用して、さまざまな製品機能を実装します。これらの機能は、バランスよく多様なフィードを作成するために連携しています。いくつかの例を挙げます:
視認性フィルタリング:ツイートの内容や好みに応じて、フィルタリングを行います。例えば、ブロックやミュートをしたアカウントのツイートを削除します。
著者の多様性:一人の著者が連続してツイートしすぎるのは避けましょう。
コンテンツのバランス:ネットワーク内のツイートとネットワーク外のツイートを公平なバランスで配信するようにします。
フィードバックに基づく疲労度視聴者からネガティブなフィードバックがあった場合、特定のツイートのスコアを下げますソーシャルプルーフ:品質保証として、そのツイートと二次的なつながりがないネットワーク外のツイートを除外する。つまり、あなたがフォローしている誰かがそのツイートに関与しているか、そのツイートの作者をフォローしているかどうかを確認することです。
会話:元のツイートと一緒にスレッド化することで、返信にさらなる文脈を提供する。
編集されたツイート:端末に表示されているツイートが古くなっていないかどうかを判断し、編集済みのツイートと入れ替える指示を出す。
ミキシングとサーヴィス
この時点で、Home Mixerはあなたのデバイスに送信するツイートのセットを準備しています。最後に、ツイートと、広告、フォロー推奨、オンボーディングプロンプトなど、ツイート以外のコンテンツを混ぜ合わせ、お客様の端末に返送して表示させます。
上記のパイプラインは1日に約50億回実行され、平均1.5秒未満で完了します。1回のパイプラインの実行には220秒のCPU時間が必要で、アプリで感じるレイテンシーの150倍近い時間が必要です。
私たちのオープンソースの目的は、私たちのシステムがどのように機能するかについて、ユーザーの皆さまに完全な透明性を提供することです。私たちは、私たちのアルゴリズムをより詳細に理解するために、ここ(およびここ)で見ることができる私たちの推薦を駆動するコードを公開しました。また、私たちのアプリでより透明性を提供するためにいくつかの機能に取り組んでいます。私たちが計画している新しい開発には、以下のようなものがあります:
クリエイターのための、リーチとエンゲージメントに関するより良いTwitter分析プラットフォーム。
ツイートやアカウントに貼られた安全ラベルの透明性を高めることができます。
ツイートがタイムラインに表示される理由をより深く知ることができます。
次は何をする?
Twitterは、世界中の会話の中心です。毎日、1,500億件以上のツイートが人々の端末に配信されています。ユーザーに最高のコンテンツを提供することは、困難であると同時にエキサイティングな問題でもあります。私たちは、新しいリアルタイム機能、埋め込み機能、ユーザー表現など、推薦システムを拡張する新しい機会に取り組んでいます。私たちは、未来の町の広場を作っているのです。もしあなたがこのことに興味を持たれたなら、ぜひ私たちに加わってください。
文責:Twitterチーム