一直對圖像很感興趣,最近在關注一個問題:如何通過深度學習抽取圖像特征,用於廣告和推薦。
CNN 是一個簡單的網絡結構,初學者一般從MNIST入手,提及CNN第一印象可能只有經典的圖像分類的那個model。深入了解才會發現,學術圈和工業界是如何通過稍稍改變 Feature Map 之后的結構和目標函數等實現各種復雜任務,這其中迸發的想象力讓人激動。
Deep CTR Prediction in Display Advertising
同樣來看一個例子:
b 比 a 點擊率低,是因為 b 的主體和背景的對比度太低;d 比 c 點擊,是因為用戶對多男模的圖片不太喜歡,這種case 跟騰訊廣告同學舉得還不太一樣 😆
整體的網絡架構如下:
左側的卷積網絡用來提取圖像特征,結構類似於 VGG16。因為上面網絡結構較為復雜,可以先用圖像分類任務來解決CNN的預訓練問題。
右側是全連接層,類似於embedding,區別在於全連接層有非線性變換。輸入層是 one-hot-encode 形式,約 20w維,非常稀疏,在計算的時候,很多0輸入節點的前向后向計算都可省略,特征存儲也可以用下標的方式輸入,減少計算和存儲資源消耗。
廣告的樣本數量很大,但是CNN計算較為耗時,如果按照 PSLR 的方式去批次訓練,訓練過程過於漫長。作者把有相同圖片的樣本聚合在一起,相同圖片只用計算一次CNN。舉個例子,batchsize 為 5000,圖片只有 10張,則CNN只用計算 10 次,右側的全連接層非常稀疏,計算效率很高,5000個樣本的計算時間可能比10張圖片CNN計算時間還短。
實驗對比
-
5千萬樣本,10w張圖片
-
對比實驗的結果:
特征區域的可視化
圖片中的貓、紋理、文字對點擊率有影響
附:公眾號