当前位置: 首页 > news >正文

机器学习实操 第二部分 神经网路和深度学习 第11章 训练深度神经网络

机器学习实操 第二部分 神经网路和深度学习 第11章 训练深度神经网络

内容概要

第11章深入探讨了训练深度神经网络(DNN)的技术和挑战。深度神经网络因其强大的表征学习能力而广泛应用于复杂问题,但训练这些网络并非易事。本章详细讨论了梯度消失和爆炸问题、权重初始化、激活函数选择、批量归一化、预训练层的复用、优化器选择和正则化技术。通过这些内容,读者将掌握如何有效地训练深度神经网络。
在这里插入图片描述

主要内容

  1. 梯度消失和爆炸问题

    • 问题描述:梯度在反向传播过程中可能逐渐变小或变大,导致训练困难。
    • 解决方案:使用Glorot初始化、He初始化等权重初始化策略,以及选择合适的激活函数(如ReLU及其变体)。
  2. 权重初始化

    • Glorot初始化:通过调整权重的方差来平衡前向和反向传播的信号。
    • He初始化:适用于ReLU激活函数,通过调整权重的方差来避免梯度消失。
  3. 激活函数

    • ReLU及其变体:如Leaky ReLU、ELU、SELU等,用于引入非线性并缓解梯度消失问题。
    • GELU、Swish、Mish:新型激活函数,通常在复杂任务中表现更好。
  4. 批量归一化

    • 原理:通过标准化层输入并重新缩放和偏移来稳定训练过程。
    • 实现:在Keras中使用BatchNormalization层。
  5. 预训练层的复用

    • 迁移学习:复用预训练模型的底层特征提取器,减少训练数据和计算量。
    • 无监督预训练:使用自编码器或生成对抗网络(GAN)进行预训练,再用于目标任务。
  6. 优化器

    • Momentum:通过累积历史梯度加速收敛。
    • Nesterov加速梯度:在动量优化的基础上提前计算梯度。
    • AdaGrad、RMSProp、Adam:自适应学习率优化器,适用于不同场景。
  7. 正则化技术

    • L1和L2正则化:通过约束权重的大小来减少过拟合。
    • Dropout:随机丢弃神经元,增加模型的鲁棒性。
    • 批量归一化:兼具正则化效果,减少过拟合。
  8. 学习率调度

    • 功率衰减、指数衰减、分段常数衰减:动态调整学习率以加速收敛。
    • 1cycle调度:在训练过程中调整学习率和动量,提高训练效率。

关键代码和算法

11.1 使用Keras实现批量归一化

from tensorflow.keras import layers, Sequential# 构建模型
model = Sequential([layers.Flatten(input_shape=[28, 28]),layers.BatchNormalization(),layers.Dense(300, activation="relu", kernel_initializer="he_normal"),layers.BatchNormalization(),layers.Dense(100, activation="relu", kernel_initializer="he_normal"),layers.BatchNormalization(),layers.Dense(10, activation="softmax")
])# 编译模型
model.compile(loss="sparse_categorical_crossentropy",optimizer="sgd",metrics=["accuracy"])# 训练模型
history = model.fit(X_train, y_train, epochs=30,validation_data=(X_valid, y_valid))

11.2 使用Keras实现迁移学习

# 加载预训练模型
model_A = tf.keras.models.load_model("my_model_A")# 创建新模型并复用预训练层
model_B_on_A = tf.keras.Sequential(model_A.layers[:-1])
model_B_on_A.add(tf.keras.layers.Dense(1, activation="sigmoid"))# 冻结预训练层
for layer in model_B_on_A.layers[:-1]:layer.trainable = False# 编译模型
optimizer = tf.keras.optimizers.SGD(learning_rate=0.001)
model_B_on_A.compile(loss="binary_crossentropy",optimizer=optimizer,metrics=["accuracy"])# 训练模型
history = model_B_on_A.fit(X_train_B, y_train_B, epochs=4,validation_data=(X_valid_B, y_valid_B))# 解冻预训练层并继续训练
for layer in model_B_on_A.layers[:-1]:layer.trainable = Trueoptimizer = tf.keras.optimizers.SGD(learning_rate=0.001)
model_B_on_A.compile(loss="binary_crossentropy",optimizer=optimizer,metrics=["accuracy"])history = model_B_on_A.fit(X_train_B, y_train_B, epochs=16,validation_data=(X_valid_B, y_valid_B))

精彩语录

  1. 中文:训练深度神经网络时,梯度消失和爆炸问题是主要挑战之一。
    英文原文:Training a deep neural network isn’t a walk in the park. Here are some of the problems you could run into: gradients often get smaller and smaller as the algorithm progresses down to the lower layers.
    解释:指出了深度网络训练中的主要挑战。

  2. 中文:批量归一化通过标准化层输入并重新缩放和偏移来稳定训练过程。
    英文原文:Batch normalization consists of adding an operation in the model just before or after the activation function of each hidden layer. This operation simply zero-centers and normalizes each input, then scales and shifts the result using two new parameter vectors per layer.
    解释:介绍了批量归一化的原理和作用。

  3. 中文:迁移学习通过复用预训练模型的底层特征提取器,减少训练数据和计算量。
    英文原文:Transfer learning is generally not a good idea to train a very large DNN from scratch without first trying to find an existing neural network that accomplishes a similar task.
    解释:强调了迁移学习的优势。

  4. 中文:Adam优化器结合了动量优化和RMSProp的优点,适用于大多数深度学习任务。
    英文原文:Adam combines the ideas of momentum optimization and RMSProp: just like momentum optimization, it keeps track of an exponentially decaying average of past gradients; and just like RMSProp, it keeps track of an exponentially decaying average of past squared gradients.
    解释:介绍了Adam优化器的核心思想。

  5. 中文:Dropout通过随机丢弃神经元来增加模型的鲁棒性和泛化能力。
    英文原文:Dropout is one of the most popular regularization techniques for deep neural networks. It was proposed in a paper by Geoffrey Hinton et al. in 2012 and further detailed in a 2014 paper by Nitish Srivastava et al.
    解释:描述了Dropout的基本原理和优势。

总结

通过本章的学习,读者将掌握训练深度神经网络的核心技术和方法。这些内容包括解决梯度消失和爆炸问题的策略、权重初始化、激活函数选择、批量归一化、迁移学习、优化器选择和正则化技术。这些技术能够显著提高深度神经网络的训练效率和模型性能,使其能够处理复杂的机器学习任务。

相关文章:

  • GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果
  • 人工智能数学基础(八)—— 最优化理论
  • 生物化学笔记:神经生物学概论09 小脑的运动学习 基底神经节的结构与功能
  • C++八股--6--mysql 日志与并发控制
  • 永磁同步电机无速度算法--基于ESO-PLL的永磁同步电机无位置传感器控制
  • 2025年PMP 学习二
  • 第一章 - 质量
  • C++学习:六个月从基础到就业——C++11/14:右值引用与移动语义
  • Docker安装Gitblit(图文教程)
  • llfc项目笔记客户端TCP
  • 代码随想录算法训练营Day44
  • 2025深圳杯东三省数学建模竞赛B题完整分析论文(共27页)(含模型、可运行代码、求解结果)
  • 力扣1128题解
  • C# 定时器实现
  • 渗透测试中扫描成熟CMS目录的意义与技术实践
  • dubbo 参数校验-ValidationFilter
  • 代码随想录day7: 哈希表part02
  • 计算方法实验六 数值积分
  • TimSort算法解析
  • Linux的系统周期化任务
  • 陈燮阳从艺60周年:指挥棒不停,心跳就不会老去
  • 太空飞梭项目起火,南宁方特东盟神画:明火已扑灭,无人受伤
  • “三桶油”一季度净赚966亿元:业绩分化加剧,有人欢喜有人愁
  • 《一鸣惊人》五一特别节目:以戏曲为桥梁,展现劳动者的坚守
  • 永辉超市回应顾客结算时被“反向抹零”:整改并补偿
  • 融创服务全面退出彰泰服务集团:约8.26亿元出售广西彰泰融创智慧80%股权