Twitterのアルゴリズムをオープンソース化することはできるのか?
Twitterの買収に向けた動きを加速させているイーロン・マスク氏は、Twitterをオープンソース化することでもっと公平な場にするよう提言しています。ソフトウェア開発者のトラビス・フィッシャー氏も、「Twitterのアルゴリズムをオープンソース化することはできるのか?」という疑問を抱いたそうで、これを実現するために必要な要素を分析しています。
Open Sourcing Twitter’s Algorithm Part 1: How Twitter Works
https://transitivebullsh.it/oss-twitter-algorithm-part-1
イーロン・マスク氏は2022年4月14日に開催されたTED Talksの中で、「Twitterを言論の自由のための場にするため」にTwitterの買収を目論んでいると語りました。このイベントの中で、マスク氏は「Twitterのアルゴリズムをオープンソース化することで、コンテンツへの取り締まりの介入を最小限に留めるべきです」と主張。
マスク氏は過去にもTwitter上で「Twitterのアルゴリズムをオープンソース化すべき?」というアンケートを実施しています。なお、このアンケートには100万人以上が回答しており、「Yes(はい)」が80%以上を占める結果となりました。
Twitter algorithm should be open source
— Elon Musk (@elonmusk) March 24, 2022
Twitterのオープンソース化に興味を抱いているのはマスク氏だけではありません。Twitterの創業者であるジャック・ドーシー氏も、「Twitterで使用する(あるいは使用しない)アルゴリズムについての選択権は、すべての人に開かれているべきです」とツイートしています。
The choice of which algorithm to use (or not) should be open to everyone https://t.co/o2DkSTWW0O
— jack⚡️ (@jack) March 25, 2022
Twitterをオープンソース化する上で問題となるのはそのメカニズムです。Twitterはタイムラインに「トップツイート優先(Home)」と「最新のツイート(Latest)」の2つのアルゴリズムフィードを採用しています。「最新のツイート」は自身がフォローしているアカウントが投稿した最新のツイートを時系列に並べるだけのもので、これは2016年にTwitterが新しいアルゴリズムフィードを採用するまでデフォルトで採用されてきたもの。もうひとつの「トップツイート優先」は、Twitterでフォローしているアカウントの中からユーザーが頻繁にやり取りする相手のツイートや、自身が関与するツイートをベースにタイムラインにツイートを並べるというものです。
記事作成時点ではTwitterでデフォルトで採用されているアルゴリズムフィードは「トップツイート優先」で、「ほとんどのTwitterユーザーがこのアルゴリズムフィードを使用している」とフィッシャー氏。
続いて、Twitterの複雑なシステムを理解するために重要なこととして、フィッシャー氏は「Twitterのコア機能を理解すること」を挙げています。そこで重要なのが2020年に最初にリリースされたTwitterのパブリックAPI v2です。これによると、Twitterにおけるコア機能はユーザーが投稿する短文の「Tweet(ツイート)」と、ユーザーアカウントである「User(ユーザー)」の2つ。Twitterにはさまざまな機能がありますが、「Mentions(メンション)」「Quote Tweet(引用ツイート)」「Bookmarks(ブックマーク)」「Hidden Replies」などはあくまでも関係コンポーネントに過ぎないとのこと。また、「Space」「List」「Media」「Poll」「Place」などの機能も、別のリソースモデルとして存在しているとのことです。そのため、フィッシャー氏は「Twitterのメカニズムを知る上で必要不可欠ではないため、コア機能以外は無視する」としています。
Twitterのようなソーシャルネットワークサービスは非常に大規模なネットワークを形成しています。Twitterというネットワークにおけるノードは「ユーザーおよびツイート」で、エッジは「ツイートに対するリプライやリツイート、いいねといった反応(インタラクション)」です。
フィッシャー氏は「Twitterのコアビジネスの大部分はこのユーザー・ツイート・インタラクションにより構築された膨大なデータベースであると言えます」と主張。このデータベースには、ユーザーがログインしたり、ツイートを表示したり、別ユーザーのプロフィールを表示したり、ツイートしたり、リプライしたりといった記録がすべて保存されます。
Twitterの「トップツイート優先」アルゴリズムフィードは、「ユーザーがどのツイートやユーザーとやり取りする可能性が高いか」を予測する、パーソナライズされたレコメンデーションシステムを利用しています。このレコメンデーションシステムにおける重要なポイントは以下の2つ。
1:機械学習モデルの教育に使用される基礎データ(上記で説明したTwitterの大規模独自ネットワークから得られる情報、つまりは内部データベースに保存されているデータ)
2:関連性を判断するためのランキングアルゴリズム
Twitterのランキングアルゴリズムは、「ツイート自体の持つ特性」(ツイートの最新性やメディアの有無、インタラクション)や「ツイート主との関係」(過去のやり取りやアカウント間のつながりの強さなど)、「ユーザー自身について」(過去に関与したツイートやTwitterを使用する頻度など)を考慮し、Twitter上で行われる各アクションに重みづけを行います。
これらの要素をベースにフィッシャーさんが作成した「Twitterのアルゴリズムフィードを大幅に簡略化した擬似コード」が以下の通り。
export abstract class TwitterAlgorithmicFeed {
/**
* Pseudo-code for understanding how Twitter's algorithmic feed works.
*/
async getAlgorithmicTimelineForUser(user: User): Promise<Timeline> {
const rawTimeline = await this.getRawTimelineForUser(user)
const relevantTweets = await this.getPotentiallyRelevantTweetsForUser(user)
const mergedTimeline = await this.mergeTimelinesForUserBasedOnRelevancy(
user,
rawTimeline,
relevantTweets
)
return this.injectAdsForUserIntoTimeline(user, mergedTimeline)
}
/**
* Returns a reverse-chronological stream of tweets from users directly
* followed by a given user.
*/
abstract getRawTimelineForUser(user: User): Promise<Timeline>
/**
* Returns a stream of tweets ordered by relevancy for a given user at a
* given time.
*
* This will only consider tweets from users the given user is not already
* following.
*/
abstract getPotentiallyRelevantTweetsForUser(user: User): Promise<Timeline>
/**
* Returns a stream of tweets ordered by relevancy to a given user, taking
* into account both their raw timeline of latest tweets and a subset of
* the network graph timeline containing potentially relevant tweets.
*/
abstract mergeTimelinesForUserBasedOnRelevancy(
user: User,
rawTimeline: Timeline,
relevantTweets: Timeline
): Promise<Timeline>
/**
* Returns a stream of tweets which injects ads into the timeline for a
* given user.
*/
abstract injectAdsForUserIntoTimeline(
user: User,
timeline: Timeline
): Promise<Timeline>
}
なお、この擬似コードはGitHub上でも公開されています。
twitter-feed-algorithm/algorithmic-feed.ts at master · transitive-bullshit/twitter-feed-algorithm · GitHub
https://github.com/transitive-bullshit/twitter-feed-algorithm/blob/master/src/algorithmic-feed.ts
・関連記事
イーロン・マスクがTwitter買収に向け6兆円を調達、「買収成功時にはスパムボットを抹殺する」宣言 - GIGAZINE
「Twitterが保守派に厳しいのは間違い、保守派が誤情報を共有しがちなだけ」という指摘 - GIGAZINE
Twitterにジョークを投稿した医師がアラブ首長国連邦で逮捕される - GIGAZINE
Twitterで「このユーザーに関わっている人を全員ブロック」を一発実行できる「Red Block」の使い方 - GIGAZINE
・関連コンテンツ
in ネットサービス, Posted by logu_ii
You can read the machine translated English article Is it possible to open source the Twitte….