3.30学习日志

数值稳定性

神经网络的梯度

t表示层,h^t是隐藏层,y是要优化的目标函数,不是预测还包括了损失函数

损失函数l关于参数Wt的梯度:由链式法则,损失函数l关于最后一层隐藏层求导*最后一层隐藏层对倒数第二层隐藏层求导*……

所有的h都是向量,向量关于向量的导数是矩阵,因此会出现(d-t)次矩阵乘法

这样的矩阵乘法会带来两个问题:梯度爆炸和梯度消失

举个例子:(梯度爆炸)

创建对角矩阵:当 diag 函数应用于一个向量时,它会生成一个以该向量为主对角线元素的对角矩阵,其他位置为零。

 

因为relu会出现0和1两种结果,所以一些元素会来自。。。

假设每个W的值都会大于1,累乘之后就会得到很大的值

e.g.梯度过大---学习率变化大,原参数-梯度乘学习率后,新的参数值会波动较大----如果参数更新过程中连续几次都以过大的步长更新,参数值可能会变得异常大,导致数值上的不稳定。这种“爆炸”效应可以迅速放大,使得参数值达到非常大的正值或负值-----如果网络中有大的参数值,它们在链式法则中相乘时会导致更大的梯度值

梯度消失:如果输入值大一些,sigmoid导数值就趋近于0,梯度计算就会变成极小数的累乘

 

对于底部尤为严重:梯度是反传的,顶部的梯度还会是正常,多层累乘过后,梯度就趋近于零

神经网络无法更深,和浅层神经网络无差别

总结:当数值(权重)过大或者过小都会导致问题

让训练更加稳定

梯度归一化:将梯度控制在均值为0,方差为1的正态分布里(控制范围)

梯度裁剪:强行把梯度减在一个范围里,比如如果梯度大于上限,就让梯度等于上限

合理的权重初始和激活函数

将每层的输出和梯度都看做随机变量,并且他们的均值和方差都保持一致,这样无论层数深度,数值都会在一定的范围内

权重初始化

在合理值区间内随机初始函数

如果在数值大的地方初始化数据,梯度就会很大

如果在最优解(较小)的地方,梯度会小

使用N(0,0.01)可能对小网络没问题,但不能保证深度神经网络

例子:MLP

假设权重是i.i.d 独立同分布

  1. 独立(Independent):每个随机变量的取值不受其他随机变量取值的影响。也就是说,任意一个变量的出现都不会改变其他变量出现概率的大小。

  2. 同分布(Identically Distributed):这些随机变量有着相同的概率分布。这意味着它们具有相同的概率密度函数(连续变量的情况)或概率质量函数(离散变量的情况),以及相同的期望值、方差等统计性质。

当前层的输入和当前层的权重也是独立的

 

 假设要求输入的方差和输出的方差一致,就可以得到。。。

Xavier初始

n t-1是输入的维度,n t是输出的维度(个数),两者相等太过困难

Xavier就是折中一下取平均值为1

当输入和输出的维度有差别时,适配权重形状变换

假设线性的激活函数(理论分析,真正不可行)

式子1:已知输入h t-1的均值已经是0,输出的导数均值就是0,α*0=0,因此β=0

式子2:希望激活函数不改变输入和输出的方差,两者依然相等,因此α=1

反向同理

 

调整前的sigmoid的不符合零点 

总结:合理的权重初始值和激活函数的选取可以提升数值稳定性

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

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

相关文章

全排列问题(输入整数N,生成从1~N所有整数的全排列)

【问题描述】输入整数N( 1 < N < 10 )&#xff0c;生成从1~N所有整数的全排列。 【输入形式】输入整数N。 【输出形式】输出有N!行&#xff0c;每行都是从1~N所有整数的一个全排列&#xff0c;各整数之间以空格分隔。各行上的全排列不重复。输出各行遵循"小数优先&q…

sql注入---Union注入

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 学习目标 了解union注入过程中用到的关键数据库&#xff0c;数据表&#xff0c;数据列sql查询中group_concat的作用使用union注入拿到靶机中数据库里的所有用户名和密码 一. 获得数据库表名和列…

电脑win10系统更新后开机很慢,更新win10后电脑开机怎么变慢了

很多用户反映&#xff0c;更新win10后电脑开机怎么变慢了呢?现在动不动就要30几秒&#xff0c;以前都是秒开机的&#xff0c;要怎么设置才能提高开机速度?小伙伴们别着急&#xff0c;主要原因可能是关机设置中没有勾选启用快速启动&#xff0c;或者是开机启动设置的问题&…

【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

【数据结构】非线性结构---二叉树

1、树 1.1 树的相关概念 节点的度&#xff1a;一个节点含有的子树的个数称为该节点的度&#xff1b; 如上图&#xff1a;A的为6 叶节点或终端节点&#xff1a;度为0的节点称为叶节点&#xff1b; 如上图&#xff1a;B、C、H、I...等节点为叶节点 非终端节点或分支节点&#…

AJAX —— 学习(一)

目录 一、原生 AJAX &#xff08;一&#xff09;AJAX 介绍 1.理解 2.作用 3.最大的优势 4.应用例子 &#xff08;二&#xff09;XML 介绍 1.理解 2.作用 &#xff08;三&#xff09;AJAX 的特点 1.优点 2.缺点 二、HTTP 协议 &#xff08;一&#xff09;HTTP 介…

Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介

Unix网络编程是针对类Unix操作系统&#xff08;包括Linux、BSD以及其他遵循POSIX标准的操作系统&#xff09;进行网络通信开发的技术领域。网络编程涉及创建和管理网络连接、交换数据以及处理不同层次网络协议栈上的各种网络事件。在Unix环境中&#xff0c;网络编程通常涉及到以…

flutter官方案例context_menus【搭建与效果查看】【省时】

案例地址 https://github.com/flutter/samples/tree/main/context_menus 1&#xff1a;运行查看有什么可以快捷使用的&#xff0c;更新了些什么&#xff0c;可不可以直接复制粘贴 主要内容&#xff1a;在web端中模拟手机类型的点击长按操作&#xff0c;不能直接运行在安卓与io…

如何查询网站是否被搜索引擎收录

怎么看网站有没有被百度收录 对于网站所有者来说&#xff0c;了解自己的网站是否被百度搜索引擎收录是非常重要的。只有被收录&#xff0c;网站才能在百度搜索结果中展现&#xff0c;从而获取流量和曝光。下面介绍几种方法&#xff0c;让您快速了解自己的网站是否被百度收录。…

前端、后端上传文件到OSS,简明记录

前端、后端上传文件到OSS&#xff0c;简明记录 上传文件到oss的方式&#xff1a; **后端上传&#xff1a;**文件先要从页面上传到后端存起来&#xff0c;再通过后端发送到oss&#xff0c;然后后端将存起来的文件删除&#xff08;当然可以不删&#xff09;。 **前端上传&…

【C语言进阶】- 内存函数

内存函数 1.1 内存函数的使用1.2 memcpy函数的使用1.3 memcpy函数的模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现2.3 memcmp函数的使用2.4 memset函数的使用 1.1 内存函数的使用 内存函数就是对内存中的数据进行操作的函数 1.2 memcpy函数的使用 void* memcpy ( …

基于PID的车辆ABS建模与仿真

汽车防抱制动系统&#xff08; anti-lock brake system ,ABS &#xff09;已成为汽车的标准配置。 汽车常规制动系统在制动时&#xff0c; 随着制动力的逐步加大&#xff0c; 车轮可能出现抱死的情况&#xff0c;即失去转动而只在地面上滑动&#xff0c;从而使车辆失去方向操纵…