当前位置: 首页 > wzjs >正文

建筑人才招聘网站大地资源网在线观看免费

建筑人才招聘网站,大地资源网在线观看免费,做网站公司昆山,广东建筑人才网🔍 Transformer 是自然语言处理(NLP)的“革命性”模型,彻底取代了RNN/CNN的序列建模方式。其核心在于Self-Attention机制和位置编码设计。本文用最直观的方式带你彻底搞懂这两大核心原理! 📌 Self-Attentio…

🔍 Transformer 是自然语言处理(NLP)的“革命性”模型,彻底取代了RNN/CNN的序列建模方式。其核心在于Self-Attention机制位置编码设计。本文用最直观的方式带你彻底搞懂这两大核心原理!


📌 Self-Attention:为什么能“看见全局”?

🌟 核心思想

Self-Attention(自注意力)让每个词都能直接与序列中所有其他词交互,捕捉长距离依赖关系。与RNN的“顺序处理”不同,Self-Attention通过矩阵并行计算实现高效全局建模。

🔥 计算步骤
  1. 输入向量:将输入词嵌入(Embedding)为向量 (n为序列长度,d为维度)。

  2. 生成Q/K/V:通过线性变换得到Query、Key、Value矩阵:

  3. 计算注意力分数

    • 缩放因子 ​​:防止点积结果过大导致梯度消失。

  4. 多头注意力(Multi-Head)

    • 将Q/K/V拆分为h个头,并行计算后拼接结果,增强模型对不同语义子空间的捕捉能力。

# Self-Attention代码实现(简化版PyTorch)
import torch
import torch.nn as nnclass SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.embed_size = embed_sizeself.heads = headsself.head_dim = embed_size // heads# 定义Q/K/V的线性变换self.Wq = nn.Linear(embed_size, embed_size)self.Wk = nn.Linear(embed_size, embed_size)self.Wv = nn.Linear(embed_size, embed_size)self.fc_out = nn.Linear(embed_size, embed_size)def forward(self, x):batch_size, seq_len, _ = x.shape# 生成Q/K/VQ = self.Wq(x).view(batch_size, seq_len, self.heads, self.head_dim)K = self.Wk(x).view(batch_size, seq_len, self.heads, self.head_dim)V = self.Wv(x).view(batch_size, seq_len, self.heads, self.head_dim)# 计算注意力分数energy = torch.einsum("bqhd,bkhd->bhqk", [Q, K])  # 多维矩阵乘法energy = energy / (self.head_dim ** 0.5)attention = torch.softmax(energy, dim=-1)# 加权求和out = torch.einsum("bhqk,bkhd->bqhd", [attention, V])out = out.reshape(batch_size, seq_len, self.embed_size)return self.fc_out(out)
📊 Self-Attention vs CNN/RNN
特性Self-AttentionRNNCNN
长距离依赖✅ 直接全局交互❌ 逐步传递❌ 局部感受野
并行计算✅ 矩阵运算❌ 序列依赖✅ 卷积核并行
计算复杂度O(n^2)O(n2)O(n)O(n)O(k \cdot n)O(k⋅n)

📌 位置编码(Positional Encoding):如何表示序列顺序?

🌟 为什么需要位置编码?

Self-Attention本身是位置无关的(词袋模型),需额外注入位置信息以区分序列顺序。

🔥 两种主流位置编码方法
  1. 正弦/余弦编码(Sinusoidal PE)

    • 公式

    • 特点

      • 无需学习,固定编码。

      • 可泛化到任意长度序列。

  2. 可学习的位置编码(Learned PE)

    • 将位置编码作为可训练参数(如BERT)。

    • 优点:灵活适应任务需求;缺点:无法处理超长序列。

💻 位置编码代码示例

# 正弦位置编码实现
import torchdef sinusoidal_position_encoding(seq_len, d_model):position = torch.arange(seq_len).unsqueeze(1)div_term = torch.exp(torch.arange(0, d_model, 2) * (-math.log(10000.0) / d_model))pe = torch.zeros(seq_len, d_model)pe[:, 0::2] = torch.sin(position * div_term)pe[:, 1::2] = torch.cos(position * div_term)return pe# 使用示例
d_model = 512
max_len = 100
pe = sinusoidal_position_encoding(max_len, d_model)  # shape: (100, 512)

📌 Transformer整体架构回顾

  1. 编码器(Encoder)

    • 由多个Encoder Layer堆叠,每个Layer包含:

      • Multi-Head Self-Attention

      • Feed Forward Network(FFN)

      • 残差连接 + LayerNorm

  2. 解码器(Decoder)

    • 在Encoder基础上增加Cross-Attention层(关注Encoder输出)。

    • 使用Masked Self-Attention防止未来信息泄露。


⚠️ 关键问题与注意事项

  1. 计算复杂度高:序列长度n较大时,O(n^2)O(n2)复杂度导致资源消耗激增(需优化如稀疏注意力)。

  2. 位置编码选择

    • 短序列任务可用可学习编码;长序列推荐正弦编码。

  3. 多头注意力头数:通常设置为8-16头,头数过多可能引发过拟合。


🌟 总结

  • Self-Attention:通过Q/K/V矩阵实现全局交互,是Transformer的“灵魂”。

  • 位置编码:弥补Self-Attention的位置感知缺陷,决定模型对序列顺序的敏感性。

  • 应用场景:几乎所有NLP任务(如BERT、GPT)、多模态模型(CLIP)、语音识别等。

http://www.dtcms.com/wzjs/179848.html

相关文章:

  • 市场部做网站工作职责汕头seo优化项目
  • 学网站开发需要多长时间百度推广管理
  • 网站建设法律法规网站链接交易
  • 饮料公司网站模板seo网站优化专家
  • 嘉兴专业定制网站制作企业seo算法培训
  • 上海网站制作建设建设网站的步骤
  • 做网站头视频长沙营销推广
  • 深圳移动官网网站建设郑州做网站的专业公司
  • 淄博网站排名seo百度app内打开
  • 旅游公司网站开发与实现郑州网站技术顾问
  • 门头沟青岛网站建设海外品牌推广
  • 怎样开发网站建设76人vs猛龙
  • 没有英文网站怎么做外贸seo百度刷排名
  • 做网站去哪里备案做网站需要哪些技术
  • 在淘宝做印刷网站怎么办理今日头条新闻10条简短
  • 网站系统设计方案什么是网络营销推广
  • 北京微信网站开发报价网站友情链接购买
  • 网站数据库如何做新闻头条今日要闻10条
  • 企业所得税税率三个档次长沙谷歌seo收费
  • 做网站的公司有哪些百度搜索引擎优化指南最新版
  • 汽车网站建设流程网络营销的主要手段和策略
  • 自己做彩票网站合法吗员工培训课程
  • 网站url 结构市场调研与分析
  • 展示型网站一样做seo优化吗纯手工seo公司
  • 前端网站搜索导航怎么做网络广告策划书范文
  • 呼市企业网站制作宁波网络推广软件
  • 好制作网站公司河南郑州最新消息
  • 泰州网站制作工具最受欢迎的十大培训课程
  • 微信手机网站流程百度云登录首页
  • 做一个小程序收费价目表性价比高seo排名优化的