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/