定型 Vowpal Wabbit 版本7-10 型号
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
使用7-10 版的 Vowpal Wabbit 机器学习系统训练模型
类别:文本分析
模块概述
本文介绍如何使用机器学习 Studio (经典) 中的 "定型 Vowpal Wabbit 版本 7-10 " 模块,通过 (Vowpal 版本 7-10) 的实例创建机器学习模型。
若要将 Vowpal Wabbit 用于机器学习,请根据 Vowpal Wabbit 要求设置输入的格式,并将数据保存在 Azure blob 中。 使用此模块可指定 Vowpal Wabbit 命令行参数。
运行试验时,会将 Vowpal Wabbit 的实例与指定的数据一起加载到试验运行时。 训练完成后,模型会被序列化回工作区。 你可以立即使用该模型对数据进行评分。 训练的模型也保存在 Azure 存储中,因此可以在以后使用它,而无需重新处理定型数据。
若要对新数据以增量方式定型现有模型,请将已保存的模型连接到 预先训练的模型 输入,并将新数据添加到其他输入。
注意
机器学习 Studio (经典) 托管多个版本的 Vowpal Wabbit 框架。 此模块使用版本7-10 的 Vowpal Wabbit 框架。
如果需要基于以前版本 (7-4 或 7-6) 生成或评分模型,请使用以下模块: 定型 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 版本7-10 模型
本节介绍如何训练新模型,以及如何将新数据添加到现有模型中。
与 Studio 中的其他模块 (经典) 不同,此模块均指定模块参数,并训练该模型。 如果你有一个现有模型,则可将其添加为可选输入以对该模型进行增量训练。
使用此模块需要对 Azure 存储帐户进行身份验证。
对输入数据进行准备
若要使用此模块为模型定型,输入数据集必须包含采用以下两种受支持的格式之一的单个文本列: LibSVM 或 VW。
这并不意味着 Vowpal Wabbit 仅分析文本数据,只是必须以所需的文本文件格式准备功能和值。
必须从 Azure 存储读取数据。 不能使用 导出数据 将输入文件直接保存到 Azure 以便与 Vowpal Wabbit 一起使用,因为格式需要进行一些其他修改。 必须确保数据的格式正确,然后将数据上传到 Azure blob 存储。
但是,作为一种快捷方式,可以使用 " 转换为 SVMLight " 模块生成 SVMLight 格式化文件。 然后,可以将 SVMLight 格式文件上传到 Azure blob 存储,并将其用作输入,或者可以略微修改文件以符合 Vowpal Wabbit 输入文件要求。
Vowpal Wabbit 数据格式的优点它不需要以分列格式,处理稀疏数据时节省空间。 有关此格式的详细信息,请参阅 Vowpal Wabbit Wiki 页面。
创建和训练 Vowpal Wabbit 模型
向试验中添加 训练 Vowpal Wabbit 版本 7-10 模块。
指定存储定型数据的帐户。 训练的模型和哈希文件存储在同一位置。
对于 " azure 存储帐户名称",请键入 azure 存储帐户的名称。
对于 Azure 存储密钥,请复制并粘贴为访问存储帐户而提供的密钥,
如果没有密钥,请参阅 如何重新生成存储访问密钥
对于 " azure 容器名称",请键入存储模型定型数据的指定 Azure 存储帐户中的单个容器的名称。 不要键入帐户名称或任何协议前缀。
例如,如果完整容器的路径和名称为
https://myaccount.blob.core.windows.net/vwmodels
,则应该只vwmodels
键入。 有关容器名称的详细信息,请参阅 命名和引用容器、blob 和元数据。在“VW 参数”文本框中,键入 Vowpal Wabbit 可执行文件的命令行参数。
例如,可以添加
–l
来指定学习速率,或者添加-b
来指示哈希位数。有关详细信息,请参阅 parameters 部分。
输入 VW 文件的名称:键入包含输入数据的文件的名称。 该文件必须是 Azure blob 存储中的现有文件,位于之前指定的存储帐户和容器中。 文件必须已使用支持的格式之一准备好。
输出可读模型 (--readable_model) 文件的名称:键入应将定型模型保存到的文件的名称。 文件必须保存在与输入文件相同的存储帐户和容器中。
此参数对应于 VW 命令行中的
--readable_model
参数。反转输出的哈希 (--invert_hash) 文件的名称:键入应在其中保存反转哈希函数的文件的名称。 文件必须保存在与输入文件相同的存储帐户和容器中。
此参数对应于 VW 命令行中的
--invert_hash
参数。请指定文件类型:指示定型数据使用的格式。 Vowpal Wabbit 支持以下两种输入文件格式:
VW 表示 Vowpal Wabbit 使用的内部格式。 有关详细信息,请参阅 Vowpal Wabbit Wiki 页面。
SVMLight 是某些其他机器学习工具使用的格式。
如果你不想在每次重新 reun 实验时从存储加载数据,请选择 " 使用缓存的结果" 选项。 假设没有其他参数发生更改,并且找到了有效缓存,则 Studio (经典) 使用缓存版本的数据。
如果取消选择此选项,模块将始终从存储中读取数据。
运行试验。
生成模型后,右键单击输出并选择 " 另存为定型模型",以便以后可以重新使用和重新训练模型。
重新训练现有的 Vowpal Wabbit 模型
Vowpal Wabbit 通过向现有模型中添加新数据来支持增量训练。 可通过两种方法获取现有的模型以进行重新训练:
在同一试验中使用另一个 定型 Vowpal Wabbit 版本 8 模块的输出。
在画室 (经典) 中的 " 定型模型 " 组中找到已保存的模型,并将其拖动到实验中。
将 训练 Vowpal Wabbit 版本 8 模块添加到试验中。
连接先前训练的模型到定型 Vowpal Wabbit 版本 8的输入端口:
在 "定型 Vowpal Wabbit 版本 8" 的 "属性" 窗格中,指定新定型数据的位置和格式。
指定用户可读模型输出文件的名称,以及与更新后的模型关联的哈希文件的另一个名称。
注意
如果指定的位置中存在现有的 Vowpal Wabbit 模型或哈希文件,则新的定型模型将自动覆盖这些文件。 若要在重新训练时保留中间模型,必须更改存储位置或创建模型文件的本地副本。
运行试验。
右键单击模块并选择 "另存为定型模型",以在机器学习工作区中保留更新后的模型。 如果你不指定新名称,则更新后的模型将覆盖现有的已保存模型。
示例
有关如何在机器学习中使用 Vowpal Wabbit 的示例,请参阅 Azure AI 库:
-
此实验演示了 VW 模型的数据准备、定型和操作化。
另请参阅以下资源:
介绍 Vowpal Wabbit 实现和路线图的博客
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
Vowpal Wabbit 的优势
Vowpal Wabbit 通过非线性特征(如 n 元语法)提供极快的学习。
Vowpal Wabbit 使用在线学习技术,如随机梯度下降 (SGD),以一次一条记录的形式拟合模型。 因此,它将循环访问原始数据的速度非常快,并可以比大多数其他模型更快地开发的最佳预测因子。 这种方法也可避免让所有训练数据读入内存。
Vowpal Wabbit 将所有数据都转换为哈希值,而不仅仅是文本数据,但其他类别的变量。 使用哈希可以更有效地查找回归权重,这对于有效的随机梯度下降而言至关重要。
在训练过程中,该模块会调用为 Azure 开发的 Vowpal Wabbit 包装。 训练数据将从 Azure 下载到块中,利用存储和执行计算的辅助角色之间的高带宽,并流式传输到 VW 的学员。 由于 VW 执行的内部压缩,生成的模型通常非常紧凑。 模型将复制回试验工作区,在该工作区中,它可以像机器学习中的其他模型一样使用。
支持的和不支持的参数
本部分介绍机器学习 Studio (经典) 中的 Vowpal Wabbit 命令行参数支持。
在机器学习 Studio (经典) 中,不能使用以下命令行参数。
Vowpal Wabbit Wiki-命令行参数中指定的输入/输出选项
这些属性是由模块自动配置的。
不允许生成多个输出或使用多个输入的任何选项。 其中包括:
--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 | 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。 |
有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码。
有关 API 异常的列表,请参阅机器学习 REST API 错误代码。
另请参阅
文本分析
特征哈希
命名实体识别
对 Vowpal Wabbit 7-4 模型评分
对 Vowpal Wabbit 7-10 模型评分
训练 Vowpal Wabbit 7-4 模型
A-Z 模块列表