LLM,即large-language-model,大语言模型。
我们可以观察LLM大模型比如豆包在回复的时候,是不是一个一个字,行业里称之为流式输出的方式给你呈现内容的。为什么会这样呢?这是因为,大模型确实是在一个字一个字地去推理生成内容的。
就好像我们看输入法的输入联想逻辑,输入联想,其实就是根据你输入的单个字,来推测你要输入的下个字是什么。比如我打了一个"输"字,那么我要打的下字就很有可能是"入",当然这里就会有人问了,我要打的下个字也很有可能是"球"啊。
没错,最开始的研究人员确实也识别到了这个问题。那么解法是什么呢?其实很简单,我们把上下文加入到输入里,不就能帮助模型理解下个字该是什么了吗。
比如我们输入的是"我想在这个单元格中输",那这下一个字大概率就是"入"。而我们如果输入的是"这场足球比赛中,输",那下一个字大概率就是"球"。
那么看到这里,善于思考的同学可能会发现这里存在
第一,我们知道大模型的学习数据规模往往是海量的,每次的计算如果都带入全量的数据,算力上肯定是吃不消的。
第二,仅去算字的概率,似乎也有问题。因为我们用于训练的文章数据等,往往是出于各种场景各种背景写就的。仅去算下个字出现的概率,容易会被各种不相干的信息干扰。
是的,研究人员同样也遇到了这两个问题,而这时,两个概念的出现解决了这一难题。一个是词向量机制,一个是transformer
模型中的attention
自注意力机制。
1)词向量机制
词向量机制怎么理解呢?可以理解为把我们三维生活中的词,行业里称之为词元,或者token,去进行一次拍平,降维到向量空间,也被称为潜空间,或者latentspace中去。比如一个词"杨柳",在latentspace中,它不仅带有"植物"这一生物学的向量表示,也带有着"送别"的向量表示,也带有着"人名"的向量表示。这些向量表示,行业里称为feature,中文翻译是"特征",但说实话我觉得翻译为"意象",更能表达其含义。
为什么说是意象呢,因为这个"杨柳"究竟在当前语境中表达什么含义,取决于其上下文而决定。这不正像是我们诗歌作品中的"意象"嘛
所以词向量就是,大模型通过海量的文档学习,把三维世界中的"词元",转化为了latentspace中的"意象"的过程。比如"杨柳",在latentspace中的表达可能就是[01,56,42]这样的表达。
这样转换之后,其实就解决了第一个问题,即我们把学习资料转化为了latentspace中的词向量,而在这个潜空间中运算的效率可以大大的增加,且词向量的表达方式可以表示出机器学习中,词汇之前的语义关系。
2)attention层
而第二个问题,被transformer模型中的自注意力机制解决。自注意力机制可以理解为,在机器训练中,我们加入了若干的attention层,每一个层都会对输入的信息进行学习和理解记忆。
打个比方,"我今天吃了狮子头和蔬菜"这句话,在transformer中,会由attention层对这句话加入更多的信息来补充。比如补充"狮子头是一道菜""今天是星期六"等等。这些补充信息,会作为输入给到下一个attention层进行补充。当然有些信息可能是不重要的,也会被忽视掉。最终层与层之间,哪些信息需要补充,哪些信息需要保留,哪些信息传递,均由模型自主学习完成。而最终学习的结果就是,模型可以把海量的数据以关系网的形式"消化"掉,并保留其重要的相关性。
这些表述可能还不够直观,再打个比方,这些层就好像人在去阅读文章的时候的一个连贯性注意力的过程。就好像我们在去阅读理解一篇文章的时候,脑子里会对输入的内容进行消化然后吸收记忆,而记忆下来的不是点状的知识,而是网状的经验。
3)再形象些的比喻
llm的原理基本就是这样了,总结起来就是大模型以词向量和transformer的模型学习了海量的知识,把知识作为向量空间中的一种关系网进行存储,并在接受输入时,通过向量空间中的一系列匹配进行输出。
这个过程其实大家想一想,是不是就像是人脑在阅读学习的个过程?比如我们在记忆一些资料时,其实记忆的也不可能是逐字逐句去记忆的,也是按照相关性,重要程度,再结合历史经验信息进行记忆的。记忆下来的东西,也不是一个个的文字,而更像是一种感觉,一种"意象"。
再比如我们去看红色,会觉得这个代表温暖,代表强烈,这也是因为我们在去记忆这个信息时,同时受到来自生理、社会伦理等的关联记忆,所以一个简单的"红色"在我们的脑海中记忆时,也不仅是一个简单的词语,而是带有了很多的"feature"信息。
当然我这里仅是为了帮助大家理解,简化抽象了很多概念。LLM这块如有感兴趣想进阶的同学,可以再看这篇文章进阶学习下。
https://www.understandingai.org/p/large-language-models-explained-with