在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就对梯度下降法做一个完整的总结。下面这篇刘老师的博客从数学角度已经介绍的很详细了,此篇文章主要是用具体的实例代码复现梯度下降算法。这一篇是一次函数的特例,在下面的文章中会用梯度下降算法求解多次函数的问题。
梯度下降(Gradient Descent)小结www.cnblogs.com上面的博客是从数学角度来解释了梯度下降,初学者看到这一大推数学公式难免一头雾水,如何从多角度理解啥是梯度下降,它是如何来的,它又有什么现实的意义,用于解决什么问题,本人认为一个算法要多看几篇不同的文章,才能取长补短,才能形成自己的理解,面试的时候可以和面试官侃侃而谈,即可以从现实生活中举例说明,也可以从数学角度阐述,侃侃而谈,而不是机械的背文字说明,具体的可以参看下面这两篇文章。
马同学高等数学www.matongxue.com 机器学习--什么是梯度?为什么梯度方向就是函数上升最快的方向?本文将给你解惑_人工智能_进击的菜鸟-CSDN博客blog.csdn.net代码需要有初级的py,numpy基础,可以看这两个教程:
Python多线程和多进程编程(并发编程)c.biancheng.net梯度下降法举例:
import numpy as np
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.pyplot as plt
求 = 2+2 +5的最小值并画函数图像:
x = np.linspace(-6,4,100)
y = x**2+2*x+5
plt.plot(x,y)
# plt.show()
初始化 x , α 和迭代次数:
x = 3
alpha = 0.8
iterationNum = 100
y的导数为2x+2,迭代求 theta:
for i in range(iterationNum):
x = x - alpha*(2*x+2)
输出最后的值:
print(x)