python 绘制损失函数曲线_从一条曲线谈损失函数优化方法

本文探讨了损失函数在机器学习中的重要性,介绍了如何使用Python绘制损失函数曲线,并详细讲解了随机梯度下降(SGD)、动量SGD、RMSProp和Adam等优化算法的工作原理及其实现,通过实例展示了这些算法如何逐步找到损失函数的最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

损失函数也叫目标函数,他是衡量预测值和实际值的相似程度的指标。我们希望预测值和真实值尽量接近,就需要估计一系列参数来拟合,这个参数集使得误差越小就说明这个算法还不错。一个损失函数有可能存在多个局部最小点,我们就需要至少找到在局部地区的最小值。

找到生成最小值的一组参数的算法被称为优化算法。我们发现随着算法复杂度的增加,则算法倾向于更高效地逼近最小值。我们将在这篇文章中讨论以下算法:随机梯度下降法(批次、随机、mini-batch)

动量算法(物理里面的动量含义)

RMSProp

Adam 算法

随机梯度下降法

随便找一本书介绍 SGD,都会出现这个公式

image

θ是你试图找到最小化 J 的参数,这里的 J 称为目标函数,α叫做学习率。目标函数的来龙去脉可以参考之前的文章。我们先假设θ取一个值,然后不停的修正这个值,从而使得最小化J。可以假设θ是一个山坡上一个点,而最后的导数部分是该点的坡度;学习率就是一个摩擦系数,学习率大就说明摩擦越小。

算法说明

随机梯度下降法:

1、初始化参数(θ,学习率)

2、计算每个θ处的梯度

3、更新参数

4、重复步骤 2 和 3,直到代价值稳定

随便举个例子:

下面是一个目标函数和他的导数

image

用 python 实现这两个曲线import numpy as npimport matplotlib.pyplot as pltdef minimaFunction(theta):

return np.cos(3*np.pi*theta)/thetadef minimaFunctionDerivative(theta):

const1 = 3*np.pi

const2 = const1*theta    return -(const1*np.sin(const2)/theta)-np.cos(const2)/theta**2#从0.1-2.1,步长0.01theta = np.arange(.1,2.1,.01)

Jtheta = minimaFunction(theta)

dJtheta = minimaFunctionDerivative(theta)

plt.plot(theta,Jtheta,'m--',label = r'$J(\theta)$')

plt.plot(theta,dJtheta/30,'g-',label = r'$dJ(\theta)/30$')

plt.legend()

axes = plt.gca()

plt.ylabel(r'$J(\theta),dJ(\theta)/30$')<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值