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