我是如何理解AI的

Nothing will work unless you do.
Maya Angelou

通过本文记录一下半年以来对以chatgpt为代表的AI的学习。

从上世纪40~60年代,神经网络理论的提出,计算机神经网络的基本实现以来【参考1,2】。神经网络经过了好几次过山车式的发展,如今可能即将迎来人类长期梦想可用GAI的实现。

当我第一次使用chatgpt跟其对话时,我几乎无法判断对面是人类还是AI,从直观上感觉接近可以通过图灵测试了。因此,目前很多人认为,AI将带来相当于互联网这种级别的革命。

这促使我去学习了解当前AI的发展和背后的原理。但我发现,要搞清楚AI的详细原理,对一个缺乏相关训练的中年人有点难,需要一定的数学知识和大量的工程实践。因此我试着尽量从一个较为笼统的概念上去了解。

李宏毅教授关于人工智能的课在网上比较火,讲的也比较好,我记得他在某个课程的开始就说,神经网络就是一个函数(系统),给一个输入,这个函数会提供一个输出。就chatgpt来说,就是你输入一段话,chatgpt给出一段文本,作为对你属于的这段话的响应,以形成一对看起来像是人类对话的文本。

有很多方法可以实现这个函数,从最简单的回显,到目前智能客服常用的专家系统,此前的这些方法局限性很多,既显得生硬,也不够灵活。

目前人工智能的研究,就是希望通过神经网络的方法,找到一个巨大的函数(有万亿级别的参数),从而能够应对人类提供的各类问题(输入),给出较为理想的答案(输出)。即所谓的GAI(通用人工智能)【参考3】

神经网络,故名思意,是参考动物和人类的大脑来进行设计的。构成动物和人类大脑的基础其实非常简单,就是神经元细胞和他们之间的链接(突触)。一开始,科学家们就是用这种类似的方法来设计计算机神经网络。不过,鉴于以前计算机能力的限制,计算机神经网络的大小,与人类神经元数量有巨大差异,计算速度也不足,这导致此前神经网络不堪大用,多次沦为”骗子“的代名词。以chatgpt为代表的LLM(大型语言模型),将神经网络的参数扩大到万亿,现在GPU的算力也有惊人的提升,从而使得神经网络有了可以与人类大脑相提并论的硬件基础。

最近也在看人脑方面的著作,例如Norman Doidge的《重塑大脑,重塑人生》,人类学习知识的过程,也是接受环境信息的刺激,转变为电流,引起大脑相关区域的活化,增加某部分神经元之间的链接,形成特定的知识、技能和记忆。

这么来看,目前对神经网络的设计和训练,也是有很多相似之处的。前面我们提到,神经网络就是一个函数,这个函数目前有上万亿的参数,靠人类专家去设计每个参数的取值显然是不现实的,科学家们的方法还是学习人类学习知识的方法,设计好的神经网络和训练方法,让这个神经网络从人类优选的数据集中学习人类知识。

训练方法简单来说,先设计神经网络的架构,怎么设计是个工程学的问题,理论上,如果资源无限,随便什么样的架构都可以。现实是,为了用有限的资源达到最优的结果,科学家们花费大量时间来设计神经网络的架构(例如cnn,rnn,ltsm,transformer等),目前基于self-attention的transformer架构取得了较好的工程效果(好像有研究认为transformer在本质上跟cnn是等价的(又或许不是等价的,二是说,cnn,rnn这些是transformer的子集,可以通过transformer来构造等价模型?参考5))。设计好了神经网络架构后,先将神经网络的参数都置为初始值,然后成对的输入准备好的数据集的输入,将神经网络的输出和想要的输出进行对比,根据对比的结果和涉及的算法,调整神经网络的参数,最终使得神经网络的输出和预期的输出差别最小。

这个过程原理简单,跟人类学习的过程也很相近,但是面临大量的工程问题,除了神经网络架构的设计之外,如何根据输出与预期的差值来调整参数,参数调整的幅度等问题,都是巨大的挑战,无数科学家为此努力的大半个世纪,一些比较好的方法被发明(梯度下降,反馈网络)。使得这个过程在工程上变的有效可实现。

如果稍微深入一点到工程环节,首先面临的就是如何表示信息。计算机内只能处理二进制信息,文字信息需要转化为二进制信息,通常计算机都是使用某种编码方式,例如ascii,unicode等。但是对人工智能领域来说,这样还不够。因为词语之间是有关联的(同义,近义等),而传统的编码方式,每个字母都是独立的,不能反应词语之间的相互关系,神经网络就不容易学习到语义,因此,在AI领域,需要对文本进行向量化编码(embedding),相似语义的词语的向量化编码,在向量空间的距离上比较近。【参考4】

人类在识别图像的时候,边缘区域很重要,物体和背景的边缘,眼睛和脸庞的边缘,这些是我们识别图像的关键,据说cnn网络的核心,就是通过不同大小的滑窗来对图像子区域进行卷积,从而强化图像内部边缘区域的特征,提高图像识别的效率。

行文至此,就不能不提到当前几乎所有大模型的基础:transformer框架了。这个Google提出的神经网络架构,通过自注意力(self-attention)方法,让文本中的每个token都跟其上下文有联系,找出重要的信息,从而大大的提升了学习和推理的效率。这似乎跟我们人类也很类似,人类也是通过注意力机制,过滤我们不感兴趣的信息,从而提升我们处理信息的效率。

为了实现较好的效果,现代大模型的参数动辄10亿级别,每次训练和推理,计算量也是惊人。传统的CPU不以并行计算见长,在AI领域捉襟见肘,而设计目标是大量并行计算的显卡GPU则成为了AI事实意义上的加速器。这也推动了Nvidia帝国的扩展和发展。

本文是我作为一名门外汉,总结我近一段时间学习AI的收获和感想,都是非常感性的认识,其中有些概念可能理解的有误。我至今也没能理解cnn中的卷积的本质是什么?transformer的自注意机制与人类的大脑注意力机制是否本质上相同?在网上找到的多是讲这个东西怎么做的,少见能够将这个东西跟人类大脑处理方式做对比或类比,讲清楚其有效的原因和本质的。希望后续我能找到相关材料,或者能有更深的理解。(也许业界已经讲清楚了,只是我储备知识不足,无法理解吧)

参考

  1. 神经网络发展历史 - 知乎
  2. 神经网络简史(上)——从“极高的期待”到“极度的怀疑” - 知乎
  3. 此前有不少神经网络在图片识别、语音转文字、翻译等领域做的非常优秀,但是缺少通用性
  4. 本文详细介绍了tokenizer、embedding和vector:A Beginner’s Guide to Tokens, Vectors, and Embeddings in NLP | by Sascha Metzger | Medium — NLP 中的令牌、向量和嵌入初学者指南 |作者:萨沙·梅茨格 |中等
  5. transformer和cnn、rnn、gnn的关系:Transformer 是 CNN 是 GNN 是 RNN ? - 知乎
  6. @2023年08月25日看到一篇不错的文章,讲ChatGPT如何将大模型变成通用工具:How ChatGPT turned generative AI into an “anything tool” ChatGPT 怎样将生成式AI变成通用工具 - Jerome’s Clip