神经网络相关的向量嵌入,语义理解

一、为什么神经网络需要“向量嵌入”(Embedding)?

计算机最擅长处理数字。

但是人类语言是:

cat
dog
king
queen
apple

这些都是文字,计算机不能直接理解。

所以第一步:

把离散的符号(文字、图片、用户、商品等)转换成连续的数字向量。

这个过程叫:

\[\textbf{Embedding(嵌入)} \]

简单说:

Embedding = 给每个东西分配一个数字坐标,让计算机可以用数学方式比较它们。


二、最简单的例子:把词变成数字

假设只有三个词:

cat
dog
car

最简单的方法:

编号:

cat = 1
dog = 2
car = 3

问题:

数学上:

\[2>1 \]

计算机会认为:

dog 比 cat 大

但是:

数字大小没有任何语义意义。

所以不能简单编号。


三、One-hot 向量:早期方法

可以这样表示:

三个词:

cat
dog
car

建立三个维度:

向量
cat [1,0,0]
dog [0,1,0]
car [0,0,1]

例如:

cat:

\[x_{cat} = \begin{bmatrix} 1\\ 0\\ 0 \end{bmatrix} \]

dog:

\[x_{dog} = \begin{bmatrix} 0\\ 1\\ 0 \end{bmatrix} \]

问题:

每个词互相完全独立。

计算:

cat 和 dog 的距离:

\[[1,0,0] \]

和:

\[[0,1,0] \]

没有关系。

但是人类知道:

cat 和 dog 很相似

所以需要更好的表示。


四、Embedding:让相似的东西靠近

Embedding 的思想:

不要给词一个编号。

而是给它一个坐标。

例如二维空间:

          动物
            |
            |
 dog        cat
  \         /
   \       /
    \     /
---------------- 食物
          \
           \
          apple

数学表示:

cat:

\[[2.1,5.3] \]

dog:

\[[2.0,5.0] \]

apple:

\[[8.2,1.4] \]

现在:

cat 和 dog:

距离:

\[\sqrt{(2.1-2.0)^2+(5.3-5.0)^2} \]

很小。

apple 和 cat:

距离:

\[\sqrt{(8.2-2.1)^2+(1.4-5.3)^2} \]

很大。

于是:

数学距离反映语义相似程度。


五、但是词为什么会自动得到这种位置?

这是神经网络最关键的地方。

答案:

通过训练调整向量。

例如:

训练一句话:

The cat eats fish

模型看到:

cat
fish

经常一起出现。

于是训练过程中:

让:

\[vector(cat) \]

靠近:

\[vector(dog) \]

远离:

\[vector(car) \]

慢慢调整。


六、Embedding 本质是什么数学东西?

Embedding 本质就是一个矩阵:

叫:

\[Embedding\ Matrix \]

假设:

10000 个词。

每个词:

300维。

那么:

\[E= \begin{bmatrix} e_1\\ e_2\\ e_3\\ ...\\ e_{10000} \end{bmatrix} \]

形状:

\[10000 \times 300 \]

例如:

第100个词:

\[e_{100} \]

就是:

这个词的位置

七、神经网络如何查找词向量?

假设:

cat 的编号:

\[id=15 \]

输入:

\[15 \]

实际上做:

查表:

\[Embedding[15] \]

得到:

\[[ 0.25, -0.13, 0.87, ... ] \]

这个300个数字:

就是 cat 的语义表示。


八、为什么向量可以表示“意思”?

关键:

向量之间可以计算关系。

1. 相似性

常用:

余弦相似度:

\[similarity= \frac{A\cdot B}{|A||B|} \]

例如:

cat:

\[[1,2,3] \]

dog:

\[[1.1,2.1,3.2] \]

点积比较大:

说明方向接近。


2. 方向代表关系

这是 Embedding 最神奇的地方。

例如:

经典例子:

\[king- man+ woman \]

计算:

\[vector(king) - vector(man) + vector(woman) \]

结果:

接近:

\[vector(queen) \]

为什么?

因为模型学到了:

男性 -> 女性

这种语义方向。

数学:

king
 |
 |
man


queen
 |
 |
woman

两个关系方向类似。


九、进入 Transformer 后,Embedding 发生了什么变化?

传统 Word Embedding:

一个词:

永远一个向量。

例如:

bank:

银行

或者:

河岸

以前:

只有:

\[vector(bank) \]

但是 Transformer:

会根据上下文改变。

例如:

句子1:

I deposited money in the bank

bank:

得到:

\[vector(bank|money) \]

含义:

银行。


句子2:

I sat near the river bank

得到:

\[vector(bank|river) \]

含义:

河岸。

这叫:

Contextual Embedding(上下文嵌入)


十、为什么 Transformer 可以做到上下文理解?

因为 Attention。

输入:

I deposited money in the bank

每个词先有初始 Embedding:

\[X \]

例如:

bank:

\[x_{bank} \]

然后生成:

\[Q,K,V \]

计算:

\[Attention(Q,K,V) \]

bank 的 Query 会寻找:

哪些词和我相关?

找到:

money
deposited

于是:

bank 的新向量融合这些信息。

变成:

\[bank_{new} \]

它已经不是简单的 bank。

而是:

银行(bank)
+ 金钱(money)
+ 存款(deposit)

的综合表示。


十一、从数学角度看“理解”是什么?

神经网络没有像人一样理解。

它做的是:

建立高维空间中的关系。

例如:

二维:

动物区域:

cat
dog
lion


交通区域:

car
bus
train

真实模型:

不是二维。

GPT 的隐藏空间可能:

几千维。

例如:

一个词:

\[x= [ 0.23, -0.52, 0.91, ... ] \]

有:

4096个数字。

每个维度可能代表某种抽象特征。

例如:

某些维度可能:

动物性

某些:

时间关系

某些:

情感倾向

但是:

没有人工指定。

它们是训练自动形成的。


十二、把整个过程串起来

完整流程:

1. 文字

cat

2. Token 编码

1234

3. Embedding 查表

得到:

\[X= [ 0.2, 0.8, -0.5, ... ] \]

4. Transformer 多层处理

每层:

\[Q=XW_Q \]

\[K=XW_K \]

\[V=XW_V \]

Attention:

\[softmax(QK^T/\sqrt{d_k})V \]

得到新的向量:

\[X' \]

5. 输出预测

根据最终向量:

预测下一个 token。


十三、最核心的几个概念总结

概念 通俗理解 数学形式
Embedding 给东西建立数字坐标 向量
Vector 一组描述特征的数字 [0.2,0.8,...]
距离 两个东西是否相似 欧氏距离
方向 关系模式 向量减法
训练 不断调整数字 梯度下降
语义理解 学习向量空间中的关系 高维几何
Attention 根据上下文重新组合信息 Q,K,V

一句话总结:

神经网络的“理解”不是把文字变成规则,而是把文字变成高维空间中的向量,通过数学关系(距离、方向、组合)表示意义,再通过训练不断调整这些向量,使它们能够完成预测任务。

而 Transformer 的突破在于:

它不再使用固定的词向量,而是根据上下文动态生成新的语义向量,因此同一个词在不同句子中可以拥有不同含义。

posted @ 2026-08-26 13:16  立体风  阅读(7)  评论(0)    收藏  举报