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