色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析LinUCB算法的流程和優(yōu)點(diǎn)

lviY_AI_shequ ? 來源:未知 ? 作者:工程師飛燕 ? 2018-10-21 09:59 ? 次閱讀

。今天的文章就來介紹一種結(jié)合上下文信息的Bandit方法,LinUCB,它是Contextual bandits算法框架的一種。

本文的原文是雅虎的新聞推薦算法,里面公式是真的挺多的,而且涉及到了兩種linUCB算法,本文只介紹第一種方法。感興趣的同學(xué)可以閱讀原文。

LinUCB淺析

這里只簡單介紹一下LinUCB算法的流程,真的是淺析,淺析!

在推薦系統(tǒng)中,通常把待推薦的商品作為MAB問題的arm。UCB是context-free類的算法,沒有充分利用推薦場景的上下文信息,為所有用戶的選擇展現(xiàn)商品的策略都是相同的,忽略了用戶作為一個個活生生的個性本身的興趣點(diǎn)、偏好、購買力等因素,因而,同一個商品在不同的用戶、不同的情景下接受程度是不同的。故在實際的推薦系統(tǒng)中,context-free的MAB算法基本都不會被采用。

與context-free MAB算法對應(yīng)的是Contextual Bandit算法,顧名思義,這類算法在實現(xiàn)E&E時考慮了上下文信息,因而更加適合實際的個性化推薦場景。

在LinUCB中,每一個arm維護(hù)一組參數(shù),用戶和每一個arm的組合可以形成一個上下文特征(上下文特征的特征維度為d),那么對于一個用戶來說,在每個arm上所能夠獲得的期望收益如下:

對于一個老虎機(jī)來說,假設(shè)手機(jī)到了m次反饋,特征向量可以寫作Da(維度為md),假設(shè)我們收到的反饋為Ca(維度為m1),那么通過求解下面的loss,我們可以得到當(dāng)前每個老虎機(jī)的參數(shù)的最優(yōu)解:

這其實就是嶺回歸嘛,我們很容易得到最優(yōu)解為:

既然是UCB方法的擴(kuò)展,我們除了得到期望值外,我們還需要一個置信上界,但是,我們沒法繼續(xù)用Chernoff-Hoeffding Bound的定理來量化這個上界,幸運(yùn)的是,這個上界已經(jīng)被人找到了:

因此,我們推薦的item就能夠確定了:

可以看到,我們在計算參數(shù)及最后推薦結(jié)果的時候,用到了以下幾部分的信息:上下文特征x,用戶的反饋c。而這些信息都是可以每次都存儲下來的,因此在收集到了一定的信息之后,參數(shù)都可以動態(tài)更新,因此我們說LinUCB是一種在線學(xué)習(xí)方法。

什么是在線學(xué)習(xí)?個人簡單的理解就是模型的訓(xùn)練和更新是在線進(jìn)行的,能夠?qū)崟r的根據(jù)在線上的反饋更新模型的參數(shù)。

好了,我們來看一下linUCB算法的流程吧:

上面的ba可以理解為特征向量x和反饋r的乘積。

是否覺得一頭霧水,不用著急,我們通過代碼來一步步解析上面的流程。

2、linUCB代碼實戰(zhàn)

本文的代碼地址為:

https://github.com/princewen/tensorflow_practice/blob/master/recommendation/Basic-Bandit-Demo/Basic-LinUCB.py

設(shè)定超參數(shù)和矩陣

首先我們設(shè)定一些超參數(shù),比如α,正反饋和負(fù)反饋的獎勵程度r1,r0,上下文特征的長度d


	

self.alpha = 0.25self.r1 = 0.6self.r0 = -16self.d = 6# dimension of user features

接下來,我們設(shè)定我們的幾個矩陣,比如A和A的逆矩陣,b(x和r的乘積),以及參數(shù)矩陣:


	

self.Aa = {} # Aa : collection of matrix to compute disjoint part for each article a, d*dself.AaI = {} # AaI : store the inverse of all Aa matrixself.ba = {} # ba : collection of vectors to compute disjoin part, d*1self.theta = {}

初始化矩陣

初始化矩陣對應(yīng)上面的4-7步,A設(shè)置為單位矩陣,b設(shè)置為0矩陣,參數(shù)也設(shè)置為0矩陣,注意的是,每個arm都有這么一套矩陣:


	

def set_articles(self,art): for key in art: self.Aa[key] = np.identity(self.d) # 創(chuàng)建單位矩陣 self.ba[key] = np.zeros((self.d,1)) self.AaI[key] = np.identity(self.d) self.theta[key] = np.zeros((self.d,1))

計算推薦結(jié)果

計算推薦結(jié)果對應(yīng)于上面的8-11步,我們直接根據(jù)公式計算當(dāng)前的最優(yōu)參數(shù)和置信上界,并選擇最大的arm作為推薦結(jié)果。代碼中有個小trick,及對所有的arm來說,共同使用一個特征,而不是每一個arm單獨(dú)使用不同的特征


	

def recommend(self,timestamp,user_features,articles): xaT = np.array([user_features]) # d * 1 xa = np.transpose(xaT) AaI_tmp = np.array([self.AaI[article] for article in articles]) theta_tmp = np.array([self.theta[article] for article in articles]) art_max = articles[np.argmax(np.dot(xaT,theta_tmp) + self.alpha * np.sqrt(np.dot(np.dot(xaT,AaI_tmp),xa)))] self.x = xa self.xT = xaT self.a_max = art_max return self.a_max

更新矩陣信息

這對應(yīng)于上面的12-13步,根據(jù)選擇的最優(yōu)arm,以及得到的用戶反饋,我們更新A和b矩陣:


	

def update(self,reward): if reward == -1: pass elif reward == 1or reward == 0: if reward == 1: r = self.r1 else: r = self.r0 self.Aa[self.a_max] += np.dot(self.x,self.xT) self.ba[self.a_max] += r * self.x self.AaI[self.a_max] = np.linalg.inv(self.Aa[self.a_max]) self.theta[self.a_max] = np.dot(self.AaI[self.a_max],self.ba[self.a_max]) else: # error

寫到這里,本來應(yīng)該就要結(jié)束了,可是腦子里又想到一個問題,為什么可以直接通過加法來更新A矩陣?其實是個很簡單的問題,試著寫出A矩陣中每個元素的計算公式來,問題就迎刃而解了!

結(jié)語

總結(jié)一下LinUCB算法,有以下優(yōu)點(diǎn)(來自參考文獻(xiàn)3,自己又增加了一條):1)由于加入了特征,所以收斂比UCB更快(論文有證明);2)特征構(gòu)建是效果的關(guān)鍵,也是工程上最麻煩和值的發(fā)揮的地方;3)由于參與計算的是特征,所以可以處理動態(tài)的推薦候選池,編輯可以增刪文章;4)特征降維很有必要,關(guān)系到計算效率。5)是一種在線學(xué)習(xí)算法。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4615

    瀏覽量

    92982
  • LinUCB
    +關(guān)注

    關(guān)注

    0

    文章

    1

    瀏覽量

    1613

原文標(biāo)題:推薦系統(tǒng)遇上深度學(xué)習(xí)(十三)--linUCB方法淺析及實現(xiàn)

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    淺析智能天線

    淺析智能天線智能天線的基本概念智能天線綜合了自適應(yīng)天線和陣列天線的優(yōu)點(diǎn),以自適應(yīng)信號處理算法為基礎(chǔ),并引入了人工智能的處理方法。智能天線不再是一個簡單的單元,它已成為一個具有智能的系統(tǒng)。其具體定義為
    發(fā)表于 06-15 09:06

    指紋識別算法流程介紹

    本帖最后由 mr.pengyongche 于 2013-4-30 03:26 編輯 指紋識別算法流程介紹指紋識別算法在特征量的選擇方法和任意角度旋轉(zhuǎn)時不變的特征量照算法上具有鮮明
    發(fā)表于 11-09 17:31

    RJMU401國密算法應(yīng)用流程

    的過程中被篡改;3、 使用非對稱算法SM2的私鑰簽名來保證數(shù)據(jù)的不可抵賴性,確保數(shù)據(jù)是從某一個確定的車載用戶端發(fā)出;4、 具體流程如下:a、 用戶數(shù)據(jù)使用SM3進(jìn)行散列運(yùn)算得到數(shù)據(jù)摘要,再使用非對稱
    發(fā)表于 01-02 14:55

    HMAC的算法及計算流程

    HMAC算法及計算流程介紹
    發(fā)表于 12-22 07:42

    物理綜合與優(yōu)化的優(yōu)點(diǎn)有哪些?流程是怎樣的?

    物理綜合與優(yōu)化的優(yōu)點(diǎn)有哪些物理綜合與優(yōu)化流程看了就知道物理綜合與優(yōu)化示例
    發(fā)表于 04-08 06:18

    關(guān)于ADPCM壓縮算法流程介紹

    關(guān)于ADPCM壓縮算法流程介紹
    發(fā)表于 06-03 06:44

    視頻壓縮算法的特點(diǎn)和處理流程是怎樣的?

    在本文中,我們將著重探討視頻壓縮算法的特點(diǎn)和處理流程,我們將對基本的視頻壓縮算法進(jìn)行解釋,包括靜態(tài)圖像壓縮、運(yùn)動估計、圖像去噪, 以及色彩空間轉(zhuǎn)換,同時我們還將討論視頻壓縮算法對處理器
    發(fā)表于 06-08 06:49

    淺析幾種電機(jī)控制算法

    BLDC電機(jī)控制算法有哪幾項功能?AC電機(jī)算法的功能有哪些?步進(jìn)電機(jī)控制算法有何優(yōu)點(diǎn)及其缺點(diǎn)?
    發(fā)表于 09-18 07:02

    PID算法基本原理及其執(zhí)行流程

    ,卻也需要下一定功夫。首先我們從PID算法最基本的原理開始分析和設(shè)計這一經(jīng)典命題。PID算法的執(zhí)行流程是非
    發(fā)表于 12-21 08:22

    淺析算法引起的serialno值相同

    1、淺析算法引起的serialno值相同  Platform: RK3288  OS: Android 6.0  Kernel: 3.10.92  現(xiàn)象:  在前面已經(jīng)解決了緩存文件引起值相同
    發(fā)表于 11-16 17:33

    卡爾曼濾波算法對比其他的濾波算法有什么優(yōu)點(diǎn)

    卡爾曼濾波算法對比其他的濾波算法有什么優(yōu)點(diǎn)
    發(fā)表于 10-11 06:42

    淺析仿行星運(yùn)行裝置的功能與優(yōu)點(diǎn)

    淺析仿行星運(yùn)行裝置的功能與優(yōu)點(diǎn) 1前言隨著元件封裝的飛速發(fā)展,越來越多的PBGA、CCGA、0201阻容元件等得到廣泛使用,表面貼裝技術(shù)也快
    發(fā)表于 01-25 09:15 ?690次閱讀

    粒子群算法的原理和流程及用于天線陣的設(shè)計分析

    粒子群優(yōu)化算法是基于一群粒子的智能運(yùn)動而產(chǎn)生的隨機(jī)進(jìn)化計算方法,其優(yōu)點(diǎn)算法非常利于理解和應(yīng)用。本文首先介紹了粒子群算法的原理和流程,研究了
    發(fā)表于 10-28 17:50 ?9次下載
    粒子群<b class='flag-5'>算法</b>的原理和<b class='flag-5'>流程</b>及用于天線陣的設(shè)計分析

    卷積神經(jīng)網(wǎng)絡(luò)算法流程 卷積神經(jīng)網(wǎng)絡(luò)模型工作流程

    卷積神經(jīng)網(wǎng)絡(luò)算法流程 卷積神經(jīng)網(wǎng)絡(luò)模型工作流程? 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種廣泛應(yīng)用于目標(biāo)跟蹤、圖像識別和語音識別等領(lǐng)域的深度學(xué)習(xí)模型,其
    的頭像 發(fā)表于 08-21 16:50 ?2869次閱讀

    FPGA圖像處理_ISP算法DPC流程

    DPC通常作為ISP算法流程里面的第一個模塊,原理也很簡單。
    的頭像 發(fā)表于 11-25 10:04 ?1809次閱讀
    FPGA圖像處理_ISP<b class='flag-5'>算法</b>DPC<b class='flag-5'>流程</b>
    主站蜘蛛池模板: 亚洲欧美免费无码专区| 小莹的性荡生活| 亚洲高清国产品国语在线观看| 免费在线亚洲视频| 久久最新地址获取| 久久www成人看片| 久久AV国产麻豆HD真实乱| 国产自产第一区c国产| 国产三级影院| 国产偷国产偷亚州清高APP| 国产精品99久久久久久WWW| 国产AV一区二区三区传媒| 妇少水多18P蜜泬17P亚洲乱| 俄罗斯兽交XXXXX在线| 古月娜下面好紧好爽| 国产精品青青青高清在线密亚| 国产精品18久久久久网站| 国产欧美二区综合| 黑人操白逼| 久久久精品3d动漫一区二区三区| 久久综合色一综合色88中文| 免费在线看视频| 日本高清免费在线| 色婷婷亚洲五月| 星空无限传媒视频在线观看视频 | 一个人免费完整观看日本| 伊人久久大香线蕉avapp下载| 中文字幕精品在线观看| 99re28久久热在线观看| RUNAWAY韩国动漫免费官网版| 成人AV精品视频| 国产精品久久久久久日本| 好大好硬好湿再深一点网站| 久久精品免费观看久久| 蜜臀AV精品一区二区三区| 日本枯瘦娇小| 亚洲第一天堂无码专区| 竹菊影视一区二区三区| CHINA末成年VIDEO学生| 国产精品18久久久久久白浆.| 黑粗硬大欧美在线视频|