主頁 >  其他 > youtobe深度學習推薦系統-學習筆記

youtobe深度學習推薦系統-學習筆記

2023-06-11 07:54:29 其他

簡介

前言

本文是Deep Neural Networks for YouTube Recommendations 論文的學習筆記,淘寶的召回模型曾經使用過這篇論文里面的方案,后續淘寶召回模型升級到了MGDSPR:多粒度深度語意商品檢索,

轉向深度學習

和谷歌的其他產品一樣,you2b也經歷了向深度學習轉變的程序,矩陣分解技術在推薦系統中使用廣泛研究多,而深度學習當時在推薦系統中應用并不多,y2b有超過10億用戶,應用DL的挑戰

  • 由于用戶規模、語料庫規模的龐大,很多在小問題上應用效果不錯的模型演算法,在y2b上面效果卻一般,

  • 用戶偏好新的內容,每秒鐘有大量新的視頻內容產生,這些新的資料如何于現有系統的資料協同好

  • 用戶的歷史行為非常稀疏,視頻元資料缺乏良好的結構定義

系統概覽

1 系統架構圖

image

如圖所示系統架構圖非常簡單,先試召回,然后排序,最經典、最古老的召回是倒排召回,近年來基于神經網路興起的向量召回也逐漸流行并應用起來,比如facebook構建了基于倒排的ANN檢索;淘寶構建了基于倒排、協同過濾、ANN檢索的多路檢索系統,召回階段至關重要,召回的質量決定了下一個階段排序能達到的上限,因為召回能看到語料庫中的全部資料,而排序則基于召回的少量資料LIST.

2 召回

以用戶的歷史行為作為輸入,產出小批量相關的視頻給用戶,并通過協同過濾提供寬泛的個性化,用觀看過的視頻ID、搜索的query以及統計出的特征來衡量用戶之間的相似度

3 排序

在召回大相關視頻之間,應該細粒度地區分它們之間的重要性,這個就是排序階段要做的事情,排序階段會給每一個召回的視頻賦予一個打分,打分越高,就排到越前面,這個打分是基于我們期望的目標函式,以用戶特征、視頻特征為輸入訓練出來的

迭代評估

基于離線訓練的評估指標迭代模型,但是在線的表現并不完全跟離線訓練的行為一致,且在線可以通過多種無法在離線評估中使用的指標來評價模型效果,因此在線A/B測驗

召回

問題定義

y2b推薦系統從大規模語料庫里面檢索出數百個相關的結果給用戶,論文里把推薦系統看作一個極端多分類問題: 將預測問題轉化為在用戶U+背景關系C的情況下,從大規模語料庫準確地分類出用戶在時間t觀看的視頻\(w_t\)

image

  • \(u\) 代表用戶和背景關系經過embedding后的低維稠密向量

  • \(v\) 代表視頻item的向量表示

  • \(V\) 是語料庫,或者索引庫

為了敘述的方便,此處忽略指數,這個運算式的分母是語料庫\(V\)中每一個視頻和當前用戶大向量乘積,分子是特定某個視頻和用戶之間的乘積,衡量的是某個視頻應該被推薦給用戶的概率,顯然這些概率的和是1,這個其實就是softmax操作,

極端多分類

為了訓練規模高達數百萬類別的模型,從候選集中挑選抽樣負樣本,并通過加權修正的方式來進行調整,訓練的程序最小化\(true\) 標簽和抽樣負樣本之間的交叉熵的值,通過抽樣的方式softmax訓練效率相對于傳統softmax提高了100倍,層次softmax也是一種高效的方案,然而經常在不相關的節點之間游走遍歷,使得分類問題非常困難,性能也惡化,

模型架構

用戶的歷史行為由一系列視頻ID組成,這些視頻ID已經編碼為稠密向量,最后這些向量進行平均操作作為歷史行為的表示,

image

異構信號

深度學習的優點是可以很容易地將任意特征引入到模型中,論文中用戶的搜索query、觀看歷史被同等對待,query基于1-gram、2-gram語言模型進行分詞,分詞后的token編碼為向量,它們經過平均后代表用戶的歷史行為,另外地理位置、設備也會embedding為向量輸入模型,一些簡單的特征如性別、登陸狀態等歸一化到\([0,1]\) 直接輸入到模型,

age特征

每秒鐘都有很多小時的視頻被上傳到y2b,這些新的內容如何快速地推薦給用戶是非常重要的,因為在不損失相關性的前提下,用戶偏好新的內容,由于模型基于過去的老資料訓練,容易偏向推薦老的內容給用戶,

為了解決這個問題將age 作為樣本的一個特征,參與模型訓練,在線服務的時候將age設定為\(0\) 或者稍微負數一點,已表明模型預測最近的一個時間視窗,

image

如圖是隨著時間的流逝,模型輸出的視頻分類概率,\(Empirical\) 這條線是根據經驗判斷一個內容流行度隨著視頻流逝而變化的曲線圖:剛開始出現時有新鮮感比較受歡迎,越來越多的人看過后,新鮮感消失,流行度下降,可以看出\(baseline\) 接近一條直線,沒有考慮實效性的影響,而帶上\(Age\)特征后,曲線比較接近經驗上的走勢

標簽和背景關系的選擇

樣本來源

訓練樣本來自y2b全部的觀看資料,而不僅僅是y2b的推薦系統,否則容易產生一個偏差:新的內容很難展現出來,因此如果用戶通過推薦系統以外的方式進行探索,那么可以通過協同過濾傳播給其他用戶,

筆者注 在谷歌的一片關于冷啟動的論文里,使用推薦系統的資料輔助搜索的模型訓練,以解決那些新的沒有點擊過的但是實際上又是相關的用戶感興趣的檔案不在訓練資料中的冷啟動問題,而本文用推薦系統以外的觀看行為來\(enhance\) 推薦系統,正好形成一個回路,

活躍用戶

一些極度活躍的用戶會導致模型訓練時,他們的資料會影響目標函式導致產生訓練偏差,解決辦法是對每個用戶產生固定數目的訓練樣本,

反直覺

有一個反直覺的發現模型會利用網站的結構等資訊導致過擬合問題,例如用戶搜索了\(泰勒斯威夫特\),那么在這個背景下,推薦系統會將對應的搜索結果頁作為內容推薦給用戶,但是表現非常差,通過丟棄用戶歷史搜索行為的順序、亂序詞包,可以解決這個問題,

Future Leak

許多協同過濾系統從觀看序列移除一個事件,用前后的背景關系資訊來預測被移除的事件,但是這樣會泄漏future information,而y2b的做法是將被預測的那個事件及時間序列之后的都移除,如下圖所示,驗證來看用b 訓練出的模型表現好于a,

image

排序

排序階段使用類似召回階段的模型結構,給每一個召回的候選資料賦予一個分數,然后按照這個分數對結果List進行排序,點擊率具有欺騙性,用戶可能點擊了某個視頻,但是并沒有完成觀看,因此觀看時間更能代表用戶對結果的認可度,

特征表達

1 特征工程

深度學習的興起能夠減輕特征工程的負擔,然而y2b的原始資料不適合直接輸入模型,因此仍然花費了大量的資源進行特征標注,難點在于如何表達用戶活動的時序序列,以及和他們相關的視頻item如何打分,

在特征工程中觀察到2個重點:

  • 用戶之前和某個item(以及和這個item相似的其他item)的互動

  • 將召回階段的特征傳遞到排序階段比較重要

2 Embeding類目特征

類似召回階段稀疏多類目特征會轉為稠密向量以適合神經網路模型的輸入,每一個獨立的ID空間獨立學習embedding表示,空間會進行裁剪,此處的空間即詞匯表,例如所有用戶搜索過的所有query分詞后產出一個詞匯表,這個表會進行裁剪,只有出現次數達到一定閾值的TOP-N才會被選中,除了共享的特征(例如視頻ID),其他的特征都會單獨輸入神經網路,以學習到這個特征特有的表示,

3 歸一化連續特征

與決策樹不同的是,神經網路對資料的規模后分布比較敏感,歸一化特征資料有利于模型的快速收斂,對于一個符合\(f\) 分布的連續特征\(x\) ,通過按比例縮放歸一化到區間\([0,1)\) 得到歸一化后的特征值\(\hat{x}\) .經過指數操作后得到的形如 \(\hat{x}^2\) \(\sqrt{{\hat{x}}}\) 也作為模型的輸入,可以提高模型的精度,

4 預期觀看時間的建模

模型的目標是預測視頻的觀看時長,正樣本根據標注的觀看時長進行加權,負樣本不加權,通過邏輯回歸和交叉熵損失進行訓練,學習到到概率是\(\frac{{\sum{T_i}}}{N - k}\) \(N\)是訓練樣本的數目,\(k\)是正樣本的數目,\(T_i\)是第\(i\) 個樣本的觀看時長,假設正例的樣本少到可以忽略, 點擊的概率是P, 學習到的觀看時長的可能性是\(E[T ](1 + P )\) ,由于\(P\)比較小,那么預測的結果接近\(E[T]\) .

在線推理階段,最后一層使用指數函式,來預測幾率,

image

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554850.html

標籤:其他

上一篇:讀改變未來的九大演算法筆記09_指尖的精靈

下一篇:返回列表

標籤雲
其他(160753) Python(38219) JavaScript(25491) Java(18216) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7245) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4589) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2435) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1957) Web開發(1951) C++(1933) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1880) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • youtobe深度學習推薦系統-學習筆記

    # 簡介 **前言** 本文是**Deep Neural Networks for YouTube Recommendations** 論文的學習筆記。淘寶的召回模型曾經使用過這篇論文里面的方案,后續淘寶召回模型升級到了MGDSPR:多粒度深度語意商品檢索。 **轉向深度學習** 和谷歌的其他產品一 ......

    uj5u.com 2023-06-11 07:54:29 more
  • 讀改變未來的九大演算法筆記09_指尖的精靈

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230610215843307-1266684231.png) # 1. 人類很有可能“在未來像過去所做過的一樣行事” # 2. 計算機科學領域并不僅僅是編程 ## 2.1.  ......

    uj5u.com 2023-06-11 07:48:44 more
  • AtCoder Beginner Contest 305

    ## [A - Water Station (abc305 a)](https://atcoder.jp/contests/abc305/tasks/abc305_a) ### 題目大意 給定一個數字$x$,輸出一個數字,它是最接近$x$的 $5$的倍數。 ### 解題思路 令$y = x \% 5 ......

    uj5u.com 2023-06-11 07:48:37 more
  • 【技識訓累】資料結構中的二叉樹【一】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-11 07:48:32 more
  • 配置證書與https

    申請證書 筆者是騰訊云申請的證書 根據需求選擇下載證書 筆者使用的Nginx的方法 下載后解壓即可看到內容 配置 Nignx 參考文獻 SSL 證書 Nginx 服務器 SSL 證書安裝部署-證書安裝-檔案中心-騰訊云 (tencent.com) 我的nignx配置如下 server { #SSL ......

    uj5u.com 2023-06-11 07:46:22 more
  • 作為「碼農」的第一個十年

    十年 如果從上大學, 閉門造車似地搗鼓ActionScript3開始, 已經寫了10年代碼了. AS3 Java、Struts2、Hibernate、HTML、Javascript、CSS、SVN、Git、SQL Server、MySQL、Android Linux、PHP、ThinkPHP、Cav ......

    uj5u.com 2023-06-11 07:46:05 more
  • 程式員需要達到什么水平才能不被性別歧視?順利拿到 20k 無壓力?

    雙非本科,自認為技術水平不差,8月從美圖實習離職回學校,各種倒霉的事不斷,到現在11月,為了找個好的環境復習,9月又在學校附近租了房,基本是沒有面試通知就學不進去,前面由于過于自信,也沒拿個保底的offer,也只去湖大跑過一次58到家的宣講會,各種面試基本二面掛,最慘的一次的就是美團電話一面后,面試... ......

    uj5u.com 2023-06-11 07:38:58 more
  • 讀改變未來的九大演算法筆記08_并非萬能的演算法

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230609163604504-1485199592.png) # 1. 有些問題根本不可能通過計算機解決,不管計算機有多強大或人類程式員有多聰明 # 2. 不可計算問題 ## ......

    uj5u.com 2023-06-10 08:33:17 more
  • DosBox環境配置

    # DosBox環境配置 DOSBox 是一個基于 x86 架構的 PC 的模擬器,它允許用戶在現代作業系統上運行 DOS 程式。DOSBox 是自由軟體,可以在 Windows、Linux ,macOS 等作業系統平臺上運行。 DOSBox 最初的設計目標是為那些依賴 MS-DOS 作業系統(即停 ......

    uj5u.com 2023-06-10 08:33:10 more
  • cocos2d-x 3.17 推箱子 0.1

    # 簡述 ## sokoban-cocos2dx 此版本為推箱子游戲的基礎版本, 后續添加如下功能 1. 人物影片 2. TiledMap 決議 3. 射線碰撞檢測 4. 下一步提示, C++演算法決議 5. 道具, 可以回退一步 ## 原始碼運行方式 ~~通過 `cocos` 命令新建一個專案, 將本 ......

    uj5u.com 2023-06-10 08:33:01 more