机器学习算法------梯度下降法
优秀的讲解博客 刘建平的博客 算法简述 梯度下降通常是通过迭代的方式来搜索某个函数的极大/小值,他对目标函数每个变量求偏导得出梯度,也就是沿着梯度方向函数值会增加的最快,那么要求最小值就要沿着梯度值的反方向,梯度下降分为随机梯度下降与批量梯度下降,以及小批量梯度下降,随机梯度相比批量梯度耗时少,但精度不如批量高,批量每一步都沿着下降最快的方向下降,但是样本很多的话 耗时很多,还有就是随机梯度具有随机的特性,可能会跳出局部最优解从而到达全局最优解,而批量梯度则会一步步的走向局部最优解 模拟梯度下降法 梯度下降搜索一元二次方程最小值 通过梯度下降 求解 y = (x-2.5) ^ 2 - 1的 最小值 import numpy as np import matplotlib.pyplot as plt plot_x = np.linspace(- 1. , 6. , 141 ) # 造一个数据 plot_y = (plot_x- 2.5 ) ** 2 - 1. #plt.plot(plot_x, plot_y) #plt.show() epsilon = 1e-8 #误差 eta = 0.1 # 学习率 def J (theta) : # 要求解的函数 return (theta - 2.5 ) ** 2 - 1. def dJ (theta) : # 对函数求导之后的式子