Deep Learning from Scratch

深度学习入门

Deep Learning from Scratch

感知机

  • 感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值。
  • 感知机将权重和偏置设定为参数。
  • 使用感知机可以表示与门和或门等逻辑电路。
  • 异或门无法通过单层感知机来表示。
  • 使用两层感知机可以表示异或门。
  • 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
  • 多层感知机(在理论上)可以表示计算机。

神经网络

  • 神经网络中的激活函数使用平滑变化的 sigmoid 函数或 ReLU 函数。
  • 通过巧妙地使用 NumPy 多维数组,可以高效地实现神经网络。
  • 机器学习的问题大体上可以分为回归问题和分类问题。
  • 关于输出层的激活函数,回归问题中一般用恒等函数,分类问题中一般用 softmax 函数。
  • 分类问题中,输出层的神经元的数量设置为要分类的类别数。
  • 输入数据的集合称为批。通过以批为单位进行推理处理,能够实现高速的运算。

神经网络的学习

  • 机器学习中使用的数据集分为训练数据和测试数据。
  • 神经网络用训练数据进行学习,并用测试数据评价学习到的模型的泛化能力。
  • 神经网络的学习以损失函数为指标,更新权重参数,以使损失函数的值减小。
  • 利用某个给定的微小值的差分求导数的过程,称为数值微分。
  • 利用数值微分,可以计算权重参数的梯度。
  • 数值微分虽然费时间,但是实现起来很简单。

误差反向传播法

  • 通过使用计算图,可以直观地把握计算过程。
  • 计算图的节点是由局部计算构成的。局部计算构成全局计算。
  • 计算图的正向传播进行一般的计算。通过计算图的反向传播,可以计算各个节点的导数。
  • 通过将神经网络的组成元素实现为层,可以高效地计算梯度(反向传播法)。
  • 通过比较数值微分和误差反向传播法的结果,可以确认误差反向传播法的实现是否正确(梯度确认)。

与学习相关的技巧

  • 参数的更新方法,除了 SGD 之外,还有 Momentum、AdaGrad、Adam 等方法。
  • 权重初始值的赋值方法对进行正确的学习非常重要。
  • 作为权重初始值,Xavier 初始值、He 初始值等比较有效。
  • 通过使用 Batch Normalization,可以加速学习,并且对初始值变得健壮。
  • 抑制过拟合的正则化技术有权值衰减、Dropout 等。
  • 逐渐缩小 “好值” 存在的范围是搜索超参数的一个有效方法。

卷积神经网络

  • CNN 在此前的全连接层的网络中新增了卷积层和池化层。
  • 使用 im2col 函数可以简单、高效地实现卷积层和池化层。
  • 通过 CNN 的可视化,可知随着层次变深,提取的信息愈加高级。
  • LeNet 和 AlexNet 是 CNN 的代表性网络。
  • 在深度学习的发展中,大数据和 GPU 做出了很大的贡献。

深度学习

  • 对于大多数的问题,都可以期待通过加深网络来提高性能。
  • 在最近的图像识别大赛 ILSVRC 中,基于深度学习的方法独占鳌头,使用的网络也在深化。
  • VGG、GoogLeNet、ResNet 等是几个著名的网络。
  • 基于 GPU、分布式学习、位数精度的缩减,可以实现深度学习的高速化。
  • 深度学习(神经网络)不仅可以用于物体识别,还可以用于物体检测、图像分割。
  • 深度学习的应用包括图像标题的生成、图像的生成、强化学习等。最近,深度学习在自动驾驶上的应用也备受期待。

Deep Learning from Scratch
https://www.renkelin.vip/2025/01/10/DL/
Author
Kolin
Posted on
January 10, 2025
Licensed under