赞
踩
梯度下降是一种用于寻找函数最小值的优化算法,它在机器学习中广泛用于训练模型,如线性回归、神经网络等
在机器学习中,这通常是损失函数(如均方误差、交叉熵等),我们希望最小化它以训练模型
目标函数相对于每个参数的偏导数向量。它指向目标函数增长最快的方向
决定了在梯度下降过程中每一步移动的距离大小
随机选择一个参数的初始值或者基于某些启发式方法
计算目标函数在当前参数值处的梯度
根据梯度和学习率来更新参数
θ
θ
θ=
θ
θ
θ−
α
α
α⋅
∇
θ
∇_θ
∇θ
J
(
θ
)
J(θ)
J(θ)
其中,
θ
θ
θ是参数向量,
α
α
α是学习率,
J
(
θ
)
J(θ)
J(θ)是目标函数,
∇
θ
∇_θ
∇θ
J
(
θ
)
J(θ)
J(θ)是目标函数的梯度
重复计算梯度并更新参数,直到满足停止条件(如梯度变得非常小或者达到预设的迭代次数)
使用所有样本来计算梯度
每次迭代使用一个样本来计算梯度
每次迭代使用一部分样本来计算梯度
学习率太大可能导致算法无法收敛,太小则收敛速度过慢。
梯度下降可能会陷入局部最小值或鞍点,尤其是在非凸优化问题中
在深度学习中,梯度可能会在反向传播过程中变得非常小(消失)或非常大(爆炸),影响训练
在实现梯度下降时,可能需要调整多个超参数(如学习率、迭代次数等)以获得最佳性能。此外,还有一些高级的梯度下降变种和优化技术,如动量(Momentum)、自适应学习率(如AdaGrad、RMSprop、Adam等),它们可以帮助算法更快地收敛
在本次实验中,我们将使用以下工具:
lab_utils.py
文件中的绘图例程import math, copy
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('./deeplearning.mplstyle')
from lab_utils_uni import plt_house_x, plt_contour_wgrad, plt_divergence, plt_gradients
让我们使用之前相同的两个数据点 :一个1000平方英尺的房子以30万美元的价格售出,一个2000平方英尺的房子以50万美元的价格售出。
尺寸(1000平方英尺) | 价格(以千美元计) |
---|---|
1 | 300 |
2 | 500 |
# 加载数据集
x_train = np.array([1.0, 2.0]) # 特征
y_train = np.array([300.0, 500.0]) # 目标值
# 计算成本的函数
def compute_cost(x, y, w, b):
m = x.shape[0]
cost = 0
for i in range(m):
f_wb = w * x[i] + b
cost = cost + (f_wb - y[i])**2
total_cost = 1 / (2 * m) * cost
return total_cost
到目前为止,已经开发了一个线性模型,用于预测
f
w
,
b
(
x
(
i
)
)
f_{w,b}(x(i))
fw,b(x(i)):
f
w
,
b
(
x
(
i
)
)
=
w
⋅
x
(
i
)
+
b
f_{w,b}(x(i)) = w \cdot x(i) + b
fw,b(x(i))=w⋅x(i)+b
在线性回归中,利用输入训练数据来拟合参数
w
w
w 和
b
b
b
通过最小化预测
f
w
,
b
(
x
(
i
)
)
f_{w,b}(x(i))
fw,b(x(i)) 和实际数据
y
(
i
)
y(i)
y(i) 之间的误差来衡量
这个度量被称为成本
J
(
w
,
b
)
J(w, b)
J(w,b)
在训练中,需要衡量所有训练样本
x
(
i
)
,
y
(
i
)
x(i), y(i)
x(i),y(i) 的成本:
J
(
w
,
b
)
=
1
2
m
∑
i
=
0
m
−
1
(
f
w
,
b
(
x
(
i
)
)
−
y
(
i
)
)
2
J(w, b) = \frac{1}{2m} \sum_{i=0}^{m-1} (f_{w,b}(x(i)) - y(i))^2
J(w,b)=2m1∑i=0m−1(fw,b(x(i))−y(i))2
梯度下降被描述为:
梯度定义为:
∂
J
(
w
,
b
)
∂
w
=
1
m
∑
i
=
0
m
−
1
(
f
w
,
b
(
x
(
i
)
)
−
y
(
i
)
)
x
(
i
)
\frac{\partial J(w, b)}{\partial w} = \frac{1}{m} \sum_{i=0}^{m-1} (f_{w,b}(x(i)) - y(i)) x(i)
∂w∂J(w,b)=m1∑i=0m−1(fw,b(x(i))−y(i))x(i)
∂
J
(
w
,
b
)
∂
b
=
1
m
∑
i
=
0
m
−
1
(
f
w
,
b
(
x
(
i
)
)
−
y
(
i
)
)
\frac{\partial J(w, b)}{\partial b} = \frac{1}{m} \sum_{i=0}^{m-1} (f_{w,b}(x(i)) - y(i))
∂b∂J(w,b)=m1∑i=0m−1(fw,b(x(i))−y(i))
实现一个特征的梯度下降算法,需要以下三个函数:
compute_gradient
实现定义的方程式compute_cost
实现上面的方程式gradient_descent
,使用compute_gradient
和compute_cost
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。