【NLP基础】常见的距离公式说明

本文详细介绍了NLP中常见的距离公式,包括余弦距离、欧式距离、曼哈顿距离、闵可夫斯基距离、切比雪夫距离、杰卡德距离、汉明距离、标准化欧式距离和皮尔逊积矩相关系数。这些距离公式在信息检索、文本挖掘、数据挖掘等领域有广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

零,基本知识预备

在二维平面中,设有两个向量 a → = ( x 1 , y 1 ) \overrightarrow{a}=(x_1,y_1) a =(x1,y1) , b → = ( x 2 , y 2 ) \overrightarrow{b}=(x_2,y_2) b =(x2,y2) θ \theta θ a → \overrightarrow{a} a b → \overrightarrow{b} b 的夹角,则有:

1) a → \overrightarrow{a} a b → \overrightarrow{b} b 数量积(又称点积)为
a → . b → = ∣ a → ∣ ∣ b → ∣ cos ⁡ θ (1.1) \overrightarrow{a}.\overrightarrow{b}=|\overrightarrow{a}||\overrightarrow{b}|\cos\theta\tag{1.1} a .b =a b cosθ(1.1)
2) a → \overrightarrow{a} a b → \overrightarrow{b} b 向量积(又称叉积外积)为
a → × b → = c → (1.2) \overrightarrow{a}\times \overrightarrow{b} = \overrightarrow{c}\tag{1.2} a ×b =c (1.2)
其中, c → \overrightarrow{c} c 的模长为
∣ c → ∣ = ∣ a → ∣ ∣ b → ∣ sin ⁡ θ (1.3) |\overrightarrow{c}|=|\overrightarrow{a}||\overrightarrow{b}|\sin\theta\tag{1.3} c =a b sinθ(1.3)
方向为: a → \overrightarrow{a} a b → \overrightarrow{b} b 的向量积 c → \overrightarrow{c} c 的方向与这两个向量所在平面垂直,且遵守右手定则 即:若坐标系是满足右手定则的,当右手的四指从 a → \overrightarrow{a} a 以不超过180度的转角转向 b → \overrightarrow{b} b 时,竖起的大拇指指向是 c → \overrightarrow{c} c 的方向。

3)若 a → \overrightarrow{a} a b → \overrightarrow{b} b 共线,且 b → ≠ 0 \overrightarrow{b}\ne0 b =0 则存在唯一的 λ \lambda λ 使得 a → = λ b → \overrightarrow{a}=\lambda\overrightarrow{b} a =λb ,即有
x 1 y 2 = x 2 y 1 (1.4) x_1y_2=x_2y_1\tag{1.4} x1y2=x2y1(1.4)
4)若 a → \overrightarrow{a} a b → \overrightarrow{b} b 垂直,则 a → . b → = 0 \overrightarrow{a}.\overrightarrow{b}=0 a .b =0 ,即有
x 1 x 2 + y 1 y 2 = 0 (1.5) x_1x_2+y_1y_2=0\tag{1.5} x1x2+y1y2=0(1.5)
n n n 维向量 V → = ( v 1 , v 2 , … , v n ) \overrightarrow{V}=(v_1,v_2,\dots,v_n) V =(v1,v2,,vn) 则向量 V → \overrightarrow{V} V 模长
∣ V → ∣ = v 1 2 + v 2 2 + ⋯ + v n 2 (1.6) |\overrightarrow{V}|=\sqrt{v_1^2+v_2^2+\dots+v_n^2}\tag{1.6} V =v12+v22++vn2 (1.6)

一,余弦距离

1,定义

余弦距离,又称为余弦相似性余弦相似度,是通过计算两个向量的夹角余弦值来评估他们的相似度。

在二维平面中,向量 a → \overrightarrow{a} a b → \overrightarrow{b} b 的余弦相似性可以表示为:
cos ⁡ θ = a → . b → ∣ a → ∣ ∣ b → ∣ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 (1.7) \cos\theta=\frac{\overrightarrow{a}.\overrightarrow{b}}{|\overrightarrow{a}||\overrightarrow{b}|}=\frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}\tag{1.7} cosθ=a b a .b =x12+y12 x22+y22

<think>嗯,用户让我介绍一下Transformer的公式,而且需要用中文回答。首先,我得回想一下Transformer的基本结构。Transformer的核心是自注意力机制,对吧?那应该涉及查询(Q)、键(K)、值(V)这几个矩阵。然后是缩放点积注意力,这部分我记得公式里有softmax和缩放因子。可能还要提到多头注意力,把多个注意力头的结果拼接起来再线性变换。 用户可能是刚开始学习Transformer,可能需要从基础的部分讲起,比如自注意力的计算步骤。他们可能对Q、K、V的来源不太清楚,得解释一下这些矩阵是怎么从输入得到的。另外,缩放因子为什么是根号d_k,这个也需要说明,避免梯度消失的问题。 接下来是位置编码,因为Transformer没有循环或卷积结构,所以位置信息很重要。位置编码的公式是正弦和余弦函数的组合,可能需要写出那个公式,并解释为什么这样设计,比如能捕捉相对位置信息。 然后是多头注意力的部分,这里需要说明如何将Q、K、V分成多个头,分别进行注意力计算,再合并。公式中会有线性变换矩阵W,拼接之后再用另一个权重矩阵进行投影。 可能还需要提到编码器和解码器的结构,比如每个子层都有残差连接和层归一化。公式中的Add & Norm部分,也就是残差加上层归一化,应该给出具体的公式,比如LayerNorm(x + Sublayer(x))。 用户可能对每个公式的作用和应用场景感兴趣,所以需要解释每个步骤的意义。比如自注意力如何捕捉长距离依赖,缩放点积为什么有效,多头为什么能增强模型表达能力等。 另外,用户可能没有提到但需要了解的还包括前馈网络(FFN)的部分,也就是注意力后的全连接层,用ReLU激活。这部分的结构公式也应该包含进去,比如FFN(x) = max(0, xW1 + b1)W2 + b2。 需要检查是否有遗漏的关键公式,比如编码器层和解码器层的组成,或者masked attention在解码器中的应用。不过用户可能暂时不需要太深入的细节,所以先集中在核心的自注意力和相关公式上。 总结一下,我应该分步骤介绍自注意力机制,包括Q、K、V的计算,缩放点积注意力,多头注意力,位置编码,以及层归一化和前馈网络。每个部分给出公式并简要解释,确保用户能理解每个部分的数学表达和作用。同时,语言要尽量简洁,避免过于复杂,适合刚入门的读者。</think>Transformer 是深度学习中的一种重要架构,广泛应用于 NLP 领域(如 BERT、GPT 等)。其核心是 **自注意力机制(Self-Attention)**,以下是其核心公式和关键组件的介绍: --- ### 1. **自注意力机制(Self-Attention)** 自注意力通过计算输入序列中每个词与其他词的相关性,动态分配权重。公式如下: \[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \] - **Q(Query)**:查询向量,表示当前需要关注的词。 - **K(Key)**:键向量,表示其他词的“标识”。 - **V(Value)**:值向量,表示其他词的“实际信息”。 - \(d_k\):向量维度,缩放因子(用于防止点积值过大导致梯度消失)。 --- ### 2. **多头注意力(Multi-Head Attention)** 将 Q、K、V 拆分到多个“头”(子空间)并行计算,增强模型对不同关系的捕捉能力: \[ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O \] \[ \text{其中,head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) \] - \(W_i^Q, W_i^K, W_i^V\):每个头的可学习参数矩阵。 - \(W^O\):输出投影矩阵。 - \(h\):头的数量(如 8 或 16)。 --- ### 3. **位置编码(Positional Encoding)** Transformer 没有循环结构,需通过位置编码注入序列顺序信息: \[ PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \] \[ PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) \] - \(pos\):词的位置。 - \(i\):维度索引,\(d_{\text{model}}\) 是模型维度(如 512)。 --- ### 4. **前馈网络(Feed-Forward Network)** 自注意力后接一个全连接层,引入非线性: \[ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 \] - \(W_1, W_2\):权重矩阵,通常中间维度扩大(如 2048)。 - \(\max(0, \cdot)\):ReLU 激活函数。 --- ### 5. **残差连接与层归一化** 每个子层(自注意力、前馈网络)后应用残差连接和层归一化: \[ \text{LayerNorm}(x + \text{Sublayer}(x)) \] - **残差连接**:缓解梯度消失。 - **层归一化**:加速训练,稳定输出分布。 --- ### 6. **编码器-解码器结构** - **编码器**:多个相同层堆叠,每层包含自注意力和前馈网络。 - **解码器**:在编码器基础上增加 **交叉注意力**(关注编码器输出),并使用 **掩码自注意力**(防止未来信息泄露)。 --- ### 核心思想总结 1. **并行计算**:自注意力替代 RNN 的序列计算,提升效率。 2. **长距离依赖**:直接建模任意位置间的关系。 3. **位置感知**:通过位置编码保留序列顺序。 4. **模块化设计**:多头注意力、残差连接等提升表达能力。 如果需要更具体的某部分展开(如掩码机制、实际代码实现等),可以进一步补充!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值