[机器学习]—梯度下降法-python代码实现

机器学习-梯度下降法-python代码实现

    • 梯度下降法个人理解
    • python代码实现

梯度下降法 人工智能

梯度下降法个人理解

梯度下降法的核心在于通过导数作为切线,沿着该方向做移动,加上步进值快速到达目标,学习率就是迈的步子,步子太大,容易跨出去太远,离最终目标误差越大;如果步子太小,到达目标时间就越久,选择合适的学习率避免震荡;形象的比喻就是一个球怎么滑入碗底最后在碗底停留的过程。

python代码实现

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 生成141个点
plot_x = np.linspace(-1,6,141)
# print(plot_x)
plot_y = (plot_x-2.5)**2 -1
plt.plot(plot_x,plot_y)
plt.show()

# 定义y的导数
def dj(theta):
    return 2*(theta-2.5)
def j(theta):
    return (theta-2.5)**2-1
theta = 0.0
eta = 0.1
# 误差值大小
epsilon = 1e-8
history_theta = [theta]
while True:
    gradient = dj(theta)
    last_theta = theta
    theta = theta -gradient*eta
    history_theta.append(theta)

    if(abs(j(theta)-j(last_theta))<epsilon):
        break
# print(history_theta)
# print(j(theta))


plt.plot(plot_x,j(plot_x))
plt.plot(np.array(history_theta),j(np.array(history_theta)),color = 'r',marker = '+')
plt.show()

[机器学习]—梯度下降法-python代码实现_第1张图片

你可能感兴趣的:(机器学习)