如果对卷积神经网络感兴趣的可以在b站看李宏毅
老师的视频,每次看都会有一些新的理解。
接下来就是我对卷积神经网络的理解。
第一,你要理解你所做任务的输入是什么,然后卷积神经网络就是一个函数
,把任务的输入进行处理,输出你所想要的东西。把卷积神经网络当做一个函数,然后这个函数里面会有卷积操作、池化操作、平铺操作、全连接操作
等。
卷积操作:
如下图,66的矩阵就是我们输入的数据,然后33的Filter 1就是我们的卷积核
,我们把这个卷积核首先和输入的矩阵进行对应的运算,把输入矩阵的左上角的3*3和进行对应相乘然后加起来,就是所谓的卷积操作。
比如下图中的,第一个结果3,就是1 * 1 +(-1)*0 +(-1)*0 +(-1)*0 + 1 * 1 +(-1)*0 + 0 *(-1)+ 0 *(-1)+1 * 1 ,结果就是3。就采用这样的方式,卷积核再和输入矩阵的下一个部分进行卷积操作,再输出一个数。图中stride为1,也就是输入矩阵的下一部分在现在操作的地方每次只向右移动一个元素。
池化操作
下图是上图卷积核对输入矩阵操作之后的结果,可以自行算一算结果,看是否和下图一样,如果一样,说明你已经学会这个卷积操作了。
池化操作:
有最大池化
、平均池化
等池化操作。
最大池化操作就是在当前的矩阵里面,然后进行分块,得到每块里面的最大值,再把每块里面的最大值拼在一起,得到最后的结果。
下图经过最大池化之后,就是图2。
平均池化和最大池化的不同点在于,最大池化是保留每块中的最大值,而平均池化是得到每块的平均值。
图1
图2
平铺操作:
就是把经过了卷积池化等操作之后的矩阵(卷积池化可进行多次操作)平铺变成一个序列。比如上面的矩阵经过平铺之后,就会变成下图。
全连接操作:
上图中就是在经过上面的平铺操作之后,变成一个元素序列,然后你可以自身选择输出的元素的个数大小,但是全连接就是每一个输入的元素和输出的元素都是连接起来的(记得全连接这个概念好像是离散数学还是什么课好像有讲过,应该是我理解的这个意思吧)公式如下:
输出的元素=激活函数(系数*输入的元素+偏置)
第二个,你要设置好模型的loss函数。
loss函数就是判断你这个模型到底好不好的一个函数,常见的loss函数大家可以自己去搜索。常见的就是MSE
第三个,要找到模型的最优参数
我们其实在卷积神经网络当中有很多参数都是需要找到最优的,我们先来看看有哪些参数是需要优化的。
1.卷积层
卷积核的具体数值、偏置(卷积操作之后,再加上偏置)
2.池化层
3.全连接层
权重
上面的参数我们都是先随机初始化
,然后经过一批次训练之后,我们要进行调节参数,使得loss函数最小。最粗暴的方法就是穷举所有的参数组合,但是那得算到天荒地老也算不出来,所以我们要采取一些方法快速找到最优参数,常用调节参数用的方法有梯度下降、adam等等,可以让参数快一点收敛到最优参数。
具体的梯度下降方法可以去查查博客,或者看看李宏毅老师的视频
以上就是基本的cnn概念,全凭个人理解,如有错误,可以在评论区指出哦嘻嘻嘻嘻。