《动手学深度学习》第二十九天---优化和深度学习

局部最小值(local minimum):对于目标函数f(x),f(x)在x上的值比在x邻近的其他点的值更小。
全局最小值(global minimum):f(x)在x上的值是目标函数在整个定义域上的最小值。

import d2lzh as d2l
from mpl_toolkits import mplot3d
import numpy as np


def f(x):
    return x * np.cos(np.pi * x)

d2l.set_figsize((4.5, 2.5))
x = np.arange(-1.0, 2.0, 0.1)   # 第一个参数为起点,第二个参数为终点,第三个参数为步长。其中步长支持小数。
fig, = d2l.plt.plot(x, f(x))  # 逗号表示只取返回列表中的第一个元素
# plt.plot(x,y,format_string,**kwargs) x轴数据,y轴数据,format_string控制曲线的格式字串 
fig.axes.annotate('local minimum', xy=(-0.3, -0.25), xytext=(-0.77, -1.0),
                  arrowprops=dict(arrowstyle='->'))
  #  xy=(横坐标,纵坐标)  箭头尖端    xytext=(横坐标,纵坐标) 文字的坐标,指的是最左边的坐标    arrowprops= {        facecolor= '颜色',        shrink = '数字' <1  收缩箭头    }
fig.axes.annotate('global minimum', xy=(1.1, -0.95), xytext=(0.6, 0.8),
                  arrowprops=dict(arrowstyle='->'))
d2l.plt.xlabel('x')  # 做标签x
d2l.plt.ylabel('f(x)');  #做标签f(x)

如果不作逗号会保存报错:在这里插入图片描述
加上逗号后:
在这里插入图片描述
当一个优化问题的数值解在局部最优解附近时,由于目标函数有关解的梯度接近或变成零,最终迭代求得的数值解可能只令目标函数局部最小化而非全局最小化。

鞍点(saddle point)

x= np.arange(-2.0, 2.0, 0.1)
fig, = d2l.plt.plot(x, x**3)
fig.axes.annotate('saddle point', xy=(0, -0.2), xytext=(-0.52, -5.0),
                  arrowprops=dict(arrowstyle='->'))
d2l.plt.xlabel('x')
d2l.plt.ylabel('f(x)');

在这里插入图片描述

假设一个函数的输入为k维向量,输出为标量,那么它的海森矩阵(Hessian matrix)有k个特征值。该函数在梯度为0的位置上可能是局部最小值、局部最大值或者鞍点。
在这里插入图片描述

  1. 当函数的海森矩阵在梯度为零的位置上的特征值全为正时,该函数得到局部最小值。
  2. 当函数的海森矩阵在梯度为零的位置上的特征值全为负时,该函数得到局部最大值。
  3. 当函数的海森矩阵在梯度为零的位置上的特征值有正有负时,该函数得到鞍点。

随机矩阵理论告诉我们,对于一个大的高斯随机矩阵来说,任一特征值是正或者是负的概率都是0.5。那么,以上第一种情况的概率为0.5^k。由于深度学习模型参数通常都是高维的(k很大),目标函数的鞍点通常比局部最小值更常见。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值