3.9 训练一个 Softmax 分类器-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授


←上一篇↓↑下一篇→
3.8 Softmax 回归回到目录3.10 深度学习框架

训练一个 Softmax 分类器 (Training a Softmax Classifier)

上一个视频中我们学习了Softmax层和Softmax激活函数,在这个视频中,你将更深入地了解Softmax分类,并学习如何训练一个使用了Softmax层的模型。

在这里插入图片描述

回忆一下我们之前举的的例子,输出层计算出的 z [ l ] z^{[l]} z[l] 如下, z [ l ] = [ 5 2 − 1 3 ] z^{[l]}=\left[\begin{matrix}5\\2\\-1\\3\end{matrix}\right] z[l]=5213 我们有四个分类 C = 4 C=4 C=4 z [ l ] z^{[l]} z[l] 可以是4×1维向量,我们计算了临时变量 t t t t = [ e 5 e 2 e − 1 e 3 ] t=\left[\begin{matrix}e^5\\e^2\\e^{-1}\\e^3\end{matrix}\right] t=e5e2e1e3 ,对元素进行幂运算,最后,如果你的输出层的激活函数 g ( L ) ( ) g^{(L)}() g(L)()Softmax激活函数,那么输出就会是这样的:

在这里插入图片描述

简单来说就是用临时变量 t t t 将它归一化,使总和为1,于是这就变成了 a [ L ] a^{[L]} a[L] ,你注意到向量 z z z 中,最大的元素是5,而最大的概率也就是第一种概率。

在这里插入图片描述

Softmax这个名称的来源是与所谓hardmax对比,hardmax会把向量 z z z 变成这个向量 [ 1 0 0 0 ] \left[\begin{matrix}1\\0\\0\\0\end{matrix}\right] 1000hardmax函数会观察 z z z 的元素,然后在 z z z 中最大元素的位置放上1,其它位置放上0,所这是一个hard max,也就是最大的元素的输出为1,其它的输出都为0。与之相反,Softmax所做的从 z z z 到这些概率的映射更为温和,我不知道这是不是一个好名字,但至少这就是softmax这一名称背后所包含的想法,与hardmax正好相反。

在这里插入图片描述

有一点我没有细讲,但之前已经提到过的,就是Softmax回归或Softmax激活函数将logistic激活函数推广到 C C C 类,而不仅仅是两类,结果就是如果 C = 2 C=2 C=2 ,那么 C = 2 C=2 C=2Softmax实际上变回了logistic回归,我不会在这个视频中给出证明,但是大致的证明思路是这样的,如果 C = 2 C=2 C=2 ,并且你应用了Softmax,那么输出层 a [ L ] a^{[L]} a[L] 将会输出两个数字,如果 C = 2 C=2 C=2 的话,也许输出0.842和0.158,对吧?这两个数字加起来要等于1,因为它们的和必须为1,其实它们是冗余的,也许你不需要计算两个,而只需要计算其中一个,结果就是你最终计算那个数字的方式又回到了logistic回归计算单个输出的方式。这算不上是一个证明,但我们可以从中得出结论,Softmax回归将logistic回归推广到了两种分类以上。

在这里插入图片描述

接下来我们来看怎样训练带有Softmax输出层的神经网络,具体而言,我们先定义训练神经网络使会用到的损失函数。举个例子,我们来看看训练集中某个样本的目标输出,真实标签是 [ 0 1 0 0 ] \left[\begin{matrix}0\\1\\0\\0\end{matrix}\right] 0100 ,用上一个视频中讲到过的例子,这表示这是一张猫的图片,因为它属于类1,现在我们假设你的神经网络输出的是 y ^ \hat{y} y^ y ^ \hat{y} y^ 是一个包括总和为1的概率的向量, y = [ 0.3 0.2 0.1 0.4 ] y=\left[\begin{matrix}0.3\\0.2\\0.1\\0.4\end{matrix}\right] y=0.30.20.10.4 ,你可以看到总和为1,这就是 a [ l ] a^{[l]} a[l] a [ l ] = y = [ 0.3 0.2 0.1 0.4 ] a^{[l]}=y=\left[\begin{matrix}0.3\\0.2\\0.1\\0.4\end{matrix}\right] a[l]=y=0.30.20.10.4 。对于这个样本神经网络的表现不佳,这实际上是一只猫,但却只分配到20%是猫的概率,所以在本例中表现不佳。

在这里插入图片描述

那么你想用什么损失函数来训练这个神经网络?在Softmax分类中,我们一般用到的损失函数是 L ( y ^ , y ) = − ∑ j = 1 4 y j log ⁡ y ^ j L(\hat{y},y)=-\sum_{j=1}^4y_j\log\hat{y}_j L(y^,y)=j=14yjlogy^j ,我们来看上面的单个样本来更好地理解整个过程。注意在这个样本中 y 1 = y 3 = y 4 = 0 y_1=y_3=y_4=0 y1=y3=y4=0 ,因为这些都是0,只有 y 2 = 1 y_2=1 y2=1 ,如果你看这个求和,所有含有值为0的 y j y_j yj 的项都等于0,最后只剩下 − y 2 t log ⁡ y ^ 2 -y_2t\log\hat{y}_2 y2tlogy^2 ,因为当你按照下标 j j j 全部加起来,所有的项都为0,除了 j = 2 j=2 j=2 时,又因为 y 2 = 1 y_2=1 y2=1 ,所以它就等于 − log ⁡ y ^ 2 -\log\hat{y}_2 logy^2 L ( y ^ , y ) = − ∑ j = 1 4 y j log ⁡ y ^ j = − y 2 log ⁡ y ^ 2 = − log ⁡ y ^ 2 L(\hat{y},y)=-\sum_{j=1}^4y_j\log\hat{y}_j=-y_2\log\hat{y}_2=-\log\hat{y}_2 L(y^,y)=j=14yjlogy^j=y2logy^2=logy^2

这就意味着,如果你的学习算法试图将它变小,因为梯度下降法是用来减少训练集的损失的,要使它变小的唯一方式就是使 − log ⁡ y ^ 2 -\log\hat{y}_2 logy^2 变小,要想做到这一点,就需要使 y ^ 2 \hat{y}_2 y^2 尽可能大,因为这些是概率,所以不可能比1大,但这的确也讲得通,因为在这个例子 x x x 中是猫的图片,你就需要这项输出的概率尽可能地大( y = [ 0.3 0.2 0.1 0.4 ] y=\left[\begin{matrix}0.3\\0.2\\0.1\\0.4\end{matrix}\right] y=0.30.20.10.4 中第二个元素)。

概括来讲,损失函数所做的就是它找到你的训练集中的真实类别,然后试图使该类别相应的概率尽可能地高,如果你熟悉统计学中最大似然估计,这其实就是最大似然估计的一种形式。但如果你不知道那是什么意思,也不用担心,用我们刚刚讲过的算法思维也足够了。

这是单个训练样本的损失,整个训练集的损失 J J J 又如何呢?也就是设定参数的代价之类的,还有各种形式的偏差的代价,它的定义你大致也能猜到,就是整个训练集损失的总和,把你的训练算法对所有训练样本的预测都加起来, J ( w [ 1 ] , b [ 1 ] , ⋯   ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) J(w^{[1]},b^{[1]},\cdots)=\frac1m\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)}) J(w[1],b[1],)=m1i=1mL(y^(i),y(i))

因此你要做的就是用梯度下降法,使这里的损失最小化。

在这里插入图片描述

最后还有一个实现细节,注意因为 C = 4 C=4 C=4 y y y 是一个4×1向量, y y y 也是一个4×1向量,如果你实现向量化,矩阵大写 Y Y Y 就是 [ y ( 1 ) y ( 2 ) ⋯ ⋯ y ( m ) ] \left[\begin{matrix}y^{(1)}y^{(2)}\cdots\cdots y^{(m)}\end{matrix}\right] [y(1)y(2)y(m)] ,例如如果上面这个样本是你的第一个训练样本,那么矩阵 Y = [ 0 0 1 ⋯ 1 0 0 ⋯ 0 1 0 ⋯ 0 0 0 ⋯ ] Y=\left[\begin{matrix}0&0&1&\cdots\\1&0&0&\cdots\\0&1&0&\cdots\\0&0&0&\cdots\end{matrix}\right] Y=010000101000 ,那么这个矩阵 Y Y Y 最终就是一个 4 ∗ m 4*m 4m 维矩阵。类似的, Y ^ = [ y ^ ( 1 ) y ^ ( 2 ) ⋯ ⋯ y ^ ( m ) ] \hat{Y}=\left[\begin{matrix}\hat{y}^{(1)}\hat{y}^{(2)}\cdots\cdots \hat{y}^{(m)}\end{matrix}\right] Y^=[y^(1)y^(2)y^(m)] ,这个其实就是 y ^ ( 1 ) ( a [ l ] ( 1 ) = y ( 1 ) = [ 0.3 0.2 0.1 0.4 ] ) \hat{y}^{(1)}(a^{[l](1)}=y^{(1)}=\left[\begin{matrix}0.3\\0.2\\0.1\\0.4\end{matrix}\right]) y^(1)a[l](1)=y(1)=0.30.20.10.4 ,或是第一个训练样本的输出,那么 Y ^ = [ 0.3 ⋯ 0.2 ⋯ 0.1 ⋯ 0.4 ⋯ ] \hat{Y}=\left[\begin{matrix}0.3&\cdots\\0.2&\cdots\\0.1&\cdots\\0.4&\cdots\end{matrix}\right] Y^=0.30.20.10.4 Y ^ \hat{Y} Y^ 本身也是一个 4 ∗ m 4*m 4m 维矩阵。

在这里插入图片描述

最后我们来看一下,在有Softmax输出层时如何实现梯度下降法,这个输出层会计算 z [ l ] z^{[l]} z[l] ,它是 C ∗ 1 C*1 C1 维的,在这个例子中是4×1,然后你用Softmax激活函数来得到 a [ l ] a^{[l]} a[l] 或者说 y y y ,然后又能由此计算出损失。我们已经讲了如何实现神经网络前向传播的步骤,来得到这些输出,并计算损失,那么反向传播步骤或者梯度下降法又如何呢?其实初始化反向传播所需要的关键步骤或者说关键方程是这个表达式 d z [ l ] = y ^ − y dz^{[l]}=\hat{y}-y dz[l]=y^y ,你可以用 y ^ \hat{y} y^ 这个4×1向量减去 y y y 这个4×1向量,你可以看到这些都会是4×1向量,当你有4个分类时,在一般情况下就是 C ∗ 1 C*1 C1 ,这符合我们对 d z dz dz 的一般定义,这是对 z [ l ] z^{[l]} z[l] 损失函数的偏导数( d z [ l ] = ∂ J ∂ z [ l ] dz^{[l]}=\frac{\partial J}{\partial z^{[l]}} dz[l]=z[l]J ),如果你精通微积分就可以自己推导,或者说如果你精通微积分,可以试着自己推导,但如果你需要从零开始使用这个公式,它也一样有用。

在这里插入图片描述

有了这个,你就可以计算 d z [ l ] dz^{[l]} dz[l] ,然后开始反向传播的过程,计算整个神经网络中所需要的所有导数。

在这里插入图片描述

但在这周的初级练习中,我们将开始使用一种深度学习编程框架,对于这些编程框架,通常你只需要专注于把前向传播做对,只要你将它指明为编程框架,前向传播,它自己会弄明白怎样反向传播,会帮你实现反向传播,所以这个表达式值得牢记( d z [ l ] = y ^ − y dz^{[l]}=\hat{y}-y dz[l]=y^y ),如果你需要从头开始,实现Softmax回归或者Softmax分类,但其实在这周的初级练习中你不会用到它,因为编程框架会帮你搞定导数计算。

Softmax分类就讲到这里,有了它,你就可以运用学习算法将输入分成不止两类,而是 C C C 个不同类别。接下来我想向你展示一些深度学习编程框架,可以让你在实现深度学习算法时更加高效,让我们在下一个视频中一起讨论。

课程PPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


←上一篇↓↑下一篇→
3.8 Softmax 回归回到目录3.10 深度学习框架

<think>嗯,用户现在问的是关于考研方向选择AI领域,以及期间数学应该如何学习和学哪些内容。首先,我需要确定用户的具体需求。他们可能已经决定要考研,并且对AI领域感兴趣,但需要了解在准备过程中数学方面的具体学习策略。 接下来,我要考虑用户可能的背景。之前用户提到过数学和物理比较薄弱,所以在回答时需要考虑到这一点,给出适合基础较弱的学习者的建议。同时,用户可能对AI领域的数学要求不太清楚,需要详细说明哪些数学科目是重点,以及如何高效学习。 用户的问题分为两部分:考研方向属于AI领域,以及数学的学习方法和内容。需要明确回答这两个部分,但重点在数学学习上。AI领域的考研方向可能包括机器学习、计算机视觉、自然语言处理等,但用户可能更需要知道的是如何准备数学部分,以支持这些方向的学习。 需要梳理AI领域所需的数学知识,通常包括高等数学、线性代数、概率论与数理统计,以及一些优化方法。但具体到考研,可能不同的学校和专业有不同的要求,所以需要给出通用建议,同时提醒用户查看目标院校的具体考试科目。 另外,用户之前提到的学习计划中提到了数学复习,比如初中、高中数学补强,现在考研数学可能更高阶,需要衔接之前的建议,给出从基础到进阶的学习路径。可能需要推荐一些教材、在线课程,以及实践中的应用方法,帮助用户理解数学在AI中的实际用途,增强学习的动力。 还要注意用户可能的时间安排,比如考研准备通常需要至少一年的时间,数学作为基础科目需要早期投入。需要分阶段建议,比如基础阶段、强化阶段、冲刺阶段,每个阶段的重点和方法。 此外,用户可能有焦虑,担心数学难度大,所以需要给予鼓励和实用策略,比如如何结合AI案例学习数学,避免纯理论学习的枯燥,同时推荐一些社区或资源,帮助解决学习中的困难。 最后,总结关键点,确保信息结构清晰,易于用户理解和执行。</think>以下是针对AI领域考研的数学学习规划及核心内容解析,结合你的背景(数学基础薄弱但目标明确)设计分阶段策略,重点强调**实战应用衔接**和**高效提分技巧**—— --- ### **一、AI考研核心数学领域与对应权重** | 数学分支 | 在AI中的典型应用场景 | 考研分值占比 | 学习优先级 | |------------------|----------------------------------------|--------------|------------| | **高等数学** | 梯度下降优化、神经网络反向传播推导 | 约50% | ⭐⭐⭐⭐⭐ | | **线性代数** | 矩阵运算(图像处理)、特征分解(PCA降维) | 约25% | ⭐⭐⭐⭐⭐ | | **概率论与统计** | 贝叶斯分类器、损失函数概率解释 | 约20% | ⭐⭐⭐⭐ | | **离散数学** | 图神经网络基础、逻辑推理系统 | 约5% | ⭐⭐ | --- ### **二、分阶段攻破策略(适配24/25考研时间线)** #### **阶段1:筑基期(3-6个月)——公式直观理解 > 计算熟练度** - **核心任务**:建立数学与AI的**强关联认知**,避免纯理论空转 - **学习路径**: ```markdown **1. 高等数学** - 重点章节: - 多元函数微分学(梯度下降可视化:用Python画3D曲面下降轨迹) - 积分应用(概率密度函数积分求分布) - 工具: - 《张宇考研数学基础30讲》+ 配套视频(重点看“AI相关考点标注”) - 3Blue1Brown《微积分的本质》系列(B站可看) **2. 线性代数** - 重点突破: - 矩阵求导(手推简单神经网络权重更新公式) - 奇异值分解(用NumPy实现图片压缩demo) - 工具: - 《线性代数的几何意义》漫画版(快速建立几何直觉) - MIT Gilbert Strang教授公开课(中文字幕) **3. 概率论** - 实战案例: - 用贝叶斯公式实现垃圾邮件分类器(仅需10行Python代码) - 蒙特卡洛方法估算π值(理解大数定律) - 工具: - 《概率论与数理统计》陈希孺(重点前4章) - 李航《统计学习方法》第1章(概率部分精读) ``` #### **阶段2:强化期(3个月)——真题驱动式突破** - **核心任务**:锁定AI高频考点,掌握**快速解题套路** - **重点题型**: ```markdown - **梯度与极值**:2021年数一真题第17题(用拉格朗日乘数法优化SVM间隔) - **矩阵分解**:2020年数三真题第21题(用特征值分解解释PCA降维原理) - **概率分布**:2019年数一真题第22题(用泊松分布建模推荐系统点击事件) - 工具: - 《李永乐考研数学历年真题详解》(按AI相关题型分类练习) - 知能行考研数学APP(AI智能检测薄弱点) ``` #### **阶段3:冲刺期(2个月)——数学与AI的跨学科融合** - **核心任务**:用数学工具复现AI论文基础推导 - **实战案例**: ```markdown - **反向传播推导**:从复合函数求导链式法则 → 推导全连接网络梯度公式 - **SVM对偶问题**:用拉格朗日乘数法手推KKT条件 → 对比sklearn源码实现 - **EM算法**:通过Jensen不等式理解隐变量估计 → 实现简单GMM聚类 - 工具: -深度学习》(花书)第2-4章数学推导精读 - 吴恩达CS229数学复习讲义(Stanford官方开源) ``` --- ### **三、针对数学薄弱者的逆袭技巧** #### **1. 用AI工具辅助理解** - **符号计算**:Wolfram Alpha(输入“derivative of sigmoid function”直接显示求导步骤) - **几何可视化**:GeoGebra(动态演示傅里叶变换的频域变换过程) - **错题分析**:Notion AI(拍照上传错题 → 自动解析知识点漏洞) #### **2. 费曼学习法改造** - **步骤**: 1. 学习一个数学概念(如奇异值分解) 2. 用该概念在Kaggle上复现一个降维案例(如MNIST数字识别) 3. 在知乎/CSDN写一篇“用奇异值分解压缩图片”的技术短文 4. 将文章转换为B站短视频脚本(用动画解释数学原理) #### **3. 考研数学与408专业课的联动** - **数据结构的数学基础**: - 图论中的邻接矩阵 → 社交网络嵌入表示 - 动态规划递推式 → 强化学习中的Bellman方程 - **操作系统的概率应用**: - 进程调度中的泊松分布 → 服务器请求量预测 --- ### **四、资源推荐(低成本高效版)** | 类型 | 推荐内容 | 获取方式 | |--------------|---------------------------------------|-----------------------| | **教材** | 《考研数学复习全书·基础篇》(李永乐) | 拼多多二手书(约15元) | | **视频** | 宋浩考研数学(完全免费,高数/线代/概率全) | B站官方账号 | | **题库** | 李林《高频考点108题》 | 微信小程序“灯塔考研” | | **论文辅助** | arXiv.org(搜索“tutorial math AI”) | 免费下载PDF | --- ### **五、避坑指南** 1. **不要死磕证明题**:AI考研数学重点在应用(如梯度计算),而非ε-δ语言严格证明 2. **警惕“押题陷阱”**:2023年数一已出现“神经网络损失函数二阶导”新题型,需关注前沿交叉考点 3. **公式记忆法**:将关键公式(如softmax导数)设为手机锁屏壁纸,碎片时间强化 --- **数学是AI领域的内功,但考研是策略性竞争。建议每天早晨用30分钟推导一个AI相关公式(如交叉熵损失求导),坚持100天后再看《深度学习》论文,会有完全不同的认知维度!** 如果需要具体某章(如概率密度估计)的详细学习路线,可以告诉我你的当前进度~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zhao-Jichao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值