深度学习笔记(3)数值计算
1.上溢和下溢
(1)舍入误差:指运算得到的近似值和精确值之间的差异。如果在一系列运算中的一步或者几步产生了舍入误差,在某些情况下,误差会随着运算次数增加而积累得很大,最终得出没有意义的运算结果。
(2)下溢
当接近0的数被四舍五入为零时发生下溢。若使用此类数作为除数或取其对数时(会产生无穷大的数,进一步计算)可能会返回非数字的结果。
(3)上溢
当大量级的数被近似为∞或-∞时发生上溢。进一步的运算会导致这些无限值变为非数字。
2.病态条件
(1)条件数
反映了函数对于输入的微小变化的敏感程度。
对于方程组Ax=b,其条件数定义为(即对A及A的逆求某一种范数并相乘),反映了矩阵A的变化对解x的影响
(2)病态系统
如果输入的微小变化会使得输出发生巨大变化,输入中预先存在的误差就会被放大,这样的函数就是病态的。
条件数越大,病态问题越严重。
3.基于梯度的优化问题
(1)优化
通常以最小化指代最小化优化问题,而以最小化
指代最大化优化问题
- 目标函数(准则):需要最小化或最大化的函数
- 代价函数(误差函数、损失函数):需要进行的最小化的函数
- 通常使用梯度下降的方法实现函数的最小化,但可能无法找到全局最小点,通常采用近似最小化出代价函数显著低的值
- 临界点(驻点):导数等于0的点。包括极小值点、极大值点、鞍点
(2)多维输入函数的优化
①偏导数:衡量点
处只有
增加时
如何变化
②梯度:是相对于一个向量求导的导数,该导数是一个包含所有偏导数的向量,其第i个元素是f关于
的偏导数。梯度向量指向函数增加最快的方向。
临界点是梯度中所有元素多为零的点
③方向导数:函数f在(单位向量)方向的方向导数是函数f在
方向的斜率,就是函数
在
时的导数,即
④二阶导数:可以体现函数在某点的曲率,若二阶导数的值为负,说明该处函数为负曲率(函数表现为向上突出),若二阶导数的值为正,说明该处函数为正曲率(函数表现为向下突出)
⑤最速下降法(梯度下降)
a.推导过程
函数f在点处关于方向
的方向导数为
(其中
为单位向量,按点乘公式展开,
为
与梯度方向的夹角),又因为当函数在某点处的梯度为一确定向量,因此
即当沿着梯度方向时方向导数最大,函数增长速度最快。为了使函数减小最快,则需要沿着函数的负梯度方向前进,则有更新点的公式(其中
为学习率,是一个确定步长大小的正标量)
b.最速下降法在梯度的每一个元素为零时收敛
c.最速下降法只适用于连续空间中的优化算法,离散空间的优化可以使用爬山法
(3)Jacobian矩阵和Hessian矩阵
①Jacobian矩阵
对于函数(这个函数由m个实函数构成,即
,…,
,也可以将函数的输入看为m维向量,输出看为n维向量),f的Jacobian矩阵
定义为
(其中i表示第i个实函数,j表示输入的第j个元素)
若是
中的一点,F在
点可微,
即F在点
处的导数。若点
距离点
足够近,则F在其附近的最优线性逼近可以表示为
② Hessian矩阵
对于函数,其Hessian矩阵
定义为
(其中i表示输入的第i个元素,j表示输入的第j个元素)
Hessian矩阵等价于梯度的Jacobian矩阵(对于一个实函数,其梯度为
,Hessian矩阵是
到
的Jacobian矩阵)
a.微分算子在任何二阶偏导连续的点处可交换,因此i,即Hessian矩阵是实对称的,因此可将其分解为一组实特征值和一组正交的特征向量(实对称矩阵不同的特征值的特征向量是正交的)。其最大特征值确定最大二阶导数,最小特征值确定最小二阶导数。
b.多元函数f在某个方向上的二阶导数可以写成
。当
为H的一个特征向量时,该特征向量对应的特征值即为该方向二阶导数的值。
推导过程:由于是H的特征向量所以有
,所以有
c.当不是H的特征向量时,
(即该方向的二阶导数)的值是H的所有特征值的加权平均值(特征值对应特征向量与
的夹角越小的特征值权重越大,因此当
为特征向量时可看做特殊情况,即
与某一特征向量夹角为0,该特征向量对应权重为1,其余特征值对应权重均为0)
d.使用二阶导数预期梯度下降的表现
函数在
处的近似二阶泰勒级数为
(其中是梯度,H是
的hessian矩阵)
使用学习率对输入进行更新,可得
(其中第一项为函数的原始值、第二项为函数斜率导致的预期改善、第三项为函数曲率导致的矫正)
Hessian矩阵的特征值决定了学习率的量级
e.在临界点处通过Hessian的特征值来判断临界点是局部极大点、局部极小点还是鞍点。当Hessian矩阵是正定的(所有特征值都为正),该临界点是一个局部极小点;当Hessian矩阵是负定的,该临界点是一个局部极小点;当Hessian矩阵的特征值有正有负,说明该点在某些横截面是局部极小点,在某些横截面是局部极大点(鞍点);当Hessian矩阵特征值同号且有部分为0时,该临界点性质不能确定。
f.某个点的Hessian矩阵的条件数可以衡量该点各个方向上二阶导数的变化范围,当条件数很大时,难以选择合适的步长。
g.使用Hessian矩阵的信息来指导搜索——牛顿法
(参考https://blog.csdn.net/xbinworld/article/details/79113218?ref=myread)
通过迭代下式可求得函数的临界点
仅使用梯度信息的优化算法被称为一阶优化算法,如梯度下降;使用Hessian矩阵的优化算法被称为二阶最优化算法,如牛顿法
③对函数添加限制以得到好的特性
a.限制函数满足Lipschitz连续或其导数Lipschitz连续可以认为梯度下降等算法导致的输入的微小变化对应输出也只会产生微小变化
b.凸优化:只适用于凸函数(即Hessian矩阵处处半正定的函数),凸优化保证函数没有鞍点并且所有局部极小点必然是全局最小点
4.约束优化
不是十分理解,等再补充一点知识后回来补T T
深度学习笔记(3)数值计算相关推荐
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)
<繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)
好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...
- 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)
<繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...
- 黄海广博士的机器学习个人笔记及深度学习笔记
想要下载黄海广博士的机器学习个人笔记及深度学习笔记的请复制下面链接 https://download.csdn.net/download/wgllovemother/10447758 备注:有想下载 ...
- UFLDL深度学习笔记 (三)无监督特征学习
UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...
- oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一
8.Oracle深度学习笔记--BUFFER CACHE深入一 最近项目一直和ORACLE死磕,感觉总是找不到出口,只能多看书少说话了. 先记录多少是多少吧! BUFFER CACHE在ORACLE的 ...
最新文章
- 在leangoo里怎么设置看板周期,过滤看板数据?
- 孩子不是笨,他和“最强大脑”差的是这个!
- 设置窗口的光标,设置ToolBar,设置状态栏
- Weblogic Session复制策略与方式
- 30 PP配置-生产车间控制-定义计划策略
- 5.Docker之镜像的使用
- 数据结构和算法详解(二)——线性表(数组、链表、栈、队列)
- Matlab意识流速成班
- 026 模块3-random库的使用
- 微信小程序人脸识别java_微信小程序使用face++实现人脸识别登录注册
- 【Python案例】一键自动抠图生成证件照
- Can‘t connect to any repository: http://gitee.com/user.rame/java.git
- linux字体文件路径,Linux下安装字体
- 7. 丈母娘嫌我不懂K8s的Service概念,让我去面壁
- 飞书第三方ISV服务商应用开发及上架教程
- 想了解真实的中国历史吗?建议看看这10部历史纪录片,受益终生!
- 小程序博客(云开发)
- Django Vue渲染动态数据(七)
- Howland电流源输入输出关系
- 无线城域网 WiMax 仿真实验
热门文章
- ssoj2503: ZCC loves meat(meat)
- SWIFT推出快速、高性价比的小额跨境支付服务:SWIFT Go
- 前端提高篇(101):jQuery高级方法:extend使用
- console口有几个vlan_麻烦大家给我解释一下交换机什么是console口,aux口,vty口,三个口的作用和区别...
- 硬核!Java 实现数据动态插入,生成 PDF、EXECL,完美导出功能!
- 运放专题:运放输入失调电压
- 【报错】UnboundLocalError: local variable ‘XXX‘ referenced before assignment解决办法
- 【高级篇 / System】(7.0) ❀ 03. 最外端准备一个可划VLAN的二层交换机 ❀ FortiGate 防火墙
- 安森美推出超快恢复二极管 整流器SURS8320T3G 3A200V 广泛应用于各种高频逆变器件
- Mac技巧:如何修复不起作用的复制粘贴