DL学习笔记——正则化和批量处理

0.python基础

https://www.codecademy.com/catalog

1.github

https://github.com/iamtrask/Grokking-Deep-Learning

2.AI

https://www.codecademy.com/catalog/subject/artificial-intelligence

---------------------------------------------------------------------------------------------------------------------------------

8.正则化和批量处理

神经网络的宿敌是过拟合。

神经网络的表达能力越强大(层数和权重数量越多),网络就越容易过拟合。

8.1 记忆与泛化

8.2神经网络中的过拟合

如果你过度训练神经网络,它会变得更糟!

神经网络过拟合现象的一个更正式定义是,这个神经网络学习到了数据集中的噪声,而不是仅仅基于真实信号做出决策。

8.3 过拟合从何而来?

 过拟合来自于细节信息。

如何让神经网络只在信号上进行训练,而忽略噪声?一种方法是提前停止

事实证明,大量噪声来自于图像在细粒度上的各种细节。

8.4 最简单的正则化:提前停止。

当网络的表现开始变差时,停止训练。

正则化——用于在机器学习模型中鼓励泛化的方法的一个子集,通常通过提高模型学习训练数据的细粒度细节的难度来实现。

8.5 行业标准正则化:dropout

方法:在训练过程中随机关闭神经元(设置为0)

通过每次随机训练网络中额一部分,dropout能够让一张大网络像小网络一样进行学习——较小的神经网络不会发生过拟合。

小的神经网络没有太多的表达能力。它们无法抓住那些可能导致过拟合的更细粒度的细节。它们只留下了捕捉那些更大、更明显、更高级特性的空间。

8.6 为什么dropout有效:整合是有效的

dropout是一种训练一系列网络并对其进行平均的形式。

当过拟合发生时,没有任何两个神经网络会以完全相同的方式过拟合。只有在每张训练图像都会被完美地预测后,过拟合现象才会发生,此时误差为0,神经网络停止学习。

虽然大型非正则化神经网络更可能对噪声过度拟合,但它们不太可能对相同的噪声过拟合。

尽管神经网络是随机生成的,但它们仍然是从学习最大的、最广泛的特征开始的,之后才会捕捉更多关于噪声的信息。

i = 0
layer_0 = images[i:i+1]
dropout_mask = np.random.randint(2,size=layer_1.shape) #在Layer_1上实现dropout,将layer_1
                                                        的值乘以由1和0组成的随机矩阵。
                                                        dropout_mask使用的是50%Bernoulli分
                                                        布。dropout_mask的值有50%是0,50%
                                                        是1.

layer_1 *= dropout_mask * 2         # layer_2会计算layer_1的加权和。如果关闭layer_1中一半的
                                       节点,那么这个和将减半。因此layer_2需要增加对layer_1    
                                      的敏感度。所以将layer_1乘以2.
layer_2 = np.dot(layer_1, weights_1_2)

error += np.sum((labels[i:i+1] - layer_2) ** 2)

correct_cnt += int(np.argmax(layer_2) == np.argmax(labels[i+i+1]))

layer_2_delta = (labels[i:i+1] - layer_2)
layer_1_delta = layer_2_delta.dot(weights_1_2.T) * relu2deriv(layer_1)

layer_1_delta *= dropout_mask  #

weights_1_2 += alpha * layer_1.T.dot(layer_2_delta)
weights_0_1 += alpha * layer_0.T.dot(layer_1_delta)

dropout还会减慢训练准确率上升的速度。

dropout是一种噪声。它使得神经网络在训练数据上的训练过程更加复杂,就像腿上负重跑马拉松一样。训练确实更困难了,但当你在大型比赛中将腿上的负重解开时,你会感觉身轻如燕,跑得更快。

8.7 批量梯度下降

小批量随机梯度下降。一次用100个训练样例进行训练,在更新权重时,使用所有100个样例的权重增量的平均值。

在训练中不断地进行平均权重更新。事实证明,对单个样例进行训练,在生成权重更新增量时,会有非常大的噪声。因此,对这些权重增量更新进行平均可使学习过程更平滑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值