从爆火的chatGPT讲起: 自然语言生成式AI的前世今生, 你想了解的一...
共 20841字,需浏览 42分钟
·
2023-05-27 15:31
(全文约1.8万字)
前言, 爆火的AIGC
AIGC在这几个月成了一个大热的话题.
颇有些风水轮流转的感觉, 如同年初大火特火的web3一样, AIGC是现在的当红炸子鸡, 创业投资讨论里如果不带点AIGC就是妥妥的落伍.
不久之前, 备受关注的开源AI绘画模型Stable Diuffusion推出了2.0版, 引起了更多关注和焦虑: "我连1.0的门道都还没摸清楚, 怎么就2.0了啊"
没有跟上AIGC的步伐, 仿佛就要被世界所抛弃.
有趣的是, 作者前面看到一些AIGC文章, 基本都是围绕着最近大热的AI绘画来讨论的.
当然了, 生成式AI绘画模型的突破是一件值得大书特书的事情, 在作者上一篇文章<AI绘画何以突飞猛进?从历史到技术突破,一文读懂火爆的AI绘画发展史>里也已经做了深入的探讨.
但是, 必须指出的是, 当下在AI绘画或者AI生成其他形式内容的大模型里, 对自然语言的理解是一个首要的关键环节, 而之所以AI绘画能火爆出圈, 有至少一半的功劳必须归结于, 当下最新的AI绘画模型可以直接"理解"用户的语言输入,以及在模型内部里把语言内容理解和图像内容理解紧密结合起来.
生成式AI就像人工智能皇冠上的一颗明珠, 不是唯一的一颗, 但绝对璀璨耀眼. 尽管AI在信息分析处理等各个方面都发挥着重要作用, 但"生成式AI"的出现无疑影响更深远: 生成即创造. 生成式AI的突破, 意味着AI开始走向了创造新内容世界的大道.
罗马不是一天建成的. 就让我们一起回顾和尝试理解, 这激动人心的一切究竟是怎么发生的.
从chatGPT的横空出世讲起
在回顾历史前, 首先要跟风提一下几天前发布的chatGPT, 一个绝对神仙级别的自然语言生成式AI.
chatGPT诞生的重要意义恐怕不亚于Stable Diffusion等AI绘画生成模型的出现. 有兴趣的朋友可以感受去chat.openai.com 感受一下这个当今最牛逼没有之一的自然语言问答式AI的巨大威力.
chatGPT是明星人工智能公司OpenAI的GPT自然语言生成式模型的最新衍生品. 在这之前, 坊间已经传闻OpenAI的下一代自然语言生成模型GPT4即将出现. 而且, 有一个让人震惊的江湖传言: GPT4据称通过了图灵测试!
图灵测试究竟是什么意思? 简单的说, 就是隔着一个小黑屋问各种话题, 然后是否能分辨小黑屋里回答问题的究竟是机器还是人类. 如果无法辨别, 就就说明了机器具有和人一样等级的智能, 通过了图灵测试.
迄今为止, 还没有AI模型能真正通过图灵测试. 看来临界点已经到, 笔者都迫不及待的期待GPT4的真正推出了.
谁知道, 还没等来GPT4, 衍生自GPT3.5的chatGPT却先来了.
顾名思义, chatGPT就是"聊天GPT", 以对话的方式交互, 用户问问题, 它来回答.
咋听起来, 似乎也没有很新鲜. 但情况是, chatGPT的智能化远远超出了那些它的聊天AI前辈们.
好比StableDiffusion/Midjourney也就是AI绘画,但所能生成的AI绘画质量甩了前辈无数条街.
网上有越来越多的文章开始安利chatGPT, 不过多是拿了外网英文问答的截图, 其实chatGPT可以直接上中文!.
先随意上几个问答大家感受一下:
问中国菜, 算是送分题:
问从希格玛大厦如何去天安门, 开始有点难度了, 回答非常正确!
(要知道, 这可不是某个特地为了中文导航优化的AI, chatGPT是从它通用的知识积累里得到的理解)
对龙珠的剧情理解, 回答中规中矩, 80分+, 本来作者期望它能讲得更详细些:
吃货国家问题, 有点刁钻了:
广东人真的喜欢吃甜的? 这个问题很多中国人都不一定答得上:
美帝问题来一问 (看来chatGPT果然经过了特别设置 过滤了敏感问题):
另外, 可以直接问chatGPT怎么写代码, 比如写一个俄罗斯方块:
没有悬念, 代码完全正确.
而更有想象力的, 是让chatGPT来生成AI绘画的输入关键词! 让AI自己来指导AI作画, 多美妙的主意.
这仅仅是一个开始, 随着chatGPT在全网的各种自来水安利, 相信还有更多古灵精怪的玩法不断被网友们挖掘出来.
chatGPT的回答给人的感觉是, 这是一个特别靠谱的聊天AI, 真正的上知天文下知地理, 最关键的是, 它不胡说八道! 正因为它回答的准确性, 看起来chatGPT有了替代通用搜索引擎Google的可能性.
OpenAI 的 CEO 萨姆・阿尔特曼(Sam Altman)对 ChatGPT 的未来发展表示很有信心. 他在推特上说, 语言接口是未来的一个发展方向, OpenAI只是一个先行者, 相信很快大家就能用上真正智能的提供建议的AI助手了.
测试版的chatGPT仍有一些缺点,但这都只是战术级别的; 在战略上, chatGPT的前景已经相当令人期待, 特别是OpenAI下一代GPT4加持下的chatGPT, 其能力恐怕更加突破天际.
我们也许正在经历又一个AI突破的时刻, 一如2022年初到年中AI绘画的势如破竹. 而这次, 则是人类通用信息生成的突破!
喜欢刨根问底的读者们会问, AI是如何走到这一步的?
让我们远离现实的喧嚣, 把目光投回到那有点遥远的过去吧.
人工神经网络的起源, 在那有些遥远的年代
从某种意义上, 语言表达是人类信息和思想交流的窗口. 人类并没有第七感, 也没有脑电波直达的交流(目前没有:P ), 信息沟通都通过口头语言和书面语言来传递.
(当然, 可以说还有一些手势和肢体表达, 但信息量基本可以忽略不计)
针对语言信息的人工智能处理 , 或者学术一点, "自然语言处理NLP", 是科学家们最早研究, 人工智能最早发源的领域.
远在1956年, 美国的达特茅斯学院举行了一次具有传奇色彩的学术会议(Dartmouth Conference), 计算机专家约翰·麦卡锡提出了“人工智能”一词。这被广泛认为是人工智能正式诞生的日子.
1956年的达特茅斯会议, 十位参与的科学家, AI之父们.
这个会议很有意思, 事后诸葛亮的我们, 一起来看看这个会议7个特别有前瞻性的主要议题:
1 Automatic Computer 自动计算机:
"如果一台机器可以完成一项工作,那么就可以对一台自动计算器进行编程来模拟这台机器。目前计算机的速度和内存容量可能不足以模拟人脑的许多高级功能,但主要的障碍不是缺乏机器容量,而是我们无法编写充分利用我们所拥有的机能。"
现代第一台电子计算机ENIAC的发明日期是1946年2月14日, 也就是说, 当时距离第一台电子计算机的诞生仅仅过去了10年. 先驱们的遗憾是当时高级程序技术还基本没有, 无法充分发挥计算机的作用:)
2 How can a Computer be Programmed to Use a Language 如何对计算机进行编程以使用一种语言:
""可以推测,人类思想的很大一部分是根据推理规则和猜想规则来操纵词语的。从这个观点来看,形成泛化就是承认一个新词和一些规则,其中包含这个新词的句子暗示和被其他句子暗示。这个想法从来没有被非常精确地表述过,也没有例子。"
先驱们对语言文字的机器理解充满了预期, 而直到现在, 有了GPT这些当超大规模的自然语言AI模型, 我们才堪堪敢说, 先驱们的期望逐渐在实现, 计算机开始真正理解了语言.
3 Neuron Nets 神经网络:
"一组(假设的)神经元如何排列以形成概念。很多当下的计算机科学家等人已经就这个问题做了大量的理论和实验工作。已经获得了部分结果,但这个问题还需要更多的理论工作。"
神经网络! 在AI概念诞生之时, 先驱们就意识到了, 人工神经网络的概念将要在AI里发挥重要作用
4 Theory of the Size of a Calculation计算规模理论:
"如果给一个很好的问题(一个可以机械地测试所提出的答案是否是有效答案的问题),解决它的一种方法是按顺序尝试所有可能的答案。这种方法是有效的,要排除它,必须有一些计算效率的标准。一些考虑将表明,为了获得计算的效率的度量,必须手头有一种测量计算设备复杂性的方法,如果有函数复杂性理论,这反过来也可以做到。香农和麦卡锡已经获得了关于这个问题的一些部分结果。"
计算机科学里重要的计算复杂性理论, 就是这个时间点被提出和发展起来的.
5 Self-improvement 自我改进
"也许真正智能的机器会进行自我改进的活动。已经提出了一些这样做的方案,值得进一步研究。这个问题似乎也可以抽象地研究。"
这是一个很有挑战性的问题, 用现在的观点可以换个说法: AI是否能实现自我编程自我提升? 或许很快就可以了.
6 Abstractions 抽象
"许多类型的“抽象”可以被清晰地定义,而其他一些类型则不那么清晰。直接尝试对这些进行分类并描述从感官和其他数据中形成抽象的机器方法似乎是值得的。"
通过机器智能来对各种信息自动加以分类和抽象, 这正是当今各种牛逼闪闪的AI大模型正在达成的成就.
7 Randomness and Creativity随机性和创造性:
"一个相当吸引人但显然是不完整的猜想是,创造性思维和缺乏想象力的有效思维之间的区别在于注入了某种随机性。随机性必须由直觉引导才能有效。换句话说,受过教育的猜测或直觉在其他有序的思维中包括了受控的随机性。"
先驱们非常直观的理解, 是否有随机性是创造性思维和非创造性的分析思维的重要区别.
而随机性需要由一些"直觉"引导, 或者说真正的AI需要一种"受控的随机性".
其实, 当前AI绘画生成机制里很好践行了这个洞察: 在每一幅AI绘画背后都是一个AI模型(比如Stable Diffusion) + 一个确定的输入(一组关键词) + 一个系统生成的随机数. 同样的"关键词组+随机数"输入到AI模型里, 必然生成一个完全相同的AI绘画作品. 这不就是"受控的随机性"嘛
达特茅斯会议的参会先驱们都是大神, 也值得在这里简单提一下:
约翰·麦卡锡(John McCarthy), 率先提出了AI的概念, 开发了码农熟知的程序语言Lisp. 有意思的是, Lisp是在1958年发明的, 看看会议的第一个议题, 抱怨没有好用的编程语言可用, 大牛的态度就是没有趁手的工具吗? 那我就自己发明一个!
约翰·麦卡锡在1971年获得了图灵奖.
马文·明斯基(Marvin Minsky), 在1951年在普林斯顿大学读博士的时候, 建立了第一个神经网络自学习机器SNARC (Stochastic Neural Analog ReinforcementCalculator 随机神经模拟强化计算器), 这是第一个真正意义上的人工神经网络硬件, 用3000个真空管来模拟了40个神经元的信号传递.
明斯基的博士论文也正是神经网络. 有趣的是, 明斯基拿的是数学系博士学位. 当时有人挑刺说神经网络的研究能算数学? 而当时支持明斯基的正是大名鼎鼎的现代计算机之父冯.诺伊曼. 冯.诺伊曼说: 现在不算, 但很快就得算了.
明斯基在1969年获得了图灵奖.
克劳德·香农(Claude Shannon), 通信科学鼻祖, 大名鼎鼎的香农定理是所有通信制式最基本的原理. 和计算机鼻祖并驾齐驱的香农同学就不需要图灵奖了, 因为在通信领域有以他的名字命名的的最高奖香农奖:)
赫伯特·西蒙(Herbert Simon)和艾伦·纽厄尔(Allen Newell) 在达特茅斯会议上报告了世界上第一个AI项目“逻辑理论家(the Logic Theorist)”.
这个AI证明了<数学原理>第二章52个定理的38个, 甚至找到了比原教材更优美的证明. 两人合作提出了搜索式推理的方法,开创了人工智能除神经网络学派之外的第二条路线: 符号主义学派。这两位在1975年一起拿到了图灵奖.
题外话是,这两位牛和当时数学系主任、第一届图灵奖获得者阿兰.珀里思(AlanPerlis)一起创立了卡内基梅隆大学的计算机系,从此,CMU成为计算机学科的重镇.
在达特茅斯会议之前, 还有一个1955年的小讨论会议 "学习机讨论会", 在那次讨论会上, 主持人也是神经网络的鼻祖之一的皮茨Pitts做了一个有趣总结:"...一派人企图模拟神经系统(Neuron Nets), 一派人企图模拟心智(mind, 就是上面西蒙的符号派)... 但最终大家的目的一致".
这句眼光毒辣的话, 冥冥之中预示了随后几十年间AI研究"结构V.S.功能"的神经网络派和符号主义派两条路线之争.
潮起又潮落
达特茅斯会议之后, AI进入了一个大时代, 人们惊奇的发现, 计算机居然可以证明数学定理, 学习使用语言. 在众多AI研究方向中, 搜索式推理, 自然语言处理最有影响力.
从1955年到1974年是AI的第一次发展高潮, 大量成功的初代AI程序和研究方向不断出现. AI先驱们非常乐观的预言:
"十年之内,数字计算机将成为国际象棋世界冠军。"(1958年,H. A. Simon,Allen Newell)
"二十年内,机器将能完成人能做到的一切工作。" (1965年,H. A. Simon)
"在三到八年的时间里我们将得到一台具有人类平均智能的机器。" (1970年,Marvin Minsky)
结果呢? 事后诸葛亮看回来, 当然是被啪啪啪的打脸啦.
到了70年代初, AI科学家们逐渐发现, 虽然机器拥有了简单的逻辑推理能力, 但遇到了当时完全无法克服的基础瓶颈, 这些瓶颈基本就是时代的局限:
1) 当时计算机的运算能力问题:
且不说当时最原始的计算机那点可怜巴巴的算力了, 我们知道, 一直到了最近十来年, 个人计算机组网之后的并行算力才真正达到了可以支持现代AI大模型训练迭代的要求.
2) 推理需要积累大量对世界的认知信息:
这就是个大数据的基础积累问题. 而大数据的积累, 也是在现代互联网的迅猛发展之后, 才得到了真正的解决.
还有一个神奇的事情是, 人工神经网络这个当下最主流的AI发展路线, 在当时阴差阳错的遭到了巨大打击一蹶不振. 而暴击了整个神经网络研究的, 正是人工神经网络的缔造者马文.明斯基本人.
前面说过, 明斯基搭建了第一个神经网络自学习硬件机器.当时有一位明斯基低一届的高中学弟弗朗克•罗森布拉特(Frank Rosenblatt), 从康奈尔大学获得博士学位后, 跟随师兄的步伐, 获得了美国海军研究室资助, 研制了人工神经网络“感知机(Perceptron)”.
1957年, 第一个版本的感知机以软件仿真的形式运行在IBM 704上.1962年, 罗森布拉特出版《神经动力学原理:感知机和脑机制理论》, 引起了全球AI实验室的大量关注和效仿, 并将感知机系统运用于文字识别, 语音识别等领域, 神经网络研究达到了第一次高潮.
而这个时候, 明斯基自己回到哈佛任教, 申请国防项目却遭到了挫折, 让明斯基特别郁闷的是, 自己曾服役的海军把经费投给了学弟, 支持的却是自己好几年前就玩过的神经网络. 数学背景深厚的明斯基拿起数学武器对人工神经网络进行了扎实的理论分析, 并在1969年出版了《感知机》,通过数学理论推演指出罗森布拉特的感知机功能有限,甚至不能解决线性不可分问题.(如不能用一个直线或者一个直面把二维或者三维坐标系中的两类数据很好的划分。就是线性不可分。)
明斯基在《感知机》书中暗示说: 把感知机从一层神经网络推广到多层的思路是没有希望的.
既然连AI先驱和人工神经网络缔造者本人的明斯克都说, 神经网络这个方向没戏了, 所有的研究者都深感气馁, 神经网络的研究从此走向了低潮. 更可惜的是, 在2年后, 发明感知机的学弟罗森布拉特遭受意外去世, 再也没人出来挑战明斯克的结论了.
然而, 历史总喜欢和人开玩笑. 事实上, 是明斯克错了.
我们现在已经知道, 恰恰是只要把感知机从单层网络变成多层, 就可以解决线性不可分问题. 其实当时罗森布拉特以及其他研究者也想到过多层感知机. 但苦于一直没有找到训练多层神经网络的方法. 直到了80年代中期, 相关算法才被找到和提出, 人工神经网络的研究再一次走向繁荣.
总而言之, 在70年中后期, 因为AI完全达不到所预言的完全智能的程度, 只能停留在"玩具"阶段. 原先过高的承诺引发了公众过高的期望值, 转而变成彻底的失望和针对AI研究的激烈批评, 最终大量机构对基于神经网络的人工智能研究减少甚至停止拨款. AI研究走进了第一次寒冬.
希望越大, 失望越大的专家系统
在80年初, 一类名为"专家系统"的AI程序开始为全世界公司青睐, 人工智能研究又迎来一波高潮.
什么是"专家系统"? 百度百科的解释如下:
专家系统 是一个 智能计算机 程序系统,其内部含有大量的某个领域专家水平的知识与经验,它能够应用 人工智能技术 和计算机技术,根据系统中的知识与经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题,简 而言之,专家系统是一种模拟人类专家解决领域问题的计算机程序系统。
一句话说, 专家系统根据过往的知识经验积累来模拟人类专家从而进行逻辑推理和判断.
等一下, 这个说法是不是有点熟悉? 听起来似乎有点像AI先驱赫伯特·西蒙(HerbertSimon)和艾伦·纽厄尔(AllenNewell)所做的第一个AI项: “逻辑理论家(the Logic Theorist)”.
事实上,这正是人工智能两大路线的符号主义派的成果体现. 第一条路线神经网络派在当时被自己的鼻祖明斯克按在地上摩擦, 第二条路线则在80年代初恰逢其时的站了出来.
和神经网络旨在研发通用结构的AI模型不同, 专家系统基于符号逻辑的概念。它们通常是由特定领域的专家(比如医药, 金融或者制造业)开发的, 仅限于一个很小的知识领域, 依据一组专门知识推演出的逻辑规则来回答特定领域的问题. 而随着专家系统的热门, "知识处理"也随之成为了主流AI研究焦点.
专家系统的一个典型项目是专家配置器XCON(eXpert CONfigurer) , 由卡内基梅隆大学为DEC公司设计开发. 该系统可以说是世界上第一个(特定领域的)推荐引擎, 通过几千条规则来对计算机部件的选择进行最优化. 从1980年投入使用以来,它为DEC公司制造VAX系列电脑节省了数千万的成本. 随着XCON的成功被更多企业所了解, 专家系统在80年代中期迎来了它的繁荣, 造就了一个数十亿美金的市场.
不过, 最为普通人所熟知的专家系统应该是后来的IBM超级计算机"深蓝". IBM从1985年开始研发"深蓝"计算机, 它是一个专门针对国际象棋的专家系统. 1996年,它在六场比赛中的一场中击败了国际象棋大师加里·卡斯帕罗夫(Garry Kasparov), 名扬天下.
但专家系统在工业界多少有点昙花一现, 繁荣之后迎来的是迅速的没落. 这是因为80年代的专家系统存在着基础性的问题, 首先就是专家系统的知识领域过于狭窄难以拓展.
说到这里, 笔者读书时曾经困惑过, 为什么"深蓝"那么牛逼的系统, 赢了国际象棋后好像就泯然众人矣, 并没有继续在其他领域发挥光和热.
而答案就是, 看来它只能用来下国际象棋...
此外, 在专家系统变得越来越庞大后, 为其提供和管理数据, 开发和测试都变得越来越复杂. 更要命的是, 专家系统是不会自己学习的, 这意味着必须不断更新底层逻辑来保持专家系统解决领域新问题的能力. 这大大增加了系统维护成本和复杂性.
因此, 到了80年代末期, 大家都看明白了, 专家系统虽然有点用, 但领域过于狭窄, 更新迭代和维护成本非常高. 专家系统开始迅速在业界失宠, 很多相关公司破产.
这就是人工智能的第二次繁荣后的又一次寒冬. 而导致第二次AI寒冬的原因, 除了前面所说的应用范围的局限性和商业过分追捧导致最后泡沫的破裂, 还有那两个老大难问题:
1) 计算机的算力瓶颈仍然无法突破
2) 仍然缺乏训练AI的足够海量数据.
有些读者或许会问, 在当下这两个老大难问题或许可以说初步被解决了, 那么专家系统这条路线是否重新有用武之地呢?
答案是肯定的, 就在最近, Meta 提出的人工智能 Cicero 成为了 AI 领域的热门新闻, Meta做出了这个史上最复杂的多人外交策略AI, 和人玩在线版「外交」游戏. 在每场比赛中,Cicero可以自己查看比赛情况, 了解各个玩家的行动历史, 模拟真人和不同玩家沟通, 从而预测其他玩家的行动。它能自行制定计划,并通过人类语言与其他玩家进行协调执行策略,没有人察觉出它是 AI。
MetaCiceroAI成功的关键因素, 正是重新引入了和大数据模型结合的专家知识系统.
在当年的专家系统开始走向低谷之时, 深度学习的前身人工神经网络却取得了革命性的进展,在1986年戴维·鲁梅哈特(David Rumelhart),杰弗里·辛顿(Geoffrey Hinton) 等人推广了由保罗·韦尔博斯(Paul Werbos) 发明的反向传播算法(BP算法), 使得大规模多层神经网络训练终于成为可能。
反向传播算法使得神经网络的中间级可以学习到数据输入的有效表达,这就是神经网络乃至深度学习的核心思想。困扰AI先驱们的多层神经网络无法训练的难题终于被突破了.
不知道曾亲自给神经网络盖棺定论的明斯基, 当时听到这个消息的心情是什么:)
稍作休整, 在我们步入当下的第三次浪潮之前, 先再来回顾一下人工智能的两条路线之争:
符号主义:
传统的研究思路,主张通过功能模拟入手, 把智能看做是符号处理的过程, 采用形式逻辑来实现人工智能, 所以称之为"符号主义(Symbolism)"或"逻辑主义(Logicism)"
符号主义可以对形式化表达的问题(比如下棋, 数学定理证明)有效, 但人类很多的常识, 以及接收的很多信息都无法用符号表达, 比如视觉听觉等基本感知能力, 虽然不像逻辑推理这样高大上,但符号主义至今都没有好的办法处理;而类似想象力,创造力,情感和直觉这些人脑特有的认知能力,目前更是符号主义无法企及的领域.
神经网络:
和符号主义功能模拟这种自上而下的思路相反, 神经网络就是彻底的自底向上的结构仿真路线. 直接模仿人脑智能的物质基础神经网络, 希望通过人工方式构建神经网络, 从而产生智能. 从罗森布拉特的感知机, 一直到当下大众所知道的深度学习网络,这个路线把智能活动看做是大量简单神经单元通过复杂连接和并行运行之后的结果,所以也被世人称为“连接主义(connectionism)”。
大算力, 大数据, 大力出奇迹
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的同学们自然也会在心里想, 为什么不在自然语言处理领域里做预训练这么香的事情呢?
自然语言AI的深度进化
首先呢, 自然语言处理的研究里, 有个基本概念叫做"语言模型", 大致理解起来也简单, 就是想办法打造一个核心函数P, 这个函数通过一个句子里前面的所有单词来计算下一个单词的概率大小. 一句话里的单词总是顺序出现的, 每个单词都可以通过前面所有单词计算出这么一个概率, 把所有这些单词的概率乘起来, 总概率数值越大, 说明这越像是人说出的话.
怎么构造这个神奇的函数P是AI科学家的事情, 但读者们一定可以明白, 有了这个牛逼的"语言模型"函数P, 计算机就会说人话了.
而从神经网络学派的同学看来, 是不是可以用神经网络来打造这样一个语言模型呢? 就是说用很多的现成语料,来训练出一个神经网络, 然后给这个神经网络模型输入一句话的前面几个词, 这个模型就能计算出这句话的下一个单词.
这就是大名鼎鼎的"神经网络语言模型"NNLM.
NNLM神经网络语言模型的想法并不是最近冒出来的, 它的历史要追溯到20年前. NNLM的论文在2003年就被发表出来了, 而当时, 深度学习的概念还只存在于杰弗里·辛顿(Geoffrey Hinton)的脑袋里.
所以, 不幸的是, NNLM当时没有引起学界多少反响, 被埋没了近10年. 事实上, 在深度学习大火之前, 用神经网络做自然语言处理甚至会被笑话, 之前自然语言处理的主流研究方式还是基于统计学的机器学习方法. 神经网络语言模型NNLM这个概念太超前时代了.
一直到了2013年, 在深度学习概念提出来7年之后, 深度学习神经网络模型先是在图像和语音领域大显神威, 自然语言AI的同学终于想起了这篇十年前的论文. NNLM重出江湖, 为世人所知:
在2013年, AI研究人员倒腾了一个自然语言处理的处理模型 Word2Vec. 顾名思义, "Word2Vec" 就是 "word to vector, 从词到向量". 研究人员的目标是把一个单词变成一个数学向量, 这个数学量在NLP里有个专门的名词, 叫做Word Embedding(词嵌入)
为啥要变成一个向量, 出发点也很简单, 如果能将每个单词都能表示为数学空间里的一个向量, 那么是不是理论上, 在这个向量空间里比较接近的词, 就是意义接近的单词呢? 这样计算机不就可以方便的理解单词之间的联系了吗?
Word2Vec翻出了十年前的NNLM. NNLM的初衷只是想构建一个神经网络语言模型, 根据前面的词, 来预测后一个是什么词. NNLM网络内部构造了一个随机初始化的矩阵, 通过不断的训练, 来达成NNLM模型预测单词的目的.
特别凑巧的是, 研究人员发现这个训练出来的内部矩阵的每一行, 正好可以作为每个词的嵌入向量Word Embedding! 这真是得来全不费功夫啊.
NNLM和Word2Vec使用了类似的神经网络结构, 不过因为目的不同, 其训练方法理念是截然不同的. NNLM作为语言模型, 是要看到上文预测下文, 所以训练时输入的是句子上文单词; 而Word2Vec呢? 因为它的目标是要找出所有单词之间意义远近的数学关系, 所以训练时都使用句子上文和下文作为输入.
不知道读者意识到没, 这两种训练方式在更高的意义上有着一些本质区别, 就好比我们人类说话, 都是顺序说出来一个个单词的, 说不定呢, 人的潜意识或许也是一个类似NNLM的P函数, 自觉不自觉地的决定人说话里的下一个词是什么. 因此只从上文预测下文的训练方式, 貌似天然更契合"生成式"的逻辑.
而Word2Vec这种通过上文和下文输入来训练的方式, 可以比喻成机器来做阅读理解, 就像是我们做语文或英语的阅读理解, 一定是通读全文, 然后根据上下文来理解和判断问题的答案. 这样的人工智能, 就是所谓分析式的AI.
两种模型训练的思路, 在后续发展里变成了自然语言模型的两种路线. 本文开头提到的OpenAI生成式模型GPT系列, 坚定的只用上文进行训练, 用以追求"纯粹"的生成; 而Google公司的大语言模型Bert, 则采用了上文和下文一起训练的模式, 此乃后话.
前面提到, 图像处理领域里使用大规模通用数据进行"预训练"所取得的效率和成果实在让人羡慕, 而在自然语言处理领域里, 其实也有一点点"预训练"概念的, 这个预训练就是, 每个单词的Word Embedding可以反过来初始化神经网络的内部参数.
不去探究数学细节, 读者只要知道, 这种"预训练方式"和前面图像处理领域的低层级网络预训练方式有点类似, 但问题是利用Word Embedding只能初始化第一层网络参数, 和图像处理领域的预训练能有效初始化大多数网络层级不可同日而语, 只能说是一种比较原始初级的"预训练"了
但直到2018年前, 这就是NLP领域里能采用的预训练典型做法了.
采用Word Embedding来初始化NLP神经网络有那么点效果, 但没有期待的那么好. 这里面还有一个逻辑上的原因: 一个单词有多义词问题. 所以企图在一个数学空间里用一个固定的数学向量来表征一个单词的意义, 还要求含义相近的单词都聚在一起. 在面对多义词的时候, 这在逻辑上显然就是矛盾的.
当然了, 聪明的AI研究人员肯定还是有办法. 既然一个单词存在多义性, 固定的Word Embedding向量无法表达单词的多个含义, 那么是不是可以先训练好一个单词的Word Embedding, 然后在实际使用中, 根据句子里的上下文语义去动态调整这个Word Embedding数值, 这样经过调整后的"动态Word Embedding" 更能准确表达单词在上下文的具体含义, 同时自然的, 解决了多义词的问题.
这个根据当前上下文来动态调整Word Embedding的想法就是顶级学术会议NAACL 2018年的最佳论文"Deep contextualized word representation", 这个NLP模型命名为ELMO (Embedding from Language Models, 基于语言模型的词嵌入)
ELMO引入上下文动态调整单词Word Embedding后, 多义词问题就被彻底解决了, 而且比预期的解决得还好: 利用ELMO改进过的多种不同NLP任务, 性能上都有幅度不同的提升, 最高达到了25%, 不愧是最佳论文.
此外, ELMO还有一个贡献, 研究人员发现ELMO所使用的深度神经网络模型里, 不同层次提取到的特征是有差异的. 看到这里, 读者想起了什么没有? 是不是和图像预训练的模型层级特征有点像了?
让我们复习一下, 前面讲过, 图像处理领域进行大规模预训练后, 把深度学习网络每层参数做可视化后可以看到, 深度学习网络每一层都对应着不同抽象层级的"特征", 在图像领域里, 就是从底层的线段, 到中间层的具体五官细节, 再到高层的脸型, 等等.
再说一次, "预训练"为什么是一个特别重要的概念? 这是因为好的"预训练"可以直接利用大量标准通用的的训练数据(图像领域就是图片,NLP领域就是语料), 把深度学习模型调整到了90%甚至更高程度的可用状态, 预训练好的模型最后通过任务相关的少量训练数据, 就能微调至完全胜任各种特定任务, 这真是一个很美妙的事情.
那么, ELMO出现后, 自然语言处理领域的"预训练"有可能赶上图像领域了吗?
遗憾的是, 还差一口气.
因为技术原因, LEMO模型在抽取文字特征方面还比较弱, 这是一个技术上的缺陷, 意味着这个模型就无法很好完成NLP的"预训练"梦想: 特征都抽取不好, 怎么让网络里每一层具体表达不同逻辑层级的特征呢.... 而从技术细节上对比, 也会发现 ELMO这种"预训练"方法和图像领域的预训练方法, 两者在模式上还有很大差异.
自然语AI研究人员还需要继续找到一个方法, 希望这个方法能很好的提取出文字的特征, 就类似图像处理领域的神经网络模型, 能很好的提取图像不同逻辑层面的特征.
恰就在时间刚好的2017年底, Google研究人员发表了一篇里程碑式的论文 <Attention is all you need>, 这一篇论文提出的"自我注意力"机制让自然语言处理揭开了崭新的篇章.
注意力机制和Transformer
2017年12月,Google在顶级机器学习会议NIPS上发表了论文《Attention is all you need》, 提出在机器翻译上大量使用自注意力(Self Attention)机制来学习文本表示, 并把这种机制模型起了个霸气的名字: Transformer.
这篇论文一经出世就横扫了整个自然语言处理学术界, Transformer迅速的取代了深度学习里传统的循环神经网络(RNN) 成为了之后的大语言模型的标准配置.
Transformer是目前NLP领域里最强的特征提取器, 本质上Transformer是一个叠加的''自注意力机制"构成的深度网络.
包括我们现在所知道的OpenAIGPT系列模型,以及GoogleBERT系列模型,都受到了这篇文章的启发采用了部分transformer的架构,从而取得了突破性的效果。
先说个题外话, 笔者感慨, 论文是否牛逼, 一看题目就知道, 这篇论文连题目都如此特别和霸气.
话说回来, 什么是注意力机制? 深度学习里的注意力机制其实是一种思想, 参考借鉴了人类的注意力思维方式.
视觉注意力机制是人类视觉所特有的大脑信号处理机制, 我们的眼睛会快速扫描全局图像, 得到需要重点关注的区域, 就是所谓的注意力焦点后, 再进一步对相关区域投入更多的关注. 这是人类在长期进化中获得的一种生存机制, 极大提高了人类信息处理的效率和准确性.
深度学习的注意力机制在概念上参照了人类的视觉注意力机制, 核心目标就是从众多信息里选择出对当前任务更重要和关键的信息.
具体到NLP自然语言处理领域里, 在之前, 注意力机制一般是指输出句子里某个词和输入句子每个词之间的相似度. 这也很好理解, 就是去寻求问题(输入)和答案(输出)之间的关系么.
但Google这篇<Attention is all you need>的特别之处, 是明确指出了, 我们其实不需要先考虑输入和输出的关系啊, 为什么不参考人类理解语言的方式, 首先"学习"一句话内部单词之间的关系呢?这就是所谓的"SelfAttention自注意力机制":指的是输入元素之间,或者输出元素之间的内在联系机制.
如上图所示, Self Attention自注意力机制寻找到了一个句子里单词之间的语义特征, "it"指代的是"the animal"
稍微想一下, Self Attention自注意力机制在逻辑意义上非常清晰, 它让机器去理解人类语言每句话里单词之间的语义关系.
除了逻辑上看起来更有道理, Self Attention机制还附带了一个很大的好处: 因为网络层面抛弃了传统的RNN(循环神经网络)模型, 彻底规避了RNN不能很好并行计算的困扰, 极大提高了模型并行训练计算的效率. 更不用说, Attention注意力机制只关注部分信息, 参数较少, 容易训练.
有趣的是, 谷歌研究人员在这篇重要论文里差点使用了"注意力网络"这样的命名, 只是他们觉得这个名字听起来实在不够响亮, 后来团队里一位工程师给起了个名字Transformer, 这看起来就高大上很多了:)
基于自我注意力机制的Transformer模型的出现是革命性的, 最最重要的一点, 它能实现自我监督学习. 所谓自我监督, 就是不需要标注的样本, 使用标准的语料或者图像, 模型就能学习了.
在Tranformer出现之前, 我们要训练一个深度学习模型, 必须使用大规模的标记好的数据集合来训练神经网络. 对数据进行标注只能人工进行, 金钱和时间成本都相当高.
读者如果还有印象, 在笔者上一篇关于AI绘画的文章里有讲到, 对于AI绘画至关重要的跨模态模型CLIP之所以成功, 是因为它使用了互联网已经带文字标记的图片作为训练数据, 巧妙规避了超大规模数据标记的难题.
而回过头来, Transformer的核心是在数学上计算输入元素之间的关联(Attention), 通过这种模式, Tranformer成功的消除了训练数据集的标注需求!
这简直是感天动地, 我们可以想象一下, 从今以后, 互联网上或者企业数据库里海量的文本数据都能直接成为大模型的训练数据源了.
NVIDIA创始人兼CEO黄仁勋在2022 NVIDIA GTC大会上表示说, Transformer使自我监督学习成为可能,并无需人类标记数据,AI领域出现了“惊人的进展”。因此,Transformer正在越来越多的领域中发挥作用。比如用于语言理解的Google BERT,用于药物发现的NVIDIA MegaMolBART以及DeepMind的AlphaFold2都要追溯到Transformer的突破。
上面又提到了Google BERT语言模型. 这里要插一句, Google 引以为傲的语言大模型BERT的架构和OpenAI GPT其实非常像,但有一个简单而本质的区别, 在训练阶段, Google BERT输入上文和下文来训练, OpenAI GPT系列一直坚持只输入上文训练, 而结果就是, Google BERT在体现AI分析能力的各种阅读理解等问题上, 都表现上佳; 而OpenAIGPT术业有专攻,在生成式AI(比如回答各种问题, 创造各种文字内容)上一骑绝尘.
不夸张的说, Transformer是迄今为止发明的最强大的模型之一. 斯坦福研究人员在2021年8月的一篇论文把tranformer称之为"基础模型"(Foundation model), 认为它推动了AI整个范式的转变.
GPT3, 神功初成
受Google论文启发, 基于Transformer模式的GPT系列模型作为OpenAI的当红炸子鸡, 风头当下无两.
GPT全称是“Generative Pre-Training”,直译过来就是"生成式的预训练", 有意思吧.
如前文所说, OpenAI对GPT的生成式AI有坚定的信念, 因此在训练模型的时候, 只选用"上文"来训练模型, 也就是说, GPT本质上是一个极致的概率模型, 它根据上文提示, 来猜测下一个单词应该是什么.
这个坚持虽然在一开始 GPT1和GPT2时代让其输出效果稍逊于同期Google的语言大模型BERT, 但到了GPT3时期, 在超级规模网络参数的加持下, GPT这个100%纯粹的生成式AI终于迸发出耀眼的光芒, 模型输出效果甚至大幅超越了研究人员的预期.
尽管没有实证, 但笔者很倾向认为GPT3的极大成功和OpenAI坚定不移的只用上文来训练模型有着某种必然的关系, 人的语言沟通也从来都是按顺序表达的, 没有谁先把一句话的最后一个词说完才回头考虑上一个词. 从这点来看, GPT系列模型顺应了人类思考的逻辑, 最终由量变推动了质变.
终于, 借助了Transformer, GPT这样的超大规模语言模型(GPT-3有1750亿个参数) 在不需要标记数据的情况下, 可以借助现成的海量标准数据以及超级算力, 得到通用的"预训练"版本模型.
可能有读者会继续问, 有了预训练好的模型版本后, GPT怎么能以适应各种各样的特定任务(或者专业一点, "下游任务")呢? GPT论文里给出了简单的改造施工图, 附在这里读者们有点直观感性感知即可. 总之通过简单的改造操作, GPT就能很好适应不同的任务. 只需要在输入部分调整一下就可以了, 非常方便.
补充一句,或许正是因为改造特别方便,OpenAI的研究人员才能在GPT3.5版之上改造出一个问答专用的chatGPT.虽然还不是基于大杀器GPT4.0, 但chatGPT所展现出的超强内容生成能力, 在这几天已经在大众用户群体里刮起了超级旋风.
从GPT3 到 chatGPT, 进化继续
在历史长河里走了过来, 终于回到了本文开头的主角chatGPT.
如果读者已经理解了前面关于深度学习神经网络的变迁和发展之路, 再来看chatGPT的技术升级, 就是特别简单的事情了.
chatGPT是基于GPT-3.5模型的魔改. GPT-3.5和3.0的区别呢, 首先是和微软合作, 在微软的Azure AI云服务器上完成了训练; 另一个重要的区别是其训练数据集里除了文字, 还加入了代码, 因此chatGPT现在已经可以写程序, 甚至给现成的代码找bug了.
为什么试用过chatGPT的同学都感觉提升很明显? 一个重要的原因是chatGPT引入了一个新的训练方法 RLHF (论文<Training language models to follow instructions with human feedback >发表于22年3月), 简单的说, 就是用人类反馈的方式加强训练.
看这个简单的描述显然不能感受到技术的提升, 不过我们只需要理解, 这其实就是在GPT3的大数据预训练之下, 再次加强了人类的反馈.
有趣的是, 前面基于Transformer的通用大数据无监督训练模式把自然语言的自动学习做到了某种极致, 而这个RLHF又重新捡起了"手动档"人类反馈机制, 貌似有一点返璞归真的感觉. 仿佛是武功高手练至化境之后, 又重新拿起了最早的野球拳, 一招使出了无与伦比的超越功力:)
chatGPT还有一个很重要的特点, 就是针对输出有效性上做了非常好的调整. 使用过chatGPT的同学一定能感觉到, chatGPT并非每一个问题都能回答详尽, 但它绝对没有胡说八道, chatGPT的回答和真实世界的情况是相当一致的. 做到这点很不容易, 也是chatGPT和之前容易乱说一气的问答AI模型前辈最大的不同.
另一个和确保回答有效性同样值得关注的改进是, chatGPT在道德约束上做得很出色. 如果我们去询问一些逾越了道德边界的问题, 或者一些特别敏感的问题, chatGPT基本都能察觉和回避. 这让我们想起了AI绘画大模型最让人诟病的地方, 那就是通过AI生成18x图片, 尽管这不是一个技术问题, 但对于一个智能内容生成平台, 我们显然要有方法管理好内容的质量, 以及内容的道德边界. 在这一点上, chatGPT带了一个好头.
chatGPT的试用版在OpenAI的RLHF论文发出半年之后刚刚推出, 根据OpenAI研究人员自己的说法, 内部经过了大量调优, 而且即使当下, chatGPT还是有很多需要改进的地方. 但无论如何, chatGPT已经展示给我们所有人, 自然语言生成式AI所能达到的全新高度.
笔者特别憧憬GPT4.0的chatGPT改版. 如果如传说那般, GPT4.0 已然突破了图灵测试, 笔者对基于4.0版本的chatGPT抱有无限的期待. 说不定, 作者在上一篇文章里预言的, AI大模型来写长篇玄幻小说的时代, 马上就要来临了
后记
如果能耐着性子读到这里, 读者应该自然语言的生成式AI的前世今生有了一点概念.
回过头来再问一次, 对于"预训练"这个深度模型里的重要概念. 读者有没有想过, 预训练到底是什么?
对, 具体而言, 预训练就是在几千亿参数的支持下, 类似GPT这样的超级模型灌入了难以计量的文本训练数据(说不定已经把全世界可以搜刮到的文本都拿来用了)来训练得到了一个通用大语言模型.
不过, 在更高的一个角度去畅想, 当我们把全世界的文字信息直接灌进拥有数千亿参数的AI模型里, 模型在网络的各个层级上抽取和记忆这些文字里的特征信息. 那么, GPT这样的超级模型实际上就在通过所谓预训练方式, 学习到了人类所有文字信息的全部特征, 直接把人类的语言智慧记在了自己几千亿量级的神经网络大脑里.
做到了这种程度, 真的就像是我们用人类的全部知识体系来培养出了一个超级强大的机器大脑, 这个大脑通过它超大规模的人工神经网络规模接纳学习了人类创造的所有内容. 进而, 针对人类的任意问题, AI可以做出连图灵测试都无法区分的真正智能回答.
人类已经马上无法分辨, 在小黑屋后面, 那究竟是一个人还是一个AI了.
这一天来得比想象更快.
一个能容纳和理解人类全部文字知识, 并做出真正智能回答的AI, 我们是不是可以简单认为,
今天, 真正的机器智能, 已然诞生.