深度学习——梯度下降法1

本文从简单的函数最小值问题出发,逐步深入介绍梯度下降法的三个层次:了解层次、初级入门层次和入门层次。通过数学公式和代码实现,详细解释了一维及多维梯度下降法,并通过动量梯度下降法的例子展示了其在机器学习中的应用,最终收敛到目标函数的最小值附近。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最优化的入门

从简单问题出发

1.1 函数最小值

求   J\left ( w \right )=w^{^{2}}+2w+1=(w+1)^{^{2}}  的极小值?

理解梯度小降法的三个层次:

了解层次 

  • 二次函数从某点出发,沿着梯度方向下降
  • 从二次函数求最小值,数学公式的层次

初级入门层次

  • 从零代码求二次函数最小值
  • 简单的数学证明

入门层次

  • 推广到机器学习
  • 推广到一般的梯度下降法

min J\left (W \right ) 二次函数

Gradient 

一种直观理解,函数沿着切线方向下降?(不是)

  J\left ( w \right )=w^{^{2}}+2w+1=(w+1)^{^{2}}

w ←w-α*J'(w)

初始值:w0=1   α=0.01(学习速率)

\vec{d}=(x_{1},...x_{n}) \left \| d \right \|^{2}=1

J'(w)=2(w+1)

w_{n+1}=w_{n}-\alpha J'(w_{n})=w_{n}-\alpha\ast 2(w+1)=(1-2\alpha ) w_{n}-2\alpha=(1-2*0.01)w_{n}-2*0.01=0.98w_{n}-0.02\rightarrow w_{1}=0.98-0.02=0.96

x=-1处为函数最小值,停止更新w_{n}=-1\; \; \; \; w_{n+1}=-0.98w_{n}-0.02=-1

若走过对称轴-1,自变量更新会往回走(接近于最小值的方向-1点)

w_{n}=-2\; \; \; \; w_{n+1}=0.98*(-2)-0.02=-1.98

初级入门层次:

# 定义函数

def J(w):
    return w**2 + 2*w + 1
# 函数导数
def J_prime(w):
    return 2*w + 2

# 梯度下降法,就是沿着梯度方向更新参数
# w ←  w - α * J_prime(w)
# epoch=1000,alpha=0.01

epoch = 100
alpha = 0.1
w = 1
for i in range(epoch):
    w = w - alpha*J_prime(w)
    print(w)

#输出结果 向着-1一直接近
0.6
0.2799999999999999
0.023999999999999966
-0.18080000000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值