1.Convolutional Neural Network
卷积神经网络主要用于图像视觉识别方面,例如输入一张图片,判断是什么东西,图片在电脑中存储的格式是tensor,channel*width*height,channel一般为RGB的三个通道,当图片进行输入时,一般将维度为3的tensor展平为维度为1的tensor,作为一个向量输入:
但是这样参数数量太多,我们一般不使用fully connected。
Method 1:receptive
对于影像来说,其实在过程中需要检测到有没有出现一些有用的形态特征(pattern).因此我们一般将tensor划分为多个receptive field,对于每一个receptive field对应多个输出神经元,每个神经元只需要关注对应的receptive field即可。
一般关于receptive field选取3*3的kernel size,移动步长(stride)一般取1或2,当移动到空的地方时可以根据padding参数选择是否填充以及填充方式,
Method 2:parameter sharing
有许多神经元做了相同的事情,因此我们可以采用共享参数的方法进行优化,减少参数数目。
共享参数就是让任务相同的两个神经元所有参数都一样,如下图所示:
Summary:
bias大flexibility小,专门为影像设计,所以应用在影像上效果很好,但是运用在其他方面效果不一定好。
Convolutional Layer
Convolutional Layer即receptive field+parameter sharing,选取filter进行卷积,filter的大小为kernel size*输入图片的channel,例如输入图片为3通道,kernel size为3*3,则filter的大小即为3*3*3。没经过一次卷积层,虽然kernel size不变,但是实际探测的区域在原图中已经变大了,filter其实就是参数,卷积层与神经网络的关系:每个Filter就是各个感受野上对应神经元共享的一组参数,Filter的个数就说明了感受野上有多少个神经元在进行观测。
Pooling
池化层没有参数,经常用max pooling 只是将图片减小,一般为一层卷积层,一层池化层。主要作用为减少计算量,现在由于算力的提升,也可以全为卷积层不用池化层。
summary
传统机器学习问题:
我们得到的训练数据有可能和真实数据差别很大,想要训练数据和真实数据接近的方法是提高N和降低H即提高数据集或减少参数可选择数量,但是这两个方法在传统机器学习中均有问题:
我们可能很难提高N的数量,能获得的数据集有限只有那么多,而如果我们降低H,可能会使得原本得到的loss就很大,解决办法是采用深度学习。
深度学习一般采用deep(深)的模型, 而不是用层数少一层中神经元较多的模型
虽然一层的模型也可以表示所有式子,但是当模型只有一层时往往需要很多输入,而较深的模型需要的输入较少
部分图片来自李宏毅2021春季机器学习课程笔记5:Convolutional Neural Network(CNN)_Andy in boots的博客-CSDN博客