目录
机器学习部分
为什么线性分类任务组合后可以解决非线性分类任务?
可以理解为第一层感知器做的是一个空间变换,经过了第一层的空间变换后,第二层感知器看到的就是线性的分类任务。
那么是不是层数越深越多越好呢
并不是,多层神经网络在只是简单堆叠卷积层和池化层出现梯度消失和梯度爆炸的几率大大增加,除此以外还会存在退化 的问题,就是越深反而效果不好,解决退化问题的办法就是GoogLeNet的残差思想。
什么是梯度消失和梯度爆炸?
梯度消失(爆炸):反向传播过程中误差每一次乘以一个<(>)1的数,那么随着深度的加深,误差会越来越小(大),从而导致无法更新神经网络前面的权重或参数,就是梯度消失(爆炸)。
如何解决梯度消失和局部最小值问题呢?
谈论梯度消失,就要首先考虑误差反向传播 ,最后一层输出层在看到误差后,本想将误差返回给之前层来更新,但是对于Sigmod激活函数除了落在正负2之间是比较理想的状态,其他情况当落在饱和区里时,会出现很小的梯度 ,则误差乘以多次很小的梯度后,误差也变得很小,则不会更新前面的参数,导致误差无法传播。解决方法:提前设置一个较好的参数
除此之外,多层神经网络容易陷入局部极小值 ,难以训练,且随着层数增多,局部极小值成倍增加 。解决方法:找一个较好的起始点
如何实现解决方法:逐层预训练
多层神经网络可以看成是一个复合的非线性多元函数。,每一层的输出可以当成第二层的输入。
编程中的具体方法:
- 对数据进行标准化处理
- 权重初始化
- BN(batch normalization)
卷积神经网络部分
传统神经网络也可以用于计算机视觉,那为什么还需要卷积神经网络呢?
1.全连接网络处理图像的问题: 权重矩阵的参数太多,容易过拟合;
卷积神经网络的解决办法:局部关联,参数共享
局部关联:一个神经元不再是和图片上所有的像素点相连接,而是与一个局部块(卷积核或者滤波器)相连
参数共享:通过滑动窗口一步步的移动,在一次滑动之中,参数是共享的 不变的,好处就是可以极大的降低参数量(从原先的1000 * 1000 变成了 5 * 5 + 1(偏置项)),
相同之处: 与传统神经网络相比;卷积神经网络仍然是层级结构
为什么有的时候padding要设置成为same呢?
1.为了保持特征图大小不变,更方便控制信息的传递和提取,同时为了防止特征图边缘部分信息因为卷积核的大小而受到影响
卷积核的深度(channel)和个数
卷积核的深度和输入图的深度或者说通道(channel)相同。
卷积核的个数和输出图的深度或者说通道(channel)相同。
为什么全连接层往往放到最后
我认为主要原因有两个:
- 由于卷积层和池化层为了提取特征,则全连接层放在最后则负责将这些特征进行组合和分类以便进行预测。
- 全连接层参数量巨大,放在最后有利于有效控制网络的参数规模。
因为才疏学浅,文章可能写得不够好或者有不对的地方,请各位多多留言指正。