14

深度学习中的数值计算

 4 years ago
source link: http://www.cnblogs.com/renyuzhuo/p/12591193.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
  • 本文首发自公众号: RAIS

前言

本系列文章为 《Deep Learning》 读书笔记,可以参看原书一起阅读,效果更佳。

数值计算

机器学习算法需要大量的数字计算,并且这些计算包含有一些迭代拟合的过程,在这个计算过程中,由于计算机的局限,无法完全精确的表示,因此总是存在误差的,小的误差经过迭代次数的增多,或者多个误差的叠加,甚至会使得算法不可用,系统失效。

上溢和下溢

  • 下溢:在现有的精度无法表示那么小的数的时候,接近零的数四舍五入为零时,会发生下溢。
  • 上溢:在现有的精度无法表示那么大的数的时候,数过大被近似为无限大的时候,会发生上溢。

解决办法:softmax 函数,也称 归一化指数函数 ,是逻辑函数的一种推广,将任意实数的 K 维向量映射到另外一个 K 维空间内,使得每一个元素都在 (0, 1) 之间。这里的 归一化 与之前在房价预测中提到的 标准化 不是一个概念(标准化对数据进行某种非线性变换,使其服从某一种分布,归一化对数值的范围进行缩放,不改变数据分布的一种线性变换)。

\[softmax(x)_i=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}} \]

病态条件(poor conditioning)

这个词我觉得翻译不准确,但是大家都喜欢这么叫暂且先这么叫吧。一般来说这个概念针对的是方程组或矩阵,微小的扰动让方程组的解发生巨大的变化,这样的方程组称为病态方程组,他们的系数组成的矩阵叫病态矩阵。

与之相关的还有一个概念叫 条件数 :函数相对于输入的微小变化而变化的程度,可以理解为一种敏感度。计算方法是求矩阵极大和极小特征值之比。

\[\max_{i,j}=|\frac{\lambda_i}{\lambda_j}| \]

基于梯度的优化方法

这个概念要分几步去理解。对于深度学习算法,往往会定义出很多函数,针对具体的问题,我们往往需要让某些函数的函数值尽可能的小或大,求最大值极值,我们往往求导(针对多个变量,这里的求导包括求偏导和方向导数),也会求梯度。 梯度下降 指的是往梯度方向相反方向移动一个小距离来减小函数值的方法。这里还有极小值、极大值、驻点、最大值、最小值等概念,不再赘述。

雅可比矩阵(Jacobian)

在向量分析中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,它的重要性是体现了一个可微分方程与给出点的最优线性逼近。

\[J_{i,j}=\frac{\partial}{\partial x_j}f(x)_i \]

海森矩阵(Hessian)

函数有多维输入时,二维导数有很多,将其合为一个矩阵,就是海森矩阵,等价于梯度的雅可比矩阵。

\[H(f)(x)_{i,j}=\frac{\partial^2}{\partial x_i\partial x_j}f(x)=H(f)(x)_{j,i} \]

一个点在每个方向上的二阶导数是不同的,海森的条件数衡量这些二阶导数的变化范围,当海森的条件数变得很差时,梯度下降法也会表现得很差,在 牛顿法 中,我们用海森矩阵指导搜索,来解决上面这个问题。

  • 二阶导数测试:一阶导数等于 0,二阶导数大于零是一个极小值点;一阶导数等于 0,二阶导数小于零是一个极大值。
  • 仅使用梯度信息的优化算法称为 一阶优化算法 ,使用海森矩阵的优化算法称为 二阶优化算法

总结

这一部分的内容涉及东西比较多,书中的内容还包括一些推导和解释,看上文看的不是很清楚的请阅读原书,那就不是我的笔力所能讲清楚的了。

到此本书中关于应用数学相关的内容就结束了,想要放弃了吗?

  • 本文首发自公众号: RAIS

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK