最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

推薦系統(tǒng)概論

2023-02-13 14:28 作者:TongMarsh  | 我要投稿

字節(jié)內(nèi)推

社招:?https://job.toutiao.com/s/NJWAUYn

字節(jié)跳動校招內(nèi)推碼: ZPT8QA5?

投遞鏈接: https://jobs.toutiao.com/s/NJWhbh8


推薦與搜索

推薦和搜索在工程上具有很高的相似度:二者實現(xiàn)的都是信息與用戶意圖之間的匹配。搜索系統(tǒng)是將海量內(nèi)容與用戶表意明確的查詢詞相關(guān)聯(lián),推薦系統(tǒng)則是將海量內(nèi)容與用戶沒有明確表達的偏好相關(guān)聯(lián)。

圖片


推薦系統(tǒng)分類【1】

協(xié)同過濾:根據(jù)用戶歷史行為(例如其購買的、選擇的、評價過的物品等)結(jié)合其他用戶的相似決策建立模型。這種模型可用于預測用戶對哪些物品可能感興趣(或用戶對物品的感興趣程度)

基于內(nèi)容的(content-based filtering): 利用一些列有關(guān)物品的離散特征,推薦出具有類似性質(zhì)的相似物品。例如,亞馬遜推薦與已購買物品相似的產(chǎn)品

hybrid:混合兩種方法

推薦系統(tǒng)在線工作流程分為召回,排序。召回階段負責從上百萬數(shù)據(jù)中找出相關(guān)信息返回,排序分為粗排,精排,重排?;玖鞒倘缦聢D

圖片


常用的召回方法有:協(xié)同過濾,基于內(nèi)容的過濾(Word2Vec、LDA、FastText、LSTM),深度召回(YoutobeDNN...)

排序方法:線性模型(LR,F(xiàn)M),樹模型(決策樹,GBDT【XGBoost,LightGBM】),深度學習模型。

矩陣分解和YoutubeDNN

矩陣分解

矩陣分解是協(xié)同過濾模型下的一種方法。該模型將user-item矩陣分解為兩個低緯矩陣的乘積

圖片


矩陣分解示意圖

R矩陣緯度為m * n,表示m個用戶(user)對n個物品(item)的評分矩陣。目標是將該矩陣分解為P和Q兩個矩陣乘積。P矩陣維度為m * k, Q矩陣為n * k, k << m和 n,為隱含因子。P矩陣第u行Pu中每一項值表示第u個用戶對物品某項特征感興趣程度。Q矩陣第i行Qi中每一項表示第i個物品某項隱含特征的得分,例如類型,語言。

圖片


R表示預測的得分矩陣。因為有些用戶習慣給高分,為了解決這種問題,需要加上bias。

對R中一個具體得分可以表示為

圖片


bu表示用戶u的bias,bi表示物品i的bias。

目標函數(shù)是:

圖片


代碼實現(xiàn):

??https://stackoverflow.com/questions/64605596/simple-way-of-performing-matrix-factorization-with-tensorflow-2

??https://katbailey.github.io/post/matrix-factorization-with-tensorflow/ tensorflow1

計算得到分解后的矩陣,就可以通過求相似的用戶矩陣,然后推薦這些用戶喜歡的物品給另一個用戶。存在的問題是:冷啟動問題。

YouTubeDNN

YoutubeDNN是youtube在2016年提出的將深度學習應用于推薦的算法。論文【2】將推薦問題建模為超大規(guī)模多分類問題,從而使用了深度學習。因為深度學習最擅長的是分類和回歸,大部分問題都需要歸一化為這兩種問題使用深度學習處理。

圖片


YoutubeDNN系統(tǒng)架構(gòu)

上圖展示了YoutubeDNN的整體架構(gòu),分為兩個部分:召回和排序。這里主要介紹召回網(wǎng)絡部分。下圖是召回模型的結(jié)構(gòu)

圖片


深度召回模型

特征處理-輸入輸出

該模型輸入包括用戶觀看的視頻列表,搜索詞列表,用戶信息年齡,性別,地區(qū))。

????其中對視頻列表的處理比較需要關(guān)注:將觀看的視頻列表按時間排序,一段時間窗口內(nèi)最后觀看的視頻作為輸出的label。

模型最后一層采用的是softmax,那么最后一層的輸出可以表示時刻t,預測用戶U觀看視頻i的概率,公式如下:

圖片


模型最后一層softmax的輸出是一個n * 1維向量,其中每一項的值按照上述公式計算得到。向量中數(shù)值最大的那一項表示觀看概率最大的視頻。損失函數(shù)一般采用交叉熵cross-entropy。

??Embedding

??? 輸入video列表特征的進一步處理。對于每一個video可以使用一個序號唯一表示。神經(jīng)網(wǎng)絡中比較常用的表示方法是獨熱(one-hot)編碼。因為視頻庫數(shù)量龐大,獨熱編碼是相當大的稀疏矩陣,所以網(wǎng)絡中采用類似NLP中的詞袋模型,在固定的詞匯表里學習高維編碼,然后在前向傳播神經(jīng)網(wǎng)絡學習。關(guān)于Embedding可以見參考【3】

??其他特征:

??地理特征可以提供先驗知識,設備和地區(qū)都進行編碼,用戶的性別,登陸狀態(tài),年齡歸一化到0-1的取值

??預測

??召回模型訓練完后,最naive的方法是直接將輸入用模型計算得到預測結(jié)果,下面將介紹的案例既是如此。而Youtube為了實時性,將訓練得到的視頻和用戶的embedding存儲起來,然后用ANN求用戶向量相似的視頻向量作為結(jié)果返回。

代碼案例

??https://theiconic.tech/implementing-the-youtube-recommendations-paper-in-tensorflow-part-1-d1e1299d5622

使用的MovieLens數(shù)據(jù)庫,包含1000個用戶對1700部電影的10萬條評論。

預處理將每條數(shù)據(jù)轉(zhuǎn)換成一個用戶喜歡的電影列表,不喜歡的電影列表,用戶看過的電影的類型列表,用戶看過的電影名作為搜索詞。這里不增加其他的異構(gòu)特征,例如:地區(qū),年齡,職業(yè)

為了得到喜歡和不喜歡的電影列表,定義評分大于2的電影為用戶喜歡的電影。

預測的標簽使用喜歡的電影列表最后一項

將輸入編碼后就有喜歡的視頻庫(like video corpus),dislike video corpus, search corpus, genre corpus,預測標簽是最后觀看的視頻

圖片


樣例

相關(guān)知識點

1. cross-entropy和softmax:

https://towardsdatascience.com/softmax-activation-function-how-it-actually-works-d292d335bd78

https://towardsdatascience.com/cross-entropy-loss-function-f38c4ec8643e

2. 全連層

??最基本的神經(jīng)網(wǎng)絡,可以用一個矩陣表示其參數(shù)

Denseimplements the operation:output = activation(dot(input, kernel) + bias)whereactivationis the element-wise activation function passed as theactivationargument,kernelis a weights matrix created by the layer, andbiasis a bias vector created by the layer (only applicable ifuse_biasisTrue). These are all attributes ofDense.

圖片


3. batchNormalization 【5】【6】

Batch normalization applies a transformation that maintains the mean output close to 0 and the output standard deviation close to 1.

??對某層輸入進行轉(zhuǎn)換,加速網(wǎng)絡訓練的技巧。

4. sigmoid/relu

圖片


??sigmoid【7】形如上圖的一種函數(shù),主要作用是將神經(jīng)網(wǎng)絡某層的輸出壓縮到0-1的范圍內(nèi)

圖片


??ReLu【8】是上圖所示的一種函數(shù),作用和sigmoid類似,求導更方便,更利于網(wǎng)絡訓練

負采樣:待補充

參考:

【1】 https://zh.wikipedia.org/wiki/%E6%8E%A8%E8%96%A6%E7%B3%BB%E7%B5%B1

【2】 https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf

【3】Embedding

word2vec是怎么樣的:

https://towardsdatascience.com/introduction-to-word-embedding-and-word2vec-652d0c2060fa

keras中embedding:

https://medium.com/analytics-vidhya/understanding-embedding-layer-in-keras-bbe3ff1327ce

https://www.kaggle.com/rajmehra03/a-detailed-explanation-of-keras-embedding-layer

【4】介紹YoutubeDNN的文章https://zhuanlan.zhihu.com/p/126282487

http://www.felixzhao.cn/Articles/article/15

【5】https://en.wikipedia.org/wiki/Batch_normalization

【6】https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization

【7】https://en.wikipedia.org/wiki/Sigmoid_function

【8】https://en.wikipedia.org/wiki/Rectifier_(neural_networks)



本文使用 文章同步助手 同步

推薦系統(tǒng)概論的評論 (共 條)

分享到微博請遵守國家法律
乌苏市| 墨竹工卡县| 阳原县| 海安县| 南溪县| 泰来县| 勃利县| 赤水市| 从江县| 广安市| 东方市| 邹城市| 台前县| 上虞市| 翼城县| 洛川县| 伊通| 儋州市| 玉林市| 阳谷县| 绥化市| 鄂托克前旗| 沙湾县| 盘山县| 藁城市| 宕昌县| 洞口县| 扎兰屯市| 工布江达县| 汉寿县| 晋城| 民乐县| 从江县| 西昌市| 剑河县| 红安县| 通山县| 通渭县| 塔河县| 安泽县| 濮阳县|