喜欢刨根问底的读者们会问,AI 是如何走到这一步的?
02
大算力,大数据,
大力出奇迹
2006 年,杰弗里·辛顿(Geoffrey Hinton)在 science 期刊上发表了重要的论文《Reducing the dimensionality of data with neural.NETworks》,提出深度信念网络(Deep Belief Networks,DBNs),「深度学习」正式诞生,基于人工神经网络的第三次 AI 发展浪潮开始了,且一直延续至今 。
和前两次浪潮不同的是,当下计算机性能已经能让大规模的人工神经网络模拟得以成为现实 。在 1957 年,罗森布拉特用 IBM 704 去仿真感知机,每秒完成 1.2 万次浮点加法,而如今超级计算机速度是 IBM 704 的 10 万亿倍以上 。
此外,个人计算机 GPU 近些年发展迅猛,尽管 GPU 的初衷是为了加速 3D 图形计算,但通用 GPU 的计算模式正好匹配了神经网络并行计算的需求特点,从而进一步推动了神经网络模型的发展 。
除了算力之外,限制前两次 AI 浪潮发展的另一主要因素就是数据的缺乏 。
在深度学习理论模型提出之后,最早之一意识到了 AI 学科发展的数据钳制,并着手去解决的是华人 AI 科学家李飞飞 。
年轻的李飞飞以坚韧不拔的大无畏精神,推动完成了一个超大规模的开源图片标注数据库,这就是著名的 Image Net 项目 。在 2009 年正式发布时,Image Net 有超过 1000 万数据,两万多个类别 。
2010 年开始,Image Net 大规模视觉识别挑战赛(ILSVCR)开始举办,全世界图像领域深度学习的专家们同台竞技和交流,从此拉开了计算机视觉的新篇章 。
虽然本文主要是关注自然语言大模型的前世今生的,而 Image Net 完全是图像领域的工作 。但是,Image Net 的出现和发展给了自然语言 AI 模型研究一个很重要的启发 。这就是图像领域深度学习的预训练概念 。
大家都知道,「深度学习」顾名思义,就是具有很多层级的神经网络模型 。现代神经网络模型的网络结构层数很深,动则几百万上千万参数量 。而这些神经网络模型在能做特定任务之前,都是需要经过「训练」,即根据标注好的特定训练数据去反复调整模型里的参数,最后所有参数调整到位,模型能匹配训练数据集的输入和输出 。
那么,问题来了,要调整深度学习神经网络模型里那成千万的参数量,如果训练数据少了,肯定很难调整到位 。这就好比一个内部齿轮复杂精密的新机器,如果只稍微动一下,内部能牵扯到的齿轮机构说不定都很少,达不到磨合的目的;只有大规模长时间运转起来,内部的齿轮才能全速转起来,互相磨合好 。
但是,那些特定的 AI 任务往往没有那么多训练数据,这怎么办?
非常值得庆幸的是,AI 科学家研究发现了深度学习网络一个有趣的特性,对于图像领域的深度学习神经网络而言,不同层级的神经元学习到的是不同逻辑层级的图像特征!
文章插图
如上图所示,若将训练好的网络每层神经元学习到的特征可视化,会发现最底层的神经元学习到的是线段等特征,第二层学到的是人脸各个五官的特征,第三层学到的是人脸轮廓的特征,这三层构成了人脸特征的逻辑层级结构 。神经网络越底层的特征越基础抽象,比如什么边角弧线等,而越往上层,就具体和任务相关 。
一个训练好的深度学习网络的内部参数,在底层体现了通用和基础的特征,而越到高层,越和特定任务相关 。这是深度学习神经网络一个特别棒的特性 。
人们开始动脑筋了,既然是这样,那么是不是可以先用标准的大数据集比如 Image Net 来做深度学习网络的「预训练」呢? 反正那么多层的神经网络里,大多数的层级都和特定任务关系不大,我们只需要把通用大数据预训练得到的网络模型结果,再结合任务相关的那点可怜的标注数据去微调(Fine-tuning)高层的网络参数,使得高层参数输出更匹配当前领域的任务,就 OK 了 。
这样一来,原本因为数据不足而无法训练的特定任务也能解决了 。即便任务的训练数据不缺,先通过预训练过程也能极大的加快特定任务训练的完成速度 。预训练这种通吃的解决方案人见人爱,很快在图像处理领域广泛流行开来 。
既然在图像处理领域的深度学习里预训练这么管用,搞自然语言处理 AI 的同学们自然也会在心里想,为什么不在自然语言处理领域里做预训练这么香的事情呢?
推荐阅读
- 人工智能ChatGPT爆火背后:以后跟你一起上网的没有真人了?
- “怪胎”ChatGPT的前世今生,以及未来
- 什么是AOP,AOP能做什么?AOP的特点,Spring AOP的实现
- Python:基于 RGB-D 图像的点云计算
- 聊聊 SpringBoot3 的 Micrometer Tracing
- 盘点12个Vue 3的高颜值UI组件库
- 火爆全网的 ChatGPT,还干不掉 Google 搜索
- 为什么选择 AWS 作为“架构完善的框架”?
- 我误解了分布式系统中的可伸缩性
- 我们都差点被ChatGPT骗了,但这也许是好事儿
