定型 Vowpal Wabbit 模型

本文描述如何在 Azure Machine Learning 設計工具中使用 [定型 Vowpal Wabbit 模型] 元件,以使用 Vowpal Wabbit 來建立機器學習模型。

若要將 Vowpal Wabbit 用於機器學習,請根據 Vowpal Wabbit 需求來格式化您的輸入,並以所需的格式準備資料。 使用此元件來指定 Vowpal Wabbit 命令列引數。

當管線執行時,Vowpal Wabbit 的執行個體會連同指定的資料一起載入至實驗執行階段。 定型完成時,會將模型序列化回工作區。 您可以立即使用模型來評分資料。

若要在新資料上以遞增方式定型現有的模型,請將儲存的模型連線到 [定型 Vowpal Wabbit 模型] 的 [預先定型 Vowpal Wabbit 模型] 輸入連接埠,然後新增資料至另一個輸入連接埠。

什麼是 Vowpal Wabbit?

Vowpal Wabbit (VW) 是一種快速、平行的機器學習架構,其針對分散式計算開發,開發者為 Yahoo! 研究。 後來移植到 Windows,並由 John Langford (Microsoft Research) 在平行架構中應用於科學運算。

對機器學習很重要的 Vowpal Wabbit 特徵包括持續學習 (線上學習)、維度縮減和互動式學習。 當記憶體無法容納模型資料時,Vowpal Wabbit 也是問題的解決方案。

Vowpal Wabbit 的主要使用者是先前使用架構進行機器學習工作的資料科學家,例如分類、迴歸、主題模型化或矩陣分解。 適用於 Vowpal Wabbit 的 Azure 包裝函式與內部部署版本的效能特性非常類似,因此您可以使用 Vowpal Wabbit 的強大功能和原生效能,並且輕鬆地將定型的模型發佈為實際運作的服務。

[特徵雜湊] 元件也包含 Vowpal Wabbit 所提供的功能,可讓您使用雜湊演算法將文字資料集轉換成二進位特徵。

如何設定 Vowpal Wabbit 模型

本節描述如何定型新模型,以及如何新增資料至現有的模型。

不同於設計工具中的其他元件,此元件會指定元件參數,也會定型模型。 若有現有的模型,您可以將其新增為選用輸入,以遞增方式定型模型。

準備輸入資料

若要使用此元件定型模型,輸入資料集必須包含下列兩種支援格式之一的單一文字資料行:SVMLightVW。 這並不表示 Vowpal Wabbit 只會分析文字資料,而且只表示必須以所需的文字檔案格式來準備特徵和值。

您可以從兩種資料集 (檔案資料集和表格式資料集) 讀取資料。 這兩個資料集都必須採用 SVMLight 或 VW 格式。 Vowpal Wabbit 資料格式的優點是它不需要單欄式格式,在處理稀疏資料時可節省空間。 如需此格式的詳細資訊,請參閱 Vowpal Wabbit Wiki 頁面

建立和定型 Vowpal Wabbit 模型

  1. 將 [定型 Vowpal Wabbit 模型] 元件新增至您的實驗。

  2. 新增定型資料集,並將其連線到 [定型資料]。 如果定型資料集是包含定型資料檔案的目錄,請使用 [定型資料檔案的名稱] 指定定型資料檔案名稱。 如果定型資料集是單一檔案,請將 [定型資料檔案的名稱] 保留空白。

  3. 在 [VW 引數] 文字方塊中,輸入 Vowpal Wabbit 可執行檔的命令列引數。

    例如,您可以新增 –l 來指定學習速率,或新增 -b 來表示雜湊位元的數目。

    如需詳細資訊,請參閱 Vowpal Wabbit 參數一節。

  4. 定型資料檔案的名稱:輸入包含輸入資料的檔案名稱。 僅在定型資料集是目錄時,才會使用這個引數。

  5. 指定檔案類型:指出定型資料所使用的格式。 Vowpal Wabbit 支援這兩個輸入檔案格式:

    • VW 代表 Vowpal Wabbit 所使用的內部格式。 如需詳細資料,請參閱 Vowpal Wabbit Wiki 頁面
    • SVMLight 是其他一些機器學習工具所使用的格式。
  6. 輸出可讀取模型檔案:如果您想要元件將可讀取的模型儲存至作業記錄,請選取此選項。 此引數會對應至 VW 命令列中的 --readable_model 參數。

  7. 輸出反向雜湊檔案:如果您想要元件將反向雜湊函數儲存至作業記錄中的一個檔案,請選取此選項。 此引數會對應至 VW 命令列中的 --invert_hash 參數。

  8. 提交管線。

重新定型現有的 Vowpal Wabbit 模型

Vowpal Wabbit 藉由新增資料至現有的模型來支援遞增定型。 有兩種方式可以取得現有的模型進行重新定型:

  • 在相同的管線中,使用另一個 [定型 Vowpal Wabbit 模型] 元件的輸出。

  • 在設計工具左瀏覽窗格的 [資料集] 類別中尋找已儲存的模型,然後將其拖曳至您的管線。

  1. 將 [定型 Vowpal Wabbit 模型] 元件新增至您的管線。

  2. 將先前定型的模型連線至元件的 [預先定型 Vowpal Wabbit 模型] 輸入連接埠。

  3. 將新的定型資料連線至元件的 [定型資料] 輸入連接埠。

  4. 在 [定型 Vowpal Wabbit 模型] 的參數窗格中,指定新定型資料的格式,以及如果輸入資料集是目錄,也會指定定型資料檔案名稱。

  5. 如果對應檔案需要儲存在作業記錄中,請選取 [輸出可讀取的模型檔案] 和 [輸出反向雜湊檔案] 選項。

  6. 提交管線。

  7. 選取元件,並在右窗格中選取 [輸出+記錄] 索引標籤下的 [註冊資料集],以在您的 Azure Machine Learning 工作區中保留更新的模型。 如果您未指定新名稱,則更新的模型會覆寫現有的已儲存模型。

結果

注意

如果您需要在設計工具中部署定型的模型,請確定評分 Vowpal Wabbit 模型 (而非 [評分模型]) 連線至推斷管線中 Web 服務輸出元件的輸入。

技術說明

本節包含實作詳細資料、提示和常見問題集的解答。

Vowpal Wabbit 的優點

Vowpal Wabbit 能夠極快速地學習非線性特徵 (例如 N 字母組)。

Vowpal Wabbit 使用線上學習技術,例如隨機梯度下降 (SGD),一次一筆記錄來配適模型。 因此,能夠非常快速地反覆運算原始資料,且比其他大部分的模型更快速開發理想的預測量。 這個方法也可避免必須將所有定型資料讀入記憶體中。

Vowpal Wabbit 會將所有資料都轉換成雜湊,而不只是文字資料,還有其他類別變數。 使用雜湊可以更有效率地查閱迴歸權重,而這對於隨機梯度下降是否有用至關重要。

支援和不支援的參數

本節描述 Azure Machine Learning 設計工具中 Vowpal Wabbit 命令列參數的支援。

通常,只支援一組有限的引數。 如需完整的引數清單,請使用 Vowpal Wabbit Wiki 頁面

支援下列參數:

  • https://github.com/JohnLangford/vowpal_wabbit/wiki/Command-line-arguments 中指定的輸入/輸出選項

    元件已自動設定這些屬性。

  • 此外,也不允許產生多個輸出或接受多個輸入的任何選項。 其中包括 --cbt--lda--wap

  • 僅支援受監督的學習演算法。 因此,不支援下列選項:–active--rank--search

限制

因為服務的目標是要支援經驗豐富的 Vowpal Wabbit 使用者,所以必須事先使用 Vowpal Wabbit 原生文字格式來準備輸入資料,而不是其他元件所使用的資料集格式。

後續步驟

請參閱 Azure Machine Learning 可用的元件集