LLMs以词为单位生成文本。LLMs以Token为单位表示词组的生成单位,生成完毕后将生成结果并入上文,再进行下一次生成。
LLMs的“创造性”在于在选择下文时,随机选择分数排名较低的token。chatgpt技术报告中采用“温度参数”来控制排名较低的token被采用的频率,结果显示这样的技术提升了其创造力。
LLMs的单词生成能力:
LLMs通过训练获得了预测这类token序列概率估计值的能力,因此可以用于生成具有实际意义的文本内容。
基于字母:
统计了足够多的英文文本,获得了字母的出现概率和字母序列的概率估计,即n-gram概率【注:即第n个字母的概率分布取决于之前的n-1个字母】。
基于token:
统计大量英文语料中单词的出现频率【独立的单词的出现概率】和序列概率估计【给予已有的上文,当前需要生成的单词的概率】,
LLMs如何通过训练预测token序列概率估计值:
LLMs通过巨大的参数量来对上文的下一个token概率值进行预测。
需要注意的是:
无中间层的神经网络(感知机)只能学习到线性规律。
难以直接估计所需要的训练数据规模。
通过迁移学习可以将已经在另一个网络中学习到的重要特征转移过来,降低训练时间和训练数据规模要求。
对某些任务来说可能需要将现有示例都重复的显示给神经网络,同时需要向神经网络展现示例的变化情况。这两点可以通过数据的适量重复和数据增强实现。
通过无监督学习方式进行训练的模型更容易获取数据。LLMs一般具有无监督学习的特性,只需要获取一段文本并截断需要判断的一部分即可。
神经网络通过激活函数获得了处理非线性问题的能力
神经网络随着参数量的增长,有能够处理更加复杂的问题的趋势。
神经网络由于其基本运算单位太多,其具体工作原理是难以理解的。
以图像分类为例,低层神经元输出的语义特征图可能尚且可以理解为轮廓或者是背景,而高层语义神经元的输出则完全无法为人类所理解。
神经网络的具体工作原理尚且无法准确描述,不过人们通过实践证明了这种工具通过某种方式捕捉到了“一种类似于人类的工作方式”。
也许神经网络本质上就是计算上不可约的【某些问题本质上就无法有简单的数学方法或者计算方法,无法取巧,比如总结出一种方便人自己理解或者计算的方式】。
神经网络的训练范式基本上是通过大量的“输入→输出”来进行学习,以找到符合这些范例所蕴藏的潜在规律,将这一规律内化为极其复杂的模型参数。
神经网络的训练本质上是一门经验学科。其调参、模型设计等各个步骤都是基于大量的实践经验而非数学上的理论指导。人们在各个领域的实践过程中逐渐发现某一个模型结构不仅仅只适用于一个领域的应用。“神经网络可以捕捉相当普遍的人类思考过程”,因此多模态成为日渐热门的话题。
有几个已经被废弃的理念:
应该向神经网络引入复杂的单独组件,使其实际上显式实现特定算法:
这种做法在大多数情况下都不值得。应该只处理简单组件,让其在神经网络中实现自我组织
应该尽量减少神经网络的负担,对数据进行预处理后让神经网络处理高层特征:
这种做法的效果显著劣于直接输入原始数据。使用“端到端”的方式的训练过程有助于神经网络获取到更有效的中间特征和编码。
关于针对特定任务到底需要多大的神经网络:
规模过小的神经网络的拟合能力受限,解决一个特定任务需要神经网络达到一定的规模。当可以估计任务难度时,可以参照现有的其他任务中的模型参数量确定网络规模。但是总的来说,没有一个定量的标准。
网络设计中的一些事实:
神经网络训练所需要的数据规模:
从原理上来讲,规模越大的神经网络有潜力解决更复杂的问题。
训练神经网络是否有更好的方法
目前训练神经网络需要极大的计算量,主要是进行神经网络中训练和推理过程中神经元内大量的矩阵运算,因此其训练和推理速度受限制于GPU的性能。
已经证明在神经网络中高精度的数字是不必要的,只需要提供大量相互连接的简短计算单元和一个足够有效的参数优化机制即可。从这一角度出发有一些可能的发展方向:
降低对模型权重的参数精度要求可以降低训练设备的性能要求。
参照元胞自动机这样的计算系统,在很多单独的位上进行并行操作。虽然这种机制下的参数优化方式尚未被提出,但没有理由认为这是不可能的。
采用渐进式网络重写方式,将模型结构也纳入优化范围。即让深度学习模型自己去学习得到一个合适的网络结构。
将内存和GPU/CPU单元结合,用分布式数据存取实现“存算一体”。这样的方式能减少训练过程中的空闲时间,实现更高效的训练。
可以通过在中间设计一个“瓶颈”,强制所有信息都要通过一个较小的中间神经元数量,来压缩的网络的大小,同时不会太影响性能。
足够大的网络可以做到任何事情?
不可压缩计算:
指的是一些计算过程,无论掌握多少规律,都无法通过压缩数据来简化。这些计算过程需要通过明确地进行计算才能得出结果,而无法通过人类直接思考来解决。计算不可简化的过程仍然是计算不可简化的,并且对于计算机来说在根本上仍然是困难的,即使计算机可以轻松地计算它们的各个步骤。
神经网络的限制:
是它们无法解决计算不可简化的问题,即使它们可以轻松地计算这些问题的各个步骤。此外,神经网络的可训练性和能力之间存在权衡,越想让系统充分利用其计算能力,它就越会表现出计算不可简化,越不容易训练。因此,神经网络可能无法解决属于数学或计算科学范畴的问题,除非它们有效地“使用”一个“普通”的计算系统作为工具。
大语言模型能做到任何事情?
不能。之所以LLMs可以处理写文章、回答问题这类问题,是因为这类问题本质上来说并不处于不可简化这一范畴;换句话来说,这些任务并不如我们所想的那样困难。由于问题的不可简化性质,单纯的拓展模型规模是无法获得人类归纳客观规律,并发挥主观能动改造自然的能力的。
Embedding技术
ChatGPT使用嵌入技术来改善文本生成效果。它使用一个大型的神经网络来学习单词之间的关系,并将它们嵌入到一个高维空间中。这使得相似的单词在嵌入空间中更接近,而不相似的单词则更远。
对embedding概念的理解可以简单的类比为“地图“之于”现实地理情况“。尽管现实地理情况极其复杂,但通过颜色、等高线等方式,地图可以最大化的表示地理信息。
embedding层基本工作原理是将输入数据转换为稀疏词向量矩阵,然后再通过一个可控制的embedding_size参数确定的转换矩阵将其压缩或者升维成embedding向量:
这里的embedding_size就确定了词向量被转换后的维度。
embedding层通过矩阵相乘对原始数据进行升维或者降维,起到一个“显微镜”的作用,使得模型能够尽量发现足够多的信息。
关于ChatGPT的内部结构【待完善】
chatgpt本质上是一个基于Transformer的神经网络。这种网络对组成文本的token组的不同部分加以不同的注意力,从而改善任务处理效果。
chatgpt的三个基本阶段:
chatgpt中,该流程的每个部分都是由神经网络实现的,所有权重都通过端到端的网络训练确定。人类只需要设计其体系结构。
获取迄今为止的文本对应的token序列,找到合适的方式表示它们的embedding
以神经网络方式从该embedding出发,进行操作生成新的embedding
从生成的embedding尾部生成一个大约五万个单位长度的数组,这些值对应到不同的可能的下一个token的概率。