MyFPGA Forum

 找回密码
 注册
搜索
查看: 2640|回复: 0

“深度学习一点也不难!”

[复制链接]
发表于 2020-6-19 16:12:09 | 显示全部楼层 |阅读模式
本帖最后由 winter 于 2020-6-19 16:42 编辑

        通常情况下,机器学习尤其是深度学习的使用往往需要具备相当的有利条件,包括一个大型的数据集,设计有效的模型,而且还需要训练的方法——但现在,利用迁移学习就可以消除掉这些瓶颈。

111.jpeg

        
在不久之前,为了有效地使用深度学习,数据科学团队需要:

  • 一种新颖的模型架构,很可能需要自己设计;
  • 大型数据集,很可能需要自己收集;
  • 大规模训练模型的硬件或资金。

        这些条件和设施成为了限制深度学习的瓶颈,只有少数满足这些条件项目才能应用深度学习。

        然而,在过去的几年中,情况发生了变化。

        我们看到用户开始试用基于深度学习的新一代产品,而且与以往不同的是,这些产品使用的是以前没有出现过的任何一种模型架构。

        这种增长背后的驱动力是迁移学习(transfer learning)。

        什么是迁移学习?

        从广义上讲,迁移学习的思想是专注于存储已有问题的解决模型(例如识别照片中的花朵),并将其利用在其他不同但相关问题上(例如识别皮肤中的黑素瘤)。
        
        迁移学习有多种方法,但其中一种方法——微调法(finetuning)得到了广泛采用。

        在这种方法中,团队采用预先训练好的模型,然后通过删除或重新训练模型的最后一层,将其用于新的相关任务。例如,AI Dungeon是一款开放世界的文字冒险游戏,因其AI生成的生动形象的故事而广为传播:


222.jpeg

        
注意,AI Dungeon不是Google研究实验室开发的项目,只是一名工程师构建的黑客马拉松项目。

        AI Dungeon的创建者Nick Walton并没有从零开始设计模型,而是采用了最新的NLP模型(OpenAI GPT-2),然后对其进行微调来设置自己的冒险文字。

        这种方法完全可行的原因是,在神经网络中,最初几层主要负责简单、通用的特征,而最后几层主要负责与任务有关的分类/回归。Andrew Ng 用一个图像识别模型的例子,以可视化的方式介绍了各层与任务本身的相关性:


333.jpeg

        事实证明,基础层学习的通用知识通常可以很好地迁移到其他任务上。在AI Dungeon的示例中,GPT-2对通用英语有良好的理解,只需要对最后几层进行一些重新训练,即可在冒险游戏中给出优异的表现。

        每位工程师都可以通过这种流程,在几天之内部署一个模型,以在新的领域实现最新的结果。

        为什么迁移学习是下一代机器学习软件的关键?

        本文开头我提到了使用机器学习(尤其是深度学习)需要具备的有利条件。你需要一个大型的数据集,需要设计有效的模型,而且还需要训练的方法。

        这意味着一般而言,某些领域的项目或缺乏某些资源的项目就无法开展。

        如今,我们可以利用迁移学习消除这些瓶颈:

        1、小型数据集不再是问题

        通常,深度学习需要大量带标签的数据,但在许多领域中,这些数据根本不存在。然而,迁移学习可以解决这个问题。

        例如,哈佛医学院附属团队最近部署了一个模型,该模型可以“根据胸部X光片,预测长期的死亡率,包括非癌性死亡”。


444.jpeg

        
他们只有5万张带标签图像的数据集,不足以从头开始训练CNN(卷积神经网络)。于是,他们采用了预先训练好的的Inception-v4模型(该模型在拥有超过1400万张图像的ImageNet数据集上进行了训练),并使用迁移学习和轻微的架构调整,让模型适应了他们的数据集。

        最终,他们的CNN成功地使用每位患者的一张胸部图像,生成了与患者的实际死亡率相关的风险评分。

        2、模型可在几分钟训练完成

        在大量数据上训练模型面临的难题不仅仅是获取大型数据集,还有资源和时间的问题。

        例如,当Google开发最尖端的图像分类模型Xception时,他们训练了两个版本:一个在ImageNet数据集(1400万张图像)上,另一个在JFT数据集(3.5亿张图像)上。

        即使他们在训练中采用了60个NVIDIA K80 GPU,并进行了各种优化,但每次ImageNet实验的运行都需要3天的时间。而JFT实验耗时一个多月。

        如今,经过预训练的Xception模型已经发布了,各个团队可以通过微调更快地实现自己的模型。

        例如,伊利诺伊大学和阿贡国家实验室的一个团队最近训练了一个模型,将星系的图像分类为螺旋形或椭圆形:

555.jpeg

        尽管只有3万5千张带标签的图像数据集,但他们仍能够使用NVIDIA GPU,在短短8分钟内对Xception进行微调。

        这样得到模型在GPU上运行时,能够以每分钟超过2万个星系的惊人速度,并以99.8%的成功率对星系进行分类。

        3、不再需要风险资本来训练模型

        当初Google花费数月在60个GPU上训练一次Xception模型时,可能他们并不在乎成本。但是,对于没有那么多预算的团队来说,训练模型是非常现实的问题。

        例如,当OpenAI首次公布GPT-2的结果时,由于担心滥用,他们只发布了模型架构,却未发布完整的预训练模型。

        之后,布朗大学的一个团队按照论文陈述的架构和训练过程试图重现GPT-2,并命名为OpenGPT-2。他们花了大约5万美金进行了训练,但性能仍不及GPT-2。

        5万美金的投入却未能训练出性能过关的模型,对于没有充裕资金的生产软件团队来说都是巨大的风险。

        幸运的是,迁移学习可以显著降低成本。

        当初Nick Walton构建AI Dungeon时,他对GPT-2进行了微调。OpenAI已经投入了大约27,118,520页文本和数千美元来训练模型,所以Walton坐享其成就可以了。

        他使用了一个非常小的来自choiceyourstory.com的文本集,并对Google Colab的模型(该模型完全免费)进行了微调。

        机器学习工程的生态系统正在建设中。

        回顾软件工程,我们会发现生态系统的“成熟”过程通常都有极其相似的模式。

        首先是一门新语言的出现,而且还拥有令人兴奋的功能,然后人们将这门语言用于某些特别的场景,或者用于研究项目和业余爱好。在这个阶段,任何使用这门语言的人都必须从零开始构建所有的基础实用程序

        接下来,社区会开发库和项目,将常见的实用程序抽象化,直到这些工具的功能足够强大,足够稳定,能用于生产。

        在这个阶段,使用这门语言来构建软件的工程师不必再担心发送HTTP请求或连接到数据库等问题(所有这些都已被抽象化),只需专心构建产品即可。

        换句话说,Facebook构建React,Google构建Angular,而工程师们则可以利用这些框架来构建产品。而这一过程在机器学习中就是迁移学习。

        随着OpenAI、Google、Facebook和其他科技巨头发布强大的开源模型,面向机器学习工程师的“工具”会越来越强大,越来越稳定。

        机器学习工程师不再需要花时间使用PyTorch或TensorFlow从头开始构建模型,他们可以利用开源模型并通过迁移学习来构建产品。

        机器学习软件的新时代即将到来。如今,机器学习工程师只需专心思考如何将这些模型投入生产。

转自:https://baijiahao.baidu.com/s?id=1658488166331986554&wfr=spider&for=pc
作者:Caleb Kaiser,创始团队成员@Cortex Labs
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-3-29 23:26 , Processed in 0.047640 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表