2. 直观线性代数与概率论
线性代数与概率论是大模型的“内部语言”。本文丢弃晦涩难懂的公式推导,用直观的几何比喻与生活例子带你彻底弄懂向量点积、余弦相似度与 Softmax 概率归一化。
📐 1. 向量点积与相似度:如何让 AI 理解“语义接近”?
在大模型中,文字(如“苹果”、“香蕉”)会被转换为固定长度的数字数组,称为 Embedding 词向量。
例如,用 3 个特征维度打分([甜度, 是否水果, 是否电子产品]):
- 红富士苹果:
[0.9, 0.8, 0.0] - 香蕉:
[0.8, 0.2, 0.0] - iPhone:
[0.0, 0.9, 0.9]
1.1 向量点积 (Dot Product)
点积对应位置相乘再相加:
点积数值越大,说明两个词的语义倾向越一致!
1.2 余弦相似度 (Cosine Similarity)
如果文本很长导致数值偏大,余弦相似度可以归一化向量长度,把相似度约束在 [-1, 1] 范围内:
import numpy as np
v1 = np.array([0.9, 0.8, 0.0])
v2 = np.array([0.8, 0.2, 0.0])
# 计算余弦相似度
cos_sim = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
print("红富士苹果与香蕉的余弦相似度:", round(cos_sim, 4))
# 输出: 0.9381 (极高相关)
🧮 2. 矩阵乘法 :神经网络的变换魔法
神经网络的实质是做特征的线性变换:
- : 输入特征矩阵,Shape:
[Batch_Size, In_Features] - : 权重参数矩阵,Shape:
[In_Features, Out_Features] - : 偏置向量,Shape:
[Out_Features]
乘法维度规则
必须满足 前列等于后行!
🎲 3. Softmax 函数:把得分转成百分比概率
大模型最后输出的原始打分(Logits)可能很大或有负数,Softmax 通过指数与归一化把它变成总和为 1 的概率分布:
import numpy as np
# 大模型对下一个字候选预测的 Logits 分值
logits = np.array([4.0, 1.0, 0.0])
# Softmax 转换
exp_logits = np.exp(logits)
probs = exp_logits / np.sum(exp_logits)
words = ["张三", "李四", "王五"]
for word, p in zip(words, probs):
print(f"预测为 '{word}' 的概率: {p * 100:.2f}%")
# 张三: 93.60%, 李四: 4.70%, 王五: 1.70%