ホームページ >テクノロジー周辺機器 >AI >Baidu 仕分け技術の探求と応用

Baidu 仕分け技術の探求と応用

王林
王林転載
2024-01-14 08:33:111321ブラウズ

1. 背景

まず、Baidu の包括的な情報フロー推奨のビジネス背景、データ背景、および基本的なアルゴリズム戦略を紹介します。

1. Baidu の包括的な情報フローの推奨事項

Baidu 仕分け技術の探求と応用

Baidu の包括的な情報フローには、Baidu APP の検索ボックスが含まれています。リストページとイマージョンページの形式で、さまざまな製品タイプをカバーします。上の図からわかるように、推奨されるコンテンツ形式には、Douyin に似た没入型レコメンデーションのほか、Xiaohongshu Notes のレイアウトに似た 1 列および 2 列のレコメンデーションが含まれます。ユーザーがコンテンツと対話する方法も多数あります。ランディング ページでコンテンツにコメントしたり、「いいね!」をしたり、収集したりできます。また、作成者ページに入って関連情報を表示し、対話することもできます。また、ユーザーは否定的なフィードバックなどを提供することもできます。包括的な情報フロー全体の設計は非常に豊富かつ多様で、ユーザーのさまざまなニーズや対話方法に対応できます。

#2. データの背景

モデリングの観点から見ると、私たちは主に 3 つの課題に直面しています:

## ######################### 大規模 ############。 1 日あたりの表示レベルは数百億を超えるため、モデルには 1 日あたり数百億のスループットが必要です。 1 日あたりの DAU は 1 億を超えており、モデル全体を高スループットと高スケーラビリティで設計する必要があることもわかります。ソートモデルはオンライン上で毎秒数億回の計算が行われるため、モデル設計時には効果だけでなくパフォーマンスも考慮する必要があり、パフォーマンスと効果のバランスをとる必要があります。ユーザーインタラクションの形式とシナリオが多様化しているため、複数の種類のタスクを予測するモデルも必要です。 ##################高需要。

Baidu 仕分け技術の探求と応用

システム全体の応答時間要件は非常に高く、エンドツーエンドの計算はミリ秒単位で実行されます。所定の時間を超過すると、エラーが返されます。これは、複雑な構造をオンラインにすることが難しいという別の問題も引き起こします。

  • マシュー効果は強力です。 データ サンプルの観点から見ると、マシュー効果は非常に強力です。少数の上位アクティブ ユーザーが配布量の大部分に貢献しており、上位の人気リソースもほとんどの配布量をカバーしています。表示音量。ユーザー側でもリソース側でも、マシュー効果は非常に強いです。したがって、推奨をより公平にするために、システム設計中にマシュー効果を弱める必要があります。
  • 3. 業界全体での基本的なアルゴリズム戦略の推進
  • 検索シナリオでは、特徴設計では通常、記憶効果と汎化効果の両方を確保するために離散化手法が採用されます。特徴は、離散化のためのハッシュを通じてワンホット コードに変換されます。頭部ユーザーの場合、正確な記憶を実現するには、詳細な特性評価が必要です。より大きな割合を占めるまばらなロングテール ユーザーの場合は、適切な一般化処理が必要です。さらに、セッションはユーザーのクリックと消費の意思決定シーケンスにおいて非常に重要な役割を果たします。
  • モデル設計では、精度と汎化能力を確保するために、ヘッドとロングテールのデータ分布のバランスを取る必要があります。機能設計ではすでにこれが考慮されているため、モデル設計でも一般化と精度の両方を考慮する必要があります。 Baidu の推奨ファネルには非常に厳しいパフォーマンス要件があるため、パフォーマンスと効果のバランスを見つけるためにアーキテクチャと戦略を共同設計する必要があります。さらに、モデルの高スループットと精度のバランスをとる必要があります。 アーキテクチャの設計は、パフォーマンスと効果の 2 つの側面から総合的に検討する必要があります。 1 つのモデルでは数千万のリソース ライブラリを処理できないため、階層的に設計する必要があります。中心となるアイデアは分割統治法です。各層の間には相関関係があるため、多段階のファネル間の効率を向上させるには、多段階の共同トレーニングが必要です。さらに、リソースをほとんど変更せずに複雑なモデルを起動できるようにするには、エラスティック コンピューティング手法を採用する必要があります。

上の図の右側にあるハノイ塔プロジェクトは、大まかなレイアウト レベルでユーザーとリソースの分離モデリングを非常に巧妙に実装しています。また、多層多段階の共同トレーニングを実現する CTR3.0 共同トレーニングもあります。たとえば、ファインランキングはシステム全体の中で最も複雑かつ精緻なモデルであり、精度は非常に高いです。 Wise のモデリング、ファインランキング、および再配置は密接に関連しており、これら 2 つのモデルに基づいて提案した共同トレーニング方法は、オンラインで非常に優れた結果を達成しました。

次に、機能、アルゴリズム、アーキテクチャの3つの観点からさらに詳しく紹介します。

##2. 機能

1. ユーザーシステム対話型意思決定プロセス

特性は、ユーザーとシステム間の対話型の意思決定プロセスを説明します。

次の図は、ユーザー、リソース、シナリオ、状態の時空間関係相互作用マトリックス図を示しています。

Baidu 仕分け技術の探求と応用

まず、すべてのシグナルをユーザー、リソース、シナリオ、状態の 4 つの次元に分割します。本質的にユーザーとリソースをモデル化する必要があるためです。 。各次元で様々な似顔絵データを制作可能です。

ユーザーの視点から見た、年齢、性別、関心のあるポイントの最も基本的なポートレート。これに基づいて、類似したユーザーや、さまざまなリソースタイプに対するユーザーの過去の好みの行動など、いくつかのきめ細かい機能も追加されます。セッションの特徴は主に長期および短期の行動シーケンスです。業界には多数のシーケンス モデルがあるため、ここでは詳しく説明しません。ただし、どのような種類のシーケンス モデルを作成する場合でも、機能レベルでの離散セッション機能は不可欠です。 Baidu の検索広告では、このようなきめ細かいシーケンス機能が 10 年以上前に導入されており、異なる時間枠での異なるリソースタイプに対するユーザーのクリック行動や消費行動などを注意深く描写する複数のシーケンス機能が導入されています。

リソース ディメンションには、メモリが大半を占めるリソース自体の状況を記録するための ID タイプの機能もあります。基本的な一般化機能を実現するためのプレーンテキストのポートレート機能もあります。粗粒度の特徴に加えて、ポートレート特徴の埋め込みなど、より詳細なリソース特徴もあり、これはマルチモダリティなどの事前トレーニング済みモデルに基づいて生成され、個別の埋め込みにおけるリソース間の関係のより詳細なモデリングが行われます。空間。さまざまな状況下でのリソースの事後的なパフォーマンスを説明する統計的なポートレート機能もあります。類似した特徴だけでなく、ユーザーはリソースを逆に特徴付けて精度を向上させることができます。

シーンのサイズに関しては、シングルカラム、イマーシブ、ダブルカラムなど、さまざまなシーン特性があります。

ユーザーは、状態によってフィード情報を異なる方法で消費します。例えば、更新ステータスが何なのか、どのようなネットワークから来ているのか、ランディングページのインタラクションフォームがどのようなものであるかなどは、ユーザーの今後の意思決定に影響を与えるため、ステータスの側面からも特徴を記述します。

ユーザー、リソース、ステータス、シナリオの 4 つの側面を通じて、ユーザーとシステムの相互作用の意思決定プロセスを包括的に描写します。多くの場合、複数の次元間の組み合わせも行われます。

2. 離散特徴設計の原則

次に、離散特徴設計の原則を紹介します。

Baidu 仕分け技術の探求と応用

高品質の特徴には、通常、高い識別性、高いカバレッジ、強力な堅牢性という 3 つの特性があります。

  • #高度な識別: 特徴を追加すると、事後結果は大きく異なります。たとえば、機能 a を追加したサンプルの場合、事後クリックスルー率は、機能 a を追加しなかった事後クリックスルー率とは大きく異なります。
  • 高いカバレッジ: サンプル全体で追加された機能のカバレッジがわずか数万分の 1 または 10 万分の 1 である場合、たとえその機能が非常に優れていたとしても、判別できる程度ですが、効果がない可能性が高いです。
  • 強力な堅牢性: 機能の配布自体は比較的安定している必要があり、時間の経過とともに大幅に変化することはできません。

#上記の 3 つの基準に加えて、単一の特徴に対して AUC を判断することもできます。たとえば、特定の機能のみを使用してモデルをトレーニングし、その機能とターゲットの関係を確認します。特定の機能を削除し、その機能がなくなった後の AUC の変化を確認することもできます。

上記の設計原則に基づいて、クロスオーバー、バイアス、シーケンスの 3 種類の重要な機能に焦点を当てます。

  • 交叉特徵方面,業界有數百篇的相關工作,實踐中發現無論任何類型的隱式特徵交叉都無法完全替代顯示特徵交叉,也不可能把所有的交叉特徵全部刪掉,只用隱式表徵來做。顯示特徵交叉能夠刻畫出隱式特徵交叉所無法表達的相關訊息。當然如果做得更深,可以用 AutoML 來進行自動搜尋可能的特徵組合空間。因此在實踐中,以顯式特徵交叉為主,隱式特徵交叉為輔的方式來做特徵之間的 cross。
  • 偏移類別特徵指的是,使用者的點擊不等於使用者滿意,因為資源的展示有各種各樣的偏置,例如最普遍的就是 position bias,展現在頭部的資源天然更容易被點擊。還有 system bias,系統優先展現出認為最優的,但不一定是真的最優,例如新發布的資源,可能會因為缺少後驗資訊而處於劣勢。
    對於偏移特徵有一個很經典的結構,就是Google提出的 Wide&Deep 結構,Wide 側通常會放各種偏移的特徵,線上直接可以裁剪掉,透過這種偏序排序的方式來達到無偏估計的效果。
  • 最後是序列特徵,是非常重要的一類使用者個人化特徵。業界現在主流的都是做超長序列的建模,具體的實驗中會發現,通常長序列的儲存開銷是非常大的。前文提到我們要達到性能與效果的折衷。長序列可以透過離線預先計算好,短序列可以在線上即時計算,所以我們往往會結合兩種方式。透過門控網路來決策使用者目前更偏向於短序列還是長序列的方式,來 balance 長期興趣以及短期興趣。同時需要注意,隨著序列拉長其邊際收益是遞減的。

3、推薦漏斗最優化的特徵系統

Baidu 仕分け技術の探求と応用

整個推薦漏斗是分層設計的,每一層都做了過濾與截斷。如何在濾波截斷的分層設計中達到效率最高呢?前面也提到會做模型的聯合訓練。另外,特徵設計的維度上也可以做相關的設計。這裡也存在一些問題:

  • 首先,為了提升漏斗通過率,召回和粗排直接擬合精排評分或精排序,會導致馬太效應進一步加強,此時,召回/粗排模型並非使用者行為驅動學習過程,而是擬合漏斗。這不是我們希望看到的結果。正確的做法是建議漏斗各層模型解耦合設計,而不是直接擬合下層的漏斗。
  • 第二是粗排方面,理論上與召回靠得更近,本質上相當於統一召回的出口。所以粗排這一層,可以引入更多召回的信號,例如協同推薦的人群投票信號,圖索引的路徑等等,以便粗排能夠與召回隊列聯合優化,使得進入精排的資源的召回效率能夠最優化。
  • 第三是計算多用,在降低計算量的同時又能夠提升模型的穩健性。這裡要注意的是,常有級聯類的模型,第二級模型使用第一級模型的評分作為特徵,這種做法的風險很大,因為模型最終的預估值是不穩定的分佈,如果直接使用第一級模型的預估值當做特徵,會讓下層模型有非常嚴重的耦合,造成系統的不穩定。

三、演算法

接下來介紹核心演算法的設計。

1、系統視角下的排序模型

首先來看推薦排序模型。一般認為,精排是推薦系統中精度最高的模型。業界有一種觀點認為粗排附屬於精排,對著精排學就可以了,但具體實踐中發現粗排並不能直接對著精排來學,可能會帶來很多問題。

Baidu 仕分け技術の探求と応用

#

從上圖可以看出,粗排與精排的定位不同。一般來說,粗排的訓練樣本與精排一樣,也是展現樣本。每次召回候選供粗排打分的結果有數萬條之多,這裡面99% 以上的資源是沒有被展現的,而模型僅使用最終展現的十幾條資源來做訓練,這就打破了獨立同分佈的假設,在離線模型分佈差異極大。這種情況在召回是最為嚴重的,因為召回的候選集都是數百萬、數千萬甚至數億,最終返回的結果大多數也都是沒有被展現的,粗排一樣相對也比較嚴重,因為候選集通常也在數萬級。而精排就相對好很多,通過了召回與粗排兩層漏斗後,資源的基礎品質是有保證的,它主要做優中選優的工作。因此,精排在離線分佈不一致問題不是那麼嚴重,不需要過多地考慮樣本選擇偏差(SSB)的問題,同時由於候選集合小,可以做重計算,精排重點在於特徵交叉,序列建模等。

但是粗排這一層,並不能直接對著精排學,也不能直接做類似精排的重計算,因為其計算量是精排的數十倍,如果直接用精排的設計思路,​​線上的機器是完全不可承受的,所以粗排需要高度的技巧平衡性能與效果,它是一個輕量級模組。粗排迭代的重點與精排不同,主要解決樣本選擇偏差,回想隊列最佳化等問題。由於粗排與召回關係緊密,更關注的是返回精排的數千資源的平均質量,而不是精確的排序關係。精排則是與重排關係更緊密,更關注的是單點的 AUC 精確度。

因此在粗排的設計上,更多的是做樣本的選擇與生成,和泛化特徵與網路的設計。而精排的設計可以做複雜的多階交叉特徵、超長序列建模等等。

2、超大規模離散 DNN 的泛化

前面介紹的是宏觀層面的,下面來看微觀層次。

Baidu 仕分け技術の探求と応用

具體到模型的訓練過程,目前業界主流的是使用超大規模的離散 DNN,泛化問題會是比較嚴重的。因為超大規模離散 DNN,透過 embedding 層,主要做的是記憶的功能。參見上圖,整個 embedding 空間是非常龐大的矩陣,通常都是千億或萬億行,1000 列。所以模型訓練都是全分散式,數十甚至上百台 GPU 做分散式訓練。

理論上,對於這麼大的矩陣,並不會直接做暴力計算,而是採用類似矩陣分解的操作。當然這個矩陣分解和標準的SVD 矩陣分解並不一樣,這裡的矩陣分解是先學到低維的表徵,透過slot 之間的parameter 的share 來降低計算跟存儲量,也就是分解成兩個矩陣的learning 的流程。首先是特徵、表徵矩陣,會學習特徵跟低維嵌入的關係,這個嵌入很低,通常會選擇十維左右的嵌入。另外一個是嵌入和神經元矩陣,每個槽位之間的權重是共享的。透過這種方式既降低了儲存量,又能夠提升效果。

低維度的嵌入學習是離線DNN 優化泛化能力的關鍵,它等價於做稀疏矩陣分解,因此,整個模型泛化能力提升的關鍵就在於如何使得參數規模與樣本數能夠更好地匹配。

從多個面向來進行最佳化:

  • #首先是從嵌入維度方面,因為不同特徵的展現量差異是很大的,有些特徵的展現量非常高,例如頭部的資源、頭部的用戶,可以使用更長的嵌入維度,這就是常見的動態嵌入維度的思想,即展現越充分嵌入維度越長。當然如果要做得更 fancy,可以用 autoML 等方式做強化學習,自動搜尋最優嵌入長度。
  • 第二個面向是建立門檻值,由於不同資源展現量不同,因此,何時為特徵創建嵌入表徵也是需要考慮的。

3、過度擬合問題

Baidu 仕分け技術の探求と応用

#

業界通常是採用兩階段訓練抗過擬合的方式。整個模型由兩層組成,一個是很大的離散矩陣層,另一個是很小的稠密參數層。離散矩陣層是非常容易過度擬合的,所以業界實踐通常都是採用 One Pass Training,即 online learning,所有的數據都過一遍,並不會像學術界一樣的做 batch training。

另外,業界通常會利用時序 Validation Set 來解決稀疏層的 overfitting 問題。把整個訓練資料集依時間維度切割成很多 Delta,T0,T1,T2,T3 不同的 Delta。每次訓練是用前幾小時訓練好的離散參數層固定住,再用下一個 Delta 的資料 finetune dense 網路。也就是透過固定稀疏層、重訓其它參數的方式來緩和模型的過擬和問題。

這個做法也會帶來另一個問題,因為訓練是切分開的,每次都需要固定T0 時刻的離散參數,再用t 1 時刻重訓join階段,這樣會拖累整個訓練速度,帶來擴展性方面的挑戰。所以近年來都是採用單階段訓練,即將離散表徵層與稠密網路層在一個 Delta 中同時更新。而單階段訓練也存在一個問題,因為整個模型除了 embedding 特徵之外,還有很多連續值特徵,這些連續值特徵會統計每個離散特徵的展現點擊情況,因此,可能帶來資料穿越的風險。所以在具體實踐時,第一步會先除掉統計量的特徵,第二步使得稠密網路與離散表徵一起訓練,使用單一階段的方式訓練。另外整個嵌入的長度,都是自動可伸縮的方式。透過這一系列方法,可以使得模型訓練提速 30% 左右。實踐表明,該方法過擬合程度很輕微,訓練跟測試的 AUC 的差距也都是 1/ 1000 或更低的程度。

##接下來介紹架構設計上的思考和經驗。

1、系統分層設計原則

Baidu 仕分け技術の探求と応用

系統設計的核心原則是分治法。召回需要有多個通道,核心的目標是要提升召回率,以及召回資源的豐富程度。同時召回也要考慮探索跟利用的問題,是推薦效果的基礎保證。粗排做第一層的過濾,主要做輕量級點預估,承上啟下。精排通常是做重計算,也是做點預估,跟重排的關係非常緊密,通常會使用非常複雜的結構,也是業界研究的重點。重排是最後一層,重排是具體面對使用者的,決定了最終的展現序列,基於精排的結果考慮上下文然後來做複雜的序列預估,即 list wise 的排序。重排序需要考慮很多業務的約束,裡面有很多規則,包括打散、LCN、退場等等,是規則與模型雙重驅動的模組。

推薦系統各層的目標基本上一致,但是各層側重不太一樣。召回和粗排著重的是泛化以及回想率,精排著重的是單點 AUC 的精確度,重排著重的是整體序列最優。從數據來看,越靠近召回粗排,越泛化,越靠近精排重排,越要求精確度。越靠近召回來源,效能受限越嚴重,因為候選資源越多計算量越大。粗排只需要對齊精排是個誤區,粗排需要考慮與精排的一致性,但並不能只對齊精排。如果粗排什麼都不做,只是做對齊精排,會帶來非常嚴重的馬太效應。因為精排不是 ground truth,使用者的行為才是,需要學習好使用者行為,而不是學習精排,這是很重要的一點提示。

2、多階段模型聯合訓練

Baidu 仕分け技術の探求と応用

精排跟重排之間的關係是非常緊密的,早年重排是直接用精排的評分來做訓練的,一方面耦合很嚴重,另一方面直接使用精排打分來做訓練,很容易產生線上的波動。

百度鳳巢 CTR 3.0 精排跟重排聯合訓練項目,就非常巧妙地利用模型同時訓練避免打分耦合的問題。此專案將精排子網路的隱層及內部評分,都作為重排子網路的特徵,然後,將精排與重排子網路拆開,分別部署於各自模組。一方面可以很好地重複使用中間結果,不會出現評分耦合帶來的波動問題,同時對於重排的精度又會有百分位的提升。這也是當年百度最高獎的子項目之一。

另外,注意該專案並非ESSM,ESSM 是CTCVR 建模,是多目標建模,而CTR3.0 聯合訓練主要解決打分耦合和重排模型精度的問題。

此外,對召回和粗排做解耦合,因為新佇列加入進來,對於新佇列可能會不太公平。因此,提出了隨機遮罩的方式,即隨機 mask 掉一部分特徵,使得耦合度不會那麼強。

3、稀疏路由網路

Baidu 仕分け技術の探求と応用

#最後再來看一下部署在線上的過程。模型參數規模都是千億到兆量級,目標也非常多,直接進行線上部署開銷是非常大的,不能只考慮效果,不考慮效能。有一種比較好的方式就是彈性計算,類似 Sparse MOE 的想法。

粗排連接了非常多的佇列,有數十個甚至數百個佇列。這些隊列對線上的價值(LTV)是不一樣的,由流量價值層來計算不同召回隊列對線上點擊時長的價值。其核心思想是召回隊列整體的貢獻度越大,越可以享受更複雜的計算。從而使得有限的算力能夠服務更高價值的流量。所以我們也沒有採用傳統的蒸餾的方式,而是採用類似 Sparse MOE 的想法來做彈性計算,即策略跟架構 co-design 的設計,使得不同的召回隊列能夠使用最適合的資源網絡進行計算。

五、未來計畫

眾所周知,現在已經進入LLM 大模型時代。百度對下一代基於 LLM 大語言模型的推薦系統的探索將會從三個面向展開。

Baidu 仕分け技術の探求と応用

第一方面是希望模型從基礎的預測升級到能夠做決策。例如經典的冷啟資源高效率探索,沉浸式序列推薦回饋,以及從搜尋到推薦的決策鍊等等重要的問題,都可以藉助大模型來進行決策。

第二方面是從判別到生成,現在整個模型都是判別式的,未來會探索生成式推薦的方式,例如自動生成推薦理由,對長尾資料基於prompt 來做資料自動增強,以及生成式的檢索模型。

第三方面是從黑盒到白盒,傳統做推薦系統,大家常說神經網路是煉金術,是黑盒的,是否有可能向白盒化方向探索,也是未來的重要工作之一。例如基於因果,探究使用者行為狀態遷移背後的原因,推薦公平性方面做更好的無偏估計,以及 Multi Task Machine Learning 的場景上能夠做更好的場景自適應。

以上がBaidu 仕分け技術の探求と応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。