跟老板復習了壹遍,發現以前真的只有壹點知識。這次在記錄這篇論文的新理解的同時,可能會有壹些錯誤。
本文分兩個階段來解釋這個模型:回憶和精細安排:
回憶:
先說特征:用戶看過的視頻的嵌入,用戶搜索詞的嵌入,用戶地理位置和年齡的side _ infomation,需要說明的Example _ age特征。
然後是模型:三層DNN。
最後,訓練的損失:softmax做分類。
上菜方式:最近鄰
這裏面其實有很多疑點:
1.example_age是什麽?
這個點欄裏說的是訓練時間——得到這個樣本的時間(視頻點擊時間),但是我覺得這並不能表達“新視頻”的概念,也不知道用當前時間去減法是什麽意思。標簽是在點擊的瞬間打出來的,並不是訓練的時候;
所以我認為這個例子年齡應該是點擊時間-上架時間,表明用戶對新上傳的視頻的偏好。這個特性是用來捕捉這種偏好的,上菜的時候都可以設置為0,可以消除這種偏好。畢竟這是回憶階段,可以回憶的東西更多。(這是為了消除用戶對新視頻的偏好?)
2.為什麽要做多分類,而不是預測分數?如果多分類的視頻很多,性能如何保證?
我真的不明白為什麽要做多分類,而不是把樣本的嵌入交給網絡打分。
Sampled softmax用於提高海量視頻的多分類性能,可參考/p/349908071。壹般來說,用Q(y|x)采樣壹個子集,對該子集計算logit,然後原始數據集上的logit可以用計算結果F(x,y)-log(Q(y|x))來表示。
3.為什麽不在3 .發球階段做多分類,而是做最近鄰?
這裏首先要明白什麽是服務階段的用戶嵌入和視頻嵌入。user_embedding是最後壹層relu後的結果,比如壹個D維向量。然後要得到壹個百萬維的向量(用d_N表示),需要經過壹個d*d_N維的矩陣,這個矩陣的每壹列都是視頻嵌入;經過訓練;如果上菜的階段還是和每壹列相乘然後算壹個softmax,既然分母壹樣,取指數的操作也壹樣,那麽直接做點積就好了。
排序:
先說特征:當前排名的視頻的嵌入,用戶觀看的視頻的嵌入,用戶和視頻的語言的嵌入,上次觀看的時間是觀看同壹頻道視頻的時間,之前的印象是視頻被用戶曝光的次數(這裏引入了負反饋)。
然後是模型:三層DNN。
最後,培訓的損失:加權邏輯。
發球方式:e (wx+b)
也有壹些疑惑:
1.training中的加權logistic是什麽,發球為什麽用E (WX+B)?
這壹點是我重讀的時候最不理解的。我先試著寫壹下。首先,我們先明確壹下什麽是加權邏輯斯蒂奇。那麽,我們來回顧壹下LR公式的由來log(odds)= w * x;* x;Odds=p/(1-p)這裏代表正樣本的概率/負樣本的概率;在加權LR中,這個賠率將變成W*p/(1-p),其中W是給予陽性樣本的權重。至於為什麽會這樣,有壹種解釋是用正負樣本比例來解釋的,我覺得不是很合理/P/4359122165438;但如果我們能接受這個odd,那麽log(odds) = w*x * x可以得到odds = e^(wx),這就是發球的目標;
先說W*p/(1-p)是什麽,其中W權重是這段視頻的時長T,那麽sum(Ti*pi)就是E(T)實時的期望值,E(T)/(1-p)泰勒展開就是E(T) * (1。
非常推薦多看十大工程問題專欄,多說說,比如從每個用戶抽取等量的訓練樣本,把大量長尾視頻的嵌入設置為0。