一、基础数学原理解释


已尽量通俗易懂


  • 矩阵:二维数组,如 [[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要算的就是Wb


实际上,训练AI在算的数不是在线性函数中,而是在非线性函数中,


简单点的,形似:

$ Y = g(WX + b) $

g则为一个激活函数,如ReLU


复杂一点的,形似:

$ Y = g({W_1}g({W_2} g(…X + {b_1}) + {b_2}) + …) $

Wb,即为在训练过程中算出来的数。


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}) $$

图解: