深度学习 --- stanford cs231学习笔记六(训练神经网络之权重的初始化与批归一化)

权重矩阵的初始化与批归一化

3,权重矩阵的初始化

        深度学习所学习的重点就是要根据损失函数训练权重矩阵中的系数。即便如此,权重函数也不能为空,总是需要初始化为某个值。


3,1 全都初始化为同一个常数可以吗?

        首先要简单回顾一下隐含层中的神经元,他是由权重矩阵中的每行系数与输入x的乘积后接一个非线性函数决定的。 W有多少行,隐藏层就有多少个神经元。

        因此,当矩阵权重W中的所有元素都是同一个常数时,所有神经元的计算结果不论是在前向传播的过程中,还是在反向传播的过程中计算结果都是一样的。如此一来,隐藏层所有的神经元的功效都废了,变成了只有一个神经元。

        例如,把W的所有元素都初始化为0。不论有多少个神经元,那么前向传播的计算结果都是0,反向传播的结果都相同。


 3,2 把W初始化为一组小的随机数

        下面是一个6层的神经网络,有5个隐含层,每层都有4096个神经元。 

        

        在初始化的时候把权重矩阵W初始化为均值为0标准差为1的随机数,并且让这组数统一乘以一个很小的数。使用的激活函数为tanh,每层的计算结果也就是神经元的值,保存在hs中。

下图为每一层神经元值的分布: 

        可见随着神经网络的深度越来越深,越来越多的神经元的值为0。

对于第i层而言,前向传播的公式为:

x_{i}=tanh(x_{i-1}\cdot W_{i})

        其中x_{i}表示第i层的神经元。结合上面的结果来看,当前向传播到很深层的网络后,深层的神经元就全是死神经元了。 

此外,在反向传播时,关于第i层的权重W的本地梯度为:

\frac{\partial x_{i}}{\partial W_{i}}=\frac{\partial x_{i}}{\partial tanh(x_{i-1}\cdot W_{i})}\cdot \frac{\partial (x_{i-1}\cdot W_{i})}{\partial W_{i}}=(1-tanh(x_{i-1}\cdot W_{i})^{2})\cdot x_{i-1}

        因此,当深层网络神经元的值(也就是上面公式中的x_{i-1})很多都是0或者趋近于0后,梯度最终会趋于0,即,梯度消失。也就是说, 把W初始化为一组小的随机数是行不通的


 3,3 把W初始化为一组不太小的随机数

         既然乘以0.01不行,容易出现梯度消失,何不试一试乘以0.05呢?同样是6层网络,每层同样是4096个神经元,同样是用tanh为激活函数。

         结合每层神经元值的分布来看,出现1和-1的概率比较高。 

\frac{\partial x_{i}}{\partial W_{i}}=\frac{\partial x_{i}}{\partial tanh(x_{i-1}\cdot W_{i})}\cdot \frac{\partial (x_{i-1}\cdot W_{i})}{\partial W_{i}}=(1-tanh(x_{i-1}\cdot W_{i})^{2})\cdot x_{i-1}

        结合本地梯度来看,容易让1-tanh(x*w)^2为0,即,本地梯度为0。 


 3,4 如果依然要用随机数,缩放的比例是多少才合适呢?Xavier

        同样是6层网络,每层同样是4096个神经元,同样是用tanh为激活函数。所不同的是,之前是通过手动调整缩放系数观察神经元值的分布。现在是基于输入的尺寸,自适应的选择缩放系数。这种初始化的方法被称之为Xavier初始化。他有严格的数学证明,其目的是使得每层神经网络在前向传播和反向传播过程中保持输出的方差一致。

        计算结果如下图所示,经过xavier初始化后,所有隐藏层的神经元即不会集中在0附近,也不会徘徊于+-1两端。(对于tanh激活函数而言)


3,5 Kaiming初始化/He初始化

        上面提到的Xavier初始化,对于激活函数为tanh的网络是适用的,表现结果也比较好。但当激活函数为ReLU的网络中,依然会出现梯度消失的情况。这是ReLU函数自身天然决定的。

        为了克服这个问题何凯明发明了一种适合ReLU函数的初始化方式。采用kaiming初始化后的后的直方图会分散的更加均匀,而不是集中在0附近。


4, 批归一化(Batch Normalization)

        前面讲的初始化权重函数W,其主要目的是通过慎重的选择权重函数W的初值以避免神经元值要么产生大量的0值,要么集中在+-1。最好能保证神经元值的分布能够尽可能的均等,具体来说,每层神经元值(激活函数的输出)的分布应该尽量朝着以下这些特点努力:

1,0均值。即正负值出现的频次都有,且差不多相同。

2,适当的方差。因为如果方差太大,容易出现梯度爆炸,而方差太小,就会引起梯度消失。Xavier初始化和He初始化就是为了确保每层的激活值方差适当而设计的。


4,1 批归一化的处理对象与维度

        为了达到这一目的,相对于尝试不同初始化W的方法。Batch normalization则着重于处理全连接层的计算结果,也就是对线性变换的输出做二次处理,即对W_{i}x_{i}+b_{i}进行再处理。

        在下面的这张ppt中,我们看到输入x的维度是NxD,也就是全连接层输出的维度。要搞清楚每个维度代表什么,这里我们可以稍微先回顾一下全连接层。 

         下图为神经网络中的一张PPT,如果说batch normalization中的输入x是W_{i}x_{i}+b_{i}的话,那他的维度就应该等于这里h的维度。h的维度又是由W的其中一个维度决定,他的另一个维度等于前一层的输入。如果是单张图像则输入x的维度为Dx1,W为HxD,输出h的维度为H,H就是神经元的个数。如果输入是N张图,则输入x的维度为DxN,W为HxD,输出h的维度为HxN。

        这也就是说,在batch normalization的PPT中维度是NxD的输入x,其中N表示样本数,D表示神经元的个数


  4,2 批归一化具体的处理方式

        Batch normalization的做法和前面提过的data preprocessing很像,即,数据减去均值然后再除以标准差(虽然确实存在一些差异)。只不过data preprocessing的对象是最原始的输入数据,而Batch normalization,也叫BN层,是放在全连接层和激活函数之间的。

        与data preprocessing处理数据的不同之处是,除了下图中的第一步完全一样之外。Batch normalization的不同之处在下面图中的第二步中。首先,在除以标准差的时候,为了避免除0,所除的标准差会加上一个很小的数\varepsilon。此外,在减去均值再除以标准差之后,又要再经过一个以\gamma为缩放以\beta为偏置的线性化处理。


 4,2,1 全连接层FC的Batch Normalization

        对于全连接层FC而言,在batch normalization的PPT中输入x的维度是NxD,其中N表示样本数,D表示神经元的个数Batch normalization的处理是对N个样本求均值


 4,2,2 CNN卷积层的Batch Normalization 

        对于CNN的卷积层而言,若,输入图像的维度是CinxWxH,共N张图,即NxCxWxH。filter的维度是CinxKwxKh,总共有Cout个filter,即CoutxCinxKwxKh。则输出结果的维度是NxCoutxW'xH'(即下图中输入x的维度)Batch normalization的处理是对N个WxH的样本求均值: 


4,2,3 全连接层FC的Layer Normalization

        除了Batch normalization以外,类似的,还有一个变种叫Layer Normalization。对于全连接层FC而言,输入x的维度是NxD,其中N表示样本数,D表示神经元的个数Layer normalization的处理是对D个神经元求均值


 4,2,4 CNN卷积层的Instance Normalization

        对于CNN的卷积层而言,若,输入图像的维度是CinxWxH,共N张图,即NxCxWxH。filter的维度是CinxKwxKh,总共有Cout个filter,即CoutxCinxKwxKh。则输出结果的维度是NxCoutxW'xH'Instance Normalization的处理是对WxH的样本求均值: 


(全文完) 

--- 作者,松下J27

 参考文献(鸣谢): 

1,Stanford University CS231n: Deep Learning for Computer Vision

2,训练神经网络(第一部分)_哔哩哔哩_bilibili

3,10 Training Neural Networks I_哔哩哔哩_bilibili

4,Schedule | EECS 498-007 / 598-005: Deep Learning for Computer Vision 

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英飞凌TC3xx之DMA工作原理及应用实例

英飞凌TC3xx之DMA工作原理及应用实例 1 DMA的架构2 必要的术语解释3 DMA请求3.1 DMA软件请求3.2 DMA硬件请求3.3 DMA 菊花链请求3.4 DMA自动启动请求3.5 总结4 小结DMA是直接存储访问Direct Memory Access的简称。它的唯一职能就是在不需要CPU参与的情况下,将数据从源地址搬运…

go Channel原理 (二)

Channel 设计原理 不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存。 在主流编程语言中,多个线程传递数据的方式一般都是共享内存。 Go 可以使用共享内存加互斥锁进行通信,同时也提供了一种不同的并发模型,即通…

复兴社:凝聚多方力量,共促乡村繁荣

复兴社自成立以来,始终肩负着推动全国经济发展、实现共同富裕的重任。乡村振兴作为实现这一目标的重要途径之一,一直是复兴社的工作重点。在李忠平会长的领导下,复兴社通过联合政府、企业和社会各界的资源,共同推进乡村振兴&#…

基于STM32的智能门锁控制系统

目录 引言环境准备智能门锁控制系统基础代码实现:实现智能门锁控制系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:门锁管理与优化问题解决方案与优化收尾与总结 1. 引言 智能门锁控制系统通过使用STM32嵌…

Is ChatGPT a Good Personality Recognizer? A Preliminary Study?

ChatGPT是一个很好的人格识别者吗?初步调研 摘要1 介绍2 背景和相关工作3 实验3.1 数据集3.2 提示策略3.3 基线3.4 评估指标3.5 实现细节3.6 Overall Performance (RQ1)3.7 ChatGPT在人格识别上的公平性 (RQ2)3.8 ChatGPT对下游任务的人格识别能力(RQ3&a…

Java 面试指南合集

JVM 篇 线程篇 springBoot篇 SpringCloud篇 待更新 黑夜无论怎样悠长,白昼总会到来。 此文会一直更新哈 如果你希望成功,当以恒心为良友,以经验为参谋,以当心为兄弟,以希望为哨兵。

行业分析---造车新势力之极氪汽车

1 前言 在之前的博客中,笔者撰写了多篇行业类分析的文章(科技新能源): 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 《行业分析-…

绘图黑系配色

随便看了几篇小论文,里面的黑配色挺喜欢的,虽然平时SCI系配色用的多,但看到纯黑配色与黑加蓝配色,那就是我最心上的最优style。

【JVM】JVM 内存结构

程序计数器 Cpu 要不停的切换执行线程,所以在切换回同一个线程的时候要知道程序执行到哪了,程序计数器(PC 计数器),用来存储指向下一条指令的地址,也就是将要执行的代码。 程序的分支、循环、跳转、异常处…

【论文解读】大模型的有效探索

一、简要介绍 论文提出的证据表明,通过有效地探索收集人类反馈以改进大型语言模型有实质性的好处。在论文的实验中,一个代理依次生成查询,同时拟合一个奖励模型的反馈收到。论文的最佳性能代理使用双汤普森抽样生成查询,其不确定性…

“香港世界”模型问世!颠覆传统SLAM技术,引领复杂定位新纪元!

论文标题: Hong Kong World: Leveraging Structural Regularity for Line-Based SLAM 论文作者: Haoang Li, Ji Zhao, Jean-Charles Bazin, Pyojin Kim, Kyungdon Joo, Zhenjun Zhao, Yun-Hui Liu 导读: 在视觉感知技术中,理解…

力扣 单链表元素删除解析及高频面试题

目录 删除元素的万能方法 构造虚拟头结点来应对删除链表头结点的情况 一、203.移除链表元素 题目 题解 二、19.删除链表中倒数第K个节点 题目 题解 三、 83.删除某个升序链表中的重复元素,使重复的元素都只出现一次 题目 题解 82.删除某个升序链表中的…

玛格家居从深交所转板北交所:营收净利润连年下滑,销售费用大增

《港湾商业观察》施子夫 近日,玛格家居股份有限公司(以下简称,玛格家居)发布公告,重庆证监局已经受理其北交所上市的备案申请,辅导机构为国泰君安证券。 公开信息显示,2022年1月,玛…

DreamView数据流

DreamView数据流 查看DV中界面启动dag,/apollo/modules/dreamview_plus/conf/hmi_modes/pnc.pb.txt可以看到点击界面的planning按钮,后台其实启动的是/apollo/modules/planning/planning_component/dag/planning.dag和/apollo/modules/external_command…

使用网络抓取器进行网络抓取--你需要了解的一切

什么是网页抓取? 网页抓取是一种计算机化过程,用于从网站上收集大量数据。它也常被称为网页数据提取或网页数据抓取。 网页抓取需要两个部分 - 爬虫和抓取器。 爬虫是一种AI算法,通过跟随互联网中的链接来搜索所需的特定数据。抓取器是一种…

Python对象不可哈希?教你几招解决!

目录 1、什么是可哈希?🚀 1.1 哈希基础理论 1.2 可哈希对象定义🔍 示例代码: 1.3 Python中哈希的作用 1.4 哈希表与性能提升📈 应用实例代码: 2、Python中的哈希特性🔑 2.1 不变性与哈希值🔄 示例代码展示: 2.2 实现细节深入探讨📚 深入代码细节:…

小区服务前台小程序的设计

管理员账户功能包括:系统首页,个人中心,住户管理,管理员管理,员工管理,安保管理,安保分配管理,客服聊天管理 微信端账号功能包括:系统首页,公告,…

【传知代码】揭秘AI如何揪出图片中的“李鬼”(论文复现)

在数字化时代,我们时常被各种图像信息所包围。然而,这些图像中有时隐藏着不为人知的秘密——被篡改的文字或图像。这些被篡改的内容可能误导我们的判断,甚至在某些情况下造成严重的后果。幸运的是,随着人工智能(AI&…

免费开源AI生产力工具:内置专属ChatGPT、一键智能处理图片和视频(擦除水印、卡通漫画、无损放大、插值补帧、智能修复、3D转制、上色修复、合成整理)

AI 生产力工具 免费开源,提升用户生产力,保障隐私和数据安全。提供高效便捷的AI解决方案,包括但不限于:内置专属ChatGPT、一键批量智能处理图片和视频等。 主要特点 免费开源:免费使用,源代码开放&#…

使用Nginx反向代理KKFileView遇到问题

使用KKFileView 4.0 以上版本 在KKFileView官网上,关于使用Nginx代理,建议配置如下 一、修改Nacos 在Nginx的conf文件夹中修改 nginx.conf ,新加 红框内的IP地址为代理服务器地址(即安装KKFileView的服务器地址) 二、修改KKFil…