提高你模型的性能(笔记)

划分训练集、验证集、测试集

在我们迭代模型的过程中需要选择相应的训练数据、测试数据以完成训练模型和测试模型的任务。

常见的做法是将数据分为三部分,训练集、验证集、测试集

如果你的数据量比较小,如在1万条数据以下的时候,那么你可以用6:2:2的比例划分他们。

---------训练集---------|--验证集--|--测试集--

但如果你的数据比较多,那么你可以适当减少验证集和测试集的比例,因为验证集的目的就是验证不同的算法,比较那种算法更有效,只要有一定的数据量就可以满足这个需求。而测试集的主要目的是正确评估分类器的性能,所以如果你有十万乃至百万的数据,你只需要各拿出1万条数据,就足够了

增大你的模型或增加数据

下述两幅图像是一个欠拟合与一个较为恰当的拟合,如果过度拟合,则会出现一些蓝点处也存在蓝色区域。在偏差较高时,会出现欠拟合的现象,此时用的模型就过于简单了;相对来说,方差较高时,会出现一条非常扭曲的曲线穿过每一个点,此时模型就变得非常复杂,这种模型在训练集上表现的非常好,但是在测试集上表现的非常差,这就是过度拟合;

在实际中我们可以通过训练集和验证集的误差来判断当前的模型是欠拟合还是过拟合

测试集误差(Train set error) 0.01    0.15    0.15           0.01
验证集误差(Dev set error)   0.11    0.16    0.30           0.01
                           高方差    高偏差   高方差且高偏差   低方差且低偏差
                           过拟合    欠拟合                  你的模型非常好

当遇到这些情况时我们怎么能够提高模型的性能呢?

高偏差————选择更大的神经网络
高方差————增加你的数据量

正则化

这是一般的交叉熵损失函数

经过L2正则化(欧几里得范数的平方)后

增加了 这一项

它也可以表示为,也就是向量参数w的欧几里得范数的平方,也可以表示为

这里是正则化参数,

在梯度下降的过程中,令=A

通过增加正则化参数,可以得到

然后,在梯度更新的过程中你可以得到:

在没有正则化的梯度更新中,你只有

所以你的参数变得更小了,在正则化中,所以L2范数正则化也被称为权重衰减。

而我们知道,当参数变得更小时,你输入给激活函数的值也变得更小,这意味着你的激活函数在某些神经单元上变得更像线性函数,故而这有利于我们减少模型的复杂度,从而抑制过拟合。

另外,当你的λ设的足够大,那么W将会更接近于0,直观上就是多隐藏单元的权重为0,从而消除了隐藏单元,这时神经网络就被简化,但是它依然很深,所以这个网络就会从过度拟合的状态变为高偏差状态,但是在这过程中,由于是连续的变化,所以会有一个中间态,也就是我们希望让模型变成的低偏差低方差的状态。

还有一种优化你模型的方法是dropout,通过随机失活一部分(随机失活概率:keep_prob)神经单元使你的网络不特别依赖某一神经单元;在使用时需要对激活值除以keep_prob以保持激活值的期望值不变;要注意的是dropout只能在训练阶段使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值