机器人与人工智能爱好者论坛

 找回密码
 立即注册
查看: 12594|回复: 6
打印 上一主题 下一主题

计算梯度下降应用的问题?

[复制链接]

1

主题

2

帖子

19

积分

注册会员

Rank: 2

积分
19
跳转到指定楼层
楼主
发表于 2016-1-18 14:16:01 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 iamcodylee 于 2016-1-19 09:46 编辑

使用stanford openclassroom(Deep Learning)中的数据作为training set, exercise中使用的是Logistic Regression and Newton's method,我在训练的使用只使用了gradient descent。
  1. def sigmoid(inX):
  2.         return 1.0/(1+exp(-inX))

  3. def gradDescent(dataMatIn, classLabels):
  4.         x = mat(dataMatIn)
  5.         y = mat(classLabels).transpose()
  6.         m,n = shape(x)
  7.         alpha = 0.001
  8.         maxCycles = 100
  9.         theta = ones((n,1))
  10.         for k in range(maxCycles):
  11.                  h = sigmoid(x*theta)
  12.                  error = h - y
  13.                  theta = theta - alpha * (x.transpose() * error /m)
  14.        return theta
复制代码
训练结果为[[ 0.97807688],[ 0.25847312],[-0.15421594]]

问题:
1、很明显这个decision boundary不对,但是我检查了半天代码,也没有发现问题到底出在哪里?
2、我理解的是,LR and Newton's method是对LR的一种改进方法,和LR比,在这里的情况下两者最终计算出来的theta应该都是很接近的吧?





补充一下:
把maxCycle修改到20W次的时候,分类器开始有效果了,但是效果好些不是太好,如图:

cost为:
Iteration 199991 | Cost: 39.786145
Iteration 199992 | Cost: 39.786110
Iteration 199993 | Cost: 39.786074
Iteration 199994 | Cost: 39.786039
Iteration 199995 | Cost: 39.786004
Iteration 199996 | Cost: 39.785968
Iteration 199997 | Cost: 39.785933
Iteration 199998 | Cost: 39.785897
Iteration 199999 | Cost: 39.785862
这样可以认为已经收敛了么?


回复

使用道具 举报

1

主题

2

帖子

19

积分

注册会员

Rank: 2

积分
19
沙发
 楼主| 发表于 2016-1-19 09:41:52 | 显示全部楼层
小谢 发表于 2016-1-18 17:27
第14行代码改成  theta = theta - alpha * x.transpose() * error ,试试

这样不对,这样一改我的cost函数都算不出来了,
然后抛出来的theta画的线也不对
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|Archiver|手机版|小黑屋|陕ICP备15012670号-1    

GMT+8, 2024-5-17 17:33 , Processed in 0.202254 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表