CNN在图像上表现好的原因
相比于手工特征,
- CNN可以采用数据驱动的方式学习特征提取,能够提取到更好更丰富的特征。
- 深层网络可以拟合更复杂的计算,从而提取更复杂更抽象的特征。
相比于普通深度神经网络,
- 卷积核共享参数,充分利用图像上的空间局部性,因此具有参数共享和稀疏连接两条优点,不容易过拟合。
- CNN中的池化层还使网络具有平移不变性的特性。
- 参数共享: 不同图像区域用的卷积核共享一个参数
- 稀疏连接: 只在卷积视野内连接,不在全图连接
理论上,
- 万能逼近定理: 只要激活函数选择得当,神经元个数足够多的,使用三层神经网络就可以实现对任何一个从输入向量到输出向量的连续映射函数的逼近
- 卷积神经网络的层次结构与人类视觉认知机制具有一定的一致性。
目前已经证明,视觉皮层具有层次结构。从视网膜传来的信号首先到达初级视觉皮层(primary visual cortex),即V1皮层。V1皮层简单神经元对一些细节、特定方向的图像信号敏感。V1皮层处理之后,将信号传导到V2皮层。V2皮层将边缘和轮廓信息表示成简单形状,然后由V4皮层中的神经元进行处理,它颜色信息敏感。复杂物体最终在IT皮层(inferior temporal cortex)被表示出来。
作者:Amusi 链接:https://zhuanlan.zhihu.com/p/36160648
参数和计算量的计算
卷积输入为W x H x C, 卷积核 K x K x N,输出 W’ x H’ x C’
Todo
调试、修改模型的经验
数据层面
- 获取更多的数据
- 数据增广
- 归一化
- 研究数据特点排除噪音
- 训练时排除噪音数据(特别差的数据)
设计层面
- 先根据粗略的性能来迭代算法,之后再进行精细的调参
- 多参考已有工作的代码、参数
- 数据集大的话可以现在小规模数据上验证和调参,再去大规模数据集
细节
- 利用好验证集评估性能
- 权重初始化方法
- 学习率
- 正则化
- dropout
- bn
- bias
- 激活函数的选择
- rnn要用tanh,用relu容易梯度爆炸
RNN 中为什么要采用 tanh,而不是 ReLU 作为激活函数? - 何之源的回答 - 知乎
- batch size的选择
一般batch size大一些性能会好一些
深度学习中的batch的大小对学习效果有何影响? - 程引的回答 - 知乎
https://www.zhihu.com/question/32673260/answer/71137399
- early stop