訓練寬和深層推薦

本文說明如何使用 Azure 機器學習 設計工具中的訓練 Wide 和 Deep Recommender 元件來定型建議模型。 此元件是以Google提出的Wide和深度學習為基礎。

訓練 Wide 和 Deep Recommender 元件會讀取使用者項目評等三倍的數據集,並選擇性地讀取一些使用者和專案功能。 它會傳回訓練的Wide和Deep推薦程式。 然後,您可以使用定型的模型,透過 評分寬和深度推薦 元件來產生評等預測或建議。

深入了解建議模型和 Wide 和 Deep 推薦

建議系統的主要目標是建議一或多個 專案系統的使用者 。 專案的範例可能是電影、餐廳、書籍或歌曲。 用戶可以是具有專案喜好設定的人員、人員群組或其他實體。

建議系統有兩種主要方法。

  • 第一個 是以內容為基礎的 方法,會針對用戶和專案使用功能。 使用者可以依年齡和性別等屬性來描述,而專案可由作者和製造商等屬性描述。 您可以在社交配對網站上找到以內容為基礎的建議系統的典型範例。
  • 第二種方法是 共同作業篩選,它只會使用使用者和專案的標識碼,並從使用者提供給專案的評分矩陣中取得這些實體的隱含資訊。 我們可以從他們已評等的專案,以及已對相同項目進行評等的其他使用者,了解使用者。

Wide 和 Deep 建議工具會結合這些方法,使用共同作業篩選與以內容為基礎的方法。 因此,它被視為 混合式推薦工具

運作方式:當使用者對系統而言相對較新時,藉由利用使用者的功能資訊來改善預測,從而解決已知的「冷啟動」問題。 不過,一旦您從特定使用者收集足夠的評等數目之後,就可以根據特定評等,而不是單獨根據其功能,為其進行完整個人化的預測。 因此,從內容型建議順暢地轉換到根據共同作業篩選的建議。 即使使用者或專案功能無法使用,Wide 和 Deep 建議工具仍會在其共同作業篩選模式中運作。

如需Wide和Deep recommender和基礎概率演算法的詳細資訊,請參閱相關研究論文: Wide and Deep Learning for Recommender Systems

如何設定訓練寬和深度推薦

準備資料

嘗試使用元件之前,請確定您的數據是建議模型的預期格式。 需要使用者項目評等三重定型數據集,但您也可以在個別數據集中包含使用者功能和專案功能(如果有的話)。

用戶專案評等的必要數據集

用於定型的輸入資料必須包含正確格式的資料類型:

  • 第一個數據行必須包含使用者標識碼。
  • 第二個數據行必須包含專案標識碼。
  • 第三個數據行包含用戶專案組的評等。 評等值必須是數值類型。

例如,一組典型的用戶項目評等可能如下所示:

UserId MovieId Rating
1 68646 10
223 31381 10

使用者特徵資料集(選擇性)

使用者功能的數據集必須包含使用者的標識碼,並使用使用者專案評等數據集第一個數據行中提供的相同標識符。 其餘數據行可以包含描述使用者的任何數目功能。

例如,一組典型的使用者功能看起來可能像這樣:

UserId 年齡 性別 資訊 Location
1 25 男性 劇情 歐洲
223 40 女性 Romance 亞洲

專案特徵資料集(選擇性)

專案功能的數據集必須在其第一個數據行中包含專案標識碼。 其餘數據行可以包含專案的任何數目描述性功能。

例如,一組典型的專案功能看起來可能像這樣:

MovieId 標題 原始語言 流派 Year
68646 教父 英語 劇情 1972
31381 亂世佳人 英語 History 1939

定型模型

  1. 將訓練 寬和深度推薦 元件新增至設計工具中的實驗,並將其聯機至定型數據集。

  2. 如果您有個別的使用者功能和/或專案功能數據集,請將它們連線到 訓練寬和深度推薦 元件。

    • 使用者特徵數據集:連線 描述使用者到第二個輸入的數據集。
    • 專案特徵數據集:連線 描述第三個輸入項目的數據集。
  3. Epochs:指出演演算法應該處理整個定型數據的次數。

    這個數位越高,定型越充分:不過,訓練會花費更多時間,而且可能會導致過度學習。

  4. 批次大小:輸入一個定型步驟中所使用的定型範例數目。

    此超參數可能會影響定型速度。 較高的批次大小會導致時間成本降低,但可能會增加聚合時間。 如果批次太大而無法符合 GPU/CPU,可能會引發記憶體錯誤。

  5. 寬部分優化器:選取一個優化器,將漸層套用至模型的寬部分。

  6. 寬優化器學習速率:輸入介於 0.0 和 2.0 之間的數位,以定義寬部分優化工具的學習速率。

    此超參數會決定每個定型步驟中的步驟大小,同時向最小損失函式移動。 大型學習率可能會導致學習跳過最小,而學習率太小可能會導致聚合問題。

  7. 交叉特徵維度:輸入所需的使用者標識碼和專案標識碼功能,以輸入維度。

    Wide 和 Deep 建議工具預設會對使用者識別碼和專案識別碼功能執行跨產品轉換。 交叉結果會根據這個數字進行哈希,以確保維度。

  8. 深層部分優化器:選取一個優化器,將漸層套用至模型的深層部分。

  9. 深入優化器學習速率:輸入定義深度元件優化器學習速率的0.0到2.0之間的數位。

  10. 用戶內嵌維度:輸入整數以指定使用者標識碼內嵌的維度。

    Wide 和 Deep 建議工具會建立共用的使用者識別碼內嵌和專案識別碼內嵌,用於寬部分和深層部分。

  11. 專案內嵌維度:輸入整數以指定專案標識碼內嵌的維度。

  12. 類別特徵內嵌維度:輸入整數以指定類別特徵內嵌的維度。

    在Wide和Deep推薦的深層元件中,會針對每個類別特徵學習內嵌向量。 這些內嵌向量會共用相同的維度。

  13. 隱藏單位:輸入深層元件的隱藏節點數目。 每個圖層中的節點編號會以逗號分隔。 例如,根據類型 “1000,500,100”,您可以指定深度元件有三個層,而第一層到最後一層分別有 1000 個節點、500 個節點和 100 個節點。

  14. 啟用函式:選取套用至每一層的一個啟用函式,預設值為 ReLU。

  15. 卸除:輸入介於 0.0 和 1.0 之間的數位,以判斷輸出在定型期間將會在每個圖層中捨棄的機率。

    Dropout 是防止神經網路過度學習的正規化方法。 此值的其中一個常見決策是從 0.5 開始,這似乎與各種網路和工作都接近最佳狀態。

  16. 批次正規化:選取此選項,即可在深層元件中的每個隱藏層之後使用批次正規化。

    批次正規化是一種在網路定型期間對抗內部共變數轉移問題的技術。 一般而言,它有助於改善網路的速度、效能和穩定性。

  17. 執行管線。

技術注意事項

Wide 和 Deep 會聯合訓練寬線性模型和深度神經網路,以結合記憶和一般化的優點。 寬元件接受一組原始特徵和特徵轉換,以記住特徵互動。 使用較少的特徵工程時,深度元件會透過低維度密集特徵內嵌來一般化為看不見的特徵組合。

在Wide和Deep建議的實作中,元件會使用預設模型結構。 寬元件會採用使用者內嵌、專案內嵌,以及使用者標識元和專案標識碼的交叉乘積轉換作為輸入。 針對模型的深層部分,會針對每個類別特徵學習內嵌向量。 與其他數值特徵向量一起,這些向量接著會饋送至深度饋送向前神經網路。 廣泛部分和深度部分是結合其最終輸出記錄賠率作為預測,最終進入聯合訓練的一個常見損失函式。

下一步

請參閱 Azure 機器學習 可用的元件集。