本文主要是介绍Mxnet (25): 优化算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于深度学习问题,通常是先定义损失函数,获得损失之后在通过优化函数尽量减小损失,大多数的优化算法都是涉及最小化。要最大化也很简单只需要在目标上取反即可。
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()).Tdef 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, y=-
这篇关于Mxnet (25): 优化算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!