【学习8】gradient decent改进和分类问题

当我们遇到loss的参数无法更新到更小的时候,往往不是遇到了critical point的情况。这里的可能是我们的n(learning rate)太大了,导致在山谷(中间是loss更低的地方,两边是loss很高的地方)两边来回晃荡。当我们调整n为10^(-7)的时候,这时候n已经很小了,虽然到了低点,但是想要向minimal 靠近也很难(步伐很小)。这里,我们就需要进行gradient descend模型的改进。我们要给不同的参数设置不同的n,在坡度(gradient)很小的地方,得到小的o,步伐就会大;在坡度很大的时候,得到的o大,步伐就会小。

 

 在同一个参数,同一个方向,希望n可以动态调整。这里有一个方法RMSProp。

通过a可以决定g的权重 。

 这里有一个optimization的方法:

 用上述的方法之后,虽然解决了参数不能到准确位置的问题,但是又出现了另外的问题。当我们向左走的时候,纵轴的θ一直很小,但是会积累,导致o在某些时刻会变大,但是又能限制回来。

 在我们的式子里面,n原来是一个常数,但是如果加上时间的限制之后,我们能够解决上面的问题。让n跟时间有关,当时间增长,n会变小。这个方法是Learning rate delay

 除了这个方法之后,我们还有一个方法warm up

 

这里还有个改进方法 

classification分类

在这里我们希望在分类的时候输出一个向量(one-hot vector 只有0和1的值),这就要我们在模型输出三个y。

 一般来说,我们在做regression的时候输出的y会有任何值的情况(可能大于1也可能小于0)。这时候我们用上面这个模型,产生了三个输出,但是这三个输出和regression没有什么区别,还是可能为任何值,那么我们怎么区别他们是哪一个类呢?这里我们就需要在输出y的时候进行normal化(让值限制在0-1之间)。这个时候,我们就可以判断这个值是更趋向0还是1,但是不用担心,所有的输出y相加总是1,不存在全0的情况。那么我们就可以根据向量的值判断这个预测是更偏向哪一个类型了!

 

 如果我们有两个类别的时候,我们也可以使用sigmoid

在这里,分类问题往往更常用的方法是cross-entropy(pytorch会默认使用softmax)

 

 MSE所在地方比较平坦,会卡住不动。而在cross-entropy的地方会有一个梯度,就能很快减小loss。

再探宝可梦

参数越多,越有可能会overfit。

 

 

 hall是最好的,这里htrain1比较好的原因是数据集比较小,没有覆盖完整的数据。

 

 

 

 

 

 

 

 

 我们想要小的H和精确度都高的情况,需要用到深度学习。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值