深度学习花书学习笔记 第四章 数值计算

上溢和下溢:

由于舍入带来的误差,导致参数为0或者无穷大,使得无法运算。这个一般会通过加上一些项使得分母不为0来解决。通常基础库都已经帮我们解决了,自己做的时候要注意。

病态条件:

输入的轻微变动导致输出的大幅变换。

基于梯度的优化方法:

目标函数=准则

误差函数=代价函数=损失函数

梯度下降:向导数的反方向移动一步来减小f(x)。

驻点:导数为0的点。

鞍点:导数为0但是不是极值。

深度学习通常都找不到最大或最小值,只要能满足要求即可。

梯度:针对多维输入函数,各个变量的偏导数,组成的向量。

二阶导数组成的矩阵:hessian矩阵(实对称矩阵,因为计算顺序可调换 )

二阶导数可以反映曲率的变化。计算时算子顺序可变。、

牛顿法:相对梯度下降一次次下降,牛顿法直接求出最值。但是hessian矩阵运算较大,一般采用拟牛顿法。

仅使用梯度信息的为一阶优化算法,使用Hessian矩阵的为二阶优化算法。

Lipschitz连续:没有突然很大的变化。微小的输入变化,输出变化也不大。

凸优化:只对凸函数有用,极值就是最值。

约束优化:

在定义域中的子集找寻最值。

KKT方法:针对优化约束的通用解决方案,将约束问题转化为无约束问题。SVM中用到了。

     引入广义lagrange函数:

     L(x,\lambda ,\alpha ) = f(x) + \sum \lambda _{i}g^{(i)}(x) + \sum \alpha _{j}h^{(j)}(x)

     其中:\lambda\alpha为KKT乘子。原有约束集合S表示为:S = {\left \{ x|\forall i, g^{(i)}(x) = 0 and \forall j,h^{(j)}(x)\leq 0} \right \}

实例:线性最小二乘通过多种方式求最值。

猜你喜欢

转载自blog.csdn.net/liutianheng654/article/details/82834095