【深度学习】吴恩达课程笔记(五)——超参数调试、batch norm、Softmax 回归

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~

【吴恩达课程笔记专栏】
【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础
【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络
【深度学习】吴恩达课程笔记(三)——参数VS超参数、深度学习的实践层面
【深度学习】吴恩达课程笔记(四)——优化算法

吴恩达课程笔记——超参数调试、batch norm、Softmax 回归

  • 九、超参数调试
    • 1.调试处理
      • 超参数优先级
    • 2.超参数数值搭配选择方法
    • 3.为超参数选择合适的范围(标尺)
    • 4.超参数调整实践(Pandas VS Caviar)
      • 熊猫法
      • 鱼子酱法
  • 十、batch norm
    • 1.归一化网络的激活函数
    • 2.把batch norm拟合进神经网络
      • 使用的位置
      • batch norm拟合进神经网络
      • batch norm与minibatch一起使用
      • 𝑏[l]参数没有意义
    • 3.batch norm为什么好用?
      • 问题的提出
      • 总结
    • 4.测试时的batch norm
  • 十一、Softmax 回归
    • 1.Softmax 回归简介
      • 简介
      • 计算方法
      • softmax回归举例
    • 2.训练一个 Softmax 分类器
      • Softmax 名称来源
      • 怎样训练带有 Softmax 输出层的神经网络
      • 反向传播步骤或者梯度下降法

九、超参数调试

1.调试处理

超参数优先级

在这里插入图片描述
红色第一,黄色第二,紫色第三,没框的基本不调

2.超参数数值搭配选择方法

在这里插入图片描述
超参数少的时候可以像左面一样均匀取点研究效果。

超参数多的时候可以选择随机取点研究效果。如果此时发现某点及其附近的效果比其它部分好,那么就在这附近的区域较为密集地再多取一些点。如此研究直到得出足够满意的超参数搭配。如下图:
在这里插入图片描述

3.为超参数选择合适的范围(标尺)

举例说明:

  • 神经网络某层的神经元个数:可以取50-100间均匀随机值

  • 神经网络层数:可以取2-4间均匀随机值

  • 学习率:可以取0.0001-1间不均匀随机值

α = 1 0 − 4 ∗ n p . r a n d o n . r a n d ( ) 例子中的范围为 [ − 4 , 0 ] \alpha=10^{-4*np.randon.rand()}\\ 例子中的范围为[-4,0] α=104np.randon.rand()例子中的范围为[4,0]

在这里插入图片描述
标尺长上面这样。这样可以给不同的数量级分配相同的搜索资源。

  • 指数平均的 𝛽 :可以取0.9-0.999间不均匀随机值。

因为指数平均计算的是1/(1- 𝛽 )个数的平均值,这个式子在beta接近1的时候对beta更加敏感,因此应该令beta越接近1时,给相应的beta范围分配更多的搜索权重。
在这里插入图片描述
如图所示,对1- 𝛽 施以类似上面的学习率的计算,即可达到效果。

实际上,即使不使用这类换标尺的方法,只要有足够数据,或者能恰当的使用逐渐缩小超参数组合范围的方法,也可以较快的算出超参数的恰当值。

4.超参数调整实践(Pandas VS Caviar)

熊猫法

同时运行一个模型,观察其性能随时间变化,手动调整超参数
在这里插入图片描述

鱼子酱法

同时运行多个模型,不进行人工干预。全部训练完毕后选出训练结果较好的模型。
在这里插入图片描述

十、batch norm

1.归一化网络的激活函数

在这里插入图片描述

含义:将z进行归一化。即将z的分布调整到平均值为0,值分布调整到0-1之间(方差为1)。

目的:使得神经网络的参数计算更有效率

注意:在训练隐藏层的时候,有时候为了发挥sigmoid、tanh等的效果,你不希望数据的方差变为1,那么你就没必要对z归一化
z ( 1 ) , . . . , z ( m ) —— > z [ l ] ( i ) , i 为 1 到 m 的某个隐藏层 i μ = 1 m ∑ i m z ( i ) σ n o r m 2 = 1 m ∑ i m ( z i − μ ) 2 z n o r m ( i ) = z ( i ) − μ σ 2 + ϵ z^{(1)},...,z^{(m)} ——>z^{[l](i)},i为1到m的某个隐藏层i\\ \mu=\frac{1}{m}\sum_{i}^{m}z^{(i)} \\ \sigma_{norm}^{2}=\frac{1}{m}\sum_{i}^{m}(z_i-\mu)^{2} \\ z_{norm}^{(i)}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^{2}+\epsilon}}\\ z(1),...,z(m)——>z[l](i),i1m的某个隐藏层iμ=m1imz(i)σnorm2=m1im(ziμ)2znorm(i)=σ2+ϵ z(i)μ
但是有时候我们不希望z分布在0-1、平均值为0,也许分布在别的地方会更有意义。
z ˜ ( i ) = γ z n o r m ( i ) + β 如果 γ , β 如下 : γ = σ 2 + ϵ β = μ 那么: z ˜ ( i ) = z ( i ) \~z^{(i)}=\gamma z_{norm}^{(i)}+\beta\\ 如果\gamma ,\beta如下: \\ \gamma=\sqrt{\sigma^{2}+\epsilon} \\ \beta=\mu \\ 那么:\~z^{(i)}=z^{(i)} z˜(i)=γznorm(i)+β如果γβ如下:γ=σ2+ϵ β=μ那么:z˜(i)=z(i)

2.把batch norm拟合进神经网络

使用的位置

前向传播中:在计算出z后,使用激活函数前
在这里插入图片描述
每个单元负责计算两件事。第一,它先计算 𝑧,然后应用其到激活函数中再计算 𝑎 。每个圆圈代表着两步的计算过程。
在这里插入图片描述

batch norm拟合进神经网络

  1. 没有应用 Batch 归一化:

    把输入𝑋拟合到第一隐藏层,然后首先应用 𝑤[1] 和 𝑏[1] 计算 𝑧[1]

    接着,把 𝑧[1] 拟合到激活函数以计算 𝑎[1]

  2. 应用 Batch 归一化:Batch 归一化是发生在计算𝑧和𝑎之间的。

    • 把输入𝑋拟合到第一隐藏层,然后首先应用 𝑤[1] 和 𝑏[1] 计算 𝑧[1]

    • (第一层)将 𝑧[1] 值进行 Batch 归一化,简称 BN,此过程将由 𝛽[1] 和 𝛾[1] 两参数控制,这一操作会给你一个新的规范化的 𝑧[1] 值(𝑧̃[1] ),然后将其输入激活函数中得到 𝑎[1],即 𝑎[1] = 𝑔[1] (𝑧̃[l])。

    • (第二层)应用 𝑎[1] 值来计算 𝑧[2],此过程是由 𝑤[2] 和 𝑏[2] 控制的。与你在第一层所做的类似,通过 𝛽[2] 和 𝛾[2] 将 𝑧[2] 进行 Batch 归一化,得到 𝑧̃[2],再通过激活函数计算出 𝑎[2]

    注意:这里的这些( 𝛽[1], 𝛽[2]等等)和超参数𝛽没有任何关系。

    ( 𝛽[1], 𝛽[2]等等)是算法的新参数 ,接下来你可以使用想用的任何一种优化算法,比如使用梯度下降法来执行它。更新参数 𝛽为 𝛽[l] = 𝛽[l] - 𝛼 𝑑𝛽[l]。你也可以使用 Adam 或 RMSprop 或 Momentum,以更新参数 𝛽 和 𝛾,并不是只应用梯度下降法。

    后者是用于 Momentum、 Adam、 RMSprop 或计算各个指数的加权平均值。

batch norm与minibatch一起使用

在这里插入图片描述
第一个 mini-batch:𝑋{1}

  • 应用参数𝑤[1]和𝑏[1] ,计算𝑧[1]
  • Batch 归一化减去均值,除以标准差,由𝛽[1]和𝛾[1]得到𝑧̃[1]
  • 再应用激活函数得到𝑎[1]
  • 应用参数𝑤[2]和𝑏[2],计算𝑧[2]
  • 然后继续下去

继续第二个 mini-batch:𝑋{2}

继续第三个 mini-batch:𝑋{3}

𝑏[l]参数没有意义

在这里插入图片描述
在使用 Batch 归一化,其实你可以消除参数 𝑏[l],或者设置为 0,参数变成𝑧[l] = 𝑤[l]𝑎[[l-1]

然后对𝑧[l]进行归一化,𝑧̃[l] = 𝛾[l]z[l] +𝛽[l],最后会用参数𝛽[l],以便决定𝑧̃[l]的取值。

**总结:**Batch 归一化,z[l]所有的偏移最终都由归一化确定了, 𝑏[l]参数没有意义,所以由控制参数𝛽[l]代替来影响转移或偏置条件。

3.batch norm为什么好用?

问题的提出

在这里插入图片描述
如上图,如果你的训练集是左边的那些黑猫,那么你的训练样本分布可以由左侧坐标系图代替。如果你的训练集是右边那些花猫,那么你的样本分布可由右侧坐标图代替。

假设你分别用两组训练集训练两个模型,那么由于样本分布不同,最后得到的“找猫函数”也会不同。

现在你希望有一个模型,能同时识别黑猫和不同颜色的猫,但是由上可知,如果你同时用黑猫和花猫的训练集进行训练,就容易让神经元感到“迷惑”

总结

在这里插入图片描述

  1. Batch 归一化,从神经网络后层角度而言,前层不会左右移动的那么多,因为被均值和方差所限制,使后层的学习工作变得更容易些。
  2. Batch 归一化有轻微正则化效果

4.测试时的batch norm

μ = 1 m ∑ i m z ( i ) σ n o r m 2 = 1 m ∑ i m ( z i − μ ) 2 z n o r m ( i ) = z ( i ) − μ σ 2 + ϵ z ˜ ( i ) = γ z n o r m ( i ) + β \mu=\frac{1}{m}\sum_{i}^{m}z^{(i)} \\ \sigma_{norm}^{2}=\frac{1}{m}\sum_{i}^{m}(z_i-\mu)^{2} \\ z_{norm}^{(i)}=\frac{z^{(i)}-\mu}{\sqrt{\sigma^{2}+\epsilon}}\\ \~z^{(i)}=\gamma z_{norm}^{(i)}+\beta\\ μ=m1imz(i)σnorm2=m1im(ziμ)2znorm(i)=σ2+ϵ z(i)μz˜(i)=γznorm(i)+β

测试时,我们可能不使用minibatch,而是一个一个的过训练样本。这个时候训练集的平均数 𝜇 和方差 𝜎2 怎么获得呢?

  1. 使用指数加权平均计算

  2. 使用流动平均来粗略估算

  3. 使用深度学习框架自默认的方式估算

十一、Softmax 回归

1.Softmax 回归简介

简介

softmax回归是logistic回归的一般形式,它做的不只是二分分类,也可以做多分分类
在这里插入图片描述
区分四个种类(class),0-其他、1-猫、2-狗、3-鸡

定义C为种类数,这里C=4,可以看到输出层有四个神经元,他们分别输出结果是0、1、2、3的概率,且总和为1 ,输出结果是一个4*1的向量。

计算方法

在这里插入图片描述
左侧是softmax输出层激活函数计算方法:
z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] S o f t m a x 激活函数 : a [ l ] = g [ l ] ( z [ l ] ) t = e z [ l ] a [ l ] = e z [ l ] ∑ j = 1 4 t i a i [ l ] = t i ∑ j = 1 4 t i z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]} \\ Softmax 激活函数: a^{[l]}=g^{[l]}(z^{[l]})\\ t=e^{z^{[l]}} \\ a^{[l]}=\frac{e^{z^{[l]}}}{\sum_{j=1}^{4}t_i} \\ a_i^{[l]}=\frac{t_i}{\sum_{j=1}^{4}t_i} \\ z[l]=W[l]a[l1]+b[l]Softmax激活函数:a[l]=g[l](z[l])t=ez[l]a[l]=j=14tiez[l]ai[l]=j=14titi
右侧是一个例子:
在这里插入图片描述

softmax回归举例

在这里插入图片描述

2.训练一个 Softmax 分类器

Softmax 名称来源

hardmax 会把向量𝑧变成这个向量[1 0 0 0], 与hardmax 对比,Softmax所做的从𝑧到概率的映射更为温和
在这里插入图片描述

怎样训练带有 Softmax 输出层的神经网络

在这里插入图片描述

举例:单个样本为猫,这个样本中神经网络的表现不佳,这实际上是一只猫,但却只分配到 20%是猫的概率,所以在本例中表现不佳。

用什么损失函数来训练这个神经网络?

损失函数:
L ( y ^ , y ) = − ∑ j = 1 C y j l o g y ^ j y 1 = y 3 = y 4 = 0 , y 2 = 1 ,则 L ( y ^ , y ) = − l o g y ^ 2 L ( y ^ , y ) 越小越好,则 y ^ 2 需要尽量大 L(ŷ,y)=-\sum_{j=1}^{C}y_jlogŷ_j \\ y_1 = y_3 = y_4 = 0,y_2= 1,则L(ŷ,y)=-logŷ_2 \\ L(ŷ,y)越小越好,则ŷ_2需要尽量大 L(y^,y)=j=1Cyjlogy^jy1=y3=y4=0y2=1,则L(y^,y)=logy^2L(y^,y)越小越好,则y^2需要尽量大

反向传播步骤或者梯度下降法

公式:
d z [ l ] = y ^ − y dz^{[l]}=ŷ-y dz[l]=y^y

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/194609.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA SpringBoot和HTML美食网站博客程序设计

摘要 美食网站是一个提供各种美食信息和食谱的网站,旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及,越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能&…

SpringBoot配置数据库密码加密的方法

由于系统安全的考虑,配置文件中不能出现明文密码的问题,本文就给大家详细介绍下springboot配置数据库密码加密的方法,下面话不多说了,来一起看看详细的介绍吧,需要的朋友可以参考下 1.导入依赖 <!--数据库密码加密--> <dependency><groupId>com.github.uli…

17. Series.dt.month-提取日期数据中的月份信息

【目录】 文章目录 17. Series.dt.month-提取日期数据中的月份信息1. 知识回顾-创建一个Series对象2. 知识回顾-pd.to_datetime()将数据转换为pandas中的日期时间格式3. 实例化类相关知识4. Series.dt.month是什么&#xff1f;5. 如何使用Series.dt.month&#xff1f;6. Series…

iApp祁天社区UI成品源码 功能齐全的社区应用

iApp祁天社区UI成品源码是一个非常实用的资源&#xff0c;提供了完整的源代码&#xff0c;可以帮助您快速搭建一个功能齐全的社区应用。 这个源码具有丰富的UI设计&#xff0c;经过精心调整和优化&#xff0c;确保用户体验流畅而舒适。它不仅具备基本的社区功能&#xff0c;如…

轮播图(多个一起轮播)

效果图 class MainActivity : Activity(), Runnable {private lateinit var viewPager: ViewPagerprivate lateinit var bannerAdapter: BannerAdapterprivate val images ArrayList<Int>() // 存储图片资源的列表private val handler Handler() // 用于定时发送消息…

基于 selenium 实现网站图片采集

写在前面 有小伙伴选题&#xff0c;简单整理理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是不完整的&#xff0c;是人的逃避方式&#xff0c;是对…

基于SSM的学生疫情信息管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Ubuntu 22.04 LTS ffmpeg mp4 gif 添加图片水印

ffmpeg编译安装6.0.1&#xff0c;参考 Ubuntu 20.04 LTS ffmpeg gif mp4 互转 许编译安装ffmpeg &#xff1b;解决gif转mp4转换后无法播放问题-CSDN博客 准备一个logo MP4添加水印 ffmpeg -i 2.mp4 -vf "movielogo.png[watermark];[in][watermark]overlayx10:y10[out]&…

大功率电源芯片WD5030L

电源管理芯片作为现代电子设备中最关键的元件之一&#xff0c;直接影响着设备的性能和效率。而大功率电源芯片作为电源管理芯片中的一种&#xff0c;其性能和应用领域更加广泛。本文将介绍一款具有宽VIN输入范围、高效率和多种优良性能的大功率电源芯片WD5030L&#xff0c;并探…

通付盾Web3专题 | KYT/AML:Web3合规展业的必要条件

与传统证券一样&#xff0c;基于区块链技术发展出来的虚拟资产交易所经历了快速发展而缺乏有效监管的行业早期。除了科技光环加持的各种区块链项目方、造富神话之外&#xff0c;交易所遭到黑客攻击、内部偷窃作恶、甚至经营主体异常而致使投资人血本无归的案例亦令人触目惊心。…

STM32 I2C详解

STM32 I2C详解 I2C简介 I2C&#xff08;Inter IC Bus&#xff09;是由Philips公司开发的一种通用数据总线 两根通信线&#xff1a; SCL&#xff08;Serial Clock&#xff09;串行时钟线&#xff0c;使用同步的时序&#xff0c;降低对硬件的依赖&#xff0c;同时同步的时序稳定…

udp多点通信-广播-组播

单播 每次只有两个实体相互通信&#xff0c;发送端和接收端都是唯一确定的。 广播 主机之间的一对多的通信所有的主机都可以接收到广播消息(不管你是否需要)广播禁止穿过路由器&#xff08;只能做局域网通信&#xff09;只有UDP可以广播广播地址 有效网络号全是1的主机号 192.1…

酷开系统 酷开科技,将家庭娱乐推向新高潮

在当今数字化时代&#xff0c;家庭娱乐已经成为人们日常生活中不可或缺的一部分。如果你厌倦了传统的家庭娱乐方式&#xff0c;想要一种全新的、充满惊喜的娱乐体验&#xff0c;那么&#xff0c;不妨进入到酷开科技的世界&#xff0c;作为智能电视行业领军企业&#xff0c;酷开…

Dubbo协议详解

前言特点应用场景Dubbo协议示例Dubbo协议的不足拓展 前言 Dubbo协议是一种高性能、轻量级的开源RPC框架&#xff0c;主要设计目的是解决分布式系统中服务调用的一些常见问题&#xff0c;例如服务负载均衡、服务注册中心、服务的远程调用等。它支持多种语言&#xff0c;例如Jav…

Day10—SQL那些事(特殊场景的查询)

文章目录 1、只想查一个字段却不得不左连接好多张表2、左连接的时候只想取最后一条数据 1、只想查一个字段却不得不左连接好多张表 只想查一个字段却不得不左连接好多张表&#xff0c;而且因为左连接的表太多还导致查出来的数据重复 原先的sql SELECTsph.po_num,chh.visa_ex…

向量以及矩阵

0.前言 好了那我们新的征程也即将开始&#xff0c;那么在此呢我也先啰嗦两句&#xff0c;本篇文章介绍数学基础的部分&#xff0c;因为个人精力有限我不可能没一字一句都讲得非常清楚明白&#xff0c;像矩阵乘法之类的一些基础知识我都是默认你会了&#xff08;还不会的同学推…

Nas搭建webdav服务器并同步Zotero科研文献

无需云盘&#xff0c;不限流量实现Zotero跨平台同步&#xff1a;内网穿透私有WebDAV服务器 文章目录 无需云盘&#xff0c;不限流量实现Zotero跨平台同步&#xff1a;内网穿透私有WebDAV服务器一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zote…

认识Tomcat

文章目录 什么是tomcat&#xff1f;tomcat的使用tomcat的下载tomcat的目录结构tomcat的启动在tomcat上部署页面通过浏览器访问部署的页面 学习servlet的原因 什么是tomcat&#xff1f; 盖棺定论&#xff1a;Tomcat是一个HTTP服务器。 我们接下来要长期学习的东西都是关于前后…

Python框架篇(2):FastApi-参数接收和验证

提示: 如果想获取文章中具体的代码信息&#xff0c;可在微信搜索【猿码记】回复 【fastapi】即可。 1.参数接收 1.1 路径参数(不推荐) 1.代码清单 在app/router下&#xff0c;新增demo_router.py文件,内容如下: from fastapi import APIRouterrouter APIRouter( prefix&qu…

SpringCloud微服务:Nacos的集群、负载均衡、环境隔离

目录 集群 在user-service的yml文件配置集群 启动服务 负载均衡 order-service配置集群 设置负载均衡 当本地集群的服务挂掉时 访问权重 环境隔离 1、Nacos服务分级存储模型 一级是服务&#xff0c;例如userservice 二级是集群&#xff0c;例如杭州或上海 …