第六章 梯度下降法 学习笔记 上

目录

6-1 什么是梯度下降法

6-2 模拟实现梯度下降法

6-3 线性回归中的梯度下降法


6-1 什么是梯度下降法

 

加负号则J减小

图中导数为负值,则J增加的方向在x轴的负方向,也就是theta减小的,我们希望找到最小值,所以应该向减小的方向移动则加负号,其会向减小的方向移动

移动的步长乘以yita

不等于0,继续求导向导数的反方向移动 

对于多维函数中,要对各个方向求导,则就是梯度

上图中也一样,导数为正,则表示J增加的方向,加负号表示向减小的方向,其公式不变

梯度下降法像在模拟一个小球在坡上滚动

如果yita太大,则其跳动太大,损失函数没有下降反而增大了

并不是所有的函数都有唯一的极值点

有可能找到局部最优解,其和初始点的选择有关

这一小节不需要重复多次找合理的点

6-2 模拟实现梯度下降法

def J(theta):
    return (theta-2.5)**2 - 1.

def dJ(theta):
    return 2*(theta-2.5)

theta = 0.0
while True:
    gradient = dJ(theta)
    last_theta = theta
    theta = theta - eta * gradient
    
    if(abs(J(theta) - J(last_theta)) < epsilon):
        break
    
print(theta)
print(J(theta))

theta = 0.0
theta_history = [theta]
while True:
    gradient = dJ(theta)
    last_theta = theta
    theta = theta - eta * gradient
    theta_history.append(theta)
    
    if(abs(J(theta) - J(last_theta)) < epsilon):
        break

plt.plot(plot_x, J(plot_x))
plt.plot(np.array(theta_history), J(np.array(theta_history)), color="r", marker='+')
plt.show()

theta_history = []

def gradient_descent(initial_theta, eta, epsilon=1e-8):
    theta = initial_theta
    theta_history.append(initial_theta)

    while True:
        gradient = dJ(theta)
        last_theta = theta
        theta = theta - eta * gradient
        theta_history.append(theta)
    
        if(abs(J(theta) - J(last_theta)) < epsilon):
            break
            
def plot_theta_history():
    plt.plot(plot_x, J(plot_x))
    plt.plot(np.array(theta_history), J(np.array(theta_history)), color="r", marker='+')
    plt.show()

学习率太大,引入异常处理的方法

但这样程序会进入死循环,所以要改进引入迭代次数

def gradient_descent(initial_theta, eta, n_iters = 1e4, epsilon=1e-8):
    
    theta = initial_theta
    i_iter = 0
    theta_history.append(initial_theta)

    while i_iter < n_iters:
        gradient = dJ(theta)
        last_theta = theta
        theta = theta - eta * gradient
        theta_history.append(theta)
    
        if(abs(J(theta) - J(last_theta)) < epsilon):
            break
            
        i_iter += 1
        
    return

6-3 线性回归中的梯度下降法

拓展到了高维空间

以下是两个参数的梯度下降, x,y是参数

梯度下降的最快

现存值与m有关,样本越大,值越大,更好的结果是与样本数无关

没有m分之一,则每一个值会很大

y的预测值与y的真值 

2,求导时可以约掉

这节中使用这个公式做为其目标函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值