专栏名称: Python新手营
数据,算法,人工智能
目录
相关文章推荐
爱可可-爱生活  ·  【[1.3k星]One-KVM:一款基于经济 ... ·  17 小时前  
黄建同学  ·  Google 最近更新了来自世界一流公司的 ... ·  2 天前  
爱可可-爱生活  ·  [CL]《MetaFaith: ... ·  2 天前  
爱可可-爱生活  ·  #听见微博# #微博声浪计划# ... ·  2 天前  
爱可可-爱生活  ·  【[143星]Servo ... ·  2 天前  
51好读  ›  专栏  ›  Python新手营

数据不够怎么训练深度学习模型?不妨试试迁移学习

Python新手营  · 公众号  · AI  · 2017-04-20 19:41

正文

请到「今天看啥」查看全文


数据量、模型规模和问题复杂度

模型需要的训练数据量和模型规模之间存在一个有趣的线性正相关关系。其中的一个基本原理是,模型的规模应该足够大,这样才能充分捕捉数据间不同部分的联系(例如图像中的纹理和形状,文本中的语法和语音中的音素)和待解决问题的细节信息(例如分类的数量)。模型前端的层次通常用来捕获输入数据的高级联系(例如图像边缘和主体等)。模型后端的层次通常用来捕获有助于做出最终决定的信息(通常是用来区分目标输出的细节信息)。因此,待解决的问题的复杂度越高(如图像分类等),则参数的个数和所需的训练数据量也越大。

引入迁移学习

在大多数情况下,面对某一领域的某一特定问题,你都不可能找到足够充分的训练数据,这是业内一个普遍存在的事实。但是,得益于一种技术的帮助,从其他数据源训练得到的模型,经过一定的修改和完善,就可以在类似的领域得到复用,这一点大大缓解了数据源不足引起的问题,而这一关键技术就是迁移学习。

根据Github上公布的“引用次数最多的深度学习论文”榜单,深度学习领域中有超过50%的高质量论文都以某种方式使用了迁移学习技术或者预训练(Pretraining)。迁移学习已经逐渐成为了资源不足(数据或者运算力的不足)的AI项目的首选技术。但现实情况是,仍然存在大量的适用于迁移学习技术的AI项目,并不知道迁移学习的存在。如下图所示,迁移学习的热度远不及机器学习和深度学习。

迁移学习的基本思路是利用预训练模型,即已经通过现成的数据集训练好的模型(这里预训练的数据集可以对应完全不同的待解问题,例如具有相同的输入,不同的输出)。开发者需要在预训练模型中找到能够输出可复用特征(feature)的层次(layer),然后利用该层次的输出作为输入特征来训练那些需要参数较少的规模更小的神经网络。由于预训练模型此前已经习得了数据的组织模式(patterns),因此这个较小规模的网络只需要学习数据中针对特定问题的特定联系就可以了。此前流行的一款名为 Prisma 的修图App就是一个很好的例子,它已经预先习得了梵高的作画风格,并可以将之成功应用于任意一张用户上传的图片中。







请到「今天看啥」查看全文