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

织梦做的网站图片路径在哪里微网站推广

织梦做的网站图片路径在哪里,微网站推广,wordpress菜单页面,湛江企业自助建站Transformer Transformer是由Vaswani等人在2017年提出的一种深度学习模型架构#xff0c;最初用于自然语言处理#xff08;NLP#xff09;任务#xff0c;特别是机器翻译。Transformer通过自注意机制和完全基于注意力的架构#xff0c;核心思想是通过注意力来捕捉输入序列…Transformer Transformer是由Vaswani等人在2017年提出的一种深度学习模型架构最初用于自然语言处理NLP任务特别是机器翻译。Transformer通过自注意机制和完全基于注意力的架构核心思想是通过注意力来捕捉输入序列中元素之间的关系从而在并行计算的情况下更有效地处理长序列数据克服了传统RNN和CNN的一些局限性在许多任务上实现了显著的性能提升。 1 自注意机制 自注意机制通过三个矩阵Query, Key, Value计算输入序列中每个元素与其他元素的相关性从而生成新的表示这三个矩阵是通过输入序列的线性变换得到的。 给定输入序列 X 自注意机制计算如下 Q XW_QK XW_KV XW_V其中 W_Q, W_K, W_V是可学习的权重矩阵。 注意力分数通过点积计算并归一化 Attention(Q, K, V) softmax{QK^T}/{}V这里dk是K的维度用于缩放点积的结果。 2 多头注意力机制 多头注意力机制通过并行计算多个自注意机制来捕捉不同的子空间信息然后将这些子空间的信息进行拼接和线性变换。 MultiHead(Q, K, V) Concat(head_1, ..., head_h)W_O其中每个头head_i Attention(QW_Qi, KW_Ki, VW_Vi)W_Qi, W_Ki, W_Vi, W_O是可学习的权重矩阵。 3 组成结构 Transformer由编码器和解码器两个部分组成每个部分都是由多个堆叠的层组成的。 1编码器 编码器由多个相同的层堆叠而成每层包含以下两个子层多头自注意子层、前馈神经网络子层每个子层后都有一个残差连接和层归一化。 编码器的输入是一个序列X通过嵌入层和位置编码Positional Encoding进行处理然后输入到编码器的每一层。 EncoderLayer(X) LayerNorm(X MultiHead(X, X, X)) EncoderLayer(X) LayerNorm(X FFN(X)) 2解码器 解码器与编码器结构类似但每层包含以下三个子层多头自注意子层、多头注意力子层接收编码器的输出、前馈神经网络子层。 解码器的输入是目标序列的前一部分通过嵌入层和位置编码进行处理然后输入到解码器的每一层。 DecoderLayer(Y) LayerNorm(Y MultiHead(Y, Y, Y)) DecoderLayer(Y) LayerNorm(Y MultiHead(Y, EncoderOutput, EncoderOutput)) DecoderLayer(Y) LayerNorm(Y FFN(Y)) 4 训练过程 Transformer的训练过程类似于其他深度学习模型通过最小化损失函数来优化模型参数常用的损失函数是交叉熵损失。 具体步骤如下 1数据预处理将输入序列和目标序列进行标记化、嵌入和位置编码。 2前向传播将输入序列通过编码器生成编码器输出将目标序列通过解码器生成预测输出。 3计算损失使用预测输出和实际目标序列计算交叉熵损失。 4反向传播计算损失相对于模型参数的梯度。 5参数更新使用优化算法如Adam更新模型参数。 6重复步骤2-5直到模型收敛。 5 典型应用 Transformer在多个领域都有广泛的应用尤其在自然语言处理和计算机视觉领域。 自然语言处理NLP 1机器翻译Transformer最初用于机器翻译任务如Google的翻译系统。 2文本生成GPTGenerative Pre-trained Transformer系列模型在文本生成任务中表现优异。 3文本分类BERTBidirectional Encoder Representations from Transformer模型用于各种NLP任务如情感分析、问答系统等。 计算机视觉 1图像分类Vision TransformerViT模型用于图像分类任务取得了与卷积神经网络相媲美的性能。 2目标检测DETRDetection Transformer模型用于目标检测任务通过自注意机制实现了端到端的目标检测。 6 实现示例 以下是一个使用Python和TensorFlow实现的简单Transformer模型用于序列到序列任务如机器翻译 import tensorflow as tf from tensorflow.keras.layers import Dense, Embedding, LayerNormalization, Dropout from tensorflow.keras.models import Model # 定义多头自注意力机制 class MultiHeadAttention(tf.keras.layers.Layer): def __init__(self, d_model, num_heads): super(MultiHeadAttention, self).__init__() self.num_heads num_heads self.d_model d_model assert d_model % self.num_heads 0 self.depth d_model // self.num_heads self.wq Dense(d_model) self.wk Dense(d_model) self.wv Dense(d_model) self.dense Dense(d_model) def split_heads(self, x, batch_size): x tf.reshape(x, (batch_size, -1, self.num_heads, self.depth)) return tf.transpose(x, perm[0, 2, 1, 3]) def call(self, v, k, q, mask): batch_size tf.shape(q)[0] q self.wq(q) k self.wk(k) v self.wv(v) q self.split_heads(q, batch_size) k self.split_heads(k, batch_size) v self.split_heads(v, batch_size) scaled_attention, attention_weights self.scaled_dot_product_attention(q, k, v, mask) scaled_attention tf.transpose(scaled_attention, perm[0, 2, 1, 3]) concat_attention tf.reshape(scaled_attention, (batch_size, -1, self.d_model)) output self.dense(concat_attention) return output, attention_weights def scaled_dot_product_attention(self, q, k, v, mask): matmul_qk tf.matmul(q, k, transpose_bTrue) dk tf.cast(tf.shape(k)[-1], tf.float32) scaled_attention_logits matmul_qk / tf.math.sqrt(dk) if mask is not None: scaled_attention_logits (mask * -1e9) attention_weights tf.nn.softmax(scaled_attention_logits, axis-1) output tf.matmul(attention_weights, v) return output, attention_weights # 定义前馈神经网络 def point_wise_feed_forward_network(d_model, dff): return tf.keras.Sequential([ Dense(dff, activationrelu), Dense(d_model) ]) # 定义编码器层 class EncoderLayer(tf.keras.layers.Layer): def __init__(self, d_model, num_heads, dff, rate0.1): super(EncoderLayer, self).__init__() self.mha MultiHeadAttention(d_model, num_heads) self.ffn point_wise_feed_forward_network(d_model, dff) self.layernorm1 LayerNormalization(epsilon1e-6) self.layernorm2 LayerNormalization(epsilon1e-6) self.dropout1 Dropout(rate) self.dropout2 Dropout(rate) def call(self, x, training, mask): attn_output, _ self.mha(x, x, x, mask) attn_output self.dropout1(attn_output, trainingtraining) out1 self.layernorm1(x attn_output) ffn_output self.ffn(out1) ffn_output self.dropout2(ffn_output, trainingtraining) out2 self.layernorm2(out1 ffn_output) return out2 # 定义编码器 class Encoder(tf.keras.layers.Layer): def __init__(self, num_layers, d_model, num_heads, dff, input_vocab_size, rate0.1): super(Encoder, self).__init__() self.d_model d_model self.num_layers num_layers self.embedding Embedding(input_vocab_size, d_model) self.pos_encoding self.positional_encoding(input_vocab_size, d_model) self.enc_layers [EncoderLayer(d_model, num_heads, dff, rate) for _ in range(num_layers)] self.dropout Dropout(rate) def positional_encoding(self, position, d_model): angle_rads self.get_angles(np.arange(position)[:, np.newaxis], np.arange(d_model)[np.newaxis, :], d_model) angle_rads[:, 0::2] np.sin(angle_rads[:, 0::2]) angle_rads[:, 1::2] np.cos(angle_rads[:, 1::2]) pos_encoding angle_rads[np.newaxis, ...] return tf.cast(pos_encoding, dtypetf.float32) def get_angles(self, pos, i, d_model): angle_rates 1 / np.power(10000, (2 * (i // 2)) / np.float32(d_model)) return pos * angle_rates def call(self, x, training, mask): seq_len tf.shape(x)[1] x self.embedding(x) x * tf.math.sqrt(tf.cast(self.d_model, tf.float32)) x self.pos_encoding[:, :seq_len, :] x self.dropout(x, trainingtraining) for i in range(self.num_layers): x self.enc_layers[i](x, training, mask) return x # 定义解码器层 class DecoderLayer(tf.keras.layers.Layer): def __init__(self, d_model, num_heads, dff, rate0.1): super(DecoderLayer, self).__init__() self.mha1 MultiHeadAttention(d_model, num_heads) self.mha2 MultiHeadAttention(d_model, num_heads) self.ffn point_wise_feed_forward_network(d_model, dff) self.layernorm1 LayerNormalization(epsilon1e-6) self.layernorm2 LayerNormalization(epsilon1e-6) self.layernorm3 LayerNormalization(epsilon1e-6) self.dropout1 Dropout(rate) self.dropout2 Dropout(rate) self.dropout3 Dropout(rate) def call(self, x, enc_output, training, look_ahead_mask, padding_mask): attn1, attn_weights_block1 self.mha1(x, x, x, look_ahead_mask) attn1 self.dropout1(attn1, trainingtraining) out1 self.layernorm1(x attn1) attn2, attn_weights_block2 self.mha2(enc_output, enc_output, out1, padding_mask) attn2 self.dropout2(attn2, trainingtraining) out2 self.layernorm2(out1 attn2) ffn_output self.ffn(out2) ffn_output self.dropout3(ffn_output, trainingtraining) out3 self.layernorm3(out2 ffn_output) return out3, attn_weights_block1, attn_weights_block2 # 定义解码器 class Decoder(tf.keras.layers.Layer): def __init__(self, num_layers, d_model, num_heads, dff, target_vocab_size, rate0.1): super(Decoder, self).__init__() self.d_model d_model self.num_layers num_layers self.embedding Embedding(target_vocab_size, d_model) self.pos_encoding self.positional_encoding(target_vocab_size, d_model) self.dec_layers [DecoderLayer(d_model, num_heads, dff, rate) for _ in range(num_layers)] self.dropout Dropout(rate) def positional_encoding(self, position, d_model): angle_rads self.get_angles(np.arange(position)[:, np.newaxis], np.arange(d_model)[np.newaxis, :], d_model) angle_rads[:, 0::2] np.sin(angle_rads[:, 0::2]) angle_rads[:, 1::2] np.cos(angle_rads[:, 1::2]) pos_encoding angle_rads[np.newaxis, ...] return tf.cast(pos_encoding, dtypetf.float32) def get_angles(self, pos, i, d_model): angle_rates 1 / np.power(10000, (2 * (i // 2)) / np.float32(d_model)) return pos * angle_rates def call(self, x, enc_output, training, look_ahead_mask, padding_mask): seq_len tf.shape(x)[1] attention_weights {} x self.embedding(x) x * tf.math.sqrt(tf.cast(self.d_model, tf.float32)) x self.pos_encoding[:, :seq_len, :] x self.dropout(x, trainingtraining) for i in range(self.num_layers): x, block1, block2 self.dec_layers[i](x, enc_output, training, look_ahead_mask, padding_mask) attention_weights[decoder_layer{}_block1.format(i1)] block1 attention_weights[decoder_layer{}_block2.format(i1)] block2 return x, attention_weights # 定义Transformer模型 class Transformer(Model): def __init__(self, num_layers, d_model, num_heads, dff, input_vocab_size, target_vocab_size, rate0.1): super(Transformer, self).__init__() self.encoder Encoder(num_layers, d_model, num_heads, dff, input_vocab_size, rate) self.decoder Decoder(num_layers, d_model, num_heads, dff, target_vocab_size, rate) self.final_layer Dense(target_vocab_size) def call(self, inp, tar, training, enc_padding_mask, look_ahead_mask, dec_padding_mask): enc_output self.encoder(inp, training, enc_padding_mask) dec_output, attention_weights self.decoder(tar, enc_output, training, look_ahead_mask, dec_padding_mask) final_output self.final_layer(dec_output) return final_output, attention_weights ChatGpt ChatGPT是一种基于Transformer架构的生成式预训练语言模型它是由OpenAI开发的旨在通过自然语言处理NLP技术进行人机对话。ChatGPT的核心技术基于GPT系列模型特别是GPT-3和后续版本这些模型通过大量的互联网文本进行预训练然后通过特定任务进行微调从而在生成和理解自然语言方面表现出色。GPT模型的初始版本是GPT-1随后是GPT-2和GPT-3GPT-3是一个具有1750亿参数的模型代表了当时最先进的语言模型之一。 1 GPT模型架构 GPT模型是一种自回归语言模型使用Transformer的解码器部分通过预测下一个词来生成文本依赖于上下文信息。 1预训练阶段 ChatGPT首先通过大量的互联网文本进行预训练学习词汇、语法、知识和常识。这一阶段主要关注语言建模任务即给定前文条件下预测下一个词的概率。 2微调阶段 在预训练的基础上ChatGPT通过特定任务或数据集进行微调以提高在特定任务上的表现。比如为了提高对话系统的性能模型可以通过大量对话数据进行微调。 3生成响应 用户输入文本后ChatGPT通过前向传播计算每个可能的下一个词的概率分布模型根据这些概率进行采样逐步生成响应。具体步骤如下 - 输入处理 用户输入的文本被分词、编码成词嵌入。 - 上下文建模 通过多层Transformer对输入进行处理捕捉上下文信息和语义关系。 - 词预测与采样 在每一步预测下一个词的概率分布根据这些概率进行采样生成词语直到生成完整的响应。 2 嵌入原理 嵌入是一种将是将符号数据如单词、句子或文档转换为实数向量的技术这些实数向量称为嵌入向量即将高维数据转换为低维向量空间的方法使得数据在该向量空间中具有某种结构或几何意义。嵌入在自然语言处理领域尤为重要因为它们能将文本数据转换为机器学习模型能够处理的数值形式。 - 相似性表示在嵌入空间中相似的词或句子会被映射到彼此相近的位置。 - 维度缩减嵌入将高维的稀疏表示如独热编码转化为低维的稠密表示从而减少计算复杂度。 - 捕捉语义嵌入能够捕捉词语或句子之间的语义关系。例如“国王”king和“王后”queen之间的关系在嵌入空间中也会有所体现。 1ChatGPT中的嵌入 在ChatGPT中嵌入用于多个层面包括单词、短语和句子层面模型通过嵌入来理解和生成自然语言。 - 词嵌入最基本的嵌入是词嵌入将每个词转换为固定长度的向量。常见的词嵌入技术有Word2Vec、GloVe等。在Transformer架构中初始的词嵌入是通过查找嵌入矩阵实现的。 - 位置嵌入Transformer模型没有内置的序列信息因此需要添加位置嵌入来捕捉词语在句子中的位置。 - 上下文嵌入与静态词嵌入不同ChatGPT使用Transformer架构生成上下文相关的嵌入这意味着同一个词在不同上下文中会有不同的向量表示。 2嵌入的生成和使用 在训练和推理过程中嵌入起到了至关重要的作用。 训练阶段 - 模型首先将输入文本转化为词嵌入向量。 - 位置嵌入向量与词嵌入向量相加形成包含位置信息的输入嵌入。 - 这些嵌入作为输入传递给Transformer的多层自注意力机制生成更高层次的上下文嵌入。 推理阶段 - 在生成回复时模型根据输入的上下文嵌入预测下一个词的概率分布。 - 基于概率分布选取最可能的词作为输出然后更新嵌入继续生成下一个词直到生成完整的回复。 3嵌入的优势 嵌入在ChatGPT中的应用带来了很多好处 - 提高理解能力通过嵌入模型能够捕捉词与词之间的复杂语义关系从而更好地理解输入文本。 - 增强生成能力上下文嵌入帮助模型生成连贯且符合语义的回复。 - 减少计算复杂度稠密的向量表示减少了计算所需的资源提高了模型的效率。 4典型示例 假设我们有一句话“ChatGPT is a powerful language model”。在这句话中 - 每个词如“ChatGPT”、“is”等会被映射到一个固定维度的嵌入向量。 - 这些词嵌入向量将与位置嵌入向量相加形成输入嵌入。 - 输入嵌入被传递到Transformer的自注意力机制生成包含上下文信息的嵌入。 - 最终模型利用这些上下文嵌入生成针对用户输入的自然语言回复。 3 工作原理 总体目标根据所接受的训练来自互联网数十亿文本以合理的方式续写文本对于任意给定的上下文它会预测并生成下一个适当的标记即单词或符号。 1阶段一获取输入嵌入 1.1获取标记序列 输入文本被分解成一系列标记tokens标记可以是单词、子词或字符取决于具体的分词方法。例如输入句子“ChatGPT is amazing”可能会被分成如下标记序列[ChatGPT, is, amazing]。 1.2嵌入表示 - 每个标记被映射到一个高维向量嵌入向量这一步通常使用预训练的嵌入矩阵该矩阵将每个标记转换为固定长度的向量。 - 嵌入向量是一个数组表示标记的特征这些嵌入向量捕捉了词汇之间的语义关系。例如标记“ChatGPT”可能对应一个300维的向量[0.12, 0.34, ..., 0.56]。 1.3位置嵌入 为了捕捉序列中的位置信息位置嵌入被添加到标记嵌入上这样模型能够理解标记在序列中的相对位置。 2阶段二神经网络处理 2.1输入嵌入传递到Transformer模型 - 嵌入向量被传递到Transformer模型中。Transformer由多层堆叠的自注意力机制和前馈神经网络组成 - 自注意力机制允许模型在处理每个标记时关注输入序列中的所有其他标记从而捕捉上下文信息。备注GPT-2共有12个注意力块GPT-3种共有96个每个注意力块都有自己特定的注意力模式和全链接权重 2.2层层传递和变换 输入嵌入依次通过Transformer的各层。在每一层自注意力和前馈网络都会对输入进行变换生成新的嵌入向量。这些变换捕捉了输入序列中的复杂模式和关系。 2.3生成新的嵌入 通过多层的传递和变换生成一个新的嵌入向量这个向量包含了输入序列的上下文信息。 3阶段三生成输出标记 3.1输出层生成概率分布 经过Transformer处理后的最终嵌入向量被传递到输出层输出层通常是一个全连接层它将嵌入向量映射到一个包含所有可能标记的向量词汇表大小。例如词汇表大小为50000那么输出将是一个50000维的向量。 3.2计算每个标记的概率 - 输出向量中的每个值表示生成相应标记的未归一化得分logits。 - 使用softmax函数将这些得分转换为概率分布。softmax函数会对所有值进行指数运算并归一化使得这些值之和为1。 3.3选择下一个标记 基于生成的概率分布选择下一个标记选择方法可以是直接选择概率最高的标记贪心搜索也可以是按概率进行随机选择采样。 备注Transformer本质上将标记序列的原始嵌入集合转换到最终集合chatgpt选择其中最后一个嵌入并解码得到下一个标记的概率列表。chatgpt最长的路径大约400个核心层数百万神经元总共1750亿个连接所以有1750亿个权重它每生成一个新的标记都必须进行一次包括所有权重在内的计算。在实现上这些计算可按层进行高度并行计算但对于每个标记生成仍需1750亿次计算。
http://www.ho-use.cn/article/10819837.html

相关文章:

  • 惠州网站设计哪家好seo网络营销外包公司
  • 保定做网站电话机械设备行业网站建设
  • 建网站非要做外链吗薪酬体系搭建工具
  • 做网站难吗_挣钱吗东莞东坑网站设计
  • 建站小程序快速上线你们公司的网站都备案了吗
  • 建设的基本流程网站怎么做网页赚取点击率从而赚钱
  • 深圳网站制作网站建设零基础网站制作视频教程
  • 用什么网站可以做电子书设计网页代码源代码
  • 贵州省城乡住房和建设厅网站老干支部网站建设方案
  • 电商网站首页设计规范手机上的软件网站建设
  • 化工原材料网站建设怎么学平面设计啊
  • 自己可以做百度网站吗电子商务教材电子版
  • 柯城网站建设免费在线观看高清影片
  • 大流量网站开发网站备案被注销
  • 联英人才网重庆招聘网百度seo排名优化助手
  • 成都大丰网站建设例表网网站排名优化服务商
  • 英文网站建设 潍坊手机电商网站 模板
  • 建设外贸企业网站wordpress 小学生
  • 常熟市住房建设局网站门户网站设计与开发
  • 做家常便饭网站韶关住房和城乡建设网站
  • 建工网官方网站标准网站建设哪家便宜
  • 微网站如何建立的地下城钓鱼网站怎么做
  • 可以做翻译兼职的网站有哪些wordpress服务器要求
  • 重庆秀山网站建设价格google chrome官网
  • 怎么建设网站最便宜公司网站简介怎么做
  • 山西推广型网站制作风铃网做微网站要钱吗
  • 动漫网站怎么做的郴州seo公司
  • 安徽外贸网站google建站网站建设论文3000字范文
  • 怎么建立图片的网站吗wordpress 插件 块
  • 网站建设维护费最新军事新闻热点事件