深度学习数学公式汇总
激活函数
- erf:error function or Gauss error function
- Sigmoid / logistic
- softmax
- tanh
- GLU
- GELU
- Swiss
- SwiGLU
erf 高斯误差函数
sigmoid函数
logistic function是一种sigmoid function, 某一类形如"S"的函数,都可以成为sigmoid
取值范围(0,1),导数取值范围为(0,0.25]
softmax函数
其中 \(z_{i}\) 为第i个节点的输出值,C为输出节点的个数,即分类的类别个数。通过Softmax函数就可以将多分类的输出值转换为范围在 \([0, 1]\) 和为1的概率分布。
按$ \frac{\partial softmax(z_i)}{\partial z_i} = softmax(z_i)(1-softmax(z_i))$,
按 \(\frac{\partial softmax(z_i)}{\partial z_j} = -softmax(z_i)softmax(z_j)\)
Softmax Cross-Entropy Loss:
tanh函数
双曲正切函数(hyperbolic tangent function)
取值范围为(-1,1),导数为:
取值(0,1)
门控线性单元(Gated Linear Unit,GLU)
即x的两个线性映射(linear projection)逐点相乘,逐点相乘也叫Hadamard积(Hadamard Product)有些也用\(\odot\)表示
GELU(Gaussian Error Linear Unit,高斯误差线性单元)
Swish 函数:一种自门控(Self-Gated)激活函数
SwiGLU
其中\(Swish_β = x \sigma(\beta x)\),β is a learnable parameter
损失函数
- 最小二乘 least sqaure / Mean Squared Error (均方误差)
- 交叉熵(Cross-Entropy)
- KL散度(Kullback-Leibler Divergence),相对熵(Relative entropy)
- 负对数似然Negative Log Likelihood
- 泛化误差 generalization error
1.最小二乘
损失函数为:$$J(\theta)=\frac{1}{2}(\mathbf{X}\theta-\mathbf{Y})^T(\mathbf{X}\theta-\mathbf{Y})$$
对\(\theta\)求导取0后:
最小二乘法的几何意义是高维空间中的一个向量在低维子空间的投影
2.交叉熵
二分类:$$L = \frac{1}{N}\sum_{i} L_i = \frac{1}{N}\sum_{i}-[y_i\cdot log(p_i) + (1-y_i)\cdot log(1-p_i)]$$
其中:
- \(y_i\) —— 表示样本 i 的label,正类为 1 ,负类为 0
- \(p_i\) —— 表示样本 i 预测为正类的概率
多分类:$$L = \frac{1}{N}\sum_{i} L_i = - \frac{1}{N}\sum_{i} \sum_{c=1}^My_{ic}\log(p_{ic})$$
其中:
- \(M\) ——类别的数量
- \(y_{ic}\) ——符号函数( 0 或 1 ),如果样本 i 的真实类别等于 c 取 1 ,否则取 0
- \(p_{ic}\) ——观测样本 i 属于类别 c 的预测概率
3. KL散度 / 相对熵
考虑某个未知的分布 p(x),假定用一个近似的分布 q(x) 对它进行建模
\begin{aligned} KL (p || q) &= - \int p(x) \ln q(x) d x - (-\int p(x) \ln p(x) dx) = - \int p(x) \ln [\frac{q(x)}{p(x)}] dx \end{aligned}
最小化 KL 散度等价于最大化似然函数
\[熵H(X)=\begin{cases}-\sum_xp(x)\log(p(x)),\quad &X是离散型随机变量\\-\int_xp(x)\log(p(x)),&X是连续型随机变量\end{cases} \]
4.负对数似然NLL
假设数据点独立同分布,则似然函数为:
最小化其负对数似然,则得到交叉熵公式:
评估函数
- 困惑度(perplexity)
1. 困惑度(perplexity)
我们把\(x\)看作是单词, \(u(x)\)表示每个位置上单词的真实分布,
\(v(x)\)是模型的预测分布 \({p(w_i|w_1,w_2,...,w_{i-1})}\),那么就有交叉熵:
\begin{aligned}
H(u,v) &=E_u[-\log v(x)] \\
&= -\sum_{x}^{}{u(x)\log v(x)} \\
&= -\frac{1}{m}\sum_{i=1}^{m} {(\sum_{x}^{}u(x|w_1,...,w_{i-1})\log p(w_i|w_1,w_2,...,w_{i-1}))} \\
&=-\frac{1}{m}\sum_{i=1}^{m}{(1\times\log p(w_i|w_1,w_2,...,w_{i-1})+ \sum_{x\ne w_i}^{}0\times\log p(w_i|w_1,w_2,...,w_{i-1}))}\\
&=-\frac{1}{m}\sum_{i=1}^{m}{\log p(w_i|w_1,w_2,...,w_{i-1})}\\
&=\log(ppl(S))
\end{aligned}
模型优化
- 正则化
1. 正则化
⭐模型训练过程
- LayerNorm 层归一化
- RMS Pre-Norm
1. 层归一化
$ \overline{a}_i = \frac{a_i-\mu}{\sigma} g_i $ ,其中 \(\mu = \frac 1 n \sum_{i=1}^na_i\) ,\(\sigma= \sqrt {\frac 1 n \sum_{i=1}^n{{(a_i-\mu)}^2}}\)
2. RMS Norm
\(\overline{a}_i = \frac{a_i}{RMS(a)} g_i\) , 其中 \({RMS(a)}=\sqrt {\frac 1 n \sum_{i=1}^n{{a_i}^2}}\)
模型训练方式
- 无监督预训练+监督微调(GPT-1, BERT)
1. GPT-1 的无监督预训练(Unsupervised Pre-training)
以下是用未标注的数据做无监督的预训练的过程。\(\mathcal{U}={u_1, ..., u_n}\)是一个无监督词序列语料,那么语言模型给出这样一个词序列的概率是:
\begin{aligned}
P(\mathcal{U}) = P(u_1)P(u_2|u_1)P(u_3|u_1,u_2)...p(u_n|u_1,u_{n-1}) = \prod_i^n P(u_i|u_1, ..., u_{i-1})
\end{aligned}
如果模型的上下文窗口(Context Windows)大小是 \(k\) 的话,则上式可近似转化为:
\begin{aligned}
P(\mathcal{U}) = \prod_i P(u_i | u_{i-k}, ..., u_{i-1})
\end{aligned}
我们的目标就是让这个概率 \(P(\mathcal{U})\) 最大化,因此我们定义一下目标,即最大化对数似然函数。再将模型的参数 \(Θ\) 也考虑进来,则其定义如下:
\begin{aligned}
L_1(\mathcal{U}) = \sum_{i} \log P(u_i | u_{i-k}, ..., u_{i-1}; \Theta)
\end{aligned}
明确了上面目标函数后,我们来看下 GPT-1 预训练模型。\(U = (u_{-k}, ..., u_{-1})\)是考虑了上下文的输入词向量矩阵,\(W_e\)是词嵌入矩阵,\(W_p\)是位置编码(或叫位置嵌入)矩阵。所有隐藏层都是 transformer_block,第一个隐藏层的输入是 \(h_0\),每 i 个隐藏层的输出是 \(h_i\)。那么 GPT-1 预训练模型可以表示为:
\begin{aligned}
h_0 &= U W_e + W_p \\
h_l &= \operatorname{transformer_block}(h_{l-1}) \quad \forall i\in [1, n] \\
P(u) &= \operatorname{softmax}(h_n W_e^T)
\end{aligned}
以最大化 \(L_1\) 为目标,经过这样学习大量文本语料后,就得到了一个预训练模型。
2. GPT-1 的监督微调(Supervised Fine-Tuning,SFT)
对于不同的任务,在 fine-tune 阶段将所有任务的输入结构都转换成 token 序列,喂给已经预训练好的模型来 fine-tune,然后再接一个 linear+softmax。
设我们有一个标注过的数据集 \(\mathcal{C}\), 组成它的每个样本都包括一个文本序列 \(x = x^1, ..., x^m\) 和一个标签 \(y\)。微调时,就是把输入 \(x\) 经过预训练模型后在最后一个 Decoder 输出的 \(y\),进行线性变换和 softmax 回归:
\begin{aligned}
P(y|x^1, ..., x^m) = \operatorname{softmax}(y W_y)
\end{aligned}
这个过程中,就学习到了 \(W_l \in \mathbb{R}^{m\times c}\) 参数矩阵,其中 \(c\) 是下游任务目标类别的数量,比如情感分类(positive、neutral、negative)的 \(c\) 为 3。在模型使用时,最后得到的 \(\operatorname{softmax}(y W_y)\) 就能得到一组关于目标类别的概率分布了,其中最大的概率值即可看做是结果。监督微调的目标,也是最大化对数似然函数:
\begin{aligned}
L_2(\mathcal{C}) = \sum_{(x,y)}\log P(y|x^1, ..., x^m)
\end{aligned}
这样整体看,我们把两个训练过程(无监督预训练、监督训练)联合起来。其中在无监督预训练过程中,我们顺手完成了语言建模,它其实相当于我们的一个辅助目标。我们发现这个辅助目标有两个好处:提升了监督模型的泛化能力;加速模型收敛。
在这样的「无监督预训练 + 监督训练」方法下,目标函数就是最大化下面这个组合(引入一个 \(λ\) 超参数控制无监督预训练权重):
\begin{aligned}
L_3(\mathcal{C}) = L_2(\mathcal{C}) + \lambda * L_1(\mathcal{C})
\end{aligned}
图论
- 拉普拉斯矩阵(Laplacian matrix)/调和矩阵(harmonic matrix)
1. 拉普拉斯矩阵
拉普拉斯矩阵是图论中用到的一种重要矩阵,给定一个有n个顶点的图 G=(V,E),其拉普拉斯矩阵被定义为 L = D-A,D其中为图的度矩阵(表示边数),A为图的邻接矩阵。
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 图 | 邻接矩阵A | 度矩阵D | 拉普拉斯矩阵 |
- 正则化的拉普拉斯矩阵(Symmetric normalized Laplacian):\(L^{sym}:=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\)
- 图中的拉普拉斯算子 = 图的拉普拉斯矩阵





浙公网安备 33010602011771号