过拟合:
过拟合是机器学习中一个常见的问题,它是指模型预测准确率在训练集上升高,在测试集上反而下降,这通常意味着泛化性不好,模型只是记忆了当前数据的特征,不具备推广能力。
解决办法:Hinton提出的dropout,在使用复杂的cnn训练图像数据时尤为有效,大致思路是在训练时,将网络某一层的输出节点数据随机丢弃一部分(可以理解为将一整图片上50%的点变成黑点),每次丢弃节点可以看做是对特征的一种采样,相当于我们训练了一个ensemble的神经网络模型,对每个样本都做特征采样,只不多没有训练多个神经网络,只有一个融合的神经网络。
参数调试:
神经网络通常不是一个凸优化的问题,他处处充满着局部最优(比如在我的网络中,lr设置为0.00001,过于小,因此它就跳不出这个坑坑,很快就收敛,这就是局部最小值,当我改变成0.0001时,我的loss开始重新震荡,恢复正常),不同的lr可能导致神经网络落入截然不同的局部最优之中。SGD需要对学习速率等参数进行较为复杂的调试,而adagrad,adam,adadelta等自适应的方法可以减轻调试参数的负担。
梯度弥散:(梯度消失)
relu函数在坐标轴上是一条折线,信号在超过某个阈值时,神经元才会进入兴奋和活跃状态,平时处于抑制状态。relu可以很好地传递梯度,经过多层的反向传播,梯度依旧不会大幅缩小,因此非常合适训练较深的网络。,在实践中大部分情况下,将隐藏层的激活函数从sigmoid替换为relu都可以带来训练速度及模型准确率的提升,当然神经网络的输出层一般还是sigmoid函数,因为他最接近概率输出分布。
CNN概念之局部连接,权值共享,降采样:
1.局部连接:
图片中的 像素点有空间相似性。每一个神经元不需要接受某张图片全部像素的信息,只需要接受局部像素点作为输入,而后,神经元将所有这些神经元接收到的信息综合起来就可以得到全局信息。
2.权值共享:
输入层和隐藏层的连接方式是卷积操作,即默认每一个隐藏节点到同一个神经元的参数都完全一样,这一层所有的参数即卷积核的尺寸,因此不论隐藏节点或图片有多大,参数量只和卷积核大小有关。
每一个卷积核都是图像一类特征的映射,即一个feature map。卷积核数量越多,能够抽象出来的高阶特征越多。
3.