Datawhale X 李宏毅苹果书AI夏令营 - Task3笔记 - 3.7&4.1&2&3&4&5&6&7&8

3.7

均方误差 vs 交叉熵损失函数

1. 均方误差(MSE)

均方误差通常用于回归问题中,它计算的是预测值与实际值之间差的平方的平均值。在分类问题中,均方误差的使用不够理想,因为它并不能有效地处理概率分布。特别是在分类任务中,当使用均方误差时,模型的梯度可能会很小,导致训练过程变得缓慢或不稳定。

2. 交叉熵损失函数

交叉熵损失函数(Cross-Entropy Loss)更适合分类问题,尤其是多分类任务。它衡量的是预测的概率分布与真实标签的分布之间的差异。交叉熵在训练过程中能够提供更大的梯度,特别是在模型预测错误时,这有助于加速训练并提高模型的准确性。通过Softmax函数将网络输出转化为概率分布,然后计算交叉熵损失,这种方法能够有效地调整模型参数,使得分类性能更佳。
在这里插入图片描述

优化效果对比

图3.36中的比较显示了均方误差和交叉熵损失函数在优化时的表现差异。交叉熵损失函数能更好地指导优化过程,特别是在预测错误较大时,交叉熵损失函数的梯度变化更显著,从而更有效地推动优化过程向目标前进。
图3.36 均方误差、交叉熵优化对比

批量归一化(Batch Normalization)

1. 背景

批量归一化旨在解决训练深度神经网络时的内部协变量偏移(Internal Covariate Shift)问题。这种方法通过对每一层的输入进行标准化,减少了每层输入分布的变化,从而加快了训练速度和提高了模型性能。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 实现细节

批量归一化通过以下步骤实现:

  • 对每一层的输入进行归一化,使得其均值为0,方差为1。
  • 在归一化之后,使用可学习的缩放因子(γ)和偏移因子(β)调整数据的分布。
    在这里插入图片描述

这些操作使得网络在训练时能够更加稳定,并且允许使用更大的学习率,从而加速训练过程。

3. 测试时的处理

在测试阶段,由于批量归一化是基于训练阶段计算的均值和方差进行的,因此在测试时使用训练过程中得到的均值和方差的移动平均来进行归一化,而不是依赖于当前批量的数据。这保证了在实际应用中的一致性和性能。

4. 批量归一化的效果

批量归一化能够平滑误差表面,使得优化过程更加平稳。这种平滑效果减少了训练过程中的振荡,使得优化算法能够更有效地收敛。此外,批量归一化还可以作为正则化技术,减少过拟合的风险。
图3.46 批量归一化实验结果

在这里插入图片描述

实战演练:
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np

torch.manual_seed(0)
np.random.seed(0)

class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(10, 50)
        self.bn1 = nn.BatchNorm1d(50)
        self.fc2 = nn.Linear(50, 3)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.bn1(x)
        x = self.fc2(x)
        return x

model = SimpleNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

num_samples = 100
X_train = torch.randn(num_samples, 10)
y_train = torch.randint(0, 3, (num_samples,))

num_epochs = 5
for epoch in range(num_epochs):
    model.train()
    optimizer.zero_grad()
    outputs = model(X_train)
    loss = criterion(outputs, y_train)
    loss.backward()
    optimizer.step()
    print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

print('训练完成')

model.eval()
with torch.no_grad():
    X_test = torch.randn(1, 10)
    y_pred = model(X_test)
    print('测试样本的预测:', y_pred)

4.1&2&3&4

1. 卷积神经网络概述
  • 卷积神经网络 (CNN) 是一种典型的深度学习模型,广泛用于图像分类等任务。
  • 图像被表示为三维张量,三个维度分别是:图像宽度、高度和通道数(例如RGB三个通道)。
2. 图像输入
  • 图像输入通常需要调整为固定尺寸(如100×100像素),然后“拉直”成一个长向量,以适配神经网络的输入层。
  • 每个像素的值表示颜色强度。
3. 全连接网络的挑战
  • 全连接层需要处理每个输入维度与每个神经元的权重,导致参数量巨大(例如1000个神经元时的权重数量为3×10^7),增加了计算和过拟合的风险。
    在这里插入图片描述
4. 卷积神经网络的设计
  • 感受野 (Receptive Field): 卷积神经网络中的神经元只关注其感受野范围内的输入。这意味着一个神经元可以通过卷积操作在小范围内提取特征,而不是处理整个图像。
    在这里插入图片描述
    图4.7 感受野彼此重叠

    • 核大小: 例如3×3的感受野,允许检测特定范围内的模式。在这里插入图片描述
      在这里插入图片描述

    • 步幅 (Stride): 例如步幅为2,表示感受野在图像上的移动步长。
      在这里插入图片描述

    • 填充 (Padding): 当感受野超出图像边界时,通过填充(通常是零填充)来避免信息丢失。
      在这里插入图片描述
      在这里插入图片描述

5. 模式检测
  • 相同的模式可能出现在图像的不同区域。例如,一个特定的图案(如鸟嘴)可能在图像的多个位置出现,卷积神经网络可以通过移动感受野来检测这些模式。
    在这里插入图片描述
    在这里插入图片描述
6. 简化技巧
  • 共享参数 (Parameter Sharing): 不同的神经元可以共享相同的权重,这样可以减少参数数量并提高模型的计算效率。共享参数意味着每个神经元使用相同的卷积核(滤波器)。
  • 多组神经元: 在同一感受野中,通常会使用多组神经元(如64个或128个)来提高模型的特征提取能力。

4.5&6&7&8

(续上段)

1. 卷积操作和特征映射
  • 卷积操作:

    • 滤波器在图像上滑动,计算局部区域的加权和,生成特征映射(feature map)。
    • 每个滤波器生成一个特征映射,多个滤波器产生多个特征映射。
      在这里插入图片描述
      在这里插入图片描述
  • 步幅(Stride):

    • 滤波器在图像上滑动的步长。步幅越大,特征映射的尺寸越小。
  • 填充(Padding):

    • 在图像边缘添加额外的像素,以控制输出特征映射的尺寸。
    • 可以防止特征丢失,并保持特征映射尺寸。
2. 汇聚层(Pooling Layer)
  • 汇聚:

    • 降低特征图的尺寸,减少计算量。
    • 最大汇聚(Max Pooling): 从每个汇聚区域中选择最大值。
    • 平均汇聚(Average Pooling): 计算每个汇聚区域的平均值。
  • 作用:

    • 提取重要特征,减少空间尺寸,提高计算效率。
    • 对模式检测有利,但可能丢失细节信息。
3. 多层卷积网络
  • 网络深度:

    • 多层卷积层可以提取更复杂的特征。
    • 每层卷积层可以检测不同层次的模式(从简单边缘到复杂形状)。
  • 特征映射的叠加:

    • 通过叠加卷积层和汇聚层,逐渐提取和缩小特征信息。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
4. 卷积神经网络的应用
  • 图像识别:

    • 卷积神经网络在图像分类、目标检测、图像分割等任务中表现优越。
    • 网络结构可以包括卷积层、汇聚层和全连接层,最后通过Softmax分类器输出结果。
      在这里插入图片描述
  • 下围棋:

    • 如AlphaGo,通过卷积神经网络分析棋盘状态,预测最佳落子位置。
    • 卷积神经网络能够有效处理棋盘上的局部模式,类似图像中的模式识别。
      围棋的模式
      吃的模式
5. 其他
  • 缩放和旋转:

    • 标准卷积神经网络可能对图像的缩放和旋转不具备不变性。
    • 对于这些情况,可以使用数据增强技术(如旋转、缩放等)来提高模型的鲁棒性。
  • 全卷积网络(Fully Convolutional Network):

    • 在某些应用中,如语音识别或文字处理,可能不使用汇聚层,而是使用全卷积网络,以避免信息丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值