超参数也是一种参数,不是一个已知常量。一种手工可配置的设置,需要为它根据已有或现有的经验指定“正确”的值,并不是通过系统学习到的,比如学习率(learning rate)、 深层神经网络隐藏层数
在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数。
如果不用激励函数(其实相当于激励函数是f(x) = x),无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,网络的逼近能力就相当有限,引入非线性函数作为激励函数,深层神经网络表达能力就会更加强大。(不再是线性组合,而是几乎可以逼近任何函数)
优点:
能够控制数值的幅度,在深层网络中可以保持数据幅度不会出现大的变化,
便于求导的平滑函数
取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。
缺点:
1.在深度神经网络中梯度反向传递时导致梯度消失:如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象
2.计算速度比较耗时,对比比较大的神经网络,会较大的增加训练时间
3.Sigmoid的输出不是0均值(zero-centered)的
梯度消失的原因:
同样learning rate的时候,靠近input的地方,它参数的update是很慢的;而靠近output的地方,它参数的update是比较快的
所以在靠近input的地方,参数几乎还是random的时候,output就已经根据这些random的结果找到了一个local minima,然后就converge(收敛)了
这个时候loss下降的速度会变得很慢,会误认为gradient已经接近于0了,停止程序。实际上模型并没有被充分训练
原因是因为:会把负无穷大到正无穷大的值都用压缩到0-1之间,把较大的input压缩成较小的output。
logistic函数:
优点:
(1)便于求导的平滑函数;
(2)能压缩数据,保证数据幅度不会有问题;
(3)适合用于前向传播
缺点:
(1)梯度消失
(2)输出不是zero-centered
(3)幂运算相对耗时
tanh函数:
Tanh函数可以看作放大并平移的Logistic函数
缺点:梯度消失的问题、还有幂运算的问题仍然存在。
不同:Tanh 函数的输出是零中心化的(Zero-Centered),而 Logistic 函数的输出恒大于 0。非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下
降的收敛速度变慢.
优点:
1.跟sigmoid function 比较起来,运算会快很多,收敛速度远快于sigmoid和tanh
2.结合了生物上的观察
3.可以处理梯度消失的问题(在正区间)
缺点:
1.ReLU的输出不是zero-centered
2.某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。
3.ReLU不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张
直观理解:一次训练所选取的样本数,大小影响模型的优化程度和速度。
为什么需要:在小样本数的数据库中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的数据库,一次性把所有数据输进网络,肯定会引起内存的爆炸
值的选择:
1.如果是小样本数,可以不用
2.采用批梯度下降法mini batch learning时,如果数据集足够充分,用一半(甚至少的多)的数据训练算出来的梯度与全数据集训练full batch learning出来的梯度几乎一样。
3.在合理的范围内,增大batch_size可以提高内存利用率,在适当的范围内,batch_size越大,其确定的下降方向越准,引起训练波动越小。注意,当batch_size增大到一定程度,其确定的下降方向基本不会变化。
4.batch_size值增大到超过合理范围时,和全数据训练full batch learning表现出相同的症候。