2026/1/5 12:45:04
网站建设
项目流程
梅州网站建,淄博做网站seo,vue商城模板,wordpress修改内容文章目录#x1f4da; 学习路线图本文内容一览#xff08;快速理解#xff09;一、什么是损失函数#xff08;Loss Function#xff09;#xff1a;衡量分类器好坏的标准1.1 损失函数的作用#xff08;What is Loss Function#xff09;#xff1a;量化分类器的好坏1.…文章目录 学习路线图本文内容一览快速理解一、什么是损失函数Loss Function衡量分类器好坏的标准1.1 损失函数的作用What is Loss Function量化分类器的好坏1.2 数据集损失Dataset Loss所有样本损失的平均值二、多类SVM损失Multiclass SVM Loss使用Hinge损失2.1 SVM损失的定义SVM Loss DefinitionHinge损失2.2 SVM损失的性质SVM Loss Properties最小值和最大值2.3 损失函数的唯一性问题Uniqueness Problem为什么需要正则化三、正则化Regularization防止过拟合3.1 正则化的作用What is Regularization防止过拟合3.2 正则化的三种作用Three Roles of Regularization表达偏好、简化模型、改善优化四、Softmax分类器Softmax Classifier将分数转换为概率4.1 Softmax函数Softmax Function将分数转换为概率4.2 交叉熵损失Cross-Entropy Loss最大化正确类别的概率4.3 Softmax vs SVMSoftmax vs SVM两种损失函数的比较五、优化Optimization如何找到使损失最小的W5.1 优化策略Optimization Strategies从随机搜索到梯度下降5.2 梯度的计算Gradient Computation数值梯度 vs 解析梯度5.3 梯度下降Gradient Descent沿着负梯度方向更新参数5.4 随机梯度下降Stochastic Gradient Descent使用小批量数据 本章总结 延伸阅读推荐资源适合对象计算机视觉初学者、机器学习入门者⏱️预计阅读时间50-60分钟学习目标理解损失函数的作用掌握SVM损失和Softmax损失学会使用梯度下降优化参数 学习路线图线性分类器f(x,W) Wx b定义损失函数Loss FunctionSVM损失Hinge LossSoftmax损失Cross-Entropy正则化Regularization优化问题最小化损失梯度下降Gradient Descent随机梯度下降SGD本文内容一览快速理解损失函数Loss Function衡量分类器好坏的标准量化预测与真实标签的差异多类SVM损失Multiclass SVM Loss使用Hinge损失要求正确类别分数比错误类别高一个安全边距正则化Regularization防止过拟合偏好简单的模型Softmax分类器Softmax Classifier将分数转换为概率使用交叉熵损失梯度下降Gradient Descent通过计算梯度沿着损失下降最快的方向更新参数随机梯度下降SGD使用小批量数据近似全量梯度加速训练一、什么是损失函数Loss Function衡量分类器好坏的标准这一章要建立的基础理解为什么需要损失函数以及如何定义损失函数核心问题如何判断一个分类器的好坏如何量化预测与真实标签的差异[!NOTE] 关键点总结损失函数量化了分类器在训练数据上的不满意度。对于每个训练样本损失函数衡量预测分数与真实标签的差异。整个数据集的损失是所有样本损失的平均值。1.1 损失函数的作用What is Loss Function量化分类器的好坏概念的本质损失函数Loss Function是一个函数它量化了分类器在训练数据上的表现。损失值越大说明分类器的预测越差损失值越小说明分类器的预测越好。我们的目标是找到使损失最小的参数W。图解说明训练数据(x, y)分类器f(x,W)预测分数scores损失函数L(scores, y)损失值Loss优化最小化损失更新W更好的参数说明输入训练数据( x , y ) (x, y)(x,y)其中x xx是图像y yy是标签分类器f ( x , W ) W x b f(x,W) Wx bf(x,W)Wxb输出类别分数损失函数L ( scores , y ) L(\text{scores}, y)L(scores,y)衡量预测与真实标签的差异目标找到使损失最小的W WW类比理解想象你在考试。损失函数就像预测分数你的答案分类器的预测真实标签正确答案损失值你答错的程度损失越大错得越多目标通过学习和练习优化使损失最小答对更多实际例子损失函数的例子 假设有3个训练样本3个类别猫、汽车、青蛙 样本1猫的分数[3.2, 5.1, -1.7] - 猫的分数3.2 - 汽车的分数5.1最高但错误 - 青蛙的分数-1.7 问题汽车的分数(5.1)比猫的分数(3.2)高 → 分类器预测错误 → 应该有损失 损失函数的作用 - 量化这种不满意度 - 如果正确类别的分数最高损失应该小 - 如果错误类别的分数更高损失应该大1.2 数据集损失Dataset Loss所有样本损失的平均值概念的本质对于整个数据集损失是所有训练样本损失的平均值。这给出了分类器在整个数据集上的整体表现。图解说明训练数据集N个样本样本1损失L1样本2损失L2样本3损失L3......样本N损失LN平均损失L (L1L2...LN)/N说明单个样本损失L i L ( f ( x i , W ) , y i ) L_i L(f(x_i, W), y_i)LiL(f(xi,W),yi)数据集损失L 1 N ∑ i 1 N L i L \frac{1}{N}\sum_{i1}^{N} L_iLN1∑i1NLi目标最小化数据集损失L LL类比理解想象你在做多道题。数据集损失就像单题得分每道题的得分单个样本损失总分所有题目的平均分数据集损失目标提高平均分最小化损失实际例子数据集损失的计算 假设有3个训练样本 样本1猫损失 2.9 样本2汽车损失 0预测正确 样本3青蛙损失 12.9 数据集损失 $$L \frac{2.9 0 12.9}{3} 5.27$$ 损失值的含义 - 损失$ 0$所有样本都预测正确理想情况 - 损失$ 0$有预测错误 - 损失越大错误越多或错误越严重 目标 找到$W$使得$L$最小二、多类SVM损失Multiclass SVM Loss使用Hinge损失这一章要建立的基础理解SVM损失的定义和计算方式核心问题如何定义损失函数使得正确类别的分数比错误类别高[!NOTE] 关键点总结多类SVM损失使用Hinge损失要求正确类别的分数s y i s_{y_i}syi比每个错误类别的分数s j s_jsj至少高一个安全边距通常为1。如果满足条件损失为0否则损失为s j − s y i 1 s_j - s_{y_i} 1sj−syi1。2.1 SVM损失的定义SVM Loss DefinitionHinge损失概念的本质多类SVM损失Multiclass SVM Loss使用Hinge损失。对于每个训练样本它要求正确类别的分数比所有错误类别的分数至少高1安全边距。如果满足条件损失为0否则损失为错误类别分数减去正确类别分数再加1。图解说明是否训练样本(x_i, y_i)计算分数s f(x_i, W)正确类别分数s_yi错误类别分数s_j (j≠yi)检查条件s_yi ≥ s_j 1?损失 0损失 s_j - s_yi 1样本损失L_i说明Hinge损失L i ∑ j ≠ y i max ( 0 , s j − s y i 1 ) L_i \sum_{j \neq y_i} \max(0, s_j - s_{y_i} 1)Li∑jyimax(0,sj−syi1)安全边距1 11要求正确类别分数至少比错误类别高1 11max ( 0 , . . . ) \max(0, ...)max(0,...)如果条件满足s y i ≥ s j 1 s_{y_i} \geq s_j 1syi≥sj1损失为0 00类比理解想象你在比赛中。SVM损失就像正确类别你支持的队伍错误类别其他队伍安全边距你希望你的队伍至少领先1分损失如果其他队伍领先或差距小于1分就有损失实际例子SVM损失的计算示例 样本1猫分数$[3.2, 5.1, -1.7]$ - 正确类别猫分数$s_{y_i} 3.2$ - 错误类别1汽车分数$s_j 5.1$ - 错误类别2青蛙分数$s_j -1.7$ 计算损失 $$L_i \max(0, 5.1 - 3.2 1) \max(0, -1.7 - 3.2 1)$$ $$ \max(0, 2.9) \max(0, -3.9)$$ $$ 2.9 0 2.9$$ 解释 - 汽车的分数$(5.1)$比猫的分数$(3.2)$高差距只有$1.9$ - 需要至少高$1$但实际只高$1.9$所以损失$ 5.1 - 3.2 1 2.9$ - 青蛙的分数$(-1.7)$比猫的分数$(3.2)$低很多满足条件损失$ 0$ 如果所有错误类别的分数都比正确类别低至少$1$ $L_i 0$完美预测2.2 SVM损失的性质SVM Loss Properties最小值和最大值概念的本质SVM损失有一些重要性质最小值0当所有样本都预测正确时最大值理论上可以很大当预测完全错误时初始化当W很小时所有分数≈0损失≈C-1C是类别数图解说明SVM损失最小值L 0最大值L → ∞初始化L ≈ C-1所有样本预测正确预测完全错误W很小所有分数≈0说明最小值0当s y i ≥ s j 1 s_{y_i} \geq s_j 1syi≥sj1对所有j ≠ y i j \neq y_ijyi成立时最大值理论上可以很大当s j ≫ s y i s_j \gg s_{y_i}sj≫syi时初始化当W WW随机初始化很小时所有分数接近0 00损失约为C − 1 C-1C−1C CC是类别数类比理解想象你在考试。SVM损失的性质就像最小值0所有题都答对理想情况最大值所有题都答错最坏情况初始化刚开始学习时随机猜测平均损失较高实际例子SVM损失的性质 1. 最小值 如果正确类别分数$ 10$所有错误类别分数$\leq 9$ → $L_i 0$完美 2. 最大值 如果正确类别分数$ 1$某个错误类别分数$ 100$ → $L_i \max(0, 100 - 1 1) 100$很大 3. 初始化$3$个类别 所有分数$\approx 0$ → $L_i \max(0, 0 - 0 1) \max(0, 0 - 0 1)$ $ 1 1 2$ → 平均损失$\approx 2$$C-1 3-1 2$ 这些性质帮助我们 - 理解损失的合理范围 - 检查实现是否正确 - 理解训练过程2.3 损失函数的唯一性问题Uniqueness Problem为什么需要正则化概念的本质如果找到一个W WW使得损失L 0 L0L0这个W WW不是唯一的。例如2 W 2W2W也可能使L 0 L0L0。这引出了正则化的需求在多个使损失为0 00的W WW中选择最简单的。图解说明损失L 0W使L02W也使L03W也使L0问题哪个W更好正则化选择简单的W说明唯一性问题如果W WW使L 0 L0L0那么k W kWkWk 0 k0k0也可能使L 0 L0L0原因SVM损失只关心分数的相对大小不关心绝对大小解决方案正则化偏好权重较小的W WW类比理解想象你在解方程。唯一性问题就像方程x y 5有无数解问题哪个解更好正则化选择最简单的解如x2, y3而不是x100, y-95实际例子唯一性问题的例子 假设$W$使损失$L0$ 样本1猫分数$[3.2, 5.1, -1.7]$ - 使用$W$猫分数$3.2$汽车分数$5.1$错误 - 但如果我们调整$W$使猫分数更高... 使用$2W$ - 所有分数翻倍$[6.4, 10.2, -3.4]$ - 相对大小不变汽车$(10.2) 猫(6.4)$ - 但差距更大$10.2 - 6.4 3.8 1$ - 如果原来$L0$现在$L$仍然$0$ 问题 - 哪个$W$更好$W$还是$2W$ - 需要额外的标准来选择 解决方案 - 正则化偏好权重较小的$W$ - 例如$L_2$正则化最小化$\|W\|^2$三、正则化Regularization防止过拟合这一章要建立的基础理解为什么需要正则化以及正则化的作用核心问题如何防止模型在训练数据上表现太好但在测试数据上表现差[!NOTE] 关键点总结正则化在损失函数中添加一个惩罚项防止模型在训练数据上过拟合。完整的损失函数 数据损失 正则化项 数据损失 正则化项数据损失正则化项。正则化偏好简单的模型提高泛化能力。3.1 正则化的作用What is Regularization防止过拟合概念的本质正则化Regularization是在损失函数中添加一个惩罚项防止模型在训练数据上表现太好过拟合。完整的损失函数 数据损失 λ × 正则化项 数据损失 \lambda \times 正则化项数据损失λ×正则化项其中λ \lambdaλ是正则化强度超参数。图解说明完整损失函数数据损失Data Loss正则化项Regularization模型预测匹配训练数据防止过拟合偏好简单模型L Data Loss λ×R(W)说明数据损失衡量预测与真实标签的差异正则化项惩罚复杂的模型如权重很大的W WWλ \lambdaλlambda正则化强度控制两者的平衡目标最小化完整损失函数类比理解想象你在学习。正则化就像数据损失你在训练题上的得分希望得分高正则化防止你死记硬背训练题希望理解原理平衡既要答对训练题又要理解原理不能只背答案实际例子正则化的例子 完整损失函数 $$L \text{Data Loss} \lambda \times R(W)$$ $L_2$正则化 $$R(W) \sum W^2$$所有权重的平方和 - 偏好权重较小的$W$ - 使权重分散不集中在少数维度 $L_1$正则化 $$R(W) \sum |W|$$所有权重的绝对值之和 - 偏好稀疏的$W$很多权重为$0$ - 特征选择 正则化强度$\lambda$ - $\lambda 0$不考虑正则化只最小化数据损失 - $\lambda 0$平衡数据损失和正则化 - $\lambda$很大过度正则化模型太简单 为什么需要正则化 1. 防止过拟合模型在训练数据上表现好但在测试数据上表现差 2. 提高泛化能力模型在新数据上也能表现好 3. 表达偏好选择更简单的模型3.2 正则化的三种作用Three Roles of Regularization表达偏好、简化模型、改善优化概念的本质正则化有三个主要作用表达偏好在多个使数据损失为0 00的W WW中选择更简单的简化模型防止模型拟合训练数据中的噪声改善优化为损失函数添加曲率使优化更容易图解说明正则化表达偏好Prefer Simple W简化模型Dont Fit Noise改善优化Add CurvatureL2正则化分散权重防止过拟合提高泛化优化更稳定收敛更快说明表达偏好L2正则化使权重分散不集中在少数维度简化模型防止模型学习训练数据中的噪声和细节改善优化正则化项为损失函数添加曲率使优化更稳定类比理解想象你在写作文。正则化的作用就像表达偏好偏好简洁的表达而不是冗长的描述简化模型不要过度关注细节要抓住主要思想改善优化有明确的方向更容易找到好的表达实际例子正则化的三种作用 1. 表达偏好$L_2$正则化 没有正则化$W [100, 0, 0, 0]$ 有$L_2$正则化$W [25, 25, 25, 25]$ - 权重分散不集中在第一个维度 - 更平衡更稳定 2. 简化模型 没有正则化模型可能学习训练数据中的噪声 有正则化模型学习主要模式忽略噪声 - 提高泛化能力 - 在测试数据上表现更好 3. 改善优化 没有正则化损失函数可能很平坦优化困难 有正则化添加曲率优化更容易 - 梯度更稳定 - 收敛更快四、Softmax分类器Softmax Classifier将分数转换为概率这一章要建立的基础理解Softmax分类器和交叉熵损失核心问题如何将分类器的分数解释为概率如何使用概率进行训练[!NOTE] 关键点总结Softmax分类器使用Softmax函数将原始分数转换为概率分布。损失函数是交叉熵损失负对数似然最大化正确类别的概率。Softmax损失的范围是[0, ∞)最小值0最大值∞。4.1 Softmax函数Softmax Function将分数转换为概率概念的本质Softmax函数将原始分数转换为概率分布。对于分数向量s ssSoftmax函数计算P ( y k ∣ x ) exp ( s k ) ∑ j exp ( s j ) P(yk|x) \frac{\exp(s_k)}{\sum_j \exp(s_j)}P(yk∣x)∑jexp(sj)exp(sk)其中分母对所有类别求和。这样得到的概率满足概率≥ 0 \geq 0≥0且所有概率之和 1 11。图解说明原始分数s [3.2, 5.1, -1.7]指数函数exp(s)未归一化概率[24.5, 164.0, 0.18]归一化除以总和概率分布[0.13, 0.87, 0.00]说明指数函数exp ( s k ) \exp(s_k)exp(sk)确保概率≥ 0 \geq 0≥0归一化除以∑ j exp ( s j ) \sum_j \exp(s_j)∑jexp(sj)确保概率之和 1 11结果得到有效的概率分布类比理解想象你在投票。Softmax函数就像原始分数每个候选人的得票数指数函数放大差距得票多的更多得票少的更少归一化转换为百分比总和100%概率分布每个候选人的得票概率实际例子Softmax函数的计算 原始分数$s [3.2, 5.1, -1.7]$ 步骤1指数函数 $$\exp(3.2) 24.5$$ $$\exp(5.1) 164.0$$ $$\exp(-1.7) 0.18$$ 步骤2归一化 总和$ 24.5 164.0 0.18 188.68$ 概率 $$P(\text{猫}) \frac{24.5}{188.68} 0.13$$ $$P(\text{汽车}) \frac{164.0}{188.68} 0.87$$ $$P(\text{青蛙}) \frac{0.18}{188.68} 0.00$$ 结果 - 所有概率$\geq 0$ ✓ - 概率之和$1$ ✓ - 汽车的概率最高$0.87$符合原始分数4.2 交叉熵损失Cross-Entropy Loss最大化正确类别的概率概念的本质Softmax分类器的损失函数是交叉熵损失Cross-Entropy Loss也称为负对数似然Negative Log-Likelihood。对于正确类别y i y_iyi损失是L i − log ( P ( y i ∣ x i ) ) L_i -\log(P(y_i|x_i))Li−log(P(yi∣xi))。目标是最大化正确类别的概率等价于最小化负对数概率。图解说明概率分布P [0.13, 0.87, 0.00]正确类别y_i 猫正确类别概率P(y_i) 0.13负对数-log(0.13)损失L_i 2.04说明交叉熵损失L i − log ( P ( y i ∣ x i ) ) L_i -\log(P(y_i|x_i))Li−log(P(yi∣xi))目标最大化P ( y i ∣ x i ) P(y_i|x_i)P(yi∣xi)等价于最小化L i L_iLi性质P ( y i ∣ x i ) → 1 P(y_i|x_i) \to 1P(yi∣xi)→1时L i → 0 L_i \to 0Li→0P ( y i ∣ x i ) → 0 P(y_i|x_i) \to 0P(yi∣xi)→0时L i → ∞ L_i \to \inftyLi→∞类比理解想象你在考试。交叉熵损失就像概率你答对某道题的概率目标希望概率接近1答对损失如果概率低损失大如果概率高损失小对数使用对数放大差距概率0.1和0.9的差距比0.4和0.6的差距大实际例子交叉熵损失的计算 概率分布$P [0.13, 0.87, 0.00]$ 正确类别$y_i 猫$第$0$类 损失 $$L_i -\log(0.13) -(-2.04) 2.04$$ 如果概率更高 $P [0.9, 0.1, 0.0]$ $L_i -\log(0.9) 0.11$损失小 如果概率更低 $P [0.01, 0.99, 0.0]$ $L_i -\log(0.01) 4.61$损失大 损失的范围 - 最小值$0$当$P(y_i) 1$时 - 最大值$\infty$当$P(y_i) \to 0$时 - 初始化当所有分数$\approx 0$时$P(y_i) \approx 1/C$$L_i \approx \log(C)$4.3 Softmax vs SVMSoftmax vs SVM两种损失函数的比较概念的本质Softmax损失和SVM损失有不同的特点Softmax将分数解释为概率使用交叉熵损失对分数的大小敏感SVM只关心分数的相对大小使用Hinge损失对分数的大小不敏感只要满足安全边距图解说明损失函数SVM损失Hinge LossSoftmax损失Cross-Entropy只关心相对大小s_yi ≥ s_j 1关心概率大小P(y_i) → 1对分数大小不敏感对分数大小敏感说明SVM只要s y i ≥ s j 1 s_{y_i} \geq s_j 1syi≥sj1损失就为0 00不关心s y i s_{y_i}syi具体是多少Softmax希望P ( y i ) P(y_i)P(yi)尽可能接近1 11对分数的大小敏感选择通常Softmax更常用因为它提供概率解释类比理解想象你在比赛。两种损失函数就像SVM只要你的队伍领先至少1分就满意不关心领先多少Softmax希望你的队伍领先越多越好概率越高越好实际例子SVM vs Softmax的例子 情况1分数$[10, 9, 8]$正确类别是第$0$类 - SVM损失$\max(0, 9-101) \max(0, 8-101) 0 0 0$ - Softmax损失$-\log(\exp(10)/(\exp(10)\exp(9)\exp(8))) \approx 0.05$ 情况2分数$[100, 99, 98]$正确类别是第$0$类 - SVM损失$\max(0, 99-1001) \max(0, 98-1001) 0 0 0$相同 - Softmax损失$-\log(\exp(100)/(\exp(100)\exp(99)\exp(98))) \approx 0.05$相同 情况3分数$[3.2, 5.1, -1.7]$正确类别是第$0$类 - SVM损失$\max(0, 5.1-3.21) \max(0, -1.7-3.21) 2.9 0 2.9$ - Softmax损失$-\log(0.13) 2.04$ 观察 - SVM只关心相对大小不关心绝对大小 - Softmax关心概率对分数大小更敏感五、优化Optimization如何找到使损失最小的W这一章要建立的基础理解如何通过优化找到使损失最小的参数核心问题如何高效地找到使损失函数最小的W[!NOTE] 关键点总结优化是通过迭代更新参数W WW使损失函数最小化的过程。梯度下降沿着损失下降最快的方向负梯度方向更新参数。可以使用数值梯度近似或解析梯度精确计算梯度。实际中通常使用解析梯度但用数值梯度检查实现。5.1 优化策略Optimization Strategies从随机搜索到梯度下降概念的本质优化策略有多种随机搜索随机尝试不同的W WW选择损失最小的效率低跟随斜率计算梯度沿着损失下降最快的方向更新W WW高效图解说明优化策略随机搜索Random Search梯度下降Gradient Descent随机尝试W选择最好的计算梯度沿着负梯度更新效率低需要很多尝试效率高直接找到方向说明随机搜索简单但效率低需要尝试很多W WW梯度下降计算梯度沿着负梯度方向更新W WW效率高梯度损失函数对W WW的导数指向损失增加最快的方向类比理解想象你在山上找最低点。优化策略就像随机搜索随机走看哪里最低效率低梯度下降看哪个方向最陡梯度往那个方向走效率高实际例子优化策略的例子 随机搜索 - 随机生成W1, W2, ..., W1000 - 计算每个W的损失 - 选择损失最小的W - 问题需要尝试很多W效率低 - 结果可能找到不错的W如15.5%准确率但远非最优 梯度下降 - 从随机$W$开始 - 计算梯度$dW$损失对$W$的导数 - 更新$W$$W W - \text{learning\_rate} \times dW$ - 重复直到收敛 - 优势直接找到下降方向效率高 - 结果找到使损失最小的$W$如$95\%$准确率5.2 梯度的计算Gradient Computation数值梯度 vs 解析梯度概念的本质梯度可以通过两种方式计算数值梯度通过有限差分近似d W ≈ L ( W h ) − L ( W ) h dW \approx \frac{L(Wh) - L(W)}{h}dW≈hL(Wh)−L(W)近似慢但容易实现解析梯度通过微积分计算d W d L d W dW \frac{dL}{dW}dWdWdL精确快但容易出错图解说明梯度计算数值梯度Numerical解析梯度Analytic有限差分(L(Wh)-L(W))/h微积分dL/dW近似慢容易实现精确快容易出错梯度检查Gradient Check说明数值梯度通过小的扰动h计算损失的差异近似梯度解析梯度通过微积分直接计算梯度实践使用解析梯度但用数值梯度检查实现梯度检查类比理解想象你在测量速度。两种方法就像数值梯度测量一小段时间内的位移计算平均速度近似解析梯度用公式直接计算瞬时速度精确实际例子梯度计算的例子 数值梯度 当前$W$$[0.34, -1.11, 0.78, ...]$ 当前损失$L(W) 1.25347$ 扰动第一个维度 $W h$$[0.340.0001, -1.11, 0.78, ...]$ 新损失$L(Wh) 1.25322$ 梯度第一个维度 $$dW[0] \frac{1.25322 - 1.25347}{0.0001} -2.5$$ 问题 - 需要对每个维度都计算慢 - 只是近似h不能太小也不能太大 解析梯度 直接计算$\frac{dL}{dW}$通过链式法则 - 精确 - 快一次计算所有维度 - 但需要推导公式容易出错 实践 - 使用解析梯度训练 - 用数值梯度检查实现梯度检查 - 如果两者接近说明实现正确5.3 梯度下降Gradient Descent沿着负梯度方向更新参数概念的本质梯度下降是优化损失函数的基本方法。从初始W WW开始计算梯度d W dWdW然后沿着负梯度方向更新W WWW W − learning_rate × d W W W - \text{learning\_rate} \times dWWW−learning_rate×dW。重复这个过程直到损失收敛。图解说明否是初始W计算损失L(W)计算梯度dW dL/dW更新WW W - α×dW收敛最优W说明梯度d W dWdW指向损失增加最快的方向负梯度− d W -dW−dW指向损失下降最快的方向学习率α \alphaα控制步长太大可能发散太小收敛慢迭代重复计算梯度和更新直到收敛类比理解想象你在下山。梯度下降就像当前位置W WW梯度最陡的方向损失增加最快负梯度下山的方向损失下降最快学习率每一步走多远目标到达最低点损失最小实际例子梯度下降的例子 初始化 $W [0.34, -1.11, 0.78, ...]$ 损失$L(W) 1.25347$ 迭代1 计算梯度$dW [-2.5, 0.6, 0, ...]$ 更新$W W - 0.01 \times dW$ $ [0.34, -1.11, 0.78, ...] - 0.01 \times [-2.5, 0.6, 0, ...]$ $ [0.365, -1.116, 0.78, ...]$ 新损失$L(W) 1.20000$下降 迭代2 计算梯度$dW [-2.3, 0.5, 0.1, ...]$ 更新$W W - 0.01 \times dW$ 新损失$L(W) 1.15000$继续下降 ... 迭代$N$ 损失$L(W) 0.05$收敛 停止损失不再下降 学习率的选择 - $\alpha 0.01$小步长收敛慢但稳定 - $\alpha 0.1$大步长可能发散 - $\alpha 0.001$很小步长收敛很慢5.4 随机梯度下降Stochastic Gradient Descent使用小批量数据概念的本质当训练数据很大时计算所有数据的梯度很昂贵。随机梯度下降SGD使用小批量minibatch数据近似全量梯度。每次迭代随机选择一小批样本如32/64/128个计算这批样本的梯度然后更新参数。图解说明训练数据集N个样本随机选择小批量32个计算小批量梯度dW_batch更新WW W - α×dW_batch下一个批量遍历所有数据1个epoch重复多个epoch说明小批量每次使用一小批样本如32个计算梯度近似小批量梯度是全量梯度的近似但计算快得多随机性每次随机选择不同的样本增加随机性有助于跳出局部最优epoch遍历所有训练数据一次称为一个epoch类比理解想象你在统计。SGD就像全量统计统计所有人的数据准确但慢抽样统计随机抽取一部分人统计近似但快多次抽样多次随机抽样逐步接近全量结果实际例子SGD的例子 训练数据50,000个样本 全量梯度下降 - 每次计算所有50,000个样本的梯度 - 计算量大O(N) - 慢但梯度准确 SGD批量大小32 - 每次随机选择32个样本 - 计算这32个样本的梯度 - 更新参数 - 重复直到遍历所有数据1个epoch 优势 - 计算快O(batch_size) O(N) - 内存小不需要存储所有数据的梯度 - 随机性有助于跳出局部最优 批量大小的选择 - 32/64/128常用 - 太小梯度噪声大不稳定 - 太大计算慢失去随机性 本章总结核心要点回顾损失函数量化分类器在训练数据上的表现数据集损失是所有样本损失的平均值多类SVM损失使用Hinge损失要求正确类别分数比错误类别高至少1最小值0最大值∞正则化防止过拟合完整损失 数据损失 λ×正则化项L2正则化偏好权重较小的WSoftmax分类器将分数转换为概率分布使用交叉熵损失最大化正确类别的概率优化梯度下降沿着负梯度方向更新参数使用解析梯度精确、快SGD使用小批量数据加速训练知识地图损失函数与优化损失函数Loss Function优化OptimizationSVM损失Hinge LossSoftmax损失Cross-Entropy正则化Regularization梯度计算Gradient梯度下降GD随机梯度下降SGD关键决策点选择损失函数SVM只关心相对大小Softmax提供概率解释正则化强度使用验证集选择λ平衡数据损失和正则化学习率太小收敛慢太大可能发散批量大小32/64/128常用平衡速度和稳定性梯度检查使用数值梯度检查解析梯度的实现 延伸阅读推荐资源CS231n课程Stanford CS231n: Convolutional Neural Networks for Visual Recognition详细的损失函数和优化课程经典论文“Support Vector Machines” - SVM的经典论文“Deep Learning” (Goodfellow et al.) - 深度学习的优化方法下一步学习神经网络更复杂的模型反向传播如何计算复杂模型的梯度卷积神经网络图像分类的强大模型