算法|深度学习——梯度下降算法、随机梯度下降算法及实例(B站刘二大人P3学习笔记)
梯度下降算法 以模型
文章图片
为例,梯度下降算法就是一种训练参数
文章图片
到最佳值的一种算法,
文章图片
每次变化的趋势由
文章图片
(学习率:一种超参数,由人手动设置调节),以及
文章图片
的导数来决定,具体公式如下:
文章图片
注: 此时
文章图片
函数是指所有的损失函数之和
针对模型
文章图片
的梯度下降算法的公式化简如下:
文章图片
根据化简之后的公式,就可以编写代码,对
文章图片
进行训练,具体代码如下:
import numpy as np
import matplotlib.pyplot as pltx_data = https://www.it610.com/article/[1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]w = 1.0def forward(x):
return x * wdef cost(xs, ys):
cost = 0
for x, y in zip(xs, ys):
y_pred = forward(x)
cost += (y_pred - y) ** 2
return cost / len(xs)def gradient(xs, ys):
grad = 0
for x, y in zip(xs, ys):
grad += 2 * x * (x * w - y)
return grad / len(xs)print('训练前的预测', 4, forward(4))cost_list = []
epoch_list = []
# 开始训练(100次训练)
for epoch in range(150):
epoch_list.append(epoch)
cost_val = cost(x_data, y_data)
cost_list.append(cost_val)
grad_val = gradient(x_data, y_data)
w -= 0.1 * grad_val
print('Epoch:', epoch, 'w=', w, 'loss=', cost_val)print('训练之后的预测', 4, forward(4))# 画图plt.plot(epoch_list, cost_list)
plt.ylabel('Cost')
plt.xlabel('Epoch')
plt.show()
运行截图如图所示:
文章图片
Epoch是训练次数,Cost是误差,可以看到随着训练次数的增加,误差越来越小,趋近于0.
随机梯度下降算法 随机梯度下降算法与梯度下降算法的不同之处在于,随机梯度下降算法不再计算损失函数之和的导数,而是随机选取任一随机函数计算导数,随机的决定
文章图片
下次的变化趋势,具体公式变化如图:
文章图片
具体代码如下:
import numpy as np
import matplotlib.pyplot as pltx_data = https://www.it610.com/article/[1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]w = 1.0def forward(x):
return x * wdef lost(x, y):
y_pred = forward(x)
return (y_pred - y) ** 2def gradient(x, y):
return 2 * x * (x * w - y)print('训练前的预测', 4, forward(4))epoch_list=[]
w_list=[]
# 开始训练(100次训练)
for epoch in range(100):
for x, y in zip(x_data, y_data):
epoch_list.append(epoch)
grad = gradient(x, y)
w -= 0.01 * grad
w_list.append(w)
l = lost(x, y)
print('Epoch:', epoch, 'w=', w, 'loss=', l)print('训练之后的预测', 4, forward(4))# 画图
plt.plot(w_list, epoch_list)
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.show()
运行截图如图所示:
文章图片
【算法|深度学习——梯度下降算法、随机梯度下降算法及实例(B站刘二大人P3学习笔记)】
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习