第三章核心内容总结
重点名词:
- 神经网络:由输入层、隐藏层(中间层)和输出层构成,通过自动学习权重参数从数据中学习。
- 激活函数:连接感知机和神经网络的桥梁,如sigmoid函数(平滑连续)和ReLU函数,替代感知机中的阶跃函数。
- sigmoid函数:平滑的S型曲线函数,输出0到1之间的连续值,用于信号转换。
- 阶跃函数:以阈值为界输出0或1的函数,感知机中使用。
- 恒等函数:回归问题中输出层的激活函数,输入直接输出。 softmax函数:分类问题中输出层的激活函数,将输入正规化为概率输出,总和为1。
- MNIST数据集:手写数字图像数据集,包含6万张训练图像和1万张测试图像,用于图像识别。
- 批处理:将输入数据打包成批(batch)进行处理,利用NumPy高效运算,加速推理和学习。
第三章主要介绍了神经网络的基本概念、结构以及实现方法,重点包括以下内容:
- 从感知机到神经网络
神经网络由输入层、隐藏层(中间层)和输出层构成,信号通过激活函数在层间传递。
感知机使用阶跃函数作为激活函数,而神经网络通常使用平滑的激活函数(如sigmoid函数),这是两者的主要区别。
- 激活函数
阶跃函数:以阈值为界,输出发生急剧变化(0或1)。
sigmoid函数:输出在0到1之间平滑变化,公式为 h(x)=11+e−xh(x) = \frac{1}{1 + e^{-x}}h(x)=1+e−x1。
ReLU函数:在输入大于0时输出原值,小于等于0时输出0,公式为 h(x)=max(0,x)h(x) = \max(0, x)h(x)=max(0,x)。
激活函数必须是非线性的,否则多层网络无法发挥优势。
- 多维数组运算
使用NumPy进行高效的矩阵运算,实现神经网络中的信号传递。
矩阵乘法(内积)是神经网络前向传播的核心操作,通过np.dot()实现。
- 3层神经网络的实现
通过定义权重、偏置和激活函数,实现从输入到输出的信号传递。
使用NumPy数组简化代码,提高计算效率。
- 输出层的设计
恒等函数:用于回归问题,输出输入信号的原样。
softmax函数:用于分类问题,将输出转换为概率分布,公式为 yk=eak∑i=1neaiy_k = \frac{e^{a_k}}{\sum_{i=1}^{n} e^{a_i}}yk=∑i=1neaieak。
输出层神经元数量通常等于类别数。
- 手写数字识别(MNIST数据集)
使用MNIST数据集进行图像分类任务。
实现神经网络的前向传播(推理处理),通过批处理(batch)提高计算效率。
预处理(如正规化)对提高识别性能很重要。
- 批处理
将输入数据打包成批(batch),一次性处理多个数据,提高计算速度并减轻数据总线负荷。
关键点总结:
神经网络通过激活函数实现非线性变换,增强表达能力。
使用NumPy进行矩阵运算,高效实现前向传播。
输出层根据问题类型(回归或分类)选择激活函数。
批处理和预处理是实际应用中的重要技巧。
第三章为后续神经网络的学习(如损失函数、梯度下降等)奠定了基础。
第四章核心内容总结
重点名词:
- 学习:从训练数据中自动获取最优权重参数的过程。
- 损失函数:衡量神经网络性能"恶劣程度"的指标,如均方误差和交叉熵误差。
- 均方误差:损失函数的一种,计算输出与监督数据各元素差的平方和。
- 交叉熵误差:损失函数的一种,用于分类问题,仅计算正确解标签对应的输出的自然对数。
- mini-batch学习:从训练数据中随机选取一小批数据进行学习,近似整体损失函数。
- 梯度:损失函数关于所有权重参数的偏导数汇总而成的向量,指示函数值减小最多的方向。
- 梯度法(梯度下降法):通过沿梯度方向更新参数寻找损失函数最小值的方法。
- 学习率:控制参数更新步长的超参数,过大或过小都会影响学习效果。
- 数值微分:利用微小差分近似计算导数的过程,简单但计算耗时。 解析性求导:基于数学式推导求导数的过程,结果精确无误差。
- 随机梯度下降法(SGD):对随机选择的mini-batch数据使用梯度下降法。
- epoch:所有训练数据被使用过一次的更新次数,用于评价学习进度。
第四章《神经网络的学习》主要介绍了神经网络如何通过数据自动学习权重参数,核心内容包括损失函数、梯度下降法以及数值微分的实现。以下是第四章的总结:
- 从数据中学习
神经网络的核心优势是能够从数据中自动学习权重参数,无需人工设定。
机器学习分为两个阶段:学习阶段(使用训练数据优化参数)和推理阶段(使用学习到的模型处理新数据)。
数据驱动的方法避免了人为设计规则,使神经网络能够端到端地学习。
- 训练数据与测试数据
为防止过拟合,数据分为训练数据(用于学习)和测试数据(用于评估模型泛化能力)。
泛化能力是模型处理未见过数据的关键目标,过拟合会降低泛化能力。
- 损失函数
损失函数衡量神经网络输出与正确标签之间的差异,是学习的指标。
常用损失函数:
均方误差(MSE):计算输出与标签之差的平方和。
交叉熵误差(CEE):用于分类问题,关注正确标签对应的输出概率。
损失函数需为连续可导函数,以便使用梯度法优化(阶跃函数不适用)。
Mini-batch学习:从训练数据中随机选取小批量数据计算损失,提高学习效率。
- 数值微分
导数表示函数在某个瞬间的变化量,通过微小差分近似计算(数值微分)。
为避免舍入误差,使用中心差分法(f(x+h)−f(x−h)f(x+h) - f(x-h)f(x+h)−f(x−h) / 2h2h2h)。
偏导数:多变量函数中对某一变量的导数,其他变量固定。
梯度:所有变量偏导数组成的向量,指向函数值下降最快的方向。
- 梯度法
梯度法通过沿梯度方向更新参数,寻找损失函数的最小值。
梯度下降法:用于最小化损失函数;梯度上升法用于最大化(可通过符号反转转换)。
学习率:控制参数更新步长,过大可能导致震荡,过小则收敛缓慢。
梯度法可能陷入局部极小值或鞍点,但仍是神经网络学习的主要方法。
- 学习算法的实现
结合数值微分、损失函数和梯度法,实现神经网络的学习过程。
通过迭代更新权重参数,使损失函数逐渐减小,提升模型性能。
关键点
损失函数的选择:回归问题常用均方误差,分类问题常用交叉熵误差。
梯度的重要性:梯度指示参数更新方向,是优化过程的核心。
学习率的调整:需谨慎设置学习率,平衡收敛速度与稳定性。
批处理:使用Mini-batch提高计算效率,近似整体数据分布。
第四章为神经网络的学习奠定了理论基础,后续章节将深入实现细节(如误差反向传播法)。