一、基础数学原理解释
已尽量通俗易懂
- 矩阵:二维数组,如
[[1, 2, 3], [4, 5, 6]]为一个矩阵。 - 向量:多维数据,如
(2, 3, 5)为一个向量。 - 点积:两个向量在多维坐标系中表示为点,两点之间的距离。
二、基本原理讲解
1. 大模型原理
从本质上来看,目前LLM的训练
就是在算几十上亿个数,
把这些数公开,即为开放权重。
2. 权重
以线性函数(一次函数)为例:
(大写字母均为矩阵)
$ Y = WX + b $
将文字通过Embedding模型解析为向量,排列为矩阵,即为X。
形似:
[[0.00], [0.96], [0.35], ...],
[[0.15], [0.00], [0.00], ...],
[[0.00], [0.13], [0.69], ...],
[[0.35], [0.12], [0.16], ...],
...
而训练AI要算的就是W和b。
实际上,训练AI在算的数不是在线性函数中,而是在非线性函数中,
简单点的,形似:
$ Y = g(WX + b) $
g则为一个激活函数,如ReLU等
复杂一点的,形似:
$ Y = g({W_1}g({W_2} g(…X + {b_1}) + {b_2}) + …) $
W和b,即为在训练过程中算出来的数。
3. 归一化
AI最终输出的文字只是经过运算后的一串向量,
如 (0.1, 2.3, 5.69, 1.25, ...)
在最终的输出Embedding模型中,每个值都代表最终Token的概率,
为了后续的简便计算和输出,
需要令向量中所有值的和相加为1。
归一化在目前阶段最常见:
Softmax,其计算公式:
$z_i$指在向量z中第i项的值,
$z_j$指在向量z中第j项的值
$m$为向量z中的最大值。
$$ Softmax({z_i}) = \frac{e^{(z_i / t - m)}}{ {\textstyle \sum_{j=1}^{K}}e^{(z_j / t - m)} } $$
简单来说:
将向量内的值全部除以t得到第二个向量,
再将每个值减去第二个向量内的最大值后
将第二个向量内的值作为指数,e作为底数,求出第三个向量,
将第三个向量的每一个值除以第三个向量的总和,构造出最终结果。
类似于
设t为0.5
向量为(1, 2, 3)
经过第一步变换为(2, 4, 6)
经过第二步变换为(-4, -2, 0)
经过第三步变换为$ (e^{-4}, e^{-2}, e^0) $
令总和s = $ (e^{-4} + e^{-2} + e^0) $
经过第四步变换为
$$ (\frac{e^{-4}}{s}, \frac{e^{-2}}{s}, \frac{e^{0}}{s}) $$
展开可得:
$$ (\frac{e^{-4}}{e^{-4} + e^{-2} + e^0}, \frac{e^{-2}}{e^{-4} + e^{-2} + e^0}, \frac{e^{0}}{e^{-4} + e^{-2} + e^0}) $$
图解:
