要理解梯度下降和“随机”梯度下降的区别。
随机梯度下降特点:
·每次更新数据只选取一个样本
优点:
·相比于批量梯度,这样的方法更快,更快收敛,虽然不是全局最优,但很多时候是我们可以接受的
代码
首先导入包
1 | import matplotlib.pyplot as plt |
数据的准备
1 | # x = np.array([[-1., 2.], [0., 0.], [0., 2.], [1., 0]]) |
可视化函数
1 | def plot_plot(x, omega, b): |
随机初始化
1 | omega = np.array([0., 0.]) |
感知机函数
1 | def sign(pp, b, omega): |
定义判断感知机分类对错的函数(选取错的点来优化)
1 | def error_value(x, y): |
进行判断和优化
1 | i = 1 |
Out
1 | 第1此迭代分错的样本为: [array([0., 2.]), array([1., 0.]), array([-1., 2.]), array([0., 0.])] |
可视化
1 | plot_plot(x, omega, b) |
可改进之处:在“进行判断和优化”的代码里面直接打乱数据的顺序,使得能够随机选取一个数进行优化