林海寧
摘要:TensorFlow是Google Brain 的第二代機(jī)器學(xué)習(xí)系統(tǒng), 也是一個(gè)開源軟件庫,用于各種感知和語言理解任務(wù)的機(jī)器學(xué)習(xí),如語音識(shí)別,Gmail、Google相冊(cè)和搜索,技術(shù)將根據(jù)使用習(xí)慣及興趣來推薦更多的內(nèi)容,是機(jī)器學(xué)習(xí)重要的應(yīng)用。
關(guān)鍵詞:推薦系統(tǒng);TensorFlow;TensorFlow;Seq2Seq
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)28-0195-02
在新聞網(wǎng)站中常看到“您可能感興趣的內(nèi)容”,購物網(wǎng)站??吹健澳赡芨信d趣的商品”,而這些網(wǎng)站如何知道我們興趣與偏好呢?關(guān)鍵就在于推薦系統(tǒng),此技術(shù)將根據(jù)使用習(xí)慣及興趣來推薦更多的內(nèi)容,是機(jī)器學(xué)習(xí)重要的應(yīng)用之一。從而讓商品或網(wǎng)頁流量有效增加,或達(dá)到精準(zhǔn)營銷的目的。
推薦系統(tǒng)在日常的網(wǎng)絡(luò)應(yīng)用中無處不在,也是機(jī)器學(xué)習(xí)CP值最高的應(yīng)用,像是購物網(wǎng)站、影音網(wǎng)站、新聞APP、社交網(wǎng)絡(luò)、音樂網(wǎng)站等,有人的地方就有江湖,有江湖的地方就有推薦!根據(jù)每個(gè)人的喜好,相同喜好人群的習(xí)慣等信息進(jìn)行個(gè)性化的內(nèi)容分析后進(jìn)行推薦。打開新聞?lì)惖腁PP,因?yàn)橛辛藗€(gè)性化的內(nèi)容,每個(gè)人看到的新聞首頁都是不一樣的。
在信息時(shí)代,有著獲取信息多種多樣的途徑和方式,人們花費(fèi)時(shí)間最多的不再是去哪獲取信息,而是要在眾多的信息中尋找自己感興趣的,這就是信息超載問題。為了解決這個(gè)問題,推薦系統(tǒng)應(yīng)運(yùn)而生。
TensorFlow是Google Brain 的第二代機(jī)器學(xué)習(xí)系統(tǒng), 也是一個(gè)開源軟件庫,用于各種感知和語言理解任務(wù)的機(jī)器學(xué)習(xí),如語音識(shí)別,Gmail、Google相冊(cè)和搜索,其中許多產(chǎn)品曾使用過其前任軟件DistBelie。Tensor(張量)意味著N維數(shù)組,F(xiàn)low(流)意味著基于數(shù)據(jù)流圖的計(jì)算,TensorFlow為張量從流圖的一端流動(dòng)到另一端計(jì)算過程。TensorFlow是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)傳輸至人工智能神經(jīng)網(wǎng)中進(jìn)行分析和處理過程的系統(tǒng)。TensorFlow的結(jié)構(gòu)由會(huì)話(session),圖(graph),節(jié)點(diǎn)(operation)和邊(tensor)組成,它使用圖(graph)來表示計(jì)算任務(wù),圖在被稱之為會(huì)話(Session)的上下文(context)中執(zhí)行,其狀態(tài)是通過變量(Variable)來維護(hù)的,使用feed和fetch可以為任意的操作(arbitrary operation)賦值或者從其中獲取數(shù)據(jù)。
本文將采用基于Tensorflow的Seq2seq+Attention模型,制作一個(gè)流行歌曲推薦的自動(dòng)生成模型。加入Attention注意力分配機(jī)制,使Decoder在生成新的目標(biāo)句子時(shí),可以得到Encoder編碼階段每個(gè)字符隱藏層的信息向量,提高生成目標(biāo)序列的準(zhǔn)確度。
樣本數(shù)據(jù)為該網(wǎng)站音樂播放客戶端2017年10月份的播放超過100M的流行歌曲數(shù)據(jù),包含歌曲專輯和流行歌手信息。對(duì)歌曲專輯和流行歌手信息的預(yù)處理工作需要非常細(xì)致,采用Encoder編碼階段處理的信息會(huì)直接影響到整個(gè)模型的效果。對(duì)歌曲專輯和流行歌手信息中的特殊字符、日期、英文、數(shù)字以及鏈接都要進(jìn)行替換處理。
文本預(yù)處理后,就是訓(xùn)練樣本的準(zhǔn)備工作。Source序列就是歌曲專輯和流行歌手信息的正文內(nèi)容,Target目標(biāo)序列是歌曲專輯和流行歌手信息。為了保證效果,正文部分不能過長,這里設(shè)定分詞后的正文不超過100個(gè)詞,不足用PAD字符補(bǔ)齊,設(shè)定標(biāo)題不超過20個(gè)詞。在生成訓(xùn)練樣本的時(shí)候,定義了create_vocabulary()方法來創(chuàng)建詞典,data_to_id()方法把訓(xùn)練樣本(train_data.txt)轉(zhuǎn)化為對(duì)應(yīng)的詞ID。
訓(xùn)練樣本的數(shù)據(jù)格式如下:
#train_jata.txt
新歌熱歌 中國好聲音 廣場(chǎng)舞歐美輕音樂DJ 舞曲 80后 網(wǎng)絡(luò)歌曲勁爆 粵語 民歌 對(duì)唱 成名曲 草原歌曲
阿蘭 李春波 曹格 趙雷 孫盛希 降央卓瑪 孫楠 郁可唯 By2 陳潔儀 小曾 Alan Walker 李圣杰水木年華火箭少女101段張碧晨 黑龍 郭峰 金志文 胡夏 譚維維 鹿晗
#train_titl.txt
新歌 80后 成名曲
趙雷曹格胡夏 譚維維 鹿晗
Seq2Seq是一個(gè)基于輸入的sequence,預(yù)測(cè)一個(gè)未知sequence的模型。模型由Encoder編碼階段和Decoder解碼階段兩部分構(gòu)成。模型編碼階段Encoder的RNN每次會(huì)輸入一個(gè)字符代表的向量,將輸入序列編碼成一個(gè)固定長度的向量;解碼階段的RNN會(huì)一個(gè)一個(gè)字符地解碼,如預(yù)測(cè)為X。在訓(xùn)練階段時(shí)會(huì)強(qiáng)制將上一步解碼的輸出作為下一步解碼的輸入,即X會(huì)作為下一步預(yù)測(cè)Y時(shí)的輸入。
當(dāng)編碼階段輸入的序列過長時(shí),解碼階段LSTM模型將無法針對(duì)最早的輸入序列解碼。Attention注意力分配機(jī)制,在解碼階段每一步解碼時(shí),都會(huì)有一個(gè)輸入,對(duì)輸入序列所有隱含層的信息進(jìn)行加權(quán)求和,能夠很好地解決這個(gè)問題。
將分詞后的歌曲專輯和流行歌手信息數(shù)據(jù)拆分為訓(xùn)練樣本和測(cè)試樣本,共四個(gè)文件:train_data.txt,train_title.txt,test_data.txt,test_title.txt 。正文內(nèi)容和其對(duì)應(yīng)的標(biāo)題需要分開存放在兩個(gè)文件內(nèi),一行為一條樣本。
運(yùn)行腳本,訓(xùn)練好的模型將被保存下來,預(yù)測(cè)好的Text Summarizaion。
結(jié)論:隨著互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)絡(luò)中的音樂資源呈指數(shù)級(jí)增長,通過深度學(xué)習(xí)自動(dòng)生成的信息往往能很直觀的體現(xiàn)內(nèi)容的主題內(nèi)容,便于讀者快速地瀏覽,準(zhǔn)確選擇自己感興趣的內(nèi)容,節(jié)約時(shí)間成本,能夠給讀者帶來很好的體驗(yàn)感。智能推薦已經(jīng)成為一種勢(shì)不可擋的趨勢(shì),隨著人工智能的發(fā)展,算法推薦必將成為內(nèi)容領(lǐng)域的主流之一。
參考文獻(xiàn):
[1]黃文堅(jiān),唐源. TensorFlow實(shí)戰(zhàn)[M].電子工業(yè)出版社,2017.
[2]顧思宇,梁博文,鄭澤宇.TensorFlow:實(shí)戰(zhàn)Google深度學(xué)習(xí)框架[M].電子工業(yè)出版社,2018.
[3]JacobBuckman.TensorFlow入門必看:Google AI實(shí)習(xí)生經(jīng)驗(yàn)談[M].王強(qiáng),無明,譯.2018.
[4]TensorFlow中文社區(qū).
【通聯(lián)編輯:王力】