1. 文本数值化的必要性
计算机本质上只能处理数字,而人类语言是高度抽象且离散的符号系统。要让机器理解文本,必须建立从离散符号到连续数值的映射关系。这种映射需要满足两个核心要求:
- 保留语义信息:相似含义的词在数值表示上应该相近
- 支持数学运算:能够通过向量运算捕捉语言关系(如"国王-男+女≈女王")
传统NLP采用词袋模型和one-hot编码,但这种表示存在严重缺陷:
- 维度灾难:词汇表大小为V时,每个词都是V维向量
- 语义缺失:所有词向量相互正交,无法表达语义关系
- 数据稀疏:绝大多数元素为0,计算效率低下
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 词向量技术演进
2.1 静态词向量
Word2Vec(2013)开创了分布式表示的先河,通过两种训练方式:
- CBOW:用上下文预测当前词
- Skip-gram:用当前词预测上下文
数学上优化以下目标函数:
code复制J(θ) = Σ log P(w_t+j | w_t)
其中概率通过softmax计算:
code复制P(o|c) = exp(u_o^T v_c) / Σ_w exp(u_w^T v_c)
GloVe(2014)结合了全局统计和局部上下文:
code复制J = Σ f(X_ij)(w_i^T w̃_j + b_i + b̃_j - log X_ij)^2
X_ij表示词i和j的共现频率
2.2 动态词向量
Transformer架构(2017)带来了上下文相关的表示:
code复制Attention(Q,K,V) = softmax(QK^T/√d_k)V
BERT(2018)通过掩码语言建模实现双向编码:
code复制L = Σ log P(w_i | w_{1...i-1},w_{i+1...n})
3. 位置编码详解
3.1 绝对位置编码
原始Transformer的正弦编码:
code复制PE(pos,2i) = sin(pos/10000^(2i/d_model))
PE(pos,2i+1) = cos(pos/10000^(2i/d_model))
这种编码具有线性可加性:
code复制PE(pos+Δ) = T(Δ)PE(pos)
其中T(Δ)是线性变换矩阵
