专栏首页AI研习社如何让训练神经网络不无聊?试试迁移学习和多任务学习

如何让训练神经网络不无聊?试试迁移学习和多任务学习

雷锋网按:本文为雷锋字幕组编译的论文解读短视频,原标题Transfer Learning vs Multitask Learning,作者为Ibrahim Sobh。 翻译 | 李晶 编辑 | 吴璇

训练深度神经网络是一个乏味的过程。更实际的方法,如重新使用训练好的网络解决其他任务,或针对许多任务使用相同的网络。这篇文章中,我们会讨论两个重要的方法:迁移学习和多任务学习。

迁移学习

在迁移学习中,我们希望利用源任务学到的知识帮助学习目标任务。例如,一个训练好的图像分类网络能够被用于另一个图像相关的任务。再比如,一个网络在仿真环境学习的知识可以被迁移到真实环境的网络。

总的来说,神经网络迁移学习有两种方案:特征提取和微调。迁移学习一个典型的例子就是载入训练好VGG网络,这个大规模分类网络能将图像分到1000个类别,然后把这个网络用于另一个任务,如医学图像分类。

1) 特征提取

特征提取是针对目标任务把一个简单的分类器加在源任务上预训练的网络上,将预训练的网络作为特征提取器。仅有添加的分类器的参数需要更新,预训练的网络的参数不变。这能使新任务从源任务中学习到的特征中受益。但是,这些特征更加适合源任务。

2) 微调

微调允许学习目标任务时修改预训练的网络参数。通常,在预训练的网络之上加一个新的随机初始化的层。预训练网络的参数使用很小的学习率更新防止大的改变。通常会冻结网络底层的参数,这些层学到更通用的特征,微调顶部的层,这些层学到更具体的特征。同时,冻结一些层能够减少需要训练的参数的数量,避免过拟合问题,尤其时在目标任务数据量不够大的情况下。实践中,微调胜过特征提取因为他针对新的任务优化了预训练的网络。

迁移学习的基本情形:

迁移学习可以分为4种情形基于以下两个因素:1)目标任务数据集的大小,2)源任务与目标任务的相似度:

情形1:目标数据集很小,目标任务与源任务相似:这种情况使用特征提取,因为目标数据集小容易造成过拟合。

情形2:目标数据集很小,目标任务与源任务不同:这时我们微调底层网络,并移除高层网络。换句话说,我们使用较早的特征提取。

情形3:目标数据集很大,目标任务与源任务相似:我们有了大量的数据,我们可以随机初始化参数,从头开始训练网络。然而,最好还是使用预训练的网络初始化参数并微调几层。

情形4:目标数据集很大,目标任务与源任务不同。这时,我们微调大部分层甚至整个网络。

多任务学习

多任务学习的主要目标是通过使用多个任务的样本优化网络的参数改进任务的性能。例如,我们希望有一个网络可以根据输入的脸部图像区分是男性还是女性,同时可以预测这个人的年龄。这时,我们有两个相关的任务,一个是二分类,一个是回归任务。显然两个任务是相关的,对一个任务的学习可以改进另外一个任务。

一个简单的网络设计实例,可以在任务和任务之间共享一部分网络。共享部分学习任务通用的中间表达,有助于这些共同的学习任务。另一方面,针对特定的学习任务,特定的头部会学习如何使用这些共享表达。

对深度学习来说,迁移学习和多任务学习是两个重要的方法。

博客原址:https://www.linkedin.com/pulse/transfer-learning-vs-multitask-ibrahim-sobh/


本文分享自微信公众号 - AI研习社(okweiwu),作者:雷锋字幕组

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 人脑的前额皮质里藏了一个强化学习系统,DeepMind 如是说

    AI 研习社按:最近,AI 系统已经学会一系列游戏的玩法,如雅达利经典游戏 Breakout 和 Pong。尽管这样的表现令人印象深刻,但其实人工智能需要数千小...

    AI研习社
  • 「元学习」解析:学习如何梯度下降与学习新的算法

    AI 研习社:本文作者 Cody Marie Wild,她是一位机器学习领域的数据科学家,在生活中还是名猫咪铲屎官,她钟爱语言和简洁优美的系统。在这篇文章中,C...

    AI研习社
  • Github项目推荐 | 网页版图片标记与分割工具

    Image Labeling Tool - Web application for image labeling and segmentation

    AI研习社
  • 如何添加windows定时计划任务?

    “ 我们常常使用linux添加定时任务,windows也可以吗?答案是肯定的——编程三分钟”

    机智的程序员小熊
  • 面试题:说说事件循环机制(满分答案来了)

    JavaScript代码的执行过程中,除了依靠函数调用栈来搞定函数的执行顺序外,还依靠任务队列(task queue)来搞定另外一些代码的执行。整个执行过程,我...

    winty
  • 如何解释Event Loop面试官才满意?

    想要了解JavaScript引擎,首先我们从它的运行机制Event Loop来说起。

    童欧巴
  • Js异步机制的实现

    JavaScript是一门单线程语言,所谓单线程,就是指一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模...

    WindrunnerMax
  • JavaScript同步、异步及事件循环

    JS是单线程的,每次只能做一件事情。像以下这种情况,代码会按顺序执行,这个就叫同步。

    谭光志
  • Js 的事件循环(Event Loop)机制以及实例讲解

    大家都知道js是单线程的脚本语言,在同一时间,只能做同一件事,为了协调事件、用户交互、脚本、UI渲染和网络处理等行为,防止主线程阻塞,Event Loop方案应...

    OBKoro1
  • 浅析Event Loop(事件循环)

    点击此获得答案 答案是: promise1 1 Promise{: 'resolve1'} 2 Promise{} resolve1

    憧憬博客

扫码关注云+社区

领取腾讯云代金券