惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
T
The Exploit Database - CXSecurity.com
Latest news
Latest news
G
GRAHAM CLULEY
Project Zero
Project Zero
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Webroot Blog
Webroot Blog
Help Net Security
Help Net Security
TaoSecurity Blog
TaoSecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
N
News and Events Feed by Topic
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
C
CXSECURITY Database RSS Feed - CXSecurity.com
V2EX - 技术
V2EX - 技术
S
Secure Thoughts
AWS News Blog
AWS News Blog
W
WeLiveSecurity
云风的 BLOG
云风的 BLOG
V
V2EX
Last Week in AI
Last Week in AI
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
P
Palo Alto Networks Blog
A
Arctic Wolf
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
M
MIT News - Artificial intelligence
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
PCI Perspectives
PCI Perspectives
量子位
K
Kaspersky official blog
腾讯CDC
Schneier on Security
Schneier on Security
F
Full Disclosure
S
Schneier on Security

Chenxu's Blog

RAG检索优化:从 68% 到 82.2% 北邮计算机研究生选课指北 学习机器学习 上海篇 提出一个好问题 写代码的环境 选购一台合适的设备 计算机的第零课 序言 内蒙古篇 山东篇 一篇对transformers的疑惑 浅析GPUStack 浅谈后端项目分层 浙江篇 河南篇 一些三端协同的开发工具记录 浅谈编程语言中的 GC 在 Windows 上安装 Rust 美化博客 消息队列 MyBatis 现代交换原理2024年题目 回忆版 北邮计科本科课程指北 ClkLog埋点用户分析系统研究报告 大数据梧桐实验分享 大数据HBase实验分享 国产向量数据库研究实践 —— 基于 Milvus 的电影推荐系统 服务器环境配置 大数据HDFS实验分享 SSE多服务之间推送数据 数据库系统原理 操作系统 编译原理 手把手教你gozero从开发到部署 (番外篇): 介绍 gtodolist 前端项目 天津篇 北京篇 手把手教你gozero从开发到部署 (5): gtodolist 之任务的删除 前端相关问题 vue3 + element-plus学习 git相关命令 人工智能原理 使用 MongoTemplate 时开启事务 MySQL Redis 力扣刷题笔记之动态规划 记录一次 VSCode 出现的各种奇怪的问题 手把手教你gozero从开发到部署 (4): 在 model 中自己编写函数实现数据库分页查询 记录平时用到的 windows 右键管理 记录平时使用的 linux 的指令 安装 gstore 并使用 java api 手把手教你gozero从开发到部署 (3): gtodolist 之任务的创建和修改 手把手教你gozero从开发到部署 (番外篇): 记录第一次部署 CI/CD 的流程 记录完成 gtodolist 中遇到的 bug 手把手教你gozero从开发到部署 (2): gtodolist 之 user 模块开发 手把手教你gozero从开发到部署 (1): gtodolist 项目说明和环境准备 快速入门 gozero 框架 vue部署在nginx上的相关问题 记一次安装scrapy的报错 将博客部署至服务器 Java CS143: Compliers 《MySQL必知必会》读书笔记(2) 初识 GORM 初识 gin 框架 Spring 《MySQL必知必会》读书笔记(1) 本地搭建博客 🤝友链 🙋🏻‍♂️关于 Browser and Device Check
学习深度学习
Chenxu · 2026-02-12 · via Chenxu's Blog

激活函数

Sigmoid

公式:$f(x) = \frac{1}{1 + e^{-x}}$

导数:$f’(x) = f(x) * (1 - f(x))$

特点:函数输出在(0,1)之间,导数输出在(0,0.25)之间。[-6, 6]之间比较敏感,[-3, 3]之内效果较好。一般5层之内就会出现梯度消失现象,一般只用于二分类的输出层。

Tanh

公式:$f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$

导数:$f’(x) = 1 - f(x)^2$

特点:函数输出范围在(-1, 1)之间,导数输出在(0,1)之间。收敛速度更快,一般用于隐藏层。

ReLU(Rectified Linear Unit)

公式:$f(x) = max(0, x)$

导数:$f’(x) = 1$ if $x > 0$; $f’(x) = 0$ if $x < 0$

特点:忽略负信号,更简单,效率更高。会使一部分神经元输出为0,减少参数之间的依存关系,缓解过拟合。一般隐藏层首选。

为了考虑负样本所以有了 PReLU(Parametric ReLU):

公式:$f(x) = max(0, x) + \alpha * min(0, x)$

导数:$f’(x) = 1$ if $x > 0$; $f’(x) = \alpha$ if $x < 0$

当 $\alpha$ 取 0.01 时,也叫 Leaky ReLU。

Sofmax

公式:$f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{n} e^{x_j}}$

导数:$f’(x_i) = f(x_i) * (1 - f(x_i))$

特点:将多分类结果按照概率输出,适用于多分类的输出层。

Identity

公式:$f(x) = x$

导数:$f’(x) = 1$

特点:无激活函数,直接输出,适用于回归任务。

激活函数的选取规则:

  • 隐藏层:ReLU -> Leaky ReLU / PReLU -> Tanh -> Sigmoid

  • 输出层:二分类 -> Sigmoid;多分类 -> Softmax;回归 -> Identity

参数初始化

  • 均匀分布:从区间均匀随机取值,默认区间 (0, 1),可以设置为 $(-\frac{1}{\sqrt{n}}, \frac{1}{\sqrt{n}})$,其中 n 是输入的维度。可以打破对称性,防止神经元输出相同。但是随机范围不当可能会导致梯度问题。适用于浅层网络或者低复杂度模型。
  • 正态分布:随机从均值为0,标准差为1的高斯分布中取样,使用很小的值进行初始化。
  • 全 0/1:全设置为 0/1。实现简单,但是不能打破对称性。全 1 会导致激活值指数增长,梯度爆炸。
  • 固定值:权重参数初始化为固定值。实现简单,但是不能打破对称性。
  • kaiming 初始化:也叫 HE 初始化,适用于 ReLU 激活函数。
    • 正态分布:从 [0, std] 中取样,其中 $std = \sqrt{\frac{2}{fan_{in}}}$
    • 均匀分布:从 [-limit, limit] 中取样,其中 $limit = \sqrt{\frac{6}{fan_{in}}}$
    • $fan_{in}$:输入的维度
  • Xavier 初始化:也叫 Glorot 初始化,使用于Sigmoid 和 Tanh 激活函数。
    • 正态分布:从 [0, std] 中取样,其中 $std = \sqrt{\frac{2}{fan_{in} + fan_{out}}}$
    • 均匀分布:从 [-limit, limit] 中取样,其中 $limit = \sqrt{\frac{6}{fan_{in} + fan_{out}}}$
    • $fan_{in}$:输入的维度
    • $fan_{out}$:输出的维度

损失函数

多分类交叉熵损失

公式:$L = -\sum_{i=1}^{N} y_i \log (S(f_{\theta}(x_i)))$

  • $y_i$ 样本属于某个类别的真实概率(0/1)
  • $f(x_i)$ 样y属于某一类别的预测分数
  • $S$ softmax 函数,将预测分数转换为概率分布

二分类交叉熵损失

公式:$L = -y \log \hat{y} - (1 - y) \log (1 - \hat{y})$

  • $y$ 样本属于某个类别的真实概率(0/1)
  • $\hat{y}$ 样本属于某个类别的预测概率,需要通过 sigmoid 函数转换为概率分布

MAE (L1 Loss)

公式:$L = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i|$

  • $y_i$ 样本的真实值
  • $\hat{y}_i$ 样本的预测值

须有稀疏性,惩罚较大的值。梯度在零点不平滑,跳过极小值。

MSE Loss

公式:$L = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2$

常常作为正则项,预测值和目标值相差很大时会造成梯度爆炸。

Smooth L1 Loss

公式:

综合 MAE 和 MSE,解决 L1 不光滑和离群点梯度爆炸的问题。

梯度下降优化方法

指数加权平均公式:

  • $S_t$ 表示 $t$ 时刻的指数加权平均
  • $Y_t$ 表示 $t$ 时刻的值
  • $\beta$ 表示衰减系数,取值范围 $0 < \beta < 1$,越大数据越平缓

动量算法 Momentum

梯度计算公式:$s_t = \beta s_{t-1} + (1 - \beta) g_t$

更新公式:$w_t = w_{t-1} - \eta s_t$

  • $s_t$ 表示 $t$ 时刻的指数加权平均梯度值
  • $g_t$ 表示 $t$ 时刻的梯度
  • $\beta$ 调节权重系数
  • $\eta$ 表示学习率
  • $w_t$ 表示 $t$ 时刻的模型权重参数

Adagrad

  1. 初始化学习率 $\eta$、初始化参数 $w$、小常数 $\sigma = 10^{-10}$
  2. 初始化梯度累计变量 $s = 0$
  3. 从训练集中采样 $m$ 个样本的小批量,计算梯度 $g_t$
  4. 累积平方梯度:$s_t = s_{t-1} + g_t \odot g_t$,其中 $\odot$ 表示各个分量相乘
  5. 学习率更新公式:$\eta = \frac{\eta}{\sqrt{s_t} + \sigma}$
  6. 权重参数更新公式:$w_t = w_{t-1} - \frac{\eta}{\sqrt{s_t} + \sigma} \cdot g_t$
  7. 重复步骤 3–7

缺点:学习率过早过量降低,训练后期学习率太小,难以找到最优解。

RMSprop

对 Adagrad 的改进,计算梯度时使用指数平均加权。

梯度计算公式:$s_t = \beta s_{t-1} + (1 - \beta) g_t \odot g_t$

学习率计算公式:$\eta = \frac{\eta}{\sqrt{s_t} + \sigma}$

权重参数更新公式:$w_t = w_{t-1} - \frac{\eta}{\sqrt{s_t} + \sigma} \cdot g_t$

Adam

将 Momentum 和 RMSprop 结合起来,计算梯度的一阶矩(平均值)和二阶矩(梯度的方差)的自适应估计:

  • 修正梯度:使用梯度的指数加权平均
  • 修正学习率:使用梯度平方的指数加权平均

梯度计算公式:

$$ \begin{align*} m_t &= \beta_1 m_{t-1} + (1 - \beta_1) g_t \ s_t &= \beta_2 s_{t-1} + (1 - \beta_2) g_t^2 \ \hat{m}_t &= \frac{m_t}{1 - \beta_1^t}, \quad \hat{s}_t = \frac{s_t}{1 - \beta_2^t} \end{align*} $$

权重参数更新公式:

$$ w_t = w_{t-1} - \frac{\eta}{\sqrt{\hat{s}_t} + \epsilon} \hat{m}_t $$

  • $m_t$ 是梯度的一阶矩估计
  • $s_t$ 是梯度的二阶矩估计
  • $\hat{m}_t$ 和 $\hat{s}_t$ 是偏差校正后的估计

学习率衰减策略

等间隔衰减

每隔一定周期,将学习率按固定比例衰减。例如每 50 epoch,衰减 0.5,学习率变化如图所示:

指定间隔衰减

手动指定每隔多少间隔按比例衰减。例如按照图中 milestones 每次衰减 0.5,学习率变化如图所示:

指数衰减

学习率按指数衰减。例如每 epoch 衰减 0.95,学习率变化如图所示:

余弦退火

学习率随训练周期变化,类似于余弦函数。公式如下:$\eta_t = \eta_{\text{min}} + \frac{1}{2} (\eta_{\text{max}} - \eta_{\text{min}}) \left(1 + \cos\left(\frac{T_{\text{cur}}}{T_{\text{max}}} \pi\right)\right)$

  • $\eta_{\text{min}}$ 是学习率的最小值(通常为 0)
  • $\eta_{\text{max}}$ 是学习率的初始值
  • $T_{\text{cur}}$ 是当前的训练周期内的步数
  • $T_{\text{max}}$ 是单个训练周期内的步数

正则化

Dropout

训练过程中,随机将部分神经元的输出置为 0,防止过拟合。dropout 率为 $p$,则每个神经元被置为 0 的概率为 $p$,通常为0.2到0.5之间。实际应用中通常在全连接层后增加 Dropout 层。

批量归一化 (Batch Normalization)

先对数据标准化,再对数据重构:

$$ f(x) = \lambda \cdot \frac{x - E(x)}{\sqrt{Var(x)} + \epsilon} + \beta $$

  • $\lambda$ 和 $\beta$ 是可学习的参数,用于重构数据
  • $E(x)$ 是 $x$ 的均值
  • $Var(x)$ 是 $x$ 的方差
  • $\epsilon$ 是一个小的常数,用于防止除以零

CNN

卷积神经网络 (Convolutional Neural Network, CNN) 是含有卷积层的神经网络,主要由三部分构成:

  • 卷积层:负责提取图像中的局部特征
  • 池化层:用来大幅降低参数量级(降维)
  • 全连接层:用来输出结果

graph TB A[输入图像] --> B[卷积层:线性点乘求和] B --> C[激励层:激活函数映射成概率] C --> D[池化层:降维] D --> E[全连接层:输出结果] E --> F[输出结果]

卷积层

卷积层(Convolutional Layer)通t卷积操作提取输入数据中的特征。利用卷积核对输入处理,从而生成特征图,并且每个卷积层能够提取到不同层次的信息,从低级特征到高级特征。

卷积运算:卷积核和输入数据的局部区域间做点积(对应位置相乘再求和)

卷积层作用:

  • 特征提取:从输入图像中提取低级特征(边缘、角点、纹理等),通过多个卷积层堆叠,网络能够逐渐从低级特征到高级特征(物体的形状、区域等)进行学习
  • 权重共享:同一个卷积核在整个输入图像上共享权重,这使得卷积层的参数量大大减少,减少了计算量并提高了训练效率
  • 局部连接:卷积层中每个神经元仅与输入图像的一个小区域相连,这称为局部感受野,这种局部连接方式更符合图像的空间结构,有助于捕捉图像中的局部特征
  • 空间不变性:由于卷积操作是局部的并且采用权重共享,卷积层在处理图像时具有平移不变性。也就是说,不论图像出现在图像的哪个位置,卷积层都能有效地检测到这些物体的特征

Padding

Padding:在原图周围增加额外像素(通常是0)

作用:

  • 保持空间维度:卷积操作后,空间维度会减小,padding可以防止空间维度减小
  • 保留边缘信息:增加边缘像素的计算次数,更好地保留边缘信息
  • 提高性能:避免由于特征图尺寸快速缩小而导致的信息丢失

类型:

  • Valid:不使用padding,卷积后空间维度会减小。适用于不需要保持尺寸,或者输入图像足够大,边缘信息丢失不重要的情况
  • Same:添加足够的填充,卷积后空间维度与输入相同。广泛使用,因为可以保持特征图尺寸,方便网络设计和计算
  • Full:添加尽可能多的填充,使得卷积核的每个原书都至少在输入图像上滑动一次,卷积后空间维度会增大。较少使j,因为会增加计算量,并且可能会在边缘引入一些伪影

Stride

Stride:卷积核在图像上滑动时的步伐大小

作用:

  • 降低计算复杂度:步长越大则卷积核移动次数越少,降低计算量
  • 增大感受野:大步长会增大每个神经元在输入数据上的感受野,能够捕捉更大范围的输入信息

选择:取决于具体应用场景和网络架构。常见为1,尤其是网络的早期层,允许保留更多空间细节。大于1时用于减少特征图尺寸和增大感受野,例如网络后期层需要快速降维时常见设置为2或4。

多通道卷积计算

先对应通道做点积,然后各通道结果相加

多卷积核计算

特征图大小计算

$$ N = \frac{W - F + 2P}{S} + 1 $$

  • $N$:特征图大小
  • $W$:输入图像大小
  • $F$:卷积核大小
  • $P$:padding大小
  • $S$:stride大小

池化层

降低维度,缓解过拟合,减少计算量和内存消耗

padding:

输入数据为多通道时,池化层对每个输入通道分别池化,不会像卷积层一样相加,所以池化层输入和输出的通道数相等。

RNN

RNN(Recurrent Neural Network):一种专门处理序列数据的神经网络。

词嵌入层,将文本转换成向量,流程如下:

  1. 初始化词向量:随机初始化或通过加载预训练的词向量初始化
  2. 输入索引:每个单词在词汇表里面有一个唯一索引
  3. 查找词向量:将单词索引映射为对应的词向量
  4. 输入到RNN:将词向量作为RNN的输入

隐藏状态作用:

  1. 记忆功能
  2. 上下文理解
  3. 连接不同时间步