96SEO 2026-02-23 14:39 11
简介#xff1a;小王#xff0c;NPU#xff0c;2023级#xff0c;计算机技术

的源码后面我将对其进行细抠和分析。
因为很多变量其实我们用不到太冗长了我在后面贴了一段删减版的
has_relative_attention_biasFalse):super().__init__()self.is_decoder
config.is_decoderself.has_relative_attention_bias
has_relative_attention_biasself.relative_attention_num_buckets
config.relative_attention_num_bucketsself.relative_attention_max_distance
config.relative_attention_max_distanceself.d_model
config.d_modelself.key_value_proj_dim
config.dropout_rateself.inner_dim
self.has_relative_attention_bias:self.relative_attention_bias
nn.Embedding(self.relative_attention_num_buckets,
set()self.gradient_checkpointing
find_pruneable_heads_and_indices(heads,
self.pruned_heads.union(heads)staticmethoddef
_relative_position_bucket(relative_position,
Tensorflow:https://github.com/tensorflow/mesh/blob/0cb87fe07da627bf0b7e60475d59f95ed6b5be3d/mesh_tensorflow/transformer/transformer_layers.py#L593Translate
torch.abs(relative_position)else:relative_position
torch.zeros_like(relative_position))#
max_distancerelative_position_if_large
(torch.log(relative_position.float()
max_exact)).to(torch.long)relative_position_if_large
torch.min(relative_position_if_large,
torch.full_like(relative_position_if_large,
relative_position_if_large)return
self.relative_attention_bias.weight.devicecontext_position
key_length)relative_position_bucket
self._relative_position_bucket(relative_position,
self.is_decoder),num_bucketsself.relative_attention_num_buckets,max_distanceself.relative_attention_max_distance,)values
self.relative_attention_bias(relative_position_bucket)
forward(self,hidden_states,maskNone,key_value_statesNone,position_biasNone,past_key_valueNone,layer_head_maskNone,query_lengthNone,use_cacheFalse,output_attentionsFalse,):Self-attention
hidden_states.shape[:2]real_seq_length
self.key_value_proj_dim).transpose(1,
2).contiguous().view(batch_size,
shape(proj_layer(hidden_states))elif
shape(proj_layer(key_value_states))if
self.has_relative_attention_bias:position_bias
self.training:position_bias.requires_grad
self.compute_bias(real_seq_length,
torch.ones(position_bias.shape[1])mask[list(self.pruned_heads)]
mask.bool()]else:position_bias_masked
position_bias_maskedattn_weights
nn.functional.softmax(scores.float(),
nn.functional.dropout(attn_weights,
unshape(torch.matmul(attn_weights,
self.o(attn_output)present_key_value_state
T5Config):super().__init__()self.is_decoder
config.d_modelself.key_value_proj_dim
config.dropout_rateself.inner_dim
forward(self,hidden_states,key_value_statesNone,position_biasNone,past_key_valueNone,layer_head_maskNone,query_lengthNone,use_cacheFalse,output_attentionsFalse,):def
self.key_value_proj_dim).transpose(1,
2).contiguous().view(batch_size,
nn.functional.softmax(scores.float(),
nn.functional.dropout(attn_weights,
unshape(torch.matmul(attn_weights,
的输入(input)是什么输出(output)是什么Attention
hidden_states形式上是一个批次(batch_size)的特征张量。
假如批次(batch_size)是
“输入(input)与它们仨的关系”。
将上面的代码截取出下面一段。
因为
模块传递的时候需要统一的特征维度)self.inner_dim
的神经网络映射成了三个不一样的特征张量而这三个不一样的特征张量的形状依然为
“多头张量”并不改变里面的内容只改变形状。
通俗一点来讲就是把一个张量扩充一个维度并将张量中的所有项分摊到这个维度中。
self.key_value_proj_dim).transpose(1,
self.key_value_proj_dim).transpose(1,
假如输入(input)是一句只有四个字的句子“你好世界”那我们进行分词(tokenizer)后会得到
\frac{\alpha_{1,1}}{\sum_{i}^{n4}\alpha_{1,i}}
\frac{\alpha_{1,2}}{\sum_{i}^{n4}\alpha_{1,i}}
α^1,1×v1α^1,2×v2α^1,3×v3α^1,4×v4
\frac{\alpha_{2,1}}{\sum_{i}^{n4}\alpha_{2,i}}
\frac{\alpha_{2,2}}{\sum_{i}^{n4}\alpha_{2,i}}
α^2,1×v1α^2,2×v2α^2,3×v3α^2,4×v4
乍一看好像就那样不就是把每个字进行三次不同的神经网络映射然后每个字得到三个不同的副本“Q、K、V”接着将每个字的
就要抽象一点理解了我们可以把它理解为某一个人不同人他的阅历不同看到这个字就会有不同的感受的脑海里对于这个字的
的感觉反正代表了一种引申意。
这段解释只是笔者个人理解后的想法哈在后面的
我没做过实验但是我推断当对某一文本数据集进行学习时“Q、K、V”
“关联性分数”关联性越强分数越高。
我会在后面的计算流程再一次提到这一点。
的计算流程但那只是一部分。
完整的计算流程还得看代码(超简化版包含所有的关键步骤)
self.key_value_proj_dim).transpose(1,
2).contiguous().view(batch_size,
nn.functional.softmax(scores.float(),
nn.functional.dropout(attn_weights,
unshape(torch.matmul(attn_weights,
相对位置信息的嵌入(position_bias)后面有机会我再写篇博客讲讲它们。
的所有计算都是在矩阵的基础上(也可以说是在张量的基础上进行的)并没有像我之前写的那样一个一个地计算
q1×k2但是计算结果都是一样的只不过矩阵计算更方便也能够加快计算速度其中
\boldsymbol{a}\frac{\boldsymbol{q}\times
\boldsymbol{k}^{\intercal}}{\sqrt{d}}\frac{\\
a1,1a2,1⋮a4,1a1,2a2,2⋮a4,2⋯⋯⋱⋯a1,4a2,4⋮a4,4
\right)}{\sum_{j1}^{n4}{\exp}\left(
a1,1′a2,1′⋮a4,1′a1,2′a2,2′⋮a4,2′⋯⋯⋱⋯a1,4′a2,4′⋮a4,4′
,ai,j′∑j1n4exp(ai,j)exp(ai,j)
\boldsymbol{b}\boldsymbol{\alpha
a1,1′a2,1′⋮a4,1′a1,2′a2,2′⋮a4,2′⋯⋯⋱⋯a1,4′a2,4′⋮a4,4′
的操作这是为了防止过拟合。
另外最后还要经过一个线性层得到最终的输出
biasFalse)。
至于为什么要加这个线性层呢或许这就是神经网络的玄学了层数多一点记忆的东西更深刻一点…
的计算流程吧就是我们把原本一个句子比如刚刚说的“你好世界”中的某个字比如“世”字的
等等卷积得到的特征是不一样的显然卷积核尺寸越大卷积得到的特征越
层含义然后与另一个同样具有多层含义的字进行乘积计算这样得到的多个特征会更
Cross-Attention注意先后关系很重要谁在前就是前者谁在后就是后者谁对的谁顺序很重要。
\boldsymbol{a}\frac{\boldsymbol{q}\times
\boldsymbol{k}^{\intercal}}{\sqrt{d}}\frac{\\
a1,1a2,1⋮a23,1a1,2a2,2⋮a23,2⋯⋯⋱⋯a1,21a2,21⋮a23,21
\right)}{\sum_{j1}^{n21}{\exp}\left(
a1,1′a2,1′⋮a23,1′a1,2′a2,2′⋮a23,2′⋯⋯⋱⋯a1,21′a2,21′⋮a23,21′
,ai,j′∑j1n21exp(ai,j)exp(ai,j)
\boldsymbol{b}\boldsymbol{\alpha
a1,1′a2,1′⋮a23,1′a1,2′a2,2′⋮a23,2′⋯⋯⋱⋯a1,21′a2,21′⋮a23,21′
进行分析那么句子①更像是一种查询(Query)而句子②更像是一种
“键(Key)-值(Value)-对”。
我们带着查询(Query)也可以说是带着一种
“值(Value)”——在这里值(Value)可以理解为字典中对某一个字的详细阐释。
这段解释也只是笔者个人理解后的想法哈和前面的
self.key_value_proj_dim).transpose(1,
2).contiguous().view(batch_size,
shape(self.k(key_value_states))
shape(self.v(key_value_states))
nn.functional.softmax(scores.float(),
nn.functional.dropout(attn_weights,
unshape(torch.matmul(attn_weights,
调侃感觉…刚上研究生感觉我好懒花了三天才断断续续写完这篇博客哈哈哈哈哈[/手动狗头]…
作为专业的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