深度学习数学公式汇总

激活函数

  • erf:error function or Gauss error function
  • Sigmoid / logistic
  • softmax
  • tanh
  • GLU
  • GELU
  • Swiss
  • SwiGLU

erf 高斯误差函数

\[\operatorname{erf}(x)=\frac{2}{\sqrt{\pi}}\int_{0}^{x} e^{-t^2}dt \]

sigmoid函数

logistic function是一种sigmoid function, 某一类形如"S"的函数,都可以成为sigmoid

\[f(x) = \frac{1}{1+e^{-x}} \]

取值范围(0,1),导数取值范围为(0,0.25]

\[f'(x) = f(x)(1-f(x)) \]

softmax函数

\[Softmax(z_{i}) = \frac{e^{z_{i}}}{\sum_{c = 1}^{C}{e^{z_{c}}}} \]

其中 \(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:

\[L(y,\hat y) = -\sum_i y_i \log\hat{y} = -\sum_i y_i \log{\frac{e^{z_{i}}}{\sum_{c = 1}^{C}{e^{z_{c}}}}} \]

\[\partial_{z_i} L(y,\hat y) = softmax(z_i)-y_i \]

tanh函数

双曲正切函数(hyperbolic tangent function)

\[\tanh x= \frac{\sinh x}{\cosh x} = \frac{e^x - e^{-x}}{e^x + e^{-x}} = \frac{e^{2x} - 1}{e^{2x} +1} \]

取值范围为(-1,1),导数为:

\[\partial_x \tanh x= 1- \tanh^2 x \]

取值(0,1)

门控线性单元(Gated Linear Unit,GLU)

\[GLU(x,W,V,b,c)=σ(xW +b)⊗(xV +c) \]

即x的两个线性映射(linear projection)逐点相乘,逐点相乘也叫Hadamard积(Hadamard Product)有些也用\(\odot\)表示

GELU(Gaussian Error Linear Unit,高斯误差线性单元)

\[GELU(x) = \Phi(x) * I(x) + (1 - \Phi(x)) * 0x = x\Phi(x) \]

Swish 函数:一种自门控(Self-Gated)激活函数

\[swish(x) = x\alpha(\beta x) \]

SwiGLU

\[SwiGLU(x,W,V,b,c,β)=Swish_β(xW +b)⊗(xV +c) \]

其中\(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后:

\[\theta=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y} \]

最小二乘法的几何意义高维空间中的一个向量在低维子空间的投影

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

假设数据点独立同分布,则似然函数为:

\[L(x, y)=\prod_{i=1}^N(\hat{y_i})^{y_i} (1-\hat{y_i})^{1-y_i} \]

最小化其负对数似然,则得到交叉熵公式:

\[NLL(x, y)=-\sum_{i=1}^N\left (y_i\mathbb{log(}\hat{y_i}) + (1- y_i)\mathbb{log}(1-\hat{y_i})\right)\\ \propto{-log(p(x))} \]


评估函数

  • 困惑度(perplexity)

1. 困惑度(perplexity)

\[ppl(S)=p(w_1,w_2,w_3,...,w_m)^{-1/m} \\ =\sqrt[m]{\prod_{i=1}^{m}\frac{1}{p(w_i|w_1,w_2,...,w_{i-1})}} \]

我们把\(x\)看作是单词, \(u(x)\)表示每个位置上单词的真实分布,

\[u(x|w_1,w_2,...,w_{i-1})=\begin{cases} 1,x=w_i\\ 0,x\ne w_i \end{cases} \]

\(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为图的邻接矩阵。

image image image image
邻接矩阵A 度矩阵D 拉普拉斯矩阵
  • 正则化的拉普拉斯矩阵(Symmetric normalized Laplacian):\(L^{sym}:=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\)
  • 图中的拉普拉斯算子 = 图的拉普拉斯矩阵
posted @ 2023-07-30 05:42  Rayinfos  阅读(869)  评论(0)    收藏  举报