文昌市建设局网站平台推广引流怎么做

张小明 2026/1/14 16:37:03
文昌市建设局网站,平台推广引流怎么做,wordpress的seo优化,网站管理与维护方案在transformer中#xff0c;embedding层位于encoder和decoder之前#xff0c;主要负责进行语义编码。Embedding层将离散的词汇或符号转换为连续的高维向量#xff0c;使得模型能够处理和学习这些向量的语义关系。通过嵌入表示#xff0c;输入的序列可以更好地捕捉到词与词之…在transformer中embedding层位于encoder和decoder之前主要负责进行语义编码。Embedding层将离散的词汇或符号转换为连续的高维向量使得模型能够处理和学习这些向量的语义关系。通过嵌入表示输入的序列可以更好地捕捉到词与词之间的相似性和关系。此外在输入到编码器和解码器之前通常还会添加位置编码Positional Encoding因为transformer没有内置的序列顺序信息也就是说Attention机制本身会带来位置信息的丧失。一、位置编码概述位置信息为什么重要它可以从哪里来首先位置信息就是顺序的信息字符排列的顺序会影响语句的理解还记得“屡战屡败”和“屡败屡战”的例子吗同样的词在句子不同的地方出现也可能会有不同的含义我们说transformer丧失了位置信息意思是transformer并不理解样本与样本之间是按照什么顺序排列的也就是不知道样本在序列中具体的位置。还记得RNN和LSTM是如何处理数据的吗RNN和LSTM以序列的方式处理输入数据即一个时间步一个时间步地处理输入序列的每个元素。每个时间步的隐藏状态依赖于前一个时间步的隐藏状态。这种机制天然地捕捉了序列的顺序信息。由于RNN和LSTM在处理序列时会保留前一时间步的信息并传递到下一时间步所以它们能够内在地理解和处理序列的时间依赖关系和顺序信息。然而与RNN和LSTM不同transformer并不以序列的方式逐步处理输入数据而是一次性处理整个序列。Attention能够通过点积的方式一次性计算出所有向量之间的相关性、并且多头注意力机制中不同的头还可以并行因此Attention与transformer缺乏天然的顺序信息。相关性计算过程中有标识这些标识不能够成为位置信息吗什么信息才算是位置信息/顺序信息呢在注意力机制中权重矩阵softmax(QKTdk)softmax(\frac{QK^{T}}{\sqrt{d_k}})softmax(dk​​QKT​)中的每个元素aija_{ij}aij​表示序列中位置iii和位置jjj之间的相关性但是却并没有假设这两个相关的元素之间的位置信息。具体来说虽然我们使用了1、2这样的脚标但Attention实际在进行计算的时候只会认知两个具体的相关性数字并没有显性地认知到脚标——Z(Attention)(a11a12a21a22)(v11v12v13v21v22v23)((a11v11a12v21)(a11v12a12v22)(a11v13a12v23)(a21v11a22v21)(a21v12a22v22)(a21v13a22v23)) \mathbf{Z(Attention)} \begin{pmatrix} a_{11} a_{12} \\ a_{21} a_{22} \end{pmatrix} \begin{pmatrix} v_{11} v_{12} v_{13} \\ v_{21} v_{22} v_{23} \end{pmatrix} \begin{pmatrix} (a_{11}v_{11} a_{12}v_{21}) (a_{11}v_{12} a_{12}v_{22}) (a_{11}v_{13} a_{12}v_{23}) \\ (a_{21}v_{11} a_{22}v_{21}) (a_{21}v_{12} a_{22}v_{22}) (a_{21}v_{13} a_{22}v_{23}) \end{pmatrix}Z(Attention)(a11​a21​​a12​a22​​)(v11​v21​​v12​v22​​v13​v23​​)((a11​v11​a12​v21​)(a21​v11​a22​v21​)​(a11​v12​a12​v22​)(a21​v12​a22​v22​)​(a11​v13​a12​v23​)(a21​v13​a22​v23​)​)由于transformer模型放弃了“逐行对数据进行处理”的方式而是一次性处理一整张表单因此它不能直接像循环神经网络RNN那样在训练过程中就捕捉到单词与单词之间的位置信息。在经典的深度学习场景当中最典型的顺序信息就是数字的大小。由于数字天生是带有大小顺序的因此数字本身可以被认为是含有顺序一个信息只要让有顺序的信息和有顺序的数字相匹配就可以让算法天然地认知到相应的顺序。因此我们自然而然地想要对样本的位置本身进行“编码”利用数字本身自带的顺序来告知transformer。位置信息如何被告知给Attention/transformer这样的算法为了解决位置信息的问题transformer引入了位置编码positional encoding技术来补充语义词嵌入。我们首先将样本的位置转变成相应的数字或向量然后让位置编码的这个向量被加到原有的词嵌入向量embedding向量上这样模型就可以同时知道一个词的语义和它在句子中的位置。位置编码使用了一种特殊的函数这个函数会为序列中的每个位置生成一个向量。对于一个特定的位置这个函数生成的向量在所有维度上的值都是不同的。这保证了每个位置的编码都是唯一的而且不同位置的编码能够保持一定的相对关系。在transformer的位置编码中我们需要对每个词的每个特征值给与位置编码所有这些特征位置的编码共同组合成了一个样本的位置编码。例如当一个样本拥有4个特征时我们的位置编码也会是包含4个数字的一个向量而不是一个单独的编码。因此位置编码矩阵是一个与embedding后的矩阵结构相同的矩阵。在transformer模型中词嵌入和位置编码被相加然后输入到模型的第一层。这样transformer就可以同时处理词语的语义和它在句子中的位置信息。这也是transformer模型在处理序列数据特别是自然语言处理任务中表现出色的一个重要原因。二、正余弦位置编码2.1 正余弦位置编码介绍在过去最为经典的位置编码就是OrdinalEncoder顺序编码但在transformer中我们需要的是一个编码向量而非单一的编码数字因此OrdinalEncoder编码就不能使用了。在众多的、构成编码向量的方式中transformer选择了“正余弦编码”这一特别的方式。让我们一起来看看正余弦编码的含义——首先正余弦编码是使用正弦函数和余弦函数来生成具体编码值的编码方式。对于任意的词向量也就是数据中的一个样本正余弦编码在偶数维度上采用了sin函数来编码奇数维度采用了cos函数来编码sin函数与cos函数交替使用最终构成一个多维度的向量——通过对不同的维度进行不同的三角函数编码来构成一串独一无二的编码组合。这种编码组合与embedding类似都是将信息投射到一个高维空间当中只不过正余弦编码是将样本的位置信息也就是样本的索引投射到高维空间中且每一个特征的维度代表了这个高维空间中的一维度。对正余弦编码来说编码数字本身是依赖于样本的位置信息索引、所有维度的编号、以及总维度数三个因子计算出来的。具体来看正余弦编码的公式如下正弦位置编码Sinusoidal Positional EncodingPE(pos,2i)sin⁡(pos100002idmodel)PE_{(pos, 2i)} \sin \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i)​sin(10000dmodel​2i​pos​)余弦位置编码Cosine Positional EncodingPE(pos,2i1)cos⁡(pos100002idmodel) PE_{(pos, 2i1)} \cos \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i1)​cos(10000dmodel​2i​pos​)其中——pos代表样本在序列中的位置也就是样本的索引是三维度中的seq_len/vocal_size/time_step这个维度上的索引2i2i2i和2i12i12i1分别代表embedding矩阵中的偶数和奇数维度索引当我们让i从0开始循环增长时可以获得[0,1,2,3,4,5,6…]这样的序列。dmodeld_{\text{model}}dmodel​代表embedding后矩阵的总维度。在这里你可以选择停下脚步、开启下一节课程你也可以选择继续听更深入的关于位置编码的内容。这里有选择的原因是位置编码作为深度学习和时间序列处理过程中非常重要的一种技术在不同的场景下被频繁地使用我们可以将其用于纹理建模、声音处理、信号处理、震动分析等多种场合但同时我们也将它作为一种行业惯例在进行使用因此你或许无需对正余弦位置编码进行特别深入的探索。但正余弦位置编码本身是一种非常奇妙的结构在接下来的内容中我将带你仔细剖析正余弦位置编码的诸多细节和意义。2.2 正余弦位置编码意义为什么要使用正余弦编码它有什么意义正弦位置编码Sinusoidal Positional EncodingPE(pos,2i)sin⁡(pos100002idmodel)PE_{(pos, 2i)} \sin \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i)​sin(10000dmodel​2i​pos​)余弦位置编码Cosine Positional EncodingPE(pos,2i1)cos⁡(pos100002idmodel) PE_{(pos, 2i1)} \cos \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i1)​cos(10000dmodel​2i​pos​)首先我们先来看PosPos是样本的索引它有多大会取决于实际的数据尺寸。如果一个时间序列或文本数据是很长的序列那Pos数值本身也会变得很大。假设我们使用很大的数值与原本的embedding序列相加那位置编码带来的影响可能会远远超过原始的语义、会导致喧宾夺主的问题因此我们天然就有限制位置编码的大小的需求。在这个角度来看使用sin和cos这样值域很窄的函数、就能够很好地限制位置编码地大小。正余弦编码的意义①sin和cos函数值域有限可以很好地限制位置编码的数字大小。假设我们使用的是单变量序列那我们或许只需要sin(pos)或者cos(pos)看起来就足够了但为了给每个不同的维度都进行编码我们肯定还要做点儿别的文章。首先位置信息和语义信息一样当我们将其投射到高维空间时我们也在尝试用不同的维度来解读位置信息。但我们使用正弦余弦这样的三角函数时如何能够将信息投射到不同的维度呢——答案是创造各不相同的sin和cos函数。虽然都是正弦/余弦函数但我们可以为函数设置不同的频率来获得各种高矮胖瘦的函数——importnumpyasnpimportmatplotlib.pyplotasplt# 定义绘制正弦函数的函数defplot_sin_functions(num_functions):ynp.linspace(0,10,1000)# 定义 y 轴范围colorsplt.cm.viridis(np.linspace(0,1,num_functions))# 生成颜色序列fig,aysplt.subplots(3,3,figsize(12,9))# 创建3y3子图# 绘制每个正弦函数fori,ayinenumerate(ays.flat):ifinum_functions:frequency(i1)*0.5# 通过增加倍数来调整频率ynp.sin(frequency*y)ay.plot(y,y,labelfFunction{i1},colorcolors[i])ay.set_title(fFunction{i1})ay.set_ylabel(y)ay.set_ylabel(sin(y))ay.legend()plt.tight_layout()plt.show()# 绘制9个正弦函数plot_sin_functions(9)​如果能够将不同的特征投射到不同频率的sin和cos函数上就可以让每个特征都投射到一个独特的维度上各类不同的信息维度共同构成一个解构位置信息的空间就能够形成对位置信息的深度解读。正余弦编码的意义②通过调节频率我们可以得到多种多样的sin和cos函数从而可以将位置信息投射到每个维度都各具特色、各不相同的高维空间以形成对位置信息的更好的表示。正弦位置编码Sinusoidal Positional EncodingPE(pos,2i)sin⁡(pos100002idmodel)PE_{(pos, 2i)} \sin \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i)​sin(10000dmodel​2i​pos​)余弦位置编码Cosine Positional EncodingPE(pos,2i1)cos⁡(pos100002idmodel) PE_{(pos, 2i1)} \cos \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i1)​cos(10000dmodel​2i​pos​)接下来的问题就是如何赋予sin和cos函数不同的频率了——在sin和cos函数的自变量上乘以不同的值就可以获得不同频率的sin和cos函数。ysin(frequency∗y)y sin(frequency * y)ysin(frequency∗y)在位置编码的场景下我们的自变量是样本的位置pos因此特征的位置(2i和2i1)就可以被用来创造不同的频率。在这里我们对pos这个数字进行了scaling压缩的行为。具体地说我们使用了100002idmodel10000^{\frac{2i}{d_{\text{model}}}}10000dmodel​2i​来作为我们缩放的因子将它作为除数放在pos的下方。但这其实是在pos的基础上乘以1100002idmodel\frac{1}{10000^{\frac{2i}{d_{\text{model}}}}}10000dmodel​2i​1​这个频率的行为。因此引入特征位置本身来进行缩放可以带来不同的频率帮助我们将位置信息pos投射不同频率的三角函数上确保不同位置pos在不同的特征维度2i和2i1上有不同的编码值。那下一个问题是这些正余弦函数的频率是随机的吗我们应该如何控制它呢正余弦编码最为巧妙的地方来了——通过让位置信息pos乘以1100002idmodel\frac{1}{10000^{\frac{2i}{d_{\text{model}}}}}10000dmodel​2i​1​这个频率特征编号比较小的特征会得到大频率会被投射到高频率的正弦函数上而特征编号较大的特征会得到小频率会被投射到低频率的正弦函数上importnumpyasnpimportmatplotlib.pyplotasplt# 设置参数d_model512inp.arange(0,512)# 维度索引从0到20# 绘制图像plt.figure(figsize(14,8))forposinpos_values:values1/(10000**(2*i/d_model))plt.plot(i,values,labelfpos{pos})plt.title(i vs 1 / (10000^(2i/d_model)))plt.ylabel(feature_indey)plt.ylabel(1 / (10000^(2i/d_model)))plt.legend()plt.grid(True)plt.show()​在这张图像上横坐标是特征的位置编号i纵坐标是1100002idmodel\frac{1}{10000^{\frac{2i}{d_{\text{model}}}}}10000dmodel​2i​1​很显然特征编号越大频率越小。对三角函数来说频率越小意味着当自变量移动1个单位时函数值变化越小频率越高当自变量移动1个单位时函数值变化就越剧烈。importnumpyasnpimportmatplotlib.pyplotasplt# 定义绘制正弦函数的函数defplot_sin_functions():ynp.linspace(0,10,1000)# 定义 y 轴范围fig,aysplt.subplots(1,2,figsize(12,6))# 创建1y2子图# 绘制频率为1的正弦函数frequency11y1np.sin(frequency1*y)ays[0].plot(y,y1,labelfSin Function (Frequency {frequency1}))ays[0].set_title(fSin Function with Frequency {frequency1})ays[0].set_ylabel(y)ays[0].set_ylabel(sin(y))ays[0].legend()# 绘制频率为0.1的正弦函数frequency20.1y2np.sin(frequency2*y)ays[1].plot(y,y2,labelfSin Function (Frequency {frequency2}))ays[1].set_title(fSin Function with Frequency {frequency2})ays[1].set_ylabel(y)ays[1].set_ylabel(sin(y))ays[1].legend()plt.tight_layout()plt.show()# 绘制两个正弦函数在横向排列的子图中plot_sin_functions()​因此这里你就可以发现非常有趣的事实了——特征编号小的特征会随着特征值的变化而产生剧烈的变化即便是相邻的两个样本在最初的几个特征进行位置编码时也会产生迥然不同的结果但是随着特征编号的变大特征值的变化带来的变化会越来越小并且会小到呈现出一种单调性只上升、或者只下降。当一个信息被映射到这样的高维空间时我们会认为这个信息的全局趋势和局部细节都被捕捉到了。其中特征编号比较大的那些维度捕捉到的是样本与样本之间按顺序排列的全局趋势而特征编号比较小的那些维度捕捉到的是样本与样本的位置之间本身的细节差异。因此正余弦编码是一种能够同时捕捉到全局位置趋势和细节位置差异的编码方式。正余弦编码的意义③通过独特的计算公式我们可以让特征编号小的特征被投射到剧烈变化的维度上并且让特征编号大的特征被投射到轻微变化、甚至完全单调的维度上从而可以让小编号特征去捕捉样本之间的局部细节差异让大编号特征去捕捉样本之间按顺序排列的全局趋势。从这个角度来看其实我们只需要设置一个随着i的增长变得越来越小的公式就可以了实际公式本身其实并不一定非要是1100002idmodel\frac{1}{10000^{\frac{2i}{d_{\text{model}}}}}10000dmodel​2i​1​。但这个公式考虑了i相对于特征总量的相对位置并且还使用了指数函数它是能够最大程度放大i的影响的公式之一因此我们使用它可以说是出于一种数学上的便利。当然你也可以使用其他的公式只要能够保证i的增长会让频率本身变得越来越小即可。现在我们可以来看一个具体例子通过绘制图像来让大家清晰地看到正余弦编码是如何帮助我们捕捉局部细节和总体趋势的。假设现在有30个样本索引为1-30每个样本有4个特征。我们将使用正弦函数编码偶数维度使用余弦函数编码奇数维度进行正余弦编码的具体计算。正弦位置编码Sinusoidal Positional EncodingPE(pos,2i)sin⁡(pos100002idmodel)PE_{(pos, 2i)} \sin \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i)​sin(10000dmodel​2i​pos​)余弦位置编码Cosine Positional EncodingPE(pos,2i1)cos⁡(pos100002idmodel) PE_{(pos, 2i1)} \cos \left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)PE(pos,2i1)​cos(10000dmodel​2i​pos​)我请GPT帮我完成了相应的计算流程最终生成了如下的表单importpandasaspd positionpd.read_csv(rD:\pythonwork\2024DL\Position_Encoding_for_30_Samples.csv)position维度0维度1维度2维度300.8414710.5403020.0100000.99995010.909297-0.4161470.0199990.99980020.141120-0.9899920.0299960.9995503-0.756802-0.6536440.0399890.9992004-0.9589240.2836620.0499790.9987505-0.2794150.9601700.0599640.99820160.6569870.7539020.0699430.99755170.989358-0.1455000.0799150.99680280.412118-0.9111300.0898790.9959539-0.544021-0.8390720.0998330.99500410-0.9999900.0044260.1097780.99395611-0.5365730.8438540.1197120.992809120.4201670.9074470.1296340.991562130.9906070.1367370.1395430.990216140.650288-0.7596880.1494380.98877115-0.287903-0.9576590.1593180.98722716-0.961397-0.2751630.1691820.98558517-0.7509870.6603170.1790300.983844180.1498770.9887050.1888590.982004190.9129450.4080820.1986690.980067200.836656-0.5477290.2084600.97803121-0.008851-0.9999610.2182300.97589722-0.846220-0.5328330.2279780.97366623-0.9055780.4241790.2377030.97133824-0.1323520.9912030.2474040.968912250.7625580.6469190.2570810.966390260.956376-0.2921390.2667310.963771270.270906-0.9626060.2763560.96105528-0.663634-0.7480580.2859520.95824429-0.9880320.1542510.2955200.955336position.may()维度00.990607维度10.991203维度20.295520维度30.999950dtype: float64position.min()维度0 -0.999990 维度1 -0.999961 维度20.010000维度30.955336dtype: float64在这个表单中有4个特征全部进行正余弦编码后的结果很显然特征编号较小的特征1和2特征波动很大但是特征编号相对较大的特征3和4波动就不是那么大。我们只计算了4个特征是因为我们要绘制的3d图像只能够容纳3个特征事实上当特征数量变得很多时大部分特征都会呈现像特征3和特征4一样这样平缓的变化方式。为了展现局部特征和整体趋势的捕捉我们使用特征2、3、4来绘制了3D图像在图像中我们可以明显地看到局部细节和总体趋势的捕捉importplotly.graph_objsasgoimportpandasaspd# 数据importpandasaspd positionpd.read_csv(rD:\pythonwork\2024DL\Position_Encoding_for_30_Samples.csv)# 绘制3D散点图figgo.Figure(data[go.Scatter3d(xposition[维度1],yposition[维度2],zposition[维度3],modemarkers,markerdict(size6,colorposition[维度3],# 设置颜色为维度3colorscaleViridis,# 颜色范围opacity1),textposition.index.tolist(),# 添加样本编号作为文本标签textpositiontop center)])fig.update_layout(title3D Scatter Plot,scenedict(xaxisdict(title维度1,range[-1.5,1.5]),yaxisdict(title维度2,range[0,0.3]),zaxisdict(title维度3,range[0.95,1])),width800,# 调整图像宽度height800# 调整图像高度)fig.show()但除此之外正余弦编码还有一些额外的好处——首先最重要的是其函数的周期性带来泛化性在模型训练过程中我们可能使用的都是序列长度小于20的数据但是当实际应用中遇到一个序列长度为50的数据正弦和余弦函数的周期性意味着即使模型在训练时未见过某个位置它仍然可以生成一个合理的位置编码。它可用泛化到不同长度的序列。不增加额外的训练参数当我们在一个已经很大的模型如 GPT-3 或 BERT上添加位置信息时我们不希望增加太多的参数因为这会增加训练成本和过拟合的风险。正弦和余弦位置编码不增加任何训练参数。即便是相同频率下的正余弦函数也可以通过周期性带来部分的相对位置信息可以比绝对位置信息更有效正弦和余弦函数的周期性特征为模型提供了一种隐含的相对位置信息使得模型能够更有效地理解序列中不同位置之间的相对关系。importnumpyasnpimportmatplotlib.pyplotasplt# 定义绘制正弦函数的函数defplot_sin_functions():ynp.linspace(0,10,1000)# 定义 y 轴范围fig,aysplt.subplots(1,2,figsize(12,6))# 创建1y2子图# 绘制频率为1的正弦函数frequency11y1np.sin(frequency1*y)ays[0].plot(y,y1,labelfSin Function (Frequency {frequency1}))ays[0].set_title(fSin Function with Frequency {frequency1})ays[0].set_ylabel(y)ays[0].set_ylabel(sin(y))ays[0].legend()# 绘制频率为0.1的正弦函数frequency20.1y2np.sin(frequency2*y)ays[1].plot(y,y2,labelfSin Function (Frequency {frequency2}))ays[1].set_title(fSin Function with Frequency {frequency2})ays[1].set_ylabel(y)ays[1].set_ylabel(sin(y))ays[1].legend()plt.tight_layout()plt.show()# 绘制两个正弦函数在横向排列的子图中plot_sin_functions()
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做旅游攻略去什么网站好商业网站建设公司推荐

在Linux开发环境中,glibc版本管理是每个开发者都可能遇到的挑战。glibc-all-in-one项目正是为解决这一痛点而生,它提供了一个便捷的glibc二进制文件和调试文件下载器,让Linux开发工具的使用变得更加高效。 【免费下载链接】glibc-all-in-one …

张小明 2026/1/9 2:19:50 网站建设

中国建设招标网住建部网站快手做任务网站

Kotaemon:开源文档问答系统实战指南 在企业知识爆炸式增长的今天,如何让员工快速、准确地从海量文档中获取所需信息,已成为智能化转型的核心命题。大语言模型(LLM)看似无所不能,但其“幻觉”问题和静态知识…

张小明 2026/1/9 1:27:19 网站建设

广西新站seo小程序外包多少钱

一、背景意义 随着全球对可持续发展和资源利用效率的日益关注,木材作为一种重要的自然资源,其质量检测与管理显得尤为重要。木材在建筑、家具制造及其他工业领域中广泛应用,其物理和机械性能直接影响到产品的安全性和耐用性。木材裂纹是影响…

张小明 2026/1/8 21:01:10 网站建设

做一个网站的成本学校网站建设招标方案

第一章:从重复表单到智能自动化:咖啡订购的痛点变革在传统办公环境中,团队成员每日通过邮件或即时通讯工具提交咖啡订单,行政人员手动汇总信息并完成采购。这一过程不仅耗时,还极易因沟通遗漏导致错误。随着团队规模扩…

张小明 2026/1/7 19:33:35 网站建设