单层感知机→多层感知机:同或门的引用
1.多层感知机
1.1隐藏层
关于隐藏层的理解这篇文章解释的很好,本小白表示看懂了
神经网络的隐藏层神经网络的隐藏层_浮生若梦-CSDN博客_隐藏层
H=σ(XW(1)+b(1))
O=HW(2)+b(2).
σ为激活函数并且σ不能为线性函数,如果σ是线性函数那么输出的O也为线性函数,就等价于单层感知机了
1.2.激活函数
sigmoid函数、 tanh函数、ReLU函数
ReLU函数: ReLU(x)=max(x,0)
1.3代码实现
结果:
可以看出相比softmax的损失函数下降,精度上升
2.模型选择
2.1训练误差和泛化误差
训练误差:模型在训练数据上的误差。 (模拟考)
泛化误差:模型在新数据上的误差。 (正规考)
训练、验证、测试(只用一次)
2.2K折交叉验证
在没有足够多数据时使用(这是常态)
算法:将训练数据分割成K块.,For i= 1, ...,K 使用第i块作为验证数据集,其余的作为训练数据集。报告K个验证集误差的平均
2.3过拟合、欠拟合
+
模型容量:模型拟合函数的能力
除了模型复杂度,另一个重要因素是数据集的大小。 训练数据集中的样本越少,我们就越有可能(且更严重地)过拟合。
估计模型容量(不懂)
一层隐藏层里有m个节点,每个节点包含d个w参数和一个bias参数,所以是(d+1)m
模型参数:w和b
超参数:模型参数以外可选择的参数(例如模型的选择、隐藏层的层数、每层的大小、学习率等)
3.权重衰退
最常见的处理过拟合的一种方法
B站 up 王木头学科学 讲的非常清楚,
我的理解为绿色的圈圈(L2范数),对红色的圈圈(w)进行限制,使绿圈以外的红圈与其相切,使两者相减为0,达到限制的目的,而如果在绿圈以内则无限制。绿圈的大小由λ调节
4.丢弃法
dropout:正则项,只在训练中使用
丢弃法将一些输出项随机置0来控制模型复杂度
常作用在多层感知机的隐藏层输出上
丢弃概率是控制模型复杂度的超参数p (0到1)
打破对称性
神经网络设计中的另一个问题是其参数化所固有的对称性。 假设我们有一个简单的多层感知机,它有一个隐藏层和两个隐藏单元。 在这种情况下,我们可以对第一层的权重W(1)进行重排列, 并且同样对输出层的权重进行重排列,可以获得相同的函数。 第一个隐藏单元与第二个隐藏单元没有什么特别的区别。 换句话说,我们在每一层的隐藏单元之间具有排列对称性。
假设输出层将上述两个隐藏单元的多层感知机转换为仅一个输出单元。 想象一下,如果我们将隐藏层的所有参数初始化为W(1)=c, c为常量,会发生什么? 在这种情况下,在前向传播期间,两个隐藏单元采用相同的输入和参数, 产生相同的激活,该激活被送到输出单元。 在反向传播期间,根据参数W(1)对输出单元进行微分,得到一个梯度,其元素都取相同的值。 因此,在基于梯度的迭代(例如,小批量随机梯度下降)之后,W(1)的所有元素仍然采用相同的值。 这样的迭代永远不会打破对称性,我们可能永远也无法实现网络的表达能力。 隐藏层的行为就好像只有一个单元。 请注意,虽然小批量随机梯度下降不会打破这种对称性,但暂退法正则化可以。
5.数值稳定性
初始化模型参数w等
梯度爆炸、梯度消失
指数爆炸
梯度爆炸: 参数更新过大,破坏了模型的稳定收敛;
梯度消失: 参数更新过小,在每次更新时几乎不会移动,导致模型无法学习。
-
梯度消失和梯度爆炸是深度网络中常见的问题。在参数初始化时需要非常小心,以确保梯度和参数可以得到很好的控制。
-
需要用启发式的初始化方法来确保初始梯度既不太大也不太小。
-
ReLU激活函数缓解了梯度消失问题,这样可以加速收敛。
-
随机初始化是保证在进行优化前打破对称性的关键。
-
Xavier初始化表明,对于每一层,输出的方差不受输入数量的影响,任何梯度的方差不受输出数量的影响。