站点图标 AI技术聚合

梯度下降法的原理以及python伪代码

梯度下降法

博主的理解:y = w x + b, 如果y和真实差距太大,说明w起作用太大了,这个时候我们利用梯度去控制一下。(浅显理解)

什么是损失函数

用于衡量模型对任何给定数据的性能。损失函数将预测值与期望值之间的误差进行量化,并以单个实数的形式表示出来。整个流程就是,对w进行初始化,然后计算预测值y,接着计算损失函数,为了让损失函数最小,利用梯度下降法对给定w进行参数修正。

那什么是梯度下降法呢

博主的理解:假如你在珠穆朗玛峰上,而你想下到山底,此时的下山的过程就是梯度下降法的流程,山坡的斜率为梯度,每一步的步伐为学习率。梯度下降法是一种求解函数局部极小值的迭代优化算法。

学习率的大小,需要我们谨慎选择:

  • lr太大,可能在谷底震荡
  • lr太小,收敛慢
局部最小值

实际上现实生活中,我们遇到的绝大部分都是非凸问题,也就是存在许多极小值点,lr设置太小很容易陷在极小值点再也出不来了,这就是为什么需要优化器需要动量这个参数了!我们可以借助上一时刻的lr来帮助我们冲出当前极小值区域

梯度下降法python代码实现

def train(X, y, W, B, alpha, max_iters):
	
	dW = 0                      # 梯度
	db = 0
	m = X.shape[0]              # 训练样本第一个数据,这里是拉平的,第一个维度为批次
	for i in range(max_iters):
		dW = 0
		db = 0
		for j in range(m):   # 对每一个标量进行梯度下降法
			W = W - alpha * (dW / m)
			B = B - alpha * (dB / m)
	return W, B

文章出处登录后可见!

已经登录?立即刷新
退出移动版