深度学习数学公式汇总

发布时间 2023-07-30 05:49:21作者: Rayinfos

激活函数

softmax函数

\begin{aligned}
Softmax(z_{i}) = \frac{e^{z_{i}}}{\sum_{c = 1}^{C}{e^{z_{c}}}}
\end{aligned}
其中 \(z_{i}\) 为第i个节点的输出值,C为输出节点的个数,即分类的类别个数。通过Softmax函数就可以将多分类的输出值转换为范围在 \([0, 1]\) 和为1的概率分布。

模型训练

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}
这个过程中,就学习到了