当前位置: 首页 > news >正文

神经网络深度学习(五)初始化

目录

一 神经网络初始化

二 神经网络初始化方法

三 神经网络初始化相关问题

1 什么是神经网络对称性?

2 为什么要用残差连接呢?


一 神经网络初始化

当使用梯度下降法来进行优化网络参数时,参数初始值的选取十分关键,关系到网络的优化效率和泛化能力.不同的参数初始值会收敛到不同的局部最优解.虽然这些局部最优解在训练集上的损失比较接近,但是它们的泛化能力差异很大.一个好的初始值会使得网络收敛到一个泛化能力高的局部最优解。

二 神经网络初始化方法

预训练分类细分方法其他
预训练初始化一个已经在大规模数据上训练过的模型可以提供一个好的参数初始值。
固定值初始化

对于一些特殊的参数,我们可以根据经验用一个特殊的固定值来进行初始化。

比如偏置(Bias)通常用 0 来初始化,但是有时可以设置某些经验值以提高优化效率.在 LSTM 网络的遗忘门中,偏置通常初始化为 1 或2,使得时序上的梯度变大。对于使用ReLU的神经元,有时也可以将偏置设为0.01,使得 ReLU 神经元在训练初期更容易激活,从而获得一定的梯度来进行误差反向传播。

可用来初始化偏置(bias)
随机初始化

固定值初始化会导致网络对称现象。

三类常用的随机初始化方法:基于固定方差的参数初始化、基于方差缩放的参数初始化和正交初始化方法.

基于固定方差的参数初始化

高斯分布初始化使用一个高斯分布N(0, \sigma^2)对每个参数进行随机初始化.
均匀分布初始化

基于方差缩放的参数初始化:

初始化根据每层的神经元数量来自动计算初始化参数方差。均值和方差不偏移

Xavier(Glorot) :

权重与前一层中单元数平方根成反比。

初始化一个深度网络时,为了缓解梯度消失或爆炸问题,我们尽可能保持每个神经元的输入和输出的方差一致,根据神经元的连接数量来自适应地调整初始化分布的方差,这类方法称为方差缩放(Variance Scaling)。Logistic、Tanh

He初始化(Kaiming / msra初始化)

当第l层使用relu激活函数时,通常有一半神经元输出为0,因此其分布的方差也接近使用恒等函数时的一半。

在这里插入图片描述

 其中Ml-1是 l-1层神经元个数

relu

正交初始化

1、 用均值为0、方差为1的高斯分布初始化一个矩阵。
2、将这个矩阵用奇异值分解得到两个正交矩阵,并使用其中一个作为权重矩阵。

根据正交矩阵的性质,这个线性网络在信息的前向传播和反向传播中,都具有范数保持性,从而可以避免在训练时就出现梯度消失和梯度爆炸。

三 神经网络初始化相关问题

1 什么是神经网络对称性?

就导致了网络进入了对称状态,所谓对称就是相对于某层hidden layer来讲,其中的所有neural都是一模一样的,这样我们的网络就不能学到更多的特征了(假想我们的CNN的深层有512个hidden unit,如果这512个单元的值都是一样的,不是白学了么。)

2 为什么要用残差连接呢?

A:因为残差连接打破了网络的对称性/对称状态,提升了网络的表征能力。#

因为随着网络深度的增加,权重矩阵退化,网络退化。每个层中只有少量隐藏单元对不同的输入改变它们的激活值,而大部分的隐藏单元对不同的输入都是相同的反应。
虽然是一个很高维的矩阵,但是大部分维度却没有信息,表达能力没有看起来那么强大,表达能力低。

参考文献: 

深度学习系列三——优化篇之参数初始化,数据预处理,逐层归一化(BN+LN+WN+GN),超参数优化_珞沫的博客-CSDN博客_逐层初始化

相关文章:

  • jvm虚拟机学习一class文件
  • 【编程题】【Scratch四级】2021.12 森林运动会
  • chapter 01 字符串的那些事
  • 给Python漫画分集标题下载工具开发Qt界面
  • 电子学会2022年6月青少年软件编程(图形化)等级考试试卷(二级)答案解析
  • 【Redis实战】生产中使用Redis的一些注意事项
  • 线性代数学习笔记8-3:二次型、合同矩阵、标准型、规范型
  • 06-vue-routers.js的基本使用,路由从定向,router-link代替a标签及样式,路由嵌套,路由动画
  • 【OpenCV】Chapter9.边缘检测与图像分割
  • 5. C# :单选框RadioButton、标签Label、列表框ListBox
  • vmware ubuntu 操作
  • 《linux程序设计》第二章笔记
  • 1. 数据结构基础知识
  • 第一章 绪论
  • 【误码率仿真】基于matlab多径信道下OFDM通信系统误码率仿真【含Matlab源码 2078期】
  • CSS实用技巧干货
  • Joomla 2.x, 3.x useful code cheatsheet
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 后端_ThinkPHP5
  • 缓存与缓冲
  • 机器学习 vs. 深度学习
  • 基于遗传算法的优化问题求解
  • 前端性能优化——回流与重绘
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 手写一个CommonJS打包工具(一)
  • 再次简单明了总结flex布局,一看就懂...
  • 中文输入法与React文本输入框的问题与解决方案
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • # 数据结构
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)Android开发优化---------UI优化
  • (1)STL算法之遍历容器
  • (分布式缓存)Redis持久化
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (十五)使用Nexus创建Maven私服
  • (五)Python 垃圾回收机制
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .form文件_SSM框架文件上传篇
  • .gitignore文件设置了忽略但不生效
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • .skip() 和 .only() 的使用
  • /etc/fstab和/etc/mtab的区别
  • /etc/skel 目录作用
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [emacs] CUA的矩形块操作很给力啊
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [Excel] vlookup函数