《大规模语言模型:从理论到实践》第一章和第二章认识大规模语言模型
[复制链接]
随着ChatGPT在2022年11月的发布,AI这个词不再是只能从科幻电影才能看到的技术。现在的AI不仅是只能按照固定的格式回答我们的问题,也可以通过一些文字创造出图片或视频等。也有越来越多的厂商将AI嵌入到大多数人离不开的手机当中,使更多的人感受到AI这种高科技给人们的生活带来巨大的便利性和科学性等。作为一名科技爱好者,在感受到AI带来的种种震撼的同时,也非常想认识一下AI是如何工作的?有幸通过阅读共享计划获得《大规模语言模型:从理论到实践》这一本书,使我认识到AI内部是如何运作的,也把我从这本书获得到的知识通过论坛帖子分享给大家。
第一章讲解了大语言模型的概念、发展历程和构建流程。首先是科学性的介绍了大语言模型的概念,即大语言模型是一种由包含数百亿个及以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文本进行训练。从这一点认识到我们所使用的AI是由常见的编程语言通过数百亿个参数的深度神经网络语言模型实现的。我们之所以能够流畅的使用也是因为模型在超级电脑上进行大量的训练。参数的多少和训练的文本数量是大语言模型划分的标准。从2019年到2023年五月,大语言模型也是分成三个阶段:基础模型阶段、能力探索阶段和突破发展阶段。
大语言模型随着历史的发展和越来越多模型的开源化,越来越多的公司从事大语言模型的开发,模型种类也是百花齐放。我们所使用的AI也将越来越准确和丰富。大语言模型的构建流程也是逐渐趋于成熟化和标准化。目前大语言模型的构建流程主要有四个阶段,即预训练、有监督微调、奖励建模和强化学习。
在第一章对大语言模型有了基本的概念后,就是进入到了第二章。第二章主要是讲解大语言模型的一些结构。有Transformer结构、LLaMA结构等。这些结构还能再继续细分。如Transformer结构有嵌入表示层、注意力层、前馈层等。Transformer结构的各层之间的关系
嵌入表示层是将每个单词转换为其相对应的向量表示。参考代码为
class PositionalEncoder(nn.Module)
def __int__(self, d_model, max_seq_len = 80):
super().__int__()
self.d_model = d_model
#根据pos和i创建一个常量PE矩阵
pe = torch.zeros(max_seq_len, d_model)
for pos in range(max_seq_len):
for i in range(0, d_model, 2):
pe[pos, i] = math.sin(pos / (10000 ** (i/d_model)))
pe[pos, i + 1] = math.cos(pos / (10000 ** (i/d_model)))
pe = pe.unsqueeze(0)
self.register_buffer('pe', pe)
def forward(self, x)
#使得单词嵌入表示相对大一些
x = x * math.sqrt(self.d_model)
#增加位置常量到单词嵌入表中
seq_len = x.size(1)
x = x + Variable(self.pe[:,:seq_len], requirzes_grad=Flase).cuda()
return x
注意力层的自注意力(Self-Attention)操作是基于Transformer 的机器翻译模型的基本操作,在源语言的编码和目标语言的生成中频繁地被使用以建模源语言、目标语言任意两个单词之间的依赖关系。
全书的章节安排如下
帖子的所有内容摘抄于《大规模语言模型:从理论到实践》一书中,所用的图片来源于书中提供的配套PPT课件获取方式,链接为 。
|