在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

FFM理論與FFM實(shí)現(xiàn)細(xì)節(jié)

lviY_AI_shequ ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-20 16:10 ? 次閱讀

1、FFM理論

在CTR預(yù)估中,經(jīng)常會(huì)遇到one-hot類型的變量,one-hot類型變量會(huì)導(dǎo)致嚴(yán)重的數(shù)據(jù)特征稀疏的情況,為了解決這一問題,在上一講中,我們介紹了FM算法。這一講我們介紹一種在FM基礎(chǔ)上發(fā)展出來(lái)的算法-FFM(Field-aware Factorization Machine)。

FFM模型中引入了類別的概念,即field。還是拿上一講中的數(shù)據(jù)來(lái)講,先看下圖:

在上面的廣告點(diǎn)擊案例中,

“Day=26/11/15”、“Day=1/7/14”、“Day=19/2/15”這三個(gè)特征都是代表日期的,可以放到同一個(gè)field中。同理,Country也可以放到一個(gè)field中。簡(jiǎn)單來(lái)說(shuō),同一個(gè)categorical特征經(jīng)過(guò)One-Hot編碼生成的數(shù)值特征都可以放到同一個(gè)field,包括用戶國(guó)籍,廣告類型,日期等等。

在FFM中,每一維特征 xi,針對(duì)其它特征的每一種field fj,都會(huì)學(xué)習(xí)一個(gè)隱向量 v_i,fj。因此,隱向量不僅與特征相關(guān),也與field相關(guān)。也就是說(shuō),“Day=26/11/15”這個(gè)特征與“Country”特征和“Ad_type"特征進(jìn)行關(guān)聯(lián)的時(shí)候使用不同的隱向量,這與“Country”和“Ad_type”的內(nèi)在差異相符,也是FFM中“field-aware”的由來(lái)。

假設(shè)樣本的 n個(gè)特征屬于 f個(gè)field,那么FFM的二次項(xiàng)有 nf個(gè)隱向量。而在FM模型中,每一維特征的隱向量只有一個(gè)。FM可以看作FFM的特例,是把所有特征都?xì)w屬到一個(gè)field時(shí)的FFM模型。根據(jù)FFM的field敏感特性,可以導(dǎo)出其模型方程。

可以看到,如果隱向量的長(zhǎng)度為 k,那么FFM的二次參數(shù)有 nfk 個(gè),遠(yuǎn)多于FM模型的 nk個(gè)。此外,由于隱向量與field相關(guān),F(xiàn)FM二次項(xiàng)并不能夠化簡(jiǎn),其預(yù)測(cè)復(fù)雜度是 O(kn^2)。

下面以一個(gè)例子簡(jiǎn)單說(shuō)明FFM的特征組合方式。輸入記錄如下:

這條記錄可以編碼成5個(gè)特征,其中“Genre=Comedy”和“Genre=Drama”屬于同一個(gè)field,“Price”是數(shù)值型,不用One-Hot編碼轉(zhuǎn)換。為了方便說(shuō)明FFM的樣本格式,我們將所有的特征和對(duì)應(yīng)的field映射成整數(shù)編號(hào)。

那么,F(xiàn)FM的組合特征有10項(xiàng),如下圖所示。

其中,紅色是field編號(hào),藍(lán)色是特征編號(hào)。

2、FFM實(shí)現(xiàn)細(xì)節(jié)

這里講得只是一種FFM的實(shí)現(xiàn)方式,并不是唯一的。

損失函數(shù)

FFM將問題定義為分類問題,使用的是logistic loss,同時(shí)加入了正則項(xiàng)

什么,這是logisitc loss?第一眼看到我是懵逼的,邏輯回歸的損失函數(shù)我很熟悉啊,不是長(zhǎng)這樣的啊?其實(shí)是我目光太短淺了。邏輯回歸其實(shí)是有兩種表述方式的損失函數(shù)的,取決于你將類別定義為0和1還是1和-1。大家可以參考下下面的文章:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/6340129.html。當(dāng)我們將類別設(shè)定為1和-1的時(shí)候,邏輯回歸的損失函數(shù)就是上面的樣子。

隨機(jī)梯度下降

訓(xùn)練FFM使用的是隨機(jī)梯度下降方法,即每次只選一條數(shù)據(jù)進(jìn)行訓(xùn)練,這里還有必要補(bǔ)一補(bǔ)梯度下降的知識(shí),梯度下降是有三種方式的,截圖取自參考文獻(xiàn)3:

總給人一種怪怪的感覺。batch為什么是全量的數(shù)據(jù)呢,哈哈。

3、tensorflow實(shí)現(xiàn)代碼

本文代碼的github地址:https://github.com/princewen/tensorflow_practice/tree/master/recommendation-FFM-Demo

這里我們只講解一些細(xì)節(jié),具體的代碼大家可以去github上看:

生成數(shù)據(jù)這里我沒有找到合適的數(shù)據(jù),就自己產(chǎn)生了一點(diǎn)數(shù)據(jù),數(shù)據(jù)涉及20維特征,前十維特征是一個(gè)field,后十維是一個(gè)field:

def gen_data(): labels = [-1,1] y = [np.random.choice(labels,1)[0] for _ in range(all_data_size)] x_field = [i // 10 for i in range(input_x_size)] x = np.random.randint(0,2,size=(all_data_size,input_x_size)) return x,y,x_field

定義權(quán)重項(xiàng)在ffm中,有三個(gè)權(quán)重項(xiàng),首先是bias,然后是一維特征的權(quán)重,最后是交叉特征的權(quán)重:

def createTwoDimensionWeight(input_x_size,field_size,vector_dimension): weights = tf.truncated_normal([input_x_size,field_size,vector_dimension]) tf_weights = tf.Variable(weights) return tf_weights def createOneDimensionWeight(input_x_size): weights = tf.truncated_normal([input_x_size]) tf_weights = tf.Variable(weights) return tf_weights def createZeroDimensionWeight(): weights = tf.truncated_normal([1]) tf_weights = tf.Variable(weights) return tf_weights

計(jì)算估計(jì)值估計(jì)值的計(jì)算這里不能項(xiàng)FM一樣先將公式化簡(jiǎn)再來(lái)做,對(duì)于交叉特征,只能寫兩重循環(huán),所以對(duì)于特別多的特征的情況下,真的計(jì)算要爆炸呀!

def inference(input_x,input_x_field,zeroWeights,oneDimWeights,thirdWeight): """計(jì)算回歸模型輸出的值""" secondValue = tf.reduce_sum(tf.multiply(oneDimWeights,input_x,name='secondValue')) firstTwoValue = tf.add(zeroWeights, secondValue, name="firstTwoValue") thirdValue = tf.Variable(0.0,dtype=tf.float32) input_shape = input_x_size for i in range(input_shape): featureIndex1 = I fieldIndex1 = int(input_x_field[I]) for j in range(i+1,input_shape): featureIndex2 = j fieldIndex2 = int(input_x_field[j]) vectorLeft = tf.convert_to_tensor([[featureIndex1,fieldIndex2,i] for i in range(vector_dimension)]) weightLeft = tf.gather_nd(thirdWeight,vectorLeft) weightLeftAfterCut = tf.squeeze(weightLeft) vectorRight = tf.convert_to_tensor([[featureIndex2,fieldIndex1,i] for i in range(vector_dimension)]) weightRight = tf.gather_nd(thirdWeight,vectorRight) weightRightAfterCut = tf.squeeze(weightRight) tempValue = tf.reduce_sum(tf.multiply(weightLeftAfterCut,weightRightAfterCut)) indices2 = [I] indices3 = [j] xi = tf.squeeze(tf.gather_nd(input_x, indices2)) xj = tf.squeeze(tf.gather_nd(input_x, indices3)) product = tf.reduce_sum(tf.multiply(xi, xj)) secondItemVal = tf.multiply(tempValue, product) tf.assign(thirdValue, tf.add(thirdValue, secondItemVal)) return tf.add(firstTwoValue,thirdValue)

定義損失函數(shù)損失函數(shù)我們就用邏輯回歸損失函數(shù)來(lái)算,同時(shí)加入正則項(xiàng):

lambda_w = tf.constant(0.001, name='lambda_w') lambda_v = tf.constant(0.001, name='lambda_v') zeroWeights = createZeroDimensionWeight() oneDimWeights = createOneDimensionWeight(input_x_size) thirdWeight = createTwoDimensionWeight(input_x_size, # 創(chuàng)建二次項(xiàng)的權(quán)重變量 field_size, vector_dimension) # n * f * k y_ = inference(input_x, trainx_field,zeroWeights,oneDimWeights,thirdWeight) l2_norm = tf.reduce_sum( tf.add( tf.multiply(lambda_w, tf.pow(oneDimWeights, 2)), tf.reduce_sum(tf.multiply(lambda_v, tf.pow(thirdWeight, 2)),axis=[1,2]) ) ) loss = tf.log(1 + tf.exp(input_y * y_)) + l2_norm train_step = tf.train.GradientDescentOptimizer(learning_rate=lr).minimize(loss)

訓(xùn)練接下來(lái)就是訓(xùn)練了,每次只用喂一個(gè)數(shù)據(jù)就好:

input_x_batch = trainx[t] input_y_batch = trainy[t] predict_loss,_, steps = sess.run([loss,train_step, global_step], feed_dict={input_x: input_x_batch, input_y: input_y_batch})

跑的是相當(dāng)?shù)穆覀儊?lái)看看效果吧:

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

    關(guān)注

    6

    文章

    967

    瀏覽量

    55506
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4371

    瀏覽量

    64220
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4887

    瀏覽量

    70266

原文標(biāo)題:推薦系統(tǒng)遇上深度學(xué)習(xí)(二)--FFM模型理論和實(shí)踐

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    D類放大器原理及EMI抑制

    的音頻放大器有AB類和D類兩種。通常,AB類放大器能夠提供好的音質(zhì),但效率欠佳,耗電較大;而D類放大器具有高效、低溫升效應(yīng)和高輸出功率等特點(diǎn)。2. 理論分析:AB類放大器的工作原理類似于線性調(diào)節(jié)器
    發(fā)表于 10-16 15:55

    UCC28600準(zhǔn)諧振反激節(jié)制IC 引腳功能

    接入。此端電壓節(jié)制著IC的三個(gè)工作模式:準(zhǔn)諧振(QR)模式、頻率折返(FFM)模式及猝發(fā)模式(Borst Mode)。  3PIN CS:電流檢測(cè)輸入端。調(diào)節(jié)功率限制,可調(diào)制過(guò)流珍愛,CS端電壓輸人除夜電流檢測(cè)電阻接人,再用兩端之間的電譸arty?剮〉鶻詮β氏拗啤
    發(fā)表于 07-08 17:07

    簡(jiǎn)單線性回歸代碼實(shí)現(xiàn)細(xì)節(jié)分析

    機(jī)器學(xué)習(xí)100天-簡(jiǎn)單線性回歸 [代碼實(shí)現(xiàn)細(xì)節(jié)分析]
    發(fā)表于 05-22 10:16

    深度學(xué)習(xí)入門之基于python的理論實(shí)現(xiàn)

    深度學(xué)習(xí)入門-基于python的理論實(shí)現(xiàn)(2)
    發(fā)表于 06-19 11:22

    分立器件的實(shí)現(xiàn)細(xì)節(jié)

    ?概述負(fù)載開關(guān)電路日常應(yīng)用比較廣泛,主要用來(lái)控制后級(jí)負(fù)載的電源開關(guān)。此功能可以直接用IC也可以用分立器件搭建,分立器件主要用PMOS加三極管實(shí)現(xiàn)。本文主要討論分立器件的實(shí)現(xiàn)細(xì)節(jié)。電路分析如下圖所示R5模擬后級(jí)負(fù)載,Q1為開關(guān),
    發(fā)表于 10-28 08:28

    數(shù)字信號(hào)處理-理論算法與實(shí)現(xiàn)

    本內(nèi)容提供了數(shù)字信號(hào)處理-理論算法與實(shí)現(xiàn) 電子書,歡迎大家下載學(xué)習(xí)
    發(fā)表于 07-22 11:34 ?0次下載
    數(shù)字信號(hào)處理-<b class='flag-5'>理論</b>算法與<b class='flag-5'>實(shí)現(xiàn)</b>

    遺傳算法理論、應(yīng)用與軟件實(shí)現(xiàn)

    遺傳算法——理論、應(yīng)用與軟件實(shí)現(xiàn)-2002-1西安交通大學(xué)出版社-王小平。
    發(fā)表于 04-12 14:33 ?0次下載

    FM和FFM原理的探索和應(yīng)用的經(jīng)驗(yàn)

    FM和FFM模型是最近幾年提出的模型,憑借其在數(shù)據(jù)量比較大并且特征稀疏的情況下,仍然能夠得到優(yōu)秀的性能和效果的特性,屢次在各大公司舉辦的CTR預(yù)估比賽中獲得不錯(cuò)的戰(zhàn)績(jī)。美團(tuán)點(diǎn)評(píng)技術(shù)團(tuán)隊(duì)在搭建DSP
    發(fā)表于 10-12 17:25 ?0次下載
    FM和<b class='flag-5'>FFM</b>原理的探索和應(yīng)用的經(jīng)驗(yàn)

    現(xiàn)階段對(duì)尾氣的處理方法

    SCR系統(tǒng)的廠家較多,常用的有東風(fēng)添藍(lán)系統(tǒng)、威孚利達(dá)系統(tǒng)、格蘭富系統(tǒng)、依米泰克(Emitec)系統(tǒng)、CES的FFM版后處理系統(tǒng)、博世后處理系統(tǒng)、三立后處理系統(tǒng)、天納克后處理系統(tǒng)、派格力后處理系統(tǒng)等等。
    的頭像 發(fā)表于 12-08 14:21 ?3803次閱讀

    數(shù)字信號(hào)處理——理論、算法與實(shí)現(xiàn)

    數(shù)字信號(hào)處理——理論、算法與實(shí)現(xiàn)說(shuō)明。
    發(fā)表于 04-26 09:17 ?42次下載

    利用FFM機(jī)制進(jìn)行的極微細(xì)機(jī)械加工

    隨著超精密加工技術(shù)的發(fā)展,在機(jī)械加工中也需要納米級(jí)的加工控制技術(shù),從這個(gè)觀點(diǎn)出發(fā),近年來(lái),利用掃描型探針顯微鏡(SPM)的極微細(xì)加工技術(shù)被廣泛研究1)~5)。為了確立納米級(jí)的機(jī)械加工技術(shù), 考慮到化學(xué)效果,理解加工現(xiàn)象是重要的研究課題。
    發(fā)表于 03-30 14:34 ?738次閱讀
    利用<b class='flag-5'>FFM</b>機(jī)制進(jìn)行的極微細(xì)機(jī)械加工

    表面貼裝快速恢復(fù)整流器FFM101 THRUFFM107 SOD-123FL規(guī)格書下載

    FFM101 THRUFFM107 SOD-123FL規(guī)格書下載
    發(fā)表于 04-01 16:51 ?0次下載

    華為EUV光刻解決相干光無(wú)法勻光問題

    該照明系統(tǒng)3包括視場(chǎng)復(fù)眼鏡31(field flyeye mirror,FFM)、光闌復(fù)眼鏡 32(diaphragm flyeye mirror,PFM)、中繼鏡組33;其中,中繼鏡組33通常可以包括兩個(gè)或者兩個(gè)以上的中繼鏡。
    的頭像 發(fā)表于 11-21 11:09 ?1129次閱讀

    ATV 320同步與異步電機(jī)變頻器編程手冊(cè)

    當(dāng)變頻器熱態(tài)達(dá)到最大熱態(tài)的 70%,并且如果 [ 風(fēng)扇模式 ] (FFM) 被設(shè)置為 [ 標(biāo)準(zhǔn) ] (Std),則風(fēng)扇會(huì)自動(dòng) 起動(dòng)。 對(duì)于 ATV320pppppW(S), [ 風(fēng)扇模式 ](FFM) 被強(qiáng)制設(shè)為 [ 強(qiáng)制模式 ] (run), 將始終激活風(fēng)扇。
    發(fā)表于 05-24 15:36 ?2次下載

    大模型部署框架FastLLM實(shí)現(xiàn)細(xì)節(jié)解析

    接著 大模型部署框架 FastLLM 簡(jiǎn)要解析 這篇文章首先梳理了一下FastLLM的調(diào)用鏈和關(guān)鍵的數(shù)據(jù)結(jié)構(gòu),然后解析了 FastLLM 的一些實(shí)現(xiàn)細(xì)節(jié)和CPU/GPU后端實(shí)現(xiàn)采用的優(yōu)化技巧。
    的頭像 發(fā)表于 07-27 10:48 ?2934次閱讀
    大模型部署框架FastLLM<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>細(xì)節(jié)</b>解析
    主站蜘蛛池模板: 可以免费看黄色的网站 | 四虎国产精品永久在线播放 | 天堂在线观看视频观看www | ww欧洲ww在线视频看ww | free性日本| 天天看天天做 | 福利毛片 | 天堂资源在线官网资源 | 久久久美女视频 | 久久九九国产 | 日韩毛片| 国产全黄三级三级 | 欧美网站免费 | 久久不射影院 | 一区不卡在线观看 | 国产黄色的视频 | 亚洲免费观看在线视频 | 中文字幕导航 | 欧美一级视频免费看 | 国产做a爰片久久毛片a | 一级特黄aa毛片免费观看 | 天天摸夜夜摸成人免费视频 | 中文字幕一区二区三区免费视频 | 久久午夜精品视频 | 美女扒开尿口给男人桶爽视频 | 天天看片天天干 | 天堂网2018 | 在线观看一区二区三区视频 | 老师别揉我胸啊嗯上课呢视频 | 黄色工厂在线播放 | 伊人久久综合网站 | 51午夜 | 国产传媒在线观看视频免费观看 | 日本免费黄色片 | 黄色美女网站在线观看 | 深爱激情五月婷婷 | 午夜一区二区三区 | 九色欧美 | h视频免费高清在线观看 | 欧美色淫网站免费观看 | 成人国产激情福利久久精品 |