C語言中文網 目錄
TensorFlow
1 TensorFlow是什么
2 TensorFlow安裝和下載
3 第一個TensorFlow程序
4 TensorFlow程序結構
5 TensorFlow常量、變量和占位符
6 TensorFlow矩陣基本操作
7 TensorFlow TensorBoard數據流圖可視化
8 TensorFlow代碼自動升級為1.0版本
9 TensorFlow XLA
10 TensorFlow指定CPU和GPU設備
11 TensorFlow與深度學習
12 TensorFlow常用Python擴展包
13 回歸算法有哪些
14 TensorFlow損失函數
15 TensorFlow優化器
16 TensorFlow csv文件讀取數據
17 TensorFlow實現簡單線性回歸
18 TensorFlow實現多元線性回歸
19 TensorFlow邏輯回歸處理MNIST數據集
20 感知機與神經網絡
21 TensorFlow常用激活函數(6種)
22 TensorFlow實現單層感知機
23 TensorFlow實現反向傳播算法
24 TensorFlow多層感知機實現MINIST分類
25 TensorFlow多層感知機函數逼近
26 TensorFlow超參數
27 TensorFlow Keras
28 CNN卷積神經網絡
29 三維卷積神經網絡預測MNIST數字
30 卷積神經網絡分類圖片
31 遷移學習
32 DeepDream網絡
33 TensorFlow實現文本情感分析
34 VGG網絡濾波器
35 VGGNet、ResNet、Inception和Xception
36 預建深度學習提取特征及實現
37 TensorFlow實現InceptionV3
38 TensorFlow WaveNet聲音合成
39 TensorFlow視頻分類(6種方法)
40 RNN循環神經網絡
41 神經機器翻譯(seq2seq RNN)
42 注意力機制(基于seq2seq RNN)
43 RNN訓練模型并生成文本
44 RNN循環神經網絡實現預測比特幣價格
45 主成分分析法(PCA)
46 k均值聚類算法
47 SOM自組織映射法
48 受限玻爾茲曼機訓練
49 推薦系統的實現(基于RBM)
50 基于DBN實現情緒檢測
51 自編碼器
52 標準自編碼器
53 稀疏自編碼器
54 去燥自編碼器
55 卷積自編碼器
56 堆疊自編碼器
57 強化學習
58 OpenAI Gym安裝和使用
59 全連接神經網絡實現玩Pac-Man游戲
60 Q learning實現Cart-Pole平衡游戲
61 DQN算法(深度Q網絡)
62 David Silver策略梯度算法
63 深度學習在移動端的應用
64 Android移動端部署TensorFlow mobile
65 iPhone移動端部署TensorFlow mobile
66 移動端優化TensorFlow代碼
67 GAN生成式對抗網絡
68 GAN生成式對抗網絡虛構MNIST圖像
69 DCGAN虛構MNIST圖像
70 DCGAN虛構名人面孔和其他數據集
71 VAE變分自編碼器
72 CapsNet膠囊網絡
73 TensorFlow分布式
74 TensorFlow GPU的安裝和使用
75 TensorFlow分布式
76 TensorFlow分布式訓練MNIST分類器
77 TensorFlow Serving運行Docker容器
78 TensorFlow分布式在谷歌云平臺運行
79 TensorFlow分布式在谷歌CloudML運行
80 TensorFlow分布式在Microsoft Azure上運行
81 TensorFlow分布式在Amazon AWS上運行
首頁 > TensorFlow 閱讀:98

基于RBM受限玻爾茲曼機實現推薦系統

網絡零售商利用推薦系統向顧客推薦產品,例如,亞馬遜會告訴你購買這個產品的其他顧客對哪些產品感興趣,Netflix 根據你觀看的內容以及其他有同樣興趣的 Netflix 用戶觀看過的內容向你推薦電視劇和電影。

這些推薦系統都是基于協同過濾進行推薦的,在協同過濾中,系統根據用戶過去的行為建立一個模型。這里利用上一節中的 RBM 模型,建立一個基于協同過濾的推薦系統用于推薦電影。存在的主要問題就是大多數用戶不會評價所有的產品/電影,大部分數據是缺失的。如果有 M 個產品和 N 個用戶,那么需要建立一個 N×M 的矩陣,矩陣中包括用戶已知的評分,未知則置為 0。

準備工作

使用協同過濾構建推薦系統,首先準備數據。

此處使用從 https://grouplens.org/datasets/movielens/ 獲取的電影數據為例,該數據由 movies.dat 和 ratings.dat 兩個.dat文件組成,movies.dat 文件包含三列,分別為 3883 部電影的影片 ID、標題和類型,ratings.dat 文件包含四列,分別為用戶 ID、影片 ID、評分和時長。

現在合并這兩個數據文件來構建一個矩陣,其中,每個用戶都擁有對所有 3883 個電影的評分。但是用戶通常不會對所有電影進行評分,所以只有某些電影的評分是非零的(需要標準化),而其余的則是零,為 0 的這部分將不會對隱藏層產生影響。

具體做法

  1. 使用上一節中創建的 RBM 類。先定義 RBM 網絡,可見單元的數量是電影的數量 3883(movies_df 是從 movies.dat 文件讀取的數據結構):


     
  2. 使用 Pandas 的 merge 和 groupby 命令創建一個列表 trX,存放 1000 名左右用戶的用戶影片評分,注意這里進行了標準化,列表大小是 1000×3883,用來訓練 RBM:


     
  3. 隨著訓練次數的增加,cross-logit 誤差在減小,如下圖所示:


     
  4. 網絡訓練好后,對隨機選擇的一個用戶(例如 ID 為 150)進行電影推薦:


     
  5. 可以看到這個用戶的推薦結果,推薦分數如下:

知識擴展

Geoffrey Hinton 教授帶領多倫多大學團隊贏得了求解最優協同過濾的 Netflix 競賽,他們的算法使用 RBM 預測用戶對電影的評分(https://en.wikipedia.org/wiki/Netflix_Prize)。他們的工作詳情可以從他們的論文中找到,網址為http://www.cs.toronto.edu/~hinton/absps/netflixICML.pdf。

一個 RBM 隱藏單元的輸出可以被送到另一個 RBM 的可見單元,重復這個過程就形成了堆疊 RBM,堆疊 RBM 中的每一個 RBM 都是獨立訓練的,無視其他 RBM 的存在。深度信任網絡(DBN)就是由一系列 RBM 堆疊而成,DBN 可以使用有監督或無監督的方法進行訓練,下一節中將了解更多信息。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户