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

建建设网站的网站开发哪家公司口碑好

建建设网站的,网站开发哪家公司口碑好,网站设计公司怎么样,网站设计常见问题Transformer模型是nlp任务中不能绕开的学习任务#xff0c;我将从数据开始#xff0c;每一步骤都列举出来#xff0c;然后对应重点的代码进行讲解 ------------------------------------------------------------------------------------------------------------- Trans…Transformer模型是nlp任务中不能绕开的学习任务我将从数据开始每一步骤都列举出来然后对应重点的代码进行讲解 ------------------------------------------------------------------------------------------------------------- Transformer模型是基于注意力机制的一种深度学习架构最早由Vaswani等人在2017年提出主要用于自然语言处理NLP任务。它不同于传统的循环神经网络RNN或卷积神经网络CNN因为它完全依赖于注意力机制不需要通过时间步长来处理序列数据从而可以更高效地并行处理数据。 大名鼎鼎的transform一经出现就席卷了各个方面 transform原论文 Attention Is All You Need 论文网址https://arxiv.org/pdf/1706.03762 核心组件介绍 Transformer模型主要包括以下几个部分 输入嵌入Input Embeddings位置编码Positional Encoding多头自注意力机制Multi-Head Self-Attention前馈神经网络Feedforward Neural Network编码器Encoder和解码器Decoder结构输出层Output Layer 以句子“我喜欢小狗”为例详细展示Transformer模型中的每一步及其对应的矩阵变化。假设每个单词的嵌入维度为4句子长度为4。 步骤 1输入嵌入 假设通过一个词嵌入矩阵Embedding Matrix将每个词转化为一个4维的嵌入向量嵌入后得到的矩阵X∈R^4×4词嵌入矩阵是通过预训练得到的。例如Word2Vec和GloVe等模型已经在大规模文本语料上训练好提供了每个单词的嵌入向量。 Word2Vec 简介 Word2Vec 是一种将词汇表示为向量的技术它通过神经网络模型将词映射到连续向量空间中能够捕捉词与词之间的语义关系。Word2Vec 有两种主要的模型结构 CBOWContinuous Bag of Words基于上下文词来预测中心词。Skip-gram基于中心词来预测上下文词。 Word2Vec 的原理 Word2Vec 的核心思想是基于词的上下文来学习词向量。在大规模语料库中词汇共现的模式可以用来推测它们之间的语义相似性。词向量模型旨在使得语义相似的词在向量空间中彼此接近。 CBOW 模型 CBOW 通过上下文词预测中心词。例如在“我喜欢小狗”这个句子中假设要预测“喜欢”则上下文词为“我”和“小狗”。 上下文词嵌入平均值对于给定的上下文词​计算它们词嵌入向量的平均值 预测中心词的概率分布我们用上下文的平均向量通过 softmax 函数来预测中心词的概率分布 通过计算每个词向量和上下文向量的内积来衡量词语匹配的可能性最后通过 softmax 归一化成概率分布。 损失函数CBOW 模型的目标是最大化所有中心词的预测概率通常使用交叉熵损失 Skip-gram 模型 Skip-gram 模型与 CBOW 模型相反它使用中心词预测上下文词。例如给定中心词“喜欢”我们预测上下文词“我”和“小狗”。 公式 Skip-gram 模型的计算步骤与 CBOW 类似只是这里使用中心词来预测每个上下文词。 上下文词的预测给定中心词我计算上下文词的概率 损失函数Skip-gram 模型的目标是最大化上下文词的预测概率损失函数为 在实际应用中由于词汇表 V的大小可能非常大直接计算 softmax 的开销非常高。为了解决这个问题Word2Vec 引入了 负采样 技术。 负采样的主要思想是只对正样本真实的上下文词和一小部分负样本随机选择的非上下文词进行训练而不是对整个词汇表计算 softmax。负采样的损失函数为 Word2Vec 的训练 初始化词向量矩阵通常是随机生成的。通过优化损失函数如交叉熵或负采样来更新词向量。最终训练完成后模型会输出每个词在向量空间中的表示语义相似的词在向量空间中距离较近。 示例 假设条件 词汇表大小 V5假设词汇表中只有 我、喜欢、小狗、吃、饭 五个词。词向量维度 d4Skip-gram 模型中心词为 喜欢上下文词为 我 和 小狗。 1. 初始化嵌入矩阵 首先词嵌入矩阵是随机初始化的用来表示词汇表中每个词的向量表示。假设嵌入矩阵 2. Skip-gram 中心词和上下文词 在 Skip-gram 模型中中心词 喜欢 的嵌入向量是通过查找嵌入矩阵 3. 预测上下文词 使用中心词的嵌入向量来预测上下文词。Skip-gram 的目标是让中心词和真实上下文词的相似度最大化同时最小化中心词与负样本随机选取的词的相似度。预测上下文词的概率可以通过计算中心词嵌入和上下文词嵌入的点积 对于 我 对于”狗“ 通过点积可以计算出中心词和上下文词之间的相似度分数。为了得到概率我们通常通过 softmax 函数对这些相似度进行归一化。 4. Softmax 计算 为了预测 我 和 小狗 的概率需要计算 softmax 5. 负采样 为了简化计算Skip-gram 模型引入了负采样。假设我们随机选择 吃作为负样本计算它们与中心词 喜欢 的点积 接下来将正样本和负样本的结果输入到 sigmoid 函数中进行优化。 设单词xi 是输入的单词其嵌入向量为 e(xi) 我 - 0喜欢 - 1小狗 - 2 词向量矩阵的学习过程如下 初始化开始时嵌入矩阵的每个单词向量可以是随机初始化的。前向传播通过嵌入矩阵将单词转换为向量并传递到模型的下一层。损失计算模型的输出与目标标签计算损失。反向传播通过计算损失函数的梯度来更新嵌入矩阵。优化使用优化算法如SGD、Adam来更新嵌入矩阵直到模型收敛。 生成方式 词向量矩阵初始时随机生成但在训练过程中会根据反向传播更新。其目的是让相似意义的单词在向量空间中靠得更近。具体来说 假设矩阵如下所示 我 - [0.2, 0.4, 0.1, 0.3] 喜欢 - [0.6, 0.8, 0.5, 0.9] 小狗 - [0.7, 0.2, 0.9, 0.1] 步骤 2位置编码Positional Encoding 由于Transformer没有时间步长的概念因此需要加入位置信息来帮助模型理解序列顺序。位置编码使用一些数学公式比如正弦和余弦函数将位置信息加入到嵌入向量中。位置编码矩阵是固定的不需要训练。它根据输入序列的位置和维度生成。计算公式为 其中 pos 是位置i 是维度索引d 是嵌入的总维度。 每个位置 pospospos 对应的向量由正弦和余弦函数的组合构成。位置越靠前的单词它的编码数值变化越剧烈越往后的单词数值变化就会越缓慢。这种设计让不同位置的编码在各个维度上有所区分。正弦和余弦函数的周期性特性也使得模型可以容易地捕捉到不同单词之间的位置差异。 假设句子是“我喜欢小狗”词嵌入矩阵初始化为 根据位置编码公式计算第 0、1、2 个位置的编码 然后我们将词向量和位置编码向量相加得到最终输入 Transformer 的向量  位置编码与词向量的关系 词向量是通过嵌入矩阵通常是随机初始化后经过训练得到的来表示单词的语义。词向量中没有位置信息。 位置编码是为了让模型知道每个词在句子中的位置。它不会改变词向量的语义而是将位置信息叠加到词向量中。位置编码矩阵是固定的不需要训练。 #对应代码 class PositionalEncoding(nn.Module):def __init__(self, d_model, max_len5000):super(PositionalEncoding, self).__init__()pe torch.zeros(max_len, d_model)position torch.arange(0, max_len, dtypetorch.float).unsqueeze(1)div_term torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model))pe[:, 0::2] torch.sin(position * div_term)pe[:, 1::2] torch.cos(position * div_term)self.register_buffer(pe, pe)def forward(self, x):return x self.pe[:x.size(1), :]步骤 3多头自注意力机制Multi-Head Self-Attention 这是Transformer的核心部分自注意力机制计算的是句子中每个单词和其他单词的相关性。首先将输入嵌入分别映射到三个不同的空间查询Query、键Key和值Value。然后计算每对单词之间的注意力权重最终通过这些权重加权求和得到每个单词的新表示。 缩放因子 ​这是一个常数确保内积的尺度合适。它不会被训练也不是随机生成的。 class MultiHeadAttention(nn.Module):def __init__(self, d_model, num_heads):super(MultiHeadAttention, self).__init__()assert d_model % num_heads 0self.d_k d_model // num_headsself.num_heads num_heads# 需要训练的矩阵W_Q, W_K, W_Vself.W_Q nn.Linear(d_model, d_model)self.W_K nn.Linear(d_model, d_model)self.W_V nn.Linear(d_model, d_model)self.W_O nn.Linear(d_model, d_model) # 最终的输出权重矩阵def forward(self, X):batch_size, seq_len, d_model X.shape# 线性变换得到 Q, K, VQ self.W_Q(X) # (batch_size, seq_len, d_model)K self.W_K(X)V self.W_V(X)# 将 Q, K, V 分成多个头Q Q.view(batch_size, seq_len, self.num_heads, self.d_k).transpose(1, 2)K K.view(batch_size, seq_len, self.num_heads, self.d_k).transpose(1, 2)V V.view(batch_size, seq_len, self.num_heads, self.d_k).transpose(1, 2)# 计算缩放点积注意力attention_scores torch.matmul(Q, K.transpose(-2, -1)) / np.sqrt(self.d_k)attention_weights torch.nn.functional.softmax(attention_scores, dim-1)attention_output torch.matmul(attention_weights, V)# 将多个头的输出合并attention_output attention_output.transpose(1, 2).contiguous().view(batch_size, seq_len, d_model)return self.W_O(attention_output) # 通过线性层输出步骤 4前馈神经网络Feedforward Neural Network 每个注意力层后面接一个前馈神经网络通常由两个线性变换和一个ReLU激活函数组成。 前馈神经网络由两个全连接层构成各自有权重和偏置矩阵 class FeedForward(nn.Module):def __init__(self, d_model, d_ff):super(FeedForward, self).__init__()self.linear1 nn.Linear(d_model, d_ff)self.relu nn.ReLU()self.linear2 nn.Linear(d_ff, d_model)def forward(self, x):return self.linear2(self.relu(self.linear1(x)))步骤 5编码器Encoder和解码器Decoder Transformer的编码器由多个层堆叠而成每一层都包含一个多头自注意力机制和前馈神经网络。解码器除了这些模块外还包含一个额外的注意力层用于接收编码器的输出。 步骤 6输出层Output Layer 最终的输出通常会通过一个线性层映射到所需的输出维度比如词汇表大小用于机器翻译或分类任务中的类别数。
http://www.hkea.cn/news/14451861/

相关文章:

  • 基金管理公司司网站建设要求免费网站后台管理系统
  • 网站建设定制开发服务wordpress 中文 chm
  • 许昌北京网站建设专业做医院网站建设
  • 做排行的网站长春网架公司
  • 莱芜招聘的网站鞍山网站建设优化
  • 团购网站怎么做网站建设cach目录
  • 网站定制业务个人店铺logo
  • 什么是高端网站建设企业文化心得体会总结
  • 自己怎么样做网站廊坊建站服务
  • 店铺网站平台建设方案焦作建设网站
  • 网站建设多少费用泰州seo推广
  • 网站建设与实现的要求与务设计制作小车二教学反思
  • 专门做美食的视频网站有哪些阿里云域名注册查询
  • 二手网站建设论文wordpress cui2.0
  • 网站建好后如何上线网络科技公司组织架构
  • 网站建设视频格式长春市建设集团股份有限公司
  • 免费做简单网站株洲市住房和城乡建设局网站
  • 温州建校网站wordpress twitter登陆
  • 网站首页分辨率做多大的榆次住房保障和城乡建设局网站
  • 网站广告条幅怎么做动态的外贸网站制作怎么选
  • 做购物网站是怎么连接银行南充房产交易网官网
  • 网站建设如何插音乐商务网站的推广
  • 网站外链内链怎么做中国三大搜索引擎
  • 重庆哪家做网站做旅游网站有前途吗
  • 北京网站建设 地址海淀phpcms校园网站
  • 无锡网站优化推广短视频询盘获客系统
  • 网站建设 案例展示哈尔滨快速建站公司推荐
  • 工程师培训网站关键词优化外包服务
  • 邢台企业网站制作建设互联网上网络营销的推广
  • 网站建设 dwwordpress与淘宝