一年前,我和几个小伙伴一起开始在构建机器学习API的开源平台Cortex上工作。起初,我们假设所有用户,包括所有把机器学习(ML)运用于生产的公司,都是拥有成熟数据科学团队的大公司。

但我们大错特错了。

一年中,我们看见学生、独立工程师以及小型团队纷纷把模型投入生产。出乎意料,他们提供的通常都是最先进的大型深度学习模型,可用于日常应用程序。一个两人组成的团队最近建立了一个500个GPU推理集群,以支持其应用程序的1万个并发用户。

仅仅在不久之前,只有预算高、数据量大的公司才能做到这样的事情。现在,任何团队都可以做到。这种转变是多种因素共同作用的结果,但其中一个重要因素是迁移学习。

什么是迁移学习

广义上讲,迁移学习是指将经过一项任务训练的深度神经网络的知识“迁移”到训练相关任务的另一个网络的技术。例如,可以使用迁移学习来获取用于对象检测模型,然后使用少量数据对其进行“微调”来检测更具体的事物。

这些技术之所以能起作用是因为深度神经网络的体系结构。网络的低层负责更多的基础知识,而特定任务知识则通常在顶层:


图源:Stanford

较低层训练完后,可以用少量数据微调较高的层。例如,对象检测模型(比如说YOLOv4)进行微调后可以识别具有很小数据集的特定事物(例如车牌)。

在网络之间迁移知识的技术各不相同,但不约而同的是,最近有许多新项目旨在简化这个过程。例如,gpt-2-simple库允许任何人微调GPT-2,还可以使用Python函数生成预测:https://gist.github.com/caleb-kaiser/dd40d16647b1e4cda7545837ea961272。

迁移学习是如何打通机器学习的

大部分团队不会因为缺乏某类知识而无法使用机器学习。如果要构建图像分类器,有许多知名的模型可以使用,使用现代化框架会让训练变得非常简单。对于大多数团队来说,机器学习因其成本因素所以从未被视为一个现实的选择。

让我们用OpenAI的(到目前为止)最佳语言模型GPT-2为例来说明。

如果使用公有云,单就估算GPT-2训练成本就已超过4万美元,除了这一费用,GPT-2还需要训练40GB的文本内容(保守估计超过2000万页),抓取和整理大量文本本身就是一个巨大的项目。这让大多数团队无法训练自己的GPT-2。

但如果只是对其进行微调呢?来看一个相关项目。

AI Dungeon是一款可自行选择的冒险游戏,其风格延续之前的命令游戏地牢爬行者。玩家通过输入指令进行游戏,游戏通过推进冒险作为回应。这款冒险游戏是由训练后的GPT-2模型编写的,你可以编写自己选择的冒险文本:

AI Dungeon是由独立工程师尼克·沃顿开发的,他利用gpt-2-simple和从chooseyourstory.com网站上提取的文本微调GPT。沃尔顿表示微调GPT-2需要30MB的文本和12小时左右的时间来训练DGX-1——大约花费了374.62美元,但做出来的产品效果和AWS的p3dn.24xlarge差不多。

也许大部分团队只能对着4万美元的云服务费和40GB的文本提取量望洋兴叹,但是375美元和30MB即便对小团队来说也不成问题。

迁移学习的应用领域超越了语言模型。在药物发现中,通常没有足够的特定疾病数据来从零开始训练模型。DeepScreening是一个解决此类问题的免费平台,它允许用户上传自己的数据库和微调模型,然后利用该平台来筛选可能会发生反应的化合物库。


图源:unsplash

从零开始训练一个这样的模型超出大多数研究人员的能力范围,但是由于有了迁移学习,突然间人人都可以做到。

新一代深度学习模型取决于迁移学习

必须强调的一点是,尽管笔者目前给出的例子都偏重经济效益,但迁移学习并不是小型团队用来凑数的一个工具,所有团队无论大小都在使用迁移学习来训练深度学习模型。事实上,一些新发布的模型都是专门针对迁移学习的。

还记得GPT-2首次发布时,因其原始内存而霸占各大头版头条,我们以前从未听说过有15亿参数的模型。然而和GPT-3相比则是小巫见大巫了,后者参数量达到1750亿。

除了OpenAI之外,几乎没有哪家公司能训练拥有1750亿个参数的语言模型。即便是部署这么大的模型也存在诸多问题。OpenAI打破了他们发布开源的传统,预训练新模型版本,将GPT-3作为API发行—用户可以使用自己的数据微调GPT-3。

换句话说,GPT-3的庞大让迁移学习不再是训练新任务的一个经济实惠的方法,而是唯一可行的方法。

迁移学习优先方法已经变得越来越普遍。Google刚刚发布的Big Transfer是一个先进计算机视觉模型开源存储库。尽管计算机视觉模型通常要比语言模型小,但它们已经开始追赶了——预训练过的ResNet-152x4接受了1400万张图像的训练,容量为4.1 GB。

顾名思义,Big Transfer旨在鼓励利用这些模型来使用转移学习。作为存储库的一部分,Google还提供了可以轻松微调每个模型的代码。正如下图所示,模型容量会随着时间不断增大(GPT-3会将图表的大小增加10倍):


图源:Microsoft

如果这种趋势持续下去(没有迹象表明这种趋势不会持续),那么迁移学习将成为团队使用前沿深度学习的主要方式。

随着模型变得越来越大,迁移学习使得每个团队都能使用这些模型,投入生产的大型深度学习模型的数量猛增。训练这些模型是一个挑战——它们需要大量空间和内存来进行推理,而且通常无法一次处理多个请求。


图源:unsplash

因为这些模型(GPU / ASIC推断,基于请求的弹性伸缩,spot实例支持),我们已经给Cortex引入了几个主要功能,并且随着模型的扩大,我们将不断添加新的功能。

然而,与让世界上每个工程师都可以使用最先进的深度学习解决问题的潜力相比,基础架构挑战性的难度微不足道。人人可使用的深度学习,已经触手可及。

【编辑推荐】

  1. 深度学习先驱Yann LeCun被骂退推特:你们都很懂,从此我不说话了
  2. 运行在浏览器中的深度学习框架,开源了
  3. 深度学习框架大PK:TNN决战MNN,ncnn依旧经典
  4. 利用Keras中的权重约束减少深度神经网络中的过拟合
  5. 让PyTorch更轻便,这款深度学习框架你值得拥有!GitHub 6.6k星

迁移学习的魔法:任何人都将能使用深度学习相关推荐

  1. 一文讲清楚什么是迁移学习?以及它都用在哪些深度学习场景?

    作者 | Jason Brownlee 翻译 | AI科技大本营 参与 | 刘畅 迁移学习是机器学习方法之一,它可以把为一个任务开发的模型重新用在另一个不同的任务中,并作为另一个任务模型的起点. 这在 ...

  2. 人人都要学一点深度学习(1)- 为什么我们需要它

    人人都要学一点深度学习(1)- 为什么我们需要它 版权声明 本文由@leftnoteasy发布于 http://leftnoteasy.cnblogs.com, 如需全文转载或有其他问题请联系whee ...

  3. 深度学习的过去、当下与未来!深度学习三巨头发文展望

    点击上方"机器学习与生成对抗网络",关注星标 获取有趣.好玩的前沿干货! 来源:ACM 新智元 编辑:Priscilla Emil [导读]2018图灵奖获得者Yoshua Ben ...

  4. 深度学习很难?一文读懂深度学习!

    深度学习是机器学习(人工智能机制)的一个特定子集.它的编程框架看起来非常复杂,但其实思路很好理解,无非就是"以人脑为模型实现计算机系统智能化." 在过去的十几年里,研发人员进行了很 ...

  5. 人工神经网络理论、设计及应用_TensorFlow深度学习应用实践:教你如何掌握深度学习模型及应用...

    前言 通过TensorFlow图像处理,全面掌握深度学习模型及应用. 全面深入讲解反馈神经网络和卷积神经网络理论体系. 结合深度学习实际案例的实现,掌握TensorFlow程序设计方法和技巧. 着重深 ...

  6. 深度学习笔记第一门课第一周:深度学习引言

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  7. 【深度学习】——利用pytorch搭建一个完整的深度学习项目(构建模型、加载数据集、参数配置、训练、模型保存、预测)

    目录 一.深度学习项目的基本构成 二.实战(猫狗分类) 1.数据集下载 2.dataset.py文件 3.model.py 4.config.py 5.predict.py 一.深度学习项目的基本构成 ...

  8. 【人工智能】【深度学习】初学者如何选出最适合自己深度学习框架?

    无论是对于深度学习相关专业的初学者,还是已经在企业和组织中从事工业场景应用和研发的开发者来说,选择一个适合自己,适合业务场景需求的深度学习框架显得尤为重要.下边对现有深度框架做一个全面的阐述及解答. ...

  9. python深度学习include框架_《用Python实现深度学习框架》上市

    朋友们,<用Python实现深度学习框架>已经由人民邮电出版社出版上市了.在这本书中,我们带领读者仅用Python+Numpy实现一个基于计算图的深度学习框架MatrixSlow.本书讲解 ...

最新文章

  1. AI开发难?请收下华为云AI大拿秘籍一份!
  2. 我的第二故乡 - 长沙
  3. 双稳态电路的两个稳定状态是什么_干货|常见的脉冲电路到底有何用途和特点?终于了解了!|脉冲|晶体管|双稳|单稳|振荡器...
  4. 数学物理方法pdf_《数学物理方法》周明儒(第2版)补充材料与习题详解
  5. IDEA 中的.iml文件和.idea文件夹 ( 隐藏方式 )
  6. 【设计模式 00】设计模式的六大原则
  7. java 如何判定消息已在队列_【05期】消息队列中,如何保证消息的顺序性?
  8. easyui datagrid加载数据的三种方式
  9. paip.ecshop邮件模板修改一个密码找回 一个留言回复
  10. linux中怎么粘贴复制文件路径,如何在Linux中复制文件和目录
  11. 计算机网络多项式的定义,多项式的定义是什么
  12. 一比二购增加您指定商品降价时,给您发送邮件通知的功能
  13. android 比较符合android构架,优雅的定义全局变量
  14. 计算机图形学三(补充):重心坐标(barycentric coordinates)详解及其作用
  15. uniapp手机端图片缓存方案
  16. STC15W408AS的485串口实现自发自收
  17. 顶会速递 | ICLR 2020录用论文全集
  18. Bee+创始人贾凡出席“粤港澳大湾区青年论坛”并做主题发言
  19. python内置函数布尔值bool用法详解
  20. 辗转相除法 冒泡排序

热门文章

  1. Leetcode刷题 463题:岛屿的周长(基于Java语言)
  2. 2021-03-18TOMCAT的非双亲委派机制众家辨解
  3. Eclipse 之 EasyExplore 插件
  4. c语言奇偶判断程序,求助 奇偶校验的C语言编程
  5. Linux运行cat进程,linux下如何使用某个用户启动某个进程?
  6. Jmeter学习记录的知识点
  7. 《强化学习周刊》第6期:强化学习应用之推荐系统
  8. 世界卫生组织发布新冠密切接触者追踪技术应用伦理指南,智源《AI伦理译丛》发布中文版...
  9. 字节跳动:基于H.266/VVC的移动平台8K超高清实时解码实践 | QCon
  10. 产品经理一定要懂得“借力”