训练 Vowpal Wabbit 版本 7-4 模型

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

使用 Vowpal Wabbit 机器学习系统版本 7-4 训练模型

类别:文本分析

注意

适用于:机器学习 Studio (经典) 应用

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用 机器学习 Studio (经典) 中的训练 Vowpal Wabbit 版本 7-4 模块,通过使用 Vowpal Wabbit (版本 7-4) 的实例创建机器学习模型。

若要将 Vowpal Wabbit 用于机器学习,请根据 Vowpal Wabbit 要求设置输入的格式,将数据保存在 Azure Blob 中。 使用此模块可指定 Vowpal Wabbit 命令行参数。

运行试验时,Vowpal Wabbit 的实例连同指定的数据一起加载到试验运行时中。 训练完成后,模型会被序列化回工作区。 你可以立即使用该模型对数据进行评分。 训练后的模型也保留于 Azure 存储中,以便以后无需重新处理训练数据即可使用它。

若要以增量方式根据新数据训练现有模型,请将保存的模型连接到预先训练的模型输入,并添加新数据到其他输入。

注意

机器学习 Studio (经典) 托管 Vowpal Wabbit 框架的多个版本。 此模块使用 Vowpal Wabbit 的 7-4 版本。 如果使用此模块创建模型,则必须使用相应的评分模块: 评分 Vowpal Wabbit 7-4 模型

对于最新版本,请使用训练 Vowpal Wabbit 版本 8 模型及其评分模块 评分 Vowpal Wabbit 8 模型

什么是 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 版本 8 模型

本节介绍如何训练新模型,以及如何将新数据添加到现有模型中。

与工作室中的其他模块 (经典) ,此模块同时指定模块参数并训练模型。 如果你有一个现有模型,则可将其添加为可选输入以对该模型进行增量训练。

使用此模块需要对 Azure 存储帐户进行身份验证。

对输入数据进行准备

若要使用此模块训练模型,输入数据集必须包含以下两种受支持的格式之一的单个文本列: LibSVMVW。 这并不表示 Vowpal Wabbit 只分析文本数据,只是特征和值必须按必需的文本文件格式进行准备。

必须从 Azure 存储读取数据。 无法使用 "导出数据 "将输入文件直接保存到 Azure 以用于 Vowpal Wabbit,因为格式需要进行一些额外的修改。 必须确保数据的格式正确,然后将数据上传到 Azure Blob 存储。

但是,作为快捷方式,可以使用 "转换为 SVMLight "模块生成 SVMLight 格式化文件。 然后,可以将 SVMLight 格式化文件上传到 Azure Blob 存储并将其用作输入,也可以稍微修改该文件以符合 Vowpal Wabbit 输入文件要求。

Vowpal Wabbit 数据格式的优点它不需要以分列格式,处理稀疏数据时节省空间。 有关此格式的详细信息,请参阅 Vowpal Wabbit Wiki 页面

创建和训练 Vowpal Wabbit 模型

  1. 将" 训练 Vowpal Wabbit 版本 7-4 "模块添加到试验。

  2. 指定存储训练数据的帐户。 训练的模型和哈希文件存储在同一位置。

    • 对于 "Azure 存储帐户名称",请键入 Azure 存储帐户的名称。

    • 对于 Azure 存储密钥,复制并粘贴用于访问存储帐户的密钥,

    如果没有密钥,请参阅 如何重新生成存储访问密钥

  3. 对于 "Azure 容器名称",在存储模型训练数据的指定 Azure 存储帐户中键入单个容器的名称。 请勿键入帐户名称或任何协议前缀。

    例如,如果完整的容器路径和名称为 https://myaccount.blob.core.windows.net/vwmodels,则只应键入 vwmodels。 有关容器名称详细信息,请参阅命名和 引用容器、Blob 和元数据

  4. 在“VW 参数”文本框中,键入 Vowpal Wabbit 可执行文件的命令行参数。

    例如,可以添加 –l 来指定学习速率,或者添加 -b 来指示哈希位数。

    有关详细信息,请参阅 参数 部分。

  5. 输入 VW 文件的名称:键入包含输入数据的文件的名称。 该文件必须是 Azure Blob 存储中的现有文件,位于以前指定的存储帐户和容器中。 该文件必须已使用支持的格式之一进行准备。

  6. 输出可读模型的名称 ( --readable_model) 文件:键入应保存已训练模型的文件的名称。 该文件必须与输入文件保存在同一存储帐户和容器中。

    此参数对应于 VW 命令行中的 --readable_model 参数。

  7. 输出倒排哈希 ( --invert_hash) 文件:键入应保存倒排哈希函数的文件的名称。 该文件必须与输入文件保存在同一存储帐户和容器中。

    此参数对应于 VW 命令行中的 --invert_hash 参数。

  8. 请指定文件类型:指示训练数据使用的格式。 Vowpal Wabbit 支持以下两种输入文件格式:

    • VW 表示 Vowpal Wabbit 使用的内部格式。

    • SVMLight 是某些其他机器学习工具使用的格式。

  9. 如果不希望 每次重新运行试验时都从存储加载数据,请选择"使用缓存的结果"选项。 假设未更改其他参数并且找不到有效的缓存,则工作室 (经典) 使用缓存版本的数据。

    如果取消选择此选项,模块将始终从存储中读取数据。

  10. 运行试验。

  11. 生成模型后,右键单击"训练 Vowpal Wabbit 版本 7-4"的输出,然后选择"另存为已训练的模型",以便以后可以重新使用和重新训练模型。

重新训练现有的 Vowpal Wabbit 模型

Vowpal Wabbit 通过向现有模型中添加新数据来支持增量训练。 可通过两种方法获取现有的模型以进行重新训练:

  • 在同一试验中,使用另一 个训练 Vowpal Wabbit 版本 7-4 模块的输出。

  • 在工作室的"已训练模型"组中 (模型) 左侧导航窗格中找到保存的模型,并将其拖动到试验中。

  1. 将" 训练 Vowpal Wabbit 版本 7-4 "模块添加到试验。

  2. 连接训练模型到训练 Vowpal Wabbit 版本 7-4 的输入端口。

  3. 在" 训练Vowpal Wabbit 版本 7-4"的"属性"窗格中,指定新训练数据的位置和格式。

  4. 为可读模型输出文件指定一个名称,为与更新的模型关联的哈希文件指定另一个名称。

    注意

    如果指定位置存在现有的 Vowpal Wabbit 模型或哈希文件,则新训练的模型会以无提示方式覆盖这些文件。 若要在重新训练时保留中间模型,必须更改存储位置或创建模型文件的本地副本。

  5. 运行试验。

  6. 右键单击模块并选择 "另存为定型模型",以在机器学习工作区中保留更新后的模型。 如果你不指定新名称,则更新后的模型将覆盖现有的已保存模型。

示例

有关如何在机器学习中使用 Vowpal Wabbit 的示例,请参阅 Azure AI 库

另请参阅以下资源:

技术说明

本部分包含实现详情、使用技巧和常见问题解答。

Vowpal Wabbit 的优势

Vowpal Wabbit 通过非线性特征(如 n 元语法)提供极快的学习。

Vowpal Wabbit 使用在线学习技术,如随机梯度下降 (SGD),以一次一条记录的形式拟合模型。 因此,它将循环访问原始数据的速度非常快,并可以比大多数其他模型更快地开发的最佳预测因子。 这种方法也可避免让所有训练数据读入内存。

Vowpal Wabbit 将所有数据都转换为哈希值,而不仅仅是文本数据,但其他类别的变量。 使用哈希可以更有效地查找回归权重,这对于有效的随机梯度下降而言至关重要。

在训练过程中,该模块会调用为 Azure 开发的 Vowpal Wabbit 包装。 训练数据将从 Azure 下载到块中,利用执行计算和存储的辅助角色之间的高带宽,并流式传输到 VW 的学员。 由于 VW 执行的内部压缩,生成的模型通常非常紧凑。 模型将复制回试验工作区,在该工作区中,它可以像机器学习中的其他模型一样使用。

支持的和不支持的参数

在机器学习 Studio (经典) 中,不能使用以下命令行参数。

  • https://github.com/JohnLangford/vowpal_wabbit/wiki/Command-line-arguments 中指定的输入/输出选项

    模块已自动配置这些属性。

  • 此外,不允许任何生成多个输出或接受多个输入的选项。 其中包括 --cbt--lda--wap

  • 仅支持监督式学习算法。 因此,这些选项不受支持:–active--rank--search 等。

上述参数以外的其他所有参数都可以使用。

有关参数的完整列表,请参阅 Vowpal Wabbit Wiki 页面

限制

由于该服务的目标是支持经验丰富的 Vowpal Wabbit 用户,因此必须使用 Vowpal Wabbit 本机文本格式(而不是其他模块使用的数据集格式)提前准备输入数据。

无需使用 azure ML 工作区中的数据,只需从 azure 直接流式传输定型数据,实现最大性能和最小分析开销。 出于此原因,Azure ML 中的 VW 模块与其他模块之间仅有有限的互操作性。

模块参数

名称 范围 类型 默认 说明
Azure 存储帐户名称 any String 键入 Azure 存储帐户名
Azure 存储密钥 any SecureString 提供 Azure 存储密钥
Azure 容器名称 any String 键入 Azure 容器名称
VW 参数 any String 指定任何 Vowpal Wabbit 参数。

不支持参数 –f
VW 输入文件的名称 any String 以 Vowpal Wabbit 格式指定输入文件的名称
输出可读模型 (-readable_model) 文件的名称 any String 如果指定,则向 Azure 容器输出可读的模型。

该参数可选。
输出反转哈希 (-invert_hash) 文件的名称 any String 如果指定,则向 Azure 容器输出包含反转哈希函数的文件。

该参数可选。
请指定文件类型 VW

SVMLight
数据类型 VW 指示文件类型是使用 SVMLight 格式还是 Vowpal Wabbit 格式。

Outputs

名称 类型 说明
已训练模型 ILearner 接口 训练的学习器

例外

异常 描述
错误 0001 如果找不到数据集的一个或多个指定列,将出现异常。
错误 0003 如果一个或多个输入为 NULL 或为空,将出现异常。
错误 0004 如果参数小于或等于特定值,将出现异常。
错误 0017 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。

有关特定于工作室和经典 (模块) 的列表,请参阅机器学习代码

有关 API 异常的列表,请参阅机器学习 REST API代码

另请参阅

文本分析
特征哈希
命名实体识别
对 Vowpal Wabbit 7-4 模型评分
Vowpal Wabbit 训练
A-Z 模块列表