27

再无需从头训练迁移学习模型!亚马逊开源迁移学习数据库 Xfer

 5 years ago
source link: https://www.leiphone.com/news/201902/V6QXXen93LcxjT4N.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

雷锋网 AI 科技评论按: 所谓的「迁移学习」,是指重新利用已训练的机器学习模型来应对新任务的技术。它给深度学习领域带来了许多好处,最明显的是,一旦无需从头开始训练模型,我们可以省下大量的计算、数据以及专业知识等资源。近期由亚马逊开源的 Xfer 数据库,可以让我们轻松应用及打造迁移学习原型,雷锋网 AI 科技评论将亚马逊算法工程师 Andreas Damianou 关于此库的介绍博文节译如下。

NvuIZbB.png!web

Xfer 是一款针对 MXNet 的迁移学习,为适那些希望达到以下目的的从业者与研究人员而设计:

  • 将已训练的神经网络在新场景/任务中进行部署

  • 基于现有网络架构打造新的神经网络原型方案。

换句话说,只要给定机器学习任务,Xfer 就能通过神经网络找到最佳解决方案,而无需你再从头开始进行训练。该库可以应用于任意的数据与网络,包括那些最常见的图像和文本数据。

使用 Xfer 的好处

  • 节省资源:无需从头开始训练网络,从而节省大量的人力与 CPU / GPU 资源)。

  • 提升处理能力:即使标签很少,我们也能对复杂的数据进行分类。

  • 降低使用门槛:无需成为机器学习专家,就能轻松利用和修改现有的神经网络体系结构,创建出自己的解决方案。

  • 便于从神经网络中提取特征。

  • 提升原型设计速度:Xfer 的 ModelHandler 模块将能允许我们轻松修改神经网络的架构。

  • 不确定性建模(Uncertainty modeling):通过贝叶斯神经网络(BNN)或高斯过程(GP),我们得以把控模型预测的不确定性。

演示 1:基于元模型的迁移学习

只要确定好目标任务的源模型(MXNet)和数据迭代器,你只需输入 3 行代码即可实现迁移学习:

rqeEbmV.jpg!web

下面的动图直观演示使用重新调整方法执行元模型迁移学习的操作:

myuqmqQ.gif

基于元模型的转移学习

在该例子中,ModelHandler 用于获取已在源任务上预先进行训练的神经网络参数 W。在保持 W 原来参数的基础上,我们通过源任务中的预训练神经网络传递目标输入数据。过程中我们将获得描述目标数据以及源任务信息的表示,因为它们是由从中获取的参数 W 生成的。最后,我们调用 Repurposer 模块将上述特征当作元模型分类器的输入。在给出的代码中,元模型以「Lr」进行指代,代表的是 Logistic Regression.。

需要注意的是,如果使用的元模型基于高斯过程或贝叶斯神经网络(两者均构建在 Xfer 中),则可以在对目标任务的预测中进行不确定性预估。这也意味着,该方法可以「习得过去它们所不懂的东西」。这一点很重要,它可以借此应对标记数据过少的情况。

演示 2:基于微调的迁移学习

该方法允许用户事先细化预训练神经网络架构,比如通过 ModelHandler 模块添加或移除层,接着通过基于梯度的优化器微调用于目标任务的神经网络。通过使用 ModelHandler,我们可以尝试使用自定义的微调再利用方法来进行实验。例如,从预训练神经网络中选择要传输/冻结的图层。关于 ModelHandler 传输功能的代码展示如下:

3YfiqyQ.jpg!web

上述代码的动图演示如下:

2I7Jnqy.gif

基于微调的转移学习

与上个任务很类似,ModelHandler 用于获取在源任务上预训练的神经网络参数 W,该源模型可以是预先训练好的 VGGNet。通过 ModelHandler,我们可以对源任务神经网络的架构进行调整;在这个示例中,我们在架构底部添加了一个新层(带有新进的初始化参数)。接下来基于微调的再利用方法对新架构进行训练,以使其适应目标任务的数据。Xfer 允许我们通过定义原始参数(上图中显示为蓝色)以及新参数(上图中显示为橙色)来实现基于微调的再利用方法。由于原始参数已包含源任务的信息,因此不应和学习值有太大出入,而新参数已经被随机初始化,因此应该以更高的学习率进行优化。

从今天开始使用 Xfer 吧

Github 开源网址:

https://github.com/amzn/xfer

Xfer 信息文档:

https://xfer.readthedocs.io/en/master/

图像数据的转移学习教程:

https://xfer.readthedocs.io/en/master/demos/xfer-overview.html

基于自动超参数调整的迁移学习教程:

https://xfer.readthedocs.io/en/master/demos/xfer-hpo.html

针对文本数据的迁移学习:

https://xfer.readthedocs.io/en/master/demos/xfer-text-transfer.html

创建自定义 repurposer 教程:

https://xfer.readthedocs.io/en/master/demos/xfer-custom-repurposers.html

用于便捷操作和检查 MXNet 模型的 xfer.ModelHandler,使用教程:

https://xfer.readthedocs.io/en/master/demos/xfer-modelhandler.html

via https://medium.com/apache-mxnet/xfer-an-open-source-library-for-neural-network-transfer-learning-cd5eac4accf0

雷锋网 (公众号:雷锋网) AI 科技评论

雷锋网原创文章,未经授权禁止转载。详情见 转载须知


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK