【机器学习实战】Datawhale夏令营2:深度学习回顾

#DataWhale夏令营 #ai夏令营

文章目录

  • 1. 深度学习的定义
    • 1.1 深度学习&图神经网络
    • 1.2 机器学习和深度学习的关系
  • 2. 深度学习的训练流程
    • 2.1 数学基础
      • 2.1.1 梯度下降法
        • 基本原理
        • 数学表达
        • 步骤
        • 学习率 α
        • 梯度下降的变体
      • 2.1.2 神经网络与矩阵
        • 网络结构表示
        • 前向传播
        • 激活函数
        • 反向传播
        • 批处理
        • 卷积操作
        • 参数更新
        • 优化算法
        • 正则化
        • 初始化
    • 2.2 激活函数
      • Sigmoid 函数:
      • Tanh 函数:
      • ReLU 函数 (Rectified Linear Unit):
      • Leaky ReLU 函数:
      • ELU 函数 (Exponential Linear Unit):
      • Softmax 函数:
      • Swish 函数:
      • GELU 函数:
    • 2.3 权重与误差
      • 计算误差
      • 计算梯度:
      • 更新权重:
      • 实例说明
      • 激活函数对误差和权重计算的影响
    • 2.4 输入层、隐含层和输出层
      • 2.4.1. 输入层 (Input Layer)
      • 2.4.2 隐含层 (Hidden Layer)
      • 2.4.3 输出层 (Output Layer)
  • 3. 图神经网络结构
    • 3.1 AlexNet
    • 3.2 ResNet
      • 3.2.1 核心概念:残差学习
      • 3.2.2 残差块(Residual Block)
      • 3.2.3 网络架构
      • 3.2.4 主要特点
      • 3.2.5 ResNet的变体
    • 3.3 EfficientNet
      • 3.3.1 核心思想:复合缩放(Compound Scaling)
      • 3.3.2 基础网络:EfficientNet-B0
      • 3.3.3 缩放方法
      • 3.3.4 EfficientNet 系列
      • 3.3.5 主要特点
  • 4. 迁移学习
  • 5. 改进思路
    • 5.1 帧提取
    • 5.2 音频fake
    • 5.3 特征提取

1. 深度学习的定义

1.1 深度学习&图神经网络

首先,我们需要明确深度学习的定义。深度学习是构建多层的神经网络,从而构建起一个大的模型,通过这个模型去学习复杂的特征表示。简单地说,这些层包含输入层、隐含层和输出层(特别像是LSTM),然而像是DCN这样的网络,实际的深度学习模型的层设可能更富创造性。
我认为深度学习可以概括为这样的一个流程:输入就像是神经信号(外部刺激),通过中间的神经元和通路进行加工和处理,最终化为模型(人体)的反应。深度学习正是借鉴了人体神经元处理信号的过程。
在数学意义上,深度学习的全流程至少涉及了所有的大一公共数学课。您需要通过处理权重矩阵和数据向量(线性代数)、梯度下降法计算(微积分)、不确定性计算(概率论)。通常它是这样一个流程:通过确定阈值,将输入加权求和,计算激活函数值,送入多层神经网络;前向传播,多层神经网络继续加权(和偏置)计算;计算损失函数,在输出层,比如通过均方误差(MSE)、交叉熵损失来计算;反向传播,在输出层,基于链式法则计算梯度,送还多层神经网络来调整权重(类似于控制系统的反馈),以便获得更好的结果;对优化器(优化算法)进行改进,比如Baseline用到的Adam优化器;进行正则化,防止过拟合;批处理和迭代,每一批被称为一个epoch;进行超参数调优,比如贝叶斯超参数优化。当然,实际的深度学习模型改进是一个更有趣的过程,也涉及更多的数学过程。

1.2 机器学习和深度学习的关系

机器学习包含深度学习,深度学习是机器学习的一个子方向。它涉及使用神经网络,特别是深度神经网络(即具有多层隐藏层的神经网络)来进行学习和预测。这个子方向处理大量数据和复杂模式识别方面表现出色,尤其在图像识别、自然语言处理和语音识别等领域取得了显著的成果。

2. 深度学习的训练流程

2.1 数学基础

2.1.1 梯度下降法

基本原理

梯度下降法的核心思想是沿着函数的梯度(即函数在各点的方向导数)的反方向,以求找到函数的局部极小值。在机器学习中,我们通常用它来最小化损失函数。
【机器学习实战】Datawhale夏令营2:深度学习回顾_第1张图片

数学表达

假设我们有一个目标函数 J(θ),其中 θ 是参数向量。梯度下降的更新规则可以表示为:
θ = θ - α∇J(θ)
其中 α 是学习率,∇J(θ) 是 J(θ) 的梯度。

步骤

a) 初始化参数 θ
b) 计算当前参数下的梯度 ∇J(θ)
c) 更新参数: θ = θ - α∇J(θ)
d) 重复步骤 b 和 c,直到收敛或达到预定的迭代次数

学习率 α

学习率决定了每次参数更新的步长。太大可能会导致算法发散,太小则会导致收敛速度过慢。选择合适的学习率是一个重要的超参数调整过程。

梯度下降的变体

a) 批量梯度下降(Batch Gradient Descent): 使用所有训练数据来计算梯度。
b) 随机梯度下降(Stochastic Gradient Descent, SGD): 每次只使用一个样本来计算梯度。
c) 小批量梯度下降(Mini-batch Gradient Descent): 每次使用一小批样本来计算梯度,是前两者的折中。

2.1.2 神经网络与矩阵

网络结构表示

每一层神经元的权重可以表示为一个矩阵。
例如,如果第一层有m个神经元,第二层有n个神经元,那么连接它们的权重可以表示为一个 n × m 的矩阵。

前向传播

使用矩阵乘法可以高效地计算每一层的输出。
如果输入是 X,权重矩阵是 W,偏置是 b,那么输出 Y 可以表示为:Y = WX + b

激活函数

激活函数通常是按元素操作的,可以直接应用于矩阵的每个元素。

反向传播

误差的反向传播也可以用矩阵运算来表示。
梯度的计算涉及到矩阵的转置和矩阵乘法。

批处理

通过将多个输入样本组合成一个矩阵,可以同时处理一批数据。
这大大提高了计算效率,尤其是在GPU上。

卷积操作

在卷积神经网络中,卷积操作可以表示为特殊的矩阵乘法。

参数更新

权重和偏置的更新可以表示为矩阵加法和减法。

优化算法

许多优化算法,如Adam、RMSprop等,都涉及到矩阵操作。

正则化

L1、L2正则化等可以表示为对权重矩阵的操作。

初始化

权重初始化方法(如Xavier、He初始化)通常涉及到对矩阵的操作。

2.2 激活函数

Sigmoid 函数:

公式:f(x) = 1 / (1 + e^(-x))
特点:将输入压缩到 (0, 1) 的范围内,适用于二分类问题,但在深度神经网络中容易出现梯度消失问题。

Tanh 函数:

公式:f(x) = (e^(2x) - 1) / (e^(2x) + 1)
特点:将输入压缩到 (-1, 1) 的范围内,解决了 Sigmoid 函数的零中心问题,但仍存在梯度消失问题。

ReLU 函数 (Rectified Linear Unit):

公式:f(x) = max(0, x)
特点:简单有效,在正区间上是线性函数,在负区间上输出为0,解决了梯度消失问题。但存在神经元死亡问题(输出为0时,梯度为0,权重无法更新)。

Leaky ReLU 函数:

公式:f(x) = max(ax, x),其中 a 是小于1的常数。
特点:解决了 ReLU 函数的神经元死亡问题,允许小的负值通过,但需要额外调整 a 的值。

ELU 函数 (Exponential Linear Unit):

公式:f(x) = x, x >= 0;f(x) = α(e^x - 1), x < 0,其中 α 是大于零的常数。
特点:引入了指数函数,允许负值,解决了 ReLU 的一些问题,但计算量稍大。

Softmax 函数:

公式:f(x_i) = e^(x_i) / Σ(e^(x_k)),其中 i 表示输出层的第 i 个神经元,k 表示所有输出神经元。
特点:通常用于多分类问题,将输出转化为概率分布。

Swish 函数:

公式:f(x) = x · sigmoid(x)
特点:由Google提出,表现良好且易计算。

GELU 函数:

公式:f(x) = x · sigmoid(1.702x)
特点:用于深度神经网络,具有更强的拟合性。

2.3 权重与误差

计算误差

神经网络的目标是通过调整权重来最小化误差。网络的预测输出与真实标签之间的差距通过损失函数计算出来。

误差反向传播:
梯度下降算法利用误差反向传播算法来更新权重:

计算梯度:

误差的梯度是指误差相对于网络中每个权重的变化率。反向传播算法通过链式法则计算每层误差对权重的梯度:
∂ L ∂ w i j \frac{\partial L}{\partial w_{ij}} wijL

更新权重:

使用梯度下降法来调整权重,以最小化损失函数。权重更新公式为:
w i j ( n e w ) = w i j ( o l d ) − α ∂ L ∂ w i j w_{ij}^{(new)} = w_{ij}^{(old)} - \alpha \frac{\partial L}{\partial w_{ij}} wij(new)=

你可能感兴趣的:(机器学习,机器学习,深度学习,人工智能)