雷锋网 AI 科技评论按: 所谓的「迁移学习」, 是指重新利用已训练的机器学习模型来应对新任务的技术. 它给深度学习领域带来了许多好处, 最明显的是, 一旦无需从头开始训练模型, 我们可以省下大量的计算, 数据以及专业知识等资源. 近期由亚马逊开源的 Xfer 数据库, 可以让我们轻松应用及打造迁移学习原型, 雷锋网 AI 科技评论将亚马逊算法工程师 Andreas Damianou 关于此库的介绍博文节译如下.
Xfer 是一款针对 MXNet 的迁移学习, 为适那些希望达到以下目的的从业者与研究人员而设计:
将已训练的神经网络在新场景 / 任务中进行部署
基于现有网络架构打造新的神经网络原型方案.
换句话说, 只要给定机器学习任务, Xfer 就能通过神经网络找到最佳解决方案, 而无需你再从头开始进行训练. 该库可以应用于任意的数据与网络, 包括那些最常见的图像和文本数据.
使用 Xfer 的好处
节省资源: 无需从头开始训练网络, 从而节省大量的人力与 CPU / GPU 资源).
提升处理能力: 即使标签很少, 我们也能对复杂的数据进行分类.
降低使用门槛: 无需成为机器学习专家, 就能轻松利用和修改现有的神经网络体系结构, 创建出自己的解决方案.
便于从神经网络中提取特征.
提升原型设计速度: Xfer 的 ModelHandler 模块将能允许我们轻松修改神经网络的架构.
不确定性建模 (Uncertainty modeling): 通过贝叶斯神经网络(BNN) 或高斯过程(GP), 我们得以把控模型预测的不确定性.
演示 1: 基于元模型的迁移学习
只要确定好目标任务的源模型 (MXNet) 和数据迭代器, 你只需输入 3 行代码即可实现迁移学习:
下面的动图直观演示使用重新调整方法执行元模型迁移学习的操作:
基于元模型的转移学习
在该例子中, ModelHandler 用于获取已在源任务上预先进行训练的神经网络参数 W. 在保持 W 原来参数的基础上, 我们通过源任务中的预训练神经网络传递目标输入数据. 过程中我们将获得描述目标数据以及源任务信息的表示, 因为它们是由从中获取的参数 W 生成的. 最后, 我们调用 Repurposer 模块将上述特征当作元模型分类器的输入. 在给出的代码中, 元模型以「Lr」进行指代, 代表的是 Logistic Regression..
需要注意的是, 如果使用的元模型基于高斯过程或贝叶斯神经网络(两者均构建在 Xfer 中), 则可以在对目标任务的预测中进行不确定性预估. 这也意味着, 该方法可以「习得过去它们所不懂的东西」. 这一点很重要, 它可以借此应对标记数据过少的情况.
演示 2: 基于微调的迁移学习
该方法允许用户事先细化预训练神经网络架构, 比如通过 ModelHandler 模块添加或移除层, 接着通过基于梯度的优化器微调用于目标任务的神经网络. 通过使用 ModelHandler, 我们可以尝试使用自定义的微调再利用方法来进行实验. 例如, 从预训练神经网络中选择要传输 / 冻结的图层. 关于 ModelHandler 传输功能的代码展示如下:
上述代码的动图演示如下:
基于微调的转移学习
与上个任务很类似, ModelHandler 用于获取在源任务上预训练的神经网络参数 W, 该源模型可以是预先训练好的 VGGNet. 通过 ModelHandler, 我们可以对源任务神经网络的架构进行调整; 在这个示例中, 我们在架构底部添加了一个新层 (带有新进的初始化参数). 接下来基于微调的再利用方法对新架构进行训练, 以使其适应目标任务的数据. Xfer 允许我们通过定义原始参数(上图中显示为蓝色) 以及新参数 (上图中显示为橙色) 来实现基于微调的再利用方法. 由于原始参数已包含源任务的信息, 因此不应和学习值有太大出入, 而新参数已经被随机初始化, 因此应该以更高的学习率进行优化.
从今天开始使用 Xfer 吧
GitHub 开源网址:
https://github.com/amzn/xfer
Xfer 信息文档:
https://xfer.readthedocs.io/en/master/
图像数据的转移学习教程:
基于自动超参数调整的迁移学习教程:
针对文本数据的迁移学习:
创建自定义 repurposer 教程:
用于便捷操作和检查 MXNet 模型的 xfer.ModelHandler, 使用教程:
via
雷锋网 (公众号: 雷锋网) AI 科技评论
雷锋网原创文章, 未经授权禁止转载. 详情见 转载须知 http://dwz.cn/4ErMxZ .
来源: http://www.tuicool.com/articles/IneiuuR