<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.swarma.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Word2vec</id>
	<title>集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.swarma.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Word2vec"/>
	<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Word2vec"/>
	<updated>2026-11-04T06:48:57Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45505</id>
		<title>Word2Vec</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45505"/>
		<updated>2025-07-11T02:26:53Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Word2Vec''' 是一种将词语（Word）映射为连续向量（Vector）的高效建模技术，由 Google 的 Tomas Mikolov 团队于 2013 年提出&amp;lt;ref&amp;gt;Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[J]. Advances in neural information processing systems, 2013, 26.&amp;lt;/ref&amp;gt;。通过在大规模文本语料中自动学习，Word2Vec 将每个词表示为一个低维、稠密、连续的向量（即词嵌入Word Embedding），这种向量能够捕捉词语之间的语义和句法关系。与传统将词视为离散 ID 的方法（如 N-gram）不同，Word2Vec 将词嵌入到连续空间中，相似意义的词在向量空间中距离更近，为后续复杂模型（如 [[Transformer]]）奠定了基础。&lt;br /&gt;
&lt;br /&gt;
Word2Vec 的底层是一个浅层[[神经网络]]，采用 [[Skip-gram]] 或 [[CBOW]]（Continuous Bag of Words 连续词袋模型）两种架构进行训练。训练后得到的词向量被广泛应用于[[NLP]]（Natural Language Processing 自然语言处理）任务中，包括机器翻译（Machine Translation）、信息检索（Information Retrieval）、文本分类（Text Classification）和[[情感分析]]（Sentiment Analysis）等，成为当前 NLP 领域的重要基础方法之一。&lt;br /&gt;
=='''历史背景'''==&lt;br /&gt;
20 世纪 80 年代，人们开始尝试使用神经网络将单词和概念表示为向量&amp;lt;ref&amp;gt;Hinton G E. Learning distributed representations of concepts[C]//Proceedings of the Annual Meeting of the Cognitive Science Society. 1986, 8.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&amp;lt;/ref&amp;gt;。2010 年，Tomáš Mikolov（当时就读于布尔诺理工大学）与合著者一起将单隐层的简单[[递归]]神经网络应用于[[语言建模]]&amp;lt;ref&amp;gt;Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Interspeech. 2010, 2(3): 1045-1048.&amp;lt;/ref&amp;gt;。Word2vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学（Brno University of Technology）完成了神经网络语言建模的博士研究后，加入了Google，与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作，致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限，Mikolov 团队提出了两种简洁高效的浅层神经网络架构，即CBOW和 Skip-gram，统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标，一经发布便在NLP领域引起了广泛关注和应用。&lt;br /&gt;
&lt;br /&gt;
使用 Word2vec 算法创建的嵌入向量与早期的算法（如使用 n-grams 和潜在语义分析的算法）相比具有一些优势。[[GloVe]] 是斯坦福大学的一个团队专门作为竞争对手开发的，原始论文指出 GloVe 比 Word2vec 有多处改进。Mikolov 认为，这种比较是不公平的，因为 GloVe 是在更多数据上训练出来的，而 [[FastText]] 项目表明，在相同数据上训练出来的 word2vec 更胜一筹。不过截至到现在，'''直接的 Word2vec 方法被认为是 &amp;quot;过时的&amp;quot;'''。基于transformer的模型，如 [[ELMo]] 和 [[BERT]]，在类似 Word2vec 的词嵌入模型之上添加了多个神经网络关注层，已被视为 NLP 领域的最新技术。&lt;br /&gt;
&lt;br /&gt;
== '''技术原理''' ==&lt;br /&gt;
Word2vec 的目的在于为每个词汇都分配一个稠密的向量，能够做到相比传统的稀疏向量（如 [[one-hot 编码]]），更具表达能力和计算效率。形式上也就是，如果词汇表为 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;，每个词 &amp;lt;math&amp;gt;w \in V&amp;lt;/math&amp;gt; 被映射为向量 &amp;lt;math&amp;gt;\mathbf{v}_w \in \mathbb{R}^d&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;d \ll |V|&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示：CBOW或Skip-gram。在这两种架构中，Word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口，这种设计来源于[[词的分布式假设]]，由语言学家 Zellig Harris 在1954年提出。它的核心思想是：“上下文相似的词具有相似的意义”（You shall know a word by the company it keeps）。即如果两个词在相似的上下文中出现，那么它们的意义可能也相似。&lt;br /&gt;
&lt;br /&gt;
CBOW 可被视为一项 &amp;quot;填空 &amp;quot;任务，其中词汇嵌入代表了词汇影响上下文窗口中其他词汇相对概率的方式。语义相似的词应该以相似的方式影响这些概率，因为语义相似的词应该在相似的语境中使用。上下文词语的顺序不会影响预测（词袋假设）。&lt;br /&gt;
&lt;br /&gt;
Skip-gram与CBOW相反，模型使用当前词来预测周围的语境词窗口。与较远的上下文词相比，Skip-gram更重视附近的上下文词。&lt;br /&gt;
&lt;br /&gt;
模型训练完成后，学习到的词向量会被放置在向量空间中，这样，在语料库中具有共同语境的词（即语义和句法上相似的词）就会在空间中彼此靠近。相异程度较高的词在空间中的位置则相距较远。&lt;br /&gt;
&lt;br /&gt;
===模型架构===&lt;br /&gt;
==== CBOW ====&lt;br /&gt;
[[文件:CBOW.png|替代=|缩略图|CBOW 模型的三层结构：输入层、嵌入层和输出层。模型以上下文词为输入，通过嵌入矩阵将其转换为词向量，并对这些向量求平均得到上下文表示,该表示输入到输出层，用于预测中心词。]]&lt;br /&gt;
CBOW是由 Mikolov 等人在 2013 年提出的一种经典的词嵌入模型，是 Word2Vec 的两种核心架构之一。CBOW 通过上下文词汇预测当前词，从而学习词向量。CBOW 的输入是目标词周围的上下文词汇（窗口内的相邻词），输出是对目标词 &amp;lt;math&amp;gt;V_t&amp;lt;/math&amp;gt; 的预测。模型的目标是：'''根据上下文词汇预测中心词'''。设定窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，即在目标词左右各取 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; 个词作为上下文，那么对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。模型的结构分为三层，分别是输入层、嵌入层（Embedding）、输出层。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''&lt;br /&gt;
&lt;br /&gt;
每个上下文词 &amp;lt;math&amp;gt;w_{t+i}&amp;lt;/math&amp;gt; 以 one-hot 向量表示为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{x}_{t+i} \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中 &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; 为词汇表大小。词向量通过嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 得到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{v}_{t+i} = W^\top \mathbf{x}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''嵌入层：'''&lt;br /&gt;
&lt;br /&gt;
对上下文词向量求平均，获得上下文表示向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t = \frac{1}{2c} \sum_{\substack{-c \le i \le c \\ i \ne 0}} \mathbf{v}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
设输出矩阵为 &amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt;，对应词 &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; 的输出得分为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_j = \mathbf{v}'_j \cdot \mathbf{h}_t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对所有词使用 softmax 得到目标词的预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t = j \mid C_t) = \frac{\exp(u_j)}{\sum_{k=1}^{|V|} \exp(u_k)} = \frac{\exp(\mathbf{v}'_j \cdot \mathbf{h}_t)}{\sum_{k=1}^{|V|} \exp(\mathbf{v}'_k \cdot \mathbf{h}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
最大化整个语料的预测对数概率，即最小化负对数似然损失函数（NLL）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid C_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
训练完成后，词向量可以从输入嵌入矩阵 &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; 提取，也可以从输出矩阵 &amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt; 提取，或者对两者进行平均得到最终词向量。&lt;br /&gt;
[[文件:Skipgram.png|缩略图|Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。]]&lt;br /&gt;
&lt;br /&gt;
====Skip-gram 模型====&lt;br /&gt;
Skip-gram 是 Word2Vec 的另一种核心模型，由 Mikolov 等人于 2013 年提出。与 CBOW通过上下文预测中心词不同，Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。同样假设窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''一段文本中心词汇&amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;的one-hot编码作为输入向量 &amp;lt;math&amp;gt;\mathbf{x}_t \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''投影层：'''&lt;br /&gt;
&lt;br /&gt;
输入向量与嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{V \times d}&amp;lt;/math&amp;gt; 相乘，得到词向量 &amp;lt;math&amp;gt;\mathbf{h}&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h} = W^\top \mathbf{v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
对于上下文中每个词 &amp;lt;math&amp;gt;w_{t+j}&amp;lt;/math&amp;gt;（&amp;lt;math&amp;gt;j \in \{-c,\ldots,-1,1,\ldots,c\}&amp;lt;/math&amp;gt;），计算其预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_{t+j} \mid w_t) = \frac{\exp(\mathbf{v}'_{w_{t+j}} \cdot \mathbf{v}_t)}{\sum_{w \in V} \exp(\mathbf{v}'_w \cdot \mathbf{v}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 是输出权重矩阵，&amp;lt;math&amp;gt;\mathbf{v}'_w&amp;lt;/math&amp;gt; 是对应词的输出向量。&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram 通过最大化所有中心词和上下文词对的条件概率来训练模型，损失函数为负对数似然：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L} = - \frac{1}{T} \sum_{t=1}^T \sum_{\substack{-c \le j \le c \\ j \ne 0}} \log P(w_{t+j} \mid w_t)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
在Skip-gram中，词向量即为嵌入层之后所得到的向量，而不同于CBOW，Skip-gram的输出矩阵W'虽然也可以用来作为获得词向量的依据，但是其含义是中心词在上下文中的角色，在学习词汇之间关系的任务中可能使用W'作为词向量会有更好的表现。&lt;br /&gt;
&lt;br /&gt;
相比之下，Skip-gram的效果要优于CBOW，这是因为CBOW在平均了词向量之后丧失了词汇的位置信息，丢失了词汇之间的关联性，因此目前各种工程实现中常用Skip-gram模型。&lt;br /&gt;
&lt;br /&gt;
===训练方法===&lt;br /&gt;
无论是CBOW还是Skip-gram，总是需要遍历整个词表，因此计算代价很大，所以就有了两种近似的计算方法，负采样与层次softmax。这两个是 Word2Vec 中非常重要的训练加速策略，它们用于高效地优化输出词的概率分布。&lt;br /&gt;
&lt;br /&gt;
'''负采样（Negative Sampling）:'''&lt;br /&gt;
&lt;br /&gt;
负采样的核心思想在于将原始问题转换成一个[[二分类问题]]，让模型只区分正样本和负样本，例如在Skip-gram中，对于一个中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 和一个正确的上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt;，正确的上下文词被称为正样本。同时人为给出错误的上下文文本 &amp;lt;math&amp;gt;w'_{o_i}&amp;lt;/math&amp;gt;，也就是负样本。负样本的采样一般按照词频 &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; 的 &amp;lt;math&amp;gt;3/4&amp;lt;/math&amp;gt; 次方作为采样概率，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w'_{o_i}) \propto U(w'_{o_i})^{0.75}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
负采样目的在于最小化负样本与中心词一起出现的概率，同时最大化正样本与中心词一起出现的概率，将softmax替换为sigmoid函数，得到新的损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{Skip-gram} = \log\sigma(\mathbf{v}^\top_{w_o} \mathbf{v}_{w_t}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{v}_{w_t})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; 是sigmoid函数，&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; 为负样本个数。同样，该方法也能应用在CBOW模型中，只是负样本变成了中心词：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{CBOW} = \log\sigma(\mathbf{v}^\top_{w_t} \mathbf{h}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{h})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不过在实际应用中大多数时候使用Skip-gram，因此负采样在CBOW中的应用很少。&lt;br /&gt;
&lt;br /&gt;
'''层次 Softmax（Hierarchical Softmax）:'''&lt;br /&gt;
&lt;br /&gt;
层次softmax的核心思路是根据词汇的词频构建一个霍夫曼树，每个叶节点代表一个词汇，而预测一个词汇就是沿着树走的一条路径，对应的也就是一个不断重复的二分类问题，因此每个目标词汇 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 都会被编码为一串二进制编码：&lt;br /&gt;
&amp;lt;math&amp;gt;code(w_t)=(b_1, b_2, \ldots, b_L), b_i \in {0,1}&amp;lt;/math&amp;gt;&lt;br /&gt;
而这条路径上的非叶子节点被记为 &amp;lt;math&amp;gt;n_1, n_2, \ldots, n_L&amp;lt;/math&amp;gt;。因此，在Skip-gram中，给定中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;  与上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt; 之后，上下文词的条件概率就变成了：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(w_o \mid w_t) = \prod_{i=1}^L(w_o) \sigma (|1-b_i|\mathbf{v}_{n_i}^\top\mathbf{v}_{w_t})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\mathbf{v}_{n_i}&amp;lt;/math&amp;gt;是路径节点的向量，相当于原始输出矩阵&amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt;。损失函数为最大化词对的出现概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \sum_{(w_t, w_o) \in D} \log P(w_o \mid w_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样，层次softmax也可以应用于CBOW中，条件概率中的目标词词向量更换为了上下文词汇的平均词向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t \mid \text{context}) = \prod_{i=1}^{L(w_t)} \sigma\left( [1 - b_i(w_t)] \cdot \mathbf{v}_{n_i}^\top \mathbf{h} \right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此也能够得到对应的损失函数。&lt;br /&gt;
&lt;br /&gt;
=='''应用领域'''==&lt;br /&gt;
&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
Word2Vec 是现代 NLP 系统中最早成功实现无监督预训练嵌入层的技术之一，它能够将文本中的词汇转换为稠密的向量表示，并保留语义与句法信息，为各种语言理解与生成任务提供了统一的向量空间支持。&lt;br /&gt;
&lt;br /&gt;
==== 语义分析 ====&lt;br /&gt;
在语义分析方面，Word2Vec 能够通过词向量之间的相对距离和方向关系建模词义相似度与句法结构&amp;lt;ref&amp;gt;Barkan O. Bayesian neural word embedding[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2017, 31(1).&amp;lt;/ref&amp;gt;。例如，在词义消歧任务中，如果句子中出现了歧义词“bank”，模型可以利用其与上下文词（如“money”或“river”）之间的向量相似性，推断其在当前语境中是“银行”还是“河岸”。情感分析也是 Word2Vec 的典型应用场景之一，通过聚类“好”、“棒”、“糟糕”、“失望”等情感色彩明显的词向量，构建带情感权重的表示，再结合分类器（如 SVM）进行句子级或文档级的情绪判定。例如，企业可使用该方法自动识别客户评论的正负面态度。在主题建模任务中，研究者常利用 Word2Vec 学习到的语义向量进行 K-means 等聚类操作，从而发掘出语料中隐含的语义主题，如科技类文本中自动聚类出“人工智能”、“量子计算”、“大数据”等主题簇。&lt;br /&gt;
&lt;br /&gt;
==== 机器翻译 ====&lt;br /&gt;
在机器翻译任务中，Word2Vec 可用于词对齐与语义映射的预处理阶段。通过训练源语言与目标语言的词向量模型，并将其映射到共享向量空间，可以自动对齐如“hello”与“hola”，“school”与“école”这类语义对等词汇，这种方法在无监督机器翻译中尤其常见。此外，在基于神经网络的机器翻译系统（如 Seq2Seq 或 Transformer 模型）中，Word2Vec 也被用于初始化嵌入层权重，相比随机初始化可显著加速模型收敛，提高 BLEU 翻译质量得分。谷歌早期的 NMT 系统就曾在多语种语料上使用跨语言词向量来实现语言无关的嵌入表示，有效支持了低资源语言的翻译。&lt;br /&gt;
&lt;br /&gt;
==== 文本分类 ====&lt;br /&gt;
在文本分类任务中，Word2Vec 同样具有广泛用途。以新闻分类为例，不同主题（如“财经”、“体育”、“国际”）的新闻中出现的关键词往往语义聚集，通过 Word2Vec 向量聚合形成文本表示，再输入分类器（如 CNN、Transformer）进行训练，可高效地区分不同类别的文本。在垃圾邮件识别中，模型可捕捉如“中奖”、“优惠”、“请点击”等词汇的特征并识别其潜在风险。在法律文书分类中，词向量可帮助模型辨别“判决书”、“调解书”、“起诉状”等不同法律文体的词汇特征，从而自动进行文档归档。通常做法是在句子级别对每个词向量进行平均或加权平均操作，构建文档向量，再送入模型进行判别。以 IMDb 电影评论为例，研究人员常使用 Word2Vec 初始化嵌入表示，再结合情感标注数据进行二分类训练，用于判断用户评价是正面还是负面。&lt;br /&gt;
&lt;br /&gt;
总体来看，Word2Vec 在 NLP 中的主要价值在于：提供一种轻量、高效且能迁移的通用词语表示形式，极大地降低了特征工程的门槛，为机器学习和深度学习模型提供了统一的输入基础。&lt;br /&gt;
&lt;br /&gt;
=== 推荐系统 ===&lt;br /&gt;
虽然 Word2Vec 最初是为处理语言建模任务而设计，但其核心思想——“在上下文中共现的词语往往意义相关”——可以被自然迁移到非语言领域，特别是推荐系统中&amp;lt;ref&amp;gt;Goldberg Y, Levy O. word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method[J]. arXiv preprint arXiv:1402.3722, 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Grbovic M, Cheng H. Real-time personalization using embeddings for search ranking at airbnb[C]//Proceedings of the 24th ACM SIGKDD international conference on knowledge discovery &amp;amp; data mining. 2018: 311-320.&amp;lt;/ref&amp;gt;。推荐系统中的“用户行为序列”与 NLP 中的“句子”结构高度相似，而“商品、视频、音乐等内容”则可类比为“词”。基于这种结构对应关系，Word2Vec 成为建模用户偏好和内容相似性的强大工具。&lt;br /&gt;
&lt;br /&gt;
在实践中，推荐系统会将用户的历史点击序列、购物行为或播放列表视作时间序列数据，将其中每一个物品（如商品ID、音乐ID）作为一个“词”输入 Word2Vec 模型进行训练。采用 Skip-gram 结构后，模型试图预测某个物品的上下文物品（即前后点击或购买的内容），从而学习出反映行为模式的向量表示。&lt;br /&gt;
&lt;br /&gt;
训练完成后，Word2Vec 模型输出的嵌入向量可以直接用于推荐。最常见的方式是通过计算当前浏览/购买商品与其他商品之间的向量相似度（通常为余弦相似度），从而生成相似商品推荐（Item-to-Item 推荐）。此外，还可以将一个用户所有历史行为的物品向量进行平均，得到用户的兴趣画像向量，用于个性化推荐排序。&lt;br /&gt;
&lt;br /&gt;
这一思想已经在多个主流平台落地并取得了良好效果。例如：&lt;br /&gt;
&lt;br /&gt;
* 淘宝、京东等电商平台使用商品序列训练 Word2Vec，构建“商品—商品”图谱，用于猜你喜欢、搭配购、商品联想等场景。比如用户在浏览“运动鞋”页面后，系统会推荐“运动袜”、“运动手表”等与其行为序列中相邻频繁出现的物品&amp;lt;ref&amp;gt;Feng Y, Lv F, Shen W, et al. Deep session interest network for click-through rate prediction[J]. arXiv preprint arXiv:1905.06482, 2019.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
* 美团和大众点评等本地生活平台，通过用户在一定时间段内访问的商家序列（如早餐店、便利店、药店），构建“地点向量”或“服务向量”，支持基于用户轨迹的本地商家推荐，如“去过 A 的人，也常去 B”。&lt;br /&gt;
&lt;br /&gt;
=== 信息检索 ===&lt;br /&gt;
在传统信息检索系统中，搜索结果的相关性通常依赖于关键词的精确匹配，例如布尔检索、TF-IDF 或 BM25 等基于词频的模型。这些方法尽管在速度和工程实现上具备优势，但在语义层面存在严重缺陷：一旦查询词与文档中的词不完全一致，即便它们在意义上高度相关，也可能无法匹配。这就导致了检索召回率不足或排序不准确的问题。Word2Vec 所提供的分布式表示弥补了这一不足，它将语义上相近的词投射到向量空间中的相邻位置，从而支持更灵活、更具语义关联性的检索策略。&lt;br /&gt;
&lt;br /&gt;
==== 查询扩展（Query Expansion） ====&lt;br /&gt;
例如，当用户输入关键词“肺炎”时，系统可以在训练好的词向量模型中自动找出与其相似的词，如“呼吸道感染”、“发烧”、“流感”等，并将这些词加入查询词集合中，从而扩大搜索范围，提高语义召回能力。此类机制在医学检索、法律文献检索中尤为重要，因为术语表达方式多变，而查询词往往较为简单。&lt;br /&gt;
&lt;br /&gt;
==== 文档排序 ====&lt;br /&gt;
在文档排序任务中，系统可将查询和文档中词嵌入后计算语义相关性得分，辅助判断哪些文档更符合用户意图，用于替代传统的基于词频的打分方式。此外，Word2Vec 在短文本理解中也非常有效，常用于搜索建议、问答匹配、智能补全等场景，尤其适合处理查询词稀疏、语义模糊的用户输入。&lt;br /&gt;
&lt;br /&gt;
==== 短文本理解 ====&lt;br /&gt;
此外，短文本理解任务中 Word2Vec 的作用也尤为显著。在搜索建议、智能补全、FAQ 匹配等场景中，用户输入往往是极短的词组甚至单词，这使得传统稀疏表示方法效果极差。而 Word2Vec 可通过词向量的上下文信息推断潜在语义，提升理解准确度。例如，在输入“退货”时系统可联想到“退款”、“售后”、“客服”等相关查询，从而实现更贴近用户意图的补全建议。&lt;br /&gt;
&lt;br /&gt;
=== 其他领域 ===&lt;br /&gt;
Word2Vec 的通用表示能力使其在多个非语言学领域也展现出强大的迁移价值。通过将非语言数据结构化为“序列”或“上下文”形式，Word2Vec 能够学习出反映实体关系的向量表示，从而广泛应用于生物信息学、社会科学及专业技术领域。&lt;br /&gt;
&lt;br /&gt;
==== 生物信息学 ====&lt;br /&gt;
在生物信息学中，研究者将蛋白质或 DNA 序列中的氨基酸、核苷酸片段视为“词”，构建“生物语言”&amp;lt;ref&amp;gt;Min S, Lee B, Yoon S. Deep learning in bioinformatics[J]. Briefings in bioinformatics, 2017, 18(5): 851-869.&amp;lt;/ref&amp;gt;。通过训练 Word2Vec 模型，可以学习到功能相关序列的向量表示，应用于蛋白质功能预测、疾病相关区域识别等任务。例如，某些氨基酸片段在多个蛋白质中共现频繁，模型会自动捕捉它们的潜在生物学意义。此外，Word2Vec 也被用于药物发现场景，辅助建模药物与靶点间的语义联系。&lt;br /&gt;
&lt;br /&gt;
==== 社会科学 ====&lt;br /&gt;
在社会科学中，Word2Vec 被用于探测语言中的刻板印象和社会偏见&amp;lt;ref&amp;gt;Benton A, Arora R, Dredze M. Learning multiview embeddings of twitter users[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2016: 14-19.&amp;lt;/ref&amp;gt;。通过分析词向量之间的距离，如“nurse”更接近“she”，“doctor”更接近“he”，可揭示潜在的性别偏见结构&amp;lt;ref&amp;gt;Bolukbasi T, Chang K W, Zou J Y, et al. Man is to computer programmer as woman is to homemaker? debiasing word embeddings[J]. Advances in neural information processing systems, 2016, 29.&amp;lt;/ref&amp;gt;。同时，研究人员也使用时间序列语料构建跨年代词向量，研究词义随时代的语义漂移，如“liberal”、“gender”等词在不同时期的语义演变路径&amp;lt;ref&amp;gt;Hamilton W L, Leskovec J, Jurafsky D. Diachronic word embeddings reveal statistical laws of semantic change[J]. arXiv preprint arXiv:1605.09096, 2016.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==== 法律、金融、医疗等垂直领域 ====&lt;br /&gt;
在法律、金融、医疗等垂直领域，Word2Vec 有助于理解专业术语之间的语义关系&amp;lt;ref&amp;gt;Li J, Sun A, Han J, et al. A survey on deep learning for named entity recognition[J]. IEEE transactions on knowledge and data engineering, 2020, 34(1): 50-70.&amp;lt;/ref&amp;gt;。在法律文本分析中，模型可用于预测文书之间的相似度，辅助法官判例归类与类案推荐；在金融领域，Word2Vec 被用于情绪识别系统中，帮助模型理解公告、舆情或分析报告中的潜在语义态度；在医疗信息处理中，词向量支持将病症、药品与治疗手段建模为统一向量空间，用于构建医学知识图谱或提升电子病历挖掘效率。&lt;br /&gt;
&lt;br /&gt;
=='''优缺点'''==&lt;br /&gt;
&lt;br /&gt;
===优点===&lt;br /&gt;
[[文件:Word2vec fig1.png|替代=|缩略图|Word2Vec 学习到的词向量空间中的分布关系。可以看到，语义相似的词（如 “man” 与 “woman”，“king” 与 “queen”）在二维向量空间中彼此距离较近，体现了模型在词语表示上的语义聚类能力。]]&lt;br /&gt;
'''捕捉语义和语法关系：'''&lt;br /&gt;
&lt;br /&gt;
通过上下文预测（Skip-gram/CBOW），可学习到单词的分布式表示，相似语义或语法角色的词在向量空间中距离相近。&lt;br /&gt;
&lt;br /&gt;
支持线性类比关系（如“国王 - 男 + 女 ≈ 女王”）。&lt;br /&gt;
&lt;br /&gt;
'''适用于大规模数据：'''&lt;br /&gt;
&lt;br /&gt;
可高效训练数十亿级别的语料，内存消耗相对较低。&lt;br /&gt;
&lt;br /&gt;
'''通用性强：'''&lt;br /&gt;
&lt;br /&gt;
词向量可作为下游任务（如文本分类、机器翻译）的特征输入，提升模型性能。&lt;br /&gt;
&lt;br /&gt;
===局限性===&lt;br /&gt;
'''无法处理多义词（Polysemy）：'''&lt;br /&gt;
&lt;br /&gt;
每个词仅对应单一向量，无法区分不同上下文中的多义性（如“苹果”指水果或公司）。&lt;br /&gt;
&lt;br /&gt;
'''依赖局部上下文：'''&lt;br /&gt;
&lt;br /&gt;
仅基于窗口内的局部共现信息，忽略文档级或语料级的全局统计特征（如GloVe的优势）。&lt;br /&gt;
&lt;br /&gt;
'''需要大量训练数据：'''&lt;br /&gt;
&lt;br /&gt;
小规模语料下生成的词向量质量较差，难以捕捉低频词语义。&lt;br /&gt;
&lt;br /&gt;
'''静态词向量（Static Embeddings）：'''&lt;br /&gt;
&lt;br /&gt;
词向量在训练后固定，无法动态适应不同上下文（后续模型如ELMo、BERT解决了这一问题）。&lt;br /&gt;
&lt;br /&gt;
'''窗口大小敏感：'''&lt;br /&gt;
&lt;br /&gt;
表现受上下文窗口大小影响，过大或过小均可能导致语义捕捉不充分。&lt;br /&gt;
&lt;br /&gt;
'''未考虑词序信息：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram和CBOW模型忽略窗口内词的顺序关系（后续改进如Seq2Vec或Transformer可解决）。&lt;br /&gt;
&lt;br /&gt;
=='''相关技术与扩展'''==&lt;br /&gt;
&lt;br /&gt;
===GloVe（Global Vectors for Word Representation）===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出，旨在结合传统基于计数的模型（如 LSA）和 Word2Vec 的优势，提出一种高效的全局词向量训练方法。&lt;br /&gt;
&lt;br /&gt;
====技术原理====&lt;br /&gt;
GloVe 是一种基于全局共现信息来学习词向量的方法&amp;lt;ref&amp;gt;Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.&amp;lt;/ref&amp;gt;，与 Word2Vec 不同，它不依赖上下文窗口中的预测任务，而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。&lt;br /&gt;
&lt;br /&gt;
GloVe 的设计灵感来自以下关键观察：词语的语义关系可以通过它们与其他词共现的比例来表达，而不是仅通过是否共现或是否邻近。例如，“ice” 和 “steam” 都与 “water” 有很强的共现关系，但 “ice” 更倾向与 “cold” 共现，而 “steam” 更倾向与 “hot” 共现。GloVe 试图让词向量之间的差异或比例能反映出这种语义关系。&lt;br /&gt;
&lt;br /&gt;
在训练之前，GloVe 首先对整个语料库构建一个 共现矩阵&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
* 每个元素 &amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt; 表示词&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;在词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 的上下文窗口中出现的次数；&lt;br /&gt;
&lt;br /&gt;
* 矩阵是稀疏且高维的，规模为 &amp;lt;math&amp;gt;V \times V&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; 是词汇表大小。&lt;br /&gt;
&lt;br /&gt;
GloVe 的一个重要设计理念是：两个词之间的语义关系可由它们对其他词的共现比值刻画。对于一个目标词 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;'''，考虑两个上下文词 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 和 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，如果 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;''' 与 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 的共现频率远高于与 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，则两者在语义上的关联也会不同。&lt;br /&gt;
&lt;br /&gt;
定义贡献概率为：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;P_{ik} = \frac{X_{ik}}{\sum_{k'} X_{ik'}}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
GloVe 期望通过学习得到的词向量 '''&amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt;'''，能使词之间的向量关系满足下列公式形式：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;F(\mathbf{w}_i, \tilde{\mathbf{w}}_j, X_{ij}) = \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j \approx \log X_{ij}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
即目标是让词向量的点积加上偏置项逼近共现频率的对数值，而不是原始频数，后者变化范围太大。&lt;br /&gt;
&lt;br /&gt;
为了实现上述目标，GloVe 构建了以下加权平方误差损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;J = \sum_{i,j=1}^{V} f(X_{ij}) \cdot \left( \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij} \right)^2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt;: 词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 和 &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; 的共现次数；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{w}_i&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;\tilde{\mathbf{w}}_j&amp;lt;/math&amp;gt; : 词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;：权重函数（防止高频词主导优化）；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;{b}_j&amp;lt;/math&amp;gt;：偏置项。&lt;br /&gt;
&lt;br /&gt;
这个函数可以防止高频词主导模型训练，也避免了低频词对整体模型质量的影响。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* Word2Vec 是基于预测任务（局部上下文窗口），而 GloVe 是基于矩阵分解（全局共现频率）；&lt;br /&gt;
&lt;br /&gt;
* 相比传统 LSA（SVD），GloVe 使用非线性权重函数，训练时不需要全局矩阵分解，更高效；&lt;br /&gt;
&lt;br /&gt;
* GloVe适合全局语义关系建模，尤其在大规模语料训练中表现优异；&lt;br /&gt;
&lt;br /&gt;
* GloVe支持线性类比关系，类似 Word2Vec（如“king - man + woman ≈ queen”）&lt;br /&gt;
&lt;br /&gt;
=== FastText ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出&amp;lt;ref&amp;gt;Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.&amp;lt;/ref&amp;gt;，旨在解决 Word2Vec 模型在处理罕见词、词形变化（如复数、时态）等方面的能力不足。其核心理念是在训练过程中引入子词信息，以增强词向量对形态的建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
FastText 的核心思想是：将词视为子词（subword）n-gram 的组合体，而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词（OOV）的表示能力。&lt;br /&gt;
&lt;br /&gt;
'''子词建模（Subword Embedding）：'''&lt;br /&gt;
&lt;br /&gt;
每个单词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 被划分为若干个字符 n-gram，例如设置 n = 3~6 时：&lt;br /&gt;
&lt;br /&gt;
对于词 “where”，首先在其两端添加边界符号（如 &amp;lt; 和 &amp;gt;），构成：&amp;lt;where&amp;gt;，然后提取字符 n-gram 得到： &amp;lt;wh, whe, her, ere, re&amp;gt;，包括完整词本身 &amp;quot;where&amp;quot;，最终表示为一个 n-gram 集合 &amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
词向量的表示为其所有 n-gram 向量的平均或和：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_w = \sum_{g \in G} w_g z_g&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z_g&amp;lt;/math&amp;gt;​ 是 n-gram &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; 的嵌入向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;​ 是词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 的所有子词集合。&lt;br /&gt;
&lt;br /&gt;
这种表示方式让模型在遇到未登录词时，也可以通过其组成子词获取合理向量。&lt;br /&gt;
&lt;br /&gt;
'''模型结构与训练：'''&lt;br /&gt;
&lt;br /&gt;
FastText 延续了 Word2Vec 的 Skip-gram 架构，但输入词不再是 one-hot 编码的词本身，而是其所有 n-gram 的组合。训练目标为：给定中心词（子词组合向量），预测其上下文词。即最大化如下目标函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{Skip-gram}} = \sum_{(w_t, w_o) \in D} \left[ \log \sigma\left( \mathbf{v}_{w_o}^\top \mathbf{v}_{w_t} \right) + \sum_{i=1}^{k} \mathbb{E}_{w_i' \sim P_n(w)} \log \sigma\left( -\mathbf{v}_{w_i'}^\top \mathbf{v}_{w_t} \right) \right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 是由子词构成的中心词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{wo}&amp;lt;/math&amp;gt;​​ 是上下文词向量；&lt;br /&gt;
&lt;br /&gt;
负采样 &amp;lt;math&amp;gt;P_n(w)&amp;lt;/math&amp;gt; 用于高效近似 softmax。&lt;br /&gt;
&lt;br /&gt;
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示，以提升整体语义建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* FastText 通过引入 n-gram，有效表示未登录词与形态变化词；&lt;br /&gt;
&lt;br /&gt;
* FastText 面向多语言与拼写多样化语言（如芬兰语、德语）效果显著优于 Word2Vec；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec 只能对词表中出现过的词进行建模，FastText 可泛化到未出现的新词，具备更强的鲁棒性与泛化能力；&lt;br /&gt;
&lt;br /&gt;
* GloVe 基于全局共现信息构建稠密表示，适合静态建模，FastText 基于局部上下文与子词结构，适合细粒度语义与动态扩展；&lt;br /&gt;
&lt;br /&gt;
* FastText 在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用。&lt;br /&gt;
&lt;br /&gt;
=== BERT 模型 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型&amp;lt;ref&amp;gt;Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[C]//Proceedings of the 2019 conference of the North American chapter of the association for computational linguistics: human language technologies, volume 1 (long and short papers). 2019: 4171-4186.&amp;lt;/ref&amp;gt;，发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务，并通过大规模语料上的预训练 + 微调机制，在多个自然语言处理任务上取得了 SOTA（state-of-the-art）成绩。&lt;br /&gt;
&lt;br /&gt;
BERT 的设计动机是解决传统语言模型（如 Word2Vec、GloVe）在上下文建模、语义歧义处理和句子级理解方面的不足，特别是在建模“一个词在不同上下文中含义不同”这一关键问题。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理====&lt;br /&gt;
'''基础架构：'''&lt;br /&gt;
&lt;br /&gt;
BERT 构建在 Transformer 架构之上，具体使用了 多层 Transformer 编码器堆叠（通常 BERT-base 为 12 层，BERT-large 为 24 层）。Transformer 由 Vaswani 等人在 2017 年提出，其最大特点是 完全基于注意力机制（Self-Attention），无需使用 RNN 或 CNN，可并行处理任意长度的输入。&lt;br /&gt;
&lt;br /&gt;
每层包含：&lt;br /&gt;
&lt;br /&gt;
多头自注意力机制（Multi-Head Self-Attention）；&lt;br /&gt;
&lt;br /&gt;
前馈神经网络（Feed-Forward Layer）；&lt;br /&gt;
&lt;br /&gt;
残差连接 + 层归一化。&lt;br /&gt;
&lt;br /&gt;
Transformer 中每个词的表示会综合考虑所有其他词对它的影响，因此能捕捉复杂的依赖结构。&lt;br /&gt;
&lt;br /&gt;
'''输入方式表示：'''&lt;br /&gt;
&lt;br /&gt;
BERT 的输入不只是单词序列，而是词 + 位置 + 句子类型三重嵌入之和：Input Embedding = Token Embedding + Position Embedding + Segment Embedding&lt;br /&gt;
&lt;br /&gt;
例如用于句子对任务（如问答）时，Segment A 表示第一句话，Segment B 表示第二句话。输入序列结构为：[CLS] 句子A [SEP] 句子B [SEP]，其中[CLS] 用于分类任务的特殊标记；[SEP] 是句子分隔符。&lt;br /&gt;
&lt;br /&gt;
'''预训练阶段：'''&lt;br /&gt;
&lt;br /&gt;
BERT 采用两种 自监督学习任务在大规模语料（如 Wikipedia 和 BooksCorpus）上进行训练：&lt;br /&gt;
&lt;br /&gt;
（1）Masked Language Model（MLM）：随机遮蔽输入序列中约 15% 的词，模型需预测被 []MASK 替换的词是什么，本质上是一个多分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{MLM}} = - \sum_{i \in M} \log P(w_i \mid x_{\text{masked}})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
（2）Next Sentence Prediction（NSP）：输入两个句子 A 和 B，任务是判断 B 是否是 A 的真实下一句，是一个二分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{NSP}} = -\log P(\text{IsNext} \mid A, B)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''微调阶段：'''&lt;br /&gt;
&lt;br /&gt;
在预训练后，BERT 可被快速迁移到下游任务，如：文本分类（情感分析）、序列标注（命名实体识别）、问答系统，只需在最后加上一层简单的任务特定结构，并用少量数据进行微调即可。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* BERT 同时利用左上下文与右上下文，解决传统语言模型单向建模的局限；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理多义词与上下文依赖，如同一个词在不同句子中的不同含义；&lt;br /&gt;
&lt;br /&gt;
* BERT 采用Transformer 架构支持全局依赖建模，相比 RNN 更并行高效；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理分类、标注、问答等多类任务，具备高度迁移能力；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec/GloVe 生成的是固定词向量、语境无关，BERT 输出的是上下文相关的词表示，能捕捉复杂句法语义关系。&lt;br /&gt;
&lt;br /&gt;
=== 动态词嵌入（ ELMo） ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
ELMo（'''Embeddings from Language Models'''）是由 Allen Institute for AI（AI2）的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法&amp;lt;ref&amp;gt;PETERS M E, NEUMANN M, IYER M, et al. Deep contextualized word representations[J/OL]. arXiv, 2018: 1802.05365 [2023-12-01]. &amp;lt;nowiki&amp;gt;https://arxiv.org/abs/1802.05365&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型，突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象（如 &amp;quot;bank&amp;quot; 表示“银行”或“河岸”），传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型（BiLM）捕捉词的上下文依赖关系，为每个词生成可变的、语境敏感的表示。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
ELMo 基于传统语言模型（Language Model, LM），但引入了以下三个关键技术点：&lt;br /&gt;
&lt;br /&gt;
'''双向语言模型（BiLM）：'''&lt;br /&gt;
&lt;br /&gt;
一个正向语言模型（从左到右）：&amp;lt;math&amp;gt;P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个反向语言模型（从右到左）：&amp;lt;math&amp;gt;P(w_T, \ldots, w_1) = \prod_{t=1}^{T} P(w_t \mid w_{t+1}, \ldots, w_T)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这两个模型均使用深层 LSTM（Long Short-Term Memory） 网络进行建模，层数通常为两层。&lt;br /&gt;
&lt;br /&gt;
'''多层表示聚合机制：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量，而是将所有层的隐状态按照加权方式聚合，从而获得更加丰富的语义特征。&lt;br /&gt;
&lt;br /&gt;
每个词的 ELMo 表示由以下公式给出：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{ELMo}(w_t) = \gamma \sum_{j=0}^{L} s_j \cdot \mathbf{h}_t^{(j)}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t^{(j)}&lt;br /&gt;
&amp;lt;/math&amp;gt; 表示第 &amp;lt;math&amp;gt;j&lt;br /&gt;
&amp;lt;/math&amp;gt; 层对词 &amp;lt;math&amp;gt;w_t&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 的隐状态，是前向和后向语言模型的连接结果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 是第&amp;lt;math&amp;gt;j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;层的可学习权重，表示该层对最终表示的贡献程度；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt; 是可学习缩放因子，控制整体表示的幅度。&lt;br /&gt;
&lt;br /&gt;
'''训练与迁移使用：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 先在大规模语料上训练语言模型（如 1 Billion Word Benchmark），然后将训练好的表示迁移到下游任务中，并在下游任务中联合微调（fine-tune）其权重&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt;。这种机制大幅提高了模型对语境、词义变化的感知能力，适用于情感分类（Sentiment Analysis）、问答系统（QA）和自然语言推理（NLI）。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入；&lt;br /&gt;
&lt;br /&gt;
* ELMo 同时考虑前文与后文，有效捕捉语言结构与语义；&lt;br /&gt;
&lt;br /&gt;
* 与 Word2Vec/GloVe相比，ELMo 输出的词向量会随句子变化，是“动态词向量”；&lt;br /&gt;
&lt;br /&gt;
* 与 BERT 相比，ELMo 使用 LSTM 架构，计算成本相对较低，更适合中小规模任务。&lt;br /&gt;
&lt;br /&gt;
=='''开源实现与工具'''==&lt;br /&gt;
Word2Vec 自 2013 年由 Google 发布以来，被广泛应用于自然语言处理任务。除了原始的 C 语言实现，目前已有多个高效的开源工具和库支持 Word2Vec 的训练与使用。&lt;br /&gt;
&lt;br /&gt;
=== Gensim 库 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python&lt;br /&gt;
* 功能：&lt;br /&gt;
** 支持 CBOW 和 Skip-gram 两种训练模式。&lt;br /&gt;
** 提供 负采样（Negative Sampling） 和 层次 Softmax（Hierarchical Softmax） 加速训练。&lt;br /&gt;
** 可调整参数：窗口大小、词向量维度、最小词频、训练轮次（epochs）等。&lt;br /&gt;
** 支持模型保存为 &amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;（二进制）或 &amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;（纯文本）格式，兼容其他 NLP 工具（如 FastText、GloVe）。&lt;br /&gt;
** 提供 增量训练（继续训练已有模型）和 词汇表更新 功能。&lt;br /&gt;
&lt;br /&gt;
示例代码：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from gensim.models import Word2Vec&lt;br /&gt;
from gensim.models.word2vec import LineSentence  # 用于流式读取大文件&lt;br /&gt;
&lt;br /&gt;
# 示例1：基础训练（列表输入）&lt;br /&gt;
sentences = [&lt;br /&gt;
    [&amp;quot;自然&amp;quot;, &amp;quot;语言&amp;quot;, &amp;quot;处理&amp;quot;, &amp;quot;很&amp;quot;, &amp;quot;有趣&amp;quot;],&lt;br /&gt;
    [&amp;quot;深度学习&amp;quot;, &amp;quot;改变&amp;quot;, &amp;quot;了&amp;quot;, &amp;quot;NLP&amp;quot;],&lt;br /&gt;
    [&amp;quot;Word2Vec&amp;quot;, &amp;quot;是&amp;quot;, &amp;quot;经典&amp;quot;, &amp;quot;算法&amp;quot;]&lt;br /&gt;
]&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=sentences,&lt;br /&gt;
    vector_size=300,       # 词向量维度&lt;br /&gt;
    window=5,             # 上下文窗口&lt;br /&gt;
    min_count=1,          # 最小词频&lt;br /&gt;
    workers=4,            # 并行线程数&lt;br /&gt;
    sg=1,                 # 1=Skip-gram, 0=CBOW&lt;br /&gt;
    hs=0,                 # 0=负采样, 1=层次Softmax&lt;br /&gt;
    negative=5,           # 负采样数&lt;br /&gt;
    epochs=10             # 训练轮次&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 示例2：大文件训练（流式读取）&lt;br /&gt;
corpus_path = &amp;quot;corpus.txt&amp;quot;  # 每行一个句子，词语用空格分隔&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=LineSentence(corpus_path),  # 自动按行流式读取&lt;br /&gt;
    vector_size=300,&lt;br /&gt;
    window=5,&lt;br /&gt;
    min_count=5,        # 过滤低频词&lt;br /&gt;
    workers=8&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 模型使用&lt;br /&gt;
print(model.wv[&amp;quot;自然&amp;quot;])          # 获取词向量&lt;br /&gt;
print(model.wv.most_similar(&amp;quot;NLP&amp;quot;, topn=3))  # 相似词查询&lt;br /&gt;
&lt;br /&gt;
# 模型保存与加载&lt;br /&gt;
model.save(&amp;quot;word2vec.model&amp;quot;)          # 二进制格式&lt;br /&gt;
model.wv.save_word2vec_format(&amp;quot;vectors.bin&amp;quot;, binary=True)  # 兼容原始格式&lt;br /&gt;
loaded_model = Word2Vec.load(&amp;quot;word2vec.model&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 快速实验 Word2Vec 模型，适用于中小规模语料（百万级词汇）。&lt;br /&gt;
* 需要与其他 Python NLP 工具（如 spaCy、NLTK）集成时。&lt;br /&gt;
&lt;br /&gt;
=== TensorFlow / PyTorch 实现 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python（基于 TensorFlow/PyTorch 框架）&lt;br /&gt;
* 功能：&lt;br /&gt;
** 提供更灵活的模型自定义能力（如修改损失函数、调整网络结构）。&lt;br /&gt;
** 支持 GPU 加速训练，适合大规模语料（十亿级词汇）。&lt;br /&gt;
** 可与其他深度学习模型（如 LSTM、Transformer）结合使用。&lt;br /&gt;
&lt;br /&gt;
TensorFlow 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 示例：Skip-gram负采样实现&lt;br /&gt;
vocab_size = 10000&lt;br /&gt;
embedding_dim = 300&lt;br /&gt;
num_ns = 5    # 负采样数&lt;br /&gt;
&lt;br /&gt;
# 自定义Word2Vec模型&lt;br /&gt;
class Word2Vec(tf.keras.Model):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        self.target_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=1)&lt;br /&gt;
        self.context_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=num_ns+1)&lt;br /&gt;
        &lt;br /&gt;
    def call(self, pair):&lt;br /&gt;
        target, context = pair&lt;br /&gt;
        # target shape: (batch, 1)&lt;br /&gt;
        # context shape: (batch, 1+num_ns)&lt;br /&gt;
        word_emb = self.target_embedding(target)       # (batch, 1, dim)&lt;br /&gt;
        context_emb = self.context_embedding(context)  # (batch, 1+num_ns, dim)&lt;br /&gt;
        return tf.matmul(word_emb, context_emb, transpose_b=True)&lt;br /&gt;
&lt;br /&gt;
# 数据准备（假设已预处理）&lt;br /&gt;
target_words = np.random.randint(0, vocab_size, (1000, 1))&lt;br /&gt;
context_words = np.random.randint(0, vocab_size, (1000, 6))  # 1正样本+5负样本&lt;br /&gt;
&lt;br /&gt;
# 编译训练&lt;br /&gt;
model = Word2Vec()&lt;br /&gt;
model.compile(optimizer='adam', loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))&lt;br /&gt;
model.fit(x=(target_words, context_words), epochs=5)&lt;br /&gt;
&lt;br /&gt;
# 获取词向量&lt;br /&gt;
embedding_layer = model.get_layer('target_embedding')&lt;br /&gt;
word_vectors = embedding_layer.get_weights()[0]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;PyTorch 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torch.nn as nn&lt;br /&gt;
# 自定义 Word2Vec 模型（CBOW）&lt;br /&gt;
class Word2Vec(nn.Module):&lt;br /&gt;
    def __init__(self, vocab_size, embedding_dim):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        # 中心词和上下文词共享同一个嵌入矩阵&lt;br /&gt;
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
    def forward(self, target, context):&lt;br /&gt;
        # target shape: (batch_size,)&lt;br /&gt;
        # context shape: (batch_size,)&lt;br /&gt;
        target_emb = self.embeddings(target)  # (batch_size, embedding_dim)&lt;br /&gt;
        context_emb = self.embeddings(context) # (batch_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
        # 计算点积得分（Skip-gram目标）&lt;br /&gt;
        scores = torch.sum(target_emb * context_emb, dim=1)  # (batch_size,)&lt;br /&gt;
        return scores&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要与深度学习模型联合训练（如文本分类+词向量微调）。&lt;br /&gt;
* 研究场景，需自定义 Word2Vec 的变体（如结合注意力机制）。&lt;br /&gt;
&lt;br /&gt;
=== C 语言实现 ===&lt;br /&gt;
&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：C&lt;br /&gt;
* 功能：&lt;br /&gt;
** Google 官方发布的原始实现，效率极高（适合超大规模语料）。&lt;br /&gt;
** 仅支持基本的 Skip-gram 和 CBOW，无负采样或层次 Softmax 优化。&lt;br /&gt;
** 输出格式为二进制（&amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;）或文本（&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;）词向量。&lt;br /&gt;
&lt;br /&gt;
使用方法：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 从源码编译（需要gcc）&lt;br /&gt;
git clone https://github.com/tmikolov/word2vec&lt;br /&gt;
cd word2vec&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
# 训练命令详解&lt;br /&gt;
./word2vec -train corpus.txt \    # 输入文件（每行一个句子）&lt;br /&gt;
           -output vectors.bin \  # 输出词向量&lt;br /&gt;
           -size 300 \            # 向量维度&lt;br /&gt;
           -window 5 \            # 窗口大小&lt;br /&gt;
           -sample 1e-5 \         # 高频词降采样阈值&lt;br /&gt;
           -negative 5 \          # 负采样数&lt;br /&gt;
           -hs 0 \                # 禁用层次Softmax&lt;br /&gt;
           -threads 16 \          # 线程数&lt;br /&gt;
           -binary 1 \            # 二进制输出&lt;br /&gt;
           -iter 10               # 训练轮次&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要最高训练效率（如 Wikipedia 或 Common Crawl 级别语料）。&lt;br /&gt;
* 对模型定制需求低，仅需基础词向量生成。&lt;br /&gt;
&lt;br /&gt;
=='''参考文献'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
此词条由[[苏一铭]]、[[杨锦浩]]编写。&lt;br /&gt;
&lt;br /&gt;
'''本词条内容大纲源自[[wikipedia:Word2vec|wikipedia]]及公开资料，遵守 CC3.0协议。'''&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45504</id>
		<title>Word2Vec</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45504"/>
		<updated>2025-07-11T02:23:20Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 推荐系统 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Word2Vec''' 是一种将词语（Word）映射为连续向量（Vector）的高效建模技术，由 Google 的 Tomas Mikolov 团队于 2013 年提出&amp;lt;ref&amp;gt;Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[J]. Advances in neural information processing systems, 2013, 26.&amp;lt;/ref&amp;gt;。通过在大规模文本语料中自动学习，Word2Vec 将每个词表示为一个低维、稠密、连续的向量（即词嵌入Word Embedding），这种向量能够捕捉词语之间的语义和句法关系。与传统将词视为离散 ID 的方法（如 N-gram）不同，Word2Vec 将词嵌入到连续空间中，相似意义的词在向量空间中距离更近，为后续复杂模型（如 [[Transformer]]）奠定了基础。&lt;br /&gt;
&lt;br /&gt;
Word2Vec 的底层是一个浅层[[神经网络]]，采用 [[Skip-gram]] 或 [[CBOW]]（Continuous Bag of Words 连续词袋模型）两种架构进行训练。训练后得到的词向量被广泛应用于[[NLP]]（Natural Language Processing 自然语言处理）任务中，包括机器翻译（Machine Translation）、信息检索（Information Retrieval）、文本分类（Text Classification）和[[情感分析]]（Sentiment Analysis）等，成为当前 NLP 领域的重要基础方法之一。&lt;br /&gt;
=='''历史背景'''==&lt;br /&gt;
20 世纪 80 年代，人们开始尝试使用神经网络将单词和概念表示为向量&amp;lt;ref&amp;gt;Hinton G E. Learning distributed representations of concepts[C]//Proceedings of the Annual Meeting of the Cognitive Science Society. 1986, 8.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&amp;lt;/ref&amp;gt;。2010 年，Tomáš Mikolov（当时就读于布尔诺理工大学）与合著者一起将单隐层的简单[[递归]]神经网络应用于[[语言建模]]&amp;lt;ref&amp;gt;Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Interspeech. 2010, 2(3): 1045-1048.&amp;lt;/ref&amp;gt;。Word2vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学（Brno University of Technology）完成了神经网络语言建模的博士研究后，加入了Google，与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作，致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限，Mikolov 团队提出了两种简洁高效的浅层神经网络架构，即CBOW和 Skip-gram，统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标，一经发布便在NLP领域引起了广泛关注和应用。&lt;br /&gt;
&lt;br /&gt;
使用 Word2vec 算法创建的嵌入向量与早期的算法（如使用 n-grams 和潜在语义分析的算法）相比具有一些优势。[[GloVe]] 是斯坦福大学的一个团队专门作为竞争对手开发的，原始论文指出 GloVe 比 Word2vec 有多处改进。Mikolov 认为，这种比较是不公平的，因为 GloVe 是在更多数据上训练出来的，而 [[FastText]] 项目表明，在相同数据上训练出来的 word2vec 更胜一筹。不过截至到现在，'''直接的 Word2vec 方法被认为是 &amp;quot;过时的&amp;quot;'''。基于transformer的模型，如 [[ELMo]] 和 [[BERT]]，在类似 Word2vec 的词嵌入模型之上添加了多个神经网络关注层，已被视为 NLP 领域的最新技术。&lt;br /&gt;
&lt;br /&gt;
== '''技术原理''' ==&lt;br /&gt;
Word2vec 的目的在于为每个词汇都分配一个稠密的向量，能够做到相比传统的稀疏向量（如 [[one-hot 编码]]），更具表达能力和计算效率。形式上也就是，如果词汇表为 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;，每个词 &amp;lt;math&amp;gt;w \in V&amp;lt;/math&amp;gt; 被映射为向量 &amp;lt;math&amp;gt;\mathbf{v}_w \in \mathbb{R}^d&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;d \ll |V|&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示：CBOW或Skip-gram。在这两种架构中，Word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口，这种设计来源于[[词的分布式假设]]，由语言学家 Zellig Harris 在1954年提出。它的核心思想是：“上下文相似的词具有相似的意义”（You shall know a word by the company it keeps）。即如果两个词在相似的上下文中出现，那么它们的意义可能也相似。&lt;br /&gt;
&lt;br /&gt;
CBOW 可被视为一项 &amp;quot;填空 &amp;quot;任务，其中词汇嵌入代表了词汇影响上下文窗口中其他词汇相对概率的方式。语义相似的词应该以相似的方式影响这些概率，因为语义相似的词应该在相似的语境中使用。上下文词语的顺序不会影响预测（词袋假设）。&lt;br /&gt;
&lt;br /&gt;
Skip-gram与CBOW相反，模型使用当前词来预测周围的语境词窗口。与较远的上下文词相比，Skip-gram更重视附近的上下文词。&lt;br /&gt;
&lt;br /&gt;
模型训练完成后，学习到的词向量会被放置在向量空间中，这样，在语料库中具有共同语境的词（即语义和句法上相似的词）就会在空间中彼此靠近。相异程度较高的词在空间中的位置则相距较远。&lt;br /&gt;
&lt;br /&gt;
===模型架构===&lt;br /&gt;
==== CBOW ====&lt;br /&gt;
[[文件:CBOW.png|替代=|缩略图|CBOW 模型的三层结构：输入层、嵌入层和输出层。模型以上下文词为输入，通过嵌入矩阵将其转换为词向量，并对这些向量求平均得到上下文表示,该表示输入到输出层，用于预测中心词。]]&lt;br /&gt;
CBOW是由 Mikolov 等人在 2013 年提出的一种经典的词嵌入模型，是 Word2Vec 的两种核心架构之一。CBOW 通过上下文词汇预测当前词，从而学习词向量。CBOW 的输入是目标词周围的上下文词汇（窗口内的相邻词），输出是对目标词 &amp;lt;math&amp;gt;V_t&amp;lt;/math&amp;gt; 的预测。模型的目标是：'''根据上下文词汇预测中心词'''。设定窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，即在目标词左右各取 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; 个词作为上下文，那么对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。模型的结构分为三层，分别是输入层、嵌入层（Embedding）、输出层。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''&lt;br /&gt;
&lt;br /&gt;
每个上下文词 &amp;lt;math&amp;gt;w_{t+i}&amp;lt;/math&amp;gt; 以 one-hot 向量表示为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{x}_{t+i} \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中 &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; 为词汇表大小。词向量通过嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 得到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{v}_{t+i} = W^\top \mathbf{x}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''嵌入层：'''&lt;br /&gt;
&lt;br /&gt;
对上下文词向量求平均，获得上下文表示向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t = \frac{1}{2c} \sum_{\substack{-c \le i \le c \\ i \ne 0}} \mathbf{v}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
设输出矩阵为 &amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt;，对应词 &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; 的输出得分为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_j = \mathbf{v}'_j \cdot \mathbf{h}_t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对所有词使用 softmax 得到目标词的预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t = j \mid C_t) = \frac{\exp(u_j)}{\sum_{k=1}^{|V|} \exp(u_k)} = \frac{\exp(\mathbf{v}'_j \cdot \mathbf{h}_t)}{\sum_{k=1}^{|V|} \exp(\mathbf{v}'_k \cdot \mathbf{h}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
最大化整个语料的预测对数概率，即最小化负对数似然损失函数（NLL）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid C_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
训练完成后，词向量可以从输入嵌入矩阵 &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; 提取，也可以从输出矩阵 &amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt; 提取，或者对两者进行平均得到最终词向量。&lt;br /&gt;
[[文件:Skipgram.png|缩略图|Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。]]&lt;br /&gt;
&lt;br /&gt;
====Skip-gram 模型====&lt;br /&gt;
Skip-gram 是 Word2Vec 的另一种核心模型，由 Mikolov 等人于 2013 年提出。与 CBOW通过上下文预测中心词不同，Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。同样假设窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''一段文本中心词汇&amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;的one-hot编码作为输入向量 &amp;lt;math&amp;gt;\mathbf{x}_t \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''投影层：'''&lt;br /&gt;
&lt;br /&gt;
输入向量与嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{V \times d}&amp;lt;/math&amp;gt; 相乘，得到词向量 &amp;lt;math&amp;gt;\mathbf{h}&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h} = W^\top \mathbf{v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
对于上下文中每个词 &amp;lt;math&amp;gt;w_{t+j}&amp;lt;/math&amp;gt;（&amp;lt;math&amp;gt;j \in \{-c,\ldots,-1,1,\ldots,c\}&amp;lt;/math&amp;gt;），计算其预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_{t+j} \mid w_t) = \frac{\exp(\mathbf{v}'_{w_{t+j}} \cdot \mathbf{v}_t)}{\sum_{w \in V} \exp(\mathbf{v}'_w \cdot \mathbf{v}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 是输出权重矩阵，&amp;lt;math&amp;gt;\mathbf{v}'_w&amp;lt;/math&amp;gt; 是对应词的输出向量。&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram 通过最大化所有中心词和上下文词对的条件概率来训练模型，损失函数为负对数似然：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L} = - \frac{1}{T} \sum_{t=1}^T \sum_{\substack{-c \le j \le c \\ j \ne 0}} \log P(w_{t+j} \mid w_t)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
在Skip-gram中，词向量即为嵌入层之后所得到的向量，而不同于CBOW，Skip-gram的输出矩阵W'虽然也可以用来作为获得词向量的依据，但是其含义是中心词在上下文中的角色，在学习词汇之间关系的任务中可能使用W'作为词向量会有更好的表现。&lt;br /&gt;
&lt;br /&gt;
相比之下，Skip-gram的效果要优于CBOW，这是因为CBOW在平均了词向量之后丧失了词汇的位置信息，丢失了词汇之间的关联性，因此目前各种工程实现中常用Skip-gram模型。&lt;br /&gt;
&lt;br /&gt;
===训练方法===&lt;br /&gt;
无论是CBOW还是Skip-gram，总是需要遍历整个词表，因此计算代价很大，所以就有了两种近似的计算方法，负采样与层次softmax。这两个是 Word2Vec 中非常重要的训练加速策略，它们用于高效地优化输出词的概率分布。&lt;br /&gt;
&lt;br /&gt;
'''负采样（Negative Sampling）:'''&lt;br /&gt;
&lt;br /&gt;
负采样的核心思想在于将原始问题转换成一个[[二分类问题]]，让模型只区分正样本和负样本，例如在Skip-gram中，对于一个中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 和一个正确的上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt;，正确的上下文词被称为正样本。同时人为给出错误的上下文文本 &amp;lt;math&amp;gt;w'_{o_i}&amp;lt;/math&amp;gt;，也就是负样本。负样本的采样一般按照词频 &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; 的 &amp;lt;math&amp;gt;3/4&amp;lt;/math&amp;gt; 次方作为采样概率，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w'_{o_i}) \propto U(w'_{o_i})^{0.75}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
负采样目的在于最小化负样本与中心词一起出现的概率，同时最大化正样本与中心词一起出现的概率，将softmax替换为sigmoid函数，得到新的损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{Skip-gram} = \log\sigma(\mathbf{v}^\top_{w_o} \mathbf{v}_{w_t}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{v}_{w_t})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; 是sigmoid函数，&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; 为负样本个数。同样，该方法也能应用在CBOW模型中，只是负样本变成了中心词：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{CBOW} = \log\sigma(\mathbf{v}^\top_{w_t} \mathbf{h}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{h})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不过在实际应用中大多数时候使用Skip-gram，因此负采样在CBOW中的应用很少。&lt;br /&gt;
&lt;br /&gt;
'''层次 Softmax（Hierarchical Softmax）:'''&lt;br /&gt;
&lt;br /&gt;
层次softmax的核心思路是根据词汇的词频构建一个霍夫曼树，每个叶节点代表一个词汇，而预测一个词汇就是沿着树走的一条路径，对应的也就是一个不断重复的二分类问题，因此每个目标词汇 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 都会被编码为一串二进制编码：&lt;br /&gt;
&amp;lt;math&amp;gt;code(w_t)=(b_1, b_2, \ldots, b_L), b_i \in {0,1}&amp;lt;/math&amp;gt;&lt;br /&gt;
而这条路径上的非叶子节点被记为 &amp;lt;math&amp;gt;n_1, n_2, \ldots, n_L&amp;lt;/math&amp;gt;。因此，在Skip-gram中，给定中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;  与上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt; 之后，上下文词的条件概率就变成了：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(w_o \mid w_t) = \prod_{i=1}^L(w_o) \sigma (|1-b_i|\mathbf{v}_{n_i}^\top\mathbf{v}_{w_t})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\mathbf{v}_{n_i}&amp;lt;/math&amp;gt;是路径节点的向量，相当于原始输出矩阵&amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt;。损失函数为最大化词对的出现概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \sum_{(w_t, w_o) \in D} \log P(w_o \mid w_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样，层次softmax也可以应用于CBOW中，条件概率中的目标词词向量更换为了上下文词汇的平均词向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t \mid \text{context}) = \prod_{i=1}^{L(w_t)} \sigma\left( [1 - b_i(w_t)] \cdot \mathbf{v}_{n_i}^\top \mathbf{h} \right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此也能够得到对应的损失函数。&lt;br /&gt;
&lt;br /&gt;
=='''应用领域'''==&lt;br /&gt;
&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
Word2Vec 是现代 NLP 系统中最早成功实现无监督预训练嵌入层的技术之一，它能够将文本中的词汇转换为稠密的向量表示，并保留语义与句法信息，为各种语言理解与生成任务提供了统一的向量空间支持。&lt;br /&gt;
&lt;br /&gt;
==== 语义分析 ====&lt;br /&gt;
在语义分析方面，Word2Vec 能够通过词向量之间的相对距离和方向关系建模词义相似度与句法结构&amp;lt;ref&amp;gt;Barkan O. Bayesian neural word embedding[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2017, 31(1).&amp;lt;/ref&amp;gt;。例如，在词义消歧任务中，如果句子中出现了歧义词“bank”，模型可以利用其与上下文词（如“money”或“river”）之间的向量相似性，推断其在当前语境中是“银行”还是“河岸”。情感分析也是 Word2Vec 的典型应用场景之一，通过聚类“好”、“棒”、“糟糕”、“失望”等情感色彩明显的词向量，构建带情感权重的表示，再结合分类器（如 SVM）进行句子级或文档级的情绪判定。例如，企业可使用该方法自动识别客户评论的正负面态度。在主题建模任务中，研究者常利用 Word2Vec 学习到的语义向量进行 K-means 等聚类操作，从而发掘出语料中隐含的语义主题，如科技类文本中自动聚类出“人工智能”、“量子计算”、“大数据”等主题簇。&lt;br /&gt;
&lt;br /&gt;
==== 机器翻译 ====&lt;br /&gt;
在机器翻译任务中，Word2Vec 可用于词对齐与语义映射的预处理阶段。通过训练源语言与目标语言的词向量模型，并将其映射到共享向量空间，可以自动对齐如“hello”与“hola”，“school”与“école”这类语义对等词汇，这种方法在无监督机器翻译中尤其常见。此外，在基于神经网络的机器翻译系统（如 Seq2Seq 或 Transformer 模型）中，Word2Vec 也被用于初始化嵌入层权重，相比随机初始化可显著加速模型收敛，提高 BLEU 翻译质量得分。谷歌早期的 NMT 系统就曾在多语种语料上使用跨语言词向量来实现语言无关的嵌入表示，有效支持了低资源语言的翻译。&lt;br /&gt;
&lt;br /&gt;
==== 文本分类 ====&lt;br /&gt;
在文本分类任务中，Word2Vec 同样具有广泛用途。以新闻分类为例，不同主题（如“财经”、“体育”、“国际”）的新闻中出现的关键词往往语义聚集，通过 Word2Vec 向量聚合形成文本表示，再输入分类器（如 CNN、Transformer）进行训练，可高效地区分不同类别的文本。在垃圾邮件识别中，模型可捕捉如“中奖”、“优惠”、“请点击”等词汇的特征并识别其潜在风险。在法律文书分类中，词向量可帮助模型辨别“判决书”、“调解书”、“起诉状”等不同法律文体的词汇特征，从而自动进行文档归档。通常做法是在句子级别对每个词向量进行平均或加权平均操作，构建文档向量，再送入模型进行判别。以 IMDb 电影评论为例，研究人员常使用 Word2Vec 初始化嵌入表示，再结合情感标注数据进行二分类训练，用于判断用户评价是正面还是负面。&lt;br /&gt;
&lt;br /&gt;
总体来看，Word2Vec 在 NLP 中的主要价值在于：提供一种轻量、高效且能迁移的通用词语表示形式，极大地降低了特征工程的门槛，为机器学习和深度学习模型提供了统一的输入基础。&lt;br /&gt;
&lt;br /&gt;
=== 推荐系统 ===&lt;br /&gt;
虽然 Word2Vec 最初是为处理语言建模任务而设计，但其核心思想——“在上下文中共现的词语往往意义相关”——可以被自然迁移到非语言领域，特别是推荐系统中&amp;lt;ref&amp;gt;Goldberg Y, Levy O. word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method[J]. arXiv preprint arXiv:1402.3722, 2014.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Grbovic M, Cheng H. Real-time personalization using embeddings for search ranking at airbnb[C]//Proceedings of the 24th ACM SIGKDD international conference on knowledge discovery &amp;amp; data mining. 2018: 311-320.&amp;lt;/ref&amp;gt;。推荐系统中的“用户行为序列”与 NLP 中的“句子”结构高度相似，而“商品、视频、音乐等内容”则可类比为“词”。基于这种结构对应关系，Word2Vec 成为建模用户偏好和内容相似性的强大工具。&lt;br /&gt;
&lt;br /&gt;
在实践中，推荐系统会将用户的历史点击序列、购物行为或播放列表视作时间序列数据，将其中每一个物品（如商品ID、音乐ID）作为一个“词”输入 Word2Vec 模型进行训练。采用 Skip-gram 结构后，模型试图预测某个物品的上下文物品（即前后点击或购买的内容），从而学习出反映行为模式的向量表示。&lt;br /&gt;
&lt;br /&gt;
训练完成后，Word2Vec 模型输出的嵌入向量可以直接用于推荐。最常见的方式是通过计算当前浏览/购买商品与其他商品之间的向量相似度（通常为余弦相似度），从而生成相似商品推荐（Item-to-Item 推荐）。此外，还可以将一个用户所有历史行为的物品向量进行平均，得到用户的兴趣画像向量，用于个性化推荐排序。&lt;br /&gt;
&lt;br /&gt;
这一思想已经在多个主流平台落地并取得了良好效果。例如：&lt;br /&gt;
&lt;br /&gt;
* 淘宝、京东等电商平台使用商品序列训练 Word2Vec，构建“商品—商品”图谱，用于猜你喜欢、搭配购、商品联想等场景。比如用户在浏览“运动鞋”页面后，系统会推荐“运动袜”、“运动手表”等与其行为序列中相邻频繁出现的物品&amp;lt;ref&amp;gt;Feng Y, Lv F, Shen W, et al. Deep session interest network for click-through rate prediction[J]. arXiv preprint arXiv:1905.06482, 2019.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
* 美团和大众点评等本地生活平台，通过用户在一定时间段内访问的商家序列（如早餐店、便利店、药店），构建“地点向量”或“服务向量”，支持基于用户轨迹的本地商家推荐，如“去过 A 的人，也常去 B”。&lt;br /&gt;
&lt;br /&gt;
=== 信息检索 ===&lt;br /&gt;
在传统信息检索系统中，搜索结果的相关性通常依赖于关键词的精确匹配，例如布尔检索、TF-IDF 或 BM25 等基于词频的模型。这些方法尽管在速度和工程实现上具备优势，但在语义层面存在严重缺陷：一旦查询词与文档中的词不完全一致，即便它们在意义上高度相关，也可能无法匹配。这就导致了检索召回率不足或排序不准确的问题。Word2Vec 所提供的分布式表示弥补了这一不足，它将语义上相近的词投射到向量空间中的相邻位置，从而支持更灵活、更具语义关联性的检索策略。&lt;br /&gt;
&lt;br /&gt;
==== 查询扩展（Query Expansion） ====&lt;br /&gt;
例如，当用户输入关键词“肺炎”时，系统可以在训练好的词向量模型中自动找出与其相似的词，如“呼吸道感染”、“发烧”、“流感”等，并将这些词加入查询词集合中，从而扩大搜索范围，提高语义召回能力。此类机制在医学检索、法律文献检索中尤为重要，因为术语表达方式多变，而查询词往往较为简单。&lt;br /&gt;
&lt;br /&gt;
==== 文档排序 ====&lt;br /&gt;
在文档排序任务中，系统可将查询和文档中词嵌入后计算语义相关性得分，辅助判断哪些文档更符合用户意图，用于替代传统的基于词频的打分方式。此外，Word2Vec 在短文本理解中也非常有效，常用于搜索建议、问答匹配、智能补全等场景，尤其适合处理查询词稀疏、语义模糊的用户输入。&lt;br /&gt;
&lt;br /&gt;
==== 短文本理解 ====&lt;br /&gt;
此外，短文本理解任务中 Word2Vec 的作用也尤为显著。在搜索建议、智能补全、FAQ 匹配等场景中，用户输入往往是极短的词组甚至单词，这使得传统稀疏表示方法效果极差。而 Word2Vec 可通过词向量的上下文信息推断潜在语义，提升理解准确度。例如，在输入“退货”时系统可联想到“退款”、“售后”、“客服”等相关查询，从而实现更贴近用户意图的补全建议。&lt;br /&gt;
&lt;br /&gt;
=== 其他领域 ===&lt;br /&gt;
Word2Vec 的通用表示能力使其在多个非语言学领域也展现出强大的迁移价值。通过将非语言数据结构化为“序列”或“上下文”形式，Word2Vec 能够学习出反映实体关系的向量表示，从而广泛应用于生物信息学、社会科学及专业技术领域。&lt;br /&gt;
&lt;br /&gt;
==== 生物信息学 ====&lt;br /&gt;
在生物信息学中，研究者将蛋白质或 DNA 序列中的氨基酸、核苷酸片段视为“词”，构建“生物语言”&amp;lt;ref&amp;gt;Min S, Lee B, Yoon S. Deep learning in bioinformatics[J]. Briefings in bioinformatics, 2017, 18(5): 851-869.&amp;lt;/ref&amp;gt;。通过训练 Word2Vec 模型，可以学习到功能相关序列的向量表示，应用于蛋白质功能预测、疾病相关区域识别等任务。例如，某些氨基酸片段在多个蛋白质中共现频繁，模型会自动捕捉它们的潜在生物学意义。此外，Word2Vec 也被用于药物发现场景，辅助建模药物与靶点间的语义联系。&lt;br /&gt;
&lt;br /&gt;
==== 社会科学 ====&lt;br /&gt;
在社会科学中，Word2Vec 被用于探测语言中的刻板印象和社会偏见&amp;lt;ref&amp;gt;Benton A, Arora R, Dredze M. Learning multiview embeddings of twitter users[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2016: 14-19.&amp;lt;/ref&amp;gt;。通过分析词向量之间的距离，如“nurse”更接近“she”，“doctor”更接近“he”，可揭示潜在的性别偏见结构&amp;lt;ref&amp;gt;Bolukbasi T, Chang K W, Zou J Y, et al. Man is to computer programmer as woman is to homemaker? debiasing word embeddings[J]. Advances in neural information processing systems, 2016, 29.&amp;lt;/ref&amp;gt;。同时，研究人员也使用时间序列语料构建跨年代词向量，研究词义随时代的语义漂移，如“liberal”、“gender”等词在不同时期的语义演变路径&amp;lt;ref&amp;gt;Hamilton W L, Leskovec J, Jurafsky D. Diachronic word embeddings reveal statistical laws of semantic change[J]. arXiv preprint arXiv:1605.09096, 2016.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
==== 法律、金融、医疗等垂直领域 ====&lt;br /&gt;
在法律、金融、医疗等垂直领域，Word2Vec 有助于理解专业术语之间的语义关系&amp;lt;ref&amp;gt;Li J, Sun A, Han J, et al. A survey on deep learning for named entity recognition[J]. IEEE transactions on knowledge and data engineering, 2020, 34(1): 50-70.&amp;lt;/ref&amp;gt;。在法律文本分析中，模型可用于预测文书之间的相似度，辅助法官判例归类与类案推荐；在金融领域，Word2Vec 被用于情绪识别系统中，帮助模型理解公告、舆情或分析报告中的潜在语义态度；在医疗信息处理中，词向量支持将病症、药品与治疗手段建模为统一向量空间，用于构建医学知识图谱或提升电子病历挖掘效率。&lt;br /&gt;
&lt;br /&gt;
=='''优缺点'''==&lt;br /&gt;
&lt;br /&gt;
===优点===&lt;br /&gt;
[[文件:Word2vec fig1.png|替代=|缩略图|Word2Vec 学习到的词向量空间中的分布关系。可以看到，语义相似的词（如 “man” 与 “woman”，“king” 与 “queen”）在二维向量空间中彼此距离较近，体现了模型在词语表示上的语义聚类能力。]]&lt;br /&gt;
'''捕捉语义和语法关系：'''&lt;br /&gt;
&lt;br /&gt;
通过上下文预测（Skip-gram/CBOW），可学习到单词的分布式表示，相似语义或语法角色的词在向量空间中距离相近。&lt;br /&gt;
&lt;br /&gt;
支持线性类比关系（如“国王 - 男 + 女 ≈ 女王”）。&lt;br /&gt;
&lt;br /&gt;
'''适用于大规模数据：'''&lt;br /&gt;
&lt;br /&gt;
可高效训练数十亿级别的语料，内存消耗相对较低。&lt;br /&gt;
&lt;br /&gt;
'''通用性强：'''&lt;br /&gt;
&lt;br /&gt;
词向量可作为下游任务（如文本分类、机器翻译）的特征输入，提升模型性能。&lt;br /&gt;
&lt;br /&gt;
===局限性===&lt;br /&gt;
'''无法处理多义词（Polysemy）：'''&lt;br /&gt;
&lt;br /&gt;
每个词仅对应单一向量，无法区分不同上下文中的多义性（如“苹果”指水果或公司）。&lt;br /&gt;
&lt;br /&gt;
'''依赖局部上下文：'''&lt;br /&gt;
&lt;br /&gt;
仅基于窗口内的局部共现信息，忽略文档级或语料级的全局统计特征（如GloVe的优势）。&lt;br /&gt;
&lt;br /&gt;
'''需要大量训练数据：'''&lt;br /&gt;
&lt;br /&gt;
小规模语料下生成的词向量质量较差，难以捕捉低频词语义。&lt;br /&gt;
&lt;br /&gt;
'''静态词向量（Static Embeddings）：'''&lt;br /&gt;
&lt;br /&gt;
词向量在训练后固定，无法动态适应不同上下文（后续模型如ELMo、BERT解决了这一问题）。&lt;br /&gt;
&lt;br /&gt;
'''窗口大小敏感：'''&lt;br /&gt;
&lt;br /&gt;
表现受上下文窗口大小影响，过大或过小均可能导致语义捕捉不充分。&lt;br /&gt;
&lt;br /&gt;
'''未考虑词序信息：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram和CBOW模型忽略窗口内词的顺序关系（后续改进如Seq2Vec或Transformer可解决）。&lt;br /&gt;
&lt;br /&gt;
=='''相关技术与扩展'''==&lt;br /&gt;
&lt;br /&gt;
===GloVe（Global Vectors for Word Representation）===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出，旨在结合传统基于计数的模型（如 LSA）和 Word2Vec 的优势，提出一种高效的全局词向量训练方法。&lt;br /&gt;
&lt;br /&gt;
====技术原理====&lt;br /&gt;
GloVe 是一种基于全局共现信息来学习词向量的方法&amp;lt;ref&amp;gt;Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.&amp;lt;/ref&amp;gt;，与 Word2Vec 不同，它不依赖上下文窗口中的预测任务，而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。&lt;br /&gt;
&lt;br /&gt;
GloVe 的设计灵感来自以下关键观察：词语的语义关系可以通过它们与其他词共现的比例来表达，而不是仅通过是否共现或是否邻近。例如，“ice” 和 “steam” 都与 “water” 有很强的共现关系，但 “ice” 更倾向与 “cold” 共现，而 “steam” 更倾向与 “hot” 共现。GloVe 试图让词向量之间的差异或比例能反映出这种语义关系。&lt;br /&gt;
&lt;br /&gt;
在训练之前，GloVe 首先对整个语料库构建一个 共现矩阵&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
* 每个元素 &amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt; 表示词&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;在词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 的上下文窗口中出现的次数；&lt;br /&gt;
&lt;br /&gt;
* 矩阵是稀疏且高维的，规模为 &amp;lt;math&amp;gt;V \times V&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; 是词汇表大小。&lt;br /&gt;
&lt;br /&gt;
GloVe 的一个重要设计理念是：两个词之间的语义关系可由它们对其他词的共现比值刻画。对于一个目标词 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;'''，考虑两个上下文词 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 和 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，如果 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;''' 与 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 的共现频率远高于与 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，则两者在语义上的关联也会不同。&lt;br /&gt;
&lt;br /&gt;
定义贡献概率为：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;P_{ik} = \frac{X_{ik}}{\sum_{k'} X_{ik'}}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
GloVe 期望通过学习得到的词向量 '''&amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt;'''，能使词之间的向量关系满足下列公式形式：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;F(\mathbf{w}_i, \tilde{\mathbf{w}}_j, X_{ij}) = \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j \approx \log X_{ij}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
即目标是让词向量的点积加上偏置项逼近共现频率的对数值，而不是原始频数，后者变化范围太大。&lt;br /&gt;
&lt;br /&gt;
为了实现上述目标，GloVe 构建了以下加权平方误差损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;J = \sum_{i,j=1}^{V} f(X_{ij}) \cdot \left( \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij} \right)^2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt;: 词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 和 &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; 的共现次数；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{w}_i&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;\tilde{\mathbf{w}}_j&amp;lt;/math&amp;gt; : 词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;：权重函数（防止高频词主导优化）；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;{b}_j&amp;lt;/math&amp;gt;：偏置项。&lt;br /&gt;
&lt;br /&gt;
这个函数可以防止高频词主导模型训练，也避免了低频词对整体模型质量的影响。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* Word2Vec 是基于预测任务（局部上下文窗口），而 GloVe 是基于矩阵分解（全局共现频率）；&lt;br /&gt;
&lt;br /&gt;
* 相比传统 LSA（SVD），GloVe 使用非线性权重函数，训练时不需要全局矩阵分解，更高效；&lt;br /&gt;
&lt;br /&gt;
* GloVe适合全局语义关系建模，尤其在大规模语料训练中表现优异；&lt;br /&gt;
&lt;br /&gt;
* GloVe支持线性类比关系，类似 Word2Vec（如“king - man + woman ≈ queen”）&lt;br /&gt;
&lt;br /&gt;
=== FastText ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出&amp;lt;ref&amp;gt;Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.&amp;lt;/ref&amp;gt;，旨在解决 Word2Vec 模型在处理罕见词、词形变化（如复数、时态）等方面的能力不足。其核心理念是在训练过程中引入子词信息，以增强词向量对形态的建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
FastText 的核心思想是：将词视为子词（subword）n-gram 的组合体，而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词（OOV）的表示能力。&lt;br /&gt;
&lt;br /&gt;
'''子词建模（Subword Embedding）：'''&lt;br /&gt;
&lt;br /&gt;
每个单词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 被划分为若干个字符 n-gram，例如设置 n = 3~6 时：&lt;br /&gt;
&lt;br /&gt;
对于词 “where”，首先在其两端添加边界符号（如 &amp;lt; 和 &amp;gt;），构成：&amp;lt;where&amp;gt;，然后提取字符 n-gram 得到： &amp;lt;wh, whe, her, ere, re&amp;gt;，包括完整词本身 &amp;quot;where&amp;quot;，最终表示为一个 n-gram 集合 &amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
词向量的表示为其所有 n-gram 向量的平均或和：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_w = \sum_{g \in G} w_g z_g&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z_g&amp;lt;/math&amp;gt;​ 是 n-gram &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; 的嵌入向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;​ 是词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 的所有子词集合。&lt;br /&gt;
&lt;br /&gt;
这种表示方式让模型在遇到未登录词时，也可以通过其组成子词获取合理向量。&lt;br /&gt;
&lt;br /&gt;
'''模型结构与训练：'''&lt;br /&gt;
&lt;br /&gt;
FastText 延续了 Word2Vec 的 Skip-gram 架构，但输入词不再是 one-hot 编码的词本身，而是其所有 n-gram 的组合。训练目标为：给定中心词（子词组合向量），预测其上下文词。即最大化如下目标函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{Skip-gram}} = \sum_{(w_t, w_o) \in D} \left[ \log \sigma\left( \mathbf{v}_{w_o}^\top \mathbf{v}_{w_t} \right) + \sum_{i=1}^{k} \mathbb{E}_{w_i' \sim P_n(w)} \log \sigma\left( -\mathbf{v}_{w_i'}^\top \mathbf{v}_{w_t} \right) \right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 是由子词构成的中心词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{wo}&amp;lt;/math&amp;gt;​​ 是上下文词向量；&lt;br /&gt;
&lt;br /&gt;
负采样 &amp;lt;math&amp;gt;P_n(w)&amp;lt;/math&amp;gt; 用于高效近似 softmax。&lt;br /&gt;
&lt;br /&gt;
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示，以提升整体语义建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* FastText 通过引入 n-gram，有效表示未登录词与形态变化词；&lt;br /&gt;
&lt;br /&gt;
* FastText 面向多语言与拼写多样化语言（如芬兰语、德语）效果显著优于 Word2Vec；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec 只能对词表中出现过的词进行建模，FastText 可泛化到未出现的新词，具备更强的鲁棒性与泛化能力；&lt;br /&gt;
&lt;br /&gt;
* GloVe 基于全局共现信息构建稠密表示，适合静态建模，FastText 基于局部上下文与子词结构，适合细粒度语义与动态扩展；&lt;br /&gt;
&lt;br /&gt;
* FastText 在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用。&lt;br /&gt;
&lt;br /&gt;
=== BERT 模型 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型&amp;lt;ref&amp;gt;Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[C]//Proceedings of the 2019 conference of the North American chapter of the association for computational linguistics: human language technologies, volume 1 (long and short papers). 2019: 4171-4186.&amp;lt;/ref&amp;gt;，发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务，并通过大规模语料上的预训练 + 微调机制，在多个自然语言处理任务上取得了 SOTA（state-of-the-art）成绩。&lt;br /&gt;
&lt;br /&gt;
BERT 的设计动机是解决传统语言模型（如 Word2Vec、GloVe）在上下文建模、语义歧义处理和句子级理解方面的不足，特别是在建模“一个词在不同上下文中含义不同”这一关键问题。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理====&lt;br /&gt;
'''基础架构：'''&lt;br /&gt;
&lt;br /&gt;
BERT 构建在 Transformer 架构之上，具体使用了 多层 Transformer 编码器堆叠（通常 BERT-base 为 12 层，BERT-large 为 24 层）。Transformer 由 Vaswani 等人在 2017 年提出，其最大特点是 完全基于注意力机制（Self-Attention），无需使用 RNN 或 CNN，可并行处理任意长度的输入。&lt;br /&gt;
&lt;br /&gt;
每层包含：&lt;br /&gt;
&lt;br /&gt;
多头自注意力机制（Multi-Head Self-Attention）；&lt;br /&gt;
&lt;br /&gt;
前馈神经网络（Feed-Forward Layer）；&lt;br /&gt;
&lt;br /&gt;
残差连接 + 层归一化。&lt;br /&gt;
&lt;br /&gt;
Transformer 中每个词的表示会综合考虑所有其他词对它的影响，因此能捕捉复杂的依赖结构。&lt;br /&gt;
&lt;br /&gt;
'''输入方式表示：'''&lt;br /&gt;
&lt;br /&gt;
BERT 的输入不只是单词序列，而是词 + 位置 + 句子类型三重嵌入之和：Input Embedding = Token Embedding + Position Embedding + Segment Embedding&lt;br /&gt;
&lt;br /&gt;
例如用于句子对任务（如问答）时，Segment A 表示第一句话，Segment B 表示第二句话。输入序列结构为：[CLS] 句子A [SEP] 句子B [SEP]，其中[CLS] 用于分类任务的特殊标记；[SEP] 是句子分隔符。&lt;br /&gt;
&lt;br /&gt;
'''预训练阶段：'''&lt;br /&gt;
&lt;br /&gt;
BERT 采用两种 自监督学习任务在大规模语料（如 Wikipedia 和 BooksCorpus）上进行训练：&lt;br /&gt;
&lt;br /&gt;
（1）Masked Language Model（MLM）：随机遮蔽输入序列中约 15% 的词，模型需预测被 []MASK 替换的词是什么，本质上是一个多分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{MLM}} = - \sum_{i \in M} \log P(w_i \mid x_{\text{masked}})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
（2）Next Sentence Prediction（NSP）：输入两个句子 A 和 B，任务是判断 B 是否是 A 的真实下一句，是一个二分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{NSP}} = -\log P(\text{IsNext} \mid A, B)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''微调阶段：'''&lt;br /&gt;
&lt;br /&gt;
在预训练后，BERT 可被快速迁移到下游任务，如：文本分类（情感分析）、序列标注（命名实体识别）、问答系统，只需在最后加上一层简单的任务特定结构，并用少量数据进行微调即可。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* BERT 同时利用左上下文与右上下文，解决传统语言模型单向建模的局限；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理多义词与上下文依赖，如同一个词在不同句子中的不同含义；&lt;br /&gt;
&lt;br /&gt;
* BERT 采用Transformer 架构支持全局依赖建模，相比 RNN 更并行高效；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理分类、标注、问答等多类任务，具备高度迁移能力；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec/GloVe 生成的是固定词向量、语境无关，BERT 输出的是上下文相关的词表示，能捕捉复杂句法语义关系。&lt;br /&gt;
&lt;br /&gt;
=== 动态词嵌入（ ELMo） ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
ELMo（'''Embeddings from Language Models'''）是由 Allen Institute for AI（AI2）的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法&amp;lt;ref&amp;gt;PETERS M E, NEUMANN M, IYER M, et al. Deep contextualized word representations[J/OL]. arXiv, 2018: 1802.05365 [2023-12-01]. &amp;lt;nowiki&amp;gt;https://arxiv.org/abs/1802.05365&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型，突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象（如 &amp;quot;bank&amp;quot; 表示“银行”或“河岸”），传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型（BiLM）捕捉词的上下文依赖关系，为每个词生成可变的、语境敏感的表示。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
ELMo 基于传统语言模型（Language Model, LM），但引入了以下三个关键技术点：&lt;br /&gt;
&lt;br /&gt;
'''双向语言模型（BiLM）：'''&lt;br /&gt;
&lt;br /&gt;
一个正向语言模型（从左到右）：&amp;lt;math&amp;gt;P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个反向语言模型（从右到左）：&amp;lt;math&amp;gt;P(w_T, \ldots, w_1) = \prod_{t=1}^{T} P(w_t \mid w_{t+1}, \ldots, w_T)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这两个模型均使用深层 LSTM（Long Short-Term Memory） 网络进行建模，层数通常为两层。&lt;br /&gt;
&lt;br /&gt;
'''多层表示聚合机制：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量，而是将所有层的隐状态按照加权方式聚合，从而获得更加丰富的语义特征。&lt;br /&gt;
&lt;br /&gt;
每个词的 ELMo 表示由以下公式给出：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{ELMo}(w_t) = \gamma \sum_{j=0}^{L} s_j \cdot \mathbf{h}_t^{(j)}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t^{(j)}&lt;br /&gt;
&amp;lt;/math&amp;gt; 表示第 &amp;lt;math&amp;gt;j&lt;br /&gt;
&amp;lt;/math&amp;gt; 层对词 &amp;lt;math&amp;gt;w_t&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 的隐状态，是前向和后向语言模型的连接结果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 是第&amp;lt;math&amp;gt;j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;层的可学习权重，表示该层对最终表示的贡献程度；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt; 是可学习缩放因子，控制整体表示的幅度。&lt;br /&gt;
&lt;br /&gt;
'''训练与迁移使用：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 先在大规模语料上训练语言模型（如 1 Billion Word Benchmark），然后将训练好的表示迁移到下游任务中，并在下游任务中联合微调（fine-tune）其权重&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt;。这种机制大幅提高了模型对语境、词义变化的感知能力，适用于情感分类（Sentiment Analysis）、问答系统（QA）和自然语言推理（NLI）。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入；&lt;br /&gt;
&lt;br /&gt;
* ELMo 同时考虑前文与后文，有效捕捉语言结构与语义；&lt;br /&gt;
&lt;br /&gt;
* 与 Word2Vec/GloVe相比，ELMo 输出的词向量会随句子变化，是“动态词向量”；&lt;br /&gt;
&lt;br /&gt;
* 与 BERT 相比，ELMo 使用 LSTM 架构，计算成本相对较低，更适合中小规模任务。&lt;br /&gt;
&lt;br /&gt;
=='''开源实现与工具'''==&lt;br /&gt;
Word2Vec 自 2013 年由 Google 发布以来，被广泛应用于自然语言处理任务。除了原始的 C 语言实现，目前已有多个高效的开源工具和库支持 Word2Vec 的训练与使用。&lt;br /&gt;
&lt;br /&gt;
=== Gensim 库 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python&lt;br /&gt;
* 功能：&lt;br /&gt;
** 支持 CBOW 和 Skip-gram 两种训练模式。&lt;br /&gt;
** 提供 负采样（Negative Sampling） 和 层次 Softmax（Hierarchical Softmax） 加速训练。&lt;br /&gt;
** 可调整参数：窗口大小、词向量维度、最小词频、训练轮次（epochs）等。&lt;br /&gt;
** 支持模型保存为 &amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;（二进制）或 &amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;（纯文本）格式，兼容其他 NLP 工具（如 FastText、GloVe）。&lt;br /&gt;
** 提供 增量训练（继续训练已有模型）和 词汇表更新 功能。&lt;br /&gt;
&lt;br /&gt;
示例代码：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from gensim.models import Word2Vec&lt;br /&gt;
from gensim.models.word2vec import LineSentence  # 用于流式读取大文件&lt;br /&gt;
&lt;br /&gt;
# 示例1：基础训练（列表输入）&lt;br /&gt;
sentences = [&lt;br /&gt;
    [&amp;quot;自然&amp;quot;, &amp;quot;语言&amp;quot;, &amp;quot;处理&amp;quot;, &amp;quot;很&amp;quot;, &amp;quot;有趣&amp;quot;],&lt;br /&gt;
    [&amp;quot;深度学习&amp;quot;, &amp;quot;改变&amp;quot;, &amp;quot;了&amp;quot;, &amp;quot;NLP&amp;quot;],&lt;br /&gt;
    [&amp;quot;Word2Vec&amp;quot;, &amp;quot;是&amp;quot;, &amp;quot;经典&amp;quot;, &amp;quot;算法&amp;quot;]&lt;br /&gt;
]&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=sentences,&lt;br /&gt;
    vector_size=300,       # 词向量维度&lt;br /&gt;
    window=5,             # 上下文窗口&lt;br /&gt;
    min_count=1,          # 最小词频&lt;br /&gt;
    workers=4,            # 并行线程数&lt;br /&gt;
    sg=1,                 # 1=Skip-gram, 0=CBOW&lt;br /&gt;
    hs=0,                 # 0=负采样, 1=层次Softmax&lt;br /&gt;
    negative=5,           # 负采样数&lt;br /&gt;
    epochs=10             # 训练轮次&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 示例2：大文件训练（流式读取）&lt;br /&gt;
corpus_path = &amp;quot;corpus.txt&amp;quot;  # 每行一个句子，词语用空格分隔&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=LineSentence(corpus_path),  # 自动按行流式读取&lt;br /&gt;
    vector_size=300,&lt;br /&gt;
    window=5,&lt;br /&gt;
    min_count=5,        # 过滤低频词&lt;br /&gt;
    workers=8&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 模型使用&lt;br /&gt;
print(model.wv[&amp;quot;自然&amp;quot;])          # 获取词向量&lt;br /&gt;
print(model.wv.most_similar(&amp;quot;NLP&amp;quot;, topn=3))  # 相似词查询&lt;br /&gt;
&lt;br /&gt;
# 模型保存与加载&lt;br /&gt;
model.save(&amp;quot;word2vec.model&amp;quot;)          # 二进制格式&lt;br /&gt;
model.wv.save_word2vec_format(&amp;quot;vectors.bin&amp;quot;, binary=True)  # 兼容原始格式&lt;br /&gt;
loaded_model = Word2Vec.load(&amp;quot;word2vec.model&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 快速实验 Word2Vec 模型，适用于中小规模语料（百万级词汇）。&lt;br /&gt;
* 需要与其他 Python NLP 工具（如 spaCy、NLTK）集成时。&lt;br /&gt;
&lt;br /&gt;
=== TensorFlow / PyTorch 实现 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python（基于 TensorFlow/PyTorch 框架）&lt;br /&gt;
* 功能：&lt;br /&gt;
** 提供更灵活的模型自定义能力（如修改损失函数、调整网络结构）。&lt;br /&gt;
** 支持 GPU 加速训练，适合大规模语料（十亿级词汇）。&lt;br /&gt;
** 可与其他深度学习模型（如 LSTM、Transformer）结合使用。&lt;br /&gt;
&lt;br /&gt;
TensorFlow 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 示例：Skip-gram负采样实现&lt;br /&gt;
vocab_size = 10000&lt;br /&gt;
embedding_dim = 300&lt;br /&gt;
num_ns = 5    # 负采样数&lt;br /&gt;
&lt;br /&gt;
# 自定义Word2Vec模型&lt;br /&gt;
class Word2Vec(tf.keras.Model):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        self.target_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=1)&lt;br /&gt;
        self.context_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=num_ns+1)&lt;br /&gt;
        &lt;br /&gt;
    def call(self, pair):&lt;br /&gt;
        target, context = pair&lt;br /&gt;
        # target shape: (batch, 1)&lt;br /&gt;
        # context shape: (batch, 1+num_ns)&lt;br /&gt;
        word_emb = self.target_embedding(target)       # (batch, 1, dim)&lt;br /&gt;
        context_emb = self.context_embedding(context)  # (batch, 1+num_ns, dim)&lt;br /&gt;
        return tf.matmul(word_emb, context_emb, transpose_b=True)&lt;br /&gt;
&lt;br /&gt;
# 数据准备（假设已预处理）&lt;br /&gt;
target_words = np.random.randint(0, vocab_size, (1000, 1))&lt;br /&gt;
context_words = np.random.randint(0, vocab_size, (1000, 6))  # 1正样本+5负样本&lt;br /&gt;
&lt;br /&gt;
# 编译训练&lt;br /&gt;
model = Word2Vec()&lt;br /&gt;
model.compile(optimizer='adam', loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))&lt;br /&gt;
model.fit(x=(target_words, context_words), epochs=5)&lt;br /&gt;
&lt;br /&gt;
# 获取词向量&lt;br /&gt;
embedding_layer = model.get_layer('target_embedding')&lt;br /&gt;
word_vectors = embedding_layer.get_weights()[0]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;PyTorch 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torch.nn as nn&lt;br /&gt;
# 自定义 Word2Vec 模型（CBOW）&lt;br /&gt;
class Word2Vec(nn.Module):&lt;br /&gt;
    def __init__(self, vocab_size, embedding_dim):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        # 中心词和上下文词共享同一个嵌入矩阵&lt;br /&gt;
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
    def forward(self, target, context):&lt;br /&gt;
        # target shape: (batch_size,)&lt;br /&gt;
        # context shape: (batch_size,)&lt;br /&gt;
        target_emb = self.embeddings(target)  # (batch_size, embedding_dim)&lt;br /&gt;
        context_emb = self.embeddings(context) # (batch_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
        # 计算点积得分（Skip-gram目标）&lt;br /&gt;
        scores = torch.sum(target_emb * context_emb, dim=1)  # (batch_size,)&lt;br /&gt;
        return scores&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要与深度学习模型联合训练（如文本分类+词向量微调）。&lt;br /&gt;
* 研究场景，需自定义 Word2Vec 的变体（如结合注意力机制）。&lt;br /&gt;
&lt;br /&gt;
=== C 语言实现 ===&lt;br /&gt;
&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：C&lt;br /&gt;
* 功能：&lt;br /&gt;
** Google 官方发布的原始实现，效率极高（适合超大规模语料）。&lt;br /&gt;
** 仅支持基本的 Skip-gram 和 CBOW，无负采样或层次 Softmax 优化。&lt;br /&gt;
** 输出格式为二进制（&amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;）或文本（&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;）词向量。&lt;br /&gt;
&lt;br /&gt;
使用方法：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 从源码编译（需要gcc）&lt;br /&gt;
git clone https://github.com/tmikolov/word2vec&lt;br /&gt;
cd word2vec&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
# 训练命令详解&lt;br /&gt;
./word2vec -train corpus.txt \    # 输入文件（每行一个句子）&lt;br /&gt;
           -output vectors.bin \  # 输出词向量&lt;br /&gt;
           -size 300 \            # 向量维度&lt;br /&gt;
           -window 5 \            # 窗口大小&lt;br /&gt;
           -sample 1e-5 \         # 高频词降采样阈值&lt;br /&gt;
           -negative 5 \          # 负采样数&lt;br /&gt;
           -hs 0 \                # 禁用层次Softmax&lt;br /&gt;
           -threads 16 \          # 线程数&lt;br /&gt;
           -binary 1 \            # 二进制输出&lt;br /&gt;
           -iter 10               # 训练轮次&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要最高训练效率（如 Wikipedia 或 Common Crawl 级别语料）。&lt;br /&gt;
* 对模型定制需求低，仅需基础词向量生成。&lt;br /&gt;
&lt;br /&gt;
=='''参考文献'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
此词条由[[苏一铭]]、[[杨锦浩]]编写。&lt;br /&gt;
&lt;br /&gt;
'''本词条内容源自wikipedia及公开资料，遵守 CC3.0协议。'''&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A2%AF%E5%BE%84&amp;diff=45464</id>
		<title>梯径</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A2%AF%E5%BE%84&amp;diff=45464"/>
		<updated>2025-07-07T10:40:32Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 概述 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:基本梯图.png|缩略图|一个基本的梯图，说明该字符串的梯径]]&lt;br /&gt;
&lt;br /&gt;
== 概述 ==&lt;br /&gt;
由刘宇（Yu Liu）、狄增如（Zengru Di）和菲利普·格利（Philip Gerlee）于2022年提出的梯径方法，基于算法信息论和Evolutionary Tinkering的思想，是一种新颖的框架，用于量化某对象（如字符串、空间模式、分子或语言片段）的复杂性和信息&amp;lt;ref&amp;gt;https://www.mdpi.com/1099-4300/24/8/1082&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
梯径包括一系列生成操作，用于逐步构建目标对象。每一步，可重复使用的较小的子结构单元会被组合或连接起来。经过梯径重构的步骤后，整个序列会形成一个偏序多重集或梯图，用于捕获层次依赖关系。&lt;br /&gt;
&lt;br /&gt;
传统的复杂性度量（如柯尔莫哥洛夫复杂度或香农熵）要么依赖于无限集合，要么在计算上难以处理。相比之下，梯径提供了一种构造性的、层级化的视角，强调对象如何通过利用重复和重用来合理地构建。&lt;br /&gt;
&lt;br /&gt;
梯径包括一系列生成操作，用于逐步构建目标对象。一个梯径本质上是一系列构建（或称“进化”）生成的序列，通过这些生成步骤将更小的组件（称为梯元，ladderon）组合成日益复杂的结构。这些阶梯子可以在构建步骤中重复使用，它们的重用关系可以通过一个偏序多重集（partially ordered multiset）或一个梯图（laddergraph）来捕捉。从这个表示中，衍生出两个互补的度量指标：&lt;br /&gt;
&lt;br /&gt;
- 梯径度（&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;）：表示通过最优重用组件来构造对象所需的最少步骤数。&lt;br /&gt;
&lt;br /&gt;
- 有序度（&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;）：量化了相较于一种无结构构建（即每个基本元素都单独添加）所节省的步骤数。其形式化定义为&amp;lt;math&amp;gt;\omega=S-\lambda&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; 是规模度（size-index），即不进行任何重用的从头构建成本。&lt;br /&gt;
&lt;br /&gt;
这两个指数提供了一个二维的复杂性度量谱系：&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;反映了内在的新颖性或信息成本，而&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;反映了结构的冗余性或有序度。重要的是，该方法是领域无关的（domain-agnostic）——它同样适用于字符串、空间配置、生物分子、语言结构，甚至进化系统。&lt;br /&gt;
&lt;br /&gt;
将梯径度和有序度看作“复杂性”的两个轴，结合以上其衍生的指标，可以用梯径框架衡量一个序列结构或组件结构的复杂度。&lt;br /&gt;
&lt;br /&gt;
除了理论上的简洁与优雅，梯径框架还具有广泛的实际意义和应用前景。它可以用于检测基因或蛋白质序列中的模块化重复、分析语言中的句法结构，以及模拟生物系统（从简单的化学网络到复杂的生物体）中的进化过程。它与“进化就像修修补补”（evolution-as-tinkering）范式的契合性&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;François Jacob, Evolution and Tinkering.''Science''196,1161-1166(1977).DOI:10.1126/science.860134&amp;lt;/ref&amp;gt;，使其成为探索自然和人工系统中复杂性涌现的强大工具。&lt;br /&gt;
&lt;br /&gt;
== 背景 ==&lt;br /&gt;
&lt;br /&gt;
=== 单个对象的句法复杂性度量 ===&lt;br /&gt;
梯径理论的发展源于一个长期存在的挑战：如何在不依赖统计集合或无限数据集的情况下，测量单个对象（如序列、分子或模式）的句法复杂性。&lt;br /&gt;
&lt;br /&gt;
柯尔莫哥洛夫复杂度（Kolmogorov complexity）和香农熵（Shannon entropy）等经典方法提供了宝贵的见解，但存在固有的局限性：柯尔莫哥洛夫复杂度因停机问题（halting problem）而通常不可计算；而香农熵则只反映平均不确定性聚焦于跨统计集合的平均值，而忽略了序列内部模式、语法结构，具体为：&lt;br /&gt;
&lt;br /&gt;
* 柯尔莫哥洛夫复杂度&lt;br /&gt;
&lt;br /&gt;
柯尔莫哥洛夫复杂度（Kolmogorov Complexity），又称算法复杂度，是指描述某一对象（如字符串、序列或数据结构）所需的最短计算机程序长度。形式上，对于给定的通用图灵机&amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;和输入对象&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;l(x)&amp;lt;/math&amp;gt;表示二元串的长度，当给定程序&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;时，令&amp;lt;math&amp;gt;U(p)&amp;lt;/math&amp;gt;表示计算机U关于程序p的输出，其柯尔莫哥洛夫复杂度定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;K_U(x)=\underset{p:U(p)=x}{min}l(p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
即柯尔莫哥洛夫复杂度定义为能够输出x的并且停止的所有程序的最小长度，也可以理解为可由计算机&amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;说明的&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的描述中的最短描述长度（信息论基础）&lt;br /&gt;
柯尔莫哥洛夫复杂度对于单个对象的句法复杂性度量的不足在于，由于停机问题的不可判定性，无法构造通用算法来精确算出任意对象的最短描述程序长度 &amp;lt;math&amp;gt;K(x)&amp;lt;/math&amp;gt;。我们至多只能给出上界估计（例如通过通用压缩算法获得的压缩后长度），但无法知道这是否就是最短程序，因此无法得到真正的复杂度值。&lt;br /&gt;
&lt;br /&gt;
* 香农熵&lt;br /&gt;
香农熵（Shannon Entropy）是信息论中用于度量来源不确定性的经典量度。对于离散随机变量&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; 及其概率分布&amp;lt;math&amp;gt;{p_i}&amp;lt;/math&amp;gt;，香农熵定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;H(X) = -\sum_{i=1}^n p_i \log_2 p_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
它反映了一个序列从该分布中抽样时平均每次可获得的信息量（以比特为单位）。&lt;br /&gt;
香农熵对于单个对象的句法复杂性度量的不足在于，香农熵度量的是从一个已知概率分布中抽样时的平均信息量，而非针对某一具体样本的独特结构。即使两条序列内部模式、语法结构截然不同，只要它们在整体分布下的符号频率相同，香农熵给出的值也完全相同，无法区分个体间的细节差异。&lt;br /&gt;
&lt;br /&gt;
鉴于这些挑战，一些强调模块化重用和层级化组合的观点提供了引人注目的替代方案。这些观点包括弗朗索瓦·雅各布（François Jacob）提出的“进化即修补”（evolution as tinkering, 1977）概念、高德纳（Donald Knuth）的加法链问题（addition-chain problem）&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;、描述Physical Complexity的定量方法&amp;lt;ref&amp;gt;https://journals.aps.org/pre/abstract/10.1103/PhysRevE.82.026117&amp;lt;/ref&amp;gt;，及更近期的组装理论（Assembly Theory, AT）&amp;lt;ref&amp;gt;https://www.science.org/doi/10.1126/sciadv.abj2465&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://www.science.org/doi/10.1126/sciadv.abj2465&amp;lt;/ref&amp;gt;（尽管AT饱受争议且其作者并不承认其跟算法信息论的关系&amp;lt;ref&amp;gt;https://www.nature.com/articles/s41540-024-00403-y&amp;lt;/ref&amp;gt;）。这些框架关注复杂结构如何从更简单的亚单元构建而成，强调重复利用。&lt;br /&gt;
&lt;br /&gt;
梯径方法通过提供一个层级化的路径模型——一个由可重用构建块组成的“梯元”（ladderon），扩展并形式化了这些先前的思想。通过这个模型，单个对象可以在最优效率的步骤中被构造出来。该方法能够同时量化生成的新颖性（需要多少新的构建步骤）和重用或结构的程度，而无需诉诸基于统计集合的方法。&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;组装理论&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+4&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8391a78e-e4d2-42b4-be74-2ed57aed4cfa&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:36,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:4,&amp;amp;quot;end&amp;amp;quot;:8},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 梯径方法的框架：算法信息论 ==&lt;br /&gt;
&lt;br /&gt;
=== 由算法信息论引导的复杂性度量——单个结构化对象的信息 ===&lt;br /&gt;
长期以来，对单个结构化对象（如字符串、分子或模式）复杂性的度量探索一直由算法信息论（Algorithmic Information Theory, AIT） 所引导。AIT 由 Kolmogorov、Chaitin 和 Solomonoff 在 20 世纪 60 年代创立，它通过能在通用图灵机（universal Turing machine）上生成该对象的最短可能程序的长度来定义复杂性，即柯尔莫哥洛夫复杂度（Kolmogorov complexity）。这种方法抓住了我们的直觉：高度有序或重复的结构是低复杂度的，而随机、无模式的对象具有最大的复杂度。&lt;br /&gt;
&lt;br /&gt;
然而，AIT 的核心度量是不可计算的：由于停机问题（halting problem），不存在确定确切最短程序的通用算法。对于物理对象（如分子），AIT 将需要指定一个能生成它们的通用分子构造器，这使得直接计算变得不可行。虽然存在像 Lempel-Ziv 压缩这样的近似方法，但这些方法通常反映的是统计冗余性而非真正的算法结构，并且可能无法区分随机性和结构化复杂性。&lt;br /&gt;
&lt;br /&gt;
===梯径方法和算法信息论的联系===&lt;br /&gt;
梯径方法旨在通过关注结构的层级化、基于重用的本质来解决这些局限性。通过可重用的子结构构造一个对象所需的最少步骤数来度量复杂性。&lt;br /&gt;
&lt;br /&gt;
梯径理论和 AIT紧密相关（两者都寻求对象的最短描述），然而在范围和可计算性上稍有不同。它不是进行通用压缩，而是模拟一个领域特定的构造机器，该机器执行一系列组合操作（连接、键合等），并在一个池子中跟踪可重用的子单元。这产生了构建过程的层级化多重集表示（梯图，laddergraph），从而得到两个可计算的度量：&lt;br /&gt;
&lt;br /&gt;
-梯径度（&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;, ladderpath-index）：重构目标序列结构最少的步骤数。&lt;br /&gt;
&lt;br /&gt;
-有序度（&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;, order-index）：通过重用节省的开销，即结构有序度。&lt;br /&gt;
&lt;br /&gt;
这些度量满足公式&amp;lt;math&amp;gt;S=\lambda+\omega&amp;lt;/math&amp;gt;，其中&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;是规模度（size-index）（即无重用构造的成本）。至关重要的是，这个框架对于有限对象是可计算的，为柯尔莫哥洛夫复杂度的不可行计算提供了一种实用的替代方案。&lt;br /&gt;
&lt;br /&gt;
综上所述 ，梯径方法在算法信息论的框架上，实现了以下的优化：&lt;br /&gt;
&lt;br /&gt;
* AIT 提供了一种基于最短通用描述的信息度量原则，但通常是不可计算的。&lt;br /&gt;
&lt;br /&gt;
* 梯径方法提出了一种可计算的、考虑层级结构的复杂性度量，其基础是构造规则和重用，使其适用于物理、生物等系统。&lt;br /&gt;
&lt;br /&gt;
* AIT和梯径在深层理论上有联系——都寻求最短描述。但在实用性、侧重点以及重构路径的显式描述上存在差异。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
=== 定义“生成操作” ===&lt;br /&gt;
&lt;br /&gt;
假设我们有一个包含英文字符 A, B, C, D, E, F 的集合，现在需要获得一个特定的英文字符串&lt;br /&gt;
[math]\mathcal{X}=ABCDBCDBCDCDEFEF[/math]&lt;br /&gt;
问如何以最快的方式得到[math]\mathcal{X}[/math]?&lt;br /&gt;
&lt;br /&gt;
首先我们定义一个基础集[math]S_0 = \{A(0), B(0), C(0), D(0), E(0), F(0)\}[/math]&lt;br /&gt;
“生成操作”(Generation-operation) 是指，取此类偏序多重集中的若干组件，其重数相应地减少，再以某种方式结合在一起，最后将结合而成的新组件放回到该集中，放在其构成组件最高层次的下一层。经过这个操作，就产生了一个新的偏序多重集。&lt;br /&gt;
以第一次生成操作举例，[math]\displaystyle{&lt;br /&gt;
S_0 : C + D = CD \rightarrow S_1 = \{ A(0), B(0), C(-1), D(-1), E(0), F(0) \ / \ CD(1) \}&lt;br /&gt;
}[/math]&lt;br /&gt;
&lt;br /&gt;
=== 定义“梯径” ===&lt;br /&gt;
&lt;br /&gt;
对于一条使我们达到最终目的的路径[math]\displaystyle{S_0 \rightarrow S_1 \rightarrow S_2 \rightarrow \dots \rightarrow S_n \Rightarrow \mathcal{X}}[/math],我们以如下的方法来构造偏序多重集 [math]\displaystyle{\mathcal{J}}[/math]：&lt;br /&gt;
&lt;br /&gt;
1. 取最终的集合 [math]\displaystyle{\mathcal{S}_{\mathcal{n}}}[/math]；&lt;br /&gt;
&lt;br /&gt;
2. 删掉所有重数为零的元素；&lt;br /&gt;
&lt;br /&gt;
3. 将所有的负重数取绝对值作为对应组件的重数；&lt;br /&gt;
&lt;br /&gt;
4. 保留所有的偏序不变。&lt;br /&gt;
&lt;br /&gt;
该过程构造出的这个偏序多重集[math]\displaystyle{\mathcal{J}}[/math]，称为这条路径的“梯径”（Ladderpath）。&lt;br /&gt;
&lt;br /&gt;
任一梯径都能被完备地表示为一个偏序多重集。但有时候将梯径用图的形式表示可能更为直观，称为“梯图”，其中的层次即为梯径的偏序关系，组件之间的连接表示生成操作（比如 E 和 F 向上连接到 EF，表示 EF 由 E 和 F 生成）。&lt;br /&gt;
&lt;br /&gt;
[[文件:基本梯图.png|缩略图|一个基本的梯图，说明该字符串的梯径]]&lt;br /&gt;
&lt;br /&gt;
从梯径表示中，衍生出三个关键度量指标用于描述一个系统：&lt;br /&gt;
&lt;br /&gt;
1. 梯径度（[math]\displaystyle{\lambda}[/math], Ladderpath-index）：&lt;br /&gt;
  - 此指数衡量在考虑阶梯元重用的前提下，构造对象所需的最少的步骤数，即最短梯径的长度。&lt;br /&gt;
2. 规模度（[math]\displaystyle{S}[/math],Size-index）:&lt;br /&gt;
  - 一个组件的最短的平凡梯径的长度。&lt;br /&gt;
3. 有序度指数（[math]\displaystyle{\omega}[/math], Order-index）：&lt;br /&gt;
  - 定义为规模度（S, size-index） 与梯径度（λ）之间的差值，即 ω = S − λ。&lt;br /&gt;
  - 等价于通过最短梯径来生成该目标组件所节约的“长度”，即所节约出来的结合组件的操作所花费的步骤。&lt;br /&gt;
&lt;br /&gt;
== 最短梯径的算法 ==&lt;br /&gt;
&lt;br /&gt;
1. 首先创建一个空的多重集 H 用以存放组件。在最后我们可以通过 H 计算出梯径。&lt;br /&gt;
 &lt;br /&gt;
2. 从目标系统 Q 出发，每个不同的组件都只保留一个在 Q 中，其余的重复组件全部放入 H 中。 &lt;br /&gt;
&lt;br /&gt;
3. 以某种预先规定的特定方式，持续切割Q 中的组件，直到 Q 中有至少 2 个子字符串或字符相同。然后在 Q 中只保留一个该字符串，其余重复的字符串全部放入 H 中。&lt;br /&gt;
&lt;br /&gt;
4. 重复步骤 3，直到 Q 中不再能找到重复的字符串或字符。最后把剩下的全部切割成基础组件， 然后全部放入 H中。此时的 H 即记录了一条梯径。 &lt;br /&gt;
&lt;br /&gt;
5. 最后，需要将 H 中各字符串的层次关系（即，根据它们是如何被分割的：谁是父字符串，谁是子字符串）排列清楚，即最终得到该梯径的偏序多重集表示。&lt;br /&gt;
&lt;br /&gt;
该算法可通过 GitHub 仓库获取：[https://github.com/yuernestliu/lppack https://github.com/yuernestliu/ladderpath_v0]&lt;br /&gt;
&lt;br /&gt;
== 应用 ==&lt;br /&gt;
&lt;br /&gt;
=== 用梯径进行分词 ===&lt;br /&gt;
&lt;br /&gt;
为实现对自然语言中结构性冗余的高效压缩，我们提出了一种基于梯径结构的子词词表构建方法。该方法以预构建的梯元结构为基础，通过梯元的重要性排序与代价控制，选取若干高复用性、高贡献度的子结构单元，组成最终用于表征原文的词表。&lt;br /&gt;
&lt;br /&gt;
应用领域：&lt;br /&gt;
&lt;br /&gt;
- 自然语言处理（NLP）：在 NLP 中，梯径分词器可用于将文本分割成有意义的子结构，从而促进句法分析和语义分析等任务。&lt;br /&gt;
&lt;br /&gt;
- 生物信息学（Bioinformatics）：在生物信息学中，此方法可用于分析 DNA 或蛋白质序列，识别指示功能元件的重复基序（motifs）和结构模式。&lt;br /&gt;
&lt;br /&gt;
- 计算生物学（Computational Biology）：梯径分词器有助于理解生物系统的模块化构建方式，从而为其复杂性和进化提供见解。&lt;br /&gt;
&lt;br /&gt;
=== 将梯径用于分析生物序列信息 ===&lt;br /&gt;
&lt;br /&gt;
生物序列信息作为一种由有限基本单元组成、包含大量重复嵌套结构的信息结构，十分适合进行梯径分析。&lt;br /&gt;
&lt;br /&gt;
梯径理论通过模拟“生成—重用”的过程，将生物序列（如DNA、蛋白质序列）分解为可重用的子单元（梯元），并构建出反映层次化结构的阶梯图。相比传统的多序列比对和熵分析，阶梯路径更关注“对象如何被生成”，从而捕捉到统计方法难以描述的层次化关系。&lt;br /&gt;
&lt;br /&gt;
对于生物序列做梯径分析，其核心优势在于：首先，序列的基本单元（如核苷酸或氨基酸）数量有限，却能通过不同的重复与组合产生丰富多样的功能片段；其次，这些重复片段往往以嵌套、串联或分支的形式出现，例如基因组中的复制子或蛋白质中的结构域家族，使得序列天然具备多层次的模块化特征；再次，进化过程中频繁的重复插入、删除或重排事件，正是阶梯路径分解算法所要捕捉的“生成—重用”轨迹。通过对这些嵌套重复结构进行阶梯路径分解，可以定量地揭示序列在进化历史上经历的关键生成步骤，以及不同层次上子单元的重用频度与模式。这不仅有助于比较不同物种或同源蛋白在层次化结构上的差异，也能为功能预测、蛋白工程和进化重建等应用提供新的思路和指标。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[87,88,89],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;生物序列信息作为一种由有限基本单元组成、包含大量重复嵌套结构的信息结构，十分适合进行梯径分析。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1b&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+3b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;梯径理论通过模拟“生成—重用”的过程，将生物序列（如DNA、蛋白质序列）分解为可重用的子单元（梯元），并构建出反映层次化结构的阶梯图。相比传统的多序列比对和熵分析，阶梯路径更关注“对象如何被生成”，从而捕捉到统计方法难以描述的层次化关系。&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;对于生物序列做梯径分析，其核心优势在于：首先，序列的基本单元（如核苷酸或氨基酸）数量有限，却能通过不同的重复与组合产生丰富多样的功能片段；其次，这些重复片段往往以嵌套、串联或分支的形式出现，例如基因组中的复制子或蛋白质中的结构域家族，使得序列天然具备多层次的模块化特征；再次，进化过程中频繁的重复插入、删除或重排事件，正是阶梯路径分解算法所要捕捉的“生成—重用”轨迹。通过对这些嵌套重复结构进行阶梯路径分解，可以定量地揭示序列在进化历史上经历的关键生成步骤，以及不同层次上子单元的重用频度与模式。这不仅有助于比较不同物种或同源蛋白在层次化结构上的差异，也能为功能预测、蛋白工程和进化重建等应用提供新的思路和指标。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8i&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;CmtqdHQ1aoyntGxqwDnc1gdBnFc&amp;amp;quot;,&amp;amp;quot;XLs7dQF2ioMVPHx6tJ1cMJu4nGd&amp;amp;quot;,&amp;amp;quot;Q3Nhd9zp4omGbMxPUaGcSqdNnYc&amp;amp;quot;,&amp;amp;quot;MhIpdzNDmoBhh9xAUVccu6tbnTe&amp;amp;quot;,&amp;amp;quot;Xo2Nd16M4ofPX9xM9yfchstxnng&amp;amp;quot;,&amp;amp;quot;COZRd3Ke9omh98x1vZ4c3kntnGe&amp;amp;quot;,&amp;amp;quot;VyDddEiJ1opuNzxq8JAcF6hxngg&amp;amp;quot;,&amp;amp;quot;ACwWd6KMzosjb7x2D2acFcN3n97&amp;amp;quot;,&amp;amp;quot;FSnWdUPTko9Iy8xUsXmc4fv9nKc&amp;amp;quot;,&amp;amp;quot;L13gdJXhQo2Bt1xb50tckugBnvd&amp;amp;quot;,&amp;amp;quot;Tkt7duk3mo499exukLHc1tivnIc&amp;amp;quot;,&amp;amp;quot;DGapd3qwJodIm1x4cytcXLDdnDg&amp;amp;quot;,&amp;amp;quot;JxH2drg1po9X7Fx3OUncaCOBnbe&amp;amp;quot;,&amp;amp;quot;SUjnd0vKtoxww5xdW7Yc15yRnLc&amp;amp;quot;,&amp;amp;quot;N3L1dlKk9ogLRsx8iGJcvbDVn7c&amp;amp;quot;,&amp;amp;quot;E42Pdhtjso7hJcxVGFIcv8XfnCh&amp;amp;quot;,&amp;amp;quot;Dc38d8Ck4ofRF0xWVZ0cCHTvn6o&amp;amp;quot;,&amp;amp;quot;LYrmdlr8fo1iD9xM7dgcZftunIo&amp;amp;quot;,&amp;amp;quot;Qn71d48CEompCexFtlWcjP1TnRg&amp;amp;quot;,&amp;amp;quot;Jbw7dlDlboevPZxuSLXcUi5wnjf&amp;amp;quot;,&amp;amp;quot;DB5PdQQDwoizaWxCZUicQQwungd&amp;amp;quot;,&amp;amp;quot;VA1ddG6COocaRTxtkAjc1yaXnLg&amp;amp;quot;,&amp;amp;quot;N72Kd9Ue6oUjXixLhKKcF3xPnQh&amp;amp;quot;,&amp;amp;quot;IEIOdjWcvopD9bxhhzbcEg2vnjf&amp;amp;quot;,&amp;amp;quot;UknBdAdHCoSSuLxkxrjcSFm8nz1&amp;amp;quot;,&amp;amp;quot;YJerdf1iCoHZ5zxcSevc0SLKnnf&amp;amp;quot;,&amp;amp;quot;KQBqd1qBzoqFNIxQGIYcmvUBnDh&amp;amp;quot;,&amp;amp;quot;U1HQdcv80oCPewxWZCScDwpTnTh&amp;amp;quot;,&amp;amp;quot;E0eGdqeYvoL3DXxazE7capYnnKb&amp;amp;quot;,&amp;amp;quot;ABSNdLJnIolmJdxupTychmxnnGg&amp;amp;quot;,&amp;amp;quot;HZa8dXqWworhbsx0cLPcNnIcned&amp;amp;quot;,&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;,&amp;amp;quot;SzWEdEoujoP7eUx1tYXcRtVgnSX&amp;amp;quot;,&amp;amp;quot;JbPldH3FXoSlLcxVCYVckmiAnSe&amp;amp;quot;,&amp;amp;quot;UoLkdCSAYoFRwJxqXlbcHRncnle&amp;amp;quot;,&amp;amp;quot;MAEAddDCmoIcG7xt3pqcYmu0nKg&amp;amp;quot;,&amp;amp;quot;Q1OQddvpDoFoMwxvgXHcoEelnYg&amp;amp;quot;,&amp;amp;quot;Nov6da2n5owQsTx3mwrcv9U8n6b&amp;amp;quot;,&amp;amp;quot;TdgYdeDDhoh9oCx3d8qcFfvBnAd&amp;amp;quot;,&amp;amp;quot;FMHOdhIjIoB1jixVUR9c4xNpnna&amp;amp;quot;,&amp;amp;quot;B5fkdtMCmo3iVExjBKJcNKtsnNf&amp;amp;quot;,&amp;amp;quot;Fdq5dX1BfoOcVTxvhijc9Eqbn5e&amp;amp;quot;,&amp;amp;quot;WOqDdfdhEoF26sxTbnHcSwtCnLe&amp;amp;quot;,&amp;amp;quot;V1C1dQGSCoLL6ex7Uo3c48QsnVg&amp;amp;quot;,&amp;amp;quot;YvJZdqXqookv1UxvnlucOSESnSh&amp;amp;quot;,&amp;amp;quot;RAWpdMBwnoDarlxq8EZcCSiKnjd&amp;amp;quot;,&amp;amp;quot;VtXZd2cpyoJv8MxtkVDcWk90njd&amp;amp;quot;,&amp;amp;quot;RJQKd81KeoUO4Gx1vhUcmtuynFb&amp;amp;quot;,&amp;amp;quot;KFxBdb1ZtozZUzxZmEccexHkn0e&amp;amp;quot;,&amp;amp;quot;EJGOdWqKpoZuvvxg7YZc037BnRg&amp;amp;quot;,&amp;amp;quot;RD4zdIP3JoocXmxFQxUcMZHdnqL&amp;amp;quot;,&amp;amp;quot;ZybOdmRMboK4FLxf93wc4tUpnge&amp;amp;quot;,&amp;amp;quot;PLmPdsZthoIaohx7xEdcGqhQnef&amp;amp;quot;,&amp;amp;quot;HJJod0kcjoDDshxMBdFcQveCnCb&amp;amp;quot;,&amp;amp;quot;HwoCdgL1FoJl3ZxRirEcAJOjntg&amp;amp;quot;,&amp;amp;quot;IcbHdyFCIoTx03xMJqhcE8XBn8d&amp;amp;quot;,&amp;amp;quot;KLvUdAhDuoDvDaxZVyNc868inI9&amp;amp;quot;,&amp;amp;quot;ASOUdPfg9oRAEBx1Gu0cv1Kinzg&amp;amp;quot;,&amp;amp;quot;FpIadfqSMoIXEExJSXBc5NuVnTb&amp;amp;quot;,&amp;amp;quot;AuT0d47WqoyRj9xLppuc9tkGn9g&amp;amp;quot;,&amp;amp;quot;E05PdBLIBoZ9dRxL8gRcebEWnUd&amp;amp;quot;,&amp;amp;quot;Yq7HdP8Y7oNtkMxn6V9cAwMgnkf&amp;amp;quot;,&amp;amp;quot;AuhPdNyZFodJ7xxeBcpcVKsgnmg&amp;amp;quot;,&amp;amp;quot;Sd88d3A1YowjPkxiGOdce5tDnAb&amp;amp;quot;,&amp;amp;quot;TheadfGhHow1vsx3iLJcBv9PnLf&amp;amp;quot;,&amp;amp;quot;XpzgdVvFVotw71xgT8hcsSfLnBh&amp;amp;quot;,&amp;amp;quot;WADadXodxo3vv5x0SGJc5cpfnOf&amp;amp;quot;,&amp;amp;quot;Sa3SdrwOVoU5Bex6PKXcTcL5nS6&amp;amp;quot;,&amp;amp;quot;WnNIdhSvco6K0Fxy1D6cQAnSnTg&amp;amp;quot;,&amp;amp;quot;UBmhdwnp8oc2y9xqN94coriunSe&amp;amp;quot;,&amp;amp;quot;TfsrdJPsWowxvox3kLsclOxUnwh&amp;amp;quot;,&amp;amp;quot;Xg1JdTl9po33KCx2RrHce38vnPv&amp;amp;quot;,&amp;amp;quot;KDGydE63xoTFVuxvn2LcN1SVnsh&amp;amp;quot;,&amp;amp;quot;VCjbdOlfToS8Xzx7AJhcfcp8nXe&amp;amp;quot;,&amp;amp;quot;POtBdNguvor087xalsQcZtkBnpe&amp;amp;quot;,&amp;amp;quot;Q0X8dD8N5orpxkxDKBVc3nVCnLc&amp;amp;quot;,&amp;amp;quot;TtQhdtitFoK4dbxKEAccfxirn8g&amp;amp;quot;,&amp;amp;quot;URudd3ms9opzvOxhCECcjY6ynPg&amp;amp;quot;,&amp;amp;quot;IXRnd8XwDodmNbx1vgUcPjitnxd&amp;amp;quot;,&amp;amp;quot;WNeYdxTTvoaB5YxVap4csfV5no1&amp;amp;quot;,&amp;amp;quot;IiCnd4uDloEIipx3nNxcHZ8Qnee&amp;amp;quot;,&amp;amp;quot;NT34dx3YboyPJ2x79BOcNMDGn6b&amp;amp;quot;,&amp;amp;quot;OH2ldDrSDokzXMx1pRgcXUw4nMf&amp;amp;quot;,&amp;amp;quot;ZJHBdqmnzo0i8exby7Pc6HGonNe&amp;amp;quot;,&amp;amp;quot;VpHodZ1QKobbEHxdMSLcvwqGnzg&amp;amp;quot;,&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;Nv9BdtB23oWdHfxlRJ8cv8MrnWh&amp;amp;quot;,&amp;amp;quot;ANGdd2mVToEG69xr6BScyum0nng&amp;amp;quot;,&amp;amp;quot;MNb3dl5TKo2K4FxqX5GcxSEpnMd&amp;amp;quot;,&amp;amp;quot;ZslzdCSWjoITfzxPBMtc9y1znCg&amp;amp;quot;,&amp;amp;quot;QTtMdcrwBoFiOgxl6c0c4011nHe&amp;amp;quot;,&amp;amp;quot;Klc1d4JRkoiIJZxjZgSceTgonPd&amp;amp;quot;,&amp;amp;quot;Y3ohdSpseoX1fbxv66xcEXbvnhe&amp;amp;quot;,&amp;amp;quot;HHv1dPsoJo1vwYxlFrcc4fognxh&amp;amp;quot;,&amp;amp;quot;Rv3HdNR67ofO4RxidGjcueKOn5e&amp;amp;quot;,&amp;amp;quot;LS5rdOpXAotMfoxt1ZYcPWNvnFf&amp;amp;quot;,&amp;amp;quot;W5EwdRDg2oarvLx8RZ9c4tqfnOf&amp;amp;quot;,&amp;amp;quot;FqLRdqhIxo15UzxeEwacsT95nhb&amp;amp;quot;,&amp;amp;quot;IBabd8N4Xob4hSxEyCvc9edinIe&amp;amp;quot;,&amp;amp;quot;P0hOd4M5woRoqzxQZQYcb9QWnPe&amp;amp;quot;,&amp;amp;quot;CndEdwgnUoUyDJxkF9ecTnKPnPh&amp;amp;quot;,&amp;amp;quot;HkDhdcy79oQqg9xWkCIcKuQ5n4d&amp;amp;quot;,&amp;amp;quot;Xvw2d2HcMo68VDxRLuIcoXinnBd&amp;amp;quot;,&amp;amp;quot;Huc7dWX6Eo0NuIxIW2ccuQL3n3g&amp;amp;quot;,&amp;amp;quot;OjJKdMADGo5KJ7xnwZOckobbnhw&amp;amp;quot;,&amp;amp;quot;YnNMdlBdPoF5V6xiNcJcN7Ebndb&amp;amp;quot;,&amp;amp;quot;GztpdYkiuozkK6xGgMWcWgR6npf&amp;amp;quot;,&amp;amp;quot;Orl6dYmbMomyUExFV4IcnMDOnCg&amp;amp;quot;,&amp;amp;quot;OgkidjHw3o2xVMxPMxzcVEainee&amp;amp;quot;,&amp;amp;quot;GKzOdI4fhosoXAxztFuctmCini1&amp;amp;quot;,&amp;amp;quot;R34adE1Eao1dBOxAOaVcLVGOnMg&amp;amp;quot;,&amp;amp;quot;T3G9dSGK2ooH69xeY4qcLhP6nNb&amp;amp;quot;,&amp;amp;quot;MI8MdSFXioZvYcxOYcuccFG3n7b&amp;amp;quot;,&amp;amp;quot;WldDd0mT9oGzm6xWLq8cS4gun7b&amp;amp;quot;,&amp;amp;quot;F93udM41NolNHSxsIkvc41fBnbc&amp;amp;quot;,&amp;amp;quot;NyAAdi8WHotLInxHZy5cLilbnlh&amp;amp;quot;,&amp;amp;quot;BbJkd7z22oWiCEx8IMacxcK2nvh&amp;amp;quot;,&amp;amp;quot;NGSgdXZuGozqGEx1gQ7cgIBzn1b&amp;amp;quot;,&amp;amp;quot;NqjzdfD2voi5pixT42pcio8knue&amp;amp;quot;,&amp;amp;quot;FPVOdZrqOoOluCxxbNQcmh33nhe&amp;amp;quot;,&amp;amp;quot;BgfvdLWQioGv87xzhJscBOfUndd&amp;amp;quot;,&amp;amp;quot;GWTKdSm7Do5UtqxvrrJcx1RJn6e&amp;amp;quot;,&amp;amp;quot;G0Q8dnjIKo4bAbxYw3DcIFFpneq&amp;amp;quot;,&amp;amp;quot;SCmddufcRoXc0xx3IbycbInMnGg&amp;amp;quot;,&amp;amp;quot;USdkduyyAoRwFXxJrQZcPsA6n2V&amp;amp;quot;,&amp;amp;quot;SXZtdGn32oEdJsxfOSkc48knnhd&amp;amp;quot;,&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;IPAvdZU6Bo0F7mxyVWfcz9rSnke&amp;amp;quot;],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;6.14梯径词条&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;cover&amp;amp;quot;:{&amp;amp;quot;token&amp;amp;quot;:&amp;amp;quot;TvOqbfSIno8x8VxoeCUcb8W3nXe&amp;amp;quot;,&amp;amp;quot;dlp_status&amp;amp;quot;:0,&amp;amp;quot;url&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;offset_ratio_y&amp;amp;quot;:0,&amp;amp;quot;offset_ratio_x&amp;amp;quot;:0,&amp;amp;quot;type&amp;amp;quot;:1,&amp;amp;quot;mime_type&amp;amp;quot;:&amp;amp;quot;image/jpeg&amp;amp;quot;},&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;7077027910124568580&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null}}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;5930398c-bc09-4421-8de6-30f6a61f935b&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:87,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:47},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:88,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:119},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:89,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:306},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;43e3e141-7009-4ab0-9cd2-8d941d1e2c65&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;相关的研究为：Evolutionary Tinkering Enriches the Hierarchical and Interlaced Structures in Amino Acid Sequences&amp;lt;ref&amp;gt;Zhang, Zecheng &amp;amp; Liu, Chunxiuzi &amp;amp; Zhu, Yingjun &amp;amp; Peng, Lu &amp;amp; Qiu, Weiyi &amp;amp; Tang, Qianyuan &amp;amp; Liu, He &amp;amp; Zhang, Ke &amp;amp; Di, Zengru &amp;amp; Liu, Yu. (2023). Evolutionary Tinkering Enriches the Hierarchical and Interlaced Structures in Amino Acid Sequences. 10.21203/rs.3.rs-3440555/v1. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 用梯径做压缩 ===&lt;br /&gt;
&lt;br /&gt;
以字符串&amp;quot;ABCDBCDBCDCDEFEF&amp;quot;为例，经梯径方法处理后，我们获得了如图深灰色所示的三个梯元{'BCD','CD','EF'}。原始字符串本质上是由基础构件与这些梯元组合而成。&lt;br /&gt;
&lt;br /&gt;
下面给出在技术层面，如何使用梯径方法进行压缩，将原始的字符串压缩为一个序列。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ladderpath as lp&lt;br /&gt;
import ladderpath_tools.compress as lp_c&lt;br /&gt;
&lt;br /&gt;
X = ['ABCDBCDBCDCDEFEF']&lt;br /&gt;
lpjson = lp.get_ladderpath(X)&lt;br /&gt;
&lt;br /&gt;
compressed_list = lp_c.compress(lpjson, SEP='@')&lt;br /&gt;
&lt;br /&gt;
# 输出结果：&lt;br /&gt;
# compressed_list = [1, '@', 'A', 2, 2, 2, 1, 0, 0, '@', 'EF', &lt;br /&gt;
#                   '@', 'CD', '@', 'B', 1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
现对compressed_list进行说明：分隔符&amp;quot;@&amp;quot;用于区分不同序列和梯元；第一个元素&amp;quot;1&amp;quot;表示目标序列仅包含一个字符串，后续元素&amp;quot;A&amp;quot;, 2, 2, 2, 1, 0, 0描述原始字符串的重构过程：基础构件&amp;quot;A&amp;quot;首先与元素2组合再与元素2组合两次依次与元素1、元素0（两次）组合；三个&amp;quot;@&amp;quot;分隔符划分三个梯元：&amp;quot;EF&amp;quot;表示梯元0，由基础构件E和F组合生成；&amp;quot;CD&amp;quot;表示梯元1，由C和D组合生成；同理，&amp;quot;B&amp;quot;, 1组成梯元2。&lt;br /&gt;
需注意，compressed_list中的梯元ID可能因实现细节与梯径算法给出的梯元ID存在差异。&lt;br /&gt;
&lt;br /&gt;
=== 用梯径分析神经网络 ===&lt;br /&gt;
梯径方法最近被应用于人工神经网络（ANNs），特别是多层感知机（MLPs）的结构分析中，作为一种理解网络架构与性能之间关系的新颖方法。&lt;br /&gt;
这种方法允许通过梯径度和有序度这两个指标来量化结构的有序性和复杂性，它们的归一化比值被称为有序率 (order-rate, &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;)。&lt;br /&gt;
有序率&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;的定义方式为：&lt;br /&gt;
&lt;br /&gt;
1. 首先考虑有序度&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\omega(x)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\omega(x)=S-l(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;表示规模度，即序列&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的长度，&amp;lt;math&amp;gt;l(x)&amp;lt;/math&amp;gt;为序列&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的梯径度。&lt;br /&gt;
&lt;br /&gt;
2. 确定长度&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;、有序度&amp;lt;math&amp;gt;\omega(x)&amp;lt;/math&amp;gt;的边界值&lt;br /&gt;
&lt;br /&gt;
最大有序指数 &amp;lt;math&amp;gt;\omega_{max}⁡(S)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
当序列完全有序时取得（例如全重复序列 AAAA...）。此时梯径度为 1（只需构建一个符号），故：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\omega_{max}⁡(S)=S-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- 基准有序指数 &amp;lt;math&amp;gt;\omega_0(S)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
指在给定字母表（如 {A,B,C,D}）上，纯随机长度为 S的序列的有序度的期望值。实践中通过以下方式确定：&lt;br /&gt;
&lt;br /&gt;
(a) 理论推导 或 (b) 对大量随机序列计算 &amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;后取平均值。&lt;br /&gt;
&lt;br /&gt;
3.归一化计算有序率&lt;br /&gt;
&lt;br /&gt;
有序率的计算公式为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\eta(x)=\frac{\omega(x)-\omega_0(S)}{\omega_{max}(S)-\omega_0(S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
根据设计原则：&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈0时，序列无显著层次结构（完全随机）&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈0.5时，序列呈现最丰富的嵌套模块化结构&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈1时，序列呈现极致层次化（完全重复）&lt;br /&gt;
&lt;br /&gt;
在神经网络的背景下，&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 作为一个标量度量，反映了网络层次结构的丰富程度。&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 值接近 0 表示随机性或缺乏结构，而 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 接近 1 则意味着过度规则化。具有中等 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 值（约 0.5 左右）的网络展现出最复杂且深度嵌套的模块化层次结构。实证研究表明，此类网络在各种任务上的表现往往优于其他网络，这表明层次结构的丰富程度与功能能力之间存在直接关联。&lt;br /&gt;
&lt;br /&gt;
为了将梯径应用于神经网络，研究人员首先将网络转换为一组能够捕捉信息在网络路径中流动的序列。这涉及对实值连接权重进行粗粒化处理，并将这些连接编码为符号序列。随后，将梯径算法应用于这些序列以计算 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;。通过涉及超过 600 种 MLP 架构、在诸如奇偶校验分类、回归和时间序列预测等任务上进行训练的广泛实验发现，当 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 处于中等范围内时，网络性能达到峰值，这证实了结构的复杂性有助于学习和泛化。&lt;br /&gt;
&lt;br /&gt;
这些发现表明，梯径理论复杂性度量指标之一的&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 既可以作为一种初始化或设计人工神经网络架构的指导。&lt;br /&gt;
&lt;br /&gt;
相关研究为：Correlating measures of hierarchical structures in artificial neural networks with their performance. ''npj Complex'' 1, 15 (2024)&amp;lt;ref&amp;gt;Xu, Z., Zhu, Y., Hong, B. ''et al.'' Correlating measures of hierarchical structures in artificial neural networks with their performance. ''npj Complex'' 1, 15 (2024). &amp;lt;nowiki&amp;gt;https://doi.org/10.1038/s44260-024-00015-x&amp;lt;/nowiki&amp;gt;&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
==进一步阅读==&lt;br /&gt;
1. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/Onzq5t2Rptly4z270DviZw&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
神经网络结构复杂度与其功能表现 | 梯径 &amp;amp; 算法信息论 张章&amp;amp;刘宇 ecsLab 2024年10月06日&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/KuO_d4iqff2nVUVatJolWg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
外星生命或智能摆在面前，你能认出来吗？——“梯径”提供的思路 刘宇 集智俱乐部 ''2023年02月11日'' &lt;br /&gt;
&lt;br /&gt;
3. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/sdFmltwgbSic0vUbsyN7TA&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
思考生命复杂性的新视角：从组装理论到梯径理论&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[130,131],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;ordered&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;https://mp.weixin.qq.com/s/sdFmltwgbSic0vUbsyN7TA&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0*1+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;],&amp;amp;quot;1&amp;amp;quot;:[&amp;amp;quot;link-id&amp;amp;quot;,&amp;amp;quot;5bcff84b-c83c-46ab-90a9-3d04d01b7e43&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:2}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;seq&amp;amp;quot;:&amp;amp;quot;3&amp;amp;quot;}},&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;思考生命复杂性的新视角：从组装理论到梯径理论&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;CmtqdHQ1aoyntGxqwDnc1gdBnFc&amp;amp;quot;,&amp;amp;quot;XLs7dQF2ioMVPHx6tJ1cMJu4nGd&amp;amp;quot;,&amp;amp;quot;Q3Nhd9zp4omGbMxPUaGcSqdNnYc&amp;amp;quot;,&amp;amp;quot;MhIpdzNDmoBhh9xAUVccu6tbnTe&amp;amp;quot;,&amp;amp;quot;Xo2Nd16M4ofPX9xM9yfchstxnng&amp;amp;quot;,&amp;amp;quot;COZRd3Ke9omh98x1vZ4c3kntnGe&amp;amp;quot;,&amp;amp;quot;VyDddEiJ1opuNzxq8JAcF6hxngg&amp;amp;quot;,&amp;amp;quot;ACwWd6KMzosjb7x2D2acFcN3n97&amp;amp;quot;,&amp;amp;quot;FSnWdUPTko9Iy8xUsXmc4fv9nKc&amp;amp;quot;,&amp;amp;quot;L13gdJXhQo2Bt1xb50tckugBnvd&amp;amp;quot;,&amp;amp;quot;Tkt7duk3mo499exukLHc1tivnIc&amp;amp;quot;,&amp;amp;quot;DGapd3qwJodIm1x4cytcXLDdnDg&amp;amp;quot;,&amp;amp;quot;JxH2drg1po9X7Fx3OUncaCOBnbe&amp;amp;quot;,&amp;amp;quot;SUjnd0vKtoxww5xdW7Yc15yRnLc&amp;amp;quot;,&amp;amp;quot;N3L1dlKk9ogLRsx8iGJcvbDVn7c&amp;amp;quot;,&amp;amp;quot;E42Pdhtjso7hJcxVGFIcv8XfnCh&amp;amp;quot;,&amp;amp;quot;Dc38d8Ck4ofRF0xWVZ0cCHTvn6o&amp;amp;quot;,&amp;amp;quot;LYrmdlr8fo1iD9xM7dgcZftunIo&amp;amp;quot;,&amp;amp;quot;Qn71d48CEompCexFtlWcjP1TnRg&amp;amp;quot;,&amp;amp;quot;Jbw7dlDlboevPZxuSLXcUi5wnjf&amp;amp;quot;,&amp;amp;quot;DB5PdQQDwoizaWxCZUicQQwungd&amp;amp;quot;,&amp;amp;quot;VA1ddG6COocaRTxtkAjc1yaXnLg&amp;amp;quot;,&amp;amp;quot;N72Kd9Ue6oUjXixLhKKcF3xPnQh&amp;amp;quot;,&amp;amp;quot;IEIOdjWcvopD9bxhhzbcEg2vnjf&amp;amp;quot;,&amp;amp;quot;UknBdAdHCoSSuLxkxrjcSFm8nz1&amp;amp;quot;,&amp;amp;quot;YJerdf1iCoHZ5zxcSevc0SLKnnf&amp;amp;quot;,&amp;amp;quot;KQBqd1qBzoqFNIxQGIYcmvUBnDh&amp;amp;quot;,&amp;amp;quot;U1HQdcv80oCPewxWZCScDwpTnTh&amp;amp;quot;,&amp;amp;quot;E0eGdqeYvoL3DXxazE7capYnnKb&amp;amp;quot;,&amp;amp;quot;ABSNdLJnIolmJdxupTychmxnnGg&amp;amp;quot;,&amp;amp;quot;HZa8dXqWworhbsx0cLPcNnIcned&amp;amp;quot;,&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;,&amp;amp;quot;SzWEdEoujoP7eUx1tYXcRtVgnSX&amp;amp;quot;,&amp;amp;quot;JbPldH3FXoSlLcxVCYVckmiAnSe&amp;amp;quot;,&amp;amp;quot;UoLkdCSAYoFRwJxqXlbcHRncnle&amp;amp;quot;,&amp;amp;quot;MAEAddDCmoIcG7xt3pqcYmu0nKg&amp;amp;quot;,&amp;amp;quot;Q1OQddvpDoFoMwxvgXHcoEelnYg&amp;amp;quot;,&amp;amp;quot;Nov6da2n5owQsTx3mwrcv9U8n6b&amp;amp;quot;,&amp;amp;quot;TdgYdeDDhoh9oCx3d8qcFfvBnAd&amp;amp;quot;,&amp;amp;quot;FMHOdhIjIoB1jixVUR9c4xNpnna&amp;amp;quot;,&amp;amp;quot;B5fkdtMCmo3iVExjBKJcNKtsnNf&amp;amp;quot;,&amp;amp;quot;Fdq5dX1BfoOcVTxvhijc9Eqbn5e&amp;amp;quot;,&amp;amp;quot;WOqDdfdhEoF26sxTbnHcSwtCnLe&amp;amp;quot;,&amp;amp;quot;V1C1dQGSCoLL6ex7Uo3c48QsnVg&amp;amp;quot;,&amp;amp;quot;YvJZdqXqookv1UxvnlucOSESnSh&amp;amp;quot;,&amp;amp;quot;RAWpdMBwnoDarlxq8EZcCSiKnjd&amp;amp;quot;,&amp;amp;quot;VtXZd2cpyoJv8MxtkVDcWk90njd&amp;amp;quot;,&amp;amp;quot;RJQKd81KeoUO4Gx1vhUcmtuynFb&amp;amp;quot;,&amp;amp;quot;KFxBdb1ZtozZUzxZmEccexHkn0e&amp;amp;quot;,&amp;amp;quot;EJGOdWqKpoZuvvxg7YZc037BnRg&amp;amp;quot;,&amp;amp;quot;RD4zdIP3JoocXmxFQxUcMZHdnqL&amp;amp;quot;,&amp;amp;quot;ZybOdmRMboK4FLxf93wc4tUpnge&amp;amp;quot;,&amp;amp;quot;PLmPdsZthoIaohx7xEdcGqhQnef&amp;amp;quot;,&amp;amp;quot;HJJod0kcjoDDshxMBdFcQveCnCb&amp;amp;quot;,&amp;amp;quot;HwoCdgL1FoJl3ZxRirEcAJOjntg&amp;amp;quot;,&amp;amp;quot;IcbHdyFCIoTx03xMJqhcE8XBn8d&amp;amp;quot;,&amp;amp;quot;KLvUdAhDuoDvDaxZVyNc868inI9&amp;amp;quot;,&amp;amp;quot;ASOUdPfg9oRAEBx1Gu0cv1Kinzg&amp;amp;quot;,&amp;amp;quot;FpIadfqSMoIXEExJSXBc5NuVnTb&amp;amp;quot;,&amp;amp;quot;AuT0d47WqoyRj9xLppuc9tkGn9g&amp;amp;quot;,&amp;amp;quot;E05PdBLIBoZ9dRxL8gRcebEWnUd&amp;amp;quot;,&amp;amp;quot;Yq7HdP8Y7oNtkMxn6V9cAwMgnkf&amp;amp;quot;,&amp;amp;quot;AuhPdNyZFodJ7xxeBcpcVKsgnmg&amp;amp;quot;,&amp;amp;quot;Sd88d3A1YowjPkxiGOdce5tDnAb&amp;amp;quot;,&amp;amp;quot;TheadfGhHow1vsx3iLJcBv9PnLf&amp;amp;quot;,&amp;amp;quot;XpzgdVvFVotw71xgT8hcsSfLnBh&amp;amp;quot;,&amp;amp;quot;WADadXodxo3vv5x0SGJc5cpfnOf&amp;amp;quot;,&amp;amp;quot;Sa3SdrwOVoU5Bex6PKXcTcL5nS6&amp;amp;quot;,&amp;amp;quot;WnNIdhSvco6K0Fxy1D6cQAnSnTg&amp;amp;quot;,&amp;amp;quot;UBmhdwnp8oc2y9xqN94coriunSe&amp;amp;quot;,&amp;amp;quot;TfsrdJPsWowxvox3kLsclOxUnwh&amp;amp;quot;,&amp;amp;quot;Xg1JdTl9po33KCx2RrHce38vnPv&amp;amp;quot;,&amp;amp;quot;KDGydE63xoTFVuxvn2LcN1SVnsh&amp;amp;quot;,&amp;amp;quot;VCjbdOlfToS8Xzx7AJhcfcp8nXe&amp;amp;quot;,&amp;amp;quot;POtBdNguvor087xalsQcZtkBnpe&amp;amp;quot;,&amp;amp;quot;Q0X8dD8N5orpxkxDKBVc3nVCnLc&amp;amp;quot;,&amp;amp;quot;TtQhdtitFoK4dbxKEAccfxirn8g&amp;amp;quot;,&amp;amp;quot;URudd3ms9opzvOxhCECcjY6ynPg&amp;amp;quot;,&amp;amp;quot;IXRnd8XwDodmNbx1vgUcPjitnxd&amp;amp;quot;,&amp;amp;quot;WNeYdxTTvoaB5YxVap4csfV5no1&amp;amp;quot;,&amp;amp;quot;IiCnd4uDloEIipx3nNxcHZ8Qnee&amp;amp;quot;,&amp;amp;quot;NT34dx3YboyPJ2x79BOcNMDGn6b&amp;amp;quot;,&amp;amp;quot;OH2ldDrSDokzXMx1pRgcXUw4nMf&amp;amp;quot;,&amp;amp;quot;ZJHBdqmnzo0i8exby7Pc6HGonNe&amp;amp;quot;,&amp;amp;quot;VpHodZ1QKobbEHxdMSLcvwqGnzg&amp;amp;quot;,&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;Nv9BdtB23oWdHfxlRJ8cv8MrnWh&amp;amp;quot;,&amp;amp;quot;ANGdd2mVToEG69xr6BScyum0nng&amp;amp;quot;,&amp;amp;quot;MNb3dl5TKo2K4FxqX5GcxSEpnMd&amp;amp;quot;,&amp;amp;quot;ZslzdCSWjoITfzxPBMtc9y1znCg&amp;amp;quot;,&amp;amp;quot;QTtMdcrwBoFiOgxl6c0c4011nHe&amp;amp;quot;,&amp;amp;quot;Klc1d4JRkoiIJZxjZgSceTgonPd&amp;amp;quot;,&amp;amp;quot;Y3ohdSpseoX1fbxv66xcEXbvnhe&amp;amp;quot;,&amp;amp;quot;HHv1dPsoJo1vwYxlFrcc4fognxh&amp;amp;quot;,&amp;amp;quot;Rv3HdNR67ofO4RxidGjcueKOn5e&amp;amp;quot;,&amp;amp;quot;LS5rdOpXAotMfoxt1ZYcPWNvnFf&amp;amp;quot;,&amp;amp;quot;W5EwdRDg2oarvLx8RZ9c4tqfnOf&amp;amp;quot;,&amp;amp;quot;FqLRdqhIxo15UzxeEwacsT95nhb&amp;amp;quot;,&amp;amp;quot;IBabd8N4Xob4hSxEyCvc9edinIe&amp;amp;quot;,&amp;amp;quot;P0hOd4M5woRoqzxQZQYcb9QWnPe&amp;amp;quot;,&amp;amp;quot;CndEdwgnUoUyDJxkF9ecTnKPnPh&amp;amp;quot;,&amp;amp;quot;HkDhdcy79oQqg9xWkCIcKuQ5n4d&amp;amp;quot;,&amp;amp;quot;Xvw2d2HcMo68VDxRLuIcoXinnBd&amp;amp;quot;,&amp;amp;quot;Huc7dWX6Eo0NuIxIW2ccuQL3n3g&amp;amp;quot;,&amp;amp;quot;OjJKdMADGo5KJ7xnwZOckobbnhw&amp;amp;quot;,&amp;amp;quot;YnNMdlBdPoF5V6xiNcJcN7Ebndb&amp;amp;quot;,&amp;amp;quot;GztpdYkiuozkK6xGgMWcWgR6npf&amp;amp;quot;,&amp;amp;quot;Orl6dYmbMomyUExFV4IcnMDOnCg&amp;amp;quot;,&amp;amp;quot;OgkidjHw3o2xVMxPMxzcVEainee&amp;amp;quot;,&amp;amp;quot;GKzOdI4fhosoXAxztFuctmCini1&amp;amp;quot;,&amp;amp;quot;R34adE1Eao1dBOxAOaVcLVGOnMg&amp;amp;quot;,&amp;amp;quot;T3G9dSGK2ooH69xeY4qcLhP6nNb&amp;amp;quot;,&amp;amp;quot;MI8MdSFXioZvYcxOYcuccFG3n7b&amp;amp;quot;,&amp;amp;quot;WldDd0mT9oGzm6xWLq8cS4gun7b&amp;amp;quot;,&amp;amp;quot;F93udM41NolNHSxsIkvc41fBnbc&amp;amp;quot;,&amp;amp;quot;NyAAdi8WHotLInxHZy5cLilbnlh&amp;amp;quot;,&amp;amp;quot;BbJkd7z22oWiCEx8IMacxcK2nvh&amp;amp;quot;,&amp;amp;quot;NGSgdXZuGozqGEx1gQ7cgIBzn1b&amp;amp;quot;,&amp;amp;quot;NqjzdfD2voi5pixT42pcio8knue&amp;amp;quot;,&amp;amp;quot;FPVOdZrqOoOluCxxbNQcmh33nhe&amp;amp;quot;,&amp;amp;quot;BgfvdLWQioGv87xzhJscBOfUndd&amp;amp;quot;,&amp;amp;quot;GWTKdSm7Do5UtqxvrrJcx1RJn6e&amp;amp;quot;,&amp;amp;quot;G0Q8dnjIKo4bAbxYw3DcIFFpneq&amp;amp;quot;,&amp;amp;quot;SCmddufcRoXc0xx3IbycbInMnGg&amp;amp;quot;,&amp;amp;quot;USdkduyyAoRwFXxJrQZcPsA6n2V&amp;amp;quot;,&amp;amp;quot;SXZtdGn32oEdJsxfOSkc48knnhd&amp;amp;quot;,&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;IPAvdZU6Bo0F7mxyVWfcz9rSnke&amp;amp;quot;],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;6.14梯径词条&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;cover&amp;amp;quot;:{&amp;amp;quot;token&amp;amp;quot;:&amp;amp;quot;TvOqbfSIno8x8VxoeCUcb8W3nXe&amp;amp;quot;,&amp;amp;quot;dlp_status&amp;amp;quot;:0,&amp;amp;quot;url&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;offset_ratio_y&amp;amp;quot;:0,&amp;amp;quot;offset_ratio_x&amp;amp;quot;:0,&amp;amp;quot;type&amp;amp;quot;:1,&amp;amp;quot;mime_type&amp;amp;quot;:&amp;amp;quot;image/jpeg&amp;amp;quot;},&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;7077027910124568580&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null}}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;6b2cc303-a7c9-48fb-b6fe-c99ff255cf38&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:130,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:131,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:22},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;43e3e141-7009-4ab0-9cd2-8d941d1e2c65&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A2%AF%E5%BE%84&amp;diff=45463</id>
		<title>梯径</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A2%AF%E5%BE%84&amp;diff=45463"/>
		<updated>2025-07-07T10:38:37Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 概述 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:基本梯图.png|缩略图|一个基本的梯图，说明该字符串的梯径]]&lt;br /&gt;
&lt;br /&gt;
== 概述 ==&lt;br /&gt;
由刘宇（Yu Liu）、狄增如（Zengru Di）和菲利普·格利（Philip Gerlee）于2022年提出的梯径方法，基于算法信息论和Evolutionary Tinkering的思想，是一种新颖的框架，用于量化某对象（如字符串、空间模式、分子或语言片段）的复杂性和信息&amp;lt;ref&amp;gt;https://www.mdpi.com/1099-4300/24/8/1082&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
梯径包括一系列生成操作，用于逐步构建目标对象。每一步，可重复使用的较小的子结构单元会被组合或连接起来。经过梯径重构的步骤后，整个序列会形成一个偏序多重集或梯图，用于捕获层次依赖关系。&lt;br /&gt;
&lt;br /&gt;
传统的复杂性度量（如柯尔莫哥洛夫复杂度或香农熵）要么依赖于无限集合，要么在计算上难以处理。相比之下，梯径提供了一种构造性的、层级化的视角，强调对象如何通过利用重复和重用来合理地构建。&lt;br /&gt;
&lt;br /&gt;
梯径包括一系列生成操作，用于逐步构建目标对象。一个梯径本质上是一系列构建（或称“进化”）生成的序列，通过这些生成步骤将更小的组件（称为梯元，ladderon）组合成日益复杂的结构。这些阶梯子可以在构建步骤中重复使用，它们的组装关系可以通过一个偏序多重集（partially ordered multiset）或一个梯图（laddergraph）来捕捉。从这个表示中，衍生出两个互补的度量指标：&lt;br /&gt;
&lt;br /&gt;
- 梯径度（&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;）：表示通过最优重用组件来构造对象所需的最少步骤数。&lt;br /&gt;
&lt;br /&gt;
- 有序度（&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;）：量化了相较于一种无结构构建（即每个基本元素都单独添加）所节省的步骤数。其形式化定义为&amp;lt;math&amp;gt;\omega=S-\lambda&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; 是规模度（size-index），即不进行任何重用的从头构建成本。&lt;br /&gt;
&lt;br /&gt;
这两个指数提供了一个二维的复杂性度量谱系：&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;反映了内在的新颖性或信息成本，而&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;反映了结构的冗余性或有序度。重要的是，该方法是领域无关的（domain-agnostic）——它同样适用于字符串、空间配置、生物分子、语言结构，甚至进化系统。&lt;br /&gt;
&lt;br /&gt;
将梯径度和有序度看作“复杂性”的两个轴，结合以上其衍生的指标，可以用梯径框架衡量一个序列结构或组件结构的复杂度。&lt;br /&gt;
&lt;br /&gt;
除了理论上的简洁与优雅，梯径框架还具有广泛的实际意义和应用前景。它可以用于检测基因或蛋白质序列中的模块化重复、分析语言中的句法结构，以及模拟生物系统（从简单的化学网络到复杂的生物体）中的进化组装过程。它与“进化就像修修补补”（evolution-as-tinkering）范式的契合性&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;François Jacob, Evolution and Tinkering.''Science''196,1161-1166(1977).DOI:10.1126/science.860134&amp;lt;/ref&amp;gt;，使其成为探索自然和人工系统中复杂性涌现的强大工具。&lt;br /&gt;
&lt;br /&gt;
== 背景 ==&lt;br /&gt;
&lt;br /&gt;
=== 单个对象的句法复杂性度量 ===&lt;br /&gt;
梯径理论的发展源于一个长期存在的挑战：如何在不依赖统计集合或无限数据集的情况下，测量单个对象（如序列、分子或模式）的句法复杂性。&lt;br /&gt;
&lt;br /&gt;
柯尔莫哥洛夫复杂度（Kolmogorov complexity）和香农熵（Shannon entropy）等经典方法提供了宝贵的见解，但存在固有的局限性：柯尔莫哥洛夫复杂度因停机问题（halting problem）而通常不可计算；而香农熵则只反映平均不确定性聚焦于跨统计集合的平均值，而忽略了序列内部模式、语法结构，具体为：&lt;br /&gt;
&lt;br /&gt;
* 柯尔莫哥洛夫复杂度&lt;br /&gt;
&lt;br /&gt;
柯尔莫哥洛夫复杂度（Kolmogorov Complexity），又称算法复杂度，是指描述某一对象（如字符串、序列或数据结构）所需的最短计算机程序长度。形式上，对于给定的通用图灵机&amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;和输入对象&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;l(x)&amp;lt;/math&amp;gt;表示二元串的长度，当给定程序&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;时，令&amp;lt;math&amp;gt;U(p)&amp;lt;/math&amp;gt;表示计算机U关于程序p的输出，其柯尔莫哥洛夫复杂度定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;K_U(x)=\underset{p:U(p)=x}{min}l(p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
即柯尔莫哥洛夫复杂度定义为能够输出x的并且停止的所有程序的最小长度，也可以理解为可由计算机&amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;说明的&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的描述中的最短描述长度（信息论基础）&lt;br /&gt;
柯尔莫哥洛夫复杂度对于单个对象的句法复杂性度量的不足在于，由于停机问题的不可判定性，无法构造通用算法来精确算出任意对象的最短描述程序长度 &amp;lt;math&amp;gt;K(x)&amp;lt;/math&amp;gt;。我们至多只能给出上界估计（例如通过通用压缩算法获得的压缩后长度），但无法知道这是否就是最短程序，因此无法得到真正的复杂度值。&lt;br /&gt;
&lt;br /&gt;
* 香农熵&lt;br /&gt;
香农熵（Shannon Entropy）是信息论中用于度量来源不确定性的经典量度。对于离散随机变量&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; 及其概率分布&amp;lt;math&amp;gt;{p_i}&amp;lt;/math&amp;gt;，香农熵定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;H(X) = -\sum_{i=1}^n p_i \log_2 p_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
它反映了一个序列从该分布中抽样时平均每次可获得的信息量（以比特为单位）。&lt;br /&gt;
香农熵对于单个对象的句法复杂性度量的不足在于，香农熵度量的是从一个已知概率分布中抽样时的平均信息量，而非针对某一具体样本的独特结构。即使两条序列内部模式、语法结构截然不同，只要它们在整体分布下的符号频率相同，香农熵给出的值也完全相同，无法区分个体间的细节差异。&lt;br /&gt;
&lt;br /&gt;
鉴于这些挑战，一些强调模块化重用和层级化组合的观点提供了引人注目的替代方案。这些观点包括弗朗索瓦·雅各布（François Jacob）提出的“进化即修补”（evolution as tinkering, 1977）概念、高德纳（Donald Knuth）的加法链问题（addition-chain problem）&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;、描述Physical Complexity的定量方法&amp;lt;ref&amp;gt;https://journals.aps.org/pre/abstract/10.1103/PhysRevE.82.026117&amp;lt;/ref&amp;gt;，及更近期的组装空间理论（Assembly Theory, AT）&amp;lt;ref&amp;gt;https://www.science.org/doi/10.1126/sciadv.abj2465&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://www.science.org/doi/10.1126/sciadv.abj2465&amp;lt;/ref&amp;gt;（尽管AT饱受争议且其作者并不承认其跟算法信息论的关系&amp;lt;ref&amp;gt;https://www.nature.com/articles/s41540-024-00403-y&amp;lt;/ref&amp;gt;）。这些框架关注复杂结构如何从更简单的亚单元构建而成，强调重复利用。&lt;br /&gt;
&lt;br /&gt;
梯径方法通过提供一个层级化的路径模型——一个由可重用构建块组成的“梯元”（ladderon），扩展并形式化了这些先前的思想。通过这个模型，单个对象可以在最优效率的步骤中被构造出来。该方法能够同时量化生成的新颖性（需要多少新的构建步骤）和重用或结构的程度，而无需诉诸基于统计集合的方法。&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;组装理论&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+4&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8391a78e-e4d2-42b4-be74-2ed57aed4cfa&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:36,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:4,&amp;amp;quot;end&amp;amp;quot;:8},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 梯径方法的框架：算法信息论 ==&lt;br /&gt;
&lt;br /&gt;
=== 由算法信息论引导的复杂性度量——单个结构化对象的信息 ===&lt;br /&gt;
长期以来，对单个结构化对象（如字符串、分子或模式）复杂性的度量探索一直由算法信息论（Algorithmic Information Theory, AIT） 所引导。AIT 由 Kolmogorov、Chaitin 和 Solomonoff 在 20 世纪 60 年代创立，它通过能在通用图灵机（universal Turing machine）上生成该对象的最短可能程序的长度来定义复杂性，即柯尔莫哥洛夫复杂度（Kolmogorov complexity）。这种方法抓住了我们的直觉：高度有序或重复的结构是低复杂度的，而随机、无模式的对象具有最大的复杂度。&lt;br /&gt;
&lt;br /&gt;
然而，AIT 的核心度量是不可计算的：由于停机问题（halting problem），不存在确定确切最短程序的通用算法。对于物理对象（如分子），AIT 将需要指定一个能生成它们的通用分子构造器，这使得直接计算变得不可行。虽然存在像 Lempel-Ziv 压缩这样的近似方法，但这些方法通常反映的是统计冗余性而非真正的算法结构，并且可能无法区分随机性和结构化复杂性。&lt;br /&gt;
&lt;br /&gt;
===梯径方法和算法信息论的联系===&lt;br /&gt;
梯径方法旨在通过关注结构的层级化、基于组装的本质来解决这些局限性。通过可重用的子结构构造一个对象所需的最少步骤数来度量复杂性。&lt;br /&gt;
&lt;br /&gt;
梯径理论和 AIT紧密相关（两者都寻求对象的最短描述），然而在范围和可计算性上稍有不同。它不是进行通用压缩，而是模拟一个领域特定的构造机器，该机器执行一系列组合操作（连接、键合等），并在一个池子中跟踪可重用的子单元。这产生了构建过程的层级化多重集表示（梯图，laddergraph），从而得到两个可计算的度量：&lt;br /&gt;
&lt;br /&gt;
-梯径度（&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;, ladderpath-index）：重构目标序列结构最少的组装步骤数。&lt;br /&gt;
&lt;br /&gt;
-有序度（&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;, order-index）：通过重用节省的开销，即结构有序度。&lt;br /&gt;
&lt;br /&gt;
这些度量满足公式&amp;lt;math&amp;gt;S=\lambda+\omega&amp;lt;/math&amp;gt;，其中&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;是规模度（size-index）（即无重用构造的成本）。至关重要的是，这个框架对于有限对象是可计算的，为柯尔莫哥洛夫复杂度的不可行计算提供了一种实用的替代方案。&lt;br /&gt;
&lt;br /&gt;
综上所述 ，梯径方法在算法信息论的框架上，实现了以下的优化：&lt;br /&gt;
&lt;br /&gt;
* AIT 提供了一种基于最短通用描述的信息度量原则，但通常是不可计算的。&lt;br /&gt;
&lt;br /&gt;
* 梯径方法提出了一种可计算的、考虑层级结构的复杂性度量，其基础是构造规则和重用，使其适用于物理、生物等系统。&lt;br /&gt;
&lt;br /&gt;
* AIT和梯径在深层理论上有联系——都寻求最短描述。但在实用性、侧重点以及重构路径的显式描述上存在差异。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
=== 定义“生成操作” ===&lt;br /&gt;
&lt;br /&gt;
假设我们有一个包含英文字符 A, B, C, D, E, F 的集合，现在需要获得一个特定的英文字符串&lt;br /&gt;
[math]\mathcal{X}=ABCDBCDBCDCDEFEF[/math]&lt;br /&gt;
问如何以最快的方式得到[math]\mathcal{X}[/math]?&lt;br /&gt;
&lt;br /&gt;
首先我们定义一个基础集[math]S_0 = \{A(0), B(0), C(0), D(0), E(0), F(0)\}[/math]&lt;br /&gt;
“生成操作”(Generation-operation) 是指，取此类偏序多重集中的若干组件，其重数相应地减少，再以某种方式结合在一起，最后将结合而成的新组件放回到该集中，放在其构成组件最高层次的下一层。经过这个操作，就产生了一个新的偏序多重集。&lt;br /&gt;
以第一次生成操作举例，[math]\displaystyle{&lt;br /&gt;
S_0 : C + D = CD \rightarrow S_1 = \{ A(0), B(0), C(-1), D(-1), E(0), F(0) \ / \ CD(1) \}&lt;br /&gt;
}[/math]&lt;br /&gt;
&lt;br /&gt;
=== 定义“梯径” ===&lt;br /&gt;
&lt;br /&gt;
对于一条使我们达到最终目的的路径[math]\displaystyle{S_0 \rightarrow S_1 \rightarrow S_2 \rightarrow \dots \rightarrow S_n \Rightarrow \mathcal{X}}[/math],我们以如下的方法来构造偏序多重集 [math]\displaystyle{\mathcal{J}}[/math]：&lt;br /&gt;
&lt;br /&gt;
1. 取最终的集合 [math]\displaystyle{\mathcal{S}_{\mathcal{n}}}[/math]；&lt;br /&gt;
&lt;br /&gt;
2. 删掉所有重数为零的元素；&lt;br /&gt;
&lt;br /&gt;
3. 将所有的负重数取绝对值作为对应组件的重数；&lt;br /&gt;
&lt;br /&gt;
4. 保留所有的偏序不变。&lt;br /&gt;
&lt;br /&gt;
该过程构造出的这个偏序多重集[math]\displaystyle{\mathcal{J}}[/math]，称为这条路径的“梯径”（Ladderpath）。&lt;br /&gt;
&lt;br /&gt;
任一梯径都能被完备地表示为一个偏序多重集。但有时候将梯径用图的形式表示可能更为直观，称为“梯图”，其中的层次即为梯径的偏序关系，组件之间的连接表示生成操作（比如 E 和 F 向上连接到 EF，表示 EF 由 E 和 F 生成）。&lt;br /&gt;
&lt;br /&gt;
[[文件:基本梯图.png|缩略图|一个基本的梯图，说明该字符串的梯径]]&lt;br /&gt;
&lt;br /&gt;
从梯径表示中，衍生出三个关键度量指标用于描述一个系统：&lt;br /&gt;
&lt;br /&gt;
1. 梯径度（[math]\displaystyle{\lambda}[/math], Ladderpath-index）：&lt;br /&gt;
  - 此指数衡量在考虑阶梯元重用的前提下，构造对象所需的最少的步骤数，即最短梯径的长度。&lt;br /&gt;
2. 规模度（[math]\displaystyle{S}[/math],Size-index）:&lt;br /&gt;
  - 一个组件的最短的平凡梯径的长度。&lt;br /&gt;
3. 有序度指数（[math]\displaystyle{\omega}[/math], Order-index）：&lt;br /&gt;
  - 定义为规模度（S, size-index） 与梯径度（λ）之间的差值，即 ω = S − λ。&lt;br /&gt;
  - 等价于通过最短梯径来生成该目标组件所节约的“长度”，即所节约出来的结合组件的操作所花费的步骤。&lt;br /&gt;
&lt;br /&gt;
== 最短梯径的算法 ==&lt;br /&gt;
&lt;br /&gt;
1. 首先创建一个空的多重集 H 用以存放组件。在最后我们可以通过 H 计算出梯径。&lt;br /&gt;
 &lt;br /&gt;
2. 从目标系统 Q 出发，每个不同的组件都只保留一个在 Q 中，其余的重复组件全部放入 H 中。 &lt;br /&gt;
&lt;br /&gt;
3. 以某种预先规定的特定方式，持续切割Q 中的组件，直到 Q 中有至少 2 个子字符串或字符相同。然后在 Q 中只保留一个该字符串，其余重复的字符串全部放入 H 中。&lt;br /&gt;
&lt;br /&gt;
4. 重复步骤 3，直到 Q 中不再能找到重复的字符串或字符。最后把剩下的全部切割成基础组件， 然后全部放入 H中。此时的 H 即记录了一条梯径。 &lt;br /&gt;
&lt;br /&gt;
5. 最后，需要将 H 中各字符串的层次关系（即，根据它们是如何被分割的：谁是父字符串，谁是子字符串）排列清楚，即最终得到该梯径的偏序多重集表示。&lt;br /&gt;
&lt;br /&gt;
该算法可通过 GitHub 仓库获取：[https://github.com/yuernestliu/lppack https://github.com/yuernestliu/ladderpath_v0]&lt;br /&gt;
&lt;br /&gt;
== 应用 ==&lt;br /&gt;
&lt;br /&gt;
=== 用梯径进行分词 ===&lt;br /&gt;
&lt;br /&gt;
为实现对自然语言中结构性冗余的高效压缩，我们提出了一种基于梯径结构的子词词表构建方法。该方法以预构建的梯元结构为基础，通过梯元的重要性排序与代价控制，选取若干高复用性、高贡献度的子结构单元，组成最终用于表征原文的词表。&lt;br /&gt;
&lt;br /&gt;
应用领域：&lt;br /&gt;
&lt;br /&gt;
- 自然语言处理（NLP）：在 NLP 中，梯径分词器可用于将文本分割成有意义的子结构，从而促进句法分析和语义分析等任务。&lt;br /&gt;
&lt;br /&gt;
- 生物信息学（Bioinformatics）：在生物信息学中，此方法可用于分析 DNA 或蛋白质序列，识别指示功能元件的重复基序（motifs）和结构模式。&lt;br /&gt;
&lt;br /&gt;
- 计算生物学（Computational Biology）：梯径分词器有助于理解生物系统的模块化构建方式，从而为其复杂性和进化提供见解。&lt;br /&gt;
&lt;br /&gt;
=== 将梯径用于分析生物序列信息 ===&lt;br /&gt;
&lt;br /&gt;
生物序列信息作为一种由有限基本单元组成、包含大量重复嵌套结构的信息结构，十分适合进行梯径分析。&lt;br /&gt;
&lt;br /&gt;
梯径理论通过模拟“生成—重用”的过程，将生物序列（如DNA、蛋白质序列）分解为可重用的子单元（梯元），并构建出反映层次化结构的阶梯图。相比传统的多序列比对和熵分析，阶梯路径更关注“对象如何被生成”，从而捕捉到统计方法难以描述的层次化关系。&lt;br /&gt;
&lt;br /&gt;
对于生物序列做梯径分析，其核心优势在于：首先，序列的基本单元（如核苷酸或氨基酸）数量有限，却能通过不同的重复与组合产生丰富多样的功能片段；其次，这些重复片段往往以嵌套、串联或分支的形式出现，例如基因组中的复制子或蛋白质中的结构域家族，使得序列天然具备多层次的模块化特征；再次，进化过程中频繁的重复插入、删除或重排事件，正是阶梯路径分解算法所要捕捉的“生成—重用”轨迹。通过对这些嵌套重复结构进行阶梯路径分解，可以定量地揭示序列在进化历史上经历的关键生成步骤，以及不同层次上子单元的重用频度与模式。这不仅有助于比较不同物种或同源蛋白在层次化结构上的差异，也能为功能预测、蛋白工程和进化重建等应用提供新的思路和指标。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[87,88,89],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;生物序列信息作为一种由有限基本单元组成、包含大量重复嵌套结构的信息结构，十分适合进行梯径分析。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1b&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+3b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;梯径理论通过模拟“生成—重用”的过程，将生物序列（如DNA、蛋白质序列）分解为可重用的子单元（梯元），并构建出反映层次化结构的阶梯图。相比传统的多序列比对和熵分析，阶梯路径更关注“对象如何被生成”，从而捕捉到统计方法难以描述的层次化关系。&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;对于生物序列做梯径分析，其核心优势在于：首先，序列的基本单元（如核苷酸或氨基酸）数量有限，却能通过不同的重复与组合产生丰富多样的功能片段；其次，这些重复片段往往以嵌套、串联或分支的形式出现，例如基因组中的复制子或蛋白质中的结构域家族，使得序列天然具备多层次的模块化特征；再次，进化过程中频繁的重复插入、删除或重排事件，正是阶梯路径分解算法所要捕捉的“生成—重用”轨迹。通过对这些嵌套重复结构进行阶梯路径分解，可以定量地揭示序列在进化历史上经历的关键生成步骤，以及不同层次上子单元的重用频度与模式。这不仅有助于比较不同物种或同源蛋白在层次化结构上的差异，也能为功能预测、蛋白工程和进化重建等应用提供新的思路和指标。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8i&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;CmtqdHQ1aoyntGxqwDnc1gdBnFc&amp;amp;quot;,&amp;amp;quot;XLs7dQF2ioMVPHx6tJ1cMJu4nGd&amp;amp;quot;,&amp;amp;quot;Q3Nhd9zp4omGbMxPUaGcSqdNnYc&amp;amp;quot;,&amp;amp;quot;MhIpdzNDmoBhh9xAUVccu6tbnTe&amp;amp;quot;,&amp;amp;quot;Xo2Nd16M4ofPX9xM9yfchstxnng&amp;amp;quot;,&amp;amp;quot;COZRd3Ke9omh98x1vZ4c3kntnGe&amp;amp;quot;,&amp;amp;quot;VyDddEiJ1opuNzxq8JAcF6hxngg&amp;amp;quot;,&amp;amp;quot;ACwWd6KMzosjb7x2D2acFcN3n97&amp;amp;quot;,&amp;amp;quot;FSnWdUPTko9Iy8xUsXmc4fv9nKc&amp;amp;quot;,&amp;amp;quot;L13gdJXhQo2Bt1xb50tckugBnvd&amp;amp;quot;,&amp;amp;quot;Tkt7duk3mo499exukLHc1tivnIc&amp;amp;quot;,&amp;amp;quot;DGapd3qwJodIm1x4cytcXLDdnDg&amp;amp;quot;,&amp;amp;quot;JxH2drg1po9X7Fx3OUncaCOBnbe&amp;amp;quot;,&amp;amp;quot;SUjnd0vKtoxww5xdW7Yc15yRnLc&amp;amp;quot;,&amp;amp;quot;N3L1dlKk9ogLRsx8iGJcvbDVn7c&amp;amp;quot;,&amp;amp;quot;E42Pdhtjso7hJcxVGFIcv8XfnCh&amp;amp;quot;,&amp;amp;quot;Dc38d8Ck4ofRF0xWVZ0cCHTvn6o&amp;amp;quot;,&amp;amp;quot;LYrmdlr8fo1iD9xM7dgcZftunIo&amp;amp;quot;,&amp;amp;quot;Qn71d48CEompCexFtlWcjP1TnRg&amp;amp;quot;,&amp;amp;quot;Jbw7dlDlboevPZxuSLXcUi5wnjf&amp;amp;quot;,&amp;amp;quot;DB5PdQQDwoizaWxCZUicQQwungd&amp;amp;quot;,&amp;amp;quot;VA1ddG6COocaRTxtkAjc1yaXnLg&amp;amp;quot;,&amp;amp;quot;N72Kd9Ue6oUjXixLhKKcF3xPnQh&amp;amp;quot;,&amp;amp;quot;IEIOdjWcvopD9bxhhzbcEg2vnjf&amp;amp;quot;,&amp;amp;quot;UknBdAdHCoSSuLxkxrjcSFm8nz1&amp;amp;quot;,&amp;amp;quot;YJerdf1iCoHZ5zxcSevc0SLKnnf&amp;amp;quot;,&amp;amp;quot;KQBqd1qBzoqFNIxQGIYcmvUBnDh&amp;amp;quot;,&amp;amp;quot;U1HQdcv80oCPewxWZCScDwpTnTh&amp;amp;quot;,&amp;amp;quot;E0eGdqeYvoL3DXxazE7capYnnKb&amp;amp;quot;,&amp;amp;quot;ABSNdLJnIolmJdxupTychmxnnGg&amp;amp;quot;,&amp;amp;quot;HZa8dXqWworhbsx0cLPcNnIcned&amp;amp;quot;,&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;,&amp;amp;quot;SzWEdEoujoP7eUx1tYXcRtVgnSX&amp;amp;quot;,&amp;amp;quot;JbPldH3FXoSlLcxVCYVckmiAnSe&amp;amp;quot;,&amp;amp;quot;UoLkdCSAYoFRwJxqXlbcHRncnle&amp;amp;quot;,&amp;amp;quot;MAEAddDCmoIcG7xt3pqcYmu0nKg&amp;amp;quot;,&amp;amp;quot;Q1OQddvpDoFoMwxvgXHcoEelnYg&amp;amp;quot;,&amp;amp;quot;Nov6da2n5owQsTx3mwrcv9U8n6b&amp;amp;quot;,&amp;amp;quot;TdgYdeDDhoh9oCx3d8qcFfvBnAd&amp;amp;quot;,&amp;amp;quot;FMHOdhIjIoB1jixVUR9c4xNpnna&amp;amp;quot;,&amp;amp;quot;B5fkdtMCmo3iVExjBKJcNKtsnNf&amp;amp;quot;,&amp;amp;quot;Fdq5dX1BfoOcVTxvhijc9Eqbn5e&amp;amp;quot;,&amp;amp;quot;WOqDdfdhEoF26sxTbnHcSwtCnLe&amp;amp;quot;,&amp;amp;quot;V1C1dQGSCoLL6ex7Uo3c48QsnVg&amp;amp;quot;,&amp;amp;quot;YvJZdqXqookv1UxvnlucOSESnSh&amp;amp;quot;,&amp;amp;quot;RAWpdMBwnoDarlxq8EZcCSiKnjd&amp;amp;quot;,&amp;amp;quot;VtXZd2cpyoJv8MxtkVDcWk90njd&amp;amp;quot;,&amp;amp;quot;RJQKd81KeoUO4Gx1vhUcmtuynFb&amp;amp;quot;,&amp;amp;quot;KFxBdb1ZtozZUzxZmEccexHkn0e&amp;amp;quot;,&amp;amp;quot;EJGOdWqKpoZuvvxg7YZc037BnRg&amp;amp;quot;,&amp;amp;quot;RD4zdIP3JoocXmxFQxUcMZHdnqL&amp;amp;quot;,&amp;amp;quot;ZybOdmRMboK4FLxf93wc4tUpnge&amp;amp;quot;,&amp;amp;quot;PLmPdsZthoIaohx7xEdcGqhQnef&amp;amp;quot;,&amp;amp;quot;HJJod0kcjoDDshxMBdFcQveCnCb&amp;amp;quot;,&amp;amp;quot;HwoCdgL1FoJl3ZxRirEcAJOjntg&amp;amp;quot;,&amp;amp;quot;IcbHdyFCIoTx03xMJqhcE8XBn8d&amp;amp;quot;,&amp;amp;quot;KLvUdAhDuoDvDaxZVyNc868inI9&amp;amp;quot;,&amp;amp;quot;ASOUdPfg9oRAEBx1Gu0cv1Kinzg&amp;amp;quot;,&amp;amp;quot;FpIadfqSMoIXEExJSXBc5NuVnTb&amp;amp;quot;,&amp;amp;quot;AuT0d47WqoyRj9xLppuc9tkGn9g&amp;amp;quot;,&amp;amp;quot;E05PdBLIBoZ9dRxL8gRcebEWnUd&amp;amp;quot;,&amp;amp;quot;Yq7HdP8Y7oNtkMxn6V9cAwMgnkf&amp;amp;quot;,&amp;amp;quot;AuhPdNyZFodJ7xxeBcpcVKsgnmg&amp;amp;quot;,&amp;amp;quot;Sd88d3A1YowjPkxiGOdce5tDnAb&amp;amp;quot;,&amp;amp;quot;TheadfGhHow1vsx3iLJcBv9PnLf&amp;amp;quot;,&amp;amp;quot;XpzgdVvFVotw71xgT8hcsSfLnBh&amp;amp;quot;,&amp;amp;quot;WADadXodxo3vv5x0SGJc5cpfnOf&amp;amp;quot;,&amp;amp;quot;Sa3SdrwOVoU5Bex6PKXcTcL5nS6&amp;amp;quot;,&amp;amp;quot;WnNIdhSvco6K0Fxy1D6cQAnSnTg&amp;amp;quot;,&amp;amp;quot;UBmhdwnp8oc2y9xqN94coriunSe&amp;amp;quot;,&amp;amp;quot;TfsrdJPsWowxvox3kLsclOxUnwh&amp;amp;quot;,&amp;amp;quot;Xg1JdTl9po33KCx2RrHce38vnPv&amp;amp;quot;,&amp;amp;quot;KDGydE63xoTFVuxvn2LcN1SVnsh&amp;amp;quot;,&amp;amp;quot;VCjbdOlfToS8Xzx7AJhcfcp8nXe&amp;amp;quot;,&amp;amp;quot;POtBdNguvor087xalsQcZtkBnpe&amp;amp;quot;,&amp;amp;quot;Q0X8dD8N5orpxkxDKBVc3nVCnLc&amp;amp;quot;,&amp;amp;quot;TtQhdtitFoK4dbxKEAccfxirn8g&amp;amp;quot;,&amp;amp;quot;URudd3ms9opzvOxhCECcjY6ynPg&amp;amp;quot;,&amp;amp;quot;IXRnd8XwDodmNbx1vgUcPjitnxd&amp;amp;quot;,&amp;amp;quot;WNeYdxTTvoaB5YxVap4csfV5no1&amp;amp;quot;,&amp;amp;quot;IiCnd4uDloEIipx3nNxcHZ8Qnee&amp;amp;quot;,&amp;amp;quot;NT34dx3YboyPJ2x79BOcNMDGn6b&amp;amp;quot;,&amp;amp;quot;OH2ldDrSDokzXMx1pRgcXUw4nMf&amp;amp;quot;,&amp;amp;quot;ZJHBdqmnzo0i8exby7Pc6HGonNe&amp;amp;quot;,&amp;amp;quot;VpHodZ1QKobbEHxdMSLcvwqGnzg&amp;amp;quot;,&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;Nv9BdtB23oWdHfxlRJ8cv8MrnWh&amp;amp;quot;,&amp;amp;quot;ANGdd2mVToEG69xr6BScyum0nng&amp;amp;quot;,&amp;amp;quot;MNb3dl5TKo2K4FxqX5GcxSEpnMd&amp;amp;quot;,&amp;amp;quot;ZslzdCSWjoITfzxPBMtc9y1znCg&amp;amp;quot;,&amp;amp;quot;QTtMdcrwBoFiOgxl6c0c4011nHe&amp;amp;quot;,&amp;amp;quot;Klc1d4JRkoiIJZxjZgSceTgonPd&amp;amp;quot;,&amp;amp;quot;Y3ohdSpseoX1fbxv66xcEXbvnhe&amp;amp;quot;,&amp;amp;quot;HHv1dPsoJo1vwYxlFrcc4fognxh&amp;amp;quot;,&amp;amp;quot;Rv3HdNR67ofO4RxidGjcueKOn5e&amp;amp;quot;,&amp;amp;quot;LS5rdOpXAotMfoxt1ZYcPWNvnFf&amp;amp;quot;,&amp;amp;quot;W5EwdRDg2oarvLx8RZ9c4tqfnOf&amp;amp;quot;,&amp;amp;quot;FqLRdqhIxo15UzxeEwacsT95nhb&amp;amp;quot;,&amp;amp;quot;IBabd8N4Xob4hSxEyCvc9edinIe&amp;amp;quot;,&amp;amp;quot;P0hOd4M5woRoqzxQZQYcb9QWnPe&amp;amp;quot;,&amp;amp;quot;CndEdwgnUoUyDJxkF9ecTnKPnPh&amp;amp;quot;,&amp;amp;quot;HkDhdcy79oQqg9xWkCIcKuQ5n4d&amp;amp;quot;,&amp;amp;quot;Xvw2d2HcMo68VDxRLuIcoXinnBd&amp;amp;quot;,&amp;amp;quot;Huc7dWX6Eo0NuIxIW2ccuQL3n3g&amp;amp;quot;,&amp;amp;quot;OjJKdMADGo5KJ7xnwZOckobbnhw&amp;amp;quot;,&amp;amp;quot;YnNMdlBdPoF5V6xiNcJcN7Ebndb&amp;amp;quot;,&amp;amp;quot;GztpdYkiuozkK6xGgMWcWgR6npf&amp;amp;quot;,&amp;amp;quot;Orl6dYmbMomyUExFV4IcnMDOnCg&amp;amp;quot;,&amp;amp;quot;OgkidjHw3o2xVMxPMxzcVEainee&amp;amp;quot;,&amp;amp;quot;GKzOdI4fhosoXAxztFuctmCini1&amp;amp;quot;,&amp;amp;quot;R34adE1Eao1dBOxAOaVcLVGOnMg&amp;amp;quot;,&amp;amp;quot;T3G9dSGK2ooH69xeY4qcLhP6nNb&amp;amp;quot;,&amp;amp;quot;MI8MdSFXioZvYcxOYcuccFG3n7b&amp;amp;quot;,&amp;amp;quot;WldDd0mT9oGzm6xWLq8cS4gun7b&amp;amp;quot;,&amp;amp;quot;F93udM41NolNHSxsIkvc41fBnbc&amp;amp;quot;,&amp;amp;quot;NyAAdi8WHotLInxHZy5cLilbnlh&amp;amp;quot;,&amp;amp;quot;BbJkd7z22oWiCEx8IMacxcK2nvh&amp;amp;quot;,&amp;amp;quot;NGSgdXZuGozqGEx1gQ7cgIBzn1b&amp;amp;quot;,&amp;amp;quot;NqjzdfD2voi5pixT42pcio8knue&amp;amp;quot;,&amp;amp;quot;FPVOdZrqOoOluCxxbNQcmh33nhe&amp;amp;quot;,&amp;amp;quot;BgfvdLWQioGv87xzhJscBOfUndd&amp;amp;quot;,&amp;amp;quot;GWTKdSm7Do5UtqxvrrJcx1RJn6e&amp;amp;quot;,&amp;amp;quot;G0Q8dnjIKo4bAbxYw3DcIFFpneq&amp;amp;quot;,&amp;amp;quot;SCmddufcRoXc0xx3IbycbInMnGg&amp;amp;quot;,&amp;amp;quot;USdkduyyAoRwFXxJrQZcPsA6n2V&amp;amp;quot;,&amp;amp;quot;SXZtdGn32oEdJsxfOSkc48knnhd&amp;amp;quot;,&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;IPAvdZU6Bo0F7mxyVWfcz9rSnke&amp;amp;quot;],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;6.14梯径词条&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;cover&amp;amp;quot;:{&amp;amp;quot;token&amp;amp;quot;:&amp;amp;quot;TvOqbfSIno8x8VxoeCUcb8W3nXe&amp;amp;quot;,&amp;amp;quot;dlp_status&amp;amp;quot;:0,&amp;amp;quot;url&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;offset_ratio_y&amp;amp;quot;:0,&amp;amp;quot;offset_ratio_x&amp;amp;quot;:0,&amp;amp;quot;type&amp;amp;quot;:1,&amp;amp;quot;mime_type&amp;amp;quot;:&amp;amp;quot;image/jpeg&amp;amp;quot;},&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;7077027910124568580&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null}}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;5930398c-bc09-4421-8de6-30f6a61f935b&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:87,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:47},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:88,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:119},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:89,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:306},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;43e3e141-7009-4ab0-9cd2-8d941d1e2c65&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;相关的研究为：Evolutionary Tinkering Enriches the Hierarchical and Interlaced Structures in Amino Acid Sequences&amp;lt;ref&amp;gt;Zhang, Zecheng &amp;amp; Liu, Chunxiuzi &amp;amp; Zhu, Yingjun &amp;amp; Peng, Lu &amp;amp; Qiu, Weiyi &amp;amp; Tang, Qianyuan &amp;amp; Liu, He &amp;amp; Zhang, Ke &amp;amp; Di, Zengru &amp;amp; Liu, Yu. (2023). Evolutionary Tinkering Enriches the Hierarchical and Interlaced Structures in Amino Acid Sequences. 10.21203/rs.3.rs-3440555/v1. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 用梯径做压缩 ===&lt;br /&gt;
&lt;br /&gt;
以字符串&amp;quot;ABCDBCDBCDCDEFEF&amp;quot;为例，经梯径方法处理后，我们获得了如图深灰色所示的三个梯元{'BCD','CD','EF'}。原始字符串本质上是由基础构件与这些梯元组合而成。&lt;br /&gt;
&lt;br /&gt;
下面给出在技术层面，如何使用梯径方法进行压缩，将原始的字符串压缩为一个序列。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ladderpath as lp&lt;br /&gt;
import ladderpath_tools.compress as lp_c&lt;br /&gt;
&lt;br /&gt;
X = ['ABCDBCDBCDCDEFEF']&lt;br /&gt;
lpjson = lp.get_ladderpath(X)&lt;br /&gt;
&lt;br /&gt;
compressed_list = lp_c.compress(lpjson, SEP='@')&lt;br /&gt;
&lt;br /&gt;
# 输出结果：&lt;br /&gt;
# compressed_list = [1, '@', 'A', 2, 2, 2, 1, 0, 0, '@', 'EF', &lt;br /&gt;
#                   '@', 'CD', '@', 'B', 1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
现对compressed_list进行说明：分隔符&amp;quot;@&amp;quot;用于区分不同序列和梯元；第一个元素&amp;quot;1&amp;quot;表示目标序列仅包含一个字符串，后续元素&amp;quot;A&amp;quot;, 2, 2, 2, 1, 0, 0描述原始字符串的重构过程：基础构件&amp;quot;A&amp;quot;首先与元素2组合再与元素2组合两次依次与元素1、元素0（两次）组合；三个&amp;quot;@&amp;quot;分隔符划分三个梯元：&amp;quot;EF&amp;quot;表示梯元0，由基础构件E和F组合生成；&amp;quot;CD&amp;quot;表示梯元1，由C和D组合生成；同理，&amp;quot;B&amp;quot;, 1组成梯元2。&lt;br /&gt;
需注意，compressed_list中的梯元ID可能因实现细节与梯径算法给出的梯元ID存在差异。&lt;br /&gt;
&lt;br /&gt;
=== 用梯径分析神经网络 ===&lt;br /&gt;
梯径方法最近被应用于人工神经网络（ANNs），特别是多层感知机（MLPs）的结构分析中，作为一种理解网络架构与性能之间关系的新颖方法。&lt;br /&gt;
这种方法允许通过梯径度和有序度这两个指标来量化结构的有序性和复杂性，它们的归一化比值被称为有序率 (order-rate, &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;)。&lt;br /&gt;
有序率&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;的定义方式为：&lt;br /&gt;
&lt;br /&gt;
1. 首先考虑有序度&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\omega(x)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\omega(x)=S-l(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;表示规模度，即序列&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的长度，&amp;lt;math&amp;gt;l(x)&amp;lt;/math&amp;gt;为序列&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的梯径度。&lt;br /&gt;
&lt;br /&gt;
2. 确定长度&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;、有序度&amp;lt;math&amp;gt;\omega(x)&amp;lt;/math&amp;gt;的边界值&lt;br /&gt;
&lt;br /&gt;
最大有序指数 &amp;lt;math&amp;gt;\omega_{max}⁡(S)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
当序列完全有序时取得（例如全重复序列 AAAA...）。此时梯径度为 1（只需构建一个符号），故：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\omega_{max}⁡(S)=S-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- 基准有序指数 &amp;lt;math&amp;gt;\omega_0(S)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
指在给定字母表（如 {A,B,C,D}）上，纯随机长度为 S的序列的有序度的期望值。实践中通过以下方式确定：&lt;br /&gt;
&lt;br /&gt;
(a) 理论推导 或 (b) 对大量随机序列计算 &amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;后取平均值。&lt;br /&gt;
&lt;br /&gt;
3.归一化计算有序率&lt;br /&gt;
&lt;br /&gt;
有序率的计算公式为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\eta(x)=\frac{\omega(x)-\omega_0(S)}{\omega_{max}(S)-\omega_0(S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
根据设计原则：&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈0时，序列无显著层次结构（完全随机）&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈0.5时，序列呈现最丰富的嵌套模块化结构&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈1时，序列呈现极致层次化（完全重复）&lt;br /&gt;
&lt;br /&gt;
在神经网络的背景下，&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 作为一个标量度量，反映了网络层次结构的丰富程度。&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 值接近 0 表示随机性或缺乏结构，而 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 接近 1 则意味着过度规则化。具有中等 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 值（约 0.5 左右）的网络展现出最复杂且深度嵌套的模块化层次结构。实证研究表明，此类网络在各种任务上的表现往往优于其他网络，这表明层次结构的丰富程度与功能能力之间存在直接关联。&lt;br /&gt;
&lt;br /&gt;
为了将梯径应用于神经网络，研究人员首先将网络转换为一组能够捕捉信息在网络路径中流动的序列。这涉及对实值连接权重进行粗粒化处理，并将这些连接编码为符号序列。随后，将梯径算法应用于这些序列以计算 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;。通过涉及超过 600 种 MLP 架构、在诸如奇偶校验分类、回归和时间序列预测等任务上进行训练的广泛实验发现，当 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 处于中等范围内时，网络性能达到峰值，这证实了结构的复杂性有助于学习和泛化。&lt;br /&gt;
&lt;br /&gt;
这些发现表明，梯径理论复杂性度量指标之一的&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 既可以作为一种初始化或设计人工神经网络架构的指导。&lt;br /&gt;
&lt;br /&gt;
相关研究为：Correlating measures of hierarchical structures in artificial neural networks with their performance. ''npj Complex'' 1, 15 (2024)&amp;lt;ref&amp;gt;Xu, Z., Zhu, Y., Hong, B. ''et al.'' Correlating measures of hierarchical structures in artificial neural networks with their performance. ''npj Complex'' 1, 15 (2024). &amp;lt;nowiki&amp;gt;https://doi.org/10.1038/s44260-024-00015-x&amp;lt;/nowiki&amp;gt;&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
==进一步阅读==&lt;br /&gt;
1. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/Onzq5t2Rptly4z270DviZw&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
神经网络结构复杂度与其功能表现 | 梯径 &amp;amp; 算法信息论 张章&amp;amp;刘宇 ecsLab 2024年10月06日&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/KuO_d4iqff2nVUVatJolWg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
外星生命或智能摆在面前，你能认出来吗？——“梯径”提供的思路 刘宇 集智俱乐部 ''2023年02月11日'' &lt;br /&gt;
&lt;br /&gt;
3. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/sdFmltwgbSic0vUbsyN7TA&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
思考生命复杂性的新视角：从组装理论到梯径理论&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[130,131],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;ordered&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;https://mp.weixin.qq.com/s/sdFmltwgbSic0vUbsyN7TA&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0*1+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;],&amp;amp;quot;1&amp;amp;quot;:[&amp;amp;quot;link-id&amp;amp;quot;,&amp;amp;quot;5bcff84b-c83c-46ab-90a9-3d04d01b7e43&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:2}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;seq&amp;amp;quot;:&amp;amp;quot;3&amp;amp;quot;}},&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;思考生命复杂性的新视角：从组装理论到梯径理论&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;CmtqdHQ1aoyntGxqwDnc1gdBnFc&amp;amp;quot;,&amp;amp;quot;XLs7dQF2ioMVPHx6tJ1cMJu4nGd&amp;amp;quot;,&amp;amp;quot;Q3Nhd9zp4omGbMxPUaGcSqdNnYc&amp;amp;quot;,&amp;amp;quot;MhIpdzNDmoBhh9xAUVccu6tbnTe&amp;amp;quot;,&amp;amp;quot;Xo2Nd16M4ofPX9xM9yfchstxnng&amp;amp;quot;,&amp;amp;quot;COZRd3Ke9omh98x1vZ4c3kntnGe&amp;amp;quot;,&amp;amp;quot;VyDddEiJ1opuNzxq8JAcF6hxngg&amp;amp;quot;,&amp;amp;quot;ACwWd6KMzosjb7x2D2acFcN3n97&amp;amp;quot;,&amp;amp;quot;FSnWdUPTko9Iy8xUsXmc4fv9nKc&amp;amp;quot;,&amp;amp;quot;L13gdJXhQo2Bt1xb50tckugBnvd&amp;amp;quot;,&amp;amp;quot;Tkt7duk3mo499exukLHc1tivnIc&amp;amp;quot;,&amp;amp;quot;DGapd3qwJodIm1x4cytcXLDdnDg&amp;amp;quot;,&amp;amp;quot;JxH2drg1po9X7Fx3OUncaCOBnbe&amp;amp;quot;,&amp;amp;quot;SUjnd0vKtoxww5xdW7Yc15yRnLc&amp;amp;quot;,&amp;amp;quot;N3L1dlKk9ogLRsx8iGJcvbDVn7c&amp;amp;quot;,&amp;amp;quot;E42Pdhtjso7hJcxVGFIcv8XfnCh&amp;amp;quot;,&amp;amp;quot;Dc38d8Ck4ofRF0xWVZ0cCHTvn6o&amp;amp;quot;,&amp;amp;quot;LYrmdlr8fo1iD9xM7dgcZftunIo&amp;amp;quot;,&amp;amp;quot;Qn71d48CEompCexFtlWcjP1TnRg&amp;amp;quot;,&amp;amp;quot;Jbw7dlDlboevPZxuSLXcUi5wnjf&amp;amp;quot;,&amp;amp;quot;DB5PdQQDwoizaWxCZUicQQwungd&amp;amp;quot;,&amp;amp;quot;VA1ddG6COocaRTxtkAjc1yaXnLg&amp;amp;quot;,&amp;amp;quot;N72Kd9Ue6oUjXixLhKKcF3xPnQh&amp;amp;quot;,&amp;amp;quot;IEIOdjWcvopD9bxhhzbcEg2vnjf&amp;amp;quot;,&amp;amp;quot;UknBdAdHCoSSuLxkxrjcSFm8nz1&amp;amp;quot;,&amp;amp;quot;YJerdf1iCoHZ5zxcSevc0SLKnnf&amp;amp;quot;,&amp;amp;quot;KQBqd1qBzoqFNIxQGIYcmvUBnDh&amp;amp;quot;,&amp;amp;quot;U1HQdcv80oCPewxWZCScDwpTnTh&amp;amp;quot;,&amp;amp;quot;E0eGdqeYvoL3DXxazE7capYnnKb&amp;amp;quot;,&amp;amp;quot;ABSNdLJnIolmJdxupTychmxnnGg&amp;amp;quot;,&amp;amp;quot;HZa8dXqWworhbsx0cLPcNnIcned&amp;amp;quot;,&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;,&amp;amp;quot;SzWEdEoujoP7eUx1tYXcRtVgnSX&amp;amp;quot;,&amp;amp;quot;JbPldH3FXoSlLcxVCYVckmiAnSe&amp;amp;quot;,&amp;amp;quot;UoLkdCSAYoFRwJxqXlbcHRncnle&amp;amp;quot;,&amp;amp;quot;MAEAddDCmoIcG7xt3pqcYmu0nKg&amp;amp;quot;,&amp;amp;quot;Q1OQddvpDoFoMwxvgXHcoEelnYg&amp;amp;quot;,&amp;amp;quot;Nov6da2n5owQsTx3mwrcv9U8n6b&amp;amp;quot;,&amp;amp;quot;TdgYdeDDhoh9oCx3d8qcFfvBnAd&amp;amp;quot;,&amp;amp;quot;FMHOdhIjIoB1jixVUR9c4xNpnna&amp;amp;quot;,&amp;amp;quot;B5fkdtMCmo3iVExjBKJcNKtsnNf&amp;amp;quot;,&amp;amp;quot;Fdq5dX1BfoOcVTxvhijc9Eqbn5e&amp;amp;quot;,&amp;amp;quot;WOqDdfdhEoF26sxTbnHcSwtCnLe&amp;amp;quot;,&amp;amp;quot;V1C1dQGSCoLL6ex7Uo3c48QsnVg&amp;amp;quot;,&amp;amp;quot;YvJZdqXqookv1UxvnlucOSESnSh&amp;amp;quot;,&amp;amp;quot;RAWpdMBwnoDarlxq8EZcCSiKnjd&amp;amp;quot;,&amp;amp;quot;VtXZd2cpyoJv8MxtkVDcWk90njd&amp;amp;quot;,&amp;amp;quot;RJQKd81KeoUO4Gx1vhUcmtuynFb&amp;amp;quot;,&amp;amp;quot;KFxBdb1ZtozZUzxZmEccexHkn0e&amp;amp;quot;,&amp;amp;quot;EJGOdWqKpoZuvvxg7YZc037BnRg&amp;amp;quot;,&amp;amp;quot;RD4zdIP3JoocXmxFQxUcMZHdnqL&amp;amp;quot;,&amp;amp;quot;ZybOdmRMboK4FLxf93wc4tUpnge&amp;amp;quot;,&amp;amp;quot;PLmPdsZthoIaohx7xEdcGqhQnef&amp;amp;quot;,&amp;amp;quot;HJJod0kcjoDDshxMBdFcQveCnCb&amp;amp;quot;,&amp;amp;quot;HwoCdgL1FoJl3ZxRirEcAJOjntg&amp;amp;quot;,&amp;amp;quot;IcbHdyFCIoTx03xMJqhcE8XBn8d&amp;amp;quot;,&amp;amp;quot;KLvUdAhDuoDvDaxZVyNc868inI9&amp;amp;quot;,&amp;amp;quot;ASOUdPfg9oRAEBx1Gu0cv1Kinzg&amp;amp;quot;,&amp;amp;quot;FpIadfqSMoIXEExJSXBc5NuVnTb&amp;amp;quot;,&amp;amp;quot;AuT0d47WqoyRj9xLppuc9tkGn9g&amp;amp;quot;,&amp;amp;quot;E05PdBLIBoZ9dRxL8gRcebEWnUd&amp;amp;quot;,&amp;amp;quot;Yq7HdP8Y7oNtkMxn6V9cAwMgnkf&amp;amp;quot;,&amp;amp;quot;AuhPdNyZFodJ7xxeBcpcVKsgnmg&amp;amp;quot;,&amp;amp;quot;Sd88d3A1YowjPkxiGOdce5tDnAb&amp;amp;quot;,&amp;amp;quot;TheadfGhHow1vsx3iLJcBv9PnLf&amp;amp;quot;,&amp;amp;quot;XpzgdVvFVotw71xgT8hcsSfLnBh&amp;amp;quot;,&amp;amp;quot;WADadXodxo3vv5x0SGJc5cpfnOf&amp;amp;quot;,&amp;amp;quot;Sa3SdrwOVoU5Bex6PKXcTcL5nS6&amp;amp;quot;,&amp;amp;quot;WnNIdhSvco6K0Fxy1D6cQAnSnTg&amp;amp;quot;,&amp;amp;quot;UBmhdwnp8oc2y9xqN94coriunSe&amp;amp;quot;,&amp;amp;quot;TfsrdJPsWowxvox3kLsclOxUnwh&amp;amp;quot;,&amp;amp;quot;Xg1JdTl9po33KCx2RrHce38vnPv&amp;amp;quot;,&amp;amp;quot;KDGydE63xoTFVuxvn2LcN1SVnsh&amp;amp;quot;,&amp;amp;quot;VCjbdOlfToS8Xzx7AJhcfcp8nXe&amp;amp;quot;,&amp;amp;quot;POtBdNguvor087xalsQcZtkBnpe&amp;amp;quot;,&amp;amp;quot;Q0X8dD8N5orpxkxDKBVc3nVCnLc&amp;amp;quot;,&amp;amp;quot;TtQhdtitFoK4dbxKEAccfxirn8g&amp;amp;quot;,&amp;amp;quot;URudd3ms9opzvOxhCECcjY6ynPg&amp;amp;quot;,&amp;amp;quot;IXRnd8XwDodmNbx1vgUcPjitnxd&amp;amp;quot;,&amp;amp;quot;WNeYdxTTvoaB5YxVap4csfV5no1&amp;amp;quot;,&amp;amp;quot;IiCnd4uDloEIipx3nNxcHZ8Qnee&amp;amp;quot;,&amp;amp;quot;NT34dx3YboyPJ2x79BOcNMDGn6b&amp;amp;quot;,&amp;amp;quot;OH2ldDrSDokzXMx1pRgcXUw4nMf&amp;amp;quot;,&amp;amp;quot;ZJHBdqmnzo0i8exby7Pc6HGonNe&amp;amp;quot;,&amp;amp;quot;VpHodZ1QKobbEHxdMSLcvwqGnzg&amp;amp;quot;,&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;Nv9BdtB23oWdHfxlRJ8cv8MrnWh&amp;amp;quot;,&amp;amp;quot;ANGdd2mVToEG69xr6BScyum0nng&amp;amp;quot;,&amp;amp;quot;MNb3dl5TKo2K4FxqX5GcxSEpnMd&amp;amp;quot;,&amp;amp;quot;ZslzdCSWjoITfzxPBMtc9y1znCg&amp;amp;quot;,&amp;amp;quot;QTtMdcrwBoFiOgxl6c0c4011nHe&amp;amp;quot;,&amp;amp;quot;Klc1d4JRkoiIJZxjZgSceTgonPd&amp;amp;quot;,&amp;amp;quot;Y3ohdSpseoX1fbxv66xcEXbvnhe&amp;amp;quot;,&amp;amp;quot;HHv1dPsoJo1vwYxlFrcc4fognxh&amp;amp;quot;,&amp;amp;quot;Rv3HdNR67ofO4RxidGjcueKOn5e&amp;amp;quot;,&amp;amp;quot;LS5rdOpXAotMfoxt1ZYcPWNvnFf&amp;amp;quot;,&amp;amp;quot;W5EwdRDg2oarvLx8RZ9c4tqfnOf&amp;amp;quot;,&amp;amp;quot;FqLRdqhIxo15UzxeEwacsT95nhb&amp;amp;quot;,&amp;amp;quot;IBabd8N4Xob4hSxEyCvc9edinIe&amp;amp;quot;,&amp;amp;quot;P0hOd4M5woRoqzxQZQYcb9QWnPe&amp;amp;quot;,&amp;amp;quot;CndEdwgnUoUyDJxkF9ecTnKPnPh&amp;amp;quot;,&amp;amp;quot;HkDhdcy79oQqg9xWkCIcKuQ5n4d&amp;amp;quot;,&amp;amp;quot;Xvw2d2HcMo68VDxRLuIcoXinnBd&amp;amp;quot;,&amp;amp;quot;Huc7dWX6Eo0NuIxIW2ccuQL3n3g&amp;amp;quot;,&amp;amp;quot;OjJKdMADGo5KJ7xnwZOckobbnhw&amp;amp;quot;,&amp;amp;quot;YnNMdlBdPoF5V6xiNcJcN7Ebndb&amp;amp;quot;,&amp;amp;quot;GztpdYkiuozkK6xGgMWcWgR6npf&amp;amp;quot;,&amp;amp;quot;Orl6dYmbMomyUExFV4IcnMDOnCg&amp;amp;quot;,&amp;amp;quot;OgkidjHw3o2xVMxPMxzcVEainee&amp;amp;quot;,&amp;amp;quot;GKzOdI4fhosoXAxztFuctmCini1&amp;amp;quot;,&amp;amp;quot;R34adE1Eao1dBOxAOaVcLVGOnMg&amp;amp;quot;,&amp;amp;quot;T3G9dSGK2ooH69xeY4qcLhP6nNb&amp;amp;quot;,&amp;amp;quot;MI8MdSFXioZvYcxOYcuccFG3n7b&amp;amp;quot;,&amp;amp;quot;WldDd0mT9oGzm6xWLq8cS4gun7b&amp;amp;quot;,&amp;amp;quot;F93udM41NolNHSxsIkvc41fBnbc&amp;amp;quot;,&amp;amp;quot;NyAAdi8WHotLInxHZy5cLilbnlh&amp;amp;quot;,&amp;amp;quot;BbJkd7z22oWiCEx8IMacxcK2nvh&amp;amp;quot;,&amp;amp;quot;NGSgdXZuGozqGEx1gQ7cgIBzn1b&amp;amp;quot;,&amp;amp;quot;NqjzdfD2voi5pixT42pcio8knue&amp;amp;quot;,&amp;amp;quot;FPVOdZrqOoOluCxxbNQcmh33nhe&amp;amp;quot;,&amp;amp;quot;BgfvdLWQioGv87xzhJscBOfUndd&amp;amp;quot;,&amp;amp;quot;GWTKdSm7Do5UtqxvrrJcx1RJn6e&amp;amp;quot;,&amp;amp;quot;G0Q8dnjIKo4bAbxYw3DcIFFpneq&amp;amp;quot;,&amp;amp;quot;SCmddufcRoXc0xx3IbycbInMnGg&amp;amp;quot;,&amp;amp;quot;USdkduyyAoRwFXxJrQZcPsA6n2V&amp;amp;quot;,&amp;amp;quot;SXZtdGn32oEdJsxfOSkc48knnhd&amp;amp;quot;,&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;IPAvdZU6Bo0F7mxyVWfcz9rSnke&amp;amp;quot;],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;6.14梯径词条&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;cover&amp;amp;quot;:{&amp;amp;quot;token&amp;amp;quot;:&amp;amp;quot;TvOqbfSIno8x8VxoeCUcb8W3nXe&amp;amp;quot;,&amp;amp;quot;dlp_status&amp;amp;quot;:0,&amp;amp;quot;url&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;offset_ratio_y&amp;amp;quot;:0,&amp;amp;quot;offset_ratio_x&amp;amp;quot;:0,&amp;amp;quot;type&amp;amp;quot;:1,&amp;amp;quot;mime_type&amp;amp;quot;:&amp;amp;quot;image/jpeg&amp;amp;quot;},&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;7077027910124568580&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null}}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;6b2cc303-a7c9-48fb-b6fe-c99ff255cf38&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:130,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:131,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:22},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;43e3e141-7009-4ab0-9cd2-8d941d1e2c65&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A2%AF%E5%BE%84&amp;diff=45462</id>
		<title>梯径</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A2%AF%E5%BE%84&amp;diff=45462"/>
		<updated>2025-07-07T10:21:20Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 概述 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:基本梯图.png|缩略图|一个基本的梯图，说明该字符串的梯径]]&lt;br /&gt;
&lt;br /&gt;
== 概述 ==&lt;br /&gt;
由刘宇（Yu Liu）、狄增如（Zengru Di）和菲利普·格利（Philip Gerlee）于2022年提出的梯径方法，基于算法信息论，是一种新颖的框架，用于量化某对象（如字符串、空间模式、分子或语言片段）的复杂性和信息&amp;lt;ref&amp;gt;https://www.mdpi.com/1099-4300/24/8/1082&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
梯径包括一系列生成操作，用于逐步构建目标对象。每一步，可重复使用的较小的子结构单元会被组合或连接起来。经过梯径重构的步骤后，整个序列会形成一个偏序多重集或梯图，用于捕获层次依赖关系。&lt;br /&gt;
&lt;br /&gt;
传统的复杂性度量（如柯尔莫哥洛夫复杂度或香农熵）要么依赖于无限集合，要么在计算上难以处理。相比之下，梯径提供了一种构造性的、层级化的视角，强调对象如何通过利用重复和重用来合理地构建。&lt;br /&gt;
&lt;br /&gt;
梯径包括一系列生成操作，用于逐步构建目标对象。一个梯径本质上是一系列构建（或称“进化”）生成的序列，通过这些生成步骤将更小的组件（称为梯元，ladderon）组合成日益复杂的结构。这些阶梯子可以在构建步骤中重复使用，它们的组装关系可以通过一个偏序多重集（partially‑ordered multiset）或一个梯图（laddergraph）来捕捉。从这个表示中，衍生出两个互补的度量指标：&lt;br /&gt;
&lt;br /&gt;
- 梯径度（&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;）：表示通过最优重用组件来构造对象所需的最少步骤数。&lt;br /&gt;
&lt;br /&gt;
- 有序度（&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;）：量化了相较于一种无结构构建（即每个基本元素都单独添加）所节省的步骤数。其形式化定义为&amp;lt;math&amp;gt;\omega=S-\lambda&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; 是规模度（size-index），即不进行任何重用的从头构建成本。&lt;br /&gt;
&lt;br /&gt;
这两个指数提供了一个二维的复杂性度量谱系：&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;反映了内在的新颖性或信息成本，而&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;反映了结构的冗余性或有序度。重要的是，该方法是领域无关的（domain-agnostic）——它同样适用于字符串、空间配置、生物分子、语言结构，甚至进化系统。&lt;br /&gt;
&lt;br /&gt;
将梯径度和有序度看作“复杂性”的两个轴，结合以上其衍生的指标，可以用梯径框架衡量一个序列结构或组件结构的复杂度。&lt;br /&gt;
&lt;br /&gt;
除了理论上的简洁与优雅，梯径框架还具有广泛的实际意义和应用前景。它可以用于检测基因或蛋白质序列中的模块化重复、分析语言中的句法结构，以及模拟生物系统（从简单的化学网络到复杂的生物体）中的进化组装过程。它与“进化就像修修补补”（evolution-as-tinkering）范式的契合性&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;François Jacob, Evolution and Tinkering.''Science''196,1161-1166(1977).DOI:10.1126/science.860134&amp;lt;/ref&amp;gt;，使其成为探索自然和人工系统中复杂性涌现的强大工具。&lt;br /&gt;
&lt;br /&gt;
== 背景 ==&lt;br /&gt;
&lt;br /&gt;
=== 单个对象的句法复杂性度量 ===&lt;br /&gt;
梯径理论的发展源于一个长期存在的挑战：如何在不依赖统计集合或无限数据集的情况下，测量单个对象（如序列、分子或模式）的句法复杂性（syntactic complexity）。&lt;br /&gt;
&lt;br /&gt;
柯尔莫哥洛夫复杂度（Kolmogorov complexity）和香农熵（Shannon entropy）等经典方法提供了宝贵的见解，但存在固有的局限性：柯尔莫哥洛夫复杂度因停机问题（halting problem）而通常不可计算；而香农熵则只反映平均不确定性聚焦于跨统计集合的平均值，而忽略了序列内部模式、语法结构，具体为：&lt;br /&gt;
&lt;br /&gt;
* 柯尔莫哥洛夫复杂度&lt;br /&gt;
&lt;br /&gt;
柯尔莫哥洛夫复杂度（Kolmogorov Complexity），又称算法复杂度，是指描述某一对象（如字符串、序列或数据结构）所需的最短计算机程序长度。形式上，对于给定的通用图灵机&amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;和输入对象&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;l(x)&amp;lt;/math&amp;gt;表示二元串的长度，当给定程序&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;时，令&amp;lt;math&amp;gt;U(p)&amp;lt;/math&amp;gt;表示计算机U关于程序p的输出，其柯尔莫哥洛夫复杂度定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;K_U(x)=\underset{p:U(p)=x}{min}l(p)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
即柯尔莫哥洛夫复杂度定义为能够输出x的并且停止的所有程序的最小长度，也可以理解为可由计算机&amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;说明的&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的描述中的最短描述长度（信息论基础）&lt;br /&gt;
柯尔莫哥洛夫复杂度对于单个对象的句法复杂性度量的不足在于，由于停机问题的不可判定性，无法构造通用算法来精确算出任意对象的最短描述程序长度 &amp;lt;math&amp;gt;K(x)&amp;lt;/math&amp;gt;。我们至多只能给出上界估计（例如通过通用压缩算法获得的压缩后长度），但无法知道这是否就是最短程序，因此无法得到真正的复杂度值。&lt;br /&gt;
&lt;br /&gt;
* 香农熵&lt;br /&gt;
香农熵（Shannon Entropy）是信息论中用于度量来源不确定性的经典量度。对于离散随机变量&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; 及其概率分布&amp;lt;math&amp;gt;{p_i}&amp;lt;/math&amp;gt;，香农熵定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;block&amp;quot;&amp;gt;H(X) = -\sum_{i=1}^n p_i \log_2 p_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
它反映了一个序列从该分布中抽样时平均每次可获得的信息量（以比特为单位）。&lt;br /&gt;
香农熵对于单个对象的句法复杂性度量的不足在于，香农熵度量的是从一个已知概率分布中抽样时的平均信息量，而非针对某一具体样本的独特结构。即使两条序列内部模式、语法结构截然不同，只要它们在整体分布下的符号频率相同，香农熵给出的值也完全相同，无法区分个体间的细节差异。&lt;br /&gt;
&lt;br /&gt;
鉴于这些挑战，一些强调模块化重用和层级化组合的观点提供了引人注目的替代方案。这些观点包括弗朗索瓦·雅各布（François Jacob）提出的“进化即修补”（evolution as tinkering, 1977）概念、高德纳（Donald Knuth）的加法链问题（addition-chain problem）&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;，以及更近期的路径复杂性（pathway complexity）和组装空间理论（assembly space theories）。这些框架关注复杂结构如何从更简单的亚单元构建而成，强调组合效率（combinatorial efficiency）和重复利用（repetition）。&lt;br /&gt;
&lt;br /&gt;
在这一概念基础上发展起来的组装理论（Assembly Theory，由克罗宁（Cronin）、沃克（Walker）等人开创），将“追溯从基本组件构建对象所需的最小组装操作序列”这一思想形式化，从而提供了一种称为组装指数（assembly index）的度量&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Marshall, S.M., Mathis, C., Carrick, E. ''et al.'' Identifying molecules as biosignatures with assembly theory and mass spectrometry. ''Nat Commun'' 12, 3033 (2021). &amp;lt;nowiki&amp;gt;https://doi.org/10.1038/s41467-021-23258-x&amp;lt;/nowiki&amp;gt;&amp;lt;/ref&amp;gt;。该指数有助于区分可能由生物或技术过程塑造的对象与偶然产生的对象，为探测生物特征（biosignatures）和生命起源开辟了道路。&lt;br /&gt;
&lt;br /&gt;
在此基础上，梯径理论通过提供一个层级化的路径模型——一个由可重用构建块组成的“阶梯”（ladder），扩展并形式化了这些先前的思想。通过这个模型，单个对象可以在最优效率的步骤中被构造出来。该方法能够同时量化生成的新颖性（需要多少新的构建步骤）和重用或结构的程度，而无需诉诸基于统计集合的方法。&lt;br /&gt;
&lt;br /&gt;
=== 组装理论 ===&lt;br /&gt;
组装理论提供了一个量化单个分子结构内在复杂性的框架，其核心思想是：考虑从一组预定义的基本构建模块（例如化学键）出发，构建目标分子所需的最少组装步骤序列——每一步骤都涉及将两个分子亚基连接起来。一条组装路径在形式上表示为一个有向多重图：其中顶点对应分子片段，边对应连接操作；多重边允许相同片段存在不同的组合方式。分子的分子组装指数（MA） 定义为构建该分子的最短可能组装路径的长度（即连接操作的数量），并允许路径中生成的中间片段在后续步骤中复用&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Marshall, S.M., Mathis, C., Carrick, E. ''et al.'' Identifying molecules as biosignatures with assembly theory and mass spectrometry. ''Nat Commun'' 12, 3033 (2021). &amp;lt;nowiki&amp;gt;https://doi.org/10.1038/s41467-021-23258-x&amp;lt;/nowiki&amp;gt;&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;组装理论&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+4&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8391a78e-e4d2-42b4-be74-2ed57aed4cfa&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:36,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:4,&amp;amp;quot;end&amp;amp;quot;:8},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;[[文件:A,以分子键为构建模块的二乙基邻苯二甲酸酯分子组装路径图.png|缩略图|588x588像素|以分子键为构建模块的二乙基邻苯二甲酸酯分子组装路径图。该图展示了从不可约构建模块出发，通过8次连接操作（组装指数为8）构建该分子的路径&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;。]]&lt;br /&gt;
&lt;br /&gt;
== 梯径理论的框架：算法信息论 ==&lt;br /&gt;
&lt;br /&gt;
=== 由算法信息论引导的复杂性度量——单个结构化对象的信息 ===&lt;br /&gt;
长期以来，对单个结构化对象（如字符串、分子或模式）复杂性的度量探索一直由算法信息论（Algorithmic Information Theory, AIT） 所引导。AIT 由 Kolmogorov、Chaitin 和 Solomonoff 在 20 世纪 60 年代创立，它通过能在通用图灵机（universal Turing machine）上生成该对象的最短可能程序的长度来定义复杂性，即柯尔莫哥洛夫复杂度（Kolmogorov complexity）。这种方法抓住了我们的直觉：高度有序或重复的结构是低复杂度的，而随机、无模式的对象具有最大的复杂度。&lt;br /&gt;
&lt;br /&gt;
然而，AIT 的核心度量是不可计算的：由于停机问题（halting problem），不存在确定确切最短程序的通用算法。对于物理对象（如分子），AIT 将需要指定一个能生成它们的通用分子构造器，这使得直接计算变得不可行。虽然存在像 Lempel-Ziv 压缩这样的近似方法，但这些方法通常反映的是统计冗余性而非真正的算法结构，并且可能无法区分随机性和结构化复杂性。&lt;br /&gt;
&lt;br /&gt;
===梯径方法和算法信息论的联系===&lt;br /&gt;
梯径理论，旨在通过关注结构的层级化、基于组装的本质来解决这些局限性。和组装理论（Assembly Theory）密切相关 ，梯径理论通过最小化“组装指数（assembly index）”——即通过可重用的子结构构造一个对象所需的最少步骤数——来度量复杂性。&lt;br /&gt;
&lt;br /&gt;
梯径理论和 AIT紧密相关（两者都寻求对象的最短描述），然而在范围和可计算性上稍有不同。它不是进行通用压缩，而是模拟一个领域特定的构造机器，该机器执行一系列组合操作（连接、键合等），并在一个组装池（assembly pool）中跟踪可重用的子单元。这产生了构建过程的层级化多重集表示（梯图，laddergraph），从而得到两个可计算的度量：&lt;br /&gt;
&lt;br /&gt;
-梯径度（&amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt;, ladderpath-index）：重构目标序列结构最少的组装步骤数。&lt;br /&gt;
&lt;br /&gt;
-有序度（&amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;, order-index）：通过重用节省的开销，即结构有序度。&lt;br /&gt;
&lt;br /&gt;
这些度量满足公式&amp;lt;math&amp;gt;S=\lambda+\omega&amp;lt;/math&amp;gt;，其中&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;是规模度（size-index）（即无重用构造的成本）。至关重要的是，这个框架对于有限对象是可计算的，为柯尔莫哥洛夫复杂度的不可行计算提供了一种实用的替代方案。&lt;br /&gt;
&lt;br /&gt;
综上所述 ，梯径方法在算法信息论的框架上，实现了以下的优化：&lt;br /&gt;
&lt;br /&gt;
* AIT 提供了一种基于最短通用描述的信息度量原则，但通常是不可计算的。&lt;br /&gt;
&lt;br /&gt;
* 基于组装理论，梯径理论提出了一种可计算的、考虑层级结构的复杂性度量，其基础是构造规则和重用，使其适用于物理和生物系统。&lt;br /&gt;
&lt;br /&gt;
* AIT和梯径在深层理论上有联系——都寻求最短描述。但在实用性、侧重点以及对显式组装路径（explicit assembly pathways） 与通用计算（universal computation） 上存在差异。&lt;br /&gt;
&lt;br /&gt;
== 定义 ==&lt;br /&gt;
&lt;br /&gt;
=== 定义“生成操作” ===&lt;br /&gt;
&lt;br /&gt;
假设我们有一个包含英文字符 A, B, C, D, E, F 的集合，现在需要获得一个特定的英文字符串&lt;br /&gt;
[math]\mathcal{X}=ABCDBCDBCDCDEFEF[/math]&lt;br /&gt;
问如何以最快的方式得到[math]\mathcal{X}[/math]?&lt;br /&gt;
&lt;br /&gt;
首先我们定义一个基础集[math]S_0 = \{A(0), B(0), C(0), D(0), E(0), F(0)\}[/math]&lt;br /&gt;
“生成操作”(Generation-operation) 是指，取此类偏序多重集中的若干组件，其重数相应地减少，再以某种方式结合在一起，最后将结合而成的新组件放回到该集中，放在其构成组件最高层次的下一层。经过这个操作，就产生了一个新的偏序多重集。&lt;br /&gt;
以第一次生成操作举例，[math]\displaystyle{&lt;br /&gt;
S_0 : C + D = CD \rightarrow S_1 = \{ A(0), B(0), C(-1), D(-1), E(0), F(0) \ / \ CD(1) \}&lt;br /&gt;
}[/math]&lt;br /&gt;
&lt;br /&gt;
=== 定义“梯径” ===&lt;br /&gt;
&lt;br /&gt;
对于一条使我们达到最终目的的路径[math]\displaystyle{S_0 \rightarrow S_1 \rightarrow S_2 \rightarrow \dots \rightarrow S_n \Rightarrow \mathcal{X}}[/math],我们以如下的方法来构造偏序多重集 [math]\displaystyle{\mathcal{J}}[/math]：&lt;br /&gt;
&lt;br /&gt;
1. 取最终的集合 [math]\displaystyle{\mathcal{S}_{\mathcal{n}}}[/math]；&lt;br /&gt;
&lt;br /&gt;
2. 删掉所有重数为零的元素；&lt;br /&gt;
&lt;br /&gt;
3. 将所有的负重数取绝对值作为对应组件的重数；&lt;br /&gt;
&lt;br /&gt;
4. 保留所有的偏序不变。&lt;br /&gt;
&lt;br /&gt;
该过程构造出的这个偏序多重集[math]\displaystyle{\mathcal{J}}[/math]，称为这条路径的“梯径”（Ladderpath）。&lt;br /&gt;
&lt;br /&gt;
任一梯径都能被完备地表示为一个偏序多重集。但有时候将梯径用图的形式表示可能更为直观，称为“梯图”，其中的层次即为梯径的偏序关系，组件之间的连接表示生成操作（比如 E 和 F 向上连接到 EF，表示 EF 由 E 和 F 生成）。&lt;br /&gt;
&lt;br /&gt;
[[文件:基本梯图.png|缩略图|一个基本的梯图，说明该字符串的梯径]]&lt;br /&gt;
&lt;br /&gt;
从梯径表示中，衍生出三个关键度量指标用于描述一个系统：&lt;br /&gt;
&lt;br /&gt;
1. 梯径度（[math]\displaystyle{\lambda}[/math], Ladderpath-index）：&lt;br /&gt;
  - 此指数衡量在考虑阶梯元重用的前提下，构造对象所需的最少的组装步骤数，即最短梯径的长度。&lt;br /&gt;
2. 规模度（[math]\displaystyle{S}[/math],Size-index）:&lt;br /&gt;
  - 一个组件的最短的平凡梯径的长度。&lt;br /&gt;
3. 有序度指数（[math]\displaystyle{\omega}[/math], Order-index）：&lt;br /&gt;
  - 定义为规模度（S, size-index） 与梯径度（λ）之间的差值，即 ω = S − λ。&lt;br /&gt;
  - 等价于通过最短梯径来生成该目标组件所节约的“长度”，即所节约出来的结合组件的操作所花费的步骤。&lt;br /&gt;
&lt;br /&gt;
== 最短梯径的算法 ==&lt;br /&gt;
&lt;br /&gt;
1. 首先创建一个空的多重集 H 用以存放组件。在最后我们可以通过 H 计算出梯径。&lt;br /&gt;
 &lt;br /&gt;
2. 从目标系统 Q 出发，每个不同的组件都只保留一个在 Q 中，其余的重复组件全部放入 H 中。 &lt;br /&gt;
&lt;br /&gt;
3. 以某种预先规定的特定方式，持续切割Q 中的组件，直到 Q 中有至少 2 个子字符串或字符相同。然后在 Q 中只保留一个该字符串，其余重复的字符串全部放入 H 中。&lt;br /&gt;
&lt;br /&gt;
4. 重复步骤 3，直到 Q 中不再能找到重复的字符串或字符。最后把剩下的全部切割成基础组件， 然后全部放入 H中。此时的 H 即记录了一条梯径。 &lt;br /&gt;
&lt;br /&gt;
5. 最后，需要将 H 中各字符串的层次关系（即，根据它们是如何被分割的：谁是父字符串，谁是子字符串）排列清楚，即最终得到该梯径的偏序多重集表示。&lt;br /&gt;
&lt;br /&gt;
该算法可通过 GitHub 仓库获取：https://github.com/yuernestliu/ladderpath_v0&lt;br /&gt;
&lt;br /&gt;
== 应用 ==&lt;br /&gt;
&lt;br /&gt;
=== 用梯径进行分词 ===&lt;br /&gt;
&lt;br /&gt;
为实现对自然语言中结构性冗余的高效压缩，我们提出了一种基于梯径结构的子词词表构建方法。该方法以预构建的梯元结构为基础，通过梯元的重要性排序与代价控制，选取若干高复用性、高贡献度的子结构单元，组成最终用于表征原文的词表。&lt;br /&gt;
&lt;br /&gt;
应用领域：&lt;br /&gt;
&lt;br /&gt;
- 自然语言处理（NLP）：在 NLP 中，梯径分词器可用于将文本分割成有意义的子结构，从而促进句法分析和语义分析等任务。&lt;br /&gt;
&lt;br /&gt;
- 生物信息学（Bioinformatics）：在生物信息学中，此方法可用于分析 DNA 或蛋白质序列，识别指示功能元件的重复基序（motifs）和结构模式。&lt;br /&gt;
&lt;br /&gt;
- 计算生物学（Computational Biology）：梯径分词器有助于理解生物系统的模块化构建方式，从而为其复杂性和进化提供见解。&lt;br /&gt;
&lt;br /&gt;
=== 将梯径用于分析生物序列信息 ===&lt;br /&gt;
&lt;br /&gt;
生物序列信息作为一种由有限基本单元组成、包含大量重复嵌套结构的信息结构，十分适合进行梯径分析。&lt;br /&gt;
&lt;br /&gt;
梯径理论通过模拟“生成—重用”的过程，将生物序列（如DNA、蛋白质序列）分解为可重用的子单元（梯元），并构建出反映层次化结构的阶梯图。相比传统的多序列比对和熵分析，阶梯路径更关注“对象如何被生成”，从而捕捉到统计方法难以描述的层次化关系。&lt;br /&gt;
&lt;br /&gt;
对于生物序列做梯径分析，其核心优势在于：首先，序列的基本单元（如核苷酸或氨基酸）数量有限，却能通过不同的重复与组合产生丰富多样的功能片段；其次，这些重复片段往往以嵌套、串联或分支的形式出现，例如基因组中的复制子或蛋白质中的结构域家族，使得序列天然具备多层次的模块化特征；再次，进化过程中频繁的重复插入、删除或重排事件，正是阶梯路径分解算法所要捕捉的“生成—重用”轨迹。通过对这些嵌套重复结构进行阶梯路径分解，可以定量地揭示序列在进化历史上经历的关键生成步骤，以及不同层次上子单元的重用频度与模式。这不仅有助于比较不同物种或同源蛋白在层次化结构上的差异，也能为功能预测、蛋白工程和进化重建等应用提供新的思路和指标。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[87,88,89],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;生物序列信息作为一种由有限基本单元组成、包含大量重复嵌套结构的信息结构，十分适合进行梯径分析。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1b&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+3b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;梯径理论通过模拟“生成—重用”的过程，将生物序列（如DNA、蛋白质序列）分解为可重用的子单元（梯元），并构建出反映层次化结构的阶梯图。相比传统的多序列比对和熵分析，阶梯路径更关注“对象如何被生成”，从而捕捉到统计方法难以描述的层次化关系。&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;对于生物序列做梯径分析，其核心优势在于：首先，序列的基本单元（如核苷酸或氨基酸）数量有限，却能通过不同的重复与组合产生丰富多样的功能片段；其次，这些重复片段往往以嵌套、串联或分支的形式出现，例如基因组中的复制子或蛋白质中的结构域家族，使得序列天然具备多层次的模块化特征；再次，进化过程中频繁的重复插入、删除或重排事件，正是阶梯路径分解算法所要捕捉的“生成—重用”轨迹。通过对这些嵌套重复结构进行阶梯路径分解，可以定量地揭示序列在进化历史上经历的关键生成步骤，以及不同层次上子单元的重用频度与模式。这不仅有助于比较不同物种或同源蛋白在层次化结构上的差异，也能为功能预测、蛋白工程和进化重建等应用提供新的思路和指标。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8i&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;CmtqdHQ1aoyntGxqwDnc1gdBnFc&amp;amp;quot;,&amp;amp;quot;XLs7dQF2ioMVPHx6tJ1cMJu4nGd&amp;amp;quot;,&amp;amp;quot;Q3Nhd9zp4omGbMxPUaGcSqdNnYc&amp;amp;quot;,&amp;amp;quot;MhIpdzNDmoBhh9xAUVccu6tbnTe&amp;amp;quot;,&amp;amp;quot;Xo2Nd16M4ofPX9xM9yfchstxnng&amp;amp;quot;,&amp;amp;quot;COZRd3Ke9omh98x1vZ4c3kntnGe&amp;amp;quot;,&amp;amp;quot;VyDddEiJ1opuNzxq8JAcF6hxngg&amp;amp;quot;,&amp;amp;quot;ACwWd6KMzosjb7x2D2acFcN3n97&amp;amp;quot;,&amp;amp;quot;FSnWdUPTko9Iy8xUsXmc4fv9nKc&amp;amp;quot;,&amp;amp;quot;L13gdJXhQo2Bt1xb50tckugBnvd&amp;amp;quot;,&amp;amp;quot;Tkt7duk3mo499exukLHc1tivnIc&amp;amp;quot;,&amp;amp;quot;DGapd3qwJodIm1x4cytcXLDdnDg&amp;amp;quot;,&amp;amp;quot;JxH2drg1po9X7Fx3OUncaCOBnbe&amp;amp;quot;,&amp;amp;quot;SUjnd0vKtoxww5xdW7Yc15yRnLc&amp;amp;quot;,&amp;amp;quot;N3L1dlKk9ogLRsx8iGJcvbDVn7c&amp;amp;quot;,&amp;amp;quot;E42Pdhtjso7hJcxVGFIcv8XfnCh&amp;amp;quot;,&amp;amp;quot;Dc38d8Ck4ofRF0xWVZ0cCHTvn6o&amp;amp;quot;,&amp;amp;quot;LYrmdlr8fo1iD9xM7dgcZftunIo&amp;amp;quot;,&amp;amp;quot;Qn71d48CEompCexFtlWcjP1TnRg&amp;amp;quot;,&amp;amp;quot;Jbw7dlDlboevPZxuSLXcUi5wnjf&amp;amp;quot;,&amp;amp;quot;DB5PdQQDwoizaWxCZUicQQwungd&amp;amp;quot;,&amp;amp;quot;VA1ddG6COocaRTxtkAjc1yaXnLg&amp;amp;quot;,&amp;amp;quot;N72Kd9Ue6oUjXixLhKKcF3xPnQh&amp;amp;quot;,&amp;amp;quot;IEIOdjWcvopD9bxhhzbcEg2vnjf&amp;amp;quot;,&amp;amp;quot;UknBdAdHCoSSuLxkxrjcSFm8nz1&amp;amp;quot;,&amp;amp;quot;YJerdf1iCoHZ5zxcSevc0SLKnnf&amp;amp;quot;,&amp;amp;quot;KQBqd1qBzoqFNIxQGIYcmvUBnDh&amp;amp;quot;,&amp;amp;quot;U1HQdcv80oCPewxWZCScDwpTnTh&amp;amp;quot;,&amp;amp;quot;E0eGdqeYvoL3DXxazE7capYnnKb&amp;amp;quot;,&amp;amp;quot;ABSNdLJnIolmJdxupTychmxnnGg&amp;amp;quot;,&amp;amp;quot;HZa8dXqWworhbsx0cLPcNnIcned&amp;amp;quot;,&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;,&amp;amp;quot;SzWEdEoujoP7eUx1tYXcRtVgnSX&amp;amp;quot;,&amp;amp;quot;JbPldH3FXoSlLcxVCYVckmiAnSe&amp;amp;quot;,&amp;amp;quot;UoLkdCSAYoFRwJxqXlbcHRncnle&amp;amp;quot;,&amp;amp;quot;MAEAddDCmoIcG7xt3pqcYmu0nKg&amp;amp;quot;,&amp;amp;quot;Q1OQddvpDoFoMwxvgXHcoEelnYg&amp;amp;quot;,&amp;amp;quot;Nov6da2n5owQsTx3mwrcv9U8n6b&amp;amp;quot;,&amp;amp;quot;TdgYdeDDhoh9oCx3d8qcFfvBnAd&amp;amp;quot;,&amp;amp;quot;FMHOdhIjIoB1jixVUR9c4xNpnna&amp;amp;quot;,&amp;amp;quot;B5fkdtMCmo3iVExjBKJcNKtsnNf&amp;amp;quot;,&amp;amp;quot;Fdq5dX1BfoOcVTxvhijc9Eqbn5e&amp;amp;quot;,&amp;amp;quot;WOqDdfdhEoF26sxTbnHcSwtCnLe&amp;amp;quot;,&amp;amp;quot;V1C1dQGSCoLL6ex7Uo3c48QsnVg&amp;amp;quot;,&amp;amp;quot;YvJZdqXqookv1UxvnlucOSESnSh&amp;amp;quot;,&amp;amp;quot;RAWpdMBwnoDarlxq8EZcCSiKnjd&amp;amp;quot;,&amp;amp;quot;VtXZd2cpyoJv8MxtkVDcWk90njd&amp;amp;quot;,&amp;amp;quot;RJQKd81KeoUO4Gx1vhUcmtuynFb&amp;amp;quot;,&amp;amp;quot;KFxBdb1ZtozZUzxZmEccexHkn0e&amp;amp;quot;,&amp;amp;quot;EJGOdWqKpoZuvvxg7YZc037BnRg&amp;amp;quot;,&amp;amp;quot;RD4zdIP3JoocXmxFQxUcMZHdnqL&amp;amp;quot;,&amp;amp;quot;ZybOdmRMboK4FLxf93wc4tUpnge&amp;amp;quot;,&amp;amp;quot;PLmPdsZthoIaohx7xEdcGqhQnef&amp;amp;quot;,&amp;amp;quot;HJJod0kcjoDDshxMBdFcQveCnCb&amp;amp;quot;,&amp;amp;quot;HwoCdgL1FoJl3ZxRirEcAJOjntg&amp;amp;quot;,&amp;amp;quot;IcbHdyFCIoTx03xMJqhcE8XBn8d&amp;amp;quot;,&amp;amp;quot;KLvUdAhDuoDvDaxZVyNc868inI9&amp;amp;quot;,&amp;amp;quot;ASOUdPfg9oRAEBx1Gu0cv1Kinzg&amp;amp;quot;,&amp;amp;quot;FpIadfqSMoIXEExJSXBc5NuVnTb&amp;amp;quot;,&amp;amp;quot;AuT0d47WqoyRj9xLppuc9tkGn9g&amp;amp;quot;,&amp;amp;quot;E05PdBLIBoZ9dRxL8gRcebEWnUd&amp;amp;quot;,&amp;amp;quot;Yq7HdP8Y7oNtkMxn6V9cAwMgnkf&amp;amp;quot;,&amp;amp;quot;AuhPdNyZFodJ7xxeBcpcVKsgnmg&amp;amp;quot;,&amp;amp;quot;Sd88d3A1YowjPkxiGOdce5tDnAb&amp;amp;quot;,&amp;amp;quot;TheadfGhHow1vsx3iLJcBv9PnLf&amp;amp;quot;,&amp;amp;quot;XpzgdVvFVotw71xgT8hcsSfLnBh&amp;amp;quot;,&amp;amp;quot;WADadXodxo3vv5x0SGJc5cpfnOf&amp;amp;quot;,&amp;amp;quot;Sa3SdrwOVoU5Bex6PKXcTcL5nS6&amp;amp;quot;,&amp;amp;quot;WnNIdhSvco6K0Fxy1D6cQAnSnTg&amp;amp;quot;,&amp;amp;quot;UBmhdwnp8oc2y9xqN94coriunSe&amp;amp;quot;,&amp;amp;quot;TfsrdJPsWowxvox3kLsclOxUnwh&amp;amp;quot;,&amp;amp;quot;Xg1JdTl9po33KCx2RrHce38vnPv&amp;amp;quot;,&amp;amp;quot;KDGydE63xoTFVuxvn2LcN1SVnsh&amp;amp;quot;,&amp;amp;quot;VCjbdOlfToS8Xzx7AJhcfcp8nXe&amp;amp;quot;,&amp;amp;quot;POtBdNguvor087xalsQcZtkBnpe&amp;amp;quot;,&amp;amp;quot;Q0X8dD8N5orpxkxDKBVc3nVCnLc&amp;amp;quot;,&amp;amp;quot;TtQhdtitFoK4dbxKEAccfxirn8g&amp;amp;quot;,&amp;amp;quot;URudd3ms9opzvOxhCECcjY6ynPg&amp;amp;quot;,&amp;amp;quot;IXRnd8XwDodmNbx1vgUcPjitnxd&amp;amp;quot;,&amp;amp;quot;WNeYdxTTvoaB5YxVap4csfV5no1&amp;amp;quot;,&amp;amp;quot;IiCnd4uDloEIipx3nNxcHZ8Qnee&amp;amp;quot;,&amp;amp;quot;NT34dx3YboyPJ2x79BOcNMDGn6b&amp;amp;quot;,&amp;amp;quot;OH2ldDrSDokzXMx1pRgcXUw4nMf&amp;amp;quot;,&amp;amp;quot;ZJHBdqmnzo0i8exby7Pc6HGonNe&amp;amp;quot;,&amp;amp;quot;VpHodZ1QKobbEHxdMSLcvwqGnzg&amp;amp;quot;,&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;Nv9BdtB23oWdHfxlRJ8cv8MrnWh&amp;amp;quot;,&amp;amp;quot;ANGdd2mVToEG69xr6BScyum0nng&amp;amp;quot;,&amp;amp;quot;MNb3dl5TKo2K4FxqX5GcxSEpnMd&amp;amp;quot;,&amp;amp;quot;ZslzdCSWjoITfzxPBMtc9y1znCg&amp;amp;quot;,&amp;amp;quot;QTtMdcrwBoFiOgxl6c0c4011nHe&amp;amp;quot;,&amp;amp;quot;Klc1d4JRkoiIJZxjZgSceTgonPd&amp;amp;quot;,&amp;amp;quot;Y3ohdSpseoX1fbxv66xcEXbvnhe&amp;amp;quot;,&amp;amp;quot;HHv1dPsoJo1vwYxlFrcc4fognxh&amp;amp;quot;,&amp;amp;quot;Rv3HdNR67ofO4RxidGjcueKOn5e&amp;amp;quot;,&amp;amp;quot;LS5rdOpXAotMfoxt1ZYcPWNvnFf&amp;amp;quot;,&amp;amp;quot;W5EwdRDg2oarvLx8RZ9c4tqfnOf&amp;amp;quot;,&amp;amp;quot;FqLRdqhIxo15UzxeEwacsT95nhb&amp;amp;quot;,&amp;amp;quot;IBabd8N4Xob4hSxEyCvc9edinIe&amp;amp;quot;,&amp;amp;quot;P0hOd4M5woRoqzxQZQYcb9QWnPe&amp;amp;quot;,&amp;amp;quot;CndEdwgnUoUyDJxkF9ecTnKPnPh&amp;amp;quot;,&amp;amp;quot;HkDhdcy79oQqg9xWkCIcKuQ5n4d&amp;amp;quot;,&amp;amp;quot;Xvw2d2HcMo68VDxRLuIcoXinnBd&amp;amp;quot;,&amp;amp;quot;Huc7dWX6Eo0NuIxIW2ccuQL3n3g&amp;amp;quot;,&amp;amp;quot;OjJKdMADGo5KJ7xnwZOckobbnhw&amp;amp;quot;,&amp;amp;quot;YnNMdlBdPoF5V6xiNcJcN7Ebndb&amp;amp;quot;,&amp;amp;quot;GztpdYkiuozkK6xGgMWcWgR6npf&amp;amp;quot;,&amp;amp;quot;Orl6dYmbMomyUExFV4IcnMDOnCg&amp;amp;quot;,&amp;amp;quot;OgkidjHw3o2xVMxPMxzcVEainee&amp;amp;quot;,&amp;amp;quot;GKzOdI4fhosoXAxztFuctmCini1&amp;amp;quot;,&amp;amp;quot;R34adE1Eao1dBOxAOaVcLVGOnMg&amp;amp;quot;,&amp;amp;quot;T3G9dSGK2ooH69xeY4qcLhP6nNb&amp;amp;quot;,&amp;amp;quot;MI8MdSFXioZvYcxOYcuccFG3n7b&amp;amp;quot;,&amp;amp;quot;WldDd0mT9oGzm6xWLq8cS4gun7b&amp;amp;quot;,&amp;amp;quot;F93udM41NolNHSxsIkvc41fBnbc&amp;amp;quot;,&amp;amp;quot;NyAAdi8WHotLInxHZy5cLilbnlh&amp;amp;quot;,&amp;amp;quot;BbJkd7z22oWiCEx8IMacxcK2nvh&amp;amp;quot;,&amp;amp;quot;NGSgdXZuGozqGEx1gQ7cgIBzn1b&amp;amp;quot;,&amp;amp;quot;NqjzdfD2voi5pixT42pcio8knue&amp;amp;quot;,&amp;amp;quot;FPVOdZrqOoOluCxxbNQcmh33nhe&amp;amp;quot;,&amp;amp;quot;BgfvdLWQioGv87xzhJscBOfUndd&amp;amp;quot;,&amp;amp;quot;GWTKdSm7Do5UtqxvrrJcx1RJn6e&amp;amp;quot;,&amp;amp;quot;G0Q8dnjIKo4bAbxYw3DcIFFpneq&amp;amp;quot;,&amp;amp;quot;SCmddufcRoXc0xx3IbycbInMnGg&amp;amp;quot;,&amp;amp;quot;USdkduyyAoRwFXxJrQZcPsA6n2V&amp;amp;quot;,&amp;amp;quot;SXZtdGn32oEdJsxfOSkc48knnhd&amp;amp;quot;,&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;IPAvdZU6Bo0F7mxyVWfcz9rSnke&amp;amp;quot;],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;6.14梯径词条&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;cover&amp;amp;quot;:{&amp;amp;quot;token&amp;amp;quot;:&amp;amp;quot;TvOqbfSIno8x8VxoeCUcb8W3nXe&amp;amp;quot;,&amp;amp;quot;dlp_status&amp;amp;quot;:0,&amp;amp;quot;url&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;offset_ratio_y&amp;amp;quot;:0,&amp;amp;quot;offset_ratio_x&amp;amp;quot;:0,&amp;amp;quot;type&amp;amp;quot;:1,&amp;amp;quot;mime_type&amp;amp;quot;:&amp;amp;quot;image/jpeg&amp;amp;quot;},&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;7077027910124568580&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null}}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;5930398c-bc09-4421-8de6-30f6a61f935b&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:87,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:47},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:88,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:119},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:89,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:306},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;43e3e141-7009-4ab0-9cd2-8d941d1e2c65&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;相关的研究为：Evolutionary Tinkering Enriches the Hierarchical and Interlaced Structures in Amino Acid Sequences&amp;lt;ref&amp;gt;Zhang, Zecheng &amp;amp; Liu, Chunxiuzi &amp;amp; Zhu, Yingjun &amp;amp; Peng, Lu &amp;amp; Qiu, Weiyi &amp;amp; Tang, Qianyuan &amp;amp; Liu, He &amp;amp; Zhang, Ke &amp;amp; Di, Zengru &amp;amp; Liu, Yu. (2023). Evolutionary Tinkering Enriches the Hierarchical and Interlaced Structures in Amino Acid Sequences. 10.21203/rs.3.rs-3440555/v1. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 用梯径做压缩 ===&lt;br /&gt;
&lt;br /&gt;
以字符串&amp;quot;ABCDBCDBCDCDEFEF&amp;quot;为例，经梯径方法处理后，我们获得了如图深灰色所示的三个梯元{'BCD','CD','EF'}。原始字符串本质上是由基础构件与这些梯元组合而成。&lt;br /&gt;
&lt;br /&gt;
下面给出在技术层面，如何使用梯径方法进行压缩，将原始的字符串压缩为一个序列。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import ladderpath as lp&lt;br /&gt;
import ladderpath_tools.compress as lp_c&lt;br /&gt;
&lt;br /&gt;
X = ['ABCDBCDBCDCDEFEF']&lt;br /&gt;
lpjson = lp.get_ladderpath(X)&lt;br /&gt;
&lt;br /&gt;
compressed_list = lp_c.compress(lpjson, SEP='@')&lt;br /&gt;
&lt;br /&gt;
# 输出结果：&lt;br /&gt;
# compressed_list = [1, '@', 'A', 2, 2, 2, 1, 0, 0, '@', 'EF', &lt;br /&gt;
#                   '@', 'CD', '@', 'B', 1]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
现对compressed_list进行说明：分隔符&amp;quot;@&amp;quot;用于区分不同序列和梯元；第一个元素&amp;quot;1&amp;quot;表示目标序列仅包含一个字符串，后续元素&amp;quot;A&amp;quot;, 2, 2, 2, 1, 0, 0描述原始字符串的重构过程：基础构件&amp;quot;A&amp;quot;首先与元素2组合再与元素2组合两次依次与元素1、元素0（两次）组合；三个&amp;quot;@&amp;quot;分隔符划分三个梯元：&amp;quot;EF&amp;quot;表示梯元0，由基础构件E和F组合生成；&amp;quot;CD&amp;quot;表示梯元1，由C和D组合生成；同理，&amp;quot;B&amp;quot;, 1组成梯元2。&lt;br /&gt;
需注意，compressed_list中的梯元ID可能因实现细节与梯径算法给出的梯元ID存在差异。&lt;br /&gt;
&lt;br /&gt;
=== 用梯径分析神经网络 ===&lt;br /&gt;
梯径方法最近被应用于人工神经网络（ANNs），特别是多层感知机（MLPs）的结构分析中，作为一种理解网络架构与性能之间关系的新颖方法。&lt;br /&gt;
这种方法允许通过梯径度和有序度这两个指标来量化结构的有序性和复杂性，它们的归一化比值被称为有序率 (order-rate, &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;)。&lt;br /&gt;
有序率&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;的定义方式为：&lt;br /&gt;
&lt;br /&gt;
1. 首先考虑有序度&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\omega(x)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\omega(x)=S-l(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;表示规模度，即序列&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的长度，&amp;lt;math&amp;gt;l(x)&amp;lt;/math&amp;gt;为序列&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;的梯径度。&lt;br /&gt;
&lt;br /&gt;
2. 确定长度&amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;、有序度&amp;lt;math&amp;gt;\omega(x)&amp;lt;/math&amp;gt;的边界值&lt;br /&gt;
&lt;br /&gt;
最大有序指数 &amp;lt;math&amp;gt;\omega_{max}⁡(S)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
当序列完全有序时取得（例如全重复序列 AAAA...）。此时梯径度为 1（只需构建一个符号），故：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\omega_{max}⁡(S)=S-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- 基准有序指数 &amp;lt;math&amp;gt;\omega_0(S)&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
指在给定字母表（如 {A,B,C,D}）上，纯随机长度为 S的序列的有序度的期望值。实践中通过以下方式确定：&lt;br /&gt;
&lt;br /&gt;
(a) 理论推导 或 (b) 对大量随机序列计算 &amp;lt;math&amp;gt;\omega&amp;lt;/math&amp;gt;后取平均值。&lt;br /&gt;
&lt;br /&gt;
3.归一化计算有序率&lt;br /&gt;
&lt;br /&gt;
有序率的计算公式为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\eta(x)=\frac{\omega(x)-\omega_0(S)}{\omega_{max}(S)-\omega_0(S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
根据设计原则：&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈0时，序列无显著层次结构（完全随机）&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈0.5时，序列呈现最丰富的嵌套模块化结构&lt;br /&gt;
&lt;br /&gt;
- &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;≈1时，序列呈现极致层次化（完全重复）&lt;br /&gt;
&lt;br /&gt;
在神经网络的背景下，&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 作为一个标量度量，反映了网络层次结构的丰富程度。&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 值接近 0 表示随机性或缺乏结构，而 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 接近 1 则意味着过度规则化。具有中等 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 值（约 0.5 左右）的网络展现出最复杂且深度嵌套的模块化层次结构。实证研究表明，此类网络在各种任务上的表现往往优于其他网络，这表明层次结构的丰富程度与功能能力之间存在直接关联。&lt;br /&gt;
&lt;br /&gt;
为了将梯径应用于神经网络，研究人员首先将网络转换为一组能够捕捉信息在网络路径中流动的序列。这涉及对实值连接权重进行粗粒化处理，并将这些连接编码为符号序列。随后，将梯径算法应用于这些序列以计算 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt;。通过涉及超过 600 种 MLP 架构、在诸如奇偶校验分类、回归和时间序列预测等任务上进行训练的广泛实验发现，当 &amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 处于中等范围内时，网络性能达到峰值，这证实了结构的复杂性有助于学习和泛化。&lt;br /&gt;
&lt;br /&gt;
这些发现表明，梯径理论复杂性度量指标之一的&amp;lt;math&amp;gt;\eta&amp;lt;/math&amp;gt; 既可以作为一种初始化或设计人工神经网络架构的指导。&lt;br /&gt;
&lt;br /&gt;
相关研究为：Correlating measures of hierarchical structures in artificial neural networks with their performance. ''npj Complex'' 1, 15 (2024)&amp;lt;ref&amp;gt;Xu, Z., Zhu, Y., Hong, B. ''et al.'' Correlating measures of hierarchical structures in artificial neural networks with their performance. ''npj Complex'' 1, 15 (2024). &amp;lt;nowiki&amp;gt;https://doi.org/10.1038/s44260-024-00015-x&amp;lt;/nowiki&amp;gt;&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
==进一步阅读==&lt;br /&gt;
1. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/Onzq5t2Rptly4z270DviZw&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
神经网络结构复杂度与其功能表现 | 梯径 &amp;amp; 算法信息论 张章&amp;amp;刘宇 ecsLab 2024年10月06日&lt;br /&gt;
&lt;br /&gt;
2. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/KuO_d4iqff2nVUVatJolWg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
外星生命或智能摆在面前，你能认出来吗？——“梯径”提供的思路 刘宇 集智俱乐部 ''2023年02月11日'' &lt;br /&gt;
&lt;br /&gt;
3. &amp;lt;nowiki&amp;gt;https://mp.weixin.qq.com/s/sdFmltwgbSic0vUbsyN7TA&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
思考生命复杂性的新视角：从组装理论到梯径理论&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[130,131],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;ordered&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;https://mp.weixin.qq.com/s/sdFmltwgbSic0vUbsyN7TA&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0*1+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;],&amp;amp;quot;1&amp;amp;quot;:[&amp;amp;quot;link-id&amp;amp;quot;,&amp;amp;quot;5bcff84b-c83c-46ab-90a9-3d04d01b7e43&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:2}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;seq&amp;amp;quot;:&amp;amp;quot;3&amp;amp;quot;}},&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;思考生命复杂性的新视角：从组装理论到梯径理论&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BCUIdvopvozUxkxOYXDcOioYnEh&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;CmtqdHQ1aoyntGxqwDnc1gdBnFc&amp;amp;quot;,&amp;amp;quot;XLs7dQF2ioMVPHx6tJ1cMJu4nGd&amp;amp;quot;,&amp;amp;quot;Q3Nhd9zp4omGbMxPUaGcSqdNnYc&amp;amp;quot;,&amp;amp;quot;MhIpdzNDmoBhh9xAUVccu6tbnTe&amp;amp;quot;,&amp;amp;quot;Xo2Nd16M4ofPX9xM9yfchstxnng&amp;amp;quot;,&amp;amp;quot;COZRd3Ke9omh98x1vZ4c3kntnGe&amp;amp;quot;,&amp;amp;quot;VyDddEiJ1opuNzxq8JAcF6hxngg&amp;amp;quot;,&amp;amp;quot;ACwWd6KMzosjb7x2D2acFcN3n97&amp;amp;quot;,&amp;amp;quot;FSnWdUPTko9Iy8xUsXmc4fv9nKc&amp;amp;quot;,&amp;amp;quot;L13gdJXhQo2Bt1xb50tckugBnvd&amp;amp;quot;,&amp;amp;quot;Tkt7duk3mo499exukLHc1tivnIc&amp;amp;quot;,&amp;amp;quot;DGapd3qwJodIm1x4cytcXLDdnDg&amp;amp;quot;,&amp;amp;quot;JxH2drg1po9X7Fx3OUncaCOBnbe&amp;amp;quot;,&amp;amp;quot;SUjnd0vKtoxww5xdW7Yc15yRnLc&amp;amp;quot;,&amp;amp;quot;N3L1dlKk9ogLRsx8iGJcvbDVn7c&amp;amp;quot;,&amp;amp;quot;E42Pdhtjso7hJcxVGFIcv8XfnCh&amp;amp;quot;,&amp;amp;quot;Dc38d8Ck4ofRF0xWVZ0cCHTvn6o&amp;amp;quot;,&amp;amp;quot;LYrmdlr8fo1iD9xM7dgcZftunIo&amp;amp;quot;,&amp;amp;quot;Qn71d48CEompCexFtlWcjP1TnRg&amp;amp;quot;,&amp;amp;quot;Jbw7dlDlboevPZxuSLXcUi5wnjf&amp;amp;quot;,&amp;amp;quot;DB5PdQQDwoizaWxCZUicQQwungd&amp;amp;quot;,&amp;amp;quot;VA1ddG6COocaRTxtkAjc1yaXnLg&amp;amp;quot;,&amp;amp;quot;N72Kd9Ue6oUjXixLhKKcF3xPnQh&amp;amp;quot;,&amp;amp;quot;IEIOdjWcvopD9bxhhzbcEg2vnjf&amp;amp;quot;,&amp;amp;quot;UknBdAdHCoSSuLxkxrjcSFm8nz1&amp;amp;quot;,&amp;amp;quot;YJerdf1iCoHZ5zxcSevc0SLKnnf&amp;amp;quot;,&amp;amp;quot;KQBqd1qBzoqFNIxQGIYcmvUBnDh&amp;amp;quot;,&amp;amp;quot;U1HQdcv80oCPewxWZCScDwpTnTh&amp;amp;quot;,&amp;amp;quot;E0eGdqeYvoL3DXxazE7capYnnKb&amp;amp;quot;,&amp;amp;quot;ABSNdLJnIolmJdxupTychmxnnGg&amp;amp;quot;,&amp;amp;quot;HZa8dXqWworhbsx0cLPcNnIcned&amp;amp;quot;,&amp;amp;quot;SXLBd6fJCo2LNnxuC7GcAAWmnOf&amp;amp;quot;,&amp;amp;quot;SzWEdEoujoP7eUx1tYXcRtVgnSX&amp;amp;quot;,&amp;amp;quot;JbPldH3FXoSlLcxVCYVckmiAnSe&amp;amp;quot;,&amp;amp;quot;UoLkdCSAYoFRwJxqXlbcHRncnle&amp;amp;quot;,&amp;amp;quot;MAEAddDCmoIcG7xt3pqcYmu0nKg&amp;amp;quot;,&amp;amp;quot;Q1OQddvpDoFoMwxvgXHcoEelnYg&amp;amp;quot;,&amp;amp;quot;Nov6da2n5owQsTx3mwrcv9U8n6b&amp;amp;quot;,&amp;amp;quot;TdgYdeDDhoh9oCx3d8qcFfvBnAd&amp;amp;quot;,&amp;amp;quot;FMHOdhIjIoB1jixVUR9c4xNpnna&amp;amp;quot;,&amp;amp;quot;B5fkdtMCmo3iVExjBKJcNKtsnNf&amp;amp;quot;,&amp;amp;quot;Fdq5dX1BfoOcVTxvhijc9Eqbn5e&amp;amp;quot;,&amp;amp;quot;WOqDdfdhEoF26sxTbnHcSwtCnLe&amp;amp;quot;,&amp;amp;quot;V1C1dQGSCoLL6ex7Uo3c48QsnVg&amp;amp;quot;,&amp;amp;quot;YvJZdqXqookv1UxvnlucOSESnSh&amp;amp;quot;,&amp;amp;quot;RAWpdMBwnoDarlxq8EZcCSiKnjd&amp;amp;quot;,&amp;amp;quot;VtXZd2cpyoJv8MxtkVDcWk90njd&amp;amp;quot;,&amp;amp;quot;RJQKd81KeoUO4Gx1vhUcmtuynFb&amp;amp;quot;,&amp;amp;quot;KFxBdb1ZtozZUzxZmEccexHkn0e&amp;amp;quot;,&amp;amp;quot;EJGOdWqKpoZuvvxg7YZc037BnRg&amp;amp;quot;,&amp;amp;quot;RD4zdIP3JoocXmxFQxUcMZHdnqL&amp;amp;quot;,&amp;amp;quot;ZybOdmRMboK4FLxf93wc4tUpnge&amp;amp;quot;,&amp;amp;quot;PLmPdsZthoIaohx7xEdcGqhQnef&amp;amp;quot;,&amp;amp;quot;HJJod0kcjoDDshxMBdFcQveCnCb&amp;amp;quot;,&amp;amp;quot;HwoCdgL1FoJl3ZxRirEcAJOjntg&amp;amp;quot;,&amp;amp;quot;IcbHdyFCIoTx03xMJqhcE8XBn8d&amp;amp;quot;,&amp;amp;quot;KLvUdAhDuoDvDaxZVyNc868inI9&amp;amp;quot;,&amp;amp;quot;ASOUdPfg9oRAEBx1Gu0cv1Kinzg&amp;amp;quot;,&amp;amp;quot;FpIadfqSMoIXEExJSXBc5NuVnTb&amp;amp;quot;,&amp;amp;quot;AuT0d47WqoyRj9xLppuc9tkGn9g&amp;amp;quot;,&amp;amp;quot;E05PdBLIBoZ9dRxL8gRcebEWnUd&amp;amp;quot;,&amp;amp;quot;Yq7HdP8Y7oNtkMxn6V9cAwMgnkf&amp;amp;quot;,&amp;amp;quot;AuhPdNyZFodJ7xxeBcpcVKsgnmg&amp;amp;quot;,&amp;amp;quot;Sd88d3A1YowjPkxiGOdce5tDnAb&amp;amp;quot;,&amp;amp;quot;TheadfGhHow1vsx3iLJcBv9PnLf&amp;amp;quot;,&amp;amp;quot;XpzgdVvFVotw71xgT8hcsSfLnBh&amp;amp;quot;,&amp;amp;quot;WADadXodxo3vv5x0SGJc5cpfnOf&amp;amp;quot;,&amp;amp;quot;Sa3SdrwOVoU5Bex6PKXcTcL5nS6&amp;amp;quot;,&amp;amp;quot;WnNIdhSvco6K0Fxy1D6cQAnSnTg&amp;amp;quot;,&amp;amp;quot;UBmhdwnp8oc2y9xqN94coriunSe&amp;amp;quot;,&amp;amp;quot;TfsrdJPsWowxvox3kLsclOxUnwh&amp;amp;quot;,&amp;amp;quot;Xg1JdTl9po33KCx2RrHce38vnPv&amp;amp;quot;,&amp;amp;quot;KDGydE63xoTFVuxvn2LcN1SVnsh&amp;amp;quot;,&amp;amp;quot;VCjbdOlfToS8Xzx7AJhcfcp8nXe&amp;amp;quot;,&amp;amp;quot;POtBdNguvor087xalsQcZtkBnpe&amp;amp;quot;,&amp;amp;quot;Q0X8dD8N5orpxkxDKBVc3nVCnLc&amp;amp;quot;,&amp;amp;quot;TtQhdtitFoK4dbxKEAccfxirn8g&amp;amp;quot;,&amp;amp;quot;URudd3ms9opzvOxhCECcjY6ynPg&amp;amp;quot;,&amp;amp;quot;IXRnd8XwDodmNbx1vgUcPjitnxd&amp;amp;quot;,&amp;amp;quot;WNeYdxTTvoaB5YxVap4csfV5no1&amp;amp;quot;,&amp;amp;quot;IiCnd4uDloEIipx3nNxcHZ8Qnee&amp;amp;quot;,&amp;amp;quot;NT34dx3YboyPJ2x79BOcNMDGn6b&amp;amp;quot;,&amp;amp;quot;OH2ldDrSDokzXMx1pRgcXUw4nMf&amp;amp;quot;,&amp;amp;quot;ZJHBdqmnzo0i8exby7Pc6HGonNe&amp;amp;quot;,&amp;amp;quot;VpHodZ1QKobbEHxdMSLcvwqGnzg&amp;amp;quot;,&amp;amp;quot;BjgBd2J5yoPjRDxEorrcJCp2n5f&amp;amp;quot;,&amp;amp;quot;F13ldVk6ZomiSgxI3wvczfNSnpd&amp;amp;quot;,&amp;amp;quot;RxfHddAv5oHY5txTwqNch9v9nhe&amp;amp;quot;,&amp;amp;quot;Nv9BdtB23oWdHfxlRJ8cv8MrnWh&amp;amp;quot;,&amp;amp;quot;ANGdd2mVToEG69xr6BScyum0nng&amp;amp;quot;,&amp;amp;quot;MNb3dl5TKo2K4FxqX5GcxSEpnMd&amp;amp;quot;,&amp;amp;quot;ZslzdCSWjoITfzxPBMtc9y1znCg&amp;amp;quot;,&amp;amp;quot;QTtMdcrwBoFiOgxl6c0c4011nHe&amp;amp;quot;,&amp;amp;quot;Klc1d4JRkoiIJZxjZgSceTgonPd&amp;amp;quot;,&amp;amp;quot;Y3ohdSpseoX1fbxv66xcEXbvnhe&amp;amp;quot;,&amp;amp;quot;HHv1dPsoJo1vwYxlFrcc4fognxh&amp;amp;quot;,&amp;amp;quot;Rv3HdNR67ofO4RxidGjcueKOn5e&amp;amp;quot;,&amp;amp;quot;LS5rdOpXAotMfoxt1ZYcPWNvnFf&amp;amp;quot;,&amp;amp;quot;W5EwdRDg2oarvLx8RZ9c4tqfnOf&amp;amp;quot;,&amp;amp;quot;FqLRdqhIxo15UzxeEwacsT95nhb&amp;amp;quot;,&amp;amp;quot;IBabd8N4Xob4hSxEyCvc9edinIe&amp;amp;quot;,&amp;amp;quot;P0hOd4M5woRoqzxQZQYcb9QWnPe&amp;amp;quot;,&amp;amp;quot;CndEdwgnUoUyDJxkF9ecTnKPnPh&amp;amp;quot;,&amp;amp;quot;HkDhdcy79oQqg9xWkCIcKuQ5n4d&amp;amp;quot;,&amp;amp;quot;Xvw2d2HcMo68VDxRLuIcoXinnBd&amp;amp;quot;,&amp;amp;quot;Huc7dWX6Eo0NuIxIW2ccuQL3n3g&amp;amp;quot;,&amp;amp;quot;OjJKdMADGo5KJ7xnwZOckobbnhw&amp;amp;quot;,&amp;amp;quot;YnNMdlBdPoF5V6xiNcJcN7Ebndb&amp;amp;quot;,&amp;amp;quot;GztpdYkiuozkK6xGgMWcWgR6npf&amp;amp;quot;,&amp;amp;quot;Orl6dYmbMomyUExFV4IcnMDOnCg&amp;amp;quot;,&amp;amp;quot;OgkidjHw3o2xVMxPMxzcVEainee&amp;amp;quot;,&amp;amp;quot;GKzOdI4fhosoXAxztFuctmCini1&amp;amp;quot;,&amp;amp;quot;R34adE1Eao1dBOxAOaVcLVGOnMg&amp;amp;quot;,&amp;amp;quot;T3G9dSGK2ooH69xeY4qcLhP6nNb&amp;amp;quot;,&amp;amp;quot;MI8MdSFXioZvYcxOYcuccFG3n7b&amp;amp;quot;,&amp;amp;quot;WldDd0mT9oGzm6xWLq8cS4gun7b&amp;amp;quot;,&amp;amp;quot;F93udM41NolNHSxsIkvc41fBnbc&amp;amp;quot;,&amp;amp;quot;NyAAdi8WHotLInxHZy5cLilbnlh&amp;amp;quot;,&amp;amp;quot;BbJkd7z22oWiCEx8IMacxcK2nvh&amp;amp;quot;,&amp;amp;quot;NGSgdXZuGozqGEx1gQ7cgIBzn1b&amp;amp;quot;,&amp;amp;quot;NqjzdfD2voi5pixT42pcio8knue&amp;amp;quot;,&amp;amp;quot;FPVOdZrqOoOluCxxbNQcmh33nhe&amp;amp;quot;,&amp;amp;quot;BgfvdLWQioGv87xzhJscBOfUndd&amp;amp;quot;,&amp;amp;quot;GWTKdSm7Do5UtqxvrrJcx1RJn6e&amp;amp;quot;,&amp;amp;quot;G0Q8dnjIKo4bAbxYw3DcIFFpneq&amp;amp;quot;,&amp;amp;quot;SCmddufcRoXc0xx3IbycbInMnGg&amp;amp;quot;,&amp;amp;quot;USdkduyyAoRwFXxJrQZcPsA6n2V&amp;amp;quot;,&amp;amp;quot;SXZtdGn32oEdJsxfOSkc48knnhd&amp;amp;quot;,&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;,&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;,&amp;amp;quot;IPAvdZU6Bo0F7mxyVWfcz9rSnke&amp;amp;quot;],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7359408791762321412&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+8&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;6.14梯径词条&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;cover&amp;amp;quot;:{&amp;amp;quot;token&amp;amp;quot;:&amp;amp;quot;TvOqbfSIno8x8VxoeCUcb8W3nXe&amp;amp;quot;,&amp;amp;quot;dlp_status&amp;amp;quot;:0,&amp;amp;quot;url&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;offset_ratio_y&amp;amp;quot;:0,&amp;amp;quot;offset_ratio_x&amp;amp;quot;:0,&amp;amp;quot;type&amp;amp;quot;:1,&amp;amp;quot;mime_type&amp;amp;quot;:&amp;amp;quot;image/jpeg&amp;amp;quot;},&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7359408791762321412&amp;amp;quot;,&amp;amp;quot;7077027910124568580&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null}}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;6b2cc303-a7c9-48fb-b6fe-c99ff255cf38&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:130,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;XYEjdIVojoZWTLxecC9c0PNLn4f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:131,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:22},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;DBDhdDqNEoPdlLxcRrBcsXqNnQc&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;43e3e141-7009-4ab0-9cd2-8d941d1e2c65&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45359</id>
		<title>Word2Vec</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45359"/>
		<updated>2025-07-05T09:25:25Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Word2Vec''' 是一种将词语（Word）映射为连续向量（Vector）的高效建模技术，由 Google 的 Tomas Mikolov 团队于 2013 年提出&amp;lt;ref&amp;gt;Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[J]. Advances in neural information processing systems, 2013, 26.&amp;lt;/ref&amp;gt;。通过在大规模文本语料中自动学习，Word2Vec 将每个词表示为一个低维、稠密、连续的向量（即词嵌入Word Embedding），这种向量能够捕捉词语之间的语义和句法关系。与传统将词视为离散 ID 的方法（如 N-gram）不同，Word2Vec 将词嵌入到连续空间中，相似意义的词在向量空间中距离更近，为后续复杂模型（如 [[Transformer]]）奠定了基础。&lt;br /&gt;
&lt;br /&gt;
Word2Vec 的底层是一个浅层[[神经网络]]，采用 [[Skip-gram]] 或 [[CBOW]]（Continuous Bag of Words 连续词袋模型）两种架构进行训练。训练后得到的词向量被广泛应用于[[NLP]]（Natural Language Processing 自然语言处理）任务中，包括机器翻译（Machine Translation）、信息检索（Information Retrieval）、文本分类（Text Classification）和[[情感分析]]（Sentiment Analysis）等，成为当前 NLP 领域的重要基础方法之一。&lt;br /&gt;
=='''历史背景'''==&lt;br /&gt;
20 世纪 80 年代，人们开始尝试使用神经网络将单词和概念表示为向量&amp;lt;ref&amp;gt;Hinton G E. Learning distributed representations of concepts[C]//Proceedings of the Annual Meeting of the Cognitive Science Society. 1986, 8.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&amp;lt;/ref&amp;gt;。2010 年，Tomáš Mikolov（当时就读于布尔诺理工大学）与合著者一起将单隐层的简单[[递归]]神经网络应用于[[语言建模]]&amp;lt;ref&amp;gt;Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Interspeech. 2010, 2(3): 1045-1048.&amp;lt;/ref&amp;gt;。Word2vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学（Brno University of Technology）完成了神经网络语言建模的博士研究后，加入了Google，与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作，致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限，Mikolov 团队提出了两种简洁高效的浅层神经网络架构，即CBOW和 Skip-gram，统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标，一经发布便在NLP领域引起了广泛关注和应用。&lt;br /&gt;
&lt;br /&gt;
使用 Word2vec 算法创建的嵌入向量与早期的算法（如使用 n-grams 和潜在语义分析的算法）相比具有一些优势。[[GloVe]] 是斯坦福大学的一个团队专门作为竞争对手开发的，原始论文指出 GloVe 比 Word2vec 有多处改进。Mikolov 认为，这种比较是不公平的，因为 GloVe 是在更多数据上训练出来的，而 [[FastText]] 项目表明，在相同数据上训练出来的 word2vec 更胜一筹。不过截至到现在，'''直接的 Word2vec 方法被认为是 &amp;quot;过时的&amp;quot;'''。基于transformer的模型，如 [[ELMo]] 和 [[BERT]]，在类似 Word2vec 的词嵌入模型之上添加了多个神经网络关注层，已被视为 NLP 领域的最新技术。&lt;br /&gt;
&lt;br /&gt;
== '''技术原理''' ==&lt;br /&gt;
Word2vec 的目的在于为每个词汇都分配一个稠密的向量，能够做到相比传统的稀疏向量（如 [[one-hot 编码]]），更具表达能力和计算效率。形式上也就是，如果词汇表为 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;，每个词 &amp;lt;math&amp;gt;w \in V&amp;lt;/math&amp;gt; 被映射为向量 &amp;lt;math&amp;gt;\mathbf{v}_w \in \mathbb{R}^d&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;d \ll |V|&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示：CBOW或Skip-gram。在这两种架构中，Word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口，这种设计来源于[[词的分布式假设]]，由语言学家 Zellig Harris 在1954年提出。它的核心思想是：“上下文相似的词具有相似的意义”（You shall know a word by the company it keeps）。即如果两个词在相似的上下文中出现，那么它们的意义可能也相似。&lt;br /&gt;
&lt;br /&gt;
CBOW 可被视为一项 &amp;quot;填空 &amp;quot;任务，其中词汇嵌入代表了词汇影响上下文窗口中其他词汇相对概率的方式。语义相似的词应该以相似的方式影响这些概率，因为语义相似的词应该在相似的语境中使用。上下文词语的顺序不会影响预测（词袋假设）。&lt;br /&gt;
&lt;br /&gt;
Skip-gram与CBOW相反，模型使用当前词来预测周围的语境词窗口。与较远的上下文词相比，Skip-gram更重视附近的上下文词。&lt;br /&gt;
&lt;br /&gt;
模型训练完成后，学习到的词向量会被放置在向量空间中，这样，在语料库中具有共同语境的词（即语义和句法上相似的词）就会在空间中彼此靠近。相异程度较高的词在空间中的位置则相距较远。&lt;br /&gt;
&lt;br /&gt;
===模型架构===&lt;br /&gt;
==== CBOW ====&lt;br /&gt;
[[文件:CBOW.png|替代=|缩略图|CBOW 模型的三层结构：输入层、嵌入层和输出层。模型以上下文词为输入，通过嵌入矩阵将其转换为词向量，并对这些向量求平均得到上下文表示,该表示输入到输出层，用于预测中心词。]]&lt;br /&gt;
CBOW是由 Mikolov 等人在 2013 年提出的一种经典的词嵌入模型，是 Word2Vec 的两种核心架构之一。CBOW 通过上下文词汇预测当前词，从而学习词向量。CBOW 的输入是目标词周围的上下文词汇（窗口内的相邻词），输出是对目标词 &amp;lt;math&amp;gt;V_t&amp;lt;/math&amp;gt; 的预测。模型的目标是：'''根据上下文词汇预测中心词'''。设定窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，即在目标词左右各取 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; 个词作为上下文，那么对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。模型的结构分为三层，分别是输入层、嵌入层（Embedding）、输出层。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''&lt;br /&gt;
&lt;br /&gt;
每个上下文词 &amp;lt;math&amp;gt;w_{t+i}&amp;lt;/math&amp;gt; 以 one-hot 向量表示为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{x}_{t+i} \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中 &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; 为词汇表大小。词向量通过嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 得到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{v}_{t+i} = W^\top \mathbf{x}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''嵌入层：'''&lt;br /&gt;
&lt;br /&gt;
对上下文词向量求平均，获得上下文表示向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t = \frac{1}{2c} \sum_{\substack{-c \le i \le c \\ i \ne 0}} \mathbf{v}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
设输出矩阵为 &amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt;，对应词 &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; 的输出得分为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_j = \mathbf{v}'_j \cdot \mathbf{h}_t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对所有词使用 softmax 得到目标词的预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t = j \mid C_t) = \frac{\exp(u_j)}{\sum_{k=1}^{|V|} \exp(u_k)} = \frac{\exp(\mathbf{v}'_j \cdot \mathbf{h}_t)}{\sum_{k=1}^{|V|} \exp(\mathbf{v}'_k \cdot \mathbf{h}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
最大化整个语料的预测对数概率，即最小化负对数似然损失函数（NLL）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid C_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
训练完成后，词向量可以从输入嵌入矩阵 &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; 提取，也可以从输出矩阵 &amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt; 提取，或者对两者进行平均得到最终词向量。&lt;br /&gt;
[[文件:Skipgram.png|缩略图|Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。]]&lt;br /&gt;
&lt;br /&gt;
====Skip-gram 模型====&lt;br /&gt;
Skip-gram 是 Word2Vec 的另一种核心模型，由 Mikolov 等人于 2013 年提出。与 CBOW通过上下文预测中心词不同，Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。同样假设窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''一段文本中心词汇&amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;的one-hot编码作为输入向量 &amp;lt;math&amp;gt;\mathbf{x}_t \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''投影层：'''&lt;br /&gt;
&lt;br /&gt;
输入向量与嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{V \times d}&amp;lt;/math&amp;gt; 相乘，得到词向量 &amp;lt;math&amp;gt;\mathbf{h}&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h} = W^\top \mathbf{v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
对于上下文中每个词 &amp;lt;math&amp;gt;w_{t+j}&amp;lt;/math&amp;gt;（&amp;lt;math&amp;gt;j \in \{-c,\ldots,-1,1,\ldots,c\}&amp;lt;/math&amp;gt;），计算其预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_{t+j} \mid w_t) = \frac{\exp(\mathbf{v}'_{w_{t+j}} \cdot \mathbf{v}_t)}{\sum_{w \in V} \exp(\mathbf{v}'_w \cdot \mathbf{v}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 是输出权重矩阵，&amp;lt;math&amp;gt;\mathbf{v}'_w&amp;lt;/math&amp;gt; 是对应词的输出向量。&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram 通过最大化所有中心词和上下文词对的条件概率来训练模型，损失函数为负对数似然：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L} = - \frac{1}{T} \sum_{t=1}^T \sum_{\substack{-c \le j \le c \\ j \ne 0}} \log P(w_{t+j} \mid w_t)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
在Skip-gram中，词向量即为嵌入层之后所得到的向量，而不同于CBOW，Skip-gram的输出矩阵W'虽然也可以用来作为获得词向量的依据，但是其含义是中心词在上下文中的角色，在学习词汇之间关系的任务中可能使用W'作为词向量会有更好的表现。&lt;br /&gt;
&lt;br /&gt;
相比之下，Skip-gram的效果要优于CBOW，这是因为CBOW在平均了词向量之后丧失了词汇的位置信息，丢失了词汇之间的关联性，因此目前各种工程实现中常用Skip-gram模型。&lt;br /&gt;
&lt;br /&gt;
===训练方法===&lt;br /&gt;
无论是CBOW还是Skip-gram，总是需要遍历整个词表，因此计算代价很大，所以就有了两种近似的计算方法，负采样与层次softmax。这两个是 Word2Vec 中非常重要的训练加速策略，它们用于高效地优化输出词的概率分布。&lt;br /&gt;
&lt;br /&gt;
'''负采样（Negative Sampling）:'''&lt;br /&gt;
&lt;br /&gt;
负采样的核心思想在于将原始问题转换成一个[[二分类问题]]，让模型只区分正样本和负样本，例如在Skip-gram中，对于一个中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 和一个正确的上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt;，正确的上下文词被称为正样本。同时人为给出错误的上下文文本 &amp;lt;math&amp;gt;w'_{o_i}&amp;lt;/math&amp;gt;，也就是负样本。负样本的采样一般按照词频 &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; 的 &amp;lt;math&amp;gt;3/4&amp;lt;/math&amp;gt; 次方作为采样概率，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w'_{o_i}) \propto U(w'_{o_i})^{0.75}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
负采样目的在于最小化负样本与中心词一起出现的概率，同时最大化正样本与中心词一起出现的概率，将softmax替换为sigmoid函数，得到新的损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{Skip-gram} = \log\sigma(\mathbf{v}^\top_{w_o} \mathbf{v}_{w_t}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{v}_{w_t})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; 是sigmoid函数，&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; 为负样本个数。同样，该方法也能应用在CBOW模型中，只是负样本变成了中心词：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{CBOW} = \log\sigma(\mathbf{v}^\top_{w_t} \mathbf{h}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{h})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不过在实际应用中大多数时候使用Skip-gram，因此负采样在CBOW中的应用很少。&lt;br /&gt;
&lt;br /&gt;
'''层次 Softmax（Hierarchical Softmax）:'''&lt;br /&gt;
&lt;br /&gt;
层次softmax的核心思路是根据词汇的词频构建一个霍夫曼树，每个叶节点代表一个词汇，而预测一个词汇就是沿着树走的一条路径，对应的也就是一个不断重复的二分类问题，因此每个目标词汇 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 都会被编码为一串二进制编码：&lt;br /&gt;
&amp;lt;math&amp;gt;code(w_t)=(b_1, b_2, \ldots, b_L), b_i \in {0,1}&amp;lt;/math&amp;gt;&lt;br /&gt;
而这条路径上的非叶子节点被记为 &amp;lt;math&amp;gt;n_1, n_2, \ldots, n_L&amp;lt;/math&amp;gt;。因此，在Skip-gram中，给定中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;  与上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt; 之后，上下文词的条件概率就变成了：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(w_o \mid w_t) = \prod_{i=1}^L(w_o) \sigma (|1-b_i|\mathbf{v}_{n_i}^\top\mathbf{v}_{w_t})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\mathbf{v}_{n_i}&amp;lt;/math&amp;gt;是路径节点的向量，相当于原始输出矩阵&amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt;。损失函数为最大化词对的出现概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \sum_{(w_t, w_o) \in D} \log P(w_o \mid w_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样，层次softmax也可以应用于CBOW中，条件概率中的目标词词向量更换为了上下文词汇的平均词向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t \mid \text{context}) = \prod_{i=1}^{L(w_t)} \sigma\left( [1 - b_i(w_t)] \cdot \mathbf{v}_{n_i}^\top \mathbf{h} \right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此也能够得到对应的损失函数。&lt;br /&gt;
&lt;br /&gt;
=='''应用领域'''==&lt;br /&gt;
&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
Word2Vec 是现代 NLP 系统中最早成功实现无监督预训练嵌入层的技术之一，它能够将文本中的词汇转换为稠密的向量表示，并保留语义与句法信息，为各种语言理解与生成任务提供了统一的向量空间支持。&lt;br /&gt;
&lt;br /&gt;
==== 语义分析 ====&lt;br /&gt;
在语义分析方面，Word2Vec 能够通过词向量之间的相对距离和方向关系建模词义相似度与句法结构。例如，在词义消歧任务中，如果句子中出现了歧义词“bank”，模型可以利用其与上下文词（如“money”或“river”）之间的向量相似性，推断其在当前语境中是“银行”还是“河岸”。情感分析也是 Word2Vec 的典型应用场景之一，通过聚类“好”、“棒”、“糟糕”、“失望”等情感色彩明显的词向量，构建带情感权重的表示，再结合分类器（如 SVM）进行句子级或文档级的情绪判定。例如，企业可使用该方法自动识别客户评论的正负面态度。在主题建模任务中，研究者常利用 Word2Vec 学习到的语义向量进行 K-means 等聚类操作，从而发掘出语料中隐含的语义主题，如科技类文本中自动聚类出“人工智能”、“量子计算”、“大数据”等主题簇。&lt;br /&gt;
&lt;br /&gt;
==== 机器翻译 ====&lt;br /&gt;
在机器翻译任务中，Word2Vec 可用于词对齐与语义映射的预处理阶段。通过训练源语言与目标语言的词向量模型，并将其映射到共享向量空间，可以自动对齐如“hello”与“hola”，“school”与“école”这类语义对等词汇，这种方法在无监督机器翻译中尤其常见。此外，在基于神经网络的机器翻译系统（如 Seq2Seq 或 Transformer 模型）中，Word2Vec 也被用于初始化嵌入层权重，相比随机初始化可显著加速模型收敛，提高 BLEU 翻译质量得分。谷歌早期的 NMT 系统就曾在多语种语料上使用跨语言词向量来实现语言无关的嵌入表示，有效支持了低资源语言的翻译。&lt;br /&gt;
&lt;br /&gt;
==== 文本分类 ====&lt;br /&gt;
在文本分类任务中，Word2Vec 同样具有广泛用途。以新闻分类为例，不同主题（如“财经”、“体育”、“国际”）的新闻中出现的关键词往往语义聚集，通过 Word2Vec 向量聚合形成文本表示，再输入分类器（如 CNN、Transformer）进行训练，可高效地区分不同类别的文本。在垃圾邮件识别中，模型可捕捉如“中奖”、“优惠”、“请点击”等词汇的特征并识别其潜在风险。在法律文书分类中，词向量可帮助模型辨别“判决书”、“调解书”、“起诉状”等不同法律文体的词汇特征，从而自动进行文档归档。通常做法是在句子级别对每个词向量进行平均或加权平均操作，构建文档向量，再送入模型进行判别。以 IMDb 电影评论为例，研究人员常使用 Word2Vec 初始化嵌入表示，再结合情感标注数据进行二分类训练，用于判断用户评价是正面还是负面。&lt;br /&gt;
&lt;br /&gt;
总体来看，Word2Vec 在 NLP 中的主要价值在于：提供一种轻量、高效且能迁移的通用词语表示形式，极大地降低了特征工程的门槛，为机器学习和深度学习模型提供了统一的输入基础。&lt;br /&gt;
&lt;br /&gt;
=== 推荐系统 ===&lt;br /&gt;
虽然 Word2Vec 最初是为处理语言建模任务而设计，但其核心思想——“在上下文中共现的词语往往意义相关”——可以被自然迁移到非语言领域，特别是推荐系统中。推荐系统中的“用户行为序列”与 NLP 中的“句子”结构高度相似，而“商品、视频、音乐等内容”则可类比为“词”。基于这种结构对应关系，Word2Vec 成为建模用户偏好和内容相似性的强大工具。&lt;br /&gt;
&lt;br /&gt;
在实践中，推荐系统会将用户的历史点击序列、购物行为或播放列表视作时间序列数据，将其中每一个物品（如商品ID、音乐ID）作为一个“词”输入 Word2Vec 模型进行训练。采用 Skip-gram 结构后，模型试图预测某个物品的上下文物品（即前后点击或购买的内容），从而学习出反映行为模式的向量表示。&lt;br /&gt;
&lt;br /&gt;
训练完成后，Word2Vec 模型输出的嵌入向量可以直接用于推荐。最常见的方式是通过计算当前浏览/购买商品与其他商品之间的向量相似度（通常为余弦相似度），从而生成相似商品推荐（Item-to-Item 推荐）。此外，还可以将一个用户所有历史行为的物品向量进行平均，得到用户的兴趣画像向量，用于个性化推荐排序。&lt;br /&gt;
&lt;br /&gt;
这一思想已经在多个主流平台落地并取得了良好效果。例如：&lt;br /&gt;
&lt;br /&gt;
* 淘宝、京东等电商平台使用商品序列训练 Word2Vec，构建“商品—商品”图谱，用于猜你喜欢、搭配购、商品联想等场景。比如用户在浏览“运动鞋”页面后，系统会推荐“运动袜”、“运动手表”等与其行为序列中相邻频繁出现的物品。&lt;br /&gt;
&lt;br /&gt;
* 美团和大众点评等本地生活平台，通过用户在一定时间段内访问的商家序列（如早餐店、便利店、药店），构建“地点向量”或“服务向量”，支持基于用户轨迹的本地商家推荐，如“去过 A 的人，也常去 B”。&lt;br /&gt;
&lt;br /&gt;
=== 信息检索 ===&lt;br /&gt;
在传统信息检索系统中，搜索结果的相关性通常依赖于关键词的精确匹配，例如布尔检索、TF-IDF 或 BM25 等基于词频的模型。这些方法尽管在速度和工程实现上具备优势，但在语义层面存在严重缺陷：一旦查询词与文档中的词不完全一致，即便它们在意义上高度相关，也可能无法匹配。这就导致了检索召回率不足或排序不准确的问题。Word2Vec 所提供的分布式表示弥补了这一不足，它将语义上相近的词投射到向量空间中的相邻位置，从而支持更灵活、更具语义关联性的检索策略。&lt;br /&gt;
&lt;br /&gt;
==== 查询扩展（Query Expansion） ====&lt;br /&gt;
例如，当用户输入关键词“肺炎”时，系统可以在训练好的词向量模型中自动找出与其相似的词，如“呼吸道感染”、“发烧”、“流感”等，并将这些词加入查询词集合中，从而扩大搜索范围，提高语义召回能力。此类机制在医学检索、法律文献检索中尤为重要，因为术语表达方式多变，而查询词往往较为简单。&lt;br /&gt;
&lt;br /&gt;
==== 文档排序 ====&lt;br /&gt;
在文档排序任务中，系统可将查询和文档中词嵌入后计算语义相关性得分，辅助判断哪些文档更符合用户意图，用于替代传统的基于词频的打分方式。此外，Word2Vec 在短文本理解中也非常有效，常用于搜索建议、问答匹配、智能补全等场景，尤其适合处理查询词稀疏、语义模糊的用户输入。&lt;br /&gt;
&lt;br /&gt;
==== 短文本理解 ====&lt;br /&gt;
此外，短文本理解任务中 Word2Vec 的作用也尤为显著。在搜索建议、智能补全、FAQ 匹配等场景中，用户输入往往是极短的词组甚至单词，这使得传统稀疏表示方法效果极差。而 Word2Vec 可通过词向量的上下文信息推断潜在语义，提升理解准确度。例如，在输入“退货”时系统可联想到“退款”、“售后”、“客服”等相关查询，从而实现更贴近用户意图的补全建议。&lt;br /&gt;
&lt;br /&gt;
=== 其他领域 ===&lt;br /&gt;
Word2Vec 的通用表示能力使其在多个非语言学领域也展现出强大的迁移价值。通过将非语言数据结构化为“序列”或“上下文”形式，Word2Vec 能够学习出反映实体关系的向量表示，从而广泛应用于生物信息学、社会科学及专业技术领域。&lt;br /&gt;
&lt;br /&gt;
==== 生物信息学 ====&lt;br /&gt;
在生物信息学中，研究者将蛋白质或 DNA 序列中的氨基酸、核苷酸片段视为“词”，构建“生物语言”。通过训练 Word2Vec 模型，可以学习到功能相关序列的向量表示，应用于蛋白质功能预测、疾病相关区域识别等任务。例如，某些氨基酸片段在多个蛋白质中共现频繁，模型会自动捕捉它们的潜在生物学意义。此外，Word2Vec 也被用于药物发现场景，辅助建模药物与靶点间的语义联系。&lt;br /&gt;
&lt;br /&gt;
==== 社会科学 ====&lt;br /&gt;
在社会科学中，Word2Vec 被用于探测语言中的刻板印象和社会偏见。通过分析词向量之间的距离，如“nurse”更接近“she”，“doctor”更接近“he”，可揭示潜在的性别偏见结构。同时，研究人员也使用时间序列语料构建跨年代词向量，研究词义随时代的语义漂移，如“liberal”、“gender”等词在不同时期的语义演变路径。&lt;br /&gt;
&lt;br /&gt;
==== 法律、金融、医疗等垂直领域 ====&lt;br /&gt;
在法律、金融、医疗等垂直领域，Word2Vec 有助于理解专业术语之间的语义关系。在法律文本分析中，模型可用于预测文书之间的相似度，辅助法官判例归类与类案推荐；在金融领域，Word2Vec 被用于情绪识别系统中，帮助模型理解公告、舆情或分析报告中的潜在语义态度；在医疗信息处理中，词向量支持将病症、药品与治疗手段建模为统一向量空间，用于构建医学知识图谱或提升电子病历挖掘效率。&lt;br /&gt;
&lt;br /&gt;
=='''优缺点'''==&lt;br /&gt;
&lt;br /&gt;
===优点===&lt;br /&gt;
[[文件:Word2vec fig1.png|替代=|缩略图|Word2Vec 学习到的词向量空间中的分布关系。可以看到，语义相似的词（如 “man” 与 “woman”，“king” 与 “queen”）在二维向量空间中彼此距离较近，体现了模型在词语表示上的语义聚类能力。]]&lt;br /&gt;
'''捕捉语义和语法关系：'''&lt;br /&gt;
&lt;br /&gt;
通过上下文预测（Skip-gram/CBOW），可学习到单词的分布式表示，相似语义或语法角色的词在向量空间中距离相近。&lt;br /&gt;
&lt;br /&gt;
支持线性类比关系（如“国王 - 男 + 女 ≈ 女王”）。&lt;br /&gt;
&lt;br /&gt;
'''适用于大规模数据：'''&lt;br /&gt;
&lt;br /&gt;
可高效训练数十亿级别的语料，内存消耗相对较低。&lt;br /&gt;
&lt;br /&gt;
'''通用性强：'''&lt;br /&gt;
&lt;br /&gt;
词向量可作为下游任务（如文本分类、机器翻译）的特征输入，提升模型性能。&lt;br /&gt;
&lt;br /&gt;
===局限性===&lt;br /&gt;
'''无法处理多义词（Polysemy）：'''&lt;br /&gt;
&lt;br /&gt;
每个词仅对应单一向量，无法区分不同上下文中的多义性（如“苹果”指水果或公司）。&lt;br /&gt;
&lt;br /&gt;
'''依赖局部上下文：'''&lt;br /&gt;
&lt;br /&gt;
仅基于窗口内的局部共现信息，忽略文档级或语料级的全局统计特征（如GloVe的优势）。&lt;br /&gt;
&lt;br /&gt;
'''需要大量训练数据：'''&lt;br /&gt;
&lt;br /&gt;
小规模语料下生成的词向量质量较差，难以捕捉低频词语义。&lt;br /&gt;
&lt;br /&gt;
'''静态词向量（Static Embeddings）：'''&lt;br /&gt;
&lt;br /&gt;
词向量在训练后固定，无法动态适应不同上下文（后续模型如ELMo、BERT解决了这一问题）。&lt;br /&gt;
&lt;br /&gt;
'''窗口大小敏感：'''&lt;br /&gt;
&lt;br /&gt;
表现受上下文窗口大小影响，过大或过小均可能导致语义捕捉不充分。&lt;br /&gt;
&lt;br /&gt;
'''未考虑词序信息：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram和CBOW模型忽略窗口内词的顺序关系（后续改进如Seq2Vec或Transformer可解决）。&lt;br /&gt;
&lt;br /&gt;
=='''相关技术与扩展'''==&lt;br /&gt;
&lt;br /&gt;
===GloVe（Global Vectors for Word Representation）===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出，旨在结合传统基于计数的模型（如 LSA）和 Word2Vec 的优势，提出一种高效的全局词向量训练方法。&lt;br /&gt;
&lt;br /&gt;
====技术原理====&lt;br /&gt;
GloVe 是一种基于全局共现信息来学习词向量的方法&amp;lt;ref&amp;gt;Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.&amp;lt;/ref&amp;gt;，与 Word2Vec 不同，它不依赖上下文窗口中的预测任务，而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。&lt;br /&gt;
&lt;br /&gt;
GloVe 的设计灵感来自以下关键观察：词语的语义关系可以通过它们与其他词共现的比例来表达，而不是仅通过是否共现或是否邻近。例如，“ice” 和 “steam” 都与 “water” 有很强的共现关系，但 “ice” 更倾向与 “cold” 共现，而 “steam” 更倾向与 “hot” 共现。GloVe 试图让词向量之间的差异或比例能反映出这种语义关系。&lt;br /&gt;
&lt;br /&gt;
在训练之前，GloVe 首先对整个语料库构建一个 共现矩阵&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
* 每个元素 &amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt; 表示词&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;在词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 的上下文窗口中出现的次数；&lt;br /&gt;
&lt;br /&gt;
* 矩阵是稀疏且高维的，规模为 &amp;lt;math&amp;gt;V \times V&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; 是词汇表大小。&lt;br /&gt;
&lt;br /&gt;
GloVe 的一个重要设计理念是：两个词之间的语义关系可由它们对其他词的共现比值刻画。对于一个目标词 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;'''，考虑两个上下文词 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 和 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，如果 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;''' 与 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 的共现频率远高于与 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，则两者在语义上的关联也会不同。&lt;br /&gt;
&lt;br /&gt;
定义贡献概率为：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;P_{ik} = \frac{X_{ik}}{\sum_{k'} X_{ik'}}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
GloVe 期望通过学习得到的词向量 '''&amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt;'''，能使词之间的向量关系满足下列公式形式：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;F(\mathbf{w}_i, \tilde{\mathbf{w}}_j, X_{ij}) = \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j \approx \log X_{ij}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
即目标是让词向量的点积加上偏置项逼近共现频率的对数值，而不是原始频数，后者变化范围太大。&lt;br /&gt;
&lt;br /&gt;
为了实现上述目标，GloVe 构建了以下加权平方误差损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;J = \sum_{i,j=1}^{V} f(X_{ij}) \cdot \left( \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij} \right)^2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt;: 词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 和 &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; 的共现次数；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{w}_i&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;\tilde{\mathbf{w}}_j&amp;lt;/math&amp;gt; : 词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;：权重函数（防止高频词主导优化）；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;{b}_j&amp;lt;/math&amp;gt;：偏置项。&lt;br /&gt;
&lt;br /&gt;
这个函数可以防止高频词主导模型训练，也避免了低频词对整体模型质量的影响。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* Word2Vec 是基于预测任务（局部上下文窗口），而 GloVe 是基于矩阵分解（全局共现频率）；&lt;br /&gt;
&lt;br /&gt;
* 相比传统 LSA（SVD），GloVe 使用非线性权重函数，训练时不需要全局矩阵分解，更高效；&lt;br /&gt;
&lt;br /&gt;
* GloVe适合全局语义关系建模，尤其在大规模语料训练中表现优异；&lt;br /&gt;
&lt;br /&gt;
* GloVe支持线性类比关系，类似 Word2Vec（如“king - man + woman ≈ queen”）&lt;br /&gt;
&lt;br /&gt;
=== FastText ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出&amp;lt;ref&amp;gt;Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.&amp;lt;/ref&amp;gt;，旨在解决 Word2Vec 模型在处理罕见词、词形变化（如复数、时态）等方面的能力不足。其核心理念是在训练过程中引入子词信息，以增强词向量对形态的建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
FastText 的核心思想是：将词视为子词（subword）n-gram 的组合体，而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词（OOV）的表示能力。&lt;br /&gt;
&lt;br /&gt;
'''子词建模（Subword Embedding）：'''&lt;br /&gt;
&lt;br /&gt;
每个单词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 被划分为若干个字符 n-gram，例如设置 n = 3~6 时：&lt;br /&gt;
&lt;br /&gt;
对于词 “where”，首先在其两端添加边界符号（如 &amp;lt; 和 &amp;gt;），构成：&amp;lt;where&amp;gt;，然后提取字符 n-gram 得到： &amp;lt;wh, whe, her, ere, re&amp;gt;，包括完整词本身 &amp;quot;where&amp;quot;，最终表示为一个 n-gram 集合 &amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
词向量的表示为其所有 n-gram 向量的平均或和：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_w = \sum_{g \in G} w_g z_g&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z_g&amp;lt;/math&amp;gt;​ 是 n-gram &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; 的嵌入向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;​ 是词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 的所有子词集合。&lt;br /&gt;
&lt;br /&gt;
这种表示方式让模型在遇到未登录词时，也可以通过其组成子词获取合理向量。&lt;br /&gt;
&lt;br /&gt;
'''模型结构与训练：'''&lt;br /&gt;
&lt;br /&gt;
FastText 延续了 Word2Vec 的 Skip-gram 架构，但输入词不再是 one-hot 编码的词本身，而是其所有 n-gram 的组合。训练目标为：给定中心词（子词组合向量），预测其上下文词。即最大化如下目标函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{Skip-gram}} = \sum_{(w_t, w_o) \in D} \left[ \log \sigma\left( \mathbf{v}_{w_o}^\top \mathbf{v}_{w_t} \right) + \sum_{i=1}^{k} \mathbb{E}_{w_i' \sim P_n(w)} \log \sigma\left( -\mathbf{v}_{w_i'}^\top \mathbf{v}_{w_t} \right) \right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 是由子词构成的中心词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{wo}&amp;lt;/math&amp;gt;​​ 是上下文词向量；&lt;br /&gt;
&lt;br /&gt;
负采样 &amp;lt;math&amp;gt;P_n(w)&amp;lt;/math&amp;gt; 用于高效近似 softmax。&lt;br /&gt;
&lt;br /&gt;
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示，以提升整体语义建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* FastText 通过引入 n-gram，有效表示未登录词与形态变化词；&lt;br /&gt;
&lt;br /&gt;
* FastText 面向多语言与拼写多样化语言（如芬兰语、德语）效果显著优于 Word2Vec；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec 只能对词表中出现过的词进行建模，FastText 可泛化到未出现的新词，具备更强的鲁棒性与泛化能力；&lt;br /&gt;
&lt;br /&gt;
* GloVe 基于全局共现信息构建稠密表示，适合静态建模，FastText 基于局部上下文与子词结构，适合细粒度语义与动态扩展；&lt;br /&gt;
&lt;br /&gt;
* FastText 在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用。&lt;br /&gt;
&lt;br /&gt;
=== BERT 模型 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型&amp;lt;ref&amp;gt;Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[C]//Proceedings of the 2019 conference of the North American chapter of the association for computational linguistics: human language technologies, volume 1 (long and short papers). 2019: 4171-4186.&amp;lt;/ref&amp;gt;，发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务，并通过大规模语料上的预训练 + 微调机制，在多个自然语言处理任务上取得了 SOTA（state-of-the-art）成绩。&lt;br /&gt;
&lt;br /&gt;
BERT 的设计动机是解决传统语言模型（如 Word2Vec、GloVe）在上下文建模、语义歧义处理和句子级理解方面的不足，特别是在建模“一个词在不同上下文中含义不同”这一关键问题。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理====&lt;br /&gt;
'''基础架构：'''&lt;br /&gt;
&lt;br /&gt;
BERT 构建在 Transformer 架构之上，具体使用了 多层 Transformer 编码器堆叠（通常 BERT-base 为 12 层，BERT-large 为 24 层）。Transformer 由 Vaswani 等人在 2017 年提出，其最大特点是 完全基于注意力机制（Self-Attention），无需使用 RNN 或 CNN，可并行处理任意长度的输入。&lt;br /&gt;
&lt;br /&gt;
每层包含：&lt;br /&gt;
&lt;br /&gt;
多头自注意力机制（Multi-Head Self-Attention）；&lt;br /&gt;
&lt;br /&gt;
前馈神经网络（Feed-Forward Layer）；&lt;br /&gt;
&lt;br /&gt;
残差连接 + 层归一化。&lt;br /&gt;
&lt;br /&gt;
Transformer 中每个词的表示会综合考虑所有其他词对它的影响，因此能捕捉复杂的依赖结构。&lt;br /&gt;
&lt;br /&gt;
'''输入方式表示：'''&lt;br /&gt;
&lt;br /&gt;
BERT 的输入不只是单词序列，而是词 + 位置 + 句子类型三重嵌入之和：Input Embedding = Token Embedding + Position Embedding + Segment Embedding&lt;br /&gt;
&lt;br /&gt;
例如用于句子对任务（如问答）时，Segment A 表示第一句话，Segment B 表示第二句话。输入序列结构为：[CLS] 句子A [SEP] 句子B [SEP]，其中[CLS] 用于分类任务的特殊标记；[SEP] 是句子分隔符。&lt;br /&gt;
&lt;br /&gt;
'''预训练阶段：'''&lt;br /&gt;
&lt;br /&gt;
BERT 采用两种 自监督学习任务在大规模语料（如 Wikipedia 和 BooksCorpus）上进行训练：&lt;br /&gt;
&lt;br /&gt;
（1）Masked Language Model（MLM）：随机遮蔽输入序列中约 15% 的词，模型需预测被 []MASK 替换的词是什么，本质上是一个多分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{MLM}} = - \sum_{i \in M} \log P(w_i \mid x_{\text{masked}})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
（2）Next Sentence Prediction（NSP）：输入两个句子 A 和 B，任务是判断 B 是否是 A 的真实下一句，是一个二分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{NSP}} = -\log P(\text{IsNext} \mid A, B)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''微调阶段：'''&lt;br /&gt;
&lt;br /&gt;
在预训练后，BERT 可被快速迁移到下游任务，如：文本分类（情感分析）、序列标注（命名实体识别）、问答系统，只需在最后加上一层简单的任务特定结构，并用少量数据进行微调即可。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* BERT 同时利用左上下文与右上下文，解决传统语言模型单向建模的局限；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理多义词与上下文依赖，如同一个词在不同句子中的不同含义；&lt;br /&gt;
&lt;br /&gt;
* BERT 采用Transformer 架构支持全局依赖建模，相比 RNN 更并行高效；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理分类、标注、问答等多类任务，具备高度迁移能力；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec/GloVe 生成的是固定词向量、语境无关，BERT 输出的是上下文相关的词表示，能捕捉复杂句法语义关系。&lt;br /&gt;
&lt;br /&gt;
=== 动态词嵌入（ ELMo） ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
ELMo（'''Embeddings from Language Models'''）是由 Allen Institute for AI（AI2）的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法&amp;lt;ref&amp;gt;PETERS M E, NEUMANN M, IYER M, et al. Deep contextualized word representations[J/OL]. arXiv, 2018: 1802.05365 [2023-12-01]. &amp;lt;nowiki&amp;gt;https://arxiv.org/abs/1802.05365&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型，突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象（如 &amp;quot;bank&amp;quot; 表示“银行”或“河岸”），传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型（BiLM）捕捉词的上下文依赖关系，为每个词生成可变的、语境敏感的表示。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
ELMo 基于传统语言模型（Language Model, LM），但引入了以下三个关键技术点：&lt;br /&gt;
&lt;br /&gt;
'''双向语言模型（BiLM）：'''&lt;br /&gt;
&lt;br /&gt;
一个正向语言模型（从左到右）：&amp;lt;math&amp;gt;P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个反向语言模型（从右到左）：&amp;lt;math&amp;gt;P(w_T, \ldots, w_1) = \prod_{t=1}^{T} P(w_t \mid w_{t+1}, \ldots, w_T)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这两个模型均使用深层 LSTM（Long Short-Term Memory） 网络进行建模，层数通常为两层。&lt;br /&gt;
&lt;br /&gt;
'''多层表示聚合机制：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量，而是将所有层的隐状态按照加权方式聚合，从而获得更加丰富的语义特征。&lt;br /&gt;
&lt;br /&gt;
每个词的 ELMo 表示由以下公式给出：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{ELMo}(w_t) = \gamma \sum_{j=0}^{L} s_j \cdot \mathbf{h}_t^{(j)}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t^{(j)}&lt;br /&gt;
&amp;lt;/math&amp;gt; 表示第 &amp;lt;math&amp;gt;j&lt;br /&gt;
&amp;lt;/math&amp;gt; 层对词 &amp;lt;math&amp;gt;w_t&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 的隐状态，是前向和后向语言模型的连接结果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 是第&amp;lt;math&amp;gt;j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;层的可学习权重，表示该层对最终表示的贡献程度；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt; 是可学习缩放因子，控制整体表示的幅度。&lt;br /&gt;
&lt;br /&gt;
'''训练与迁移使用：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 先在大规模语料上训练语言模型（如 1 Billion Word Benchmark），然后将训练好的表示迁移到下游任务中，并在下游任务中联合微调（fine-tune）其权重&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt;。这种机制大幅提高了模型对语境、词义变化的感知能力，适用于情感分类（Sentiment Analysis）、问答系统（QA）和自然语言推理（NLI）。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入；&lt;br /&gt;
&lt;br /&gt;
* ELMo 同时考虑前文与后文，有效捕捉语言结构与语义；&lt;br /&gt;
&lt;br /&gt;
* 与 Word2Vec/GloVe相比，ELMo 输出的词向量会随句子变化，是“动态词向量”；&lt;br /&gt;
&lt;br /&gt;
* 与 BERT 相比，ELMo 使用 LSTM 架构，计算成本相对较低，更适合中小规模任务。&lt;br /&gt;
&lt;br /&gt;
=='''开源实现与工具'''==&lt;br /&gt;
Word2Vec 自 2013 年由 Google 发布以来，被广泛应用于自然语言处理任务。除了原始的 C 语言实现，目前已有多个高效的开源工具和库支持 Word2Vec 的训练与使用。&lt;br /&gt;
&lt;br /&gt;
=== Gensim 库 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python&lt;br /&gt;
* 功能：&lt;br /&gt;
** 支持 CBOW 和 Skip-gram 两种训练模式。&lt;br /&gt;
** 提供 负采样（Negative Sampling） 和 层次 Softmax（Hierarchical Softmax） 加速训练。&lt;br /&gt;
** 可调整参数：窗口大小、词向量维度、最小词频、训练轮次（epochs）等。&lt;br /&gt;
** 支持模型保存为 &amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;（二进制）或 &amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;（纯文本）格式，兼容其他 NLP 工具（如 FastText、GloVe）。&lt;br /&gt;
** 提供 增量训练（继续训练已有模型）和 词汇表更新 功能。&lt;br /&gt;
&lt;br /&gt;
示例代码：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from gensim.models import Word2Vec&lt;br /&gt;
from gensim.models.word2vec import LineSentence  # 用于流式读取大文件&lt;br /&gt;
&lt;br /&gt;
# 示例1：基础训练（列表输入）&lt;br /&gt;
sentences = [&lt;br /&gt;
    [&amp;quot;自然&amp;quot;, &amp;quot;语言&amp;quot;, &amp;quot;处理&amp;quot;, &amp;quot;很&amp;quot;, &amp;quot;有趣&amp;quot;],&lt;br /&gt;
    [&amp;quot;深度学习&amp;quot;, &amp;quot;改变&amp;quot;, &amp;quot;了&amp;quot;, &amp;quot;NLP&amp;quot;],&lt;br /&gt;
    [&amp;quot;Word2Vec&amp;quot;, &amp;quot;是&amp;quot;, &amp;quot;经典&amp;quot;, &amp;quot;算法&amp;quot;]&lt;br /&gt;
]&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=sentences,&lt;br /&gt;
    vector_size=300,       # 词向量维度&lt;br /&gt;
    window=5,             # 上下文窗口&lt;br /&gt;
    min_count=1,          # 最小词频&lt;br /&gt;
    workers=4,            # 并行线程数&lt;br /&gt;
    sg=1,                 # 1=Skip-gram, 0=CBOW&lt;br /&gt;
    hs=0,                 # 0=负采样, 1=层次Softmax&lt;br /&gt;
    negative=5,           # 负采样数&lt;br /&gt;
    epochs=10             # 训练轮次&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 示例2：大文件训练（流式读取）&lt;br /&gt;
corpus_path = &amp;quot;corpus.txt&amp;quot;  # 每行一个句子，词语用空格分隔&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=LineSentence(corpus_path),  # 自动按行流式读取&lt;br /&gt;
    vector_size=300,&lt;br /&gt;
    window=5,&lt;br /&gt;
    min_count=5,        # 过滤低频词&lt;br /&gt;
    workers=8&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 模型使用&lt;br /&gt;
print(model.wv[&amp;quot;自然&amp;quot;])          # 获取词向量&lt;br /&gt;
print(model.wv.most_similar(&amp;quot;NLP&amp;quot;, topn=3))  # 相似词查询&lt;br /&gt;
&lt;br /&gt;
# 模型保存与加载&lt;br /&gt;
model.save(&amp;quot;word2vec.model&amp;quot;)          # 二进制格式&lt;br /&gt;
model.wv.save_word2vec_format(&amp;quot;vectors.bin&amp;quot;, binary=True)  # 兼容原始格式&lt;br /&gt;
loaded_model = Word2Vec.load(&amp;quot;word2vec.model&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 快速实验 Word2Vec 模型，适用于中小规模语料（百万级词汇）。&lt;br /&gt;
* 需要与其他 Python NLP 工具（如 spaCy、NLTK）集成时。&lt;br /&gt;
&lt;br /&gt;
=== TensorFlow / PyTorch 实现 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python（基于 TensorFlow/PyTorch 框架）&lt;br /&gt;
* 功能：&lt;br /&gt;
** 提供更灵活的模型自定义能力（如修改损失函数、调整网络结构）。&lt;br /&gt;
** 支持 GPU 加速训练，适合大规模语料（十亿级词汇）。&lt;br /&gt;
** 可与其他深度学习模型（如 LSTM、Transformer）结合使用。&lt;br /&gt;
&lt;br /&gt;
TensorFlow 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 示例：Skip-gram负采样实现&lt;br /&gt;
vocab_size = 10000&lt;br /&gt;
embedding_dim = 300&lt;br /&gt;
num_ns = 5    # 负采样数&lt;br /&gt;
&lt;br /&gt;
# 自定义Word2Vec模型&lt;br /&gt;
class Word2Vec(tf.keras.Model):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        self.target_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=1)&lt;br /&gt;
        self.context_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=num_ns+1)&lt;br /&gt;
        &lt;br /&gt;
    def call(self, pair):&lt;br /&gt;
        target, context = pair&lt;br /&gt;
        # target shape: (batch, 1)&lt;br /&gt;
        # context shape: (batch, 1+num_ns)&lt;br /&gt;
        word_emb = self.target_embedding(target)       # (batch, 1, dim)&lt;br /&gt;
        context_emb = self.context_embedding(context)  # (batch, 1+num_ns, dim)&lt;br /&gt;
        return tf.matmul(word_emb, context_emb, transpose_b=True)&lt;br /&gt;
&lt;br /&gt;
# 数据准备（假设已预处理）&lt;br /&gt;
target_words = np.random.randint(0, vocab_size, (1000, 1))&lt;br /&gt;
context_words = np.random.randint(0, vocab_size, (1000, 6))  # 1正样本+5负样本&lt;br /&gt;
&lt;br /&gt;
# 编译训练&lt;br /&gt;
model = Word2Vec()&lt;br /&gt;
model.compile(optimizer='adam', loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))&lt;br /&gt;
model.fit(x=(target_words, context_words), epochs=5)&lt;br /&gt;
&lt;br /&gt;
# 获取词向量&lt;br /&gt;
embedding_layer = model.get_layer('target_embedding')&lt;br /&gt;
word_vectors = embedding_layer.get_weights()[0]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;PyTorch 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torch.nn as nn&lt;br /&gt;
# 自定义 Word2Vec 模型（CBOW）&lt;br /&gt;
class Word2Vec(nn.Module):&lt;br /&gt;
    def __init__(self, vocab_size, embedding_dim):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        # 中心词和上下文词共享同一个嵌入矩阵&lt;br /&gt;
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
    def forward(self, target, context):&lt;br /&gt;
        # target shape: (batch_size,)&lt;br /&gt;
        # context shape: (batch_size,)&lt;br /&gt;
        target_emb = self.embeddings(target)  # (batch_size, embedding_dim)&lt;br /&gt;
        context_emb = self.embeddings(context) # (batch_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
        # 计算点积得分（Skip-gram目标）&lt;br /&gt;
        scores = torch.sum(target_emb * context_emb, dim=1)  # (batch_size,)&lt;br /&gt;
        return scores&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要与深度学习模型联合训练（如文本分类+词向量微调）。&lt;br /&gt;
* 研究场景，需自定义 Word2Vec 的变体（如结合注意力机制）。&lt;br /&gt;
&lt;br /&gt;
=== C 语言实现 ===&lt;br /&gt;
&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：C&lt;br /&gt;
* 功能：&lt;br /&gt;
** Google 官方发布的原始实现，效率极高（适合超大规模语料）。&lt;br /&gt;
** 仅支持基本的 Skip-gram 和 CBOW，无负采样或层次 Softmax 优化。&lt;br /&gt;
** 输出格式为二进制（&amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;）或文本（&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;）词向量。&lt;br /&gt;
&lt;br /&gt;
使用方法：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 从源码编译（需要gcc）&lt;br /&gt;
git clone https://github.com/tmikolov/word2vec&lt;br /&gt;
cd word2vec&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
# 训练命令详解&lt;br /&gt;
./word2vec -train corpus.txt \    # 输入文件（每行一个句子）&lt;br /&gt;
           -output vectors.bin \  # 输出词向量&lt;br /&gt;
           -size 300 \            # 向量维度&lt;br /&gt;
           -window 5 \            # 窗口大小&lt;br /&gt;
           -sample 1e-5 \         # 高频词降采样阈值&lt;br /&gt;
           -negative 5 \          # 负采样数&lt;br /&gt;
           -hs 0 \                # 禁用层次Softmax&lt;br /&gt;
           -threads 16 \          # 线程数&lt;br /&gt;
           -binary 1 \            # 二进制输出&lt;br /&gt;
           -iter 10               # 训练轮次&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要最高训练效率（如 Wikipedia 或 Common Crawl 级别语料）。&lt;br /&gt;
* 对模型定制需求低，仅需基础词向量生成。&lt;br /&gt;
&lt;br /&gt;
=='''参考文献'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;此词条由苏一铭、杨锦浩编写。&lt;br /&gt;
&lt;br /&gt;
'''本词条内容源自wikipedia及公开资料，遵守 CC3.0协议。'''&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45355</id>
		<title>Word2Vec</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45355"/>
		<updated>2025-07-05T06:52:50Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 优缺点 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Word2Vec''' 是一种将词语（Word）映射为连续向量（Vector）的高效建模技术，由 Google 的 Tomas Mikolov 团队于 2013 年提出&amp;lt;ref&amp;gt;Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[J]. Advances in neural information processing systems, 2013, 26.&amp;lt;/ref&amp;gt;。通过在大规模文本语料中自动学习，Word2Vec 将每个词表示为一个低维、稠密、连续的向量（即词嵌入Word Embedding），这种向量能够捕捉词语之间的语义和句法关系。与传统将词视为离散 ID 的方法（如 N-gram）不同，Word2Vec 将词嵌入到连续空间中，相似意义的词在向量空间中距离更近，为后续复杂模型（如 [[Transformer]]）奠定了基础。&lt;br /&gt;
&lt;br /&gt;
Word2Vec 的底层是一个浅层[[神经网络]]，采用 [[Skip-gram]] 或 [[CBOW]]（Continuous Bag of Words 连续词袋模型）两种架构进行训练。训练后得到的词向量被广泛应用于[[NLP]]（Natural Language Processing 自然语言处理）任务中，包括机器翻译（Machine Translation）、信息检索（Information Retrieval）、文本分类（Text Classification）和[[情感分析]]（Sentiment Analysis）等，成为当前 NLP 领域的重要基础方法之一。&lt;br /&gt;
=='''历史背景'''==&lt;br /&gt;
20 世纪 80 年代，人们开始尝试使用神经网络将单词和概念表示为向量&amp;lt;ref&amp;gt;Hinton G E. Learning distributed representations of concepts[C]//Proceedings of the Annual Meeting of the Cognitive Science Society. 1986, 8.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&amp;lt;/ref&amp;gt;。2010 年，Tomáš Mikolov（当时就读于布尔诺理工大学）与合著者一起将单隐层的简单[[递归]]神经网络应用于[[语言建模]]&amp;lt;ref&amp;gt;Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Interspeech. 2010, 2(3): 1045-1048.&amp;lt;/ref&amp;gt;。Word2vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学（Brno University of Technology）完成了神经网络语言建模的博士研究后，加入了Google，与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作，致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限，Mikolov 团队提出了两种简洁高效的浅层神经网络架构，即CBOW和 Skip-gram，统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标，一经发布便在NLP领域引起了广泛关注和应用。&lt;br /&gt;
&lt;br /&gt;
使用 Word2vec 算法创建的嵌入向量与早期的算法（如使用 n-grams 和潜在语义分析的算法）相比具有一些优势。[[GloVe]] 是斯坦福大学的一个团队专门作为竞争对手开发的，原始论文指出 GloVe 比 Word2vec 有多处改进。Mikolov 认为，这种比较是不公平的，因为 GloVe 是在更多数据上训练出来的，而 [[FastText]] 项目表明，在相同数据上训练出来的 word2vec 更胜一筹。不过截至到现在，'''直接的 Word2vec 方法被认为是 &amp;quot;过时的&amp;quot;'''。基于transformer的模型，如 [[ELMo]] 和 [[BERT]]，在类似 Word2vec 的词嵌入模型之上添加了多个神经网络关注层，已被视为 NLP 领域的最新技术。&lt;br /&gt;
&lt;br /&gt;
== '''技术原理''' ==&lt;br /&gt;
Word2vec 的目的在于为每个词汇都分配一个稠密的向量，能够做到相比传统的稀疏向量（如 [[one-hot 编码]]），更具表达能力和计算效率。形式上也就是，如果词汇表为 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;，每个词 &amp;lt;math&amp;gt;w \in V&amp;lt;/math&amp;gt; 被映射为向量 &amp;lt;math&amp;gt;\mathbf{v}_w \in \mathbb{R}^d&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;d \ll |V|&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示：CBOW或Skip-gram。在这两种架构中，Word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口，这种设计来源于[[词的分布式假设]]，由语言学家 Zellig Harris 在1954年提出。它的核心思想是：“上下文相似的词具有相似的意义”（You shall know a word by the company it keeps）。即如果两个词在相似的上下文中出现，那么它们的意义可能也相似。&lt;br /&gt;
&lt;br /&gt;
CBOW 可被视为一项 &amp;quot;填空 &amp;quot;任务，其中词汇嵌入代表了词汇影响上下文窗口中其他词汇相对概率的方式。语义相似的词应该以相似的方式影响这些概率，因为语义相似的词应该在相似的语境中使用。上下文词语的顺序不会影响预测（词袋假设）。&lt;br /&gt;
&lt;br /&gt;
Skip-gram与CBOW相反，模型使用当前词来预测周围的语境词窗口。与较远的上下文词相比，Skip-gram更重视附近的上下文词。&lt;br /&gt;
&lt;br /&gt;
模型训练完成后，学习到的词向量会被放置在向量空间中，这样，在语料库中具有共同语境的词（即语义和句法上相似的词）就会在空间中彼此靠近。相异程度较高的词在空间中的位置则相距较远。&lt;br /&gt;
&lt;br /&gt;
===模型架构===&lt;br /&gt;
==== CBOW ====&lt;br /&gt;
[[文件:CBOW.png|替代=|缩略图|CBOW 模型的三层结构：输入层、嵌入层和输出层。模型以上下文词为输入，通过嵌入矩阵将其转换为词向量，并对这些向量求平均得到上下文表示,该表示输入到输出层，用于预测中心词。]]&lt;br /&gt;
CBOW是由 Mikolov 等人在 2013 年提出的一种经典的词嵌入模型，是 Word2Vec 的两种核心架构之一。CBOW 通过上下文词汇预测当前词，从而学习词向量。CBOW 的输入是目标词周围的上下文词汇（窗口内的相邻词），输出是对目标词 &amp;lt;math&amp;gt;V_t&amp;lt;/math&amp;gt; 的预测。模型的目标是：'''根据上下文词汇预测中心词'''。设定窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，即在目标词左右各取 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; 个词作为上下文，那么对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。模型的结构分为三层，分别是输入层、嵌入层（Embedding）、输出层。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''&lt;br /&gt;
&lt;br /&gt;
每个上下文词 &amp;lt;math&amp;gt;w_{t+i}&amp;lt;/math&amp;gt; 以 one-hot 向量表示为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{x}_{t+i} \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中 &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; 为词汇表大小。词向量通过嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 得到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{v}_{t+i} = W^\top \mathbf{x}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''嵌入层：'''&lt;br /&gt;
&lt;br /&gt;
对上下文词向量求平均，获得上下文表示向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t = \frac{1}{2c} \sum_{\substack{-c \le i \le c \\ i \ne 0}} \mathbf{v}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
设输出矩阵为 &amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt;，对应词 &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; 的输出得分为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_j = \mathbf{v}'_j \cdot \mathbf{h}_t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对所有词使用 softmax 得到目标词的预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t = j \mid C_t) = \frac{\exp(u_j)}{\sum_{k=1}^{|V|} \exp(u_k)} = \frac{\exp(\mathbf{v}'_j \cdot \mathbf{h}_t)}{\sum_{k=1}^{|V|} \exp(\mathbf{v}'_k \cdot \mathbf{h}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
最大化整个语料的预测对数概率，即最小化负对数似然损失函数（NLL）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid C_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
训练完成后，词向量可以从输入嵌入矩阵 &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; 提取，也可以从输出矩阵 &amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt; 提取，或者对两者进行平均得到最终词向量。&lt;br /&gt;
[[文件:Skipgram.png|缩略图|Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。]]&lt;br /&gt;
&lt;br /&gt;
====Skip-gram 模型====&lt;br /&gt;
Skip-gram 是 Word2Vec 的另一种核心模型，由 Mikolov 等人于 2013 年提出。与 CBOW通过上下文预测中心词不同，Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。同样假设窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''一段文本中心词汇&amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;的one-hot编码作为输入向量 &amp;lt;math&amp;gt;\mathbf{x}_t \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''投影层：'''&lt;br /&gt;
&lt;br /&gt;
输入向量与嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{V \times d}&amp;lt;/math&amp;gt; 相乘，得到词向量 &amp;lt;math&amp;gt;\mathbf{h}&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h} = W^\top \mathbf{v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
对于上下文中每个词 &amp;lt;math&amp;gt;w_{t+j}&amp;lt;/math&amp;gt;（&amp;lt;math&amp;gt;j \in \{-c,\ldots,-1,1,\ldots,c\}&amp;lt;/math&amp;gt;），计算其预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_{t+j} \mid w_t) = \frac{\exp(\mathbf{v}'_{w_{t+j}} \cdot \mathbf{v}_t)}{\sum_{w \in V} \exp(\mathbf{v}'_w \cdot \mathbf{v}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 是输出权重矩阵，&amp;lt;math&amp;gt;\mathbf{v}'_w&amp;lt;/math&amp;gt; 是对应词的输出向量。&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram 通过最大化所有中心词和上下文词对的条件概率来训练模型，损失函数为负对数似然：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L} = - \frac{1}{T} \sum_{t=1}^T \sum_{\substack{-c \le j \le c \\ j \ne 0}} \log P(w_{t+j} \mid w_t)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
在Skip-gram中，词向量即为嵌入层之后所得到的向量，而不同于CBOW，Skip-gram的输出矩阵W'虽然也可以用来作为获得词向量的依据，但是其含义是中心词在上下文中的角色，在学习词汇之间关系的任务中可能使用W'作为词向量会有更好的表现。&lt;br /&gt;
&lt;br /&gt;
相比之下，Skip-gram的效果要优于CBOW，这是因为CBOW在平均了词向量之后丧失了词汇的位置信息，丢失了词汇之间的关联性，因此目前各种工程实现中常用Skip-gram模型。&lt;br /&gt;
&lt;br /&gt;
===训练方法===&lt;br /&gt;
无论是CBOW还是Skip-gram，总是需要遍历整个词表，因此计算代价很大，所以就有了两种近似的计算方法，负采样与层次softmax。这两个是 Word2Vec 中非常重要的训练加速策略，它们用于高效地优化输出词的概率分布。&lt;br /&gt;
&lt;br /&gt;
'''负采样（Negative Sampling）:'''&lt;br /&gt;
&lt;br /&gt;
负采样的核心思想在于将原始问题转换成一个[[二分类问题]]，让模型只区分正样本和负样本，例如在Skip-gram中，对于一个中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 和一个正确的上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt;，正确的上下文词被称为正样本。同时人为给出错误的上下文文本 &amp;lt;math&amp;gt;w'_{o_i}&amp;lt;/math&amp;gt;，也就是负样本。负样本的采样一般按照词频 &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; 的 &amp;lt;math&amp;gt;3/4&amp;lt;/math&amp;gt; 次方作为采样概率，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w'_{o_i}) \propto U(w'_{o_i})^{0.75}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
负采样目的在于最小化负样本与中心词一起出现的概率，同时最大化正样本与中心词一起出现的概率，将softmax替换为sigmoid函数，得到新的损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{Skip-gram} = \log\sigma(\mathbf{v}^\top_{w_o} \mathbf{v}_{w_t}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{v}_{w_t})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; 是sigmoid函数，&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; 为负样本个数。同样，该方法也能应用在CBOW模型中，只是负样本变成了中心词：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{CBOW} = \log\sigma(\mathbf{v}^\top_{w_t} \mathbf{h}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{h})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不过在实际应用中大多数时候使用Skip-gram，因此负采样在CBOW中的应用很少。&lt;br /&gt;
&lt;br /&gt;
'''层次 Softmax（Hierarchical Softmax）:'''&lt;br /&gt;
&lt;br /&gt;
层次softmax的核心思路是根据词汇的词频构建一个霍夫曼树，每个叶节点代表一个词汇，而预测一个词汇就是沿着树走的一条路径，对应的也就是一个不断重复的二分类问题，因此每个目标词汇 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 都会被编码为一串二进制编码：&lt;br /&gt;
&amp;lt;math&amp;gt;code(w_t)=(b_1, b_2, \ldots, b_L), b_i \in {0,1}&amp;lt;/math&amp;gt;&lt;br /&gt;
而这条路径上的非叶子节点被记为 &amp;lt;math&amp;gt;n_1, n_2, \ldots, n_L&amp;lt;/math&amp;gt;。因此，在Skip-gram中，给定中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;  与上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt; 之后，上下文词的条件概率就变成了：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(w_o \mid w_t) = \prod_{i=1}^L(w_o) \sigma (|1-b_i|\mathbf{v}_{n_i}^\top\mathbf{v}_{w_t})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\mathbf{v}_{n_i}&amp;lt;/math&amp;gt;是路径节点的向量，相当于原始输出矩阵&amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt;。损失函数为最大化词对的出现概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \sum_{(w_t, w_o) \in D} \log P(w_o \mid w_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样，层次softmax也可以应用于CBOW中，条件概率中的目标词词向量更换为了上下文词汇的平均词向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t \mid \text{context}) = \prod_{i=1}^{L(w_t)} \sigma\left( [1 - b_i(w_t)] \cdot \mathbf{v}_{n_i}^\top \mathbf{h} \right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此也能够得到对应的损失函数。&lt;br /&gt;
&lt;br /&gt;
=='''应用领域'''==&lt;br /&gt;
&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
Word2Vec 是现代 NLP 系统中最早成功实现无监督预训练嵌入层的技术之一，它能够将文本中的词汇转换为稠密的向量表示，并保留语义与句法信息，为各种语言理解与生成任务提供了统一的向量空间支持。&lt;br /&gt;
&lt;br /&gt;
==== 语义分析 ====&lt;br /&gt;
在语义分析方面，Word2Vec 能够通过词向量之间的相对距离和方向关系建模词义相似度与句法结构。例如，在词义消歧任务中，如果句子中出现了歧义词“bank”，模型可以利用其与上下文词（如“money”或“river”）之间的向量相似性，推断其在当前语境中是“银行”还是“河岸”。情感分析也是 Word2Vec 的典型应用场景之一，通过聚类“好”、“棒”、“糟糕”、“失望”等情感色彩明显的词向量，构建带情感权重的表示，再结合分类器（如 SVM）进行句子级或文档级的情绪判定。例如，企业可使用该方法自动识别客户评论的正负面态度。在主题建模任务中，研究者常利用 Word2Vec 学习到的语义向量进行 K-means 等聚类操作，从而发掘出语料中隐含的语义主题，如科技类文本中自动聚类出“人工智能”、“量子计算”、“大数据”等主题簇。&lt;br /&gt;
&lt;br /&gt;
==== 机器翻译 ====&lt;br /&gt;
在机器翻译任务中，Word2Vec 可用于词对齐与语义映射的预处理阶段。通过训练源语言与目标语言的词向量模型，并将其映射到共享向量空间，可以自动对齐如“hello”与“hola”，“school”与“école”这类语义对等词汇，这种方法在无监督机器翻译中尤其常见。此外，在基于神经网络的机器翻译系统（如 Seq2Seq 或 Transformer 模型）中，Word2Vec 也被用于初始化嵌入层权重，相比随机初始化可显著加速模型收敛，提高 BLEU 翻译质量得分。谷歌早期的 NMT 系统就曾在多语种语料上使用跨语言词向量来实现语言无关的嵌入表示，有效支持了低资源语言的翻译。&lt;br /&gt;
&lt;br /&gt;
==== 文本分类 ====&lt;br /&gt;
在文本分类任务中，Word2Vec 同样具有广泛用途。以新闻分类为例，不同主题（如“财经”、“体育”、“国际”）的新闻中出现的关键词往往语义聚集，通过 Word2Vec 向量聚合形成文本表示，再输入分类器（如 CNN、Transformer）进行训练，可高效地区分不同类别的文本。在垃圾邮件识别中，模型可捕捉如“中奖”、“优惠”、“请点击”等词汇的特征并识别其潜在风险。在法律文书分类中，词向量可帮助模型辨别“判决书”、“调解书”、“起诉状”等不同法律文体的词汇特征，从而自动进行文档归档。通常做法是在句子级别对每个词向量进行平均或加权平均操作，构建文档向量，再送入模型进行判别。以 IMDb 电影评论为例，研究人员常使用 Word2Vec 初始化嵌入表示，再结合情感标注数据进行二分类训练，用于判断用户评价是正面还是负面。&lt;br /&gt;
&lt;br /&gt;
总体来看，Word2Vec 在 NLP 中的主要价值在于：提供一种轻量、高效且能迁移的通用词语表示形式，极大地降低了特征工程的门槛，为机器学习和深度学习模型提供了统一的输入基础。&lt;br /&gt;
&lt;br /&gt;
=== 推荐系统 ===&lt;br /&gt;
虽然 Word2Vec 最初是为处理语言建模任务而设计，但其核心思想——“在上下文中共现的词语往往意义相关”——可以被自然迁移到非语言领域，特别是推荐系统中。推荐系统中的“用户行为序列”与 NLP 中的“句子”结构高度相似，而“商品、视频、音乐等内容”则可类比为“词”。基于这种结构对应关系，Word2Vec 成为建模用户偏好和内容相似性的强大工具。&lt;br /&gt;
&lt;br /&gt;
在实践中，推荐系统会将用户的历史点击序列、购物行为或播放列表视作时间序列数据，将其中每一个物品（如商品ID、音乐ID）作为一个“词”输入 Word2Vec 模型进行训练。采用 Skip-gram 结构后，模型试图预测某个物品的上下文物品（即前后点击或购买的内容），从而学习出反映行为模式的向量表示。&lt;br /&gt;
&lt;br /&gt;
训练完成后，Word2Vec 模型输出的嵌入向量可以直接用于推荐。最常见的方式是通过计算当前浏览/购买商品与其他商品之间的向量相似度（通常为余弦相似度），从而生成相似商品推荐（Item-to-Item 推荐）。此外，还可以将一个用户所有历史行为的物品向量进行平均，得到用户的兴趣画像向量，用于个性化推荐排序。&lt;br /&gt;
&lt;br /&gt;
这一思想已经在多个主流平台落地并取得了良好效果。例如：&lt;br /&gt;
&lt;br /&gt;
* 淘宝、京东等电商平台使用商品序列训练 Word2Vec，构建“商品—商品”图谱，用于猜你喜欢、搭配购、商品联想等场景。比如用户在浏览“运动鞋”页面后，系统会推荐“运动袜”、“运动手表”等与其行为序列中相邻频繁出现的物品。&lt;br /&gt;
&lt;br /&gt;
* 美团和大众点评等本地生活平台，通过用户在一定时间段内访问的商家序列（如早餐店、便利店、药店），构建“地点向量”或“服务向量”，支持基于用户轨迹的本地商家推荐，如“去过 A 的人，也常去 B”。&lt;br /&gt;
&lt;br /&gt;
=== 信息检索 ===&lt;br /&gt;
在传统信息检索系统中，搜索结果的相关性通常依赖于关键词的精确匹配，例如布尔检索、TF-IDF 或 BM25 等基于词频的模型。这些方法尽管在速度和工程实现上具备优势，但在语义层面存在严重缺陷：一旦查询词与文档中的词不完全一致，即便它们在意义上高度相关，也可能无法匹配。这就导致了检索召回率不足或排序不准确的问题。Word2Vec 所提供的分布式表示弥补了这一不足，它将语义上相近的词投射到向量空间中的相邻位置，从而支持更灵活、更具语义关联性的检索策略。&lt;br /&gt;
&lt;br /&gt;
==== 查询扩展（Query Expansion） ====&lt;br /&gt;
例如，当用户输入关键词“肺炎”时，系统可以在训练好的词向量模型中自动找出与其相似的词，如“呼吸道感染”、“发烧”、“流感”等，并将这些词加入查询词集合中，从而扩大搜索范围，提高语义召回能力。此类机制在医学检索、法律文献检索中尤为重要，因为术语表达方式多变，而查询词往往较为简单。&lt;br /&gt;
&lt;br /&gt;
==== 文档排序 ====&lt;br /&gt;
在文档排序任务中，系统可将查询和文档中词嵌入后计算语义相关性得分，辅助判断哪些文档更符合用户意图，用于替代传统的基于词频的打分方式。此外，Word2Vec 在短文本理解中也非常有效，常用于搜索建议、问答匹配、智能补全等场景，尤其适合处理查询词稀疏、语义模糊的用户输入。&lt;br /&gt;
&lt;br /&gt;
==== 短文本理解 ====&lt;br /&gt;
此外，短文本理解任务中 Word2Vec 的作用也尤为显著。在搜索建议、智能补全、FAQ 匹配等场景中，用户输入往往是极短的词组甚至单词，这使得传统稀疏表示方法效果极差。而 Word2Vec 可通过词向量的上下文信息推断潜在语义，提升理解准确度。例如，在输入“退货”时系统可联想到“退款”、“售后”、“客服”等相关查询，从而实现更贴近用户意图的补全建议。&lt;br /&gt;
&lt;br /&gt;
=== 其他领域 ===&lt;br /&gt;
Word2Vec 的通用表示能力使其在多个非语言学领域也展现出强大的迁移价值。通过将非语言数据结构化为“序列”或“上下文”形式，Word2Vec 能够学习出反映实体关系的向量表示，从而广泛应用于生物信息学、社会科学及专业技术领域。&lt;br /&gt;
&lt;br /&gt;
==== 生物信息学 ====&lt;br /&gt;
在生物信息学中，研究者将蛋白质或 DNA 序列中的氨基酸、核苷酸片段视为“词”，构建“生物语言”。通过训练 Word2Vec 模型，可以学习到功能相关序列的向量表示，应用于蛋白质功能预测、疾病相关区域识别等任务。例如，某些氨基酸片段在多个蛋白质中共现频繁，模型会自动捕捉它们的潜在生物学意义。此外，Word2Vec 也被用于药物发现场景，辅助建模药物与靶点间的语义联系。&lt;br /&gt;
&lt;br /&gt;
==== 社会科学 ====&lt;br /&gt;
在社会科学中，Word2Vec 被用于探测语言中的刻板印象和社会偏见。通过分析词向量之间的距离，如“nurse”更接近“she”，“doctor”更接近“he”，可揭示潜在的性别偏见结构。同时，研究人员也使用时间序列语料构建跨年代词向量，研究词义随时代的语义漂移，如“liberal”、“gender”等词在不同时期的语义演变路径。&lt;br /&gt;
&lt;br /&gt;
==== 法律、金融、医疗等垂直领域 ====&lt;br /&gt;
在法律、金融、医疗等垂直领域，Word2Vec 有助于理解专业术语之间的语义关系。在法律文本分析中，模型可用于预测文书之间的相似度，辅助法官判例归类与类案推荐；在金融领域，Word2Vec 被用于情绪识别系统中，帮助模型理解公告、舆情或分析报告中的潜在语义态度；在医疗信息处理中，词向量支持将病症、药品与治疗手段建模为统一向量空间，用于构建医学知识图谱或提升电子病历挖掘效率。&lt;br /&gt;
&lt;br /&gt;
=='''优缺点'''==&lt;br /&gt;
&lt;br /&gt;
===优点===&lt;br /&gt;
[[文件:Example11.png|替代=|缩略图|Word2Vec 学习到的词向量空间中的分布关系。可以看到，语义或语法角色相似的词（如 “man” 与 “woman”，“king” 与 “queen”，以及 “apple” 与 “pear”）在二维向量空间中彼此距离较近，体现了模型在词语表示上的语义聚类能力。]]&lt;br /&gt;
'''捕捉语义和语法关系：'''&lt;br /&gt;
&lt;br /&gt;
通过上下文预测（Skip-gram/CBOW），可学习到单词的分布式表示，相似语义或语法角色的词在向量空间中距离相近。&lt;br /&gt;
&lt;br /&gt;
支持线性类比关系（如“国王 - 男 + 女 ≈ 女王”）。&lt;br /&gt;
&lt;br /&gt;
'''适用于大规模数据：'''&lt;br /&gt;
&lt;br /&gt;
可高效训练数十亿级别的语料，内存消耗相对较低。&lt;br /&gt;
&lt;br /&gt;
'''通用性强：'''&lt;br /&gt;
&lt;br /&gt;
词向量可作为下游任务（如文本分类、机器翻译）的特征输入，提升模型性能。&lt;br /&gt;
&lt;br /&gt;
===局限性===&lt;br /&gt;
'''无法处理多义词（Polysemy）：'''&lt;br /&gt;
&lt;br /&gt;
每个词仅对应单一向量，无法区分不同上下文中的多义性（如“苹果”指水果或公司）。&lt;br /&gt;
&lt;br /&gt;
'''依赖局部上下文：'''&lt;br /&gt;
&lt;br /&gt;
仅基于窗口内的局部共现信息，忽略文档级或语料级的全局统计特征（如GloVe的优势）。&lt;br /&gt;
&lt;br /&gt;
'''需要大量训练数据：'''&lt;br /&gt;
&lt;br /&gt;
小规模语料下生成的词向量质量较差，难以捕捉低频词语义。&lt;br /&gt;
&lt;br /&gt;
'''静态词向量（Static Embeddings）：'''&lt;br /&gt;
&lt;br /&gt;
词向量在训练后固定，无法动态适应不同上下文（后续模型如ELMo、BERT解决了这一问题）。&lt;br /&gt;
&lt;br /&gt;
'''窗口大小敏感：'''&lt;br /&gt;
&lt;br /&gt;
表现受上下文窗口大小影响，过大或过小均可能导致语义捕捉不充分。&lt;br /&gt;
&lt;br /&gt;
'''未考虑词序信息：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram和CBOW模型忽略窗口内词的顺序关系（后续改进如Seq2Vec或Transformer可解决）。&lt;br /&gt;
&lt;br /&gt;
=='''相关技术与扩展'''==&lt;br /&gt;
&lt;br /&gt;
===GloVe（Global Vectors for Word Representation）===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出，旨在结合传统基于计数的模型（如 LSA）和 Word2Vec 的优势，提出一种高效的全局词向量训练方法。&lt;br /&gt;
&lt;br /&gt;
====技术原理====&lt;br /&gt;
GloVe 是一种基于全局共现信息来学习词向量的方法&amp;lt;ref&amp;gt;Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.&amp;lt;/ref&amp;gt;，与 Word2Vec 不同，它不依赖上下文窗口中的预测任务，而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。&lt;br /&gt;
&lt;br /&gt;
GloVe 的设计灵感来自以下关键观察：词语的语义关系可以通过它们与其他词共现的比例来表达，而不是仅通过是否共现或是否邻近。例如，“ice” 和 “steam” 都与 “water” 有很强的共现关系，但 “ice” 更倾向与 “cold” 共现，而 “steam” 更倾向与 “hot” 共现。GloVe 试图让词向量之间的差异或比例能反映出这种语义关系。&lt;br /&gt;
&lt;br /&gt;
在训练之前，GloVe 首先对整个语料库构建一个 共现矩阵&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
* 每个元素 &amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt; 表示词&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;在词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 的上下文窗口中出现的次数；&lt;br /&gt;
&lt;br /&gt;
* 矩阵是稀疏且高维的，规模为 &amp;lt;math&amp;gt;V \times V&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; 是词汇表大小。&lt;br /&gt;
&lt;br /&gt;
GloVe 的一个重要设计理念是：两个词之间的语义关系可由它们对其他词的共现比值刻画。对于一个目标词 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;'''，考虑两个上下文词 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 和 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，如果 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;''' 与 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 的共现频率远高于与 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，则两者在语义上的关联也会不同。&lt;br /&gt;
&lt;br /&gt;
定义贡献概率为：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;P_{ik} = \frac{X_{ik}}{\sum_{k'} X_{ik'}}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
GloVe 期望通过学习得到的词向量 '''&amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt;'''，能使词之间的向量关系满足下列公式形式：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;F(\mathbf{w}_i, \tilde{\mathbf{w}}_j, X_{ij}) = \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j \approx \log X_{ij}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
即目标是让词向量的点积加上偏置项逼近共现频率的对数值，而不是原始频数，后者变化范围太大。&lt;br /&gt;
&lt;br /&gt;
为了实现上述目标，GloVe 构建了以下加权平方误差损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;J = \sum_{i,j=1}^{V} f(X_{ij}) \cdot \left( \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij} \right)^2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt;: 词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 和 &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; 的共现次数；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{w}_i&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;\tilde{\mathbf{w}}_j&amp;lt;/math&amp;gt; : 词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;：权重函数（防止高频词主导优化）；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;{b}_j&amp;lt;/math&amp;gt;：偏置项。&lt;br /&gt;
&lt;br /&gt;
这个函数可以防止高频词主导模型训练，也避免了低频词对整体模型质量的影响。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* Word2Vec 是基于预测任务（局部上下文窗口），而 GloVe 是基于矩阵分解（全局共现频率）；&lt;br /&gt;
&lt;br /&gt;
* 相比传统 LSA（SVD），GloVe 使用非线性权重函数，训练时不需要全局矩阵分解，更高效；&lt;br /&gt;
&lt;br /&gt;
* GloVe适合全局语义关系建模，尤其在大规模语料训练中表现优异；&lt;br /&gt;
&lt;br /&gt;
* GloVe支持线性类比关系，类似 Word2Vec（如“king - man + woman ≈ queen”）&lt;br /&gt;
&lt;br /&gt;
=== FastText ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出&amp;lt;ref&amp;gt;Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.&amp;lt;/ref&amp;gt;，旨在解决 Word2Vec 模型在处理罕见词、词形变化（如复数、时态）等方面的能力不足。其核心理念是在训练过程中引入子词信息，以增强词向量对形态的建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
FastText 的核心思想是：将词视为子词（subword）n-gram 的组合体，而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词（OOV）的表示能力。&lt;br /&gt;
&lt;br /&gt;
'''子词建模（Subword Embedding）：'''&lt;br /&gt;
&lt;br /&gt;
每个单词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 被划分为若干个字符 n-gram，例如设置 n = 3~6 时：&lt;br /&gt;
&lt;br /&gt;
对于词 “where”，首先在其两端添加边界符号（如 &amp;lt; 和 &amp;gt;），构成：&amp;lt;where&amp;gt;，然后提取字符 n-gram 得到： &amp;lt;wh, whe, her, ere, re&amp;gt;，包括完整词本身 &amp;quot;where&amp;quot;，最终表示为一个 n-gram 集合 &amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
词向量的表示为其所有 n-gram 向量的平均或和：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_w = \sum_{g \in G} w_g z_g&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z_g&amp;lt;/math&amp;gt;​ 是 n-gram &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; 的嵌入向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;​ 是词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 的所有子词集合。&lt;br /&gt;
&lt;br /&gt;
这种表示方式让模型在遇到未登录词时，也可以通过其组成子词获取合理向量。&lt;br /&gt;
&lt;br /&gt;
'''模型结构与训练：'''&lt;br /&gt;
&lt;br /&gt;
FastText 延续了 Word2Vec 的 Skip-gram 架构，但输入词不再是 one-hot 编码的词本身，而是其所有 n-gram 的组合。训练目标为：给定中心词（子词组合向量），预测其上下文词。即最大化如下目标函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{Skip-gram}} = \sum_{(w_t, w_o) \in D} \left[ \log \sigma\left( \mathbf{v}_{w_o}^\top \mathbf{v}_{w_t} \right) + \sum_{i=1}^{k} \mathbb{E}_{w_i' \sim P_n(w)} \log \sigma\left( -\mathbf{v}_{w_i'}^\top \mathbf{v}_{w_t} \right) \right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 是由子词构成的中心词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{wo}&amp;lt;/math&amp;gt;​​ 是上下文词向量；&lt;br /&gt;
&lt;br /&gt;
负采样 &amp;lt;math&amp;gt;P_n(w)&amp;lt;/math&amp;gt; 用于高效近似 softmax。&lt;br /&gt;
&lt;br /&gt;
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示，以提升整体语义建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* FastText 通过引入 n-gram，有效表示未登录词与形态变化词；&lt;br /&gt;
&lt;br /&gt;
* FastText 面向多语言与拼写多样化语言（如芬兰语、德语）效果显著优于 Word2Vec；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec 只能对词表中出现过的词进行建模，FastText 可泛化到未出现的新词，具备更强的鲁棒性与泛化能力；&lt;br /&gt;
&lt;br /&gt;
* GloVe 基于全局共现信息构建稠密表示，适合静态建模，FastText 基于局部上下文与子词结构，适合细粒度语义与动态扩展；&lt;br /&gt;
&lt;br /&gt;
* FastText 在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用。&lt;br /&gt;
&lt;br /&gt;
=== BERT 模型 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型&amp;lt;ref&amp;gt;Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[C]//Proceedings of the 2019 conference of the North American chapter of the association for computational linguistics: human language technologies, volume 1 (long and short papers). 2019: 4171-4186.&amp;lt;/ref&amp;gt;，发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务，并通过大规模语料上的预训练 + 微调机制，在多个自然语言处理任务上取得了 SOTA（state-of-the-art）成绩。&lt;br /&gt;
&lt;br /&gt;
BERT 的设计动机是解决传统语言模型（如 Word2Vec、GloVe）在上下文建模、语义歧义处理和句子级理解方面的不足，特别是在建模“一个词在不同上下文中含义不同”这一关键问题。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理====&lt;br /&gt;
'''基础架构：'''&lt;br /&gt;
&lt;br /&gt;
BERT 构建在 Transformer 架构之上，具体使用了 多层 Transformer 编码器堆叠（通常 BERT-base 为 12 层，BERT-large 为 24 层）。Transformer 由 Vaswani 等人在 2017 年提出，其最大特点是 完全基于注意力机制（Self-Attention），无需使用 RNN 或 CNN，可并行处理任意长度的输入。&lt;br /&gt;
&lt;br /&gt;
每层包含：&lt;br /&gt;
&lt;br /&gt;
多头自注意力机制（Multi-Head Self-Attention）；&lt;br /&gt;
&lt;br /&gt;
前馈神经网络（Feed-Forward Layer）；&lt;br /&gt;
&lt;br /&gt;
残差连接 + 层归一化。&lt;br /&gt;
&lt;br /&gt;
Transformer 中每个词的表示会综合考虑所有其他词对它的影响，因此能捕捉复杂的依赖结构。&lt;br /&gt;
&lt;br /&gt;
'''输入方式表示：'''&lt;br /&gt;
&lt;br /&gt;
BERT 的输入不只是单词序列，而是词 + 位置 + 句子类型三重嵌入之和：Input Embedding = Token Embedding + Position Embedding + Segment Embedding&lt;br /&gt;
&lt;br /&gt;
例如用于句子对任务（如问答）时，Segment A 表示第一句话，Segment B 表示第二句话。输入序列结构为：[CLS] 句子A [SEP] 句子B [SEP]，其中[CLS] 用于分类任务的特殊标记；[SEP] 是句子分隔符。&lt;br /&gt;
&lt;br /&gt;
'''预训练阶段：'''&lt;br /&gt;
&lt;br /&gt;
BERT 采用两种 自监督学习任务在大规模语料（如 Wikipedia 和 BooksCorpus）上进行训练：&lt;br /&gt;
&lt;br /&gt;
（1）Masked Language Model（MLM）：随机遮蔽输入序列中约 15% 的词，模型需预测被 []MASK 替换的词是什么，本质上是一个多分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{MLM}} = - \sum_{i \in M} \log P(w_i \mid x_{\text{masked}})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
（2）Next Sentence Prediction（NSP）：输入两个句子 A 和 B，任务是判断 B 是否是 A 的真实下一句，是一个二分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{NSP}} = -\log P(\text{IsNext} \mid A, B)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''微调阶段：'''&lt;br /&gt;
&lt;br /&gt;
在预训练后，BERT 可被快速迁移到下游任务，如：文本分类（情感分析）、序列标注（命名实体识别）、问答系统，只需在最后加上一层简单的任务特定结构，并用少量数据进行微调即可。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* BERT 同时利用左上下文与右上下文，解决传统语言模型单向建模的局限；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理多义词与上下文依赖，如同一个词在不同句子中的不同含义；&lt;br /&gt;
&lt;br /&gt;
* BERT 采用Transformer 架构支持全局依赖建模，相比 RNN 更并行高效；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理分类、标注、问答等多类任务，具备高度迁移能力；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec/GloVe 生成的是固定词向量、语境无关，BERT 输出的是上下文相关的词表示，能捕捉复杂句法语义关系。&lt;br /&gt;
&lt;br /&gt;
=== 动态词嵌入（ ELMo） ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
ELMo（'''Embeddings from Language Models'''）是由 Allen Institute for AI（AI2）的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法&amp;lt;ref&amp;gt;PETERS M E, NEUMANN M, IYER M, et al. Deep contextualized word representations[J/OL]. arXiv, 2018: 1802.05365 [2023-12-01]. &amp;lt;nowiki&amp;gt;https://arxiv.org/abs/1802.05365&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型，突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象（如 &amp;quot;bank&amp;quot; 表示“银行”或“河岸”），传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型（BiLM）捕捉词的上下文依赖关系，为每个词生成可变的、语境敏感的表示。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
ELMo 基于传统语言模型（Language Model, LM），但引入了以下三个关键技术点：&lt;br /&gt;
&lt;br /&gt;
'''双向语言模型（BiLM）：'''&lt;br /&gt;
&lt;br /&gt;
一个正向语言模型（从左到右）：&amp;lt;math&amp;gt;P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个反向语言模型（从右到左）：&amp;lt;math&amp;gt;P(w_T, \ldots, w_1) = \prod_{t=1}^{T} P(w_t \mid w_{t+1}, \ldots, w_T)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这两个模型均使用深层 LSTM（Long Short-Term Memory） 网络进行建模，层数通常为两层。&lt;br /&gt;
&lt;br /&gt;
'''多层表示聚合机制：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量，而是将所有层的隐状态按照加权方式聚合，从而获得更加丰富的语义特征。&lt;br /&gt;
&lt;br /&gt;
每个词的 ELMo 表示由以下公式给出：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{ELMo}(w_t) = \gamma \sum_{j=0}^{L} s_j \cdot \mathbf{h}_t^{(j)}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t^{(j)}&lt;br /&gt;
&amp;lt;/math&amp;gt; 表示第 &amp;lt;math&amp;gt;j&lt;br /&gt;
&amp;lt;/math&amp;gt; 层对词 &amp;lt;math&amp;gt;w_t&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 的隐状态，是前向和后向语言模型的连接结果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 是第&amp;lt;math&amp;gt;j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;层的可学习权重，表示该层对最终表示的贡献程度；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt; 是可学习缩放因子，控制整体表示的幅度。&lt;br /&gt;
&lt;br /&gt;
'''训练与迁移使用：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 先在大规模语料上训练语言模型（如 1 Billion Word Benchmark），然后将训练好的表示迁移到下游任务中，并在下游任务中联合微调（fine-tune）其权重&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt;。这种机制大幅提高了模型对语境、词义变化的感知能力，适用于情感分类（Sentiment Analysis）、问答系统（QA）和自然语言推理（NLI）。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入；&lt;br /&gt;
&lt;br /&gt;
* ELMo 同时考虑前文与后文，有效捕捉语言结构与语义；&lt;br /&gt;
&lt;br /&gt;
* 与 Word2Vec/GloVe相比，ELMo 输出的词向量会随句子变化，是“动态词向量”；&lt;br /&gt;
&lt;br /&gt;
* 与 BERT 相比，ELMo 使用 LSTM 架构，计算成本相对较低，更适合中小规模任务。&lt;br /&gt;
&lt;br /&gt;
=='''开源实现与工具'''==&lt;br /&gt;
Word2Vec 自 2013 年由 Google 发布以来，被广泛应用于自然语言处理任务。除了原始的 C 语言实现，目前已有多个高效的开源工具和库支持 Word2Vec 的训练与使用。&lt;br /&gt;
&lt;br /&gt;
=== Gensim 库 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python&lt;br /&gt;
* 功能：&lt;br /&gt;
** 支持 CBOW 和 Skip-gram 两种训练模式。&lt;br /&gt;
** 提供 负采样（Negative Sampling） 和 层次 Softmax（Hierarchical Softmax） 加速训练。&lt;br /&gt;
** 可调整参数：窗口大小、词向量维度、最小词频、训练轮次（epochs）等。&lt;br /&gt;
** 支持模型保存为 &amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;（二进制）或 &amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;（纯文本）格式，兼容其他 NLP 工具（如 FastText、GloVe）。&lt;br /&gt;
** 提供 增量训练（继续训练已有模型）和 词汇表更新 功能。&lt;br /&gt;
&lt;br /&gt;
示例代码：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from gensim.models import Word2Vec&lt;br /&gt;
from gensim.models.word2vec import LineSentence  # 用于流式读取大文件&lt;br /&gt;
&lt;br /&gt;
# 示例1：基础训练（列表输入）&lt;br /&gt;
sentences = [&lt;br /&gt;
    [&amp;quot;自然&amp;quot;, &amp;quot;语言&amp;quot;, &amp;quot;处理&amp;quot;, &amp;quot;很&amp;quot;, &amp;quot;有趣&amp;quot;],&lt;br /&gt;
    [&amp;quot;深度学习&amp;quot;, &amp;quot;改变&amp;quot;, &amp;quot;了&amp;quot;, &amp;quot;NLP&amp;quot;],&lt;br /&gt;
    [&amp;quot;Word2Vec&amp;quot;, &amp;quot;是&amp;quot;, &amp;quot;经典&amp;quot;, &amp;quot;算法&amp;quot;]&lt;br /&gt;
]&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=sentences,&lt;br /&gt;
    vector_size=300,       # 词向量维度&lt;br /&gt;
    window=5,             # 上下文窗口&lt;br /&gt;
    min_count=1,          # 最小词频&lt;br /&gt;
    workers=4,            # 并行线程数&lt;br /&gt;
    sg=1,                 # 1=Skip-gram, 0=CBOW&lt;br /&gt;
    hs=0,                 # 0=负采样, 1=层次Softmax&lt;br /&gt;
    negative=5,           # 负采样数&lt;br /&gt;
    epochs=10             # 训练轮次&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 示例2：大文件训练（流式读取）&lt;br /&gt;
corpus_path = &amp;quot;corpus.txt&amp;quot;  # 每行一个句子，词语用空格分隔&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=LineSentence(corpus_path),  # 自动按行流式读取&lt;br /&gt;
    vector_size=300,&lt;br /&gt;
    window=5,&lt;br /&gt;
    min_count=5,        # 过滤低频词&lt;br /&gt;
    workers=8&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 模型使用&lt;br /&gt;
print(model.wv[&amp;quot;自然&amp;quot;])          # 获取词向量&lt;br /&gt;
print(model.wv.most_similar(&amp;quot;NLP&amp;quot;, topn=3))  # 相似词查询&lt;br /&gt;
&lt;br /&gt;
# 模型保存与加载&lt;br /&gt;
model.save(&amp;quot;word2vec.model&amp;quot;)          # 二进制格式&lt;br /&gt;
model.wv.save_word2vec_format(&amp;quot;vectors.bin&amp;quot;, binary=True)  # 兼容原始格式&lt;br /&gt;
loaded_model = Word2Vec.load(&amp;quot;word2vec.model&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 快速实验 Word2Vec 模型，适用于中小规模语料（百万级词汇）。&lt;br /&gt;
* 需要与其他 Python NLP 工具（如 spaCy、NLTK）集成时。&lt;br /&gt;
&lt;br /&gt;
=== TensorFlow / PyTorch 实现 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python（基于 TensorFlow/PyTorch 框架）&lt;br /&gt;
* 功能：&lt;br /&gt;
** 提供更灵活的模型自定义能力（如修改损失函数、调整网络结构）。&lt;br /&gt;
** 支持 GPU 加速训练，适合大规模语料（十亿级词汇）。&lt;br /&gt;
** 可与其他深度学习模型（如 LSTM、Transformer）结合使用。&lt;br /&gt;
&lt;br /&gt;
TensorFlow 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 示例：Skip-gram负采样实现&lt;br /&gt;
vocab_size = 10000&lt;br /&gt;
embedding_dim = 300&lt;br /&gt;
num_ns = 5    # 负采样数&lt;br /&gt;
&lt;br /&gt;
# 自定义Word2Vec模型&lt;br /&gt;
class Word2Vec(tf.keras.Model):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        self.target_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=1)&lt;br /&gt;
        self.context_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=num_ns+1)&lt;br /&gt;
        &lt;br /&gt;
    def call(self, pair):&lt;br /&gt;
        target, context = pair&lt;br /&gt;
        # target shape: (batch, 1)&lt;br /&gt;
        # context shape: (batch, 1+num_ns)&lt;br /&gt;
        word_emb = self.target_embedding(target)       # (batch, 1, dim)&lt;br /&gt;
        context_emb = self.context_embedding(context)  # (batch, 1+num_ns, dim)&lt;br /&gt;
        return tf.matmul(word_emb, context_emb, transpose_b=True)&lt;br /&gt;
&lt;br /&gt;
# 数据准备（假设已预处理）&lt;br /&gt;
target_words = np.random.randint(0, vocab_size, (1000, 1))&lt;br /&gt;
context_words = np.random.randint(0, vocab_size, (1000, 6))  # 1正样本+5负样本&lt;br /&gt;
&lt;br /&gt;
# 编译训练&lt;br /&gt;
model = Word2Vec()&lt;br /&gt;
model.compile(optimizer='adam', loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))&lt;br /&gt;
model.fit(x=(target_words, context_words), epochs=5)&lt;br /&gt;
&lt;br /&gt;
# 获取词向量&lt;br /&gt;
embedding_layer = model.get_layer('target_embedding')&lt;br /&gt;
word_vectors = embedding_layer.get_weights()[0]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;PyTorch 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torch.nn as nn&lt;br /&gt;
# 自定义 Word2Vec 模型（CBOW）&lt;br /&gt;
class Word2Vec(nn.Module):&lt;br /&gt;
    def __init__(self, vocab_size, embedding_dim):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        # 中心词和上下文词共享同一个嵌入矩阵&lt;br /&gt;
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
    def forward(self, target, context):&lt;br /&gt;
        # target shape: (batch_size,)&lt;br /&gt;
        # context shape: (batch_size,)&lt;br /&gt;
        target_emb = self.embeddings(target)  # (batch_size, embedding_dim)&lt;br /&gt;
        context_emb = self.embeddings(context) # (batch_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
        # 计算点积得分（Skip-gram目标）&lt;br /&gt;
        scores = torch.sum(target_emb * context_emb, dim=1)  # (batch_size,)&lt;br /&gt;
        return scores&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要与深度学习模型联合训练（如文本分类+词向量微调）。&lt;br /&gt;
* 研究场景，需自定义 Word2Vec 的变体（如结合注意力机制）。&lt;br /&gt;
&lt;br /&gt;
=== C 语言实现 ===&lt;br /&gt;
&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：C&lt;br /&gt;
* 功能：&lt;br /&gt;
** Google 官方发布的原始实现，效率极高（适合超大规模语料）。&lt;br /&gt;
** 仅支持基本的 Skip-gram 和 CBOW，无负采样或层次 Softmax 优化。&lt;br /&gt;
** 输出格式为二进制（&amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;）或文本（&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;）词向量。&lt;br /&gt;
&lt;br /&gt;
使用方法：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 从源码编译（需要gcc）&lt;br /&gt;
git clone https://github.com/tmikolov/word2vec&lt;br /&gt;
cd word2vec&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
# 训练命令详解&lt;br /&gt;
./word2vec -train corpus.txt \    # 输入文件（每行一个句子）&lt;br /&gt;
           -output vectors.bin \  # 输出词向量&lt;br /&gt;
           -size 300 \            # 向量维度&lt;br /&gt;
           -window 5 \            # 窗口大小&lt;br /&gt;
           -sample 1e-5 \         # 高频词降采样阈值&lt;br /&gt;
           -negative 5 \          # 负采样数&lt;br /&gt;
           -hs 0 \                # 禁用层次Softmax&lt;br /&gt;
           -threads 16 \          # 线程数&lt;br /&gt;
           -binary 1 \            # 二进制输出&lt;br /&gt;
           -iter 10               # 训练轮次&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要最高训练效率（如 Wikipedia 或 Common Crawl 级别语料）。&lt;br /&gt;
* 对模型定制需求低，仅需基础词向量生成。&lt;br /&gt;
&lt;br /&gt;
=='''参考文献'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;此词条由苏一铭、杨锦浩编写。&lt;br /&gt;
&lt;br /&gt;
'''本词条内容源自wikipedia及公开资料，遵守 CC3.0协议。'''&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Example11.png&amp;diff=45354</id>
		<title>文件:Example11.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Example11.png&amp;diff=45354"/>
		<updated>2025-07-05T06:52:32Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;example11&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45353</id>
		<title>Word2Vec</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=Word2Vec&amp;diff=45353"/>
		<updated>2025-07-05T06:45:39Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Word2Vec''' 是一种将词语（Word）映射为连续向量（Vector）的高效建模技术，由 Google 的 Tomas Mikolov 团队于 2013 年提出&amp;lt;ref&amp;gt;Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[J]. Advances in neural information processing systems, 2013, 26.&amp;lt;/ref&amp;gt;。通过在大规模文本语料中自动学习，Word2Vec 将每个词表示为一个低维、稠密、连续的向量（即词嵌入Word Embedding），这种向量能够捕捉词语之间的语义和句法关系。与传统将词视为离散 ID 的方法（如 N-gram）不同，Word2Vec 将词嵌入到连续空间中，相似意义的词在向量空间中距离更近，为后续复杂模型（如 [[Transformer]]）奠定了基础。&lt;br /&gt;
&lt;br /&gt;
Word2Vec 的底层是一个浅层[[神经网络]]，采用 [[Skip-gram]] 或 [[CBOW]]（Continuous Bag of Words 连续词袋模型）两种架构进行训练。训练后得到的词向量被广泛应用于[[NLP]]（Natural Language Processing 自然语言处理）任务中，包括机器翻译（Machine Translation）、信息检索（Information Retrieval）、文本分类（Text Classification）和[[情感分析]]（Sentiment Analysis）等，成为当前 NLP 领域的重要基础方法之一。&lt;br /&gt;
=='''历史背景'''==&lt;br /&gt;
20 世纪 80 年代，人们开始尝试使用神经网络将单词和概念表示为向量&amp;lt;ref&amp;gt;Hinton G E. Learning distributed representations of concepts[C]//Proceedings of the Annual Meeting of the Cognitive Science Society. 1986, 8.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Elman J L. Finding structure in time[J]. Cognitive science, 1990, 14(2): 179-211.&amp;lt;/ref&amp;gt;。2010 年，Tomáš Mikolov（当时就读于布尔诺理工大学）与合著者一起将单隐层的简单[[递归]]神经网络应用于[[语言建模]]&amp;lt;ref&amp;gt;Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Interspeech. 2010, 2(3): 1045-1048.&amp;lt;/ref&amp;gt;。Word2vec 由 Tomas Mikolov 及其团队于 2013 年在 Google Research 提出。Tomas Mikolov 在布尔诺理工大学（Brno University of Technology）完成了神经网络语言建模的博士研究后，加入了Google，与 Kai Chen、Greg Corrado 和 Jeffrey Dean 等人合作，致力于大规模数据下的词表示学习问题。面对传统方法在大规模语料处理上的局限，Mikolov 团队提出了两种简洁高效的浅层神经网络架构，即CBOW和 Skip-gram，统称为 Word2Vec。Word2Vec 实现了在数十亿词级别的数据上快速训练高质量词向量的目标，一经发布便在NLP领域引起了广泛关注和应用。&lt;br /&gt;
&lt;br /&gt;
使用 Word2vec 算法创建的嵌入向量与早期的算法（如使用 n-grams 和潜在语义分析的算法）相比具有一些优势。[[GloVe]] 是斯坦福大学的一个团队专门作为竞争对手开发的，原始论文指出 GloVe 比 Word2vec 有多处改进。Mikolov 认为，这种比较是不公平的，因为 GloVe 是在更多数据上训练出来的，而 [[FastText]] 项目表明，在相同数据上训练出来的 word2vec 更胜一筹。不过截至到现在，'''直接的 Word2vec 方法被认为是 &amp;quot;过时的&amp;quot;'''。基于transformer的模型，如 [[ELMo]] 和 [[BERT]]，在类似 Word2vec 的词嵌入模型之上添加了多个神经网络关注层，已被视为 NLP 领域的最新技术。&lt;br /&gt;
&lt;br /&gt;
== '''技术原理''' ==&lt;br /&gt;
Word2vec 的目的在于为每个词汇都分配一个稠密的向量，能够做到相比传统的稀疏向量（如 [[one-hot 编码]]），更具表达能力和计算效率。形式上也就是，如果词汇表为 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt;，每个词 &amp;lt;math&amp;gt;w \in V&amp;lt;/math&amp;gt; 被映射为向量 &amp;lt;math&amp;gt;\mathbf{v}_w \in \mathbb{R}^d&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;d \ll |V|&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Word2vec使用两种模型架构中的任何一种来生成词汇的分布式表示：CBOW或Skip-gram。在这两种架构中，Word2vec 在遍历语料库时都会考虑单个词和滑动上下文窗口，这种设计来源于[[词的分布式假设]]，由语言学家 Zellig Harris 在1954年提出。它的核心思想是：“上下文相似的词具有相似的意义”（You shall know a word by the company it keeps）。即如果两个词在相似的上下文中出现，那么它们的意义可能也相似。&lt;br /&gt;
&lt;br /&gt;
CBOW 可被视为一项 &amp;quot;填空 &amp;quot;任务，其中词汇嵌入代表了词汇影响上下文窗口中其他词汇相对概率的方式。语义相似的词应该以相似的方式影响这些概率，因为语义相似的词应该在相似的语境中使用。上下文词语的顺序不会影响预测（词袋假设）。&lt;br /&gt;
&lt;br /&gt;
Skip-gram与CBOW相反，模型使用当前词来预测周围的语境词窗口。与较远的上下文词相比，Skip-gram更重视附近的上下文词。&lt;br /&gt;
&lt;br /&gt;
模型训练完成后，学习到的词向量会被放置在向量空间中，这样，在语料库中具有共同语境的词（即语义和句法上相似的词）就会在空间中彼此靠近。相异程度较高的词在空间中的位置则相距较远。&lt;br /&gt;
&lt;br /&gt;
===模型架构===&lt;br /&gt;
==== CBOW ====&lt;br /&gt;
[[文件:CBOW.png|替代=|缩略图|CBOW 模型的三层结构：输入层、嵌入层和输出层。模型以上下文词为输入，通过嵌入矩阵将其转换为词向量，并对这些向量求平均得到上下文表示,该表示输入到输出层，用于预测中心词。]]&lt;br /&gt;
CBOW是由 Mikolov 等人在 2013 年提出的一种经典的词嵌入模型，是 Word2Vec 的两种核心架构之一。CBOW 通过上下文词汇预测当前词，从而学习词向量。CBOW 的输入是目标词周围的上下文词汇（窗口内的相邻词），输出是对目标词 &amp;lt;math&amp;gt;V_t&amp;lt;/math&amp;gt; 的预测。模型的目标是：'''根据上下文词汇预测中心词'''。设定窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，即在目标词左右各取 &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; 个词作为上下文，那么对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。模型的结构分为三层，分别是输入层、嵌入层（Embedding）、输出层。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''&lt;br /&gt;
&lt;br /&gt;
每个上下文词 &amp;lt;math&amp;gt;w_{t+i}&amp;lt;/math&amp;gt; 以 one-hot 向量表示为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{x}_{t+i} \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中 &amp;lt;math&amp;gt;|V|&amp;lt;/math&amp;gt; 为词汇表大小。词向量通过嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 得到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{v}_{t+i} = W^\top \mathbf{x}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''嵌入层：'''&lt;br /&gt;
&lt;br /&gt;
对上下文词向量求平均，获得上下文表示向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t = \frac{1}{2c} \sum_{\substack{-c \le i \le c \\ i \ne 0}} \mathbf{v}_{t+i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
设输出矩阵为 &amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt;，对应词 &amp;lt;math&amp;gt;w_j&amp;lt;/math&amp;gt; 的输出得分为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_j = \mathbf{v}'_j \cdot \mathbf{h}_t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对所有词使用 softmax 得到目标词的预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t = j \mid C_t) = \frac{\exp(u_j)}{\sum_{k=1}^{|V|} \exp(u_k)} = \frac{\exp(\mathbf{v}'_j \cdot \mathbf{h}_t)}{\sum_{k=1}^{|V|} \exp(\mathbf{v}'_k \cdot \mathbf{h}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
最大化整个语料的预测对数概率，即最小化负对数似然损失函数（NLL）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \frac{1}{T} \sum_{t=1}^{T} \log P(w_t \mid C_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
训练完成后，词向量可以从输入嵌入矩阵 &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt; 提取，也可以从输出矩阵 &amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt; 提取，或者对两者进行平均得到最终词向量。&lt;br /&gt;
[[文件:Skipgram.png|缩略图|Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。]]&lt;br /&gt;
&lt;br /&gt;
====Skip-gram 模型====&lt;br /&gt;
Skip-gram 是 Word2Vec 的另一种核心模型，由 Mikolov 等人于 2013 年提出。与 CBOW通过上下文预测中心词不同，Skip-gram 通过中心词预测上下文词，适合捕捉罕见词的语义，尤其在大规模语料上表现优异。Skip-gram的模型结构也分为三层：输入层、投影层、输出层。同样假设窗口大小为 &amp;lt;math&amp;gt;2c&amp;lt;/math&amp;gt;，对于中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;，其上下文为：&amp;lt;math&amp;gt;C_t = \{w_{t-c}, \ldots, w_{t-1}, w_{t+1}, \ldots, w_{t+c} \}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''输入层：'''一段文本中心词汇&amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;的one-hot编码作为输入向量 &amp;lt;math&amp;gt;\mathbf{x}_t \in \mathbb{R}^{|V|}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
'''投影层：'''&lt;br /&gt;
&lt;br /&gt;
输入向量与嵌入矩阵 &amp;lt;math&amp;gt;W \in \mathbb{R}^{V \times d}&amp;lt;/math&amp;gt; 相乘，得到词向量 &amp;lt;math&amp;gt;\mathbf{h}&amp;lt;/math&amp;gt;：&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h} = W^\top \mathbf{v}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''输出层：'''&lt;br /&gt;
&lt;br /&gt;
对于上下文中每个词 &amp;lt;math&amp;gt;w_{t+j}&amp;lt;/math&amp;gt;（&amp;lt;math&amp;gt;j \in \{-c,\ldots,-1,1,\ldots,c\}&amp;lt;/math&amp;gt;），计算其预测概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_{t+j} \mid w_t) = \frac{\exp(\mathbf{v}'_{w_{t+j}} \cdot \mathbf{v}_t)}{\sum_{w \in V} \exp(\mathbf{v}'_w \cdot \mathbf{v}_t)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;W' \in \mathbb{R}^{|V| \times N}&amp;lt;/math&amp;gt; 是输出权重矩阵，&amp;lt;math&amp;gt;\mathbf{v}'_w&amp;lt;/math&amp;gt; 是对应词的输出向量。&lt;br /&gt;
&lt;br /&gt;
'''优化目标：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram 通过最大化所有中心词和上下文词对的条件概率来训练模型，损失函数为负对数似然：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L} = - \frac{1}{T} \sum_{t=1}^T \sum_{\substack{-c \le j \le c \\ j \ne 0}} \log P(w_{t+j} \mid w_t)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''词向量提取：'''&lt;br /&gt;
&lt;br /&gt;
在Skip-gram中，词向量即为嵌入层之后所得到的向量，而不同于CBOW，Skip-gram的输出矩阵W'虽然也可以用来作为获得词向量的依据，但是其含义是中心词在上下文中的角色，在学习词汇之间关系的任务中可能使用W'作为词向量会有更好的表现。&lt;br /&gt;
&lt;br /&gt;
相比之下，Skip-gram的效果要优于CBOW，这是因为CBOW在平均了词向量之后丧失了词汇的位置信息，丢失了词汇之间的关联性，因此目前各种工程实现中常用Skip-gram模型。&lt;br /&gt;
&lt;br /&gt;
===训练方法===&lt;br /&gt;
无论是CBOW还是Skip-gram，总是需要遍历整个词表，因此计算代价很大，所以就有了两种近似的计算方法，负采样与层次softmax。这两个是 Word2Vec 中非常重要的训练加速策略，它们用于高效地优化输出词的概率分布。&lt;br /&gt;
&lt;br /&gt;
'''负采样（Negative Sampling）:'''&lt;br /&gt;
&lt;br /&gt;
负采样的核心思想在于将原始问题转换成一个[[二分类问题]]，让模型只区分正样本和负样本，例如在Skip-gram中，对于一个中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 和一个正确的上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt;，正确的上下文词被称为正样本。同时人为给出错误的上下文文本 &amp;lt;math&amp;gt;w'_{o_i}&amp;lt;/math&amp;gt;，也就是负样本。负样本的采样一般按照词频 &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; 的 &amp;lt;math&amp;gt;3/4&amp;lt;/math&amp;gt; 次方作为采样概率，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w'_{o_i}) \propto U(w'_{o_i})^{0.75}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
负采样目的在于最小化负样本与中心词一起出现的概率，同时最大化正样本与中心词一起出现的概率，将softmax替换为sigmoid函数，得到新的损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{Skip-gram} = \log\sigma(\mathbf{v}^\top_{w_o} \mathbf{v}_{w_t}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{v}_{w_t})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; 是sigmoid函数，&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; 为负样本个数。同样，该方法也能应用在CBOW模型中，只是负样本变成了中心词：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{L}_{CBOW} = \log\sigma(\mathbf{v}^\top_{w_t} \mathbf{h}) + \sum^{k}_{i=1}\log\sigma(-\mathbf{v}^\top_{w'_{o_i}} \mathbf{h})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不过在实际应用中大多数时候使用Skip-gram，因此负采样在CBOW中的应用很少。&lt;br /&gt;
&lt;br /&gt;
'''层次 Softmax（Hierarchical Softmax）:'''&lt;br /&gt;
&lt;br /&gt;
层次softmax的核心思路是根据词汇的词频构建一个霍夫曼树，每个叶节点代表一个词汇，而预测一个词汇就是沿着树走的一条路径，对应的也就是一个不断重复的二分类问题，因此每个目标词汇 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt; 都会被编码为一串二进制编码：&lt;br /&gt;
&amp;lt;math&amp;gt;code(w_t)=(b_1, b_2, \ldots, b_L), b_i \in {0,1}&amp;lt;/math&amp;gt;&lt;br /&gt;
而这条路径上的非叶子节点被记为 &amp;lt;math&amp;gt;n_1, n_2, \ldots, n_L&amp;lt;/math&amp;gt;。因此，在Skip-gram中，给定中心词 &amp;lt;math&amp;gt;w_t&amp;lt;/math&amp;gt;  与上下文词 &amp;lt;math&amp;gt;w_o&amp;lt;/math&amp;gt; 之后，上下文词的条件概率就变成了：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;P(w_o \mid w_t) = \prod_{i=1}^L(w_o) \sigma (|1-b_i|\mathbf{v}_{n_i}^\top\mathbf{v}_{w_t})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\mathbf{v}_{n_i}&amp;lt;/math&amp;gt;是路径节点的向量，相当于原始输出矩阵&amp;lt;math&amp;gt;W'&amp;lt;/math&amp;gt;。损失函数为最大化词对的出现概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathcal{L} = - \sum_{(w_t, w_o) \in D} \log P(w_o \mid w_t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样，层次softmax也可以应用于CBOW中，条件概率中的目标词词向量更换为了上下文词汇的平均词向量：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(w_t \mid \text{context}) = \prod_{i=1}^{L(w_t)} \sigma\left( [1 - b_i(w_t)] \cdot \mathbf{v}_{n_i}^\top \mathbf{h} \right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此也能够得到对应的损失函数。&lt;br /&gt;
&lt;br /&gt;
=='''应用领域'''==&lt;br /&gt;
&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
Word2Vec 是现代 NLP 系统中最早成功实现无监督预训练嵌入层的技术之一，它能够将文本中的词汇转换为稠密的向量表示，并保留语义与句法信息，为各种语言理解与生成任务提供了统一的向量空间支持。&lt;br /&gt;
&lt;br /&gt;
==== 语义分析 ====&lt;br /&gt;
在语义分析方面，Word2Vec 能够通过词向量之间的相对距离和方向关系建模词义相似度与句法结构。例如，在词义消歧任务中，如果句子中出现了歧义词“bank”，模型可以利用其与上下文词（如“money”或“river”）之间的向量相似性，推断其在当前语境中是“银行”还是“河岸”。情感分析也是 Word2Vec 的典型应用场景之一，通过聚类“好”、“棒”、“糟糕”、“失望”等情感色彩明显的词向量，构建带情感权重的表示，再结合分类器（如 SVM）进行句子级或文档级的情绪判定。例如，企业可使用该方法自动识别客户评论的正负面态度。在主题建模任务中，研究者常利用 Word2Vec 学习到的语义向量进行 K-means 等聚类操作，从而发掘出语料中隐含的语义主题，如科技类文本中自动聚类出“人工智能”、“量子计算”、“大数据”等主题簇。&lt;br /&gt;
&lt;br /&gt;
==== 机器翻译 ====&lt;br /&gt;
在机器翻译任务中，Word2Vec 可用于词对齐与语义映射的预处理阶段。通过训练源语言与目标语言的词向量模型，并将其映射到共享向量空间，可以自动对齐如“hello”与“hola”，“school”与“école”这类语义对等词汇，这种方法在无监督机器翻译中尤其常见。此外，在基于神经网络的机器翻译系统（如 Seq2Seq 或 Transformer 模型）中，Word2Vec 也被用于初始化嵌入层权重，相比随机初始化可显著加速模型收敛，提高 BLEU 翻译质量得分。谷歌早期的 NMT 系统就曾在多语种语料上使用跨语言词向量来实现语言无关的嵌入表示，有效支持了低资源语言的翻译。&lt;br /&gt;
&lt;br /&gt;
==== 文本分类 ====&lt;br /&gt;
在文本分类任务中，Word2Vec 同样具有广泛用途。以新闻分类为例，不同主题（如“财经”、“体育”、“国际”）的新闻中出现的关键词往往语义聚集，通过 Word2Vec 向量聚合形成文本表示，再输入分类器（如 CNN、Transformer）进行训练，可高效地区分不同类别的文本。在垃圾邮件识别中，模型可捕捉如“中奖”、“优惠”、“请点击”等词汇的特征并识别其潜在风险。在法律文书分类中，词向量可帮助模型辨别“判决书”、“调解书”、“起诉状”等不同法律文体的词汇特征，从而自动进行文档归档。通常做法是在句子级别对每个词向量进行平均或加权平均操作，构建文档向量，再送入模型进行判别。以 IMDb 电影评论为例，研究人员常使用 Word2Vec 初始化嵌入表示，再结合情感标注数据进行二分类训练，用于判断用户评价是正面还是负面。&lt;br /&gt;
&lt;br /&gt;
总体来看，Word2Vec 在 NLP 中的主要价值在于：提供一种轻量、高效且能迁移的通用词语表示形式，极大地降低了特征工程的门槛，为机器学习和深度学习模型提供了统一的输入基础。&lt;br /&gt;
&lt;br /&gt;
=== 推荐系统 ===&lt;br /&gt;
虽然 Word2Vec 最初是为处理语言建模任务而设计，但其核心思想——“在上下文中共现的词语往往意义相关”——可以被自然迁移到非语言领域，特别是推荐系统中。推荐系统中的“用户行为序列”与 NLP 中的“句子”结构高度相似，而“商品、视频、音乐等内容”则可类比为“词”。基于这种结构对应关系，Word2Vec 成为建模用户偏好和内容相似性的强大工具。&lt;br /&gt;
&lt;br /&gt;
在实践中，推荐系统会将用户的历史点击序列、购物行为或播放列表视作时间序列数据，将其中每一个物品（如商品ID、音乐ID）作为一个“词”输入 Word2Vec 模型进行训练。采用 Skip-gram 结构后，模型试图预测某个物品的上下文物品（即前后点击或购买的内容），从而学习出反映行为模式的向量表示。&lt;br /&gt;
&lt;br /&gt;
训练完成后，Word2Vec 模型输出的嵌入向量可以直接用于推荐。最常见的方式是通过计算当前浏览/购买商品与其他商品之间的向量相似度（通常为余弦相似度），从而生成相似商品推荐（Item-to-Item 推荐）。此外，还可以将一个用户所有历史行为的物品向量进行平均，得到用户的兴趣画像向量，用于个性化推荐排序。&lt;br /&gt;
&lt;br /&gt;
这一思想已经在多个主流平台落地并取得了良好效果。例如：&lt;br /&gt;
&lt;br /&gt;
* 淘宝、京东等电商平台使用商品序列训练 Word2Vec，构建“商品—商品”图谱，用于猜你喜欢、搭配购、商品联想等场景。比如用户在浏览“运动鞋”页面后，系统会推荐“运动袜”、“运动手表”等与其行为序列中相邻频繁出现的物品。&lt;br /&gt;
&lt;br /&gt;
* 美团和大众点评等本地生活平台，通过用户在一定时间段内访问的商家序列（如早餐店、便利店、药店），构建“地点向量”或“服务向量”，支持基于用户轨迹的本地商家推荐，如“去过 A 的人，也常去 B”。&lt;br /&gt;
&lt;br /&gt;
=== 信息检索 ===&lt;br /&gt;
在传统信息检索系统中，搜索结果的相关性通常依赖于关键词的精确匹配，例如布尔检索、TF-IDF 或 BM25 等基于词频的模型。这些方法尽管在速度和工程实现上具备优势，但在语义层面存在严重缺陷：一旦查询词与文档中的词不完全一致，即便它们在意义上高度相关，也可能无法匹配。这就导致了检索召回率不足或排序不准确的问题。Word2Vec 所提供的分布式表示弥补了这一不足，它将语义上相近的词投射到向量空间中的相邻位置，从而支持更灵活、更具语义关联性的检索策略。&lt;br /&gt;
&lt;br /&gt;
==== 查询扩展（Query Expansion） ====&lt;br /&gt;
例如，当用户输入关键词“肺炎”时，系统可以在训练好的词向量模型中自动找出与其相似的词，如“呼吸道感染”、“发烧”、“流感”等，并将这些词加入查询词集合中，从而扩大搜索范围，提高语义召回能力。此类机制在医学检索、法律文献检索中尤为重要，因为术语表达方式多变，而查询词往往较为简单。&lt;br /&gt;
&lt;br /&gt;
==== 文档排序 ====&lt;br /&gt;
在文档排序任务中，系统可将查询和文档中词嵌入后计算语义相关性得分，辅助判断哪些文档更符合用户意图，用于替代传统的基于词频的打分方式。此外，Word2Vec 在短文本理解中也非常有效，常用于搜索建议、问答匹配、智能补全等场景，尤其适合处理查询词稀疏、语义模糊的用户输入。&lt;br /&gt;
&lt;br /&gt;
==== 短文本理解 ====&lt;br /&gt;
此外，短文本理解任务中 Word2Vec 的作用也尤为显著。在搜索建议、智能补全、FAQ 匹配等场景中，用户输入往往是极短的词组甚至单词，这使得传统稀疏表示方法效果极差。而 Word2Vec 可通过词向量的上下文信息推断潜在语义，提升理解准确度。例如，在输入“退货”时系统可联想到“退款”、“售后”、“客服”等相关查询，从而实现更贴近用户意图的补全建议。&lt;br /&gt;
&lt;br /&gt;
=== 其他领域 ===&lt;br /&gt;
Word2Vec 的通用表示能力使其在多个非语言学领域也展现出强大的迁移价值。通过将非语言数据结构化为“序列”或“上下文”形式，Word2Vec 能够学习出反映实体关系的向量表示，从而广泛应用于生物信息学、社会科学及专业技术领域。&lt;br /&gt;
&lt;br /&gt;
==== 生物信息学 ====&lt;br /&gt;
在生物信息学中，研究者将蛋白质或 DNA 序列中的氨基酸、核苷酸片段视为“词”，构建“生物语言”。通过训练 Word2Vec 模型，可以学习到功能相关序列的向量表示，应用于蛋白质功能预测、疾病相关区域识别等任务。例如，某些氨基酸片段在多个蛋白质中共现频繁，模型会自动捕捉它们的潜在生物学意义。此外，Word2Vec 也被用于药物发现场景，辅助建模药物与靶点间的语义联系。&lt;br /&gt;
&lt;br /&gt;
==== 社会科学 ====&lt;br /&gt;
在社会科学中，Word2Vec 被用于探测语言中的刻板印象和社会偏见。通过分析词向量之间的距离，如“nurse”更接近“she”，“doctor”更接近“he”，可揭示潜在的性别偏见结构。同时，研究人员也使用时间序列语料构建跨年代词向量，研究词义随时代的语义漂移，如“liberal”、“gender”等词在不同时期的语义演变路径。&lt;br /&gt;
&lt;br /&gt;
==== 法律、金融、医疗等垂直领域 ====&lt;br /&gt;
在法律、金融、医疗等垂直领域，Word2Vec 有助于理解专业术语之间的语义关系。在法律文本分析中，模型可用于预测文书之间的相似度，辅助法官判例归类与类案推荐；在金融领域，Word2Vec 被用于情绪识别系统中，帮助模型理解公告、舆情或分析报告中的潜在语义态度；在医疗信息处理中，词向量支持将病症、药品与治疗手段建模为统一向量空间，用于构建医学知识图谱或提升电子病历挖掘效率。&lt;br /&gt;
&lt;br /&gt;
=='''优缺点'''==&lt;br /&gt;
&lt;br /&gt;
===优点===&lt;br /&gt;
[[文件:Word2v-fig1.png|缩略图|Word2Vec 学习到的词向量空间中的分布关系。可以看到，语义或语法角色相似的词（如 “man” 与 “woman”，“king” 与 “queen”，以及 “apple” 与 “pear”）在二维向量空间中彼此距离较近，体现了模型在词语表示上的语义聚类能力。]]&lt;br /&gt;
'''捕捉语义和语法关系：'''&lt;br /&gt;
&lt;br /&gt;
通过上下文预测（Skip-gram/CBOW），可学习到单词的分布式表示，相似语义或语法角色的词在向量空间中距离相近。&lt;br /&gt;
&lt;br /&gt;
支持线性类比关系（如“国王 - 男 + 女 ≈ 女王”）。&lt;br /&gt;
&lt;br /&gt;
'''适用于大规模数据：'''&lt;br /&gt;
&lt;br /&gt;
可高效训练数十亿级别的语料，内存消耗相对较低。&lt;br /&gt;
&lt;br /&gt;
'''通用性强：'''&lt;br /&gt;
&lt;br /&gt;
词向量可作为下游任务（如文本分类、机器翻译）的特征输入，提升模型性能。&lt;br /&gt;
&lt;br /&gt;
===局限性===&lt;br /&gt;
'''无法处理多义词（Polysemy）：'''&lt;br /&gt;
&lt;br /&gt;
每个词仅对应单一向量，无法区分不同上下文中的多义性（如“苹果”指水果或公司）。&lt;br /&gt;
&lt;br /&gt;
'''依赖局部上下文：'''&lt;br /&gt;
&lt;br /&gt;
仅基于窗口内的局部共现信息，忽略文档级或语料级的全局统计特征（如GloVe的优势）。&lt;br /&gt;
&lt;br /&gt;
'''需要大量训练数据：'''&lt;br /&gt;
&lt;br /&gt;
小规模语料下生成的词向量质量较差，难以捕捉低频词语义。&lt;br /&gt;
&lt;br /&gt;
'''静态词向量（Static Embeddings）：'''&lt;br /&gt;
&lt;br /&gt;
词向量在训练后固定，无法动态适应不同上下文（后续模型如ELMo、BERT解决了这一问题）。&lt;br /&gt;
&lt;br /&gt;
'''窗口大小敏感：'''&lt;br /&gt;
&lt;br /&gt;
表现受上下文窗口大小影响，过大或过小均可能导致语义捕捉不充分。&lt;br /&gt;
&lt;br /&gt;
'''未考虑词序信息：'''&lt;br /&gt;
&lt;br /&gt;
Skip-gram和CBOW模型忽略窗口内词的顺序关系（后续改进如Seq2Vec或Transformer可解决）。&lt;br /&gt;
&lt;br /&gt;
=='''相关技术与扩展'''==&lt;br /&gt;
&lt;br /&gt;
===GloVe（Global Vectors for Word Representation）===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出，旨在结合传统基于计数的模型（如 LSA）和 Word2Vec 的优势，提出一种高效的全局词向量训练方法。&lt;br /&gt;
&lt;br /&gt;
====技术原理====&lt;br /&gt;
GloVe 是一种基于全局共现信息来学习词向量的方法&amp;lt;ref&amp;gt;Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.&amp;lt;/ref&amp;gt;，与 Word2Vec 不同，它不依赖上下文窗口中的预测任务，而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。&lt;br /&gt;
&lt;br /&gt;
GloVe 的设计灵感来自以下关键观察：词语的语义关系可以通过它们与其他词共现的比例来表达，而不是仅通过是否共现或是否邻近。例如，“ice” 和 “steam” 都与 “water” 有很强的共现关系，但 “ice” 更倾向与 “cold” 共现，而 “steam” 更倾向与 “hot” 共现。GloVe 试图让词向量之间的差异或比例能反映出这种语义关系。&lt;br /&gt;
&lt;br /&gt;
在训练之前，GloVe 首先对整个语料库构建一个 共现矩阵&amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
* 每个元素 &amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt; 表示词&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;在词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 的上下文窗口中出现的次数；&lt;br /&gt;
&lt;br /&gt;
* 矩阵是稀疏且高维的，规模为 &amp;lt;math&amp;gt;V \times V&amp;lt;/math&amp;gt;，其中 &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; 是词汇表大小。&lt;br /&gt;
&lt;br /&gt;
GloVe 的一个重要设计理念是：两个词之间的语义关系可由它们对其他词的共现比值刻画。对于一个目标词 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;'''，考虑两个上下文词 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 和 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，如果 '''&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;''' 与 '''&amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;''' 的共现频率远高于与 '''&amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;'''，则两者在语义上的关联也会不同。&lt;br /&gt;
&lt;br /&gt;
定义贡献概率为：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;P_{ik} = \frac{X_{ik}}{\sum_{k'} X_{ik'}}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
GloVe 期望通过学习得到的词向量 '''&amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt;'''，能使词之间的向量关系满足下列公式形式：&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;math&amp;gt;F(\mathbf{w}_i, \tilde{\mathbf{w}}_j, X_{ij}) = \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j \approx \log X_{ij}&amp;lt;/math&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
即目标是让词向量的点积加上偏置项逼近共现频率的对数值，而不是原始频数，后者变化范围太大。&lt;br /&gt;
&lt;br /&gt;
为了实现上述目标，GloVe 构建了以下加权平方误差损失函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;J = \sum_{i,j=1}^{V} f(X_{ij}) \cdot \left( \mathbf{w}_i^\top \tilde{\mathbf{w}}_j + b_i + \tilde{b}_j - \log X_{ij} \right)^2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;X_{ij}&amp;lt;/math&amp;gt;: 词 &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; 和 &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; 的共现次数；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{w}_i&amp;lt;/math&amp;gt; 、&amp;lt;math&amp;gt;\tilde{\mathbf{w}}_j&amp;lt;/math&amp;gt; : 词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;：权重函数（防止高频词主导优化）；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; , &amp;lt;math&amp;gt;{b}_j&amp;lt;/math&amp;gt;：偏置项。&lt;br /&gt;
&lt;br /&gt;
这个函数可以防止高频词主导模型训练，也避免了低频词对整体模型质量的影响。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* Word2Vec 是基于预测任务（局部上下文窗口），而 GloVe 是基于矩阵分解（全局共现频率）；&lt;br /&gt;
&lt;br /&gt;
* 相比传统 LSA（SVD），GloVe 使用非线性权重函数，训练时不需要全局矩阵分解，更高效；&lt;br /&gt;
&lt;br /&gt;
* GloVe适合全局语义关系建模，尤其在大规模语料训练中表现优异；&lt;br /&gt;
&lt;br /&gt;
* GloVe支持线性类比关系，类似 Word2Vec（如“king - man + woman ≈ queen”）&lt;br /&gt;
&lt;br /&gt;
=== FastText ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出&amp;lt;ref&amp;gt;Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.&amp;lt;/ref&amp;gt;，旨在解决 Word2Vec 模型在处理罕见词、词形变化（如复数、时态）等方面的能力不足。其核心理念是在训练过程中引入子词信息，以增强词向量对形态的建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
FastText 的核心思想是：将词视为子词（subword）n-gram 的组合体，而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词（OOV）的表示能力。&lt;br /&gt;
&lt;br /&gt;
'''子词建模（Subword Embedding）：'''&lt;br /&gt;
&lt;br /&gt;
每个单词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 被划分为若干个字符 n-gram，例如设置 n = 3~6 时：&lt;br /&gt;
&lt;br /&gt;
对于词 “where”，首先在其两端添加边界符号（如 &amp;lt; 和 &amp;gt;），构成：&amp;lt;where&amp;gt;，然后提取字符 n-gram 得到： &amp;lt;wh, whe, her, ere, re&amp;gt;，包括完整词本身 &amp;quot;where&amp;quot;，最终表示为一个 n-gram 集合 &amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
词向量的表示为其所有 n-gram 向量的平均或和：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_w = \sum_{g \in G} w_g z_g&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z_g&amp;lt;/math&amp;gt;​ 是 n-gram &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; 的嵌入向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G_w&amp;lt;/math&amp;gt;​ 是词 &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 的所有子词集合。&lt;br /&gt;
&lt;br /&gt;
这种表示方式让模型在遇到未登录词时，也可以通过其组成子词获取合理向量。&lt;br /&gt;
&lt;br /&gt;
'''模型结构与训练：'''&lt;br /&gt;
&lt;br /&gt;
FastText 延续了 Word2Vec 的 Skip-gram 架构，但输入词不再是 one-hot 编码的词本身，而是其所有 n-gram 的组合。训练目标为：给定中心词（子词组合向量），预测其上下文词。即最大化如下目标函数：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{Skip-gram}} = \sum_{(w_t, w_o) \in D} \left[ \log \sigma\left( \mathbf{v}_{w_o}^\top \mathbf{v}_{w_t} \right) + \sum_{i=1}^{k} \mathbb{E}_{w_i' \sim P_n(w)} \log \sigma\left( -\mathbf{v}_{w_i'}^\top \mathbf{v}_{w_t} \right) \right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; 是由子词构成的中心词向量；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v_{wo}&amp;lt;/math&amp;gt;​​ 是上下文词向量；&lt;br /&gt;
&lt;br /&gt;
负采样 &amp;lt;math&amp;gt;P_n(w)&amp;lt;/math&amp;gt; 用于高效近似 softmax。&lt;br /&gt;
&lt;br /&gt;
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示，以提升整体语义建模能力。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* FastText 通过引入 n-gram，有效表示未登录词与形态变化词；&lt;br /&gt;
&lt;br /&gt;
* FastText 面向多语言与拼写多样化语言（如芬兰语、德语）效果显著优于 Word2Vec；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec 只能对词表中出现过的词进行建模，FastText 可泛化到未出现的新词，具备更强的鲁棒性与泛化能力；&lt;br /&gt;
&lt;br /&gt;
* GloVe 基于全局共现信息构建稠密表示，适合静态建模，FastText 基于局部上下文与子词结构，适合细粒度语义与动态扩展；&lt;br /&gt;
&lt;br /&gt;
* FastText 在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用。&lt;br /&gt;
&lt;br /&gt;
=== BERT 模型 ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型&amp;lt;ref&amp;gt;Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[C]//Proceedings of the 2019 conference of the North American chapter of the association for computational linguistics: human language technologies, volume 1 (long and short papers). 2019: 4171-4186.&amp;lt;/ref&amp;gt;，发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务，并通过大规模语料上的预训练 + 微调机制，在多个自然语言处理任务上取得了 SOTA（state-of-the-art）成绩。&lt;br /&gt;
&lt;br /&gt;
BERT 的设计动机是解决传统语言模型（如 Word2Vec、GloVe）在上下文建模、语义歧义处理和句子级理解方面的不足，特别是在建模“一个词在不同上下文中含义不同”这一关键问题。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理====&lt;br /&gt;
'''基础架构：'''&lt;br /&gt;
&lt;br /&gt;
BERT 构建在 Transformer 架构之上，具体使用了 多层 Transformer 编码器堆叠（通常 BERT-base 为 12 层，BERT-large 为 24 层）。Transformer 由 Vaswani 等人在 2017 年提出，其最大特点是 完全基于注意力机制（Self-Attention），无需使用 RNN 或 CNN，可并行处理任意长度的输入。&lt;br /&gt;
&lt;br /&gt;
每层包含：&lt;br /&gt;
&lt;br /&gt;
多头自注意力机制（Multi-Head Self-Attention）；&lt;br /&gt;
&lt;br /&gt;
前馈神经网络（Feed-Forward Layer）；&lt;br /&gt;
&lt;br /&gt;
残差连接 + 层归一化。&lt;br /&gt;
&lt;br /&gt;
Transformer 中每个词的表示会综合考虑所有其他词对它的影响，因此能捕捉复杂的依赖结构。&lt;br /&gt;
&lt;br /&gt;
'''输入方式表示：'''&lt;br /&gt;
&lt;br /&gt;
BERT 的输入不只是单词序列，而是词 + 位置 + 句子类型三重嵌入之和：Input Embedding = Token Embedding + Position Embedding + Segment Embedding&lt;br /&gt;
&lt;br /&gt;
例如用于句子对任务（如问答）时，Segment A 表示第一句话，Segment B 表示第二句话。输入序列结构为：[CLS] 句子A [SEP] 句子B [SEP]，其中[CLS] 用于分类任务的特殊标记；[SEP] 是句子分隔符。&lt;br /&gt;
&lt;br /&gt;
'''预训练阶段：'''&lt;br /&gt;
&lt;br /&gt;
BERT 采用两种 自监督学习任务在大规模语料（如 Wikipedia 和 BooksCorpus）上进行训练：&lt;br /&gt;
&lt;br /&gt;
（1）Masked Language Model（MLM）：随机遮蔽输入序列中约 15% 的词，模型需预测被 []MASK 替换的词是什么，本质上是一个多分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{MLM}} = - \sum_{i \in M} \log P(w_i \mid x_{\text{masked}})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
（2）Next Sentence Prediction（NSP）：输入两个句子 A 和 B，任务是判断 B 是否是 A 的真实下一句，是一个二分类任务：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\text{NSP}} = -\log P(\text{IsNext} \mid A, B)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''微调阶段：'''&lt;br /&gt;
&lt;br /&gt;
在预训练后，BERT 可被快速迁移到下游任务，如：文本分类（情感分析）、序列标注（命名实体识别）、问答系统，只需在最后加上一层简单的任务特定结构，并用少量数据进行微调即可。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* BERT 同时利用左上下文与右上下文，解决传统语言模型单向建模的局限；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理多义词与上下文依赖，如同一个词在不同句子中的不同含义；&lt;br /&gt;
&lt;br /&gt;
* BERT 采用Transformer 架构支持全局依赖建模，相比 RNN 更并行高效；&lt;br /&gt;
&lt;br /&gt;
* BERT 能处理分类、标注、问答等多类任务，具备高度迁移能力；&lt;br /&gt;
&lt;br /&gt;
* Word2Vec/GloVe 生成的是固定词向量、语境无关，BERT 输出的是上下文相关的词表示，能捕捉复杂句法语义关系。&lt;br /&gt;
&lt;br /&gt;
=== 动态词嵌入（ ELMo） ===&lt;br /&gt;
&lt;br /&gt;
==== 背景 ====&lt;br /&gt;
ELMo（'''Embeddings from Language Models'''）是由 Allen Institute for AI（AI2）的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法&amp;lt;ref&amp;gt;PETERS M E, NEUMANN M, IYER M, et al. Deep contextualized word representations[J/OL]. arXiv, 2018: 1802.05365 [2023-12-01]. &amp;lt;nowiki&amp;gt;https://arxiv.org/abs/1802.05365&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型，突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象（如 &amp;quot;bank&amp;quot; 表示“银行”或“河岸”），传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型（BiLM）捕捉词的上下文依赖关系，为每个词生成可变的、语境敏感的表示。&lt;br /&gt;
&lt;br /&gt;
==== 技术原理 ====&lt;br /&gt;
ELMo 基于传统语言模型（Language Model, LM），但引入了以下三个关键技术点：&lt;br /&gt;
&lt;br /&gt;
'''双向语言模型（BiLM）：'''&lt;br /&gt;
&lt;br /&gt;
一个正向语言模型（从左到右）：&amp;lt;math&amp;gt;P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
一个反向语言模型（从右到左）：&amp;lt;math&amp;gt;P(w_T, \ldots, w_1) = \prod_{t=1}^{T} P(w_t \mid w_{t+1}, \ldots, w_T)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这两个模型均使用深层 LSTM（Long Short-Term Memory） 网络进行建模，层数通常为两层。&lt;br /&gt;
&lt;br /&gt;
'''多层表示聚合机制：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量，而是将所有层的隐状态按照加权方式聚合，从而获得更加丰富的语义特征。&lt;br /&gt;
&lt;br /&gt;
每个词的 ELMo 表示由以下公式给出：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\text{ELMo}(w_t) = \gamma \sum_{j=0}^{L} s_j \cdot \mathbf{h}_t^{(j)}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{h}_t^{(j)}&lt;br /&gt;
&amp;lt;/math&amp;gt; 表示第 &amp;lt;math&amp;gt;j&lt;br /&gt;
&amp;lt;/math&amp;gt; 层对词 &amp;lt;math&amp;gt;w_t&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 的隐状态，是前向和后向语言模型的连接结果。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt; 是第&amp;lt;math&amp;gt;j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;层的可学习权重，表示该层对最终表示的贡献程度；&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt; 是可学习缩放因子，控制整体表示的幅度。&lt;br /&gt;
&lt;br /&gt;
'''训练与迁移使用：'''&lt;br /&gt;
&lt;br /&gt;
ELMo 先在大规模语料上训练语言模型（如 1 Billion Word Benchmark），然后将训练好的表示迁移到下游任务中，并在下游任务中联合微调（fine-tune）其权重&amp;lt;math&amp;gt;s_j&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;γ&lt;br /&gt;
&amp;lt;/math&amp;gt;。这种机制大幅提高了模型对语境、词义变化的感知能力，适用于情感分类（Sentiment Analysis）、问答系统（QA）和自然语言推理（NLI）。&lt;br /&gt;
&lt;br /&gt;
==== 总结与对比 ====&lt;br /&gt;
* ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入；&lt;br /&gt;
&lt;br /&gt;
* ELMo 同时考虑前文与后文，有效捕捉语言结构与语义；&lt;br /&gt;
&lt;br /&gt;
* 与 Word2Vec/GloVe相比，ELMo 输出的词向量会随句子变化，是“动态词向量”；&lt;br /&gt;
&lt;br /&gt;
* 与 BERT 相比，ELMo 使用 LSTM 架构，计算成本相对较低，更适合中小规模任务。&lt;br /&gt;
&lt;br /&gt;
=='''开源实现与工具'''==&lt;br /&gt;
Word2Vec 自 2013 年由 Google 发布以来，被广泛应用于自然语言处理任务。除了原始的 C 语言实现，目前已有多个高效的开源工具和库支持 Word2Vec 的训练与使用。&lt;br /&gt;
&lt;br /&gt;
=== Gensim 库 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python&lt;br /&gt;
* 功能：&lt;br /&gt;
** 支持 CBOW 和 Skip-gram 两种训练模式。&lt;br /&gt;
** 提供 负采样（Negative Sampling） 和 层次 Softmax（Hierarchical Softmax） 加速训练。&lt;br /&gt;
** 可调整参数：窗口大小、词向量维度、最小词频、训练轮次（epochs）等。&lt;br /&gt;
** 支持模型保存为 &amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;（二进制）或 &amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;（纯文本）格式，兼容其他 NLP 工具（如 FastText、GloVe）。&lt;br /&gt;
** 提供 增量训练（继续训练已有模型）和 词汇表更新 功能。&lt;br /&gt;
&lt;br /&gt;
示例代码：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from gensim.models import Word2Vec&lt;br /&gt;
from gensim.models.word2vec import LineSentence  # 用于流式读取大文件&lt;br /&gt;
&lt;br /&gt;
# 示例1：基础训练（列表输入）&lt;br /&gt;
sentences = [&lt;br /&gt;
    [&amp;quot;自然&amp;quot;, &amp;quot;语言&amp;quot;, &amp;quot;处理&amp;quot;, &amp;quot;很&amp;quot;, &amp;quot;有趣&amp;quot;],&lt;br /&gt;
    [&amp;quot;深度学习&amp;quot;, &amp;quot;改变&amp;quot;, &amp;quot;了&amp;quot;, &amp;quot;NLP&amp;quot;],&lt;br /&gt;
    [&amp;quot;Word2Vec&amp;quot;, &amp;quot;是&amp;quot;, &amp;quot;经典&amp;quot;, &amp;quot;算法&amp;quot;]&lt;br /&gt;
]&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=sentences,&lt;br /&gt;
    vector_size=300,       # 词向量维度&lt;br /&gt;
    window=5,             # 上下文窗口&lt;br /&gt;
    min_count=1,          # 最小词频&lt;br /&gt;
    workers=4,            # 并行线程数&lt;br /&gt;
    sg=1,                 # 1=Skip-gram, 0=CBOW&lt;br /&gt;
    hs=0,                 # 0=负采样, 1=层次Softmax&lt;br /&gt;
    negative=5,           # 负采样数&lt;br /&gt;
    epochs=10             # 训练轮次&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 示例2：大文件训练（流式读取）&lt;br /&gt;
corpus_path = &amp;quot;corpus.txt&amp;quot;  # 每行一个句子，词语用空格分隔&lt;br /&gt;
model = Word2Vec(&lt;br /&gt;
    sentences=LineSentence(corpus_path),  # 自动按行流式读取&lt;br /&gt;
    vector_size=300,&lt;br /&gt;
    window=5,&lt;br /&gt;
    min_count=5,        # 过滤低频词&lt;br /&gt;
    workers=8&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# 模型使用&lt;br /&gt;
print(model.wv[&amp;quot;自然&amp;quot;])          # 获取词向量&lt;br /&gt;
print(model.wv.most_similar(&amp;quot;NLP&amp;quot;, topn=3))  # 相似词查询&lt;br /&gt;
&lt;br /&gt;
# 模型保存与加载&lt;br /&gt;
model.save(&amp;quot;word2vec.model&amp;quot;)          # 二进制格式&lt;br /&gt;
model.wv.save_word2vec_format(&amp;quot;vectors.bin&amp;quot;, binary=True)  # 兼容原始格式&lt;br /&gt;
loaded_model = Word2Vec.load(&amp;quot;word2vec.model&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 快速实验 Word2Vec 模型，适用于中小规模语料（百万级词汇）。&lt;br /&gt;
* 需要与其他 Python NLP 工具（如 spaCy、NLTK）集成时。&lt;br /&gt;
&lt;br /&gt;
=== TensorFlow / PyTorch 实现 ===&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：Python（基于 TensorFlow/PyTorch 框架）&lt;br /&gt;
* 功能：&lt;br /&gt;
** 提供更灵活的模型自定义能力（如修改损失函数、调整网络结构）。&lt;br /&gt;
** 支持 GPU 加速训练，适合大规模语料（十亿级词汇）。&lt;br /&gt;
** 可与其他深度学习模型（如 LSTM、Transformer）结合使用。&lt;br /&gt;
&lt;br /&gt;
TensorFlow 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 示例：Skip-gram负采样实现&lt;br /&gt;
vocab_size = 10000&lt;br /&gt;
embedding_dim = 300&lt;br /&gt;
num_ns = 5    # 负采样数&lt;br /&gt;
&lt;br /&gt;
# 自定义Word2Vec模型&lt;br /&gt;
class Word2Vec(tf.keras.Model):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        self.target_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=1)&lt;br /&gt;
        self.context_embedding = tf.keras.layers.Embedding(&lt;br /&gt;
            vocab_size, embedding_dim, input_length=num_ns+1)&lt;br /&gt;
        &lt;br /&gt;
    def call(self, pair):&lt;br /&gt;
        target, context = pair&lt;br /&gt;
        # target shape: (batch, 1)&lt;br /&gt;
        # context shape: (batch, 1+num_ns)&lt;br /&gt;
        word_emb = self.target_embedding(target)       # (batch, 1, dim)&lt;br /&gt;
        context_emb = self.context_embedding(context)  # (batch, 1+num_ns, dim)&lt;br /&gt;
        return tf.matmul(word_emb, context_emb, transpose_b=True)&lt;br /&gt;
&lt;br /&gt;
# 数据准备（假设已预处理）&lt;br /&gt;
target_words = np.random.randint(0, vocab_size, (1000, 1))&lt;br /&gt;
context_words = np.random.randint(0, vocab_size, (1000, 6))  # 1正样本+5负样本&lt;br /&gt;
&lt;br /&gt;
# 编译训练&lt;br /&gt;
model = Word2Vec()&lt;br /&gt;
model.compile(optimizer='adam', loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True))&lt;br /&gt;
model.fit(x=(target_words, context_words), epochs=5)&lt;br /&gt;
&lt;br /&gt;
# 获取词向量&lt;br /&gt;
embedding_layer = model.get_layer('target_embedding')&lt;br /&gt;
word_vectors = embedding_layer.get_weights()[0]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;PyTorch 实现示例：&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torch.nn as nn&lt;br /&gt;
# 自定义 Word2Vec 模型（CBOW）&lt;br /&gt;
class Word2Vec(nn.Module):&lt;br /&gt;
    def __init__(self, vocab_size, embedding_dim):&lt;br /&gt;
        super().__init__()&lt;br /&gt;
        # 中心词和上下文词共享同一个嵌入矩阵&lt;br /&gt;
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
    def forward(self, target, context):&lt;br /&gt;
        # target shape: (batch_size,)&lt;br /&gt;
        # context shape: (batch_size,)&lt;br /&gt;
        target_emb = self.embeddings(target)  # (batch_size, embedding_dim)&lt;br /&gt;
        context_emb = self.embeddings(context) # (batch_size, embedding_dim)&lt;br /&gt;
        &lt;br /&gt;
        # 计算点积得分（Skip-gram目标）&lt;br /&gt;
        scores = torch.sum(target_emb * context_emb, dim=1)  # (batch_size,)&lt;br /&gt;
        return scores&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要与深度学习模型联合训练（如文本分类+词向量微调）。&lt;br /&gt;
* 研究场景，需自定义 Word2Vec 的变体（如结合注意力机制）。&lt;br /&gt;
&lt;br /&gt;
=== C 语言实现 ===&lt;br /&gt;
&lt;br /&gt;
特点：&lt;br /&gt;
&lt;br /&gt;
* 语言：C&lt;br /&gt;
* 功能：&lt;br /&gt;
** Google 官方发布的原始实现，效率极高（适合超大规模语料）。&lt;br /&gt;
** 仅支持基本的 Skip-gram 和 CBOW，无负采样或层次 Softmax 优化。&lt;br /&gt;
** 输出格式为二进制（&amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt;）或文本（&amp;lt;code&amp;gt;.txt&amp;lt;/code&amp;gt;）词向量。&lt;br /&gt;
&lt;br /&gt;
使用方法：&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 从源码编译（需要gcc）&lt;br /&gt;
git clone https://github.com/tmikolov/word2vec&lt;br /&gt;
cd word2vec&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
# 训练命令详解&lt;br /&gt;
./word2vec -train corpus.txt \    # 输入文件（每行一个句子）&lt;br /&gt;
           -output vectors.bin \  # 输出词向量&lt;br /&gt;
           -size 300 \            # 向量维度&lt;br /&gt;
           -window 5 \            # 窗口大小&lt;br /&gt;
           -sample 1e-5 \         # 高频词降采样阈值&lt;br /&gt;
           -negative 5 \          # 负采样数&lt;br /&gt;
           -hs 0 \                # 禁用层次Softmax&lt;br /&gt;
           -threads 16 \          # 线程数&lt;br /&gt;
           -binary 1 \            # 二进制输出&lt;br /&gt;
           -iter 10               # 训练轮次&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;适用场景：&lt;br /&gt;
&lt;br /&gt;
* 需要最高训练效率（如 Wikipedia 或 Common Crawl 级别语料）。&lt;br /&gt;
* 对模型定制需求低，仅需基础词向量生成。&lt;br /&gt;
&lt;br /&gt;
=='''参考文献'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;此词条由苏一铭、杨锦浩编写。&lt;br /&gt;
&lt;br /&gt;
'''本词条内容源自wikipedia及公开资料，遵守 CC3.0协议。'''&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Skipgram.png&amp;diff=45352</id>
		<title>文件:Skipgram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Skipgram.png&amp;diff=45352"/>
		<updated>2025-07-05T06:44:55Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;skipgram&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:CBOW.png&amp;diff=45351</id>
		<title>文件:CBOW.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:CBOW.png&amp;diff=45351"/>
		<updated>2025-07-05T06:44:20Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CBOW&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Word2vec_fig1.png&amp;diff=45350</id>
		<title>文件:Word2vec fig1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Word2vec_fig1.png&amp;diff=45350"/>
		<updated>2025-07-05T06:27:36Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Word2Vec 示意图&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44867</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44867"/>
		<updated>2025-06-15T13:03:28Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：进展&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。[[人工神经网络]]架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个[[神经元]]。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态[[非线性系统|非线性]]映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的[[动力学可逆性|动力学]]行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在[[深度学习]]的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫[[感知机]]）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史与进展 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为[[生物网络|生物神经网络]]的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Joseph, R. D. (1960). Contributions to Perceptron Theory. Cornell Aeronautical Laboratory Report No. VG-11 96--G-7, Buffalo.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962）&amp;lt;ref&amp;gt;Rosenblatt, Frank (1962). Principles of Neurodynamics. Spartan, New York.&amp;lt;/ref&amp;gt;引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是[[深度学习]]。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络&amp;lt;ref&amp;gt;Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ivakhnenko, A. G.; Lapa, Valentin Grigorʹevich (1967). Cybernetics and Forecasting Techniques. American Elsevier Publishing Co.&amp;lt;/ref&amp;gt;。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络&amp;lt;ref&amp;gt;Amari, Shun'ichi (1967). &amp;quot;A theory of adaptive pattern classifier&amp;quot;. IEEE Transactions. EC (16): 279–307.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1976). &amp;quot;Taylor expansion of the accumulated rounding error&amp;quot;. BIT Numerical Mathematics. 16 (2): 146–160.&amp;lt;/ref&amp;gt;。  G.M. Ostrovski 等人于 1971 年重新发表了该论文&amp;lt;ref&amp;gt;Ostrovski, G. M., Volin, Y. M., &amp;amp; Boris, W. W. (1971). &amp;quot;On the computation of derivatives&amp;quot;. Wissenschaftliche Zeitschrift der Technischen Hochschule für Chemie, 13: 382–384.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Schmidhuber, Juergen (2014-10-25). &amp;quot;Who Invented Backpropagation?&amp;quot;. IDSIA, Switzerland.&amp;lt;/ref&amp;gt;。 Paul Werbos于 1982 年将反向传播应用于神经网络&amp;lt;ref&amp;gt;Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks. The MIT Press. &amp;lt;nowiki&amp;gt;ISBN 978-0-262-26715-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;（他 1974 年的博士论文，重印在 1994 年的一本书中&amp;lt;ref&amp;gt;Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley &amp;amp; Sons. &amp;lt;nowiki&amp;gt;ISBN 0-471-59897-6&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献&amp;lt;ref&amp;gt;Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). &amp;quot;Learning representations by back-propagating errors&amp;quot;. Nature. 323 (6088): 533–536.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起&amp;lt;ref&amp;gt;Bengio, Yoshua; Ducharme, Réjean; Vincent, Pascal; Janvin, Christian (2003). &amp;quot;A neural probabilistic language model&amp;quot;. The Journal of Machine Learning Research. 3: 1137–1155.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
=== 研究进展 ===&lt;br /&gt;
&lt;br /&gt;
* '''ReLU神经元死亡问题：'''ReLU作为最常用的激活函数之一，具有稀疏激活和计算效率的优势。但是，其也存在当输入为负时，ReLU输出恒为0，神经元将不再参与梯度更新的问题。为此，Hyunwoo Lee等人2024年提出了一种新的权重初始化方法来改善深层且窄的前馈神经网络在使用ReLU激活函数时出现的ReLU神经元死亡问题&amp;lt;ref&amp;gt;Lee H, Kim Y, Yang S Y, et al. Improved weight initialization for deep and narrow feedforward neural network[J]. Neural Networks, 2024, 176: 106362.&amp;lt;/ref&amp;gt;；&lt;br /&gt;
* '''优化算法选择问题：'''传统的前馈神经网络训练通常依赖人工选择优化算法。A.N. Schreuder等人2025年提出了一种基于概率论和贝叶斯统计的高级启发式方法，旨在自动选择最适合训练前馈神经网络的低级启发式，从而优化神经网络的训练过程和性能&amp;lt;ref&amp;gt;Schreuder A N, Bosman A S, Engelbrecht A P, et al. Training feedforward neural networks with Bayesian hyper-heuristics[J]. Information Sciences, 2025, 686: 121363.&amp;lt;/ref&amp;gt;；&lt;br /&gt;
* '''自动化网络拓扑设计问题：'''传统的前馈神经网络设计需要人工调整网络结构。Luis Balderas等人2024年提出了一种优化密集前馈神经网络算法，通过剪枝和迁移学习技术，自动生成更高效、更精简的神经网络拓扑，同时保持或提升模型的性能&amp;lt;ref&amp;gt;Balderas L, Lastra M, Benítez J M. Optimizing dense feed-forward neural networks[J]. Neural Networks, 2024, 171: 229-241.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
&lt;br /&gt;
=== 课程推荐 ===&lt;br /&gt;
[https://campus.swarma.org/course/1391 神经网络（Neural Network）]&lt;br /&gt;
&lt;br /&gt;
从一个历史发展的角度去看待神经网络，从 1943 年最早提出的感知机模型讲起，分析其局限性，说明引入多层神经网络的必要性，以及经典的 BP 算法。最后从一个实际案例出发，讲解真实场景下，用人工神经网络做预测时，会用到的问题和处理方法。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://campus.swarma.org/course/956 深度学习原理与PyTorch实战]&lt;br /&gt;
&lt;br /&gt;
此系列课程主要围绕集智俱乐部众包写作的书籍《深度学习原理与 PyTorch 实战》展开，兼具理论与实践，是想要掌握一门深度学习技术不可错过的课程。课程中不仅循序渐进地讲解了PyTorch的基本使用、神经网络的搭建、卷积神经网络和循环神经网络的实现，而且全面深入地介绍了计算机视觉、自然语言处理、迁移学习，以及最新的对抗学习和深度强化学习等前沿技术。&lt;br /&gt;
&lt;br /&gt;
=== 书籍推荐 ===&lt;br /&gt;
[https://www.manning.com/books/deep-learning-with-pytorch 《Deep Learning with PyTorch》]&lt;br /&gt;
&lt;br /&gt;
本书聚焦于 PyTorch 框架下的深度学习实现，配合实例手把手构建前馈网络、卷积网络等，是初学者与实战者过渡的重要桥梁。内容注重实操与解释，适合工程开发背景的读者。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.deeplearningbook.org/ 《Deep Learning》]&lt;br /&gt;
&lt;br /&gt;
本书涵盖前馈神经网络的结构、训练、正则化、优化等内容，适合研究人员与高级开发者。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.pearson.com/en-us/subject-catalog/p/neural-networks-and-learning-machines/P200000000638/9780131471399 《Neural Networks and Learning Machines》（3rd Edition）]&lt;br /&gt;
&lt;br /&gt;
系统介绍神经网络的各类模型与学习算法，前馈神经网络及其反向传播部分尤为经典，适合对数学推导与理论有较高要求的学习者。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44864</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44864"/>
		<updated>2025-06-15T13:02:48Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：研究进展&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。[[人工神经网络]]架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个[[神经元]]。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态[[非线性系统|非线性]]映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的[[动力学可逆性|动力学]]行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在[[深度学习]]的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫[[感知机]]）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为[[生物网络|生物神经网络]]的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Joseph, R. D. (1960). Contributions to Perceptron Theory. Cornell Aeronautical Laboratory Report No. VG-11 96--G-7, Buffalo.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962）&amp;lt;ref&amp;gt;Rosenblatt, Frank (1962). Principles of Neurodynamics. Spartan, New York.&amp;lt;/ref&amp;gt;引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是[[深度学习]]。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络&amp;lt;ref&amp;gt;Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ivakhnenko, A. G.; Lapa, Valentin Grigorʹevich (1967). Cybernetics and Forecasting Techniques. American Elsevier Publishing Co.&amp;lt;/ref&amp;gt;。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络&amp;lt;ref&amp;gt;Amari, Shun'ichi (1967). &amp;quot;A theory of adaptive pattern classifier&amp;quot;. IEEE Transactions. EC (16): 279–307.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1976). &amp;quot;Taylor expansion of the accumulated rounding error&amp;quot;. BIT Numerical Mathematics. 16 (2): 146–160.&amp;lt;/ref&amp;gt;。  G.M. Ostrovski 等人于 1971 年重新发表了该论文&amp;lt;ref&amp;gt;Ostrovski, G. M., Volin, Y. M., &amp;amp; Boris, W. W. (1971). &amp;quot;On the computation of derivatives&amp;quot;. Wissenschaftliche Zeitschrift der Technischen Hochschule für Chemie, 13: 382–384.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Schmidhuber, Juergen (2014-10-25). &amp;quot;Who Invented Backpropagation?&amp;quot;. IDSIA, Switzerland.&amp;lt;/ref&amp;gt;。 Paul Werbos于 1982 年将反向传播应用于神经网络&amp;lt;ref&amp;gt;Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks. The MIT Press. &amp;lt;nowiki&amp;gt;ISBN 978-0-262-26715-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;（他 1974 年的博士论文，重印在 1994 年的一本书中&amp;lt;ref&amp;gt;Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley &amp;amp; Sons. &amp;lt;nowiki&amp;gt;ISBN 0-471-59897-6&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献&amp;lt;ref&amp;gt;Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). &amp;quot;Learning representations by back-propagating errors&amp;quot;. Nature. 323 (6088): 533–536.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起&amp;lt;ref&amp;gt;Bengio, Yoshua; Ducharme, Réjean; Vincent, Pascal; Janvin, Christian (2003). &amp;quot;A neural probabilistic language model&amp;quot;. The Journal of Machine Learning Research. 3: 1137–1155.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
=== 研究进展 ===&lt;br /&gt;
&lt;br /&gt;
* '''ReLU神经元死亡问题：'''ReLU作为最常用的激活函数之一，具有稀疏激活和计算效率的优势。但是，其也存在当输入为负时，ReLU输出恒为0，神经元将不再参与梯度更新的问题。为此，Hyunwoo Lee等人2024年提出了一种新的权重初始化方法来改善深层且窄的前馈神经网络在使用ReLU激活函数时出现的ReLU神经元死亡问题&amp;lt;ref&amp;gt;Lee H, Kim Y, Yang S Y, et al. Improved weight initialization for deep and narrow feedforward neural network[J]. Neural Networks, 2024, 176: 106362.&amp;lt;/ref&amp;gt;；&lt;br /&gt;
* '''优化算法选择问题：'''传统的前馈神经网络训练通常依赖人工选择优化算法。A.N. Schreuder等人2025年提出了一种基于概率论和贝叶斯统计的高级启发式方法，旨在自动选择最适合训练前馈神经网络的低级启发式，从而优化神经网络的训练过程和性能&amp;lt;ref&amp;gt;Schreuder A N, Bosman A S, Engelbrecht A P, et al. Training feedforward neural networks with Bayesian hyper-heuristics[J]. Information Sciences, 2025, 686: 121363.&amp;lt;/ref&amp;gt;；&lt;br /&gt;
* '''自动化网络拓扑设计问题：'''传统的前馈神经网络设计需要人工调整网络结构。Luis Balderas等人2024年提出了一种优化密集前馈神经网络算法，通过剪枝和迁移学习技术，自动生成更高效、更精简的神经网络拓扑，同时保持或提升模型的性能&amp;lt;ref&amp;gt;Balderas L, Lastra M, Benítez J M. Optimizing dense feed-forward neural networks[J]. Neural Networks, 2024, 171: 229-241.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
&lt;br /&gt;
=== 课程推荐 ===&lt;br /&gt;
[https://campus.swarma.org/course/1391 神经网络（Neural Network）]&lt;br /&gt;
&lt;br /&gt;
从一个历史发展的角度去看待神经网络，从 1943 年最早提出的感知机模型讲起，分析其局限性，说明引入多层神经网络的必要性，以及经典的 BP 算法。最后从一个实际案例出发，讲解真实场景下，用人工神经网络做预测时，会用到的问题和处理方法。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://campus.swarma.org/course/956 深度学习原理与PyTorch实战]&lt;br /&gt;
&lt;br /&gt;
此系列课程主要围绕集智俱乐部众包写作的书籍《深度学习原理与 PyTorch 实战》展开，兼具理论与实践，是想要掌握一门深度学习技术不可错过的课程。课程中不仅循序渐进地讲解了PyTorch的基本使用、神经网络的搭建、卷积神经网络和循环神经网络的实现，而且全面深入地介绍了计算机视觉、自然语言处理、迁移学习，以及最新的对抗学习和深度强化学习等前沿技术。&lt;br /&gt;
&lt;br /&gt;
=== 书籍推荐 ===&lt;br /&gt;
[https://www.manning.com/books/deep-learning-with-pytorch 《Deep Learning with PyTorch》]&lt;br /&gt;
&lt;br /&gt;
本书聚焦于 PyTorch 框架下的深度学习实现，配合实例手把手构建前馈网络、卷积网络等，是初学者与实战者过渡的重要桥梁。内容注重实操与解释，适合工程开发背景的读者。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.deeplearningbook.org/ 《Deep Learning》]&lt;br /&gt;
&lt;br /&gt;
本书涵盖前馈神经网络的结构、训练、正则化、优化等内容，适合研究人员与高级开发者。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.pearson.com/en-us/subject-catalog/p/neural-networks-and-learning-machines/P200000000638/9780131471399 《Neural Networks and Learning Machines》（3rd Edition）]&lt;br /&gt;
&lt;br /&gt;
系统介绍神经网络的各类模型与学习算法，前馈神经网络及其反向传播部分尤为经典，适合对数学推导与理论有较高要求的学习者。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44807</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44807"/>
		<updated>2025-06-15T08:00:23Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。|替代=|400x400像素]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新，借鉴了人类聚焦关键信息的观察与思考模式。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性，通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制的核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer编码器中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如Transformer编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的实现步骤为&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量），分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。&lt;br /&gt;
&lt;br /&gt;
==== 注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，Q*K&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&lt;br /&gt;
&lt;br /&gt;
整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|替代=|无框]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_k&lt;br /&gt;
        if attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|301x301像素]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|400x400像素|替代=|无框]]&lt;br /&gt;
&lt;br /&gt;
==== 多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|400x400px|替代=|无框]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;|替代=|250x250像素]]&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;。图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词）&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+z&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;9f3abfd3-27c9-4dd0-8c65-a6699deacca3&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:78,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:35},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词）&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+z&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;9f3abfd3-27c9-4dd0-8c65-a6699deacca3&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:78,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:35},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;|替代=|250x250像素]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
===计算机视觉===&lt;br /&gt;
'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44805</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44805"/>
		<updated>2025-06-15T07:56:46Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。|替代=|400x400像素]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新，借鉴了人类聚焦关键信息的观察与思考模式。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性，通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制的核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer编码器中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如Transformer编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的实现步骤为&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量），分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。&lt;br /&gt;
&lt;br /&gt;
==== 注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，Q*K&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&lt;br /&gt;
&lt;br /&gt;
整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|替代=|无框]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_k&lt;br /&gt;
        if attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|301x301像素]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|400x400像素|替代=|无框]]&lt;br /&gt;
&lt;br /&gt;
==== 多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|400x400px|替代=|无框]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;|替代=|250x250像素]]&lt;br /&gt;
=== 自然语言处理 ===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;。图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词）&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+z&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;9f3abfd3-27c9-4dd0-8c65-a6699deacca3&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:78,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:35},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;|替代=|250x250像素]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
===计算机视觉===&lt;br /&gt;
'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44801</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44801"/>
		<updated>2025-06-15T07:03:30Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。|替代=|400x400像素]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新，借鉴了人类聚焦关键信息的观察与思考模式。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性，通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制的核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer编码器中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如Transformer编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的实现步骤为&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量），分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。&lt;br /&gt;
&lt;br /&gt;
==== 注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，Q*K&amp;lt;sup&amp;gt;T&amp;lt;/sup&amp;gt;值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&lt;br /&gt;
&lt;br /&gt;
整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|替代=|无框]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_k&lt;br /&gt;
        if attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|301x301像素]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|400x400像素|替代=|无框]]&lt;br /&gt;
&lt;br /&gt;
==== 多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|400x400px|替代=|无框]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;|替代=|250x250像素]]&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;。图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/text&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（图片中白色区域代表被注意的区域，下方注释画横线的部分表示相关的单词）&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+z&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;referenceRecordMap&amp;amp;quot;:{},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;9f3abfd3-27c9-4dd0-8c65-a6699deacca3&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{}},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;isFromCode&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:78,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:35},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;}],&amp;amp;quot;payloadMap&amp;amp;quot;:{},&amp;amp;quot;isCut&amp;amp;quot;:false}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;|替代=|250x250像素]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
==='''计算机视觉'''===&lt;br /&gt;
'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44796</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44796"/>
		<updated>2025-06-15T06:27:35Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。|替代=|400x400像素]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|替代=|无框]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=|301x301像素]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|400x400像素|替代=|无框]]&lt;br /&gt;
&lt;br /&gt;
==== 多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|400x400px|替代=|无框]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;|替代=|250x250像素]]&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;|替代=|250x250像素]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
==='''计算机视觉'''===&lt;br /&gt;
'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44795</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44795"/>
		<updated>2025-06-15T06:24:38Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。|替代=|400x400像素]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|替代=|无框]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|400x400像素|替代=|无框]]&lt;br /&gt;
&lt;br /&gt;
==== 多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|400x400px|替代=|无框]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
==='''计算机视觉'''===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;]]'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44794</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44794"/>
		<updated>2025-06-15T06:21:57Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 1.查询 (Query),  键(Key), 值 (Value) 的生成 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|缩略图]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|缩略图|400x400像素]]&lt;br /&gt;
&lt;br /&gt;
==== 多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|缩略图|616x616像素]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
==='''计算机视觉'''===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;]]'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44793</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44793"/>
		<updated>2025-06-15T06:21:31Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
==== 1.查询 (Query),  键(Key), 值 (Value) 的生成 ====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 2.注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 3.归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 4.加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|缩略图]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 1.子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 2.多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|缩略图|400x400像素]]&lt;br /&gt;
&lt;br /&gt;
==== 3.多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|缩略图|616x616像素]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;]]'''机器翻译：'''注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要：'''模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统：'''注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
==='''计算机视觉'''===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;]]'''图像描述生成：'''在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测：'''模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类：'''注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44792</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44792"/>
		<updated>2025-06-15T06:19:24Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 注意力机制的应用 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。如果按注意力范围分类，可以分为'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
===== 1.查询 (Query),  键(Key), 值 (Value) 的生成 =====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 2.注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 3.归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 4.加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|缩略图]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)''    5797-5808 (2019).&amp;lt;/ref&amp;gt;。具体流程如下：&lt;br /&gt;
&lt;br /&gt;
==== 1.子空间Q, K, V 向量的生成 ====&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵得到QKV向量。&lt;br /&gt;
&lt;br /&gt;
==== 2.多头并行计算 ====&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
[[文件:公式3.png|居中|缩略图|400x400像素]]&lt;br /&gt;
&lt;br /&gt;
==== 3.多头合并输出 ====&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:公式4.png|居中|缩略图|616x616像素]]&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== '''机器翻译''' ====&lt;br /&gt;
注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
==== '''文本摘要''' ====&lt;br /&gt;
模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
==== '''问答系统''' ====&lt;br /&gt;
注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
==='''计算机视觉'''===&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==== '''图像描述生成''' ====&lt;br /&gt;
在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
==== '''目标检测''' ====&lt;br /&gt;
模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
==== '''图像分类''' ====&lt;br /&gt;
注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%85%AC%E5%BC%8F4.png&amp;diff=44791</id>
		<title>文件:公式4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%85%AC%E5%BC%8F4.png&amp;diff=44791"/>
		<updated>2025-06-15T06:10:36Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;公式4&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%85%AC%E5%BC%8F3.png&amp;diff=44790</id>
		<title>文件:公式3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%85%AC%E5%BC%8F3.png&amp;diff=44790"/>
		<updated>2025-06-15T06:09:57Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;公式3&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44789</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44789"/>
		<updated>2025-06-15T05:54:12Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：/* 注意力机制原理 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配，其中红色区域表明视觉系统更加关注的目标&amp;lt;ref&amp;gt;Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.&amp;lt;/ref&amp;gt;。]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。按注意力范围分类：'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|self-attention&amp;lt;ref&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. in ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Vaswani, A. ''et al.'' in ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
===== 1.查询 (Query),  键(Key), 值 (Value) 的生成 =====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 2.注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 3.归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 4.加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|缩略图]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力(3-5)。&lt;br /&gt;
&lt;br /&gt;
工作流程:&lt;br /&gt;
&lt;br /&gt;
（1）子空间Q, K, V 向量的生成&lt;br /&gt;
&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵&lt;br /&gt;
&lt;br /&gt;
对输入序列进行线性投影变换得到&lt;br /&gt;
&lt;br /&gt;
, 其维度为&lt;br /&gt;
&lt;br /&gt;
（2）多头并行计算&lt;br /&gt;
&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
&lt;br /&gt;
（3）多头合并输出&lt;br /&gt;
&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用：&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=== '''自然语言处理''' ===&lt;br /&gt;
&lt;br /&gt;
==== '''机器翻译''' ====&lt;br /&gt;
注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
==== '''文本摘要''' ====&lt;br /&gt;
模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
==== '''问答系统''' ====&lt;br /&gt;
注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref&amp;gt;Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=== '''计算机视觉''' ===&lt;br /&gt;
&lt;br /&gt;
==== '''图像描述生成''' ====&lt;br /&gt;
在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
==== '''目标检测''' ====&lt;br /&gt;
模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
==== '''图像分类''' ====&lt;br /&gt;
注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44771</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44771"/>
		<updated>2025-06-15T04:46:18Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制.png|缩略图|598x598像素|注意力机制&amp;lt;ref&amp;gt;Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020.&amp;lt;/ref&amp;gt;。注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时，会自动将注意力集中在最重要或最相关的区域上。]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的本质是，从关注全部到关注重点。比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时，能够有选择性地关注输入序列中与当前任务相关的部分，并分配不同的权重。权重越高，表示模型对该部分输入的信息给予了更多的关注。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容。注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。按注意力范围分类：'''自注意力（Self-Attention）'''：序列内部元素之间的注意力，如Transformer中的自注意力。'''交叉注意力（Cross-Attention）'''：不同序列之间的注意力，如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|self-attention&amp;lt;ref&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=|344x344像素]]&lt;br /&gt;
&lt;br /&gt;
=== 自注意力机制 ===&lt;br /&gt;
自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制&amp;lt;ref&amp;gt;Feng, Z. &amp;amp; Li, Y. in ''2024 5th International Conference on Computer Engineering and Application (ICCEA).''  449-454.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
具体的步骤为&amp;lt;ref&amp;gt;Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Vaswani, A. ''et al.'' in ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30   (2017).&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
===== 1.查询 (Query),  键(Key), 值 (Value) 的生成 =====&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。&lt;br /&gt;
&lt;br /&gt;
==== 2.注意力分数矩阵 ====&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
==== 3.归一化点乘矩阵 ====&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
==== 4.加权输出 ====&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&lt;br /&gt;
[[文件:公式2.png|居中|缩略图]]&lt;br /&gt;
具体的代码实现可参考：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 多头注意力机制 ===&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制&amp;lt;ref&amp;gt;Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).&amp;lt;/ref&amp;gt;|替代=]]多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力(3-5)。&lt;br /&gt;
&lt;br /&gt;
工作流程:&lt;br /&gt;
&lt;br /&gt;
（1）子空间Q, K, V 向量的生成&lt;br /&gt;
&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵&lt;br /&gt;
&lt;br /&gt;
对输入序列进行线性投影变换得到&lt;br /&gt;
&lt;br /&gt;
, 其维度为&lt;br /&gt;
&lt;br /&gt;
（2）多头并行计算&lt;br /&gt;
&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
&lt;br /&gt;
（3）多头合并输出&lt;br /&gt;
&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用：&lt;br /&gt;
[[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
'''自然语言处理:'''&lt;br /&gt;
&lt;br /&gt;
'''机器翻译:''' 注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
&lt;br /&gt;
'''文本摘要:''' 模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
&lt;br /&gt;
'''问答系统:''' 注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案&lt;br /&gt;
[[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;]]&lt;br /&gt;
'''计算机视觉:'''&lt;br /&gt;
&lt;br /&gt;
'''图像描述生成:''' 在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
&lt;br /&gt;
'''目标检测:''' 模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
&lt;br /&gt;
'''图像分类:''' 注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%85%AC%E5%BC%8F2.png&amp;diff=44770</id>
		<title>文件:公式2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%85%AC%E5%BC%8F2.png&amp;diff=44770"/>
		<updated>2025-06-15T04:42:23Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;公式&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.png&amp;diff=44767</id>
		<title>文件:注意力机制.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.png&amp;diff=44767"/>
		<updated>2025-06-15T04:35:28Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;注意力机制&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89.png&amp;diff=44758</id>
		<title>文件:注意力机制用于计算机视觉.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89.png&amp;diff=44758"/>
		<updated>2025-06-15T03:46:21Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;注意力机制用于计算机视觉&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E5%9C%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8.png&amp;diff=44757</id>
		<title>文件:注意力机制在自然语言处理中的应用.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E5%9C%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8.png&amp;diff=44757"/>
		<updated>2025-06-15T03:45:38Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;注意力机制在自然语言处理中的应用&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44756</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44756"/>
		<updated>2025-06-15T03:41:54Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|注意力机制的理解]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制原理 =&lt;br /&gt;
注意力机制的本质是，从关注全部到关注重点。&lt;br /&gt;
&lt;br /&gt;
比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：&lt;br /&gt;
&lt;br /&gt;
查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容&lt;br /&gt;
&lt;br /&gt;
注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的类型 =&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。&lt;br /&gt;
&lt;br /&gt;
按注意力范围分类：&lt;br /&gt;
&lt;br /&gt;
自注意力（Self-Attention）：序列内部元素之间的注意力，如Transformer中的自注意力。&lt;br /&gt;
[[文件:Self-attention.png|居中|缩略图|self-attention]]&lt;br /&gt;
交叉注意力（Cross-Attention）：不同序列之间的注意力，如编码器-解码器结构中的注意力。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[30,31,32,33],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;不同的分类标准，注意力机制可以分为多种类型。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;按注意力范围分类：&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+9&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1g&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;自注意力（Self-Attention）：序列内部元素之间的注意力，如Transformer中的自注意力&amp;amp;quot;}}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;交叉注意力（Cross-Attention）：不同序列之间的注意力，如编码器-解码器结构中的注意力&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}}}},&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;M30AdNYWJo7l4PxDzw7cb0PSn6d&amp;amp;quot;,&amp;amp;quot;AoxddNG8foQ2sHxMCbDcd9eYnI6&amp;amp;quot;,&amp;amp;quot;L3prdeCKlouYiPx1XUicfWhxn8d&amp;amp;quot;,&amp;amp;quot;Thypd4vwTorBglx3jyzcffPgnXc&amp;amp;quot;,&amp;amp;quot;MmUqdfpEIoYnq1xhP7EcOt06nne&amp;amp;quot;,&amp;amp;quot;S7lcdvJPFoCbs1xKeMxcipdwndh&amp;amp;quot;,&amp;amp;quot;EYxJdlFLvoFtLgxHfC4cG4cRnZe&amp;amp;quot;,&amp;amp;quot;LjyDdfeNvo3Ej7xCVchcEEOEnwe&amp;amp;quot;,&amp;amp;quot;ABwTdssRgo6pI5xQZNhc5RaEnqg&amp;amp;quot;,&amp;amp;quot;Ow4LdIsRyoTBojxwgJhcdpSZnLf&amp;amp;quot;,&amp;amp;quot;USqqdMtj2o9cWUxldVycCssGnzc&amp;amp;quot;,&amp;amp;quot;DCXOd8qxDo4SPFxiFpMcXwoSnzb&amp;amp;quot;,&amp;amp;quot;N98ndsupYowzUXxTooacbcwgnYd&amp;amp;quot;,&amp;amp;quot;M8TAdsdBOo8aU2xnA0ncGY8onsf&amp;amp;quot;,&amp;amp;quot;YArtdPu0yoVqEHxInyXcUMxfnQb&amp;amp;quot;,&amp;amp;quot;TLdUdxwAJoqw94xrJRRcZNtgnEe&amp;amp;quot;,&amp;amp;quot;Wat0d1h3UoX3wkx7OfochVu5n2d&amp;amp;quot;,&amp;amp;quot;CuxmdxG53o9gc4xAlf9cPpzUnkh&amp;amp;quot;,&amp;amp;quot;KpuFdVVmeoE2SWxkh6zca3kdnie&amp;amp;quot;,&amp;amp;quot;Mx2udbKoOoJpk3x4MhacHowpnEe&amp;amp;quot;,&amp;amp;quot;CAFZd1ulcoAZqGxpCkJcH2ldnpc&amp;amp;quot;,&amp;amp;quot;QayjdFjYcoA1Fzx9YCBc8ITDnjb&amp;amp;quot;,&amp;amp;quot;Kn2edmu9moNzxlxyi1McboK2nob&amp;amp;quot;,&amp;amp;quot;Ouy6dUfikouy53xdm7JcBm1InMg&amp;amp;quot;,&amp;amp;quot;FpIIdFzLGoYe9Tx101GcahZqnbf&amp;amp;quot;,&amp;amp;quot;UmIZdue72oYt5xxz3kFcKVWZnwb&amp;amp;quot;,&amp;amp;quot;Nz4Xd9ZCHoODRNxIKmucaiNfnFf&amp;amp;quot;,&amp;amp;quot;Joo9dO5FDoOGmaxOiRcc1SXLnob&amp;amp;quot;,&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;ViZudgkuDoBCIsxx8mrckuP7n3b&amp;amp;quot;,&amp;amp;quot;KwT0dSpnwo5npexvkEZcD2iXnLb&amp;amp;quot;,&amp;amp;quot;VDM3duxTPo5EBBxEWVAcnzGXnxd&amp;amp;quot;,&amp;amp;quot;HYjQdfSXpoLh8ZxzAPXczH6inGe&amp;amp;quot;,&amp;amp;quot;XG2SdE7sqo5iyAxJ8Ryc6OGGnof&amp;amp;quot;,&amp;amp;quot;RJAWdcI8MogTgDxczd9ceWSHnud&amp;amp;quot;,&amp;amp;quot;ZSHTd8goGoui1qxk4w0csxsKnfd&amp;amp;quot;,&amp;amp;quot;LmvxdWGsdo9KgNx80EZciEV0nre&amp;amp;quot;,&amp;amp;quot;MA1adBNOFoVuWgx4nFvcT6cenef&amp;amp;quot;,&amp;amp;quot;PsZkdQ6j0otjyIxGlclcztEenBh&amp;amp;quot;,&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;KDJudzs3joriUlxi7TFcjJzAnae&amp;amp;quot;,&amp;amp;quot;VqftdjOWToCr4bxngPwcnlUgnhc&amp;amp;quot;,&amp;amp;quot;KISNd7eZqoDilYxnFjUcgaOsnVh&amp;amp;quot;,&amp;amp;quot;CzhPdgsoQofm8hxJ6Akckfctn4e&amp;amp;quot;,&amp;amp;quot;EZhxdAK2toAfOOxAy0uclImunOh&amp;amp;quot;,&amp;amp;quot;Iq5ydWe5xoRSVsxVjHVcykzcnZc&amp;amp;quot;,&amp;amp;quot;LizadPNYloSMBwxCKHqcI2Qznyg&amp;amp;quot;,&amp;amp;quot;ZXmXdPCeKo0OYHxJVRecVkeYnkf&amp;amp;quot;,&amp;amp;quot;DvosdDAsdo4glKxpskPclLsUn2c&amp;amp;quot;,&amp;amp;quot;ECWdd3WzzoJAWSxC8onceqtEnVh&amp;amp;quot;,&amp;amp;quot;I0Gud48rioj7suxXW6uclNinnMd&amp;amp;quot;,&amp;amp;quot;RXKxdSPP5orlIrxPewucrNoXnSf&amp;amp;quot;,&amp;amp;quot;P1YwdZnPloUmiJxk5fXc06eKn6Q&amp;amp;quot;,&amp;amp;quot;BwyMdpdZyonHALxCWffcOMlDn3c&amp;amp;quot;,&amp;amp;quot;DMJpdunfGoL22vxb4g9cBiihnth&amp;amp;quot;,&amp;amp;quot;D1v1d3HdUot3PUxvpXrcZRLGnUg&amp;amp;quot;,&amp;amp;quot;ZcEPdC501o8kvQxXvr8c4jFLnog&amp;amp;quot;,&amp;amp;quot;Zh8Jd3sH6odSMDxqDYocEyCPn2c&amp;amp;quot;,&amp;amp;quot;K3lQdJbx6o7vBvxQOV4cki9ZnNh&amp;amp;quot;,&amp;amp;quot;TWLediEoqoneynxGNX0cPvoGn4f&amp;amp;quot;,&amp;amp;quot;RNirdrgRooPv2ex9OcDcNwOdnCc&amp;amp;quot;,&amp;amp;quot;CIrQdoawpon11DxDfyVcrwVfnQh&amp;amp;quot;,&amp;amp;quot;NeWsd97RcoZ2Wwx2BbDcM0yznYb&amp;amp;quot;,&amp;amp;quot;CMC8dittNoOQ2yxW2jpcIZKanKg&amp;amp;quot;,&amp;amp;quot;TX9qdmyGkoHUtOxzaBccdmipnEd&amp;amp;quot;,&amp;amp;quot;HIfSdkagOoaAp2xTVFocIqHonSJ&amp;amp;quot;,&amp;amp;quot;PU6bdY3Koo7AfdxpmASc4SoCnKc&amp;amp;quot;,&amp;amp;quot;ZiVAdFShEoaTprxh85Fc7Ro5nnd&amp;amp;quot;,&amp;amp;quot;Ou4YdSo8Yo8UiIxxwt2cYt1RnOb&amp;amp;quot;,&amp;amp;quot;RRAvdbOYLoVJA3xLO9PcGltZnmd&amp;amp;quot;,&amp;amp;quot;VTnMde8WYoAnp1xNqTmc6aKbncf&amp;amp;quot;,&amp;amp;quot;KC5mdqWSgoNHVVxIF8DczyB2nkh&amp;amp;quot;,&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;,&amp;amp;quot;B8J5dOUg8oyrypxvQhOcNV4Pnqh&amp;amp;quot;,&amp;amp;quot;VasHdkCnGohyNQx99sucoXJjnKd&amp;amp;quot;,&amp;amp;quot;SJCrdAKfUoqk3YxXEkQcaBQ9nVd&amp;amp;quot;,&amp;amp;quot;WsPPdG3xSolHcbxhzjBcdoobnRg&amp;amp;quot;,&amp;amp;quot;IwY5dBmqlonoQExwHTnc9VlInmh&amp;amp;quot;,&amp;amp;quot;CRVcdgIAJojwM9xwI9eczPIPn3g&amp;amp;quot;,&amp;amp;quot;EHU0dEykNoFuinxJL6NcXvoRnNe&amp;amp;quot;,&amp;amp;quot;PN3edbQABodx4ixyGUYcxtMZnTe&amp;amp;quot;,&amp;amp;quot;NSvwdYbXWoOIzuxwCLhc6ny1n2b&amp;amp;quot;,&amp;amp;quot;POXgdXbI1o69vMxZwUfcObrZnCc&amp;amp;quot;],&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null},&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;词条作业--注意力机制&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8e7c43b3-d19d-41b0-848f-af317a313ef4&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:30,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:2,&amp;amp;quot;end&amp;amp;quot;:24},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:31,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:9},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:32,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:52},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:33,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;763a5488-2fa9-4107-aa84-183dd617ebd3&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制(1)。&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[30,31,32,33],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;不同的分类标准，注意力机制可以分为多种类型。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;按注意力范围分类：&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+9&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1g&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;自注意力（Self-Attention）：序列内部元素之间的注意力，如Transformer中的自注意力&amp;amp;quot;}}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;交叉注意力（Cross-Attention）：不同序列之间的注意力，如编码器-解码器结构中的注意力&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}}}},&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;M30AdNYWJo7l4PxDzw7cb0PSn6d&amp;amp;quot;,&amp;amp;quot;AoxddNG8foQ2sHxMCbDcd9eYnI6&amp;amp;quot;,&amp;amp;quot;L3prdeCKlouYiPx1XUicfWhxn8d&amp;amp;quot;,&amp;amp;quot;Thypd4vwTorBglx3jyzcffPgnXc&amp;amp;quot;,&amp;amp;quot;MmUqdfpEIoYnq1xhP7EcOt06nne&amp;amp;quot;,&amp;amp;quot;S7lcdvJPFoCbs1xKeMxcipdwndh&amp;amp;quot;,&amp;amp;quot;EYxJdlFLvoFtLgxHfC4cG4cRnZe&amp;amp;quot;,&amp;amp;quot;LjyDdfeNvo3Ej7xCVchcEEOEnwe&amp;amp;quot;,&amp;amp;quot;ABwTdssRgo6pI5xQZNhc5RaEnqg&amp;amp;quot;,&amp;amp;quot;Ow4LdIsRyoTBojxwgJhcdpSZnLf&amp;amp;quot;,&amp;amp;quot;USqqdMtj2o9cWUxldVycCssGnzc&amp;amp;quot;,&amp;amp;quot;DCXOd8qxDo4SPFxiFpMcXwoSnzb&amp;amp;quot;,&amp;amp;quot;N98ndsupYowzUXxTooacbcwgnYd&amp;amp;quot;,&amp;amp;quot;M8TAdsdBOo8aU2xnA0ncGY8onsf&amp;amp;quot;,&amp;amp;quot;YArtdPu0yoVqEHxInyXcUMxfnQb&amp;amp;quot;,&amp;amp;quot;TLdUdxwAJoqw94xrJRRcZNtgnEe&amp;amp;quot;,&amp;amp;quot;Wat0d1h3UoX3wkx7OfochVu5n2d&amp;amp;quot;,&amp;amp;quot;CuxmdxG53o9gc4xAlf9cPpzUnkh&amp;amp;quot;,&amp;amp;quot;KpuFdVVmeoE2SWxkh6zca3kdnie&amp;amp;quot;,&amp;amp;quot;Mx2udbKoOoJpk3x4MhacHowpnEe&amp;amp;quot;,&amp;amp;quot;CAFZd1ulcoAZqGxpCkJcH2ldnpc&amp;amp;quot;,&amp;amp;quot;QayjdFjYcoA1Fzx9YCBc8ITDnjb&amp;amp;quot;,&amp;amp;quot;Kn2edmu9moNzxlxyi1McboK2nob&amp;amp;quot;,&amp;amp;quot;Ouy6dUfikouy53xdm7JcBm1InMg&amp;amp;quot;,&amp;amp;quot;FpIIdFzLGoYe9Tx101GcahZqnbf&amp;amp;quot;,&amp;amp;quot;UmIZdue72oYt5xxz3kFcKVWZnwb&amp;amp;quot;,&amp;amp;quot;Nz4Xd9ZCHoODRNxIKmucaiNfnFf&amp;amp;quot;,&amp;amp;quot;Joo9dO5FDoOGmaxOiRcc1SXLnob&amp;amp;quot;,&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;ViZudgkuDoBCIsxx8mrckuP7n3b&amp;amp;quot;,&amp;amp;quot;KwT0dSpnwo5npexvkEZcD2iXnLb&amp;amp;quot;,&amp;amp;quot;VDM3duxTPo5EBBxEWVAcnzGXnxd&amp;amp;quot;,&amp;amp;quot;HYjQdfSXpoLh8ZxzAPXczH6inGe&amp;amp;quot;,&amp;amp;quot;XG2SdE7sqo5iyAxJ8Ryc6OGGnof&amp;amp;quot;,&amp;amp;quot;RJAWdcI8MogTgDxczd9ceWSHnud&amp;amp;quot;,&amp;amp;quot;ZSHTd8goGoui1qxk4w0csxsKnfd&amp;amp;quot;,&amp;amp;quot;LmvxdWGsdo9KgNx80EZciEV0nre&amp;amp;quot;,&amp;amp;quot;MA1adBNOFoVuWgx4nFvcT6cenef&amp;amp;quot;,&amp;amp;quot;PsZkdQ6j0otjyIxGlclcztEenBh&amp;amp;quot;,&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;KDJudzs3joriUlxi7TFcjJzAnae&amp;amp;quot;,&amp;amp;quot;VqftdjOWToCr4bxngPwcnlUgnhc&amp;amp;quot;,&amp;amp;quot;KISNd7eZqoDilYxnFjUcgaOsnVh&amp;amp;quot;,&amp;amp;quot;CzhPdgsoQofm8hxJ6Akckfctn4e&amp;amp;quot;,&amp;amp;quot;EZhxdAK2toAfOOxAy0uclImunOh&amp;amp;quot;,&amp;amp;quot;Iq5ydWe5xoRSVsxVjHVcykzcnZc&amp;amp;quot;,&amp;amp;quot;LizadPNYloSMBwxCKHqcI2Qznyg&amp;amp;quot;,&amp;amp;quot;ZXmXdPCeKo0OYHxJVRecVkeYnkf&amp;amp;quot;,&amp;amp;quot;DvosdDAsdo4glKxpskPclLsUn2c&amp;amp;quot;,&amp;amp;quot;ECWdd3WzzoJAWSxC8onceqtEnVh&amp;amp;quot;,&amp;amp;quot;I0Gud48rioj7suxXW6uclNinnMd&amp;amp;quot;,&amp;amp;quot;RXKxdSPP5orlIrxPewucrNoXnSf&amp;amp;quot;,&amp;amp;quot;P1YwdZnPloUmiJxk5fXc06eKn6Q&amp;amp;quot;,&amp;amp;quot;BwyMdpdZyonHALxCWffcOMlDn3c&amp;amp;quot;,&amp;amp;quot;DMJpdunfGoL22vxb4g9cBiihnth&amp;amp;quot;,&amp;amp;quot;D1v1d3HdUot3PUxvpXrcZRLGnUg&amp;amp;quot;,&amp;amp;quot;ZcEPdC501o8kvQxXvr8c4jFLnog&amp;amp;quot;,&amp;amp;quot;Zh8Jd3sH6odSMDxqDYocEyCPn2c&amp;amp;quot;,&amp;amp;quot;K3lQdJbx6o7vBvxQOV4cki9ZnNh&amp;amp;quot;,&amp;amp;quot;TWLediEoqoneynxGNX0cPvoGn4f&amp;amp;quot;,&amp;amp;quot;RNirdrgRooPv2ex9OcDcNwOdnCc&amp;amp;quot;,&amp;amp;quot;CIrQdoawpon11DxDfyVcrwVfnQh&amp;amp;quot;,&amp;amp;quot;NeWsd97RcoZ2Wwx2BbDcM0yznYb&amp;amp;quot;,&amp;amp;quot;CMC8dittNoOQ2yxW2jpcIZKanKg&amp;amp;quot;,&amp;amp;quot;TX9qdmyGkoHUtOxzaBccdmipnEd&amp;amp;quot;,&amp;amp;quot;HIfSdkagOoaAp2xTVFocIqHonSJ&amp;amp;quot;,&amp;amp;quot;PU6bdY3Koo7AfdxpmASc4SoCnKc&amp;amp;quot;,&amp;amp;quot;ZiVAdFShEoaTprxh85Fc7Ro5nnd&amp;amp;quot;,&amp;amp;quot;Ou4YdSo8Yo8UiIxxwt2cYt1RnOb&amp;amp;quot;,&amp;amp;quot;RRAvdbOYLoVJA3xLO9PcGltZnmd&amp;amp;quot;,&amp;amp;quot;VTnMde8WYoAnp1xNqTmc6aKbncf&amp;amp;quot;,&amp;amp;quot;KC5mdqWSgoNHVVxIF8DczyB2nkh&amp;amp;quot;,&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;,&amp;amp;quot;B8J5dOUg8oyrypxvQhOcNV4Pnqh&amp;amp;quot;,&amp;amp;quot;VasHdkCnGohyNQx99sucoXJjnKd&amp;amp;quot;,&amp;amp;quot;SJCrdAKfUoqk3YxXEkQcaBQ9nVd&amp;amp;quot;,&amp;amp;quot;WsPPdG3xSolHcbxhzjBcdoobnRg&amp;amp;quot;,&amp;amp;quot;IwY5dBmqlonoQExwHTnc9VlInmh&amp;amp;quot;,&amp;amp;quot;CRVcdgIAJojwM9xwI9eczPIPn3g&amp;amp;quot;,&amp;amp;quot;EHU0dEykNoFuinxJL6NcXvoRnNe&amp;amp;quot;,&amp;amp;quot;PN3edbQABodx4ixyGUYcxtMZnTe&amp;amp;quot;,&amp;amp;quot;NSvwdYbXWoOIzuxwCLhc6ny1n2b&amp;amp;quot;,&amp;amp;quot;POXgdXbI1o69vMxZwUfcObrZnCc&amp;amp;quot;],&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null},&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;词条作业--注意力机制&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8e7c43b3-d19d-41b0-848f-af317a313ef4&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:30,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:2,&amp;amp;quot;end&amp;amp;quot;:24},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:31,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:9},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:32,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:52},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:33,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;763a5488-2fa9-4107-aa84-183dd617ebd3&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
工作流程(2,3)：&lt;br /&gt;
&lt;br /&gt;
（1）查询 (Query),  键(Key), 值 (Value) 的生成&lt;br /&gt;
&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。在Transformer中，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
（2）注意力分数矩阵&lt;br /&gt;
&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
（3）归一化点乘矩阵&lt;br /&gt;
&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
（4）加权输出&lt;br /&gt;
&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&lt;br /&gt;
&lt;br /&gt;
整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[44,45,46,47,48],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（3）归一化点乘矩阵&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+a&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1x&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&amp;amp;quot;}}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+7&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（4）加权输出&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+z&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;}},&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1j&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;M30AdNYWJo7l4PxDzw7cb0PSn6d&amp;amp;quot;,&amp;amp;quot;AoxddNG8foQ2sHxMCbDcd9eYnI6&amp;amp;quot;,&amp;amp;quot;L3prdeCKlouYiPx1XUicfWhxn8d&amp;amp;quot;,&amp;amp;quot;Thypd4vwTorBglx3jyzcffPgnXc&amp;amp;quot;,&amp;amp;quot;MmUqdfpEIoYnq1xhP7EcOt06nne&amp;amp;quot;,&amp;amp;quot;S7lcdvJPFoCbs1xKeMxcipdwndh&amp;amp;quot;,&amp;amp;quot;EYxJdlFLvoFtLgxHfC4cG4cRnZe&amp;amp;quot;,&amp;amp;quot;LjyDdfeNvo3Ej7xCVchcEEOEnwe&amp;amp;quot;,&amp;amp;quot;ABwTdssRgo6pI5xQZNhc5RaEnqg&amp;amp;quot;,&amp;amp;quot;Ow4LdIsRyoTBojxwgJhcdpSZnLf&amp;amp;quot;,&amp;amp;quot;USqqdMtj2o9cWUxldVycCssGnzc&amp;amp;quot;,&amp;amp;quot;DCXOd8qxDo4SPFxiFpMcXwoSnzb&amp;amp;quot;,&amp;amp;quot;N98ndsupYowzUXxTooacbcwgnYd&amp;amp;quot;,&amp;amp;quot;M8TAdsdBOo8aU2xnA0ncGY8onsf&amp;amp;quot;,&amp;amp;quot;YArtdPu0yoVqEHxInyXcUMxfnQb&amp;amp;quot;,&amp;amp;quot;TLdUdxwAJoqw94xrJRRcZNtgnEe&amp;amp;quot;,&amp;amp;quot;Wat0d1h3UoX3wkx7OfochVu5n2d&amp;amp;quot;,&amp;amp;quot;CuxmdxG53o9gc4xAlf9cPpzUnkh&amp;amp;quot;,&amp;amp;quot;KpuFdVVmeoE2SWxkh6zca3kdnie&amp;amp;quot;,&amp;amp;quot;Mx2udbKoOoJpk3x4MhacHowpnEe&amp;amp;quot;,&amp;amp;quot;CAFZd1ulcoAZqGxpCkJcH2ldnpc&amp;amp;quot;,&amp;amp;quot;QayjdFjYcoA1Fzx9YCBc8ITDnjb&amp;amp;quot;,&amp;amp;quot;Kn2edmu9moNzxlxyi1McboK2nob&amp;amp;quot;,&amp;amp;quot;Ouy6dUfikouy53xdm7JcBm1InMg&amp;amp;quot;,&amp;amp;quot;FpIIdFzLGoYe9Tx101GcahZqnbf&amp;amp;quot;,&amp;amp;quot;UmIZdue72oYt5xxz3kFcKVWZnwb&amp;amp;quot;,&amp;amp;quot;Nz4Xd9ZCHoODRNxIKmucaiNfnFf&amp;amp;quot;,&amp;amp;quot;Joo9dO5FDoOGmaxOiRcc1SXLnob&amp;amp;quot;,&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;ViZudgkuDoBCIsxx8mrckuP7n3b&amp;amp;quot;,&amp;amp;quot;KwT0dSpnwo5npexvkEZcD2iXnLb&amp;amp;quot;,&amp;amp;quot;VDM3duxTPo5EBBxEWVAcnzGXnxd&amp;amp;quot;,&amp;amp;quot;HYjQdfSXpoLh8ZxzAPXczH6inGe&amp;amp;quot;,&amp;amp;quot;XG2SdE7sqo5iyAxJ8Ryc6OGGnof&amp;amp;quot;,&amp;amp;quot;RJAWdcI8MogTgDxczd9ceWSHnud&amp;amp;quot;,&amp;amp;quot;ZSHTd8goGoui1qxk4w0csxsKnfd&amp;amp;quot;,&amp;amp;quot;LmvxdWGsdo9KgNx80EZciEV0nre&amp;amp;quot;,&amp;amp;quot;MA1adBNOFoVuWgx4nFvcT6cenef&amp;amp;quot;,&amp;amp;quot;PsZkdQ6j0otjyIxGlclcztEenBh&amp;amp;quot;,&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;KDJudzs3joriUlxi7TFcjJzAnae&amp;amp;quot;,&amp;amp;quot;VqftdjOWToCr4bxngPwcnlUgnhc&amp;amp;quot;,&amp;amp;quot;KISNd7eZqoDilYxnFjUcgaOsnVh&amp;amp;quot;,&amp;amp;quot;CzhPdgsoQofm8hxJ6Akckfctn4e&amp;amp;quot;,&amp;amp;quot;EZhxdAK2toAfOOxAy0uclImunOh&amp;amp;quot;,&amp;amp;quot;Iq5ydWe5xoRSVsxVjHVcykzcnZc&amp;amp;quot;,&amp;amp;quot;LizadPNYloSMBwxCKHqcI2Qznyg&amp;amp;quot;,&amp;amp;quot;ZXmXdPCeKo0OYHxJVRecVkeYnkf&amp;amp;quot;,&amp;amp;quot;DvosdDAsdo4glKxpskPclLsUn2c&amp;amp;quot;,&amp;amp;quot;ECWdd3WzzoJAWSxC8onceqtEnVh&amp;amp;quot;,&amp;amp;quot;I0Gud48rioj7suxXW6uclNinnMd&amp;amp;quot;,&amp;amp;quot;RXKxdSPP5orlIrxPewucrNoXnSf&amp;amp;quot;,&amp;amp;quot;P1YwdZnPloUmiJxk5fXc06eKn6Q&amp;amp;quot;,&amp;amp;quot;BwyMdpdZyonHALxCWffcOMlDn3c&amp;amp;quot;,&amp;amp;quot;DMJpdunfGoL22vxb4g9cBiihnth&amp;amp;quot;,&amp;amp;quot;D1v1d3HdUot3PUxvpXrcZRLGnUg&amp;amp;quot;,&amp;amp;quot;ZcEPdC501o8kvQxXvr8c4jFLnog&amp;amp;quot;,&amp;amp;quot;Zh8Jd3sH6odSMDxqDYocEyCPn2c&amp;amp;quot;,&amp;amp;quot;K3lQdJbx6o7vBvxQOV4cki9ZnNh&amp;amp;quot;,&amp;amp;quot;TWLediEoqoneynxGNX0cPvoGn4f&amp;amp;quot;,&amp;amp;quot;RNirdrgRooPv2ex9OcDcNwOdnCc&amp;amp;quot;,&amp;amp;quot;CIrQdoawpon11DxDfyVcrwVfnQh&amp;amp;quot;,&amp;amp;quot;NeWsd97RcoZ2Wwx2BbDcM0yznYb&amp;amp;quot;,&amp;amp;quot;CMC8dittNoOQ2yxW2jpcIZKanKg&amp;amp;quot;,&amp;amp;quot;TX9qdmyGkoHUtOxzaBccdmipnEd&amp;amp;quot;,&amp;amp;quot;HIfSdkagOoaAp2xTVFocIqHonSJ&amp;amp;quot;,&amp;amp;quot;PU6bdY3Koo7AfdxpmASc4SoCnKc&amp;amp;quot;,&amp;amp;quot;ZiVAdFShEoaTprxh85Fc7Ro5nnd&amp;amp;quot;,&amp;amp;quot;Ou4YdSo8Yo8UiIxxwt2cYt1RnOb&amp;amp;quot;,&amp;amp;quot;RRAvdbOYLoVJA3xLO9PcGltZnmd&amp;amp;quot;,&amp;amp;quot;VTnMde8WYoAnp1xNqTmc6aKbncf&amp;amp;quot;,&amp;amp;quot;KC5mdqWSgoNHVVxIF8DczyB2nkh&amp;amp;quot;,&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;,&amp;amp;quot;B8J5dOUg8oyrypxvQhOcNV4Pnqh&amp;amp;quot;,&amp;amp;quot;VasHdkCnGohyNQx99sucoXJjnKd&amp;amp;quot;,&amp;amp;quot;SJCrdAKfUoqk3YxXEkQcaBQ9nVd&amp;amp;quot;,&amp;amp;quot;WsPPdG3xSolHcbxhzjBcdoobnRg&amp;amp;quot;,&amp;amp;quot;IwY5dBmqlonoQExwHTnc9VlInmh&amp;amp;quot;,&amp;amp;quot;CRVcdgIAJojwM9xwI9eczPIPn3g&amp;amp;quot;,&amp;amp;quot;EHU0dEykNoFuinxJL6NcXvoRnNe&amp;amp;quot;,&amp;amp;quot;PN3edbQABodx4ixyGUYcxtMZnTe&amp;amp;quot;,&amp;amp;quot;NSvwdYbXWoOIzuxwCLhc6ny1n2b&amp;amp;quot;,&amp;amp;quot;POXgdXbI1o69vMxZwUfcObrZnCc&amp;amp;quot;],&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null},&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;词条作业--注意力机制&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;94e291cb-ab77-4893-aee3-ec4aabe88184&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:44,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:10},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:45,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:69},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:46,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:7},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:47,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:35},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:48,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:55},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;763a5488-2fa9-4107-aa84-183dd617ebd3&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。&lt;br /&gt;
多头注意力机制将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力(3-5)。&lt;br /&gt;
&lt;br /&gt;
工作流程:&lt;br /&gt;
&lt;br /&gt;
（1）子空间Q, K, V 向量的生成&lt;br /&gt;
&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵&lt;br /&gt;
&lt;br /&gt;
对输入序列进行线性投影变换得到&lt;br /&gt;
&lt;br /&gt;
, 其维度为&lt;br /&gt;
&lt;br /&gt;
（2）多头并行计算&lt;br /&gt;
&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
&lt;br /&gt;
（3）多头合并输出&lt;br /&gt;
&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制|替代=|居中]]&lt;br /&gt;
&lt;br /&gt;
= 注意力机制的应用 =&lt;br /&gt;
注意力机制在各种人工智能领域都得到了广泛的应用：&lt;br /&gt;
&lt;br /&gt;
* '''自然语言处理:'''&lt;br /&gt;
** '''机器翻译:''' 注意力机制使得模型在翻译长句子时，能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制，我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时，我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。&lt;br /&gt;
** '''文本摘要:''' 模型可以学习关注文档中的关键句子或段落，生成更准确、更简洁的摘要。&lt;br /&gt;
** '''问答系统:''' 注意力机制帮助模型定位问题相关的文档段落，从而给出更准确的答案。&lt;br /&gt;
&lt;br /&gt;
* '''计算机视觉:'''&lt;br /&gt;
** '''图像描述生成:''' 在生成描述的每一个单词时，注意力机制来选择一些来自于图像的相关信息，关注图像的不同区域。&lt;br /&gt;
** '''目标检测:''' 模型可以使用注意力机制来聚焦于图像中可能存在目标的区域，提高检测的准确性和效率。&lt;br /&gt;
** '''图像分类:''' 注意力机制可以帮助模型关注图像中对分类决策至关重要的区域。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
值得一提的是，ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。&lt;br /&gt;
&lt;br /&gt;
= 参考文献 =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44755</id>
		<title>注意力机制</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6&amp;diff=44755"/>
		<updated>2025-06-15T03:36:46Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：注意力机制&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[文件:注意力机制的理解.png|缩略图|注意力机制的理解]]&lt;br /&gt;
在认知科学中，由于信息处理的瓶颈，人类会选择性地关注所有信息的一部分，同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式，在人工智能领域，注意力机制（Attention Mechanism）是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分，而不是平等对待所有输入信息。注意力机制可以增强可解释性：通过可视化注意力权重，帮助理解模型的决策过程。&lt;br /&gt;
&lt;br /&gt;
=== 注意力机制原理 ===&lt;br /&gt;
注意力机制的本质是，从关注全部到关注重点。&lt;br /&gt;
&lt;br /&gt;
比如，当我们阅读文章或观看图像时，视觉系统会自动将注意力集中在关键信息上，而非均匀处理所有细节。&lt;br /&gt;
&lt;br /&gt;
注意力机制的计算过程包含三个核心组件：&lt;br /&gt;
&lt;br /&gt;
查询（Query, Q）：表示当前需要关注什么；键（Key, K）：表示可以被关注的信息；值（Value, V）：表示实际的信息内容&lt;br /&gt;
&lt;br /&gt;
注意力机制计算一个权重分布，该分布表示了查询与每个键之间的相关性。然后，将这些权重与对应的值进行加权求和，得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时，从输入序列中“提取”出的最相关信息。&lt;br /&gt;
&lt;br /&gt;
=== 注意力机制的类型 ===&lt;br /&gt;
根据不同的分类标准，注意力机制可以分为多种类型。&lt;br /&gt;
&lt;br /&gt;
按注意力范围分类：&lt;br /&gt;
&lt;br /&gt;
自注意力（Self-Attention）：序列内部元素之间的注意力，如Transformer中的自注意力。&lt;br /&gt;
[[文件:Self-attention.png|居中|缩略图|self-attention]]&lt;br /&gt;
交叉注意力（Cross-Attention）：不同序列之间的注意力，如编码器-解码器结构中的注意力。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[30,31,32,33],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;不同的分类标准，注意力机制可以分为多种类型。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;按注意力范围分类：&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+9&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1g&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;自注意力（Self-Attention）：序列内部元素之间的注意力，如Transformer中的自注意力&amp;amp;quot;}}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;交叉注意力（Cross-Attention）：不同序列之间的注意力，如编码器-解码器结构中的注意力&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}}}},&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;M30AdNYWJo7l4PxDzw7cb0PSn6d&amp;amp;quot;,&amp;amp;quot;AoxddNG8foQ2sHxMCbDcd9eYnI6&amp;amp;quot;,&amp;amp;quot;L3prdeCKlouYiPx1XUicfWhxn8d&amp;amp;quot;,&amp;amp;quot;Thypd4vwTorBglx3jyzcffPgnXc&amp;amp;quot;,&amp;amp;quot;MmUqdfpEIoYnq1xhP7EcOt06nne&amp;amp;quot;,&amp;amp;quot;S7lcdvJPFoCbs1xKeMxcipdwndh&amp;amp;quot;,&amp;amp;quot;EYxJdlFLvoFtLgxHfC4cG4cRnZe&amp;amp;quot;,&amp;amp;quot;LjyDdfeNvo3Ej7xCVchcEEOEnwe&amp;amp;quot;,&amp;amp;quot;ABwTdssRgo6pI5xQZNhc5RaEnqg&amp;amp;quot;,&amp;amp;quot;Ow4LdIsRyoTBojxwgJhcdpSZnLf&amp;amp;quot;,&amp;amp;quot;USqqdMtj2o9cWUxldVycCssGnzc&amp;amp;quot;,&amp;amp;quot;DCXOd8qxDo4SPFxiFpMcXwoSnzb&amp;amp;quot;,&amp;amp;quot;N98ndsupYowzUXxTooacbcwgnYd&amp;amp;quot;,&amp;amp;quot;M8TAdsdBOo8aU2xnA0ncGY8onsf&amp;amp;quot;,&amp;amp;quot;YArtdPu0yoVqEHxInyXcUMxfnQb&amp;amp;quot;,&amp;amp;quot;TLdUdxwAJoqw94xrJRRcZNtgnEe&amp;amp;quot;,&amp;amp;quot;Wat0d1h3UoX3wkx7OfochVu5n2d&amp;amp;quot;,&amp;amp;quot;CuxmdxG53o9gc4xAlf9cPpzUnkh&amp;amp;quot;,&amp;amp;quot;KpuFdVVmeoE2SWxkh6zca3kdnie&amp;amp;quot;,&amp;amp;quot;Mx2udbKoOoJpk3x4MhacHowpnEe&amp;amp;quot;,&amp;amp;quot;CAFZd1ulcoAZqGxpCkJcH2ldnpc&amp;amp;quot;,&amp;amp;quot;QayjdFjYcoA1Fzx9YCBc8ITDnjb&amp;amp;quot;,&amp;amp;quot;Kn2edmu9moNzxlxyi1McboK2nob&amp;amp;quot;,&amp;amp;quot;Ouy6dUfikouy53xdm7JcBm1InMg&amp;amp;quot;,&amp;amp;quot;FpIIdFzLGoYe9Tx101GcahZqnbf&amp;amp;quot;,&amp;amp;quot;UmIZdue72oYt5xxz3kFcKVWZnwb&amp;amp;quot;,&amp;amp;quot;Nz4Xd9ZCHoODRNxIKmucaiNfnFf&amp;amp;quot;,&amp;amp;quot;Joo9dO5FDoOGmaxOiRcc1SXLnob&amp;amp;quot;,&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;ViZudgkuDoBCIsxx8mrckuP7n3b&amp;amp;quot;,&amp;amp;quot;KwT0dSpnwo5npexvkEZcD2iXnLb&amp;amp;quot;,&amp;amp;quot;VDM3duxTPo5EBBxEWVAcnzGXnxd&amp;amp;quot;,&amp;amp;quot;HYjQdfSXpoLh8ZxzAPXczH6inGe&amp;amp;quot;,&amp;amp;quot;XG2SdE7sqo5iyAxJ8Ryc6OGGnof&amp;amp;quot;,&amp;amp;quot;RJAWdcI8MogTgDxczd9ceWSHnud&amp;amp;quot;,&amp;amp;quot;ZSHTd8goGoui1qxk4w0csxsKnfd&amp;amp;quot;,&amp;amp;quot;LmvxdWGsdo9KgNx80EZciEV0nre&amp;amp;quot;,&amp;amp;quot;MA1adBNOFoVuWgx4nFvcT6cenef&amp;amp;quot;,&amp;amp;quot;PsZkdQ6j0otjyIxGlclcztEenBh&amp;amp;quot;,&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;KDJudzs3joriUlxi7TFcjJzAnae&amp;amp;quot;,&amp;amp;quot;VqftdjOWToCr4bxngPwcnlUgnhc&amp;amp;quot;,&amp;amp;quot;KISNd7eZqoDilYxnFjUcgaOsnVh&amp;amp;quot;,&amp;amp;quot;CzhPdgsoQofm8hxJ6Akckfctn4e&amp;amp;quot;,&amp;amp;quot;EZhxdAK2toAfOOxAy0uclImunOh&amp;amp;quot;,&amp;amp;quot;Iq5ydWe5xoRSVsxVjHVcykzcnZc&amp;amp;quot;,&amp;amp;quot;LizadPNYloSMBwxCKHqcI2Qznyg&amp;amp;quot;,&amp;amp;quot;ZXmXdPCeKo0OYHxJVRecVkeYnkf&amp;amp;quot;,&amp;amp;quot;DvosdDAsdo4glKxpskPclLsUn2c&amp;amp;quot;,&amp;amp;quot;ECWdd3WzzoJAWSxC8onceqtEnVh&amp;amp;quot;,&amp;amp;quot;I0Gud48rioj7suxXW6uclNinnMd&amp;amp;quot;,&amp;amp;quot;RXKxdSPP5orlIrxPewucrNoXnSf&amp;amp;quot;,&amp;amp;quot;P1YwdZnPloUmiJxk5fXc06eKn6Q&amp;amp;quot;,&amp;amp;quot;BwyMdpdZyonHALxCWffcOMlDn3c&amp;amp;quot;,&amp;amp;quot;DMJpdunfGoL22vxb4g9cBiihnth&amp;amp;quot;,&amp;amp;quot;D1v1d3HdUot3PUxvpXrcZRLGnUg&amp;amp;quot;,&amp;amp;quot;ZcEPdC501o8kvQxXvr8c4jFLnog&amp;amp;quot;,&amp;amp;quot;Zh8Jd3sH6odSMDxqDYocEyCPn2c&amp;amp;quot;,&amp;amp;quot;K3lQdJbx6o7vBvxQOV4cki9ZnNh&amp;amp;quot;,&amp;amp;quot;TWLediEoqoneynxGNX0cPvoGn4f&amp;amp;quot;,&amp;amp;quot;RNirdrgRooPv2ex9OcDcNwOdnCc&amp;amp;quot;,&amp;amp;quot;CIrQdoawpon11DxDfyVcrwVfnQh&amp;amp;quot;,&amp;amp;quot;NeWsd97RcoZ2Wwx2BbDcM0yznYb&amp;amp;quot;,&amp;amp;quot;CMC8dittNoOQ2yxW2jpcIZKanKg&amp;amp;quot;,&amp;amp;quot;TX9qdmyGkoHUtOxzaBccdmipnEd&amp;amp;quot;,&amp;amp;quot;HIfSdkagOoaAp2xTVFocIqHonSJ&amp;amp;quot;,&amp;amp;quot;PU6bdY3Koo7AfdxpmASc4SoCnKc&amp;amp;quot;,&amp;amp;quot;ZiVAdFShEoaTprxh85Fc7Ro5nnd&amp;amp;quot;,&amp;amp;quot;Ou4YdSo8Yo8UiIxxwt2cYt1RnOb&amp;amp;quot;,&amp;amp;quot;RRAvdbOYLoVJA3xLO9PcGltZnmd&amp;amp;quot;,&amp;amp;quot;VTnMde8WYoAnp1xNqTmc6aKbncf&amp;amp;quot;,&amp;amp;quot;KC5mdqWSgoNHVVxIF8DczyB2nkh&amp;amp;quot;,&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;,&amp;amp;quot;B8J5dOUg8oyrypxvQhOcNV4Pnqh&amp;amp;quot;,&amp;amp;quot;VasHdkCnGohyNQx99sucoXJjnKd&amp;amp;quot;,&amp;amp;quot;SJCrdAKfUoqk3YxXEkQcaBQ9nVd&amp;amp;quot;,&amp;amp;quot;WsPPdG3xSolHcbxhzjBcdoobnRg&amp;amp;quot;,&amp;amp;quot;IwY5dBmqlonoQExwHTnc9VlInmh&amp;amp;quot;,&amp;amp;quot;CRVcdgIAJojwM9xwI9eczPIPn3g&amp;amp;quot;,&amp;amp;quot;EHU0dEykNoFuinxJL6NcXvoRnNe&amp;amp;quot;,&amp;amp;quot;PN3edbQABodx4ixyGUYcxtMZnTe&amp;amp;quot;,&amp;amp;quot;NSvwdYbXWoOIzuxwCLhc6ny1n2b&amp;amp;quot;,&amp;amp;quot;POXgdXbI1o69vMxZwUfcObrZnCc&amp;amp;quot;],&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null},&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;词条作业--注意力机制&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8e7c43b3-d19d-41b0-848f-af317a313ef4&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:30,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:2,&amp;amp;quot;end&amp;amp;quot;:24},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:31,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:9},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:32,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:52},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:33,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;763a5488-2fa9-4107-aa84-183dd617ebd3&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;自注意力机制通过动态权重分配，允许序列中每个元素与其他元素进行交互，从而动态聚合全局上下文信息，精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制(1)。&lt;br /&gt;
&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[30,31,32,33],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;不同的分类标准，注意力机制可以分为多种类型。&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+m&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;按注意力范围分类：&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+9&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false}},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1g&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;自注意力（Self-Attention）：序列内部元素之间的注意力，如Transformer中的自注意力&amp;amp;quot;}}},&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;交叉注意力（Cross-Attention）：不同序列之间的注意力，如编码器-解码器结构中的注意力&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1d&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}}}},&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;M30AdNYWJo7l4PxDzw7cb0PSn6d&amp;amp;quot;,&amp;amp;quot;AoxddNG8foQ2sHxMCbDcd9eYnI6&amp;amp;quot;,&amp;amp;quot;L3prdeCKlouYiPx1XUicfWhxn8d&amp;amp;quot;,&amp;amp;quot;Thypd4vwTorBglx3jyzcffPgnXc&amp;amp;quot;,&amp;amp;quot;MmUqdfpEIoYnq1xhP7EcOt06nne&amp;amp;quot;,&amp;amp;quot;S7lcdvJPFoCbs1xKeMxcipdwndh&amp;amp;quot;,&amp;amp;quot;EYxJdlFLvoFtLgxHfC4cG4cRnZe&amp;amp;quot;,&amp;amp;quot;LjyDdfeNvo3Ej7xCVchcEEOEnwe&amp;amp;quot;,&amp;amp;quot;ABwTdssRgo6pI5xQZNhc5RaEnqg&amp;amp;quot;,&amp;amp;quot;Ow4LdIsRyoTBojxwgJhcdpSZnLf&amp;amp;quot;,&amp;amp;quot;USqqdMtj2o9cWUxldVycCssGnzc&amp;amp;quot;,&amp;amp;quot;DCXOd8qxDo4SPFxiFpMcXwoSnzb&amp;amp;quot;,&amp;amp;quot;N98ndsupYowzUXxTooacbcwgnYd&amp;amp;quot;,&amp;amp;quot;M8TAdsdBOo8aU2xnA0ncGY8onsf&amp;amp;quot;,&amp;amp;quot;YArtdPu0yoVqEHxInyXcUMxfnQb&amp;amp;quot;,&amp;amp;quot;TLdUdxwAJoqw94xrJRRcZNtgnEe&amp;amp;quot;,&amp;amp;quot;Wat0d1h3UoX3wkx7OfochVu5n2d&amp;amp;quot;,&amp;amp;quot;CuxmdxG53o9gc4xAlf9cPpzUnkh&amp;amp;quot;,&amp;amp;quot;KpuFdVVmeoE2SWxkh6zca3kdnie&amp;amp;quot;,&amp;amp;quot;Mx2udbKoOoJpk3x4MhacHowpnEe&amp;amp;quot;,&amp;amp;quot;CAFZd1ulcoAZqGxpCkJcH2ldnpc&amp;amp;quot;,&amp;amp;quot;QayjdFjYcoA1Fzx9YCBc8ITDnjb&amp;amp;quot;,&amp;amp;quot;Kn2edmu9moNzxlxyi1McboK2nob&amp;amp;quot;,&amp;amp;quot;Ouy6dUfikouy53xdm7JcBm1InMg&amp;amp;quot;,&amp;amp;quot;FpIIdFzLGoYe9Tx101GcahZqnbf&amp;amp;quot;,&amp;amp;quot;UmIZdue72oYt5xxz3kFcKVWZnwb&amp;amp;quot;,&amp;amp;quot;Nz4Xd9ZCHoODRNxIKmucaiNfnFf&amp;amp;quot;,&amp;amp;quot;Joo9dO5FDoOGmaxOiRcc1SXLnob&amp;amp;quot;,&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;ViZudgkuDoBCIsxx8mrckuP7n3b&amp;amp;quot;,&amp;amp;quot;KwT0dSpnwo5npexvkEZcD2iXnLb&amp;amp;quot;,&amp;amp;quot;VDM3duxTPo5EBBxEWVAcnzGXnxd&amp;amp;quot;,&amp;amp;quot;HYjQdfSXpoLh8ZxzAPXczH6inGe&amp;amp;quot;,&amp;amp;quot;XG2SdE7sqo5iyAxJ8Ryc6OGGnof&amp;amp;quot;,&amp;amp;quot;RJAWdcI8MogTgDxczd9ceWSHnud&amp;amp;quot;,&amp;amp;quot;ZSHTd8goGoui1qxk4w0csxsKnfd&amp;amp;quot;,&amp;amp;quot;LmvxdWGsdo9KgNx80EZciEV0nre&amp;amp;quot;,&amp;amp;quot;MA1adBNOFoVuWgx4nFvcT6cenef&amp;amp;quot;,&amp;amp;quot;PsZkdQ6j0otjyIxGlclcztEenBh&amp;amp;quot;,&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;KDJudzs3joriUlxi7TFcjJzAnae&amp;amp;quot;,&amp;amp;quot;VqftdjOWToCr4bxngPwcnlUgnhc&amp;amp;quot;,&amp;amp;quot;KISNd7eZqoDilYxnFjUcgaOsnVh&amp;amp;quot;,&amp;amp;quot;CzhPdgsoQofm8hxJ6Akckfctn4e&amp;amp;quot;,&amp;amp;quot;EZhxdAK2toAfOOxAy0uclImunOh&amp;amp;quot;,&amp;amp;quot;Iq5ydWe5xoRSVsxVjHVcykzcnZc&amp;amp;quot;,&amp;amp;quot;LizadPNYloSMBwxCKHqcI2Qznyg&amp;amp;quot;,&amp;amp;quot;ZXmXdPCeKo0OYHxJVRecVkeYnkf&amp;amp;quot;,&amp;amp;quot;DvosdDAsdo4glKxpskPclLsUn2c&amp;amp;quot;,&amp;amp;quot;ECWdd3WzzoJAWSxC8onceqtEnVh&amp;amp;quot;,&amp;amp;quot;I0Gud48rioj7suxXW6uclNinnMd&amp;amp;quot;,&amp;amp;quot;RXKxdSPP5orlIrxPewucrNoXnSf&amp;amp;quot;,&amp;amp;quot;P1YwdZnPloUmiJxk5fXc06eKn6Q&amp;amp;quot;,&amp;amp;quot;BwyMdpdZyonHALxCWffcOMlDn3c&amp;amp;quot;,&amp;amp;quot;DMJpdunfGoL22vxb4g9cBiihnth&amp;amp;quot;,&amp;amp;quot;D1v1d3HdUot3PUxvpXrcZRLGnUg&amp;amp;quot;,&amp;amp;quot;ZcEPdC501o8kvQxXvr8c4jFLnog&amp;amp;quot;,&amp;amp;quot;Zh8Jd3sH6odSMDxqDYocEyCPn2c&amp;amp;quot;,&amp;amp;quot;K3lQdJbx6o7vBvxQOV4cki9ZnNh&amp;amp;quot;,&amp;amp;quot;TWLediEoqoneynxGNX0cPvoGn4f&amp;amp;quot;,&amp;amp;quot;RNirdrgRooPv2ex9OcDcNwOdnCc&amp;amp;quot;,&amp;amp;quot;CIrQdoawpon11DxDfyVcrwVfnQh&amp;amp;quot;,&amp;amp;quot;NeWsd97RcoZ2Wwx2BbDcM0yznYb&amp;amp;quot;,&amp;amp;quot;CMC8dittNoOQ2yxW2jpcIZKanKg&amp;amp;quot;,&amp;amp;quot;TX9qdmyGkoHUtOxzaBccdmipnEd&amp;amp;quot;,&amp;amp;quot;HIfSdkagOoaAp2xTVFocIqHonSJ&amp;amp;quot;,&amp;amp;quot;PU6bdY3Koo7AfdxpmASc4SoCnKc&amp;amp;quot;,&amp;amp;quot;ZiVAdFShEoaTprxh85Fc7Ro5nnd&amp;amp;quot;,&amp;amp;quot;Ou4YdSo8Yo8UiIxxwt2cYt1RnOb&amp;amp;quot;,&amp;amp;quot;RRAvdbOYLoVJA3xLO9PcGltZnmd&amp;amp;quot;,&amp;amp;quot;VTnMde8WYoAnp1xNqTmc6aKbncf&amp;amp;quot;,&amp;amp;quot;KC5mdqWSgoNHVVxIF8DczyB2nkh&amp;amp;quot;,&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;,&amp;amp;quot;B8J5dOUg8oyrypxvQhOcNV4Pnqh&amp;amp;quot;,&amp;amp;quot;VasHdkCnGohyNQx99sucoXJjnKd&amp;amp;quot;,&amp;amp;quot;SJCrdAKfUoqk3YxXEkQcaBQ9nVd&amp;amp;quot;,&amp;amp;quot;WsPPdG3xSolHcbxhzjBcdoobnRg&amp;amp;quot;,&amp;amp;quot;IwY5dBmqlonoQExwHTnc9VlInmh&amp;amp;quot;,&amp;amp;quot;CRVcdgIAJojwM9xwI9eczPIPn3g&amp;amp;quot;,&amp;amp;quot;EHU0dEykNoFuinxJL6NcXvoRnNe&amp;amp;quot;,&amp;amp;quot;PN3edbQABodx4ixyGUYcxtMZnTe&amp;amp;quot;,&amp;amp;quot;NSvwdYbXWoOIzuxwCLhc6ny1n2b&amp;amp;quot;,&amp;amp;quot;POXgdXbI1o69vMxZwUfcObrZnCc&amp;amp;quot;],&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null},&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;词条作业--注意力机制&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;8e7c43b3-d19d-41b0-848f-af317a313ef4&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:false},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:30,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:2,&amp;amp;quot;end&amp;amp;quot;:24},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:31,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:9},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:32,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:52},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:33,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:49},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;763a5488-2fa9-4107-aa84-183dd617ebd3&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
工作流程(2,3)：&lt;br /&gt;
&lt;br /&gt;
（1）查询 (Query),  键(Key), 值 (Value) 的生成&lt;br /&gt;
&lt;br /&gt;
将输入序列转化形成的嵌入向量（可以是词向量，也可以是词向量加上位置编码向量）分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k)，V向量的维度为d(v)。在Transformer中，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
（2）注意力分数矩阵&lt;br /&gt;
&lt;br /&gt;
将Q向量与所有K向量点乘（matrix multiplication, MatMul）得到注意力分数矩阵。注意实际应用中，如模型在生成第i个词时，只能依赖目标序列的前 i-1 个词，而不能看到目标词。通过添加 mask，可以将目标序列中当前位置之后的词隐藏起来，防止模型在生成过程中提前获取到未来的信息，从而保证模型在训练过程中的自回归特性，使其能够更好地模拟实际的序列生成过程。&lt;br /&gt;
&lt;br /&gt;
（3）归一化点乘矩阵&lt;br /&gt;
&lt;br /&gt;
由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&lt;br /&gt;
&lt;br /&gt;
（4）加权输出&lt;br /&gt;
&lt;br /&gt;
使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&lt;br /&gt;
&lt;br /&gt;
整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
from torch import nn&lt;br /&gt;
&lt;br /&gt;
class ScaledDotProductAttention(nn.Module):&lt;br /&gt;
    def __init__(self, d_k):&lt;br /&gt;
        super().init()&lt;br /&gt;
        self.sqrt_d_k = torch.sqrt(torch.tensor(d_k, dtype=torch.float32))&lt;br /&gt;
&lt;br /&gt;
    def forward(self, Q, K, V, attn_mask=None):&lt;br /&gt;
        scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None:&lt;br /&gt;
            scores = scores.masked_fill(attn_mask == 0, -1e9)&lt;br /&gt;
        attn = torch.softmax(scores, dim=-1)&lt;br /&gt;
        context = torch.matmul(attn, V)&lt;br /&gt;
        return context, attn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;span class=&amp;quot;lark-record-clipboard&amp;quot; data-lark-record-format=&amp;quot;docx/record&amp;quot; data-lark-record-data=&amp;quot;{&amp;amp;quot;isCut&amp;amp;quot;:false,&amp;amp;quot;rootId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;parentId&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;blockIds&amp;amp;quot;:[44,45,46,47,48],&amp;amp;quot;recordIds&amp;amp;quot;:[&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;],&amp;amp;quot;recordMap&amp;amp;quot;:{&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（3）归一化点乘矩阵&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+a&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1x&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;由于点乘操作，S值可能过大或过小，在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。&amp;amp;quot;}}},&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+7&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;（4）加权输出&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}},&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+z&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;使用归一化后的注意力分数对V向量进行加权求和，作为自注意力机制的输出。&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;}},&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;children&amp;amp;quot;:[],&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention)，用公式表示为：&amp;amp;quot;},&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+1j&amp;amp;quot;}},&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;]},&amp;amp;quot;nextNum&amp;amp;quot;:1}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7489058965368913939&amp;amp;quot;,&amp;amp;quot;revisions&amp;amp;quot;:[],&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;folded&amp;amp;quot;:false,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:[]}},&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;:{&amp;amp;quot;id&amp;amp;quot;:&amp;amp;quot;BGqidHR1WoXkk9xC7bqcFw2anEg&amp;amp;quot;,&amp;amp;quot;snapshot&amp;amp;quot;:{&amp;amp;quot;locked&amp;amp;quot;:false,&amp;amp;quot;hidden&amp;amp;quot;:false,&amp;amp;quot;children&amp;amp;quot;:[&amp;amp;quot;M30AdNYWJo7l4PxDzw7cb0PSn6d&amp;amp;quot;,&amp;amp;quot;AoxddNG8foQ2sHxMCbDcd9eYnI6&amp;amp;quot;,&amp;amp;quot;L3prdeCKlouYiPx1XUicfWhxn8d&amp;amp;quot;,&amp;amp;quot;Thypd4vwTorBglx3jyzcffPgnXc&amp;amp;quot;,&amp;amp;quot;MmUqdfpEIoYnq1xhP7EcOt06nne&amp;amp;quot;,&amp;amp;quot;S7lcdvJPFoCbs1xKeMxcipdwndh&amp;amp;quot;,&amp;amp;quot;EYxJdlFLvoFtLgxHfC4cG4cRnZe&amp;amp;quot;,&amp;amp;quot;LjyDdfeNvo3Ej7xCVchcEEOEnwe&amp;amp;quot;,&amp;amp;quot;ABwTdssRgo6pI5xQZNhc5RaEnqg&amp;amp;quot;,&amp;amp;quot;Ow4LdIsRyoTBojxwgJhcdpSZnLf&amp;amp;quot;,&amp;amp;quot;USqqdMtj2o9cWUxldVycCssGnzc&amp;amp;quot;,&amp;amp;quot;DCXOd8qxDo4SPFxiFpMcXwoSnzb&amp;amp;quot;,&amp;amp;quot;N98ndsupYowzUXxTooacbcwgnYd&amp;amp;quot;,&amp;amp;quot;M8TAdsdBOo8aU2xnA0ncGY8onsf&amp;amp;quot;,&amp;amp;quot;YArtdPu0yoVqEHxInyXcUMxfnQb&amp;amp;quot;,&amp;amp;quot;TLdUdxwAJoqw94xrJRRcZNtgnEe&amp;amp;quot;,&amp;amp;quot;Wat0d1h3UoX3wkx7OfochVu5n2d&amp;amp;quot;,&amp;amp;quot;CuxmdxG53o9gc4xAlf9cPpzUnkh&amp;amp;quot;,&amp;amp;quot;KpuFdVVmeoE2SWxkh6zca3kdnie&amp;amp;quot;,&amp;amp;quot;Mx2udbKoOoJpk3x4MhacHowpnEe&amp;amp;quot;,&amp;amp;quot;CAFZd1ulcoAZqGxpCkJcH2ldnpc&amp;amp;quot;,&amp;amp;quot;QayjdFjYcoA1Fzx9YCBc8ITDnjb&amp;amp;quot;,&amp;amp;quot;Kn2edmu9moNzxlxyi1McboK2nob&amp;amp;quot;,&amp;amp;quot;Ouy6dUfikouy53xdm7JcBm1InMg&amp;amp;quot;,&amp;amp;quot;FpIIdFzLGoYe9Tx101GcahZqnbf&amp;amp;quot;,&amp;amp;quot;UmIZdue72oYt5xxz3kFcKVWZnwb&amp;amp;quot;,&amp;amp;quot;Nz4Xd9ZCHoODRNxIKmucaiNfnFf&amp;amp;quot;,&amp;amp;quot;Joo9dO5FDoOGmaxOiRcc1SXLnob&amp;amp;quot;,&amp;amp;quot;LU0zdBh0GoHHQHxMP0HcIK5JnUc&amp;amp;quot;,&amp;amp;quot;Pckgd0iWNo2OoixOqMlcp6cmnBb&amp;amp;quot;,&amp;amp;quot;GHjLdxVaJoyjyOxgRsvcCtk0n0f&amp;amp;quot;,&amp;amp;quot;FStJdh0X2oliUFxY5dzc5Imhn50&amp;amp;quot;,&amp;amp;quot;ViZudgkuDoBCIsxx8mrckuP7n3b&amp;amp;quot;,&amp;amp;quot;KwT0dSpnwo5npexvkEZcD2iXnLb&amp;amp;quot;,&amp;amp;quot;VDM3duxTPo5EBBxEWVAcnzGXnxd&amp;amp;quot;,&amp;amp;quot;HYjQdfSXpoLh8ZxzAPXczH6inGe&amp;amp;quot;,&amp;amp;quot;XG2SdE7sqo5iyAxJ8Ryc6OGGnof&amp;amp;quot;,&amp;amp;quot;RJAWdcI8MogTgDxczd9ceWSHnud&amp;amp;quot;,&amp;amp;quot;ZSHTd8goGoui1qxk4w0csxsKnfd&amp;amp;quot;,&amp;amp;quot;LmvxdWGsdo9KgNx80EZciEV0nre&amp;amp;quot;,&amp;amp;quot;MA1adBNOFoVuWgx4nFvcT6cenef&amp;amp;quot;,&amp;amp;quot;PsZkdQ6j0otjyIxGlclcztEenBh&amp;amp;quot;,&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;,&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;,&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;,&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;,&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;,&amp;amp;quot;KDJudzs3joriUlxi7TFcjJzAnae&amp;amp;quot;,&amp;amp;quot;VqftdjOWToCr4bxngPwcnlUgnhc&amp;amp;quot;,&amp;amp;quot;KISNd7eZqoDilYxnFjUcgaOsnVh&amp;amp;quot;,&amp;amp;quot;CzhPdgsoQofm8hxJ6Akckfctn4e&amp;amp;quot;,&amp;amp;quot;EZhxdAK2toAfOOxAy0uclImunOh&amp;amp;quot;,&amp;amp;quot;Iq5ydWe5xoRSVsxVjHVcykzcnZc&amp;amp;quot;,&amp;amp;quot;LizadPNYloSMBwxCKHqcI2Qznyg&amp;amp;quot;,&amp;amp;quot;ZXmXdPCeKo0OYHxJVRecVkeYnkf&amp;amp;quot;,&amp;amp;quot;DvosdDAsdo4glKxpskPclLsUn2c&amp;amp;quot;,&amp;amp;quot;ECWdd3WzzoJAWSxC8onceqtEnVh&amp;amp;quot;,&amp;amp;quot;I0Gud48rioj7suxXW6uclNinnMd&amp;amp;quot;,&amp;amp;quot;RXKxdSPP5orlIrxPewucrNoXnSf&amp;amp;quot;,&amp;amp;quot;P1YwdZnPloUmiJxk5fXc06eKn6Q&amp;amp;quot;,&amp;amp;quot;BwyMdpdZyonHALxCWffcOMlDn3c&amp;amp;quot;,&amp;amp;quot;DMJpdunfGoL22vxb4g9cBiihnth&amp;amp;quot;,&amp;amp;quot;D1v1d3HdUot3PUxvpXrcZRLGnUg&amp;amp;quot;,&amp;amp;quot;ZcEPdC501o8kvQxXvr8c4jFLnog&amp;amp;quot;,&amp;amp;quot;Zh8Jd3sH6odSMDxqDYocEyCPn2c&amp;amp;quot;,&amp;amp;quot;K3lQdJbx6o7vBvxQOV4cki9ZnNh&amp;amp;quot;,&amp;amp;quot;TWLediEoqoneynxGNX0cPvoGn4f&amp;amp;quot;,&amp;amp;quot;RNirdrgRooPv2ex9OcDcNwOdnCc&amp;amp;quot;,&amp;amp;quot;CIrQdoawpon11DxDfyVcrwVfnQh&amp;amp;quot;,&amp;amp;quot;NeWsd97RcoZ2Wwx2BbDcM0yznYb&amp;amp;quot;,&amp;amp;quot;CMC8dittNoOQ2yxW2jpcIZKanKg&amp;amp;quot;,&amp;amp;quot;TX9qdmyGkoHUtOxzaBccdmipnEd&amp;amp;quot;,&amp;amp;quot;HIfSdkagOoaAp2xTVFocIqHonSJ&amp;amp;quot;,&amp;amp;quot;PU6bdY3Koo7AfdxpmASc4SoCnKc&amp;amp;quot;,&amp;amp;quot;ZiVAdFShEoaTprxh85Fc7Ro5nnd&amp;amp;quot;,&amp;amp;quot;Ou4YdSo8Yo8UiIxxwt2cYt1RnOb&amp;amp;quot;,&amp;amp;quot;RRAvdbOYLoVJA3xLO9PcGltZnmd&amp;amp;quot;,&amp;amp;quot;VTnMde8WYoAnp1xNqTmc6aKbncf&amp;amp;quot;,&amp;amp;quot;KC5mdqWSgoNHVVxIF8DczyB2nkh&amp;amp;quot;,&amp;amp;quot;UqyudArJBodu8ZxCrNmczfkfnMg&amp;amp;quot;,&amp;amp;quot;B8J5dOUg8oyrypxvQhOcNV4Pnqh&amp;amp;quot;,&amp;amp;quot;VasHdkCnGohyNQx99sucoXJjnKd&amp;amp;quot;,&amp;amp;quot;SJCrdAKfUoqk3YxXEkQcaBQ9nVd&amp;amp;quot;,&amp;amp;quot;WsPPdG3xSolHcbxhzjBcdoobnRg&amp;amp;quot;,&amp;amp;quot;IwY5dBmqlonoQExwHTnc9VlInmh&amp;amp;quot;,&amp;amp;quot;CRVcdgIAJojwM9xwI9eczPIPn3g&amp;amp;quot;,&amp;amp;quot;EHU0dEykNoFuinxJL6NcXvoRnNe&amp;amp;quot;,&amp;amp;quot;PN3edbQABodx4ixyGUYcxtMZnTe&amp;amp;quot;,&amp;amp;quot;NSvwdYbXWoOIzuxwCLhc6ny1n2b&amp;amp;quot;,&amp;amp;quot;POXgdXbI1o69vMxZwUfcObrZnCc&amp;amp;quot;],&amp;amp;quot;doc_info&amp;amp;quot;:{&amp;amp;quot;editors&amp;amp;quot;:[&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;7489058965368913939&amp;amp;quot;],&amp;amp;quot;options&amp;amp;quot;:[&amp;amp;quot;editors&amp;amp;quot;,&amp;amp;quot;edit_time&amp;amp;quot;],&amp;amp;quot;deleted_editors&amp;amp;quot;:[],&amp;amp;quot;option_modified&amp;amp;quot;:null},&amp;amp;quot;author&amp;amp;quot;:&amp;amp;quot;7472320058063110148&amp;amp;quot;,&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;apool&amp;amp;quot;:{&amp;amp;quot;nextNum&amp;amp;quot;:1,&amp;amp;quot;numToAttrib&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:[&amp;amp;quot;author&amp;amp;quot;,&amp;amp;quot;7472320058063110148&amp;amp;quot;]}},&amp;amp;quot;initialAttributedTexts&amp;amp;quot;:{&amp;amp;quot;attribs&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;*0+b&amp;amp;quot;},&amp;amp;quot;text&amp;amp;quot;:{&amp;amp;quot;0&amp;amp;quot;:&amp;amp;quot;词条作业--注意力机制&amp;amp;quot;}}},&amp;amp;quot;align&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;page&amp;amp;quot;,&amp;amp;quot;parent_id&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;,&amp;amp;quot;comments&amp;amp;quot;:null,&amp;amp;quot;revisions&amp;amp;quot;:null}}},&amp;amp;quot;payloadMap&amp;amp;quot;:{&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1},&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;:{&amp;amp;quot;level&amp;amp;quot;:1}},&amp;amp;quot;extra&amp;amp;quot;:{&amp;amp;quot;channel&amp;amp;quot;:&amp;amp;quot;saas&amp;amp;quot;,&amp;amp;quot;pasteRandomId&amp;amp;quot;:&amp;amp;quot;94e291cb-ab77-4893-aee3-ec4aabe88184&amp;amp;quot;,&amp;amp;quot;mention_page_title&amp;amp;quot;:{},&amp;amp;quot;external_mention_url&amp;amp;quot;:{},&amp;amp;quot;isEqualBlockSelection&amp;amp;quot;:true},&amp;amp;quot;isKeepQuoteContainer&amp;amp;quot;:false,&amp;amp;quot;selection&amp;amp;quot;:[{&amp;amp;quot;id&amp;amp;quot;:44,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:10},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Nbj2dHyQRouQiaxLJBScuFcDnph&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:45,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:69},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;SFGbdp0C7ooLUIxfVRHcI9WWnic&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:46,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:7},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;NicZdBnNGoIX7FxecnAc66nunac&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:47,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:35},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;Q7kxdIZhMopEDXxZ6CEcqztEn3b&amp;amp;quot;},{&amp;amp;quot;id&amp;amp;quot;:48,&amp;amp;quot;type&amp;amp;quot;:&amp;amp;quot;text&amp;amp;quot;,&amp;amp;quot;selection&amp;amp;quot;:{&amp;amp;quot;start&amp;amp;quot;:0,&amp;amp;quot;end&amp;amp;quot;:55},&amp;amp;quot;recordId&amp;amp;quot;:&amp;amp;quot;H5zmdoYSDonC2vxNVhicCXBMnFd&amp;amp;quot;}],&amp;amp;quot;pasteFlag&amp;amp;quot;:&amp;amp;quot;763a5488-2fa9-4107-aa84-183dd617ebd3&amp;amp;quot;}&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;多头注意力是利用多个查询，来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。&lt;br /&gt;
多头注意力机制将输入序列的表示拆分成多个子空间（头），然后在每个子空间内独立地计算注意力权重，最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息，增强对复杂数据内在结构的建模能力(3-5)。&lt;br /&gt;
&lt;br /&gt;
工作流程:&lt;br /&gt;
&lt;br /&gt;
（1）子空间Q, K, V 向量的生成&lt;br /&gt;
&lt;br /&gt;
给定嵌入向量和头 (Head) 的数目h，在每个头（子空间）中都会通过一组不同的权重矩阵&lt;br /&gt;
&lt;br /&gt;
对输入序列进行线性投影变换得到&lt;br /&gt;
&lt;br /&gt;
, 其维度为&lt;br /&gt;
&lt;br /&gt;
（2）多头并行计算&lt;br /&gt;
&lt;br /&gt;
对每个头独立计算缩放点乘注意力：&lt;br /&gt;
&lt;br /&gt;
（3）多头合并输出&lt;br /&gt;
&lt;br /&gt;
将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出：&lt;br /&gt;
[[文件:多头注意力机制.png|缩略图|多头注意力机制]]&lt;br /&gt;
&lt;br /&gt;
=== 注意力机制的应用 ===&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%A4%9A%E5%A4%B4%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.png&amp;diff=44754</id>
		<title>文件:多头注意力机制.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%A4%9A%E5%A4%B4%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6.png&amp;diff=44754"/>
		<updated>2025-06-15T03:35:57Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;多头注意力机制&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Self-attention.png&amp;diff=44753</id>
		<title>文件:Self-attention.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Self-attention.png&amp;diff=44753"/>
		<updated>2025-06-15T03:29:55Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;self-attention&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E7%9A%84%E7%90%86%E8%A7%A3.png&amp;diff=44752</id>
		<title>文件:注意力机制的理解.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6%E7%9A%84%E7%90%86%E8%A7%A3.png&amp;diff=44752"/>
		<updated>2025-06-15T03:28:32Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;注意力&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44661</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44661"/>
		<updated>2025-06-14T15:08:35Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。[[人工神经网络]]架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个[[神经元]]。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态[[非线性系统|非线性]]映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的[[动力学可逆性|动力学]]行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在[[深度学习]]的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫[[感知机]]）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为[[生物网络|生物神经网络]]的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Joseph, R. D. (1960). Contributions to Perceptron Theory. Cornell Aeronautical Laboratory Report No. VG-11 96--G-7, Buffalo.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962）&amp;lt;ref&amp;gt;Rosenblatt, Frank (1962). Principles of Neurodynamics. Spartan, New York.&amp;lt;/ref&amp;gt;引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是[[深度学习]]。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络&amp;lt;ref&amp;gt;Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ivakhnenko, A. G.; Lapa, Valentin Grigorʹevich (1967). Cybernetics and Forecasting Techniques. American Elsevier Publishing Co.&amp;lt;/ref&amp;gt;。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络&amp;lt;ref&amp;gt;Amari, Shun'ichi (1967). &amp;quot;A theory of adaptive pattern classifier&amp;quot;. IEEE Transactions. EC (16): 279–307.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1976). &amp;quot;Taylor expansion of the accumulated rounding error&amp;quot;. BIT Numerical Mathematics. 16 (2): 146–160.&amp;lt;/ref&amp;gt;。  G.M. Ostrovski 等人于 1971 年重新发表了该论文&amp;lt;ref&amp;gt;Ostrovski, G. M., Volin, Y. M., &amp;amp; Boris, W. W. (1971). &amp;quot;On the computation of derivatives&amp;quot;. Wissenschaftliche Zeitschrift der Technischen Hochschule für Chemie, 13: 382–384.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Schmidhuber, Juergen (2014-10-25). &amp;quot;Who Invented Backpropagation?&amp;quot;. IDSIA, Switzerland.&amp;lt;/ref&amp;gt;。 Paul Werbos于 1982 年将反向传播应用于神经网络&amp;lt;ref&amp;gt;Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks. The MIT Press. &amp;lt;nowiki&amp;gt;ISBN 978-0-262-26715-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;（他 1974 年的博士论文，重印在 1994 年的一本书中&amp;lt;ref&amp;gt;Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley &amp;amp; Sons. &amp;lt;nowiki&amp;gt;ISBN 0-471-59897-6&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献&amp;lt;ref&amp;gt;Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). &amp;quot;Learning representations by back-propagating errors&amp;quot;. Nature. 323 (6088): 533–536.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起&amp;lt;ref&amp;gt;Bengio, Yoshua; Ducharme, Réjean; Vincent, Pascal; Janvin, Christian (2003). &amp;quot;A neural probabilistic language model&amp;quot;. The Journal of Machine Learning Research. 3: 1137–1155.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
&lt;br /&gt;
=== 课程推荐 ===&lt;br /&gt;
[https://campus.swarma.org/course/1391 神经网络（Neural Network）]&lt;br /&gt;
&lt;br /&gt;
从一个历史发展的角度去看待神经网络，从 1943 年最早提出的感知机模型讲起，分析其局限性，说明引入多层神经网络的必要性，以及经典的 BP 算法。最后从一个实际案例出发，讲解真实场景下，用人工神经网络做预测时，会用到的问题和处理方法。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://campus.swarma.org/course/956 深度学习原理与PyTorch实战]&lt;br /&gt;
&lt;br /&gt;
此系列课程主要围绕集智俱乐部众包写作的书籍《深度学习原理与 PyTorch 实战》展开，兼具理论与实践，是想要掌握一门深度学习技术不可错过的课程。课程中不仅循序渐进地讲解了PyTorch的基本使用、神经网络的搭建、卷积神经网络和循环神经网络的实现，而且全面深入地介绍了计算机视觉、自然语言处理、迁移学习，以及最新的对抗学习和深度强化学习等前沿技术。&lt;br /&gt;
&lt;br /&gt;
=== 书籍推荐 ===&lt;br /&gt;
[https://www.manning.com/books/deep-learning-with-pytorch 《Deep Learning with PyTorch》]&lt;br /&gt;
&lt;br /&gt;
本书聚焦于 PyTorch 框架下的深度学习实现，配合实例手把手构建前馈网络、卷积网络等，是初学者与实战者过渡的重要桥梁。内容注重实操与解释，适合工程开发背景的读者。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.deeplearningbook.org/ 《Deep Learning》]&lt;br /&gt;
&lt;br /&gt;
本书涵盖前馈神经网络的结构、训练、正则化、优化等内容，适合研究人员与高级开发者。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.pearson.com/en-us/subject-catalog/p/neural-networks-and-learning-machines/P200000000638/9780131471399 《Neural Networks and Learning Machines》（3rd Edition）]&lt;br /&gt;
&lt;br /&gt;
系统介绍神经网络的各类模型与学习算法，前馈神经网络及其反向传播部分尤为经典，适合对数学推导与理论有较高要求的学习者。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44660</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44660"/>
		<updated>2025-06-14T14:59:10Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。[[人工神经网络]]架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个[[神经元]]。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态[[非线性系统|非线性]]映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的[[动力学可逆性|动力学]]行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在[[深度学习]]的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫[[感知机]]）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为[[生物网络|生物神经网络]]的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Joseph, R. D. (1960). Contributions to Perceptron Theory. Cornell Aeronautical Laboratory Report No. VG-11 96--G-7, Buffalo.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962）&amp;lt;ref&amp;gt;Rosenblatt, Frank (1962). Principles of Neurodynamics. Spartan, New York.&amp;lt;/ref&amp;gt;引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是[[深度学习]]。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络&amp;lt;ref&amp;gt;Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ivakhnenko, A. G.; Lapa, Valentin Grigorʹevich (1967). Cybernetics and Forecasting Techniques. American Elsevier Publishing Co.&amp;lt;/ref&amp;gt;。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络&amp;lt;ref&amp;gt;Amari, Shun'ichi (1967). &amp;quot;A theory of adaptive pattern classifier&amp;quot;. IEEE Transactions. EC (16): 279–307.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1976). &amp;quot;Taylor expansion of the accumulated rounding error&amp;quot;. BIT Numerical Mathematics. 16 (2): 146–160.&amp;lt;/ref&amp;gt;。  G.M. Ostrovski 等人于 1971 年重新发表了该论文&amp;lt;ref&amp;gt;Ostrovski, G. M., Volin, Y. M., &amp;amp; Boris, W. W. (1971). &amp;quot;On the computation of derivatives&amp;quot;. Wissenschaftliche Zeitschrift der Technischen Hochschule für Chemie, 13: 382–384.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Schmidhuber, Juergen (2014-10-25). &amp;quot;Who Invented Backpropagation?&amp;quot;. IDSIA, Switzerland.&amp;lt;/ref&amp;gt;。 Paul Werbos于 1982 年将反向传播应用于神经网络&amp;lt;ref&amp;gt;Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks. The MIT Press. &amp;lt;nowiki&amp;gt;ISBN 978-0-262-26715-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;（他 1974 年的博士论文，重印在 1994 年的一本书中&amp;lt;ref&amp;gt;Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley &amp;amp; Sons. &amp;lt;nowiki&amp;gt;ISBN 0-471-59897-6&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献&amp;lt;ref&amp;gt;Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). &amp;quot;Learning representations by back-propagating errors&amp;quot;. Nature. 323 (6088): 533–536.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起&amp;lt;ref&amp;gt;Bengio, Yoshua; Ducharme, Réjean; Vincent, Pascal; Janvin, Christian (2003). &amp;quot;A neural probabilistic language model&amp;quot;. The Journal of Machine Learning Research. 3: 1137–1155.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 编者推荐 ==&lt;br /&gt;
&lt;br /&gt;
=== 课程推荐 ===&lt;br /&gt;
[https://campus.swarma.org/course/1391 神经网络（Neural Network）]&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44659</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44659"/>
		<updated>2025-06-14T14:49:53Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。[[人工神经网络]]架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个[[神经元]]。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态[[非线性系统|非线性]]映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的[[动力学可逆性|动力学]]行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在[[深度学习]]的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫[[感知机]]）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为[[生物网络|生物神经网络]]的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Joseph, R. D. (1960). Contributions to Perceptron Theory. Cornell Aeronautical Laboratory Report No. VG-11 96--G-7, Buffalo.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962）&amp;lt;ref&amp;gt;Rosenblatt, Frank (1962). Principles of Neurodynamics. Spartan, New York.&amp;lt;/ref&amp;gt;引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是[[深度学习]]。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络&amp;lt;ref&amp;gt;Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ivakhnenko, A. G.; Lapa, Valentin Grigorʹevich (1967). Cybernetics and Forecasting Techniques. American Elsevier Publishing Co.&amp;lt;/ref&amp;gt;。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络&amp;lt;ref&amp;gt;Amari, Shun'ichi (1967). &amp;quot;A theory of adaptive pattern classifier&amp;quot;. IEEE Transactions. EC (16): 279–307.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1976). &amp;quot;Taylor expansion of the accumulated rounding error&amp;quot;. BIT Numerical Mathematics. 16 (2): 146–160.&amp;lt;/ref&amp;gt;。  G.M. Ostrovski 等人于 1971 年重新发表了该论文&amp;lt;ref&amp;gt;Ostrovski, G. M., Volin, Y. M., &amp;amp; Boris, W. W. (1971). &amp;quot;On the computation of derivatives&amp;quot;. Wissenschaftliche Zeitschrift der Technischen Hochschule für Chemie, 13: 382–384.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Schmidhuber, Juergen (2014-10-25). &amp;quot;Who Invented Backpropagation?&amp;quot;. IDSIA, Switzerland.&amp;lt;/ref&amp;gt;。 Paul Werbos于 1982 年将反向传播应用于神经网络&amp;lt;ref&amp;gt;Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks. The MIT Press. &amp;lt;nowiki&amp;gt;ISBN 978-0-262-26715-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;（他 1974 年的博士论文，重印在 1994 年的一本书中&amp;lt;ref&amp;gt;Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley &amp;amp; Sons. &amp;lt;nowiki&amp;gt;ISBN 0-471-59897-6&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献&amp;lt;ref&amp;gt;Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). &amp;quot;Learning representations by back-propagating errors&amp;quot;. Nature. 323 (6088): 533–536.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起&amp;lt;ref&amp;gt;Bengio, Yoshua; Ducharme, Réjean; Vincent, Pascal; Janvin, Christian (2003). &amp;quot;A neural probabilistic language model&amp;quot;. The Journal of Machine Learning Research. 3: 1137–1155.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44658</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44658"/>
		<updated>2025-06-14T14:43:46Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* [[文件:前馈网络示意图.png|缩略图|图2：在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。]]'''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Joseph, R. D. (1960). Contributions to Perceptron Theory. Cornell Aeronautical Laboratory Report No. VG-11 96--G-7, Buffalo.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962）&amp;lt;ref&amp;gt;Rosenblatt, Frank (1962). Principles of Neurodynamics. Spartan, New York.&amp;lt;/ref&amp;gt;引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是深度学习。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络&amp;lt;ref&amp;gt;Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Ivakhnenko, A. G.; Lapa, Valentin Grigorʹevich (1967). Cybernetics and Forecasting Techniques. American Elsevier Publishing Co.&amp;lt;/ref&amp;gt;。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络&amp;lt;ref&amp;gt;Amari, Shun'ichi (1967). &amp;quot;A theory of adaptive pattern classifier&amp;quot;. IEEE Transactions. EC (16): 279–307.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1976). &amp;quot;Taylor expansion of the accumulated rounding error&amp;quot;. BIT Numerical Mathematics. 16 (2): 146–160.&amp;lt;/ref&amp;gt;。  G.M. Ostrovski 等人于 1971 年重新发表了该论文&amp;lt;ref&amp;gt;Ostrovski, G. M., Volin, Y. M., &amp;amp; Boris, W. W. (1971). &amp;quot;On the computation of derivatives&amp;quot;. Wissenschaftliche Zeitschrift der Technischen Hochschule für Chemie, 13: 382–384.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Schmidhuber, Juergen (2014-10-25). &amp;quot;Who Invented Backpropagation?&amp;quot;. IDSIA, Switzerland.&amp;lt;/ref&amp;gt;。 Paul Werbos于 1982 年将反向传播应用于神经网络&amp;lt;ref&amp;gt;Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks. The MIT Press. &amp;lt;nowiki&amp;gt;ISBN 978-0-262-26715-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;（他 1974 年的博士论文，重印在 1994 年的一本书中&amp;lt;ref&amp;gt;Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley &amp;amp; Sons. &amp;lt;nowiki&amp;gt;ISBN 0-471-59897-6&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献&amp;lt;ref&amp;gt;Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). &amp;quot;Learning representations by back-propagating errors&amp;quot;. Nature. 323 (6088): 533–536.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起&amp;lt;ref&amp;gt;Bengio, Yoshua; Ducharme, Réjean; Vincent, Pascal; Janvin, Christian (2003). &amp;quot;A neural probabilistic language model&amp;quot;. The Journal of Machine Learning Research. 3: 1137–1155.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44651</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44651"/>
		<updated>2025-06-14T14:06:31Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈&amp;lt;ref&amp;gt;Ferrie, C., &amp;amp; Kaiser, S. (2019). Neural Networks for Babies. Sourcebooks. &amp;lt;nowiki&amp;gt;ISBN 978-1492671206&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Zell, Andreas (1994). Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley. p. 73. &amp;lt;nowiki&amp;gt;ISBN 3-89319-554-8&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理&amp;lt;ref&amp;gt;Schmidhuber, Jürgen (2015-01-01). &amp;quot;Deep learning in neural networks: An overview&amp;quot;. Neural Networks. 61: 85–117.&amp;lt;/ref&amp;gt;。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播&amp;lt;ref&amp;gt;Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Masters) (in Finnish). University of Helsinki. pp. 6–7.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kelley, Henry J. (1960). &amp;quot;Gradient theory of optimal flight paths&amp;quot;. ARS Journal. 30 (10): 947–954.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rosenblatt, Frank. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Werbos, Paul (1982). &amp;quot;Applications of advances in nonlinear sensitivity analysis&amp;quot;. In System Modeling and Optimization. Springer. pp. 762–770.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Rumelhart, David E., Hinton, Geoffrey E., and Williams, R. J. (1986). &amp;quot;Learning Internal Representations by Error Propagation&amp;quot;. In: Rumelhart, D. E., McClelland, J. L., and the PDP Research Group (eds.), Parallel Distributed Processing: Explorations in the Microstructure of Cognition, Vol. 1: Foundations. MIT Press.&amp;lt;/ref&amp;gt;或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点&amp;lt;ref&amp;gt;Achler, T. (2023). &amp;quot;What AI, Neuroscience, and Cognitive Science Can Learn from Each Other: An Embedded Perspective&amp;quot;. Cognitive Computation.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* [[文件:前馈网络示意图.png|缩略图|图2：在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。]]'''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归&amp;lt;ref&amp;gt;Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation (2nd ed.). Prentice Hall. &amp;lt;nowiki&amp;gt;ISBN 0-13-273350-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1981). &amp;quot;Gauss and the Invention of Least Squares&amp;quot;. Annals of Statistics. 9 (3): 465–474.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Bretscher, Otto (1995). Linear Algebra With Applications (3rd ed.). Upper Saddle River, NJ: Prentice Hall.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Stigler, Stephen M. (1986). The History of Statistics: The Measurement of Uncertainty before 1900. Cambridge: Harvard. &amp;lt;nowiki&amp;gt;ISBN 0-674-40340-1&amp;lt;/nowiki&amp;gt;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型&amp;lt;ref&amp;gt;McCulloch, Warren S.; Pitts, Walter (1943-12-01). &amp;quot;A logical calculus of the ideas immanent in nervous activity&amp;quot;. The Bulletin of Mathematical Biophysics. 5 (4): 115–133.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成&amp;lt;ref&amp;gt;Rosenblatt, Frank (1958). &amp;quot;The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain&amp;quot;. Psychological Review. 65 (6): 386–408.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
* 1960年，Joseph 也讨论了具有自适应隐藏层的多层感知器。Rosenblatt（1962） 引用并采纳了这些想法，同时也赞扬了 HD Block 和 BW Knight 的工作。遗憾的是，这些早期的努力并没有催生出一个有效的隐藏单元学习算法，也就是深度学习。&lt;br /&gt;
&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko和 Valentin Lapa 发表了“数据处理群方法”（Group Method of Data Handling ） ，这是第一个可行的深度学习算法，用于训练任意深度的神经网络。它基于通过回归分析进行逐层训练。多余的隐藏单元会使用单独的验证集进行修剪。由于节点的激活函数是柯尔莫哥洛夫-加博尔多项式，因此这也是第一个具有乘法单元或“门”的深度网络。该方法于1971年被用于训练一个八层神经网络。&lt;br /&gt;
&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970 年，Seppo Linnainmaa在他的硕士论文 (1970) 中发表了反向传播的现代形式。  G.M. Ostrovski 等人于 1971 年重新发表了该论文。 Paul Werbos于 1982 年将反向传播应用于神经网络（他 1974 年的博士论文，重印在 1994 年的一本书中，尚未描述该算法）。1986 年，David E. Rumelhart等人推广了反向传播，但未引用原始文献。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44637</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44637"/>
		<updated>2025-06-14T13:43:23Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* [[文件:前馈网络示意图.png|缩略图|图2：在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。]]'''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44634</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44634"/>
		<updated>2025-06-14T13:36:50Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* [[文件:前馈网络示意图.png|缩略图|图2：在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。]]'''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，容易理解'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;通过 NumPy 实现一个拥有两层权重的前馈神经网络，结构为“2输入 → 3隐藏 → 1输出”。&lt;br /&gt;
&lt;br /&gt;
它演示了数据从输入层经过权重变换和激活函数后，如何一步步传播至输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44632</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44632"/>
		<updated>2025-06-14T13:35:12Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* [[文件:前馈网络示意图.png|缩略图|图2：在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。]]'''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 算法实现 ==&lt;br /&gt;
&lt;br /&gt;
=== 基本模型实现 ===&lt;br /&gt;
这是一个两层的前馈神经网络结构，重点在于'''结构理解'''与'''前向传播的流程'''&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
# 激活函数&lt;br /&gt;
def relu(x):&lt;br /&gt;
    return np.maximum(0, x)&lt;br /&gt;
&lt;br /&gt;
# 定义输入向量（2维），权重矩阵和偏置&lt;br /&gt;
X = np.array([[0.5, 0.3]])  # 1个样本，2个特征&lt;br /&gt;
&lt;br /&gt;
# 网络结构：2输入 -&amp;gt; 3隐藏 -&amp;gt; 1输出&lt;br /&gt;
W1 = np.array([[0.1, 0.4, 0.6],&lt;br /&gt;
               [0.3, 0.2, 0.5]])  # shape (2, 3)&lt;br /&gt;
b1 = np.array([[0.1, 0.1, 0.1]])  # shape (1, 3)&lt;br /&gt;
&lt;br /&gt;
W2 = np.array([[0.7],&lt;br /&gt;
               [0.2],&lt;br /&gt;
               [0.9]])  # shape (3, 1)&lt;br /&gt;
b2 = np.array([[0.05]])  # shape (1, 1)&lt;br /&gt;
&lt;br /&gt;
# 前向传播&lt;br /&gt;
Z1 = np.dot(X, W1) + b1  # 输入 -&amp;gt; 隐藏层&lt;br /&gt;
A1 = relu(Z1)            # ReLU激活&lt;br /&gt;
Z2 = np.dot(A1, W2) + b2 # 隐藏层 -&amp;gt; 输出层&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;输出结果:&amp;quot;, Z2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;这个模型没有训练过程，仅说明了'''输入如何通过网络进行转换'''。&lt;br /&gt;
&lt;br /&gt;
即为（2输入） → （3隐藏） → （1输出）&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44630</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44630"/>
		<updated>2025-06-14T13:27:01Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1：多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* [[文件:前馈网络示意图.png|缩略图|图2：在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。]]'''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%89%8D%E9%A6%88%E7%BD%91%E7%BB%9C%E7%A4%BA%E6%84%8F%E5%9B%BE.png&amp;diff=44629</id>
		<title>文件:前馈网络示意图.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:%E5%89%8D%E9%A6%88%E7%BD%91%E7%BB%9C%E7%A4%BA%E6%84%8F%E5%9B%BE.png&amp;diff=44629"/>
		<updated>2025-06-14T13:25:49Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;在前馈网络中，信息总是朝一个方向移动；它永远不会倒退。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44627</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44627"/>
		<updated>2025-06-14T13:22:56Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 与其他神经网络的比较 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!网络类型&lt;br /&gt;
!信息流动方向&lt;br /&gt;
!是否适合时间序列&lt;br /&gt;
!特点&lt;br /&gt;
|-&lt;br /&gt;
|前馈神经网络 FNN&lt;br /&gt;
|单向，无反馈回路&lt;br /&gt;
|否&lt;br /&gt;
|结构简单，易于训练&lt;br /&gt;
|-&lt;br /&gt;
|卷积神经网络 CNN&lt;br /&gt;
|单向&lt;br /&gt;
|否&lt;br /&gt;
|局部连接，参数共享，适用于图像&lt;br /&gt;
|-&lt;br /&gt;
|循环神经网络 RNN&lt;br /&gt;
|存在反馈回路&lt;br /&gt;
|是&lt;br /&gt;
|可处理时序数据，但训练复杂&lt;br /&gt;
|-&lt;br /&gt;
|Transformer&lt;br /&gt;
|并行注意力机制&lt;br /&gt;
|是&lt;br /&gt;
|多用于自然语言处理，结构更复杂&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44626</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44626"/>
		<updated>2025-06-14T13:21:10Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;br /&gt;
&lt;br /&gt;
=== 代表性研究成果与应用 ===&lt;br /&gt;
&lt;br /&gt;
* '''反向传播算法（1986）'''：Rumelhart 等人提出反向传播，成为训练FNN的核心方法；&lt;br /&gt;
* '''手写数字识别（1990年代）'''：使用FNN对MNIST数据集进行分类，作为神经网络应用的标准实验；&lt;br /&gt;
* '''Tabular数据建模（至今）'''：FNN常用于结构化数据的回归与分类；&lt;br /&gt;
* '''早期语音识别与信号处理'''：在RNN/CNN普及前，FNN是主要建模工具；&lt;br /&gt;
* '''自动驾驶传感器融合'''：FNN被用于多源感知数据的早期特征组合。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44625</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44625"/>
		<updated>2025-06-14T13:20:19Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 常见前馈神经网络 ==&lt;br /&gt;
&lt;br /&gt;
=== 感知器网络 ===&lt;br /&gt;
感知器（又叫感知机）是最简单的前馈网络，它主要用于模式分类，也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。&lt;br /&gt;
&lt;br /&gt;
=== BP网络 ===&lt;br /&gt;
BP网络是指连接权调整采用了反向传播（Back Propagation）学习算法的前馈网络。与感知器不同之处在于，BP网络的神经元变换函数采用了S形函数（Sigmoid函数），因此输出量是0~1之间的连续量，可实现从输入到输出的任意的非线性映射。&lt;br /&gt;
&lt;br /&gt;
=== RBF网络 ===&lt;br /&gt;
RBF网络是指隐含层神经元由RBF神经元组成的前馈网络。RBF神经元是指神经元的变换函数为RBF（Radial Basis Function，径向基函数）的神经元。典型的RBF网络由三层组成：一个输入层，一个或多个由RBF神经元组成的RBF层（隐含层），一个由线性神经元组成的输出层。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44623</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44623"/>
		<updated>2025-06-14T13:18:51Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 数学模型 ===&lt;br /&gt;
对于第 [math]\displaystyle{l}[/math] 层神经元，其输出可表达为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{a^{(l)} = f^{(l)}\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的输出；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{W^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的权重矩阵；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{b^{(l)}}[/math]：第 [math]\displaystyle{l}[/math] 层的偏置向量；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{f^{(l)}}[/math]：激活函数，如 ReLU、Sigmoid、Tanh；&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{a^{(0)}}[/math]：输入向量&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44622</id>
		<title>前馈神经网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%89%8D%E9%A6%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&amp;diff=44622"/>
		<updated>2025-06-14T13:15:53Z</updated>

		<summary type="html">&lt;p&gt;Word2vec：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;前馈是指神经网络的识别推理架构。人工神经网络架构基于输入乘以权重以获得输出（输入到输出）：前馈。循环神经网络或带有循环的神经网络允许来自后期处理阶段的信息反馈给早期阶段进行序列处理。然而，在推理的每个阶段，前馈乘法仍然是核心，对于反向传播或随时间反向传播至关重要。因此，神经网络不能包含负反馈或正反馈等反馈，其中输出反馈到完全相同的输入并对其进行修改，因为这会形成一个无限循环，不可能及时倒带以通过反向传播产生错误信号。这个问题和命名法似乎是一些计算机科学家和研究大脑网络的其他领域的科学家之间的一个混淆点。&lt;br /&gt;
&lt;br /&gt;
== 介绍 ==&lt;br /&gt;
&lt;br /&gt;
=== 简介 ===&lt;br /&gt;
前馈神经网络（feedforward neural network，FNN），简称前馈网络，是人工神经网络的一种。前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元。在此种神经网络中，各神经元可以接收前一层神经元的信号，并产生输出到下一层。第0层叫输入层，最后一层叫输出层，其他中间层叫做隐含层（或隐藏层、隐层）。隐层可以是一层，也可以是多层。&lt;br /&gt;
&lt;br /&gt;
整个网络中无反馈，信号从输入层向输出层单向传播，可用一个有向无环图表示 [2]。&lt;br /&gt;
[[文件:多层前馈神经网络示意图.png|缩略图|图1多层前馈神经网络示例]]&lt;br /&gt;
一个典型的多层前馈神经网络如图1所示。&lt;br /&gt;
&lt;br /&gt;
=== 基本结构 ===&lt;br /&gt;
前馈神经网络通常由三类层组成：&lt;br /&gt;
&lt;br /&gt;
* '''输入层（Input Layer）'''：接收原始数据，每个神经元对应一个特征输入。&lt;br /&gt;
* '''隐藏层（Hidden Layer）'''：通过加权和非线性激活函数对输入信息进行变换，可由一个或多个隐藏层组成。&lt;br /&gt;
* '''输出层（Output Layer）'''：输出最终预测结果，输出节点的个数依据具体任务（如分类、回归）而定。&lt;br /&gt;
&lt;br /&gt;
=== 结构设计 ===&lt;br /&gt;
对于前馈神经网络结构设计，通常采用的方法有3类：直接定型法、修剪法和生长法。&lt;br /&gt;
&lt;br /&gt;
* '''直接定型法'''：一开始就根据经验或启发规则确定网络结构，简单但依赖人为判断，结构固定不变。&lt;br /&gt;
* '''修剪法'''：从一个较大的网络出发，训练后逐步删除不重要的连接或节点，优化结构但计算开销大。&lt;br /&gt;
&lt;br /&gt;
* '''生长法'''：从小网络开始，逐步添加节点或连接，自适应构建网络结构，具有自组织特性，灵活但训练过程较复杂。&lt;br /&gt;
&lt;br /&gt;
=== 工作原理 ===&lt;br /&gt;
&lt;br /&gt;
# '''正向传播（Forward Propagation）'''：数据从输入层依次传至输出层，每一层的输出通过权重连接并激活传递至下一层；&lt;br /&gt;
# '''损失计算（Loss Calculation）'''：比较输出层结果与真实标签，计算误差；&lt;br /&gt;
# '''反向传播（Backpropagation）'''：计算误差对每个参数的梯度，通过梯度下降等优化算法更新权重与偏置。&lt;br /&gt;
&lt;br /&gt;
=== 特点 ===&lt;br /&gt;
前馈神经网络结构简单，应用广泛，能够以任意精度逼近任意连续函数及平方可积函数．而且可以精确实现任意有限训练样本集。从系统的观点看，前馈网络是一种静态非线性映射．通过简单非线性处理单元的复合映射，可获得复杂的非线性处理能力。从计算的观点看．缺乏丰富的动力学行为。大部分前馈网络都是学习网络，其分类能力和模式识别能力一般都强于反馈网络。&lt;br /&gt;
&lt;br /&gt;
== 数学基础 ==&lt;br /&gt;
&lt;br /&gt;
=== 激活函数 ===&lt;br /&gt;
历史上常见的两种激活函数都是S 型函数，其描述如下:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{ey(v_i) = \tanh(v_i) \quad \text{and} \quad y(v_i) = \left(1 + e^{-v_i}\right)^{-1}}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
第一个是双曲正切函数，其范围从 -1 到 1，另一个是逻辑函数，其形状类似，但范围从 0 到 1。这里[math]\displaystyle{y_i}[/math]是第[math]\displaystyle{i}[/math]个节点（神经元）和。[math]\displaystyle{v_i}[/math]是输入连接的加权和。其他激活函数已被提出，包括rectifier 和 softplus函数。更专业的激活函数包括径向基函数（用于径向基网络，这是另一类有监督神经网络模型）。&lt;br /&gt;
&lt;br /&gt;
在深度学习的最新发展中，修正线性单元(ReLU)被更频繁地用作克服与 S 型函数相关的 数值问题的可能方法之一。&lt;br /&gt;
=== 学习 ===&lt;br /&gt;
学习是通过在处理每条数据后，根据输出结果与预期结果之间的误差量，改变连接权重来实现的。这是监督学习的一个例子，通过反向传播进行。&lt;br /&gt;
&lt;br /&gt;
我们可以在输出节点中表示错误程度 j 在第 n 个数据点（训练示例）：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{e_j(n) = d_j(n) - y_j(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{d_j(n)}[/math] 是期望的目标值、[math]\displaystyle{y_j(n)}[/math] 是实际输出。&lt;br /&gt;
&lt;br /&gt;
然后可以根据最小化整个输出误差的校正来调整节点权重，第 n 条数据点的误差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[math]\displaystyle{\mathcal{E}(n) = \frac{1}{2} \sum_j^{\text{output node}} e_j^2(n)}[/math]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用 '''梯度下降'''，每个权重的变化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\Delta w_{ji}(n) = -\eta \frac{\partial \mathcal{E}(n)}{\partial v_j(n)} y_i(n)}[/math]&lt;br /&gt;
&lt;br /&gt;
其中：&lt;br /&gt;
&lt;br /&gt;
* [math]\displaystyle{y_i(n)}[/math] 是第 i 个神经元的输出&lt;br /&gt;
* [math]\displaystyle{\eta}[/math] 是学习率，用于控制步长，避免过度更新或收敛太慢&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)}}[/math] 表示误差函数对神经元输入的导数&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
对于常见的激活函数为可导函数 [math]\displaystyle{\phi}[/math] 的情况，有：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n) \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
要计算的导数取决于感应局部场 [math]\displaystyle{v_j}[/math]，它本身也是变化的。很容易证明，对于输出节点，这个导数可以简化为：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = e_j(n), \phi'(v_j(n))}[/math]&lt;br /&gt;
&lt;br /&gt;
其中 [math]\displaystyle{\phi'}[/math] 是上述激活函数的导数，其本身不会变化。&lt;br /&gt;
&lt;br /&gt;
对于隐藏节点权重的变化，分析起来比较困难，但可以证明相关的导数是：&lt;br /&gt;
&lt;br /&gt;
[math]\displaystyle{-\frac{\partial \mathcal{E}(n)}{\partial v_j(n)} = \phi'(v_j(n)) \sum_k \left( -\frac{\partial \mathcal{E}(n)}{\partial v_k(n)} w_{kj}(n) \right)}[/math]&lt;br /&gt;
&lt;br /&gt;
这取决于第 [math]\displaystyle{k}[/math] 个节点代表输出层。&lt;br /&gt;
&lt;br /&gt;
因此，为了改变隐藏层权重，输出层权重会根据激活函数的导数而变化，因此该算法代表了激活函数的反向传播。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
=== 时间线 ===&lt;br /&gt;
&lt;br /&gt;
* 大约在1800年，勒让德（1805）和高斯（1795）创建了最简单的前馈网络，它由一个带有线性激活函数的权重层组成。该网络采用最小二乘法进行训练，以最小化均方误差，也称为线性回归。&lt;br /&gt;
* 1943年，沃伦·麦卡洛克和沃尔特·皮茨提出二进制人工神经元作为生物神经网络的逻辑模型。&lt;br /&gt;
* 1958年，弗兰克·罗森布拉特（Frank Rosenblatt）提出了多层感知器模型，该模型由一个输入层、一个具有随机权重且无法学习的隐藏层和一个具有可学习连接的输出层组成。&lt;br /&gt;
* 1960年，Joseph 提出了具有自适应隐藏层的多层感知器，并赞扬了 HD Block 和 BW Knight 的工作。&lt;br /&gt;
* 1965年，Alexey Grigorevich Ivakhnenko 和 Valentin Lapa 发布了“数据处理群方法”（Group Method of Data Handling），这是第一个可行的深度学习算法，用于训练任意深度的神经网络。&lt;br /&gt;
* 1967年，Shun'ichi Amari 报告了第一个通过随机梯度下降训练的多层神经网络。&lt;br /&gt;
* 1970年，Seppo Linnainmaa 在他的硕士论文中发表了反向传播的现代形式。Paul Werbos 于1982年将反向传播推广到多层神经网络。&lt;br /&gt;
* 2003年，由于 Yoshua Bengio 与合作者将深度学习成功应用于语言建模，个人对反向传播网络的兴趣再度燃起。&lt;/div&gt;</summary>
		<author><name>Word2vec</name></author>
	</entry>
</feed>