跳轉到內容

人工智慧/搜尋/推薦系統/玻爾茲曼機

來自華夏公益教科書,開放的書籍,開放的世界

本文介紹了使用 玻爾茲曼機 用於 推薦系統.

什麼是推薦系統?

[編輯 | 編輯原始碼]

有一群使用者可能訂購(閱讀,觀看,購買)大量商品。使用者給商品評分(或評價)。我們的任務是,根據使用者和他人的先前評分,儘可能精確地預測使用者對新商品的評分,以便推薦使用者可能喜歡的商品。

大多數推薦系統具有以下特徵

  • 使用者數量遠遠超過商品數量
  • 所有或幾乎所有使用者只對一小部分商品進行了評分
  • 評分的可能性很小(通常為1,2,3,4,5)。
  • 已評分商品數量差異很大。

正如 Netflix 獎比賽所顯示的,沒有哪種方法優於其他方法。為了獲得最佳結果,應將幾種方法結合在一起。其中之一,限制玻爾茲曼機(RBM),將在本文中介紹。

  • U - 使用者集
  • I - 商品集
  • G - 評分集
  • - 評分了商品 的使用者集。
  • - 使用者 評價過的商品集。
  • - 使用者 對商品 的評分。
  • - 使用者 對商品 的評分預測。
  • T - 訓練集。T 的每個成員都是一個三元組 .

奇異值分解

[編輯 | 編輯原始碼]

在描述 RBM 模型之前,我們簡要介紹一下 SVD 模型(奇異值分解),它可能是最好的單一方法。

在奇異值分解 (SVD) 下,每個使用者 由一個特徵向量 表示,其中 N 是模型的維度。類似地,每個專案 由一個特徵向量 表示。

預測評分是兩個向量的乘積

這裡的 xy 是模型需要學習的引數,以便擬合訓練集。

該模型直觀易懂,因為特徵代表了專案的各種屬性。例如,在推薦電影時,某些特徵可能對愛情片非常積極,對沒有愛情元素的電影則為零或負面,而對諷刺愛情片的電影則非常負面。使用者特徵向量中對應的特徵對討厭愛情片的使用者將是負面的,而對於相反情況則為正面的。

學習模型最簡單的方法是將總誤差 降至最小。我們可以透過梯度下降來實現,迴圈地從訓練集中提取資料,對於每個 ,將引數沿著與 E 的梯度相反的方向改變。

這裡的 L 是一個學習引數,它設定了梯度下降的整體速度。

但是,對於資料量少的使用者和電影,這種方法往往會構建巨大的特徵向量,因為這樣可以更好地擬合數據。為了禁止這種情況,並利用大特徵值不太可能出現的知識,應該新增正則化項

有關 SVD 的更詳細解釋,請參閱 Simon Funk 的“Netflix 更新:在家嘗試” [1]。但是,他的演算法一次新增一個特徵,後來發現不如同時學習所有特徵好。

現在我們來談談玻爾茲曼機模型。

第一步,假設我們不是預測分數,而是預測特定分數的 *機率*

的機率。

我們可以使用與上一節中描述的類似方法。

(為什麼不 ? 因為通常使用者比物品多得多,所以 會包含大量的引數。)

但是我們可以做得更好。首先,我們可以利用所有分數的總機率為 1 的事實

其次,由於機率始終介於 0 到 1 之間,因此最好用它本身的邏輯函式而不是向量積來描述

邏輯函式

其中 *邏輯函式* f 定義為

重新定義為權重 W,並將 重新定義為隱層單元,並要求所有 x 都為 0 或 1,則可以得到

這就是玻爾茲曼機模型。

華夏公益教科書