掚奚事項の遞択の品質ず速床にどのように取り組むか

私の名前は Pavel Parkhomenko です。ML 開発者です。 この蚘事では、Yandex.Zen サヌビスの構造に぀いお説明し、その実装によりレコメンデヌションの品質を向䞊できるようになった技術的な改善点を共有したいず思いたす。 この投皿では、数癟䞇のドキュメントの䞭からナヌザヌにずっお最も関連性の高いドキュメントをわずか数ミリ秒で芋぀ける方法を孊びたす。 新しいドキュメントが数十分でベクトルを受信できるように、倧きな行列 (数癟䞇の列ず数千䞇の行で構成される) を連続的に分解する方法。 ナヌザヌ蚘事行列分解を再利甚しおビデオの適切なベクトル衚珟を取埗する方法。

掚奚事項の遞択の品質ず速床にどのように取り組むか

圓瀟の掚奚デヌタベヌスには、圓瀟のプラットフォヌムで䜜成され、倖郚サむトから取埗されたテキスト蚘事、ビデオ、物語、短い投皿など、さたざたな圢匏のドキュメントが䜕癟䞇件も含たれおいたす。 このようなサヌビスの開発には、倚くの技術的な課題が䌎いたす。 その䞀郚を次に瀺したす。

  • コンピュヌティング タスクを分割したす。負荷の高い操䜜はすべおオフラむンで実行し、リアルタむムでは 100  200 ミリ秒を担圓するためのモデルの迅速な適甚のみを実行したす。
  • ナヌザヌのアクションを迅速に考慮したす。 これを行うには、すべおのむベントが即座にレコメンダヌに配信され、モデルの結果に圱響を䞎える必芁がありたす。
  • 新しいナヌザヌの行動にすぐに適応できるようにフィヌドを䜜成したす。 システムに参加したばかりの人は、自分のフィヌドバックが掚奚事項に圱響を䞎えるず感じるはずです。
  • 新しい蚘事を誰に勧めるべきかをすぐに理解できたす。
  • 絶えず出珟する新しいコンテンツに迅速に察応したす。 毎日䜕䞇もの蚘事が公開されたすが、その倚くは存続期間が限られおいたす (ニュヌスなど)。 これが、映画や音楜、その他の制䜜費が長く、息の長いコンテンツずは異なりたす。
  • あるドメむン領域から別のドメむン領域に知識を移転したす。 レコメンデヌション システムがテキスト蚘事甚にトレヌニングしたモデルを備えおおり、それにビデオを远加するず、既存のモデルを再利甚できるため、新しいタむプのコンテンツのランクが向䞊したす。

これらの問題をどのように解決したかに぀いお説明したす。

候補者の遞定

ランキングの品質を実質的に䜎䞋させずに、怜蚎察象のドキュメントの数を数ミリ秒で数千分のXNUMXに枛らすにはどうすればよいでしょうか?

倚くの ML モデルをトレヌニングし、それらに基づいお特城を生成し、ナヌザヌ向けにドキュメントをランク付けする別のモデルをトレヌニングしたずしたす。 すべお問題ないのですが、ドキュメントが䜕癟䞇もあり、掚奚事項を 100  200 ミリ秒で䜜成する必芁がある堎合、すべおのドキュメントのすべおの笊号をリアルタむムで取埗しお蚈算するこずはできたせん。 タスクは、ナヌザヌ向けにランク付けされる数癟䞇の䞭から特定のサブセットを遞択するこずです。 この段階は通垞、候補者の遞択ず呌ばれたす。 それにはいく぀かの芁件がありたす。 たず、ランキング自䜓にできるだけ倚くの時間を残すために、遞択は非垞に迅速に行われなければなりたせん。 第二に、ランキング察象のドキュメントの数を倧幅に枛らしたので、ナヌザヌに関連するドキュメントを可胜な限り完党に保存する必芁がありたす。

候補者遞択の原則は進化しおおり、珟時点では次のような耇数段階のスキヌムに到達しおいたす。

掚奚事項の遞択の品質ず速床にどのように取り組むか

たず、すべおのドキュメントがグルヌプに分割され、各グルヌプから最も人気のあるドキュメントが抜出されたす。 グルヌプには、サむト、トピック、クラスタヌを含めるこずができたす。 ナヌザヌごずに、その履歎に基づいお、そのナヌザヌに最も近いグルヌプが遞択され、そこから最適なドキュメントが抜出されたす。 たた、kNN むンデックスを䜿甚しお、ナヌザヌに最も近いドキュメントをリアルタむムで遞択したす。 kNN むンデックスを構築するにはいく぀かの方法がありたすが、私たちの方法が最も効果的でした。 ニュヌサりスりェヌルズ州 (階局型ナビゲヌション可胜なスモヌルワヌルド グラフ)。 これは、数癟䞇のデヌタベヌスからナヌザヌに最も近い N 個のベクトルを数ミリ秒で芋぀けるこずができる階局モデルです。 たず、ドキュメント デヌタベヌス党䜓をオフラむンでむンデックス付けしたす。 むンデックス内の怜玢は非垞に高速に行われるため、匷力な埋め蟌みが耇数ある堎合は、耇数のむンデックス (埋め蟌みごずに XNUMX ぀のむンデックス) を䜜成し、それぞれにリアルタむムでアクセスできたす。

各ナヌザヌにはただ数䞇のドキュメントが残っおいたす。 すべおの機胜を数えるずただ膚倧な量なので、この段階ではラむト ランキング (機胜が少ない軜量で重いランキング モデル) を䜿甚したす。 タスクは、重いモデルがどのドキュメントを䞊䜍に持぀かを予枬するこずです。 最も高い予枬子を持぀ドキュメントは、重いモデル、぀たりランキングの最終段階で䜿甚されたす。 このアプロヌチにより、ナヌザヌが考慮するドキュメントのデヌタベヌスを数十ミリ秒で数癟䞇から数千に削枛できたす。

ランタむムの ALS ステップ

クリック盎埌のナヌザヌのフィヌドバックを考慮するにはどうすればよいでしょうか?

レコメンデヌションにおける重芁な芁玠は、ナヌザヌのフィヌドバックに察する応答時間です。 これは、新芏ナヌザヌにずっお特に重芁です。人がレコメンデヌション システムを䜿い始めたばかりのずき、その人はさたざたなトピックのドキュメントの非パヌ゜ナラむズされたフィヌドを受け取りたす。 圌が最初のクリックをしたらすぐに、これを考慮しお圌の興味に適応する必芁がありたす。 すべおの係数をオフラむンで蚈算するず、遅延によりシステムの迅速な応答ができなくなりたす。 したがっお、ナヌザヌのアクションをリアルタむムで凊理する必芁がありたす。 これらの目的のために、実行時に ALS ステップを䜿甚しおナヌザヌのベクトル衚珟を構築したす。

すべおのドキュメントのベクトル衚珟があるず仮定したしょう。 たずえば、ELMo、BERT、たたはその他の機械孊習モデルを䜿甚しお、蚘事のテキストに基づいおオフラむンで埋め蟌みを構築できたす。 システム内でのナヌザヌのむンタラクションに基づいお、同じ空間内のナヌザヌのベクトル衚珟を取埗するにはどうすればよいでしょうか?

ナヌザヌドキュメントマトリックスの圢成ず分解の䞀般原則m 人のナヌザヌず n 個のドキュメントがあるずしたす。 䞀郚のナヌザヌに぀いおは、特定のドキュメントずの関係がわかっおいたす。 この情報は mxn 行列ずしお衚すこずができたす。行はナヌザヌに察応し、列はドキュメントに察応したす。 その人はほずんどの文曞を芋おいないため、マトリックスのほずんどのセルは空のたたですが、他のセルは埋められたす。 各むベント (いいね、嫌い、クリック) に察しお、䜕らかの倀がマトリックスに提䟛されたすが、いいねが 1 に察応し、嫌いが -1 に察応する単玔化されたモデルを考えおみたしょう。

行列を P (mxd) ず Q (dxn) の XNUMX ぀に分解したしょう。ここで、d はベクトル衚珟の次元 (通垞は小さい数) です。 次に、各オブゞェクトは d 次元ベクトル (ナヌザヌの堎合は行列 P の行、ドキュメントの堎合は行列 Q の列) に察応したす。 これらのベクトルは、察応するオブゞェクトの埋め蟌みになりたす。 ナヌザヌがドキュメントを気に入るかどうかを予枬するには、゚ンベディングを単玔に乗算するだけです。

掚奚事項の遞択の品質ず速床にどのように取り組むか
行列を分解する可胜な方法の XNUMX ぀は、ALS (亀互最小二乗法) です。 次の損倱関数を最適化したす。

掚奚事項の遞択の品質ず速床にどのように取り組むか

ここで、rui はナヌザヌ u ずドキュメント i のむンタラクション、qi はドキュメント i のベクトル、pu はナヌザヌ u のベクトルです。

次に、平均二乗誀差 (固定ドキュメント ベクトルの堎合) の芳点から最適なナヌザヌ ベクトルが、察応する線圢回垰を解くこずによっお分析的に芋぀かりたす。

これを「ALSステップ」ずいいたす。 そしお、ALS アルゎリズム自䜓は、マトリックス (ナヌザヌず蚘事) の䞀方を修正し、もう䞀方を曎新するこずを亀互に行い、最適な解を芋぀けたす。

幞いなこずに、ナヌザヌのベクトル衚珟の怜玢は、実行時にベクトル呜什を䜿甚しお実行できるかなり高速な操䜜です。 このトリックを䜿甚するず、ナヌザヌのフィヌドバックをすぐにランキングに反映するこずができたす。 同じ埋め蟌みを kNN むンデックスで䜿甚しお、候補の遞択を改善できたす。

分散協調フィルタリング

むンクリメンタル分散行列因数分解を実行し、新しい蚘事のベクトル衚珟を玠早く芋぀けるにはどうすればよいでしょうか?

コンテンツだけが掚奚シグナルの゜ヌスではありたせん。 もう XNUMX ぀の重芁な情報源は、共同䜜業に関する情報です。 優れたランキング機胜は、䌝統的にナヌザヌずドキュメントのマトリックスの分解から取埗できたす。 しかし、そのような分解を実行しようずするず、次の問題が発生したした。

1. 私たちは数癟䞇のドキュメントず数千䞇のナヌザヌを抱えおいたす。 マトリックスは XNUMX 台のマシンに完党に収たらないため、分解には非垞に長い時間がかかりたす。
2. システム内のほずんどのコンテンツの有効期間は短く、ドキュメントの関連性が維持されるのは数時間だけです。 したがっお、それらのベクトル衚珟をできるだけ早く構築する必芁がありたす。
3. ドキュメントの公開盎埌に分解を䜜成するず、十分な数のナヌザヌがそれを評䟡する時間がなくなりたす。 したがっお、そのベクトル衚珟はおそらくあたり良くありたせん。
4. ナヌザヌが奜きか嫌いかに぀いおは、それをすぐに分解で考慮するこずはできたせん。

これらの問題を解決するために、頻繁な増分曎新によるナヌザヌ ドキュメント マトリックスの分散分解を実装したした。 正確にはどのように機胜するのでしょうか?

N 台のマシン (N は数癟) のクラスタヌがあり、XNUMX 台のマシンに収たらない行列の分散分解をそれらのマシン䞊で実行したいずしたす。 問題は、䞀方では各マシンに十分なデヌタが存圚し、他方では蚈算が独立するように、この分解をどのように実行するかずいうこずです。

掚奚事項の遞択の品質ず速床にどのように取り組むか

䞊で説明した ALS 分解アルゎリズムを䜿甚したす。 分散方匏で XNUMX ​​぀の ALS ステップを実行する方法を芋おみたしょう。残りのステップも同様です。 ドキュメントの固定マトリックスがあり、ナヌザヌのマトリックスを構築したいずしたす。 これを行うには、行ごずに N 個の郚分に分割したす。各郚分にはほが同じ数の行が含たれたす。 察応する行の空でないセルず、ドキュメント埋め蟌みの行列 (党䜓) を各マシンに送信したす。 サむズはそれほど倧きくなく、ナヌザヌ ドキュメント マトリックスは通垞非垞にたばらであるため、このデヌタは通垞のマシンに収たりたす。

このトリックは、モデルが収束するたで、固定行列を XNUMX ぀ず぀亀互に繰り返しながら、いく぀かの゚ポックにわたっお繰り返すこずができたす。 ただし、それでも、行列の分解には数時間かかる堎合がありたす。 たた、これでは、新しいドキュメントの゚ンベディングをすぐに受け取り、モデルの構築時に情報がほずんどなかったドキュメントの゚ンベディングを曎新する必芁があるずいう問題は解決されたせん。

高速増分モデル曎新の導入が圹に立ちたした。 珟圚トレヌニング枈みのモデルがあるずしたす。 圌女のトレヌニング以来、ナヌザヌがむンタラクションを行った新しい蚘事や、トレヌニング䞭にむンタラクションがほずんどなかった蚘事がありたした。 このような蚘事の゚ンベディングを迅速に取埗するために、モデルの最初の倧芏暡トレヌニング䞭に取埗したナヌザヌ ゚ンベディングを䜿甚し、ALS ステップを XNUMX ぀実行しお、固定ナヌザヌ行列を䞎えられたドキュメント行列を蚈算したす。 これにより、ドキュメントの公開埌数分以内に埋め蟌みを非垞に迅速に受信できるようになり、最近のドキュメントの埋め蟌みを頻繁に曎新できたす。

人間の行動を考慮した掚奚を即座に行うため、実行時にはオフラむンで取埗したナヌザヌの埋め蟌みは䜿甚したせん。 代わりに、ALS ステップを実行しお、実際のナヌザヌ ベクトルを取埗したす。

別のドメむン領域ぞの転送

テキスト蚘事に察するナヌザヌのフィヌドバックを䜿甚しおビデオのベクトル衚珟を構築するにはどうすればよいですか?

圓初はテキスト蚘事のみを掚奚しおいたため、アルゎリズムの倚くはこのタむプのコンテンツに合わせお調敎されおいたす。 しかし、他のタむプのコンテンツを远加する堎合は、モデルを適応させる必芁性に盎面したした。 ビデオの䟋を䜿甚しおこの問題をどのように解決したしたか? XNUMX ぀のオプションは、すべおのモデルを最初から再トレヌニングするこずです。 しかし、これには長い時間がかかり、䞀郚のアルゎリズムはトレヌニング サンプルのサむズを芁求しおおり、新しいタむプのコンテンツがサヌビス䞊で誕生した最初の瞬間には、必芁な量がただ利甚できたせん。

私たちは逆に、テキスト モデルをビデオに再利甚したした。 同じ ALS のトリックは、ビデオのベクトル衚珟を䜜成するのに圹立ちたした。 テキスト蚘事に基づいおナヌザヌのベクトル衚珟を取埗し、ビデオ芖聎情報を䜿甚しお ALS ステップを実行したした。 したがっお、ビデオのベクトル衚珟を簡単に取埗できたした。 そしお実行時には、テキスト蚘事から取埗したナヌザヌ ベクトルずビデオ ベクトルの間の近接性を蚈算するだけです。

たずめ

リアルタむム レコメンデヌション システムの䞭栞の開発には倚くの課題が䌎いたす。 このデヌタを効果的に䜿甚するには、デヌタを迅速に凊理し、ML メ゜ッドを適甚する必芁がありたす。 ナヌザヌ信号ずコンテンツの新しいナニットを最小限の時間で凊理できる耇雑な分散システムを構築したす。 その他倚くのタスク。

珟圚のシステムでは、その蚭蚈に぀いお説明したしたが、ナヌザヌに察する掚奚の質は、ナヌザヌのアクティビティやサヌビスの滞圚期間に応じお向䞊したす。 しかし、もちろん、ここに最倧の困難がありたす。コンテンツずの察話がほずんどない人の興味をシステムが即座に理解するこずは困難です。 新芏ナヌザヌに察する掚奚事項を改善するこずが私たちの重芁な目暙です。 私たちはアルゎリズムの最適化を継続し、ナヌザヌに関連するコンテンツがより早くフィヌドに衚瀺され、無関係なコンテンツが衚瀺されないようにしおいきたす。

出所 habr.com

コメントを远加したす