写点什么

深度学习未来的三种范式

2020 年 10 月 15 日

深度学习未来的三种范式

深度学习是一个广阔的领域,它围绕着一种形态由数百万甚至数十亿个变量决定并不断变化的算法——神经网络。似乎每隔一天就有大量的新方法和新技术被提出来。不过,总的来说,现代深度学习可以分为三种基本的学习范式。每一种都有自己的学习方法和理念,提升了机器学习的能力,扩大了其范围。


本文最初发布于 Towards Data Science 博客,由 InfoQ 中文站翻译并分享。


深度学习是一个广阔的领域,它围绕着一种形态由数百万甚至数十亿个变量决定并不断变化的算法——神经网络。似乎每隔一天就有大量的新方法和新技术被提出来。


不过,总的来说,现代深度学习可以分为三种基本的学习范式。每一种都有自己的学习方法和理念,提升了机器学习的能力,扩大了其范围。


  • 混合学习——现代深度学习方法如何跨越监督学习和非监督学习之间的边界,以适应大量未使用的无标签数据?

  • 复合学习——如何以创造性的方法将不同的模型或组件连接起来,以生成一个大于各部分之和的复合模型?

  • 简化学习——出于性能和部署目的,如何减少模型的规模和信息流,同时保持相同或更强的预测能力?


深度学习的未来在于这三种学习模式,而且它们彼此之间密切相关。


混合学习


这种范式试图跨越监督学习和非监督学习之间的界限。由于有标签数据缺乏且成本高,所以常常在业务上下文中使用。从本质上说,混合学习是对下面这个问题的回答:


如何使用监督方法解决非监督问题?


首先,半监督学习在机器学习领域取得了良好的进展,因为它只需要很少的有标签数据就能够在监督问题上有非常好的表现。例如,一个设计良好的半监督式 GAN(生成式对抗网络)只需要25个训练样本,就能在 MNIST 数据集上获得了超过 90%的准确率。


半监督学习是针对有大量无监督数据和少量有监督数据的数据集而设计的。传统上,监督学习模型只在一部分数据上进行训练,无监督模型则在另一部分数据上进行训练,而半监督模型则可以将有标签数据与从无标签数据中提取的见解结合起来。



半监督 GAN(简称 SGAN)是对标准生成式对抗网络模型的改写。判别器输出 0/1 表示图像是否生成,它也输出项的类别(多输出学习)。


这是基于这样一种想法,即通过判别器学习区分真实的和生成的图像,它能够学习它们的结构而不需要具体的标签。通过少量标签数据的额外增强,半监督模型就可以在少量监督数据的情况下实现最高的性能。


要了解关于 SGAN 和半监督学习的更多内容,请查看这里:


https://towardsdatascience.com/supervised-learning-but-a-lot-better-semi-supervised-learning-a42dff534781


GAN 还参与了混合学习的另一个领域——自监督学习,在这种学习中,非监督问题被明确地定义为监督问题。GAN 通过引入生成器人为地创建监督数据;创建标签来识别真实/生成的图像。在无监督的前提下,创建了一个有监督的任务。


或者,考虑使用编码器-解码器压缩模型。在最简单的形式中,它们是中间有少量节点(表示某种瓶颈压缩形式)的神经网络。两端分别是编码器和解码器。



网络被训练成产生与输入向量相同的输出(从无监督数据人为地创建监督任务)。由于故意在中间设置了瓶颈,所以网络不会被动地传递信息;相反,它必须找到最好的方法将输入内容保存到一个小的单元中,这样,解码器就可以再次合理地对它解码。


训练完成后,将编码器和解码器分开,用于压缩或编码数据的接收端,以极小的形式传输信息,而又几乎不丢失数据。它们还可以用来降低数据的维数。


另一个例子,考虑一个大型的文本集(可能是来自数字平台的评论)。通过一些聚类或流形学习(manifold learning)方法,我们可以为文本集生成聚类标签,然后用它们作为标签(如果聚类做得好的话)。


在对每个类进行解释之后(例如,类 A 表示对产品的抱怨,类 B 表示积极的反馈,等等),可以使用像BERT这样的深层 NLP 架构将新文本分类到这些类中,所有这些都是使用了完全未标记的数据,并将人的参与降至最低。


这又是一个将非监督任务转换为监督任务的有趣应用。在一个绝大多数数据都是非监督数据的时代,通过混合学习,在监督学习和非监督学习之间创造性地架起一座桥梁,具有巨大的价值和潜力。


复合学习


复合学习为的是利用几种模式的知识,而不是一种。该方法认为,通过独特的组合或信息注入——包括静态和动态——与单一模式相比,深度学习能够在理解和性能方面不断地深入。


迁移学习是复合学习的一个明显的例子,它的前提是模型的权重可以从一个在类似的任务上预先训练过的模型中借用,然后在特定任务上进行微调。像Inception或 VGG-6 这样的预训练模型,其结构和权重被设计成可以区分几种不同类别的图像。


如果我要训练一个神经网络来识别动物(猫、狗等),我不会从头开始训练卷积神经网络,因为要达到不错的效果需要太长时间。相反,我会使用一个预先训练过的模型(比如 Inception,它已经存储了图像识别的基础知识),在数据集上额外进行几个 epoch 的训练。


类似地,在 NLP 神经网络中,词嵌入会根据单词之间的关系在一个嵌入空间中将单词映射到实际距离较近的其他单词(例如,“apple”和“orange”的距离比“apple”和“truck”的距离更小)。像 GloVe 这样预先训练好的嵌入可以放到神经网络中,从单词到有意义的数字化实体的有效映射开始。


较为隐秘的一点是,竞争也能促进知识增长。首先,生成式对抗网络借鉴了复合学习范式,从根本上使两个神经网络相互竞争。生成器的目标是欺骗判别器,而判别器的目标是不被骗。


下文会将模型之间的竞争称为“对抗性学习”,不要与另一种设计恶意输入并利用模型弱决策边界的对抗性学习相混淆。


对抗性学习可以增强模型,通常是不同类型的模型,在对抗性学习中,一个模型的性能可以用其他模型的性能来表示。在对抗性学习领域还有很多研究需要做,生成式对抗网络是这个子领域唯一突出的创新。


另一方面,竞争性学习与对抗性学习类似,但是逐节点执行的:节点竞争对输入数据的一个子集作出响应的权利。竞争性学习是在一个“竞争层”中实现的,在这个“竞争层”中,除了某些权重随机分布外,神经元都是相同的。


将每个神经元的权值向量与输入向量进行比较,然后激活(output = 1)相似度最高的“赢者全拿”神经元,其余神经元“不激活”(output = 0),这种无监督技术是自组织映射特征发现的核心组成部分。


复合学习的另一个有趣的例子是神经结构搜索。简而言之,在强化学习环境中,神经网络(通常是 RNN)通过学习为数据集生成最好的神经网络——算法为你找出最好的架构!


你可以点击这里了解更多理论知识:https://towardsdatascience.com/if-youre-hyped-about-gpt-3-writing-code-you-haven-t-heard-of-nas-19c8c30fcc8a


点击这里查看其 Python 实现:https://towardsdatascience.com/automl-creating-top-performing-neural-networks-without-defining-architectures-c7d3b08cddc


集成(Ensemble)方法也是一种重要的复合学习方法。深度集成方法已经被证明非常有效,而且,端到端模型叠加,像编码器和解码器,已经变得越来越流行。


复合学习的主要目的是找出在不同模型之间建立联系的独特方法。它的前提是:


单个模型,即使是一个非常大的模型,其性能也不如几个小模型/组件,其中每一个都被委派专门处理一部分任务。


例如,考虑为一家餐馆构建一个聊天机器人的任务。



我们可以将其划分为三个独立的部分:寒暄/闲聊、信息检索和动作,并针对每个部分单独设计一个模型。或者,我们可以委托一个模型来执行所有这三个任务。



复合模型性能更好,同时占用的空间更少,这应该没什么可奇怪的。此外,这些非线性拓扑可以用Keras函数式API这样的工具轻松构建。


为了处理越来越多样化的数据类型,如视频和三维数据,研究人员必须建立创造性的复合模型。


点击这里阅读更多关于复合学习及其未来展望的内容:https://medium.com/analytics-vidhya/compositional-learning-is-the-future-of-machine-learning-22b56ad09edc


简化学习


模型的规模,尤其是在 NLP 领域(深度学习研究的中心),正在大幅增长。最新的 GPT-3 模型有 1750 亿个参数。把它和BERT比较就像把木星和蚊子比较一样(并不夸张)。未来,深度学习的模型会更大吗?



很可能不会。诚然,GPT-3 非常强大,但历史一再表明,“成功的科学”是那些对人类影响最大的科学。当学术偏离现实太远时,通常会淡出人们的视线。这就是神经网络在 20 世纪末期被短暂遗忘的原因,因为可用的数据太少了,以至于这个想法,无论多么巧妙,都是没用的。


GPT-3 是另一种语言模型,它可以写出令人信服的文本。它的应用在哪里?是的,它可以生成查询的答案。不过,还有更高效的方法来实现这一点(例如,遍历一个知识图,并使用一个更小的模型如 BERT 来输出答案)。


考虑到计算能力的枯竭,GPT-3 的庞大规模(更不用说更大的模型)似乎是不可行的,或者是不必要的。


“摩尔定律有点过时了。”——微软首席执行官 Satya Nadella


相反,我们正在走向一个嵌入式人工智能的世界,智能冰箱可以自动订购食品杂货,无人机可以自行导航飞遍整个城市。强大的机器学习方法应该能够下载到个人电脑、手机和小型芯片上。


这就需要轻量级人工智能:在保持性能的同时使神经网络更小。


事实证明,在深度学习研究中,几乎所有的东西都与直接或间接地减少必要参数的数量有关,而这又与提高泛化能力和性能紧密相关。例如,卷积层的引入大大减少了神经网络处理图像所需的参数数量。递归层在使用相同权值的同时融入了时间的概念,使得神经网络能够以更少的参数更好地处理序列。


嵌入层显式地将实体映射到具有物理意义的数值,这样负担就不会落在其他参数上。有一种解释说,Dropout层在对输入的某些部分进行操作时会显式地屏蔽参数。L1/L2正则化确保网络利用了所有的参数,而且每个参数都不会太大,并最大化了每个参数的信息价值。


随着专用层的建立,网络对更复杂、更大数据的要求越来越少。其他最新方法明确地寻求简化网络。


神经网络剪枝试图去除对网络输出没有价值的突触和神经元。通过剪枝,网络可以在去除大部分网络节点的情况下保持其性能。



其他方法,如Patient Knowledge Distillation,可以将大型语言模型压缩成可下载到用户手机上的形式。对于支撑谷歌翻译的谷歌神经机器翻译(GNMT)系统来说,这种考虑是有必要的,该系统需要创建一个能够离线访问的高性能翻译服务。


本质上讲,简化学习以部署为中心进行设计。这就是为什么大多数关于简化学习的研究都来自于公司的研究部门。以部署为中心的设计不能盲目地遵循数据集上的性能指标,而要关注模型部署时的潜在问题。


例如,前面提到的对抗性输入是设计用来欺骗网络的恶意输入。可以用喷漆或贴纸来欺骗自动驾驶汽车,使其远远超过限速。负责任的简化学习不仅是使模型足够轻量化,而且要确保它能够适应数据集中没有表示出的极端情况。


在深度学习研究中,简化学习得到的关注最少,因为“我们成功地在可行的架构规模下实现了良好的性能”远不如“我们利用一个拥有无数参数的架构实现了最先进的性能”那么吸引人。


不可避免地,当对更高百分比的追求消失时,正如创新的历史所显示的那样,简化学习——实际上就是实用的学习——将得到更多它应该得到的关注。


总 结


  • 混合学习试图跨越监督学习和非监督学习的边界。像半监督和自监督学习这样的方法能够从无标签数据中提取有价值的见解,当无监督数据的数量呈指数增长时,这些见解就变得非常有价值。

  • 随着任务变得越来越复杂,复合学习将一个任务分解为几个更简单的组件。当这些组件一起工作或者相互对抗,就可以得到一个更强大的模型。

  • 深度学习已经进入炒作阶段,而简化学习还没有得到太多关注,但很快就会出现足够实用并且是以部署为中心的设计。


感谢阅读!


查看英文原文:


https://towardsdatascience.com/the-future-of-deep-learning-can-be-broken-down-into-these-3-learning-paradigms-e7970dec5502


2020 年 10 月 15 日 13:351213
用户头像
陈思 InfoQ编辑

发布了 567 篇内容, 共 192.9 次阅读, 收获喜欢 1120 次。

关注

评论

发布
暂无评论
发现更多内容

四、Docker 网络原理、分类及容器互联配置

悟尘

Docker Kubernetes 容器 k8s Compose

VSCode-aliyun-oss-paste-image 插件安装使用指南

悟尘

vscode Paste-image

使用Typora + PicGo 图床 + jsDelivr CDN实现高效 Markdown 创作

悟尘

Typora PicGo iPic jsDelivr CDN

曾国藩家书嘉言钞(六)

熊小北同学

曾国藩 曾国藩家书 嘉言钞

七、Docker Compose 入门实践

悟尘

Docker Kubernetes 容器 k8s Compose

附录1、Docker 常用命令及示例

悟尘

Docker 容器

长假将至,推荐两个好东西

池建强

算法 视觉笔记

Netty 源码解析(三): Netty 的 Future 和 Promise

猿灯塔

从少儿编程讲讲开发行业的大趋势

kimmking

在线教育 少儿编程

八、Kubernetes 入门实践

悟尘

Docker Kubernetes 容器 k8s Compose

Hexo-deployer-cos-cdn 插件安装使用指南

悟尘

Hexo COS CDN Hexo-deployer-cos-cdn

Hexo-admonition 插件安装使用指南

悟尘

Hexo Hexo-admonition Admonition

游戏夜读 | 设计师的数据模型

game1night

读 Guide to Java String Pool

shengjk1

Java string pool

写在开头

杨友峰

Java 期现

Redis高可用-哨兵模式配置

for

redis 高可用 主从配置 redis高可用 redis哨兵模式

告诉你一个学习编程的诀窍(建议收藏)

ithuangqing

学习 编程 自学编程

源码分析 Vector 和 ArrayList

张sir

Java 源码 collection

意想不到的收获哦

南辞

附录3、Docker-compose 命令使用指南

悟尘

Docker Docker-compose

高性能交易系统设计原理

廖雪峰

架构

附录2、Dockerfile 参考及最佳实践

悟尘

Docker Dockerfile

Node.js 必知必会(安装配置、应用实例及同步控制)

悟尘

node.js

为什么说此前的WiFi安全方案都是小弟?

石君

wifi 无线网络 无线网络安全 Wi-Fi安全

Netty 源码解析(二):Netty 的 Channel

猿灯塔

Netty

程序员到底应该学习什么语言好?

页面仔小杨

五、Docker 数据持久化存储与性能调优

悟尘

Docker 容器 k8s Compose kubernet

六、基于多阶段构建减小镜像体积降低复杂度

悟尘

Docker Kubernetes 容器 k8s Compose

H5功能足够强大,为什么还要微信小程序?

顾强

微信小程序 移动应用

附录4、Docker-compose 配置文件编写指南

悟尘

Docker Docker-compose

spring-cloud-stream 集成 rocketmq

再见孙悟空

RocketMQ Spring Cloud

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

深度学习未来的三种范式-InfoQ