1. 程式人生 > >fast.ai 深度學習筆記:第一部分第五課

fast.ai 深度學習筆記:第一部分第五課

原文:Deep Learning 2: Part 1 Lesson 5

作者:Hiromi Suenaga

一,引言

沒有足夠的關於結構化深度學習的出版物,但它肯定出現在行業中:

結構化深度學習,作者:Kerem Turgutlu @datascience.com

你可以使用此工具從 Google 下載圖片並解決自己的問題:

小型影象資料集的樂趣(第2部分),作者:Nikhil B @datascience.com

如何訓練神經網路的介紹(一篇偉大的技術寫作):

我們如何“訓練”神經網路?,由 Vitaly Bushaev @datascience.com

學生們在 Kaggle 幼苗分類比賽中與 Jeremy 競爭。

II. 協同過濾 - 使用 MovieLens 資料集

討論的筆記本可以在這裡找到(lesson5-movielens.ipynb)。

我們來看看資料。 我們將使用userId (類別), movieId (類別)和rating(因變數)進行建模。

ratings = pd.read_csv(path+'ratings.csv')
ratings.head() 

 

  image.png

 

為 Excel 建立子集

我們建立了最受歡迎的電影和大多數電影狂熱粉的交叉表,我們將其複製到 Excel 中進行視覺化。

g=ratings.groupby('userId')['rating'].count()  
topUsers=g.sort_values(ascending=False)[:15] 

g=ratings.groupby('movieId')['rating'].count()  
topMovies=g.sort_values(ascending=False)[:15] 

top_r = ratings.join(topUsers, rsuffix='_r', how='inner', on='userId')
top_r = top_r.join(topMovies, rsuffix='_r', how='inner', on='movieId') 
pd.crosstab(top_r.userId, top_r.movieId, top_r.rating, aggfunc=np.sum) 

 

  image.png

 

是包含上述資訊的 excel 檔案。 首先,我們將使用矩陣分解而不構建神經網路。

 

  image.png

 

  • 藍色單元格 - 實際評級
  • 紫色單元格 - 我們的預測
  • 紅色單元格 - 我們的損失函式即均方根誤差(RMSE)
  • 綠色單元格 - 電影嵌入(隨機初始化)
  • 橙色單元格 - 使用者嵌入(隨機初始化)

每個預測是電影嵌入向量和使用者嵌入向量的點積。 線上性代數術語中,它等於矩陣乘積,因為一個是行,一個是列。 如果沒有實際評級,我們將預測設定為零(將其視為測試資料 - 而不是訓練資料)。

 

  image.png

 

然後我們使用梯度下降來減少損失。 Microsoft Excel 在載入項中有一個“求解器”,可以通過更改所選單元格來最小化變數(GRG Nonlinear是你要使用的方法)。

這可稱為“淺學習”(與深度學習相反),因為沒有非線性層或第二線性層。 那麼我們直覺上做了什麼呢? 每部電影的五個數字稱為“嵌入”(潛在因式) - 第一個數字可能代表科幻和幻想的程度,第二個數字可能是電影使用了多少特效,第三個可能是對話驅動的程度。與之類似,每個使用者還有 5 個數字,例如,表示使用者喜歡幻想,特效和對話驅動的電影的程度。 我們的預測是這些向量的叉乘。 由於我們沒有每個使用者的每個電影評論,因此我們試圖找出哪些電影與這部電影相似,以及其他使用者評價其他電影,如何與這個使用者評價這個電影類似(因此稱為“協同”)。

我們如何處理新使用者或新電影 - 我們是否需要重新訓練模型? 我們現在沒有時間來討論這個問題,但基本上你需要有一個新的使用者模型或最初會使用的新電影模型,隨著時間的推移你需要重新訓練模型。

閱讀更多