卷积神经网络03(梯度下降)

43 篇文章 3 订阅
18 篇文章 1 订阅

回顾:
线性回归回顾
上面的是一个w(权重),可以直接进行搜索,比较简单,但是如果是多个变量,在使用这种方法查找就很费时,并且有时候还计算不出来。
还有一个问题就是,如果是很多权重,就会是多维的,并且还会有局部最小值的问题。

因此就有本节的梯度下降法出现

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200901143933465.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjk4OTczOA==,size_16,color_FFFFFF,t_70#pic_center
在这里插入图片描述
虽然不能得到最优解,但是可以得到局部最小值
在这里插入图片描述
可能会出现局部最小值的情况(非凸函数)局部最优
因此,梯度下降只能找到局部最优,并不一定是局部最小值(全局最优点)。
有一种特殊情况,叫做鞍点
在这里插入图片描述
由于g在某一段是0,那么就没有办法进行迭代了。
在这里插入图片描述
随机梯度下降法
在这里插入图片描述
代码复现,其中有一步是为了接收训练后的参数
#定义两个空列表,用于接收计算的epoch和cost(也就是所谓的损失)用于绘制可视化图像
epoch1 = []
cost1 = []
print(‘Predict (after training’,4,forward(4))
plt.plot(epoch1, cost1, c=‘g’)
plt.show()

import numpy as np
import matplotlib.pyplot as plt

# 准备数据
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]

# 设置一个初始的权重
w = 1.0

# 定一个前向传播
def forward(x):
    return x*w

# MSE的目标函数
def cost(xs,ys):
    cost = 0
    for x,y in zip(xs,ys):
        y_pred = forward(x)
        cost += (y_pred - y)**2
        # print("cost",cost)
    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)

# 定义两个空列表,用于接收计算的epoch和cost(也就是所谓的损失)用于绘制可视化图像
epoch1 = []
cost1 = []

print('Predict (before training',4,forward(4))
for epoch in range(200):
    cost_val = cost(x_data,y_data)
    grad_val = gradient(x_data,y_data)
    w -= 0.01 * grad_val
    epoch1.append(epoch)
    cost1.append(cost_val)
    print("Epoch:",epoch,'w=',w,"loss=",cost_val)
    
print('Predict (after training',4,forward(4))
plt.plot(epoch1, cost1, c='g')
plt.show()

随机梯度下降
使用随机梯度下降法,可以克服鞍点的问题,即使陷入到鞍点,由于随机噪声的存在,就有可能跨越这个鞍点。
在这里插入图片描述
性能和时间复杂度取一个折中
使用batch进行,每次使用一组进行。
小批量的

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值