Showrunner AI技术浅析(二):大型语言模型

server/2024/12/21 19:32:29/

1. GPT-3模型架构详解

GPT-3是基于Transformer架构的预训练语言模型,由OpenAI开发。其核心思想是通过自注意力机制(Self-Attention)处理输入序列,并生成自然语言文本。

1.1 Transformer架构基础

Transformer架构由Vaswani等人在2017年提出,主要由编码器(Encoder)和解码器(Decoder)组成。然而,GPT-3仅使用Transformer的解码器部分进行生成任务。

1.1.1 解码器(Decoder)

解码器是GPT-3的核心组件,负责生成自然语言文本。其主要组成部分包括多头自注意力机制、掩码自注意力机制和前馈神经网络。

1.1.1.1 多头自注意力机制(Multi-Head Self-Attention)

多头自注意力机制允许模型在不同的表示子空间里关注输入序列的不同部分。其计算过程如下:

1.输入表示:

  • 输入序列 X=[x_{1},x_{2},...,x_{n}],其中 x_{i} 是第 i 个词的嵌入向量。

2.线性变换:

  • 将输入 X 线性变换为查询(Q)、键(K)和值(V)矩阵:

    其中,W^{Q},W^{K},W^{V} 是可训练的权重矩阵。

3.自注意力计算:

  • 计算注意力得分:

    其中,d_{k} 是键的维度,用于缩放注意力得分,防止梯度消失或爆炸。

4.多头处理:

  • 对 h 个不同的头分别进行上述计算:

  • 将所有头的输出拼接起来,并通过线性变换得到最终输出:

1.1.1.2 掩码自注意力机制(Masked Self-Attention)

掩码自注意力机制防止模型在生成当前词时看到未来的词。其计算过程如下:

1.输入表示: 输入序列 Y=[y_{1},y_{2},...,y_{m}],其中 y_{i}​ 是第 i 个词的嵌入向量。

2.线性变换: 将输入 Y 线性变换为查询(Q)、键(K)和值(V)矩阵。

3.掩码处理: 在计算注意力得分时,屏蔽掉未来的词:

其中,MaskMatrix 是一个掩码矩阵,用于遮蔽未来的词。

1.1.1.3 前馈神经网络(Feed-Forward Neural Network)

前馈神经网络对每个位置的上下文表示进行非线性变换。其计算过程如下:

1.输入: 多头自注意力的输出 Z

2.线性变换和激活函数:

其中,W_{1},W_{2} 是权重矩阵,b_{1},b_{2}​ 是偏置向量,\textrm{max}\left ( 0,\cdot \right )是ReLU激活函数。

3.残差连接和层归一化:

  • 残差连接:

  • 层归一化:

1.2 位置编码(Positional Encoding)

由于Transformer模型本身不包含位置信息,GPT-3使用位置编码来提供序列中词的位置信息。位置编码通常使用正弦和余弦函数生成:

其中,pos 是位置,i 是维度索引,d_{model}​ 是嵌入向量的维度。

2. 模型训练

2.1 训练目标

GPT-3的训练目标是在给定前文的情况下预测下一个词。其损失函数为交叉熵损失:

其中,y_{t} 是目标序列中的第 t 个词,P\left ( y_{t}|y<t \right )是模型预测第 t 个词的条件概率。

2.2 训练过程

1.数据预处理:

  • 收集并清洗大量文本数据,包括书籍、文章、代码等。
  • 使用标记化技术将文本转换为标记序列。

2.模型初始化:

  • 初始化模型参数,使用Xavier或Kaiming初始化方法。

3.前向传播:

  • 输入序列通过解码器生成上下文向量。
  • 使用掩码自注意力机制防止模型看到未来的词。

4.计算损失:

  • 计算生成文本与真实文本之间的交叉熵损失。

5.反向传播:

  • 使用反向传播算法计算梯度。
  • 使用优化算法(如Adam)更新模型参数。

6.梯度裁剪:

  • 防止梯度爆炸,设置梯度裁剪阈值。

7.学习率调度:

  • 动态调整学习率,使用余弦退火或学习率衰减。

3. 生成过程

3.1 推理与生成

1.初始化:

  • 从起始标记(<START>)开始。

2.解码:

  • 使用掩码自注意力机制生成当前词的预测。
  • 使用前馈神经网络生成当前词的预测概率分布。

3.预测:

  • 使用束搜索或采样策略选择下一个词。

4.终止:

  • 当生成终止标记(<END>)时,终止生成过程。
3.2 束搜索(Beam Search)

束搜索通过保留多个候选序列来提高生成文本的质量。以下是束搜索的基本步骤:

1.初始化:

  • 从起始标记开始,生成前 kk 个最可能的词作为候选序列。

2.扩展:

  • 对每个候选序列,生成前 kk 个最可能的下一个词,生成新的候选序列。

3.剪枝:

  • 保留前 kk 个得分最高的候选序列。

4.终止:

  • 当所有候选序列生成终止标记时,终止搜索。
3.3 采样策略

采样策略通过随机采样生成文本,可以增加生成文本的多样性。以下是一些常见的采样策略:

  • Top-K采样: 从概率最高的 k 个词中随机选择一个。
  • Top-p采样(核采样): 从累积概率超过 p 的最小集合中随机选择一个词。
  • 温度采样: 通过调整温度参数 T(T>0)来控制生成文本的随机性。T 越小,生成文本越确定;T 越大,生成文本越随机。

http://www.ppmy.cn/server/152024.html

相关文章

sql server 查询对象的修改时间

sql server 不能查询索引的最后修改时间&#xff0c;可以查询表&#xff0c;存储过程&#xff0c;函数&#xff0c;pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间&#xff0c;因为索…

【ArcGIS Pro】做个宽度渐变的河流符号

如上图如示&#xff0c;河流线的宽度是渐变的&#xff0c;上游细下游粗&#xff0c;可以很好的表达水量。 准备数据&#xff1a; 准备河流线图层如下&#xff1a; 实现方法&#xff1a; 1、点击线符号&#xff0c;在符号系统中&#xff0c;选择【属性-结构-图层-添加图层】&a…

docker打包镜像并迁移:如何从A服务器打包docker镜像到B服务器上容器中运行

1.在A服务器上&#xff0c;查看docker镜像 docker images会显示当前的服务器上已有的镜像 2.在A服务器上&#xff0c;将所需要的镜像打包 docker save -o shuai_docker.tar xxx(镜像名):vxx(镜像版本)会出现&#xff1a;xxxxx:Loading layer [>] xxkB/xxkB字样 3.将shua…

关于数据流图绘制和使用上的一些个人经验

假设我们需要开发一个项目进度管理系统&#xff0c;在这个项目进度管理系统之中&#xff0c;我们需要开发一个功能&#xff1a;项目成员的列表。我们具有这样的业务需求&#xff1a; 在项目进度管理系统中&#xff0c;我们需要知道参与项目的人员到底有哪些&#xff0c;并且项目…

Llama3模型详解 - Meta最新开源大模型全面解析

&#x1f4da; Meta最新发布的Llama3模型在开源社区引起广泛关注。本文将全面解析Llama3的技术特点、部署要求和应用场景。 一、模型概述 1. 基本信息 发布机构: Meta AI开源协议: Llama 2 Community License Agreement模型规格: 7B/13B/34B/70B训练数据: 2万亿tokens上下文长…

el-descriptions-item设置label宽度

属性&#xff1a; width"宽度" 示例&#xff1a; <el-descriptions-item :label"$t(xxx)" label-align"right" align"center" width"200">{{ xxx }} </el-descriptions-item>

linux操作系统备份还原工具,Timeshift,Backup Tool

这是学习笔记&#xff0c;只做参考&#xff0c;具体操作方法请以官网为准。以下是工具简介&#xff1a; Timeshift&#xff1a; Timeshift 是一个功能强大且用户友好的备份工具&#xff0c;专为 Elementary OS 用户提供了可靠的系统备份和恢复解决方案。通过定期创建快照&#…

CSS3新特性——字体图标、2D、3D变换、过渡、动画、多列布局

目录 一、Web字体 二、字体图标 三、2D变换 1.位移 &#xff08;1&#xff09;浮动 &#xff08;2&#xff09;相对定位 &#xff08;3)绝对定位和固定定位 &#xff08;4&#xff09;位移 用位移实现盒子的水平垂直居中 2.缩放 利用缩放调整字体到12px以下&#xff…