LOADING

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

DL常用函数

1. 激活函数 (Activation)

Sigmoid

$$ \sigma(x)=\frac{1}{1+e^{-x}} $$ 说明:输出在 (0, 1);适合二分类输出(配合 BCE),但隐藏层容易发生梯度消失。 导数σ′(x) = σ(x)(1 − σ(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)

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


Leaky ReLU

$$ \mathrm{LeakyReLU}(x)= \begin{cases} x,& x\ge 0\\ \alpha x,& x<0 \end{cases} $$ 通常 α = 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} $$ 说明:负区间趋近于 α,能加速学习并部分居中激活。


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)

常用近似形式: GELU(x) = x ⋅ Φ(x)  (Φ 为标准正态 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

Swish(x) = x ⋅ σ(x) 说明:平滑,有时比 ReLU/GELU 更好,特别在大模型里表现不错。


Mish

Mish(x) = xtanh (ln (1 + ex)) 说明:平滑、无界正区间,部分任务比 Swish/ELU 更优(但计算稍贵)。


Softplus(平滑 ReLU)

Softplus(x) = ln (1 + ex) 说明:可微分的 ReLU 近似;导数为 sigmoid。


Softmax(多类输出)

对于向量 z ∈ ℝK$$ \mathrm{Softmax}(z)_{i}=\frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} $$ 说明:把 logits 转为概率分布。数值稳定实现用 z − maxjzj(避免 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, 为概率分布: L = −∑iyilog i 说明:分类任务最常用;通常与 softmax 一起使用。实现上常用 log-softmax + nll 以提高稳定性。


Binary Cross-Entropy / BCEWithLogits

对二分类,若用 logits zBCEWithLogits(z, y) = −[ylog σ(z) + (1 − y)log (1 − σ(z))] 实现提醒:用 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)LNLL = −log p(y) 常与 LogSoftmax 联用。


Hinge Loss(SVM)

Lhinge = max (0, 1 − y ⋅ f(x)) 说明:二分类与 margin 的损失,常用于传统 SVM。


Focal Loss(处理类别不平衡)

Lfocal = −(1 − pt)γlog (pt) 其中 pt 是预测概率,γ > 0 控制对困难样本的聚焦。常用于目标检测(如 RetinaNet)。


Contrastive / Triplet / InfoNCE(表示学习)

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

CTC Loss(连接时序分类)

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


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

L2 正则化(权重衰减)

ΩL2(w) = λiwi2 说明:促使参数变小,常与优化器一起实现(注意:PyTorch 的 weight_decay 与直接在 loss 加 L2 有细微实现差异)。


L1 正则化

ΩL1(w) = λi|wi| 说明:倾向稀疏权重(特征选择效果)。


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 $$ 其中 μk, σk2 为 batch 均值与方差,γ, β 可学习。说明:加速训练,允许较大学习率;小 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)

dot(x, y) = xy 用于注意力、向量相似度基础。


余弦相似度(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 = ∑i|xi − yi|


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(概念公式)

MultiHead(Q, K, V) = Concat(head1, …, headh)WO headi = Attention(QWiQ, KWiK, VWiV)


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)

  • SGDwt + 1 = wt − ηwL(wt)
  • Momentumvt + 1 = μvt + ηwL(wt),  wt + 1 = wt − vt + 1 其中 μ 是 momentum(惯性系数)。

Adam(自适应一阶优化器)

参数:β1, β2, ϵ $$ \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ηt = η0ekt.
  • Cosine annealing(无/有热重启):常见于训练后期退火。
  • Warmup:训练初期线性/指数升高 lr(Transformer 常用线性 warmup + 后续衰减)。 说明:大模型常用 linear warmup + Adam + cosine decayinverse sqrt 衰减。

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

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

log ∑iexi = m + log ∑iexi − m,  m = maxixi 说明:用于 stable softmax / log-likelihood 计算,避免溢出。


Softmax with Temperature

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


Gradient Clipping(梯度裁剪)

  • 按值裁剪gi = clip(gi, −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 步数对大模型影响最大。