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

LLM笔记(三)位置编码(1)

位置编码理论与应用

1. 位置编码如何解决置换不变性及其数学表现

在Transformer模型中,自注意力机制(Self-Attention)具有置换不变性(permutation invariance),这意味着对输入序列的词元(token)进行任意重排,输出的内容本质上保持不变(或仅是行的重排),导致模型无法感知词元的顺序。为了解决这一问题,**位置编码(Positional Encoding)**通过将位置信息融入输入序列,打破这种不变性,使模型能够区分词元的相对或绝对位置。


1.1 置换不变性的数学表现

置换不变性是自注意力机制无法捕捉位置信息的核心原因。让我们从数学角度分析:

  • 自注意力机制的计算

    • 输入序列为 X = [ x 1 , x 2 , … , x n ] X = [x_1, x_2, \dots, x_n] X=[x1,x2,,xn],其中 x i ∈ R d x_i \in \mathbb{R}^d xiRd 是第 i i i 个词元的嵌入向量。
    • 通过线性变换生成查询(Query)、键(Key)和值(Value): Q = X W Q , K = X W K , V = X W V Q = X W_Q, \quad K = X W_K, \quad V = X W_V Q=XWQ,K=XWK,V=XWV 其中 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是可学习的权重矩阵。
    • 注意力权重为: A = softmax ( Q K T d k ) A = \text{softmax}\left( \frac{Q K^T}{\sqrt{d_k}} \right) A=softmax(dk QKT) 输出为: Attention ( Q , K , V ) = A V \text{Attention}(Q, K, V) = A V Attention(Q,K,V)=AV
  • 置换操作的影响

    • 假设对输入 X X X 应用置换矩阵 P P P(一个重排行的矩阵),置换后的输入为 X ′ = P X X' = P X X=PX
    • 置换后的查询、键和值变为: Q ′ = P Q , K ′ = P K , V ′ = P V Q' = P Q, \quad K' = P K, \quad V' = P V Q=PQ,K=PK,V=PV
    • 注意力权重变为: A ′ = softmax ( Q ′ ( K ′ ) T d k ) = softmax ( P Q K T P T d k ) = P A P T A' = \text{softmax}\left( \frac{Q' (K')^T}{\sqrt{d_k}} \right) = \text{softmax}\left( \frac{P Q K^T P^T}{\sqrt{d_k}} \right) = P A P^T A=softmax(dk Q(K)T)=softmax(dk PQKTPT)=PAPT
    • 输出为: Attention ( Q ′ , K ′ , V ′ ) = A ′ V ′ = P A P T P V = P A V \text{Attention}(Q', K', V') = A' V' = P A P^T P V = P A V Attention(Q,K,V)=AV=PAPTPV=PAV
    • 结果表明,置换后的输出 P A V P A V PAV 是原始输出 A V A V AV 的行重排,内容本质不变(即集合意义上等价)。这意味着自注意力机制无法区分 X X X X ′ X' X 的顺序,仅依赖词元的内容。

1.2 位置编码如何解决置换不变性

位置编码通过将位置信息融入输入序列,打破置换不变性,使模型能够感知词元的位置。常见的实现方式有两种:绝对位置编码相对位置编码

1.2.1 绝对位置编码
  • 原理
    • 为每个位置 m m m 分配一个独特的位置编码向量 p m p_m pm,将其加到对应的词元嵌入 x m x_m xm 上: x m ′ = x m + p m x_m' = x_m + p_m xm=xm+pm 输入序列变为: X new = [ x 1 + p 1 , x 2 + p 2 , … , x n + p n ] X_{\text{new}} = [x_1 + p_1, x_2 + p_2, \dots, x_n + p_n] Xnew=[x1+p1,x2+p2,,xn+pn]
  • 数学表现
    • 若对 X new X_{\text{new}} Xnew 应用置换矩阵 P P P,置换后的输入为: X new ′ = P X new = P ( X + P pos ) X_{\text{new}}' = P X_{\text{new}} = P (X + P_{\text{pos}}) Xnew=PXnew=P(X+Ppos) 其中 P pos = [ p 1 , p 2 , … , p n ] P_{\text{pos}} = [p_1, p_2, \dots, p_n] Ppos=[p1,p2,,pn]
    • 因为 p m p_m pm 与位置绑定,置换后位置编码也会重排(如 P P pos P P_{\text{pos}} PPpos),导致 X new ′ ≠ X new X_{\text{new}}' \neq X_{\text{new}} Xnew=Xnew。这使得注意力计算的结果不再仅仅是行的重排,模型能够感知位置差异。
  • 例子
    • 三角函数位置编码(原Transformer): P E ( pos , 2 i ) = sin ⁡ ( pos 1000 0 2 i / d ) , P E ( pos , 2 i + 1 ) = cos ⁡ ( pos 1000 0 2 i / d ) PE(\text{pos}, 2i) = \sin\left(\frac{\text{pos}}{10000^{2i / d}}\right), \quad PE(\text{pos}, 2i+1) = \cos\left(\frac{\text{pos}}{10000^{2i / d}}\right) PE(pos,2i)=sin(100002i/dpos),PE(pos,2i+1)=cos(100002i/dpos) 不同位置的编码向量具有独特的频率模式。
  • 效果
    • 通过为每个词元添加位置标识,打破了置换不变性,模型可以区分不同位置的词元。
1.2.2 相对位置编码
  • 原理
    • 直接在注意力机制中引入词元间的相对位置信息,通常通过修改注意力权重的计算方式。例如,在注意力分数中加入与相对位置 i − j i - j ij 相关的偏置项。
  • 数学表现
    • 修改注意力分数计算: a i j = q i T k j + q i T R i − j a_{ij} = q_i^T k_j + q_i^T R_{i-j} aij=qiTkj+qiTRij 其中 R i − j R_{i-j} Rij 是相对位置 i − j i - j ij 的编码向量。
    • 置换输入后,相对位置 i − j i - j ij 会随之改变,导致注意力权重 A A A 的计算结果不同,输出不再是简单重排。
  • 例子
    • Transformer-XL a i j = q i T k j + q i T R i − j + u T k j + v T R i − j a_{ij} = q_i^T k_j + q_i^T R_{i-j} + u^T k_j + v^T R_{i-j} aij=qiTkj+qiTRij+uTkj+vTRij R i − j R_{i-j} Rij 使用正弦余弦函数生成,依赖相对距离。
  • 效果
    • 相对位置编码直接捕捉词元间的相对距离或顺序,使模型对位置变化敏感。

1.3 数学分析:Taylor展开的视角

位置编码如何引入位置信息的数学本质可以通过Taylor展开分析。假设模型输出函数为 f ( X ) f(X) f(X),加入位置编码后为 f ~ ( X + P pos ) \tilde{f}(X + P_{\text{pos}}) f~(X+Ppos)。对 f ~ \tilde{f} f~ X X X 处进行二阶Taylor展开:

f ~ ≈ f + p m T ∂ f ∂ x m + p n T ∂ f ∂ x n + p m T ∂ 2 f ∂ x m 2 p m + p n T ∂ 2 f ∂ x n 2 p n + p m T ∂ 2 f ∂ x m ∂ x n p n \tilde{f} \approx f + p_m^T \frac{\partial f}{\partial x_m} + p_n^T \frac{\partial f}{\partial x_n} + p_m^T \frac{\partial^2 f}{\partial x_m^2} p_m + p_n^T \frac{\partial^2 f}{\partial x_n^2} p_n + p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n f~f+pmTxmf+pnTxnf+pmTxm22fpm+pnTxn22fpn+pmTxmxn2fpn

  • 绝对位置信息
    • 前四项( p m T ∂ f ∂ x m , p n T ∂ f ∂ x n , p m T ∂ 2 f ∂ x m 2 p m , p n T ∂ 2 f ∂ x n 2 p n p_m^T \frac{\partial f}{\partial x_m}, p_n^T \frac{\partial f}{\partial x_n}, p_m^T \frac{\partial^2 f}{\partial x_m^2} p_m, p_n^T \frac{\partial^2 f}{\partial x_n^2} p_n pmTxmf,pnTxnf,pmTxm22fpm,pnTxn22fpn)仅依赖单一位置的编码,反映了绝对位置的影响。
  • 相对位置信息
    • 最后一项 p m T ∂ 2 f ∂ x m ∂ x n p n p_m^T \frac{\partial^2 f}{\partial x_m \partial x_n} p_n pmTxmxn2fpn 涉及位置 m m m n n n 的交互,反映了相对位置的影响。
  • 意义
    • 绝对位置编码主要通过单位置项起作用,而相对位置编码通过交互项直接建模位置关系。

1.4 所有位置编码都是为了解决置换不变性吗?

位置编码的主要目的是解决置换不变性,但并非其唯一作用。不同的位置编码方法在实现这一目标的同时,还可能带来其他效果或改变模型行为:

  • 是的,解决置换不变性是核心目标

    • 无论是绝对位置编码还是相对位置编码,其根本目的是让模型感知词元顺序,打破自注意力的对称性。
    • 例如,三角函数编码、可训练编码、RoPE等都旨在引入位置依赖性。
  • 除此之外的额外作用

    1. 外推性(Extrapolation)
      • 定义:外推性是指模型在处理比训练时见过的序列更长的输入时,依然能够保持良好性能的能力。也就是说,模型能够"外推"到训练数据分布之外的序列长度。
      • 某些位置编码(如三角函数编码、相对位置编码)具有良好的外推性,能处理比训练时更长的序列。可训练位置编码则受限于预定义长度。
    2. 计算效率
      • 绝对位置编码(如可训练编码)增加存储需求,相对位置编码(如RoPE)可能增加注意力计算的开销。
    3. 任务适应性
      • 相对位置编码更适合自然语言处理任务,因为语言中相对顺序通常比绝对位置更重要(如句法关系)。
    4. 模型表达能力
      • 相对位置编码(如Transformer-XL)增强了对长距离依赖的捕捉能力;RoPE结合绝对和相对位置优势,提升线性注意力的性能。
    5. 创新性设计
      • 一些新型位置编码(如递归位置编码FLOATER)不仅解决顺序问题,还通过动态系统建模增强长序列处理能力。

1.5 总结

  • 如何解决置换不变性
    • 位置编码通过引入位置信息打破自注意力的对称性。绝对位置编码为每个词元添加独特标识,相对位置编码直接建模词元间关系。
  • 数学表现
    • 置换不变性体现为 Attention ( P X ) = P ⋅ Attention ( X ) \text{Attention}(P X) = P \cdot \text{Attention}(X) Attention(PX)=PAttention(X)。位置编码使输入或注意力计算依赖位置,置换后结果不再等价。
    • Taylor展开显示其包含绝对位置项和相对位置项。
  • 是否只为置换不变性
    • 核心目标是解决置换不变性,但也带来外推性、效率、适应性等额外改变。

2. 注意力机制的查询与位置向量:理解它们的关系与作用过程

2.1 基础概念回顾

2.1.1 注意力机制的核心组件

注意力机制基于三种向量:查询(Query)向量、键(Key)向量和值(Value)向量。这些向量通过以下方式生成:

  1. 输入嵌入:每个词元首先被转换为嵌入向量 x i x_i xi
  2. 线性变换:通过权重矩阵将嵌入向量投影为查询、键和值
    • 查询向量: q i = x i W Q q_i = x_i W_Q qi=xiWQ
    • 键向量: k i = x i W K k_i = x_i W_K ki=xiWK
    • 值向量: v i = x i W V v_i = x_i W_V vi=xiWV
2.1.2 位置编码的角色

位置编码为每个位置生成一个向量表示,使模型能够理解序列中词元的顺序。基本形式是:

  • 对于位置 p p p,生成位置编码向量 P E ( p ) PE(p) PE(p)
  • 将位置编码加到输入嵌入: x i + P E ( i ) x_i + PE(i) xi+PE(i)

2.2 位置向量与查询向量的关系

现在,让我解释位置向量如何影响查询向量,以及整个注意力计算过程。这里我将采用旋转位置编码(RoPE)作为例子,因为它最直接地展示了位置信息与查询/键向量的交互。

2.2.1 标准注意力机制中的作用过程

在标准的Transformer中(使用加性位置编码,如正弦位置编码),过程如下:

  1. 位置信息融入

    • 将位置编码加到输入嵌入: x ~ i = x i + P E ( i ) \tilde{x}_i = x_i + PE(i) x~i=xi+PE(i)
    • 生成查询向量: q i = x ~ i W Q = ( x i + P E ( i ) ) W Q q_i = \tilde{x}_i W_Q = (x_i + PE(i)) W_Q qi=x~iWQ=(xi+PE(i))WQ
    • 生成键向量: k j = x ~ j W K = ( x j + P E ( j ) ) W K k_j = \tilde{x}_j W_K = (x_j + PE(j)) W_K kj=x~jWK=(xj+PE(j))WK
  2. 注意力计算

    • 计算注意力分数: a i j = q i ⋅ k j d k a_{ij} = \frac{q_i \cdot k_j}{\sqrt{d_k}} aij=dk qikj
    • 应用softmax归一化: α i j = softmax ( a i j ) \alpha_{ij} = \text{softmax}(a_{ij}) αij=softmax(aij)
    • 加权求和值向量: o i = ∑ j α i j v j o_i = \sum_j \alpha_{ij} v_j oi=jαijvj

在这个过程中,位置信息间接地影响了查询和键向量,从而影响注意力分数的计算。

2.2.2 RoPE中的作用过程

在旋转位置编码中,位置信息与查询和键向量的交互更加直接和明确:

  1. 位置旋转应用

    • 生成基础查询向量: q i = x i W Q q_i = x_i W_Q qi=xiWQ
    • 应用位置旋转: q ^ i = R θ , i q i \hat{q}_i = R_{\theta, i} q_i q^i=Rθ,iqi
    • 同样地,对键向量: k ^ j = R θ , j k j \hat{k}_j = R_{\theta, j} k_j k^j=Rθ,jkj

    其中 R θ , p R_{\theta, p} Rθ,p 是基于位置 p p p 的旋转矩阵。

  2. 注意力计算

    • 计算旋转后的注意力分数: a i j = q ^ i ⋅ k ^ j = q i ⋅ R θ , i − j k j a_{ij} = \hat{q}_i \cdot \hat{k}_j = q_i \cdot R_{\theta, i-j} k_j aij=q^ik^j=qiRθ,ijkj
    • 应用softmax归一化: α i j = softmax ( a i j ) \alpha_{ij} = \text{softmax}(a_{ij}) αij=softmax(aij)
    • 加权求和值向量: o i = ∑ j α i j v j o_i = \sum_j \alpha_{ij} v_j oi=jαijvj

注意关键的数学性质: q ^ i ⋅ k ^ j = q i ⋅ R θ , i − j k j \hat{q}_i \cdot \hat{k}_j = q_i \cdot R_{\theta, i-j} k_j q^ik^j=qiRθ,ijkj。这表明旋转后的点积直接编码了相对位置 i − j i-j ij,使模型能够明确感知词元间的相对位置关系。

2.3 详细的作用过程示例

让我通过一个具体例子来说明位置向量和查询向量如何协同工作。假设我们处理一个简单的句子:“人工智能正在快速发展”。

2.3.1 步骤1: 输入处理与位置融合

以RoPE为例,处理流程如下:

  1. 词元嵌入:每个词元转换为嵌入向量

    • “人工” → x 0 x_0 x0
    • “智能” → x 1 x_1 x1
    • “正在” → x 2 x_2 x2
    • “快速” → x 3 x_3 x3
    • “发展” → x 4 x_4 x4
  2. 生成查询和键向量

    • q 0 = x 0 W Q q_0 = x_0 W_Q q0=x0WQ, k 0 = x 0 W K k_0 = x_0 W_K k0=x0WK (位置0)
    • q 1 = x 1 W Q q_1 = x_1 W_Q q1=x1WQ, k 1 = x 1 W K k_1 = x_1 W_K k1=x1WK (位置1)
    • … 以此类推
  3. 应用位置旋转

    • q ^ 0 = R θ , 0 q 0 \hat{q}_0 = R_{\theta, 0} q_0 q^0=Rθ,0q0, k ^ 0 = R θ , 0 k 0 \hat{k}_0 = R_{\theta, 0} k_0 k^0=Rθ,0k0
    • q ^ 1 = R θ , 1 q 1 \hat{q}_1 = R_{\theta, 1} q_1 q^1=Rθ,1q1, k ^ 1 = R θ , 1 k 1 \hat{k}_1 = R_{\theta, 1} k_1 k^1=Rθ,1k1
    • … 以此类推

在这个过程中,每个查询和键向量都通过位置特定的旋转变换,将位置信息编入向量表示中。

2.3.2 步骤2: 注意力计算

考虑位置2的词元"正在"如何与其他词元交互:

  1. 计算注意力分数:对于每个位置 j j j,计算 a 2 j = q ^ 2 ⋅ k ^ j a_{2j} = \hat{q}_2 \cdot \hat{k}_j a2j=q^2k^j

    • 与"人工"的注意力: a 20 = q ^ 2 ⋅ k ^ 0 = q 2 ⋅ R θ , 2 − 0 k 0 = q 2 ⋅ R θ , 2 k 0 a_{20} = \hat{q}_2 \cdot \hat{k}_0 = q_2 \cdot R_{\theta, 2-0} k_0 = q_2 \cdot R_{\theta, 2} k_0 a20=q^2k^0=q2Rθ,20k0=q2Rθ,2k0
    • 与"智能"的注意力: a 21 = q ^ 2 ⋅ k ^ 1 = q 2 ⋅ R θ , 2 − 1 k 1 = q 2 ⋅ R θ , 1 k 1 a_{21} = \hat{q}_2 \cdot \hat{k}_1 = q_2 \cdot R_{\theta, 2-1} k_1 = q_2 \cdot R_{\theta, 1} k_1 a21=q^2k^1=q2Rθ,21k1=q2Rθ,1k1
    • 与自身的注意力: a 22 = q ^ 2 ⋅ k ^ 2 = q 2 ⋅ R θ , 2 − 2 k 2 = q 2 ⋅ R θ , 0 k 2 = q 2 ⋅ k 2 a_{22} = \hat{q}_2 \cdot \hat{k}_2 = q_2 \cdot R_{\theta, 2-2} k_2 = q_2 \cdot R_{\theta, 0} k_2 = q_2 \cdot k_2 a22=q^2k^2=q2Rθ,22k2=q2Rθ,0k2=q2k2
    • 与"快速"的注意力: a 23 = q ^ 2 ⋅ k ^ 3 = q 2 ⋅ R θ , 2 − 3 k 3 = q 2 ⋅ R θ , − 1 k 3 a_{23} = \hat{q}_2 \cdot \hat{k}_3 = q_2 \cdot R_{\theta, 2-3} k_3 = q_2 \cdot R_{\theta, -1} k_3 a23=q^2k^3=q2Rθ,23k3=q2Rθ,1k3
    • 与"发展"的注意力: a 24 = q ^ 2 ⋅ k ^ 4 = q 2 ⋅ R θ , 2 − 4 k 4 = q 2 ⋅ R θ , − 2 k 4 a_{24} = \hat{q}_2 \cdot \hat{k}_4 = q_2 \cdot R_{\theta, 2-4} k_4 = q_2 \cdot R_{\theta, -2} k_4 a24=q^2k^4=q2Rθ,24k4=q2Rθ,2k4
  2. 应用softmax α 2 j = softmax ( a 2 j ) \alpha_{2j} = \text{softmax}(a_{2j}) α2j=softmax(a2j)

    这将注意力分数归一化为概率分布,表示"正在"对每个位置的关注程度。

  3. 加权聚合值向量 o 2 = ∑ j α 2 j v j o_2 = \sum_j \alpha_{2j} v_j o2=jα2jvj

    这一步合成了与"正在"相关联的信息,同时考虑了位置关系。

2.3.3 关键观察

在上面的例子中,我们可以观察到几个重要特点:

  1. 相对位置的直接编码:注意力分数 a 2 j a_{2j} a2j 直接依赖于相对位置 2 − j 2-j 2j,通过 R θ , 2 − j R_{\theta, 2-j} Rθ,2j 编码。

  2. 自注意力的特殊性:当 i = j i=j i=j 时(词元与自身的注意力),旋转矩阵变为单位矩阵 R θ , 0 R_{\theta, 0} Rθ,0,使得 a i i = q i ⋅ k i a_{ii} = q_i \cdot k_i aii=qiki,这是标准内积。

  3. 前后关系的区分

    • 前面的词元(如"人工"和"智能")通过正相对位置 ( + 2 , + 1 ) (+2, +1) (+2,+1) 编码
    • 后面的词元(如"快速"和"发展")通过负相对位置 ( − 1 , − 2 ) (-1, -2) (1,2) 编码

    这使模型能够区分前后文关系。

2.4 位置向量如何影响注意力分布

位置编码对注意力分布的影响是多方面的,这种影响通过以下机制实现:

2.4.1 相对距离敏感性

在RoPE中,旋转矩阵 R θ , i − j R_{\theta, i-j} Rθ,ij 编码相对距离 i − j i-j ij,这使得模型能够学习距离敏感的注意力模式:

  • 近距离偏好:模型可以学习给予临近词元更高的注意力
  • 语法依赖:捕捉如主谓关系等可能跨越多个位置的结构
  • 长距离关联:识别远距离的相关信息,如代词与其指代对象
2.4.2 方向感知

RoPE的一个关键特性是它能区分正负相对位置,即前文和后文:

  • i > j i > j i>j 时(关注前面的内容),旋转矩阵是 R θ , + ( i − j ) R_{\theta, +(i-j)} Rθ,+(ij)
  • i < j i < j i<j 时(关注后面的内容),旋转矩阵是 R θ , − ( j − i ) R_{\theta, -(j-i)} Rθ,(ji)

这使模型能够学习方向敏感的注意力模式,例如在英语中,形容词通常在名词前面,而在汉语中,形容词的位置可能更灵活。

2.4.3 频率差异化

RoPE使用不同频率的旋转,对应于向量的不同维度:

  • 高频组件(向量的前几对维度)对小的位置变化敏感,有助于捕捉局部结构
  • 低频组件(向量的后几对维度)对大的位置变化敏感,有助于捕捉全局结构

这种多尺度表示使模型能够同时关注局部语法关系和全局文档结构。

2.5 注意力查询和位置向量的共同演化

在训练过程中,注意力机制的查询向量和位置编码不是静态的,而是通过反向传播共同演化:

  1. 查询投影学习:权重矩阵 W Q W_Q WQ 学习如何从输入嵌入生成有效的查询向量

  2. 位置解释学习:模型学习如何解释位置编码提供的位置信息

  3. 位置敏感的内容识别:模型逐渐发展出位置感知的表示,使相同词在不同位置可以有不同的解释

这种共同演化使模型能够形成复杂的注意力模式,例如:

  • 在句子开头关注主语
  • 在动词后关注宾语
  • 在代词处回溯寻找指代对象

2.6 实际应用中的表现

在实际应用中,位置编码与注意力查询的交互表现出丰富的模式:

2.6.1 例子:情感分析任务

考虑句子:“这部电影很无聊,但演员表演精彩”。

在没有位置编码的情况下,模型可能无法区分"无聊"和"精彩"分别修饰什么,导致情感判断混淆。

有了位置编码,注意力查询能够正确关联:

  • “无聊"与"电影”
  • “精彩"与"演员表演”
  • "但"作为转折关系的信号

这种正确的关联是通过位置编码与查询向量的交互实现的。

2.6.2 例子:翻译任务

在翻译英语到中文时,位置编码帮助模型处理两种语言不同的语法结构:

英语:“The red car is parked outside the building.” 中文:“红色的汽车停在建筑物外面。”

位置编码使模型能够学习:

  • 英语中形容词在名词前(“red car”)
  • 英语中使用被动语态的位置结构
  • 中文中表达位置关系的不同方式

这种跨语言的结构映射依赖于位置编码与注意力机制的紧密协作。

参考

更详细的分类和介绍

  1. 苏神科学空间
  2. https://0809zheng.github.io/2022/07/01/posencode.html
  3. Rope解析

相关文章:

  • 【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!
  • list简单模拟实现
  • AI时代的弯道超车之第十四章:AI与生活和生命的改变
  • 山火中的动态坐标:北斗头盔B3为逆行者铺就生命通道
  • CSRF 和 XSS 攻击分析与防范
  • 02、基础入门-Spring生态圈
  • 解决:npm install报错,reason: certificate has expired
  • go-zero(十八)结合Elasticsearch实现高效数据检索
  • 在线文档管理系统 spring boot➕vue|源码+数据库+部署教程
  • Git - 1( 14000 字详解 )
  • JVM方法区核心技术解析:从方法区到执行引擎
  • 雾锁王国开服联机教程-专用服务器
  • 以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • PaddleClas 车辆属性模型vehicle_attribute_model转onnx并部署
  • VirtualiSurg使用SenseGlove触觉手套开发XR手术培训体验
  • 「彻底卸载 Quay 容器仓库」:干净移除服务、镜像与配置的全流程指南
  • 使用GoLang版MySQLDiff对比表结构
  • OpenSSH 漏洞-SSH 服务器面临 MitM 攻击和拒绝服务攻击的风险
  • vue插槽的实例详解
  • 使用PEFT库将原始模型与LoRA权重合并
  • 上百家单位展示AI+教育的实践与成果,上海教育博览会开幕
  • 中国首艘海洋级智能科考船“同济”号试航成功,可搭载水下遥控机器人
  • 不是10点!乌克兰官员称尚未就俄乌谈判开始时间达成一致
  • 夜读丨读《汉书》一得
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • 赖清德为“临阵脱逃”作准备,国台办:绝不会任“台独”祸首逍遥法外