既然我们已经了解了神经网络的基本构成单元——分层排列的人工神经元,现在来讲述这些网络究竟如何从数据中学习。训练神经网络最常用的方法,尤其是在初始阶段,是监督学习。在监督学习中,目标是训练一个模型,使其能将输入数据映射到已知的输出标签。想象一下,这就像学生在老师的指导下学习,老师会提供正确答案。我们为神经网络提供一个大型数据集,其中包含输入样本及其对应的正确输出(标签或目标)。网络的任务是学习连接输入与输出的潜在模式或关联。学习目标从数学角度看,我们希望网络学习一个函数 $f$ 的近似,它将输入 $X$ 映射到输出 $Y$。给定一组训练样本 $(x_i, y_i)$,其中 $x_i$ 是一个输入样本,$y_i$ 是其对应的目标标签,网络(用带参数(权重)$\theta$ 的函数 $h$ 表示)试图生成一个输出 $\hat{y}_i = h(x_i; \theta)$,使其非常接近真实标签 $y_i$。这种“学习”是通过迭代调整网络的参数 $\theta$(即其层内的权重和偏置)来实现的。核心流程:迭代学习使用监督学习训练神经网络通常涉及重复循环以下步骤:前向传播: 输入样本 $x_i$ 被送入网络。它通过各层,在每个神经元处进行计算(加权和后接激活函数),直到产生输出预测 $\hat{y}_i$。损失计算: 网络的预测 $\hat{y}_i$ 与真实目标标签 $y_i$ 使用损失函数(也称代价函数或目标函数)进行比较。损失函数量化了预测的错误程度;损失值越高表示误差越大。损失函数的选择取决于具体任务(例如,回归任务的均方误差,分类任务的交叉熵)。反向传播: 损失函数计算出的误差通过网络反向传播。此过程确定网络中每个权重和偏置对总误差的贡献程度。权重更新: 根据反向传播过程中计算出的误差贡献,一个优化算法(如梯度下降或其变体 Adam、RMSprop)调整网络的权重 $\theta$。目标是微调权重,使其朝着能够减小该输入样本损失的方向(并希望能够泛化到减少类似样本的损失)。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [color="#868e96"]; Input [label="输入数据 (X)", color="#1c7ed6", fontcolor="#1c7ed6"]; Target [label="目标标签 (Y)", color="#1c7ed6", fontcolor="#1c7ed6"]; Network [label="神经网络\n(权重 θ)", shape=cylinder, color="#7048e8", fontcolor="#7048e8"]; Prediction [label="预测 (Ŷ)", color="#ae3ec9", fontcolor="#ae3ec9"]; Loss [label="损失函数\nL(Ŷ, Y)", shape=hexagon, color="#f03e3e", fontcolor="#f03e3e"]; Adjust [label="调整权重\n(通过反向传播与\n优化)", shape=cds, color="#f59f00", fontcolor="#f59f00"]; Input -> Network [label=" 前向传播"]; Network -> Prediction; Prediction -> Loss; Target -> Loss [style=dashed]; Loss -> Adjust [label=" 计算误差"]; Adjust -> Network [label=" 更新 θ ", style=dashed, fontcolor="#f59f00", tooltip="反向传播与优化"]; }神经网络中监督学习流程的概述。输入数据和目标标签用于生成预测、计算误差(损失),随后通过反向传播和优化调整网络的内部权重。整个循环(前向传播、损失计算、反向传播、权重更新)会针对训练数据集中的许多输入样本重复进行。完整处理一次整个数据集构成一个周期(epoch)。训练通常涉及多个周期,使网络能够逐步优化其权重并提高预测准确性。我们将在第3章更详细地讲述损失函数、反向传播和优化器。常见的监督学习任务神经网络擅长处理各种监督学习任务,主要分为:回归: 预测连续数值。示例: 根据面积和位置等特征预测房价,预测温度,从照片估算人的年龄。网络输出: 通常是一个带线性激活函数(无激活)的单一输出神经元。常用损失函数: 均方误差(MSE)或平均绝对误差(MAE)。分类: 将输入分配到预定义的多个类别或类中的一个。二分类: 两个可能的输出类别。示例: 垃圾邮件检测(垃圾邮件/非垃圾邮件),疾病诊断(有病/无病),情感分析(积极/消极)。网络输出: 通常是一个带 sigmoid 激活函数的单一输出神经元,输出一个介于0到1之间的概率。常用损失函数: 二元交叉熵。多分类: 两个以上互斥的输出类别。示例: 手写数字识别(类别0-9),图像分类(猫/狗/鸟),图像内物体检测。网络输出: 通常每个类别一个输出神经元,使用 softmax 激活函数。Softmax 确保输出表示各类别上的概率分布(所有输出都在0到1之间,且总和为1)。常用损失函数: 类别交叉熵(或稀疏类别交叉熵,取决于标签格式)。数据的重要性监督学习很大程度上依赖于高质量标注数据的可用性。网络学习模式来自它所看到的数据。因此,训练数据集必须具备以下特点:足够大: 深度神经网络通常有数百万个参数(权重),需要大量数据以便有效学习,并避免仅仅记住训练样本(一个被称为过拟合的问题)。 "* 具代表性: 训练数据应准确反映模型部署后会遇到的数据的特点。如果训练数据有偏差或未能覆盖预期的所有输入范围,模型的表现会受到影响。"在后续章节中,我们将介绍 Keras,这是一个强大的库,它简化了定义网络架构、选择损失函数和优化器以及执行这些监督学习任务训练循环的过程。你将学习 Keras 如何消除许多底层复杂性,使你能够专注于设计和训练有效的深度学习模型。