96SEO 2026-02-19 16:09 14
。

Transformer最初设想是作为文本翻译模型使用的#xff0c;而BERT模型构建使用了Transformer的部分组件#xff0c;如果理解了Transformer#xff0c;则能很轻松地理解BERT。
Transformer和BERT可谓是LLM的基础模型彻底搞懂极其必要。
Transformer最初设想是作为文本翻译模型使用的而BERT模型构建使用了Transformer的部分组件如果理解了Transformer则能很轻松地理解BERT。
首先将输入x进行embedding编码然后通过WQ、WK和WV矩阵转换为Q、K和V然后输入Scaled
MASK的叠加目的是在计算自注意力过程中不会注意当前词的下一个词只会注意当前词与当前词之前的词。
在模型训练的时候为了防止误差积累和并行训练使用Teacher
把Encoder的输出作为解码器第2层的Q把Decoder第1层的输出作为K和V。
这块简要介绍主要是通过数据生成器模拟了一些数据将原文翻译为译文实现代码如下所示
SOS,EOS,PAD,0,1,2,3,4,5,6,7,8,9,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m
[0,1,2,3,4,5,6,7,8,9,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m]#
words中选n个词每个词被选中的概率为preplaceTrue表示可以重复选择#
Dataset(torch.utils.data.Dataset):def
torch.utils.data.DataLoader(datasetDataset(),
collate_fnNone)定义了数据加载器数据样例如下所示
在计算注意力时计算50个词和50个词相互之间的注意力所以是个50*50的矩阵#
PAD的列为True意味着任何词对PAD的注意力都是0但是PAD本身对其它词的注意力并不是0所以是PAD的行不为True#
测试mask_pad函数print(mask_pad(x[:1]))输出结果shape为(1,1,50,50)如下所示
上三角矩阵不包括对角线意味着对每个词而言它只能看到它自己和它之前的词而看不到之后的词#
torch.tril返回下三角矩阵则1-tril返回上三角矩阵#
测试mask_tril函数print(mask_tril(x[:1]))输出结果shape为(b,1,50,50)如下所示
{\rm{softmax}}(\frac{{Q{K^T}}}{{\sqrt
dk等于Embedding的维度除以注意力机制的头数比如64
b句话每句话50个词每个词编码成32维向量4个头每个头分到8维向量#
mask遮盖mask是True的地方都被替换成-inf这样在计算softmax时-inf会被压缩到0#
masked_fill_()函数的作用是将mask中为1的位置用value填充score
测试attention函数print(attention(torch.randn(8,
在PyTorch中主要提供了两种批量标准化的网络层分别是BatchNorm和LayerNorm其中BatchNorm按照处理的数据维度分为BatchNorm1d、BatchNorm2d、BatchNorm3d。
BatchNorm1d和LayerNorm之间的区别在于BatchNorm1d是取不同样本做标准化而LayerNorm是取不同通道做标准化。
affineTrue,elementwise_affineTrue指定标准化后再计算一个线性映射
torch.nn.BatchNorm1d(num_features4,
torch.nn.LayerNorm(normalized_shape4,
1.1761]]],grad_fnNativeBatchNormBackward0)
1.3416]]],grad_fnNativeLayerNormBackward0)6.定义多头注意力计算层
本文中的多头注意力计算层包括转换矩阵WK、WV和WQ以及多头注意力机制的计算过程还有层归一化、残差链接和Dropout。
如下所示
__init__(self):super().__init__()self.fc_Q
torch.nn.LayerNorm(normalized_shape32,
b句话每句话50个词每个词编码成32维向量4个头每个头分到8维向量#
self.DropOut(self.out_fc(score))
{pos/{{10000}^{2i/{d_{model}}}}}
{pos/{{10000}^{2i/{d_{model}}}}}
PE(pos,2i)sin(pos/100002i/dmodel)PE(pos,2i1)cos(pos/100002i/dmodel)
PositionEmbedding(torch.nn.Module)
__init__(self):super().__init__()#
pos是第几个词i是第几个词向量维度d_model是编码维度总数def
定义为不更新的常量self.register_buffer(pe,
用正太分布初始化参数self.embed.weight.data.normal_(0,
[8,50,32][1,50,32]-[8,50,32]embed
与标准Transformer相比这里定义的全连接输出层对层归一化norm进行了提前如下所示
FullyConnectedOutput(torch.nn.Module):def
__init__(self):super().__init__()self.fc
线性全连接运算torch.nn.Linear(in_features32,
out_features64),torch.nn.ReLU(),torch.nn.Linear(in_features64,
out_features32),torch.nn.Dropout(p0.1),)self.norm
torch.nn.LayerNorm(normalized_shape32,
编码器包含多个编码层下面代码为5个1个编码层包含1个多头注意力计算层和1个全连接输出层如下所示
EncoderLayer(torch.nn.Module):def
__init__(self):super().__init__()self.mh
__init__(self):super().__init__()self.layer_l
解码器包含多个解码层下面代码为3个1个解码层包含2个多头注意力计算层1个掩码多头注意力计算层和1个编解码多头注意力计算层和1个全连接输出层如下所示
DecoderLayer(torch.nn.Module):def
__init__(self):super().__init__()self.mhl
__init__(self):super().__init__()self.layer_1
Transformer主模型计算流程包括获取一批x和y之后对x计算PAD
MASK对y计算上三角MASK对x和y分别编码把x输入编码器计算输出把编码器的输出和y同时输入解码器计算输出将解码器的输出输入全连接输出层计算输出。
具体实现代码如下所示
Transformer(torch.nn.Module):def
__init__(self):super().__init__()self.embed_x
预测函数本质就是根据x得到y的过程在预测过程中解码器是串行工作的从SOS开始生成直到结束
torch.LongTensor(target).unsqueeze(0)
训练函数的过程通常比较套路了主要是损失函数和优化器然后就是逐个epoch和batch遍历计算和输出当前epoch、当前batch、当前学习率、当前损失、当前正确率。
如下所示
torch.optim.Adam(model.parameters(),
torch.optim.lr_scheduler.StepLR(optim,
在训练时用y的每个字符作为输入预测下一个字符所以不需要最后一个字#
打印结果分别为当前epoch、当前batch、当前学习率、当前损失、当前正确率sched.step()
[1]HuggingFace自然语言处理详解基于BERT中文模型的任务实战
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback