1.为什么正则化可以减少过拟合?

//答:可以让模型参数变小,减小模型的方差。

在损失函数中加入正则项,在正则化时,如果参数lamda设置得足够大,那么就相当于权重系数W接近于0 ,就会减少很多隐藏单元的影响,降低模型的复杂度,将模型从过拟合到欠拟合,当然,其中有一个lamda是使模型处于最优中间状态的。

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

在这个例子中,当lamda增大时,W变小,所以随之Z变小,当激活函数使用Tanh时,若Z小,那么在接近0的区间内,模型就相当于是一个线性函数,模型简化。

2.Dropout(随机失活)正则化

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

对于一个过拟合的神经网络,可以设置一个dropoutRate来随机失活神经单元,使其变得更加简单。

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

反向dropout,参数keep_prob是保留一个神经单元的概率,d3是一个布尔数组,和a3对应乘之后,False就会变为0。这样就达到了随即舍弃神经单元。

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

并且对a3还要/keep_prob这样才可以保证期望值不变。确实是这样。可以用一个简单的例子来试验一下。

对不同的训练样本,清除的隐藏单元也不同,通过相同训练集多次传递数据,每次训练的梯度不同,随即对不同的隐藏单元置0。

//每一次iteration(训一个batch_size)都会有不同的隐藏单元被dropout。

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

在测试时,并不需要设置dropout,可以发现设置和不设置最终得到的是一样的,因为它有记忆keep_prob的功能。

3.理解dropout

DLNg改善深层NN:第一周DL的实用层面-LMLPHP

直觉:在使用dropout时会让神经网络变得更简单,能够缩小参数。

在不同的神经网络层可以有不同的dropout率,对于比较可能过拟合的层使用更小的keep_prob,若=1,则就是保留全部单元。

可以在输入层使用dropout,来减少其特征,但是通常不这么做。

05-11 09:17