Press "Enter" to skip to content

Deep learning in all,深度学习不再困难

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

迁移学习, 使得深度学习不再困难

 

 

在不远的过去,数据科学团队需要一些东西来有效地使用深度学习:

 

一种新颖的模型架构,可能是在内部设计的

 

访问大型且可能专有的数据集

 

用于大规模模型训练的硬件或资金

 

这限制了深度学习的效果,将其限制在满足这些条件的少数项目中。但是,在过去的几年中,情况发生了变化。在Cortex(https://github.com/cortexlabs/cortex)上,我们看到用户推出了基于深度学习的新一代产品,而且与以前不同,这些产品并非全部使用同类模型架构来构建。

 

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

 

什幺是迁移学习

 

从广义上讲,迁移学习是指在一个接受过特定任务训练的模型中积累的知识,比如识别照片中的花朵,可以迁移到另一个模型中,以帮助预测不同的、相关的任务,比如识别某人皮肤上的黑色素瘤。

 

「注:如果你想更深入地了解迁移学习,塞巴斯蒂安·鲁德已经写了一本很棒的入门书(https://ruder.io/transfer-learning/)。」

 

迁移学习的方法有很多种,但有一种方式是特别的,被广泛采用——微调(finetuning)。

 

在这种方法中,团队采用一个预先训练好的模型,并删除/重新训练模型的最后一层,以专注于一个新的、相关的任务。例如,《AI Dungeon》(http://aidungeon.io/)是一款开放世界文字冒险游戏,它的人工智能生成的故事是多幺令人信服,这款游戏在网上疯传。

 

 

值得注意的是,《AI Dungeon》不是在谷歌的一个研究实验室开发的,而是由一个工程师建造的黑客马拉松项目。

 

尼克·沃尔顿,《AI Dungeon》的创造者,不是通过从头开始设计一个模型来建造它,而是通过一个最先进的NLP模型OpenAI的GPT-2,通过在选择你自己的冒险类型中进行微调(finetuning)。

 

 

这样做的原因是,在神经网络中,最初的层关注简单的、通用的特性,而最后的层关注更具体的任务分类/回归。Andrew Ng通过想象一个图像识别模型来可视化这些层及其相对的特异性水平:

事实证明,基本层的一般知识通常可以很好地应用于其他任务。在《AI Dungeon》的例子中,GPT-2拥有对普通英语的艺术理解,它只需要在最后一层进行一点再训练,就能在选择你自己的冒险类型中表现出色。

 

这个过程,一个工程师可以部署一个模型,这个模型可以在几天内达到一个新领域的最新成果。

 

为什幺迁移学习是下一代ML软件的关键

 

在前面,我提到了机器学习和深度学习需要具备的有利条件,特别是有效使用这些条件。你需要访问一个大型的、干净的数据集,你需要能够设计一个有效的模型,你需要训练它的方法。

 

这意味着在默认情况下,某些领域或没有某些资源的项目是不可行的。

 

现在,通过迁移学习,这些瓶颈正在被消除。

 

1. 小数据集不再是决定性因素

 

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

 

例如,哈佛医学院(Harvard Medical School)的一个团队最近部署了一个模型,可以通过胸片预测长期死亡率,包括非癌症死亡。

 

 

有了大约5万张标记图像的数据集,他们就不需要从头开始训练他们的CNN(卷积神经网络)。相反,他们采用了一个预先训练好的Inception-v4(该模型在超过1400万张图像的ImageNet数据集上训练),并使用了迁移学习和轻微的架构修改来使模型适应他们的数据集。

 

最后,他们的CNN成功地使用每个病人一张胸部图像来生成与病人实际死亡率相关的风险评分。

 

2. 模型可以在几分钟内完成训练,不再需要几天了

 

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

 

例如,当谷歌开发最新的图像分类模型Xception时,他们训练了两个版本:一个是针对ImageNet数据集的(1400万张图像),另一个是针对JFT数据集的(3.5亿张图像)。

 

在60台NVIDIA K80 GPU上进行各种优化训练,一个ImageNet实验运行需要3天时间。JFT的实验持续了一个多月。

 

但是,现在已经发布了预先训练好的Xception模型,团队可以更快地调整他们自己的版本。

 

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

尽管只有35000张标记图像的数据集,他们还是能够使用NVIDIA gpu在8分钟内对Xception进行处理。

 

由此产生的模型能够以每分钟超过20000个星系的超人速度对星系进行分类,成功率为99.8%。

 

3. 你不再需要风险资本来训练模型了

 

当谷歌用几个月时间一次在60个GPU上训练他们的Xception模型,他们可能并不太在意成本。然而,对于任何没有谷歌规模预算的团队来说,模型训练的价格是一个真正的问题。

 

例如,当OpenAI第一次发布GPT-2的结果时,他们发布的是模型架构,而不是完整的预训练模型,因为担心出现误用。

 

作为回应,布朗大学的一个团队复制了GPT-2,他们遵循了论文中提出的体系结构和培训程序,并将其模型命名为OpenGPT-2。他们花了大约5万美元进行训练,而且表现不如GPT-2。

 

50000美元对于任何团队来说,在没有大量资金的情况下构建真正的、可生产的软件,一个性能低于当前水平的模型,是一个很大的风险。

 

幸运的是,迁移学习大大降低了这一成本。

 

当尼克·沃尔顿建造《AI Dungeon》时,他是通过调整GPT-2来完成的。OpenAI已经投入了大约27,118,520页的文本和数千美元来训练这个模型,沃尔顿不需要重新创建任何一个。

 

相反,他使用了从chooseyourstory.com上抓取的一组小得多的文本,并用完全免费的谷歌Colab对模型进行了微调。

 

机器学习工程正在成为一个真正的生态系统

 

将软件工程看作一个并行的过程,我们通常会看到生态系统以相当标准的模式成熟。

 

一种新的编程语言将出现一些令人兴奋的特性,人们将把它用于特定的用例、研究项目和玩具。在这个阶段,任何使用它的人都必须从头开始构建所有基本的实用程序。

 

最终,社区内的人员将开发将公共实用程序抽象出来的库和项目,直到工具能够稳定地用于生产环境。

 

在这个阶段,使用它来构建软件的工程师并不关心发送HTTP请求或连接数据库,所有这些都是抽象出来的,他们只关注于构建他们的产品。

 

换句话说,Facebook构建React,谷歌构建Angular,工程师们用它们来构建产品。通过迁移学习,机器学习工程正在向前迈进一步。

 

随着OpenAI、谷歌、Facebook和其他技术巨头发布强大的开源模型,机器学习工程师的工具变得更加强大和稳定。

 

机器学习工程师正在使用开源模型和迁移学习来构建产品,而不是用PyTorch或TensorFlow从头开始构建模型,这意味着全新一代的以ML为基础的软件即将诞生。

 

现在,机器学习工程师只需要担心如何将这些模型投入生产。

 

翻译:https://towardsdatascience.com/deep-learning-isnt-hard-anymore-26db0d4749d7

 

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注