在507干活的第3天(上)

今天继续看深度学习和神经网络

额外1:静态方法

静态方法指的就是不需要某个类实例(也就是self)的方法。

可以直接从外面引进一个参数。

而非静态方法则必须用类的实例来做变量。

这部分是面向对象的内容。还需要进行学习。

额外2:谈话

师兄表示如果想去互联网公司的话,本科毕业直接去,不要读研究生。

或许找到自己真正想干什么是最重要的。其他的东西,最后发现都是在浪费时间。

知识点1:权值初始化

一开始采用均值为0,标准差为1的高斯随机变量。但是这个变量存在一个问题,就是它比较平。


在这幅图中,我们可以看到Z实际上很大,那么微小的w变化将无法将代价函数改变太多。这样会影响我们的学习速率。

于是我们用均值为  标准差为 的高斯随机分布初始化这些权重。


可以很简单的看出,神经元不可能饱和。(具体神经元饱和的意思就是为微小的w不会给代价函数带来很多变化),所以学习速率将会变得更快。

另外,偏置对于神经元饱和的影响不大,可以就用均值为0,标准差为1的高斯随机变量来设置。


知识点2:调整超参数的策略

总体策略:①找一个训练的比较快的,类似问题的神经网络。比如手写识别0和1。同时验证样本少一些,尽量提升得到结果的速度。

②对某个参数不断寻找,一旦我们找到一种提升性能的  值,我们就可以尝试寻找好的值。然后按照一个更加复杂的网络架构进行实验。


学习速率:如果  太大的话,步长也会变大可能会使得算法在接近最小值时候又越过了谷底。

当然,选择太小的学习速率,也会带来另一个问题——随机梯度下降算法变慢了。

①首先,我们选择在训练数据上的代价立即开始下降而非震荡或者增加时作为  的阈值的估计。

②显然, 实际值不应该比阈值大。实际上,如果  的值重复使用很多回合的话,你更应该使用稍微小一点的值,例如,阈值的一半这样的选择。这样的选择能够允许你训练更多的回合,不会减慢学习的速度。

学习速率仅仅是偶然地影响最终的分类准确率的。学习速率主要的目的是控制梯度下降的步长,监控训练代价是最好的检测步长过大的方法。即使这个与通过验证集的准确率来确定超参数的观点有点矛盾,但是无所谓,从原理上讲就应该如此。


提前终止:与之前的过拟合问题一样,我们应该提前在每次迭代完以后验证识别的准确率。因此,我们需要一个策略来防止过拟合。这种策略是“当n次准确率都没有上升的时候,停止迭代”,这个n根据问题来选择大小。


可变学习速率:在学习的前期,权重可能非常糟糕。所以最好是使用一个较大的学习速率让权重变化得更快。越往后,我们可以降低学习速率,这样可以作出更加精良的调整。

方法也是提前终止的思路,保持学习速率为一个常量直到验证准确率开始变差。然后按照某个量下降学习速率,比如说按照 或者 。我们重复此过程若干次,直到学习速率是初始值的 (或者),那时就终止。


规范化参数:先确定的值,再用验证数据确定规范化参数的值。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值