tiktok廣告算法
一、倒排索引原理及Map中Key的處理
具體使用方法見【搜廣推校招面經三十六】
倒排索引(Inverted Index)是信息檢索系統中常用的一種數據結構,用于快速查找包含某個關鍵詞的文檔。以下是倒排索引的原理及Map中Key的處理方式的詳細說明。
1.1. 倒排索引的原理
(1) 基本概念
- 正排索引:以文檔為單位,記錄每個文檔包含的關鍵詞。
- 倒排索引:以關鍵詞為單位,記錄每個關鍵詞出現在哪些文檔中。
(2) 數據結構
倒排索引通常由兩部分組成:
- 詞典(Dictionary):存儲所有關鍵詞。
- 倒排列表(Posting List):記錄每個關鍵詞對應的文檔列表及其相關信息(如詞頻、位置等)。
2. Map中Key的處理
在實現倒排索引時,通常使用Map(或字典)來存儲詞典和倒排列表。以下是Map中Key的處理方式:
(1) Key的選擇
- Key:關鍵詞(Term)。
- Value:倒排列表(Posting List),通常是一個列表或數組,存儲文檔ID及其相關信息。
(2) Key的存儲
- 哈希表:使用哈希表(如Python的
dict
或Java的HashMap
)存儲Key-Value對,確保快速查找。 - 排序存儲:將Key按字典序排序,便于范圍查詢和前綴匹配。
(3) Key的沖突處理
- 哈希沖突:當兩個不同的Key映射到同一個哈希值時,使用鏈地址法或開放地址法解決沖突。
- 重復Key:在倒排索引中,Key是唯一的,不會出現重復。
二、Transformer的結構、原理、優點、除 d k \sqrt{d_k} dk??、手寫自注意力機制一套。
見【搜廣推校招面經三十四、搜廣推校招面經二】
三、MMoE與PLE的計算方式及區別
MMoE(Multi-gate Mixture of Experts)和PLE(Progressive Layered Extraction)是多任務學習(Multi-task Learning, MTL)中常用的模型結構。它們通過共享部分參數和引入特定機制來處理多任務學習中的任務沖突問題。
3.1. MMoE(Multi-gate Mixture of Experts)
(1) 核心思想
MMoE通過引入多個專家(Experts)和一個門控網絡(Gating Network)來建模任務之間的關系,從而緩解任務沖突。
(2) 計算方式
- 專家網絡:多個獨立的子網絡(Experts),每個專家負責學習不同的特征表示。
- 門控網絡:為每個任務分配一個門控網絡,用于動態調整各專家對當前任務的貢獻。
(3)公式
對于任務 k k k,其輸出 y k y_k yk? 計算如下:
y k = h k ( ∑ i = 1 n g i k ( x ) ? f i ( x ) ) y_k = h^k \left( \sum_{i=1}^{n} g_i^k(x) \cdot f_i(x) \right) yk?=hk(i=1∑n?gik?(x)?fi?(x))
其中:
- x x x:輸入特征
- f i ( x ) f_i(x) fi?(x):第 i i i 個專家的輸出
- g i k ( x ) g_i^k(x) gik?(x):任務 k k k 的門控網絡對第 i i i 個專家的權重(通過一個softmax計算)
- h k h^k hk:任務 k k k 的輸出層
3.2. PLE(Progressive Layered Extraction)
(1) 核心思想
PLE通過分層提取共享特征和任務特定特征,逐步分離任務間的共享信息和特定信息,從而更好地處理任務沖突。
(2) 計算方式
- 共享專家:多個共享專家(Shared Experts),用于提取任務間的共享特征。
- 任務特定專家:每個任務有自己的特定專家(Task-specific Experts),用于提取任務特定特征。
- 門控網絡:為每個任務分配一個門控網絡,用于動態調整共享專家和任務特定專家的貢獻。
(3)公式
對于任務 k k k,其輸出 y k y_k yk? 計算如下:
y k = h k ( ∑ i = 1 n s g s , i k ( x ) ? f s , i ( x ) + ∑ j = 1 n t g t , j k ( x ) ? f t , j k ( x ) ) y_k = h^k \left( \sum_{i=1}^{n_s} g_{s,i}^k(x) \cdot f_{s,i}(x) + \sum_{j=1}^{n_t} g_{t,j}^k(x) \cdot f_{t,j}^k(x) \right) yk?=hk(i=1∑ns??gs,ik?(x)?fs,i?(x)+j=1∑nt??gt,jk?(x)?ft,jk?(x))
其中:
- f s , i ( x ) f_{s,i}(x) fs,i?(x):第 i i i 個共享專家的輸出
- f t , j k ( x ) f_{t,j}^k(x) ft,jk?(x):任務 k k k 的第 j j j 個特定專家的輸出
- g s , i k ( x ) g_{s,i}^k(x) gs,ik?(x):任務 k k k 的門控網絡對第 i i i 個共享專家的權重(通過一個softmax計算)
- g t , j k ( x ) g_{t,j}^k(x) gt,jk?(x):任務 k k k 的門控網絡對第 j j j 個特定專家的權重(通過一個softmax計算)
- n s n_s ns?:共享專家的數量
- n t n_t nt?:任務特定專家的數量
3.3. MMoE與PLE的區別
特性 | MMoE | PLE |
---|---|---|
核心思想 | 通過門控網絡動態調整專家權重 | 分層提取共享特征和任務特定特征 |
專家類型 | 所有任務共享一組專家 | 共享專家 + 任務特定專家 |
門控網絡 | 每個任務一個門控網絡 | 每個任務一個門控網絡 |
任務沖突處理 | 動態調整專家權重 | 分層分離共享信息和任務特定信息 |
適用場景 | 任務相關性較弱的多任務場景 | 任務相關性較強的多任務場景 |
3.4. 參考資料
- MMoE論文
- PLE論文