Mxnet (25): 优化算法

本文介绍了深度学习中的优化问题,包括优化目标与深度学习的区别,以及训练误差和泛化误差的不同。文章重点探讨了优化挑战,如局部最小值、鞍点和梯度消失,并通过示例函数解释了这些概念。深度学习模型的目标函数常常含有多个局部最小值,而鞍点可能导致梯度消失。最后,提到了梯度消失在使用特定激活函数(如tanh)时的影响。
摘要由CSDN通过智能技术生成

对于深度学习问题,通常是先定义损失函数,获得损失之后在通过优化函数尽量减小损失,大多数的优化算法都是涉及最小化。要最大化也很简单只需要在目标上取反即可。

1 优化和估算

优化和深度学习本质上目标是不同的。优化的目的是最小化损失,而深度学习是根据提供的数据找到最佳模型。训练误差和泛化误差通常是不同的:优化算法的目标是损失函数,因此其优化的目的是减少训练误差。而深度学习的目的是减少泛化误差。为了实现后者除了优化函数还需要注意过拟合问题。

from d2l import mxnet as d2l
from mxnet import np, npx
import plotly.express as px
import plotly.graph_objs as go
import pandas as pd
npx.set_np()

这里定义两个函数, 期望函数 f f f 以及经验函数 g g g。这里 g g g 不如 f f f平滑因为我们只有有限的数据。

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

def g(x):
    return f(x) + 0.2 * np.cos(5*np.pi*x)

训练误差的最小值和预测误差的最小值不在一个同一个位置。

x = np.arange(0.5, 1.5, 0.01)
df = pd.DataFrame([f(x).tolist(), g(x).tolist()], index=['expected', 'empirical'], columns=x.tolist()).T

def annotations_set():
    return dict(
            xref="x",
            yref="y",
            showarrow=True,
            arrowhead=2,
            arrowwidth=1.5,
            arrowcolor="#636363",
            bordercolor="#c7c7c7",
            borderwidth=2,
            bgcolor="#ff7f0e"
)

fig = px.line(df, width=600, height=380, labels={
   'index':'x', 'value': 'rish'})
fig.add_annotation(x=1.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值