前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习之梯度下降

机器学习之梯度下降

作者头像
用户2909867
发布2018-08-22 11:05:27
3000
发布2018-08-22 11:05:27
举报
文章被收录于专栏:互联网大杂烩互联网大杂烩

梯度下降法是求解无约束最优化问题的一种常用的方法,方法实现简单。 梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到一个局部最小值(local minimum)。

Paste_Image.png

例如

1.目标函数

Paste_Image.png

2.代价函数

Paste_Image.png

问题:如何选取

Paste_Image.png

使得代价函数

Paste_Image.png

最小

思路如下:

(1)先确定向下一步的步伐大小α,我们称为Learning rate;

(2)任意给定一个初始值θ0,θ1,...θi;

(3)确定一个向下的方向,并向下走预先规定的步伐,并更新初始值;

Paste_Image.png

(4)当下降的高度小于某个定义的值,则停止下降;此时的θ0,θ1,...θi即为我们学习后得到的目标函数的θ0,θ1,...θi。

学习速率的影响

在使用梯度下降的时候,α的选取会影响算法的使用,α的值应该选取合适的值,不能过小,过小,学习效率比较慢,过大可能无法得到目标函数。

α的选取有如下几种方法

1.Adagrad

Paste_Image.png

其中,α为初始的学习速率,α^t为t次迭代后的学习速率。

2.或者给一固定值

α一般取0到1之间

代码如下:

代码语言:javascript
复制
x = [(1, 0., 3), (1, 1., 3), (1, 2., 3), (1, 3., 2), (1, 4., 4)]
# y[i] 样本点对应的输出
y = [95.364, 97.217205, 75.195834, 60.105519, 49.342380]
 
# 迭代阀值,当两次迭代损失函数之差小于该阀值时停止迭代
epsilon = 0.0001
 
# 学习率
alpha = 0.01
diff = [0, 0]
max_itor = 1000
error1 = 0
error0 = 0
cnt = 0
m = len(x)
 
 
# 初始化参数
theta0 = 0
theta1 = 0
theta2 = 0
 
while True:
    cnt += 1
 
    # 参数迭代计算
    for i in range(m):
        # 拟合函数为 y = theta0 * x[0] + theta1 * x[1] +theta2 * x[2]
        # 计算残差
        diff[0] = (theta0 + theta1 * x[i][1] + theta2 * x[i][2]) - y[i]
 
        # 梯度 = diff[0] * x[i][j]
        theta0 -= alpha * diff[0] * x[i][0]
        theta1 -= alpha * diff[0] * x[i][1]
        theta2 -= alpha * diff[0] * x[i][2]
 
    # 计算损失函数
    error1 = 0
    for lp in range(len(x)):
        error1 += (y[lp]-(theta0 + theta1 * x[lp][1] + theta2 * x[lp][2]))**2/2
 
    if abs(error1-error0) < epsilon:
        break
    else:
        error0 = error1
 
    print  (theta0, theta1, theta2, error1)
print  (theta0, theta1, theta2)
print  (cnt)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.02.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例如
    • 1.目标函数
      • 2.代价函数
      • 问题:如何选取
        • 思路如下:
          • 学习速率的影响
            • α的选取有如下几种方法
              • 1.Adagrad
                • 2.或者给一固定值
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档