LOADING

加载过慢请开启缓存 浏览器默认开启

DL常用函数

1. 激活函数 (Activation)

Sigmoid

\[ \sigma(x)=\frac{1}{1+e^{-x}} \]
说明:输出在 \((0,1)\);适合二分类输出(配合 BCE),但隐藏层容易发生梯度消失。
导数
\[ \sigma'(x)=\sigma(x)(1-\sigma(x)) \]


Tanh

\[ \tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} \]
说明:输出在 \((-1,1)\),比 sigmoid 居中(均值为 0)常用于 RNN/隐藏层。仍有梯度消失问题。
导数
\[ \frac{d}{dx}\tanh(x)=1-\tanh^2(x) \]


ReLU(Rectified Linear Unit)

\[ \mathrm{ReLU}(x)=\max(0,x) \]
说明:计算简单,稀疏激活,缓解梯度消失。但负区间梯度为 0,可能出现“死神经元”。


Leaky ReLU

\[ \mathrm{LeakyReLU}(x)= \begin{cases} x,& x\ge 0\\ \alpha x,& x<0 \end{cases} \]
通常 \(\alpha=0.01\)说明:负区间保有小梯度,缓解 ReLU 死区问题。


PReLU(Parametric ReLU)

\[ \mathrm{PReLU}(x)=\begin{cases} x,& x\ge 0\\ a x,& x<0 \end{cases} \]
其中 \(a\) 为可学习参数。说明:比 Leaky 更灵活,但会增加参数。


ELU(Exponential Linear Unit)

\[ \mathrm{ELU}(x)=\begin{cases} x,& x\ge0\\ \alpha (e^x-1),& x<0 \end{cases} \]
说明:负区间趋近于 \(-\alpha\),能加速学习并部分居中激活。


SELU(Scaled ELU)

\[ \mathrm{SELU}(x)=\lambda\begin{cases} x,& x>0\\ \alpha(e^x-1),& x\le0 \end{cases} \]
配套特殊初始化和网络结构可实现“自归一化”。


GELU(Gaussian Error Linear Unit)

常用近似形式:
\[ \mathrm{GELU}(x)=x\cdot \Phi(x) \quad(\Phi \text{ 为标准正态 CDF}) \]
近似实现用:
\[ \mathrm{GELU}(x)\approx \tfrac{x}{2}\left(1+\tanh\left[\sqrt{\tfrac{2}{\pi}}\left(x+0.044715x^3\right)\right]\right) \]
说明:Transformer(BERT、GPT 系列)常用,表现优于 ReLU 的平滑替代。


Swish

\[ \mathrm{Swish}(x)=x\cdot\sigma(x) \]
说明:平滑,有时比 ReLU/GELU 更好,特别在大模型里表现不错。


Mish

\[ \mathrm{Mish}(x)=x\tanh(\ln(1+e^x)) \]
说明:平滑、无界正区间,部分任务比 Swish/ELU 更优(但计算稍贵)。


Softplus(平滑 ReLU)

\[ \mathrm{Softplus}(x)=\ln(1+e^x) \]
说明:可微分的 ReLU 近似;导数为 sigmoid。


Softmax(多类输出)

对于向量 \(z\in\mathbb{R}^K\)
\[ \mathrm{Softmax}(z)_{i}=\frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \]
说明:把 logits 转为概率分布。数值稳定实现用 \(z-\max_j z_j\)(避免 exp 溢出)。
常用变体:Log-Softmax(用于 NLLLoss 的稳定实现)。


2. 损失函数 (Loss)

MSE(Mean Squared Error)

\[ L_{\mathrm{MSE}}=\frac{1}{n}\sum_{i=1}^n (y_i-\hat y_i)^2 \]
说明:回归常用;对离群点敏感(平方放大误差)。


MAE(Mean Absolute Error)

\[ L_{\mathrm{MAE}}=\frac{1}{n}\sum_{i=1}^n |y_i-\hat y_i| \]
说明:对离群点更稳健,但导数在 0 点不可导(可用 subgradient)。


Huber Loss

\[ L_\delta(a)= \begin{cases} \frac{1}{2}a^2,& |a|\le\delta\\ \delta(|a|-\tfrac{1}{2}\delta),& |a|>\delta \end{cases},\quad a=y-\hat y \]
说明:MSE 与 MAE 的折中,常用于含异常点的回归。


Cross-Entropy(多类)

如果 \(y\) 为 one-hot,\(\hat p\) 为概率分布:
\[ L=-\sum_{i} y_i \log \hat p_i \]
说明:分类任务最常用;通常与 softmax 一起使用。实现上常用 log-softmax + nll 以提高稳定性。


Binary Cross-Entropy / BCEWithLogits

对二分类,若用 logits \(z\)
\[ \mathrm{BCEWithLogits}(z,y) = -\big[y\log \sigma(z) + (1-y)\log(1-\sigma(z))\big] \]
实现提醒:用 BCEWithLogits(直接用 logits 而不是先 sigmoid)避免数值不稳定。


KL Divergence(Kullback–Leibler)

连续形式或离散形式,例如离散分布 \(P,Q\)
\[ D_{KL}(P|Q)=\sum_i P(i)\log\frac{P(i)}{Q(i)} \]
说明:VAE、知识蒸馏中常见(作为正则/约束)。非对称。


NLL(Negative Log Likelihood)

分类时给定目标类别 \(y\) 与 log-prob \(\log p(y)\)
\[ L_{\mathrm{NLL}}=-\log p(y) \]
常与 LogSoftmax 联用。


Hinge Loss(SVM)

\[ L_{\mathrm{hinge}}=\max(0, 1-y\cdot f(x)) \]
说明:二分类与 margin 的损失,常用于传统 SVM。


Focal Loss(处理类别不平衡)

\[ L_{\mathrm{focal}}=- (1-p_t)^\gamma \log(p_t) \]
其中 \(p_t\) 是预测概率,\(\gamma>0\) 控制对困难样本的聚焦。常用于目标检测(如 RetinaNet)。


Contrastive / Triplet / InfoNCE(表示学习)

  • Triplet Loss(三元组):
    \[ L=\max\big(0,\; d(a,p)-d(a,n)+\alpha\big) \]
    其中 \(a\) 为 anchor,\(p\) positive,\(n\) negative,\(d(\cdot,\cdot)\) 距离,\(\alpha\) margin。
  • InfoNCE(对比学习常见)(简化):
    \[ L=-\log\frac{\exp(\mathrm{sim}(z,z^+)/\tau)}{\sum_{i}\exp(\mathrm{sim}(z,z_i)/\tau)} \]
    \(\mathrm{sim}\) 常为余弦相似度,\(\tau\) 温度参数。

CTC Loss(连接时序分类)

用于对齐未知对齐标签(如语音识别):数学形式复杂,通常使用动态规划实现(不可直接给出单行公式)。常用框架 API(如 ctc_loss)。


3. 正则化 / 其它防过拟合手段 (Regularization)

L2 正则化(权重衰减)

\[ \Omega_{L2}(w)=\lambda \sum_i w_i^2 \]
说明:促使参数变小,常与优化器一起实现(注意:PyTorch 的 weight_decay 与直接在 loss 加 L2 有细微实现差异)。


L1 正则化

\[ \Omega_{L1}(w)=\lambda \sum_i |w_i| \]
说明:倾向稀疏权重(特征选择效果)。


Dropout

训练时对每个神经元使用 Bernoulli 随机掩码:
\[ \tilde h_i = \frac{h_i \cdot r_i}{1-p},\quad r_i\sim\mathrm{Bernoulli}(1-p) \]
说明:训练时随机丢弃,推理时按比例缩放或使用训练时的 scale。如上式为 inverted dropout(常用实现),训练-推理一致性更好。


Label Smoothing

将 one-hot 软化:
\[ y^{LS}_k=(1-\epsilon)\cdot \mathbf{1}_{k=y} + \frac{\epsilon}{K} \]
说明:防止模型过度自信,常用于分类(Transformer 中常用)。


Spectral Normalization

对层权重做谱范数规范化(常用于 GAN 的判别器),控制 Lipschitz 常数,提升稳定性。


4. 归一化 / 标准化 函数 (Normalization)

Batch Normalization(BatchNorm)

对 mini-batch 的每个特征维度 \(k\)
\[ \hat x_k=\frac{x_k-\mu_k}{\sqrt{\sigma_k^2+\epsilon}},\quad y_k=\gamma_k \hat x_k + \beta_k \]
其中 \(\mu_k,\sigma_k^2\) 为 batch 均值与方差,\(\gamma,\beta\) 可学习。说明:加速训练,允许较大学习率;小 batch 时效果变差。


Layer Normalization(LayerNorm)

对单个样本的特征维度归一:
\[ \hat x=\frac{x-\mu_{\text{layer}}}{\sqrt{\sigma_{\text{layer}}^2+\epsilon}},\quad y=\gamma\hat x+\beta \]
说明:对 RNN 和 Transformer 更稳定(与 batch size 无关)。


InstanceNorm / GroupNorm

  • InstanceNorm:对每个样本每个通道独立归一(常用于风格迁移)。
  • GroupNorm:把通道分组后做归一,适合小 batch。

Weight Normalization / RMSNorm

  • WeightNorm:对权重向量做 reparam,提高训练稳定性。
  • RMSNorm:只用 RMS 信息做归一(无需均值),计算更简单。

5. 初始化(权重初始分布)

Xavier / Glorot 初始化(均匀或正态)

针对激活函数对称(tanh):
方差设定(正态):
\[ \mathrm{Var}(w)=\frac{2}{n_\text{in}+n_\text{out}} \]
说明:保持前向/反向传播方差平稳。


He / Kaiming 初始化

针对 ReLU:
\[ \mathrm{Var}(w)=\frac{2}{n_\text{in}} \]
说明:ReLU 系列常用。


Orthogonal 初始化

令权重矩阵为正交矩阵(适用于 RNN、深层网络时稳定训练)。


6. 相似度 / 距离 函数 (Similarity / Distance)

点积(Dot product)

\[ \mathrm{dot}(x,y)=x^\top y \]
用于注意力、向量相似度基础。


余弦相似度(Cosine)

\[ \mathrm{cosine}(x,y)=\frac{x^\top y}{|x||y|} \]
说明:对向量长度不敏感,仅看角度方向。常用于检索/相似度评估。


欧氏距离(L2)

\[ d(x,y)=|x-y|_2=\sqrt{\sum_i (x_i-y_i)^2} \]


曼哈顿距离(L1)

\[ d(x,y)=|x-y|_1=\sum_i |x_i-y_i| \]


Mahalanobis 距离

\[ d_M(x,y)=\sqrt{(x-y)^\top S^{-1}(x-y)} \]
其中 \(S\) 为协方差矩阵。


7. 注意力与位置编码 (Attention & PosEnc)

Scaled Dot-Product Attention

给 query \(Q\)、key \(K\)、value \(V\)
\[ \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V \]
说明\(\sqrt{d_k}\) 用于缩放以缓解点积随维度增长而变大导致 softmax 梯度消失的问题。


Multi-Head Attention(概念公式)

\[ \mathrm{MultiHead}(Q,K,V)=\mathrm{Concat}(\text{head}_1,\dots,\text{head}_h)W^O \]
\[ \text{head}_i=\mathrm{Attention}(QW_i^Q, KW_i^K, VW_i^V) \]


Sinusoidal Positional Encoding(Transformer 原始)

对位置 \(pos\) 和维度 \(i\)
\[ \begin{aligned} PE_{(pos,2i)} &= \sin\left(\frac{pos}{10000^{2i/d}}\right)\\ PE_{(pos,2i+1)} &= \cos\left(\frac{pos}{10000^{2i/d}}\right) \end{aligned} \]
说明:为序列模型提供位置信息;也可用可学习的位置编码。


8. 优化器相关(优化器更新公式与学习率调度)

SGD(带或不带 momentum)

  • SGD
    \[ w_{t+1}=w_t - \eta \nabla_w L(w_t) \]
  • Momentum
    \[ v_{t+1}=\mu v_t + \eta \nabla_w L(w_t),\quad w_{t+1}=w_t - v_{t+1} \]
    其中 \(\mu\) 是 momentum(惯性系数)。

Adam(自适应一阶优化器)

参数:\(\beta_1,\beta_2,\epsilon\)
\[ \begin{aligned} m_t&=\beta_1 m_{t-1} + (1-\beta_1) g_t\\ v_t&=\beta_2 v_{t-1} + (1-\beta_2) g_t^2\\ \hat m_t&=\frac{m_t}{1-\beta_1^t},\quad \hat v_t=\frac{v_t}{1-\beta_2^t}\\ w_{t+1}&=w_t - \eta \frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon} \end{aligned} \]
说明:广泛用于 Transformer / 大模型训练。注意学习率与 weight decay 的配合(AdamW 推荐分离 weight decay)。


RMSProp / Adagrad

  • Adagrad:历史梯度平方和累计,适合稀疏梯度。
  • RMSProp:对平方梯度做指数平均,避免 Adagrad 的学习率过快衰减。

学习率调度(常见)

  • Step decay:每 \(k\) 步降低 lr(乘以 gamma)。
  • Exponential decay\(\eta_t=\eta_0 e^{-kt}\).
  • Cosine annealing(无/有热重启):常见于训练后期退火。
  • Warmup:训练初期线性/指数升高 lr(Transformer 常用线性 warmup + 后续衰减)。
    说明:大模型常用 linear warmup + Adam + cosine decayinverse sqrt 衰减。

9. 其它常见数学工具(数值稳定性等)

LogSumExp(数值稳定的 log-sum-exp)

\[ \log\sum_i e^{x_i} = m + \log\sum_i e^{x_i-m},\quad m=\max_i x_i \]
说明:用于 stable softmax / log-likelihood 计算,避免溢出。


Softmax with Temperature

\[ \mathrm{softmax}_\tau(z)_i=\frac{e^{z_i/\tau}}{\sum_j e^{z_j/\tau}} \]
\(\tau<1\) 使分布更尖锐,\(\tau>1\) 更平滑。常用于知识蒸馏或采样控制。


Gradient Clipping(梯度裁剪)

  • 按值裁剪\(g_i=\mathrm{clip}(g_i,-c,c)\)
  • 按范数裁剪:若 \(|g|_2>c\),则 \(g\leftarrow g\cdot \frac{c}{|g|_2}\)
    说明:RNN / 大学习率下防止梯度爆炸。

小结

  • 激活函数:Transformer/大模型 通常选 GELUSwish;传统 CNN 常用 ReLU/LeakyReLU
  • 损失函数:分类用 Cross-Entropy/NLL;回归用 MSE/Huber;不平衡用 Focal
  • 归一化:Transformer 用 LayerNorm;CNN 多用 BatchNorm(但小 batch 时考虑 GroupNorm)。
  • 优化器:大模型通常用 Adam / AdamW + 线性 Warmup + Cosine Decay。注意 weight decay 的实现方式(AdamW 与旧 Adam + L2 不同)。
  • 数值稳定性:softmax/log-sum-exp、BCEWithLogits、log-softmax 等稳定实现非常重要。
  • 调参实践:学习率、batch size、权重衰减、warmup 步数对大模型影响最大。