- 一种新颖的模型结构,这个结构可能是内部设计的
- 访问大型且、专有的数据集
- 大型模型训练的硬件或资金
这些条件将深度局限于满足它们的少数项目中,阻碍了深度学习的发展。
然而,在过去几年里,情况发生了变化。
在 Cortex,我们看到用户推出了基于深度学习的新一代产品,与以前不同的是,这些产品并非都是使用独一无二的模型架构构建的。
这种增长背后的驱动力是迁移学习。
什么是迁移学习?
广义上讲,迁移学习是指为特定任务训练的模型中积累的知识,例如,识别照片中的花可以迁移到另一个模型中,以帮助对不同的相关任务(如识别某人皮肤上的黑色素瘤)进行预测。
如果你想在迁移学习上有更专业的钻研,Sebastian Ruder 已经写了一本很棒的入门书:https://ruder.io/transfer-learning/ 。
迁移学习有多种方法,但有的方法特别是微调方法被广泛采用。
在这种方法中,团队接受一个预先训练的模型,并移除/重新训练模型的最后一层,以专注于一个新的、相关的任务。例如,AI Dungeon 是一款开放世界的文本冒险游戏,它的人工智能生成的故事非常有说服力:
图片来源:AI Dungeon
值得注意的是,AI Dungeon 不是在谷歌的研究实验室里开发的,它是一个由个人工程师建造的黑客竞技项目。
AI Dungeon 的创建者 Nick Walton 并不是从头开始设计模型,而是通过采用最先进的 NLP 模型 OpenAI 的 GPT-2,然后根据自己选择的冒险文本进行微调获得的。
这项工作之所以有效,是因为在神经网络中,最初的层关注简单的、一般的特征,而最后的层则关注更多特定于任务的分类、回归。Andrew Ng 通过想象一个图像识别模型来可视化这些层和它们的相对特异性水平:
图片来源:Stanford
事实证明,基本层的一般知识通常可以很好地转化为其他任务。在 AI Dungeon 的例子中,GPT-2 对常用的英语有着最先进的理解,它只需要在它的最后一层进行一些再训练,就可以在自己选择的冒险类型中表现出色。
通过这个过程,一个工程师可以在几天内将一个模型部署到一个新的域中,从而获得最新的结果。
为什么迁移学习是下一代 ML 的软件的关键
在前面,我提到了机器学习和深度学习所需要的条件,特别是要有效地使用这些条件。你需要访问一个大的、干净的数据集,你需要能够设计一个有效的模型,你需要训练它的方法。
这意味着在默认情况下,在某些领域或没有某些资源的项目是不可行的。
现在,通过迁移学习,这些瓶颈正在消除:
1.小数据集不再是瓶颈
深度学习通常需要大量的标记数据,然而在许多领域中,这么多数据根本不存在。迁移学习可以解决这个问题。
例如,哈佛医学院下属的一个研究小组最近部署了一个模型,该模型可以「根据胸片预测长期死亡率,包括非癌症死亡」。
图片来源:JAMA Network
有了大约50000个标记图像的数据集,他们没有从零开始训练 CNN 所需的数据。实际上,他们采用了一个预先训练过的 Inception-v4 模型(在超过 1400 万张图像的 ImageNet 数据集上进行训练),并使用了迁移学习和轻微的架构修改来使模型适应他们的数据集。
最后,他们的 CNN 成功地为每位患者仅使用一张胸部图像来生成与患者实际死亡率相关的风险评分。
2.模型可以在几分钟内训练,而不是几天
在海量数据上训练模型不仅有获取大型数据集的问题,还有资源和时间的问题。
例如,当 Google 开发最先进的图像分类模型 exception 时,他们训练了两个版本:一个是 ImageNet 数据集(包含 1400 万张图像),另一个是 JFT 数据集(包含 3.5 亿张图像)。
在 60 NVIDIA K80 GPU 上进行各种优化的训练,运行一个 ImageNet 实验需要 3 天。JFT 的实验花了一个多月的时间。
然而,现在已经发布了预训练的异常模型,团队可以更快地微调自己的版本。
例如,伊利诺伊大学和阿贡国家实验室的一个小组最近训练了一个模型,将星系的图像分类为螺旋状或椭圆形:
资料来源:阿贡计算设备
尽管只有 35000 个标记图像的数据集,他们能够在 8 分钟内使用 NVIDIA GPU 对异常进行微调。
当它在 GPU 上服务时,所得到的模型能够将星系以每分钟超过 20000 个的超人速度进行归类,且准确率高达 99.8% 。
3.训练模型不再像投资一样有风险
即便模型在 60 个 gpu 上训练数月的时间,谷歌可能也不太在乎成本。然而,对于那些没有谷歌规模预算的团队来说,模型训练的价格是一个真正令人担忧的问题。
例如,当 OpenAI 第一次公布 GPT-2 的结果时,他们发布了模型架构,但由于担心有问题,于是并没有发布完整的预训练模型。
作为回应,Brown 的一个团队按照本文所述的架构和训练过程复制了 GPT-2,并调用了他们的模型 OpenGPT-2。他们花了大约 5 万美元去训练,但表现不如 GPT-2。
如果一个模型的性能低于最先进的水平,那么 50000 美元对于任何一个团队来说都是一个巨大的风险,因为他们是在没有大量资金的情况下构建真正的生产软件。
幸运的是,迁移学习大大降低了这一成本。
当 Nick Walton 创建 AI Dungeon 时,他通过微调 GPT-2 来完成。OpenAI 已经投入了大约 27118520 页的文本和数千美元来训练这个模型,而 Walton 不需要重新创建。
相反,他使用了从 chooseyourstory.com 上截取的一组小得多的文本,并在完全免费的 Google Colab 中对模型进行了微调。
机器学习工程正在成为一个真正的生态系统
将软件工程看作一个并行的过程,我们通常会看到生态系统以相当标准的模式「成熟」。
一种新的编程语言将有一些令人兴奋的特性,人们将把它用于专门的用例、研究项目和玩具。在这个阶段,任何使用它的人都必须从头开始构建所有的基本实用程序。
接下来,社区中的人们开发库和项目,将公共实用程序抽象出来,直到工具能够稳定地用于生产。
在这个阶段,使用它来构建软件的工程师并不关心发送 HTTP 请求或连接到数据库,所有这些都是抽象出来的,只关注于构建他们的产品。
换句话说,Facebook 构建 React,Google 构建 Angular,工程师使用它们来构建产品。随着迁移学习的发展,机器学习工程正朝着这一步迈进。
随着 OpenAI、Google、Facebook 和其他科技巨头发布强大的开源模型,机器学习工程师的「工具」变得更加强大和稳定。
机器学习工程师们不再花时间用 PyTorch 或 TensorFlow 从头开始构建模型,而是使用开源模型和迁移学习来构建产品,这意味着全新一代的 ML 驱动软件即将面世。
现在,机器学习工程师只需要担心如何将这些模型投入生产。
注意:如果你对使用经过微调的模型构建软件感兴趣,请查看 Cortex,一个用于部署模型的开源平台:https://github.com/cortexlabs/cortex 。
via:https://towardsdatascience.com/deep-learning-isnt-hard-anymore-26db0d4749d7