机器学习-CNN卷积神经网络整理

【前言】

 为了理解作为机器学习(ML)分支的深度学习(DL),看了很多资料,一直试图找出两者之间比较本质的区别,目前的理解是,机器学习中很重要的步骤是对数据集的“特征提取”,数据集必须足够多,并含有具有“辨识度”的信息;而深度学习中,是从给定的数据集中提取高层次的特征,并将传统的神经网络进行参数化。如果说机器学习的输入是“图像的特征”,那深度学习的输入是“图像的全部像素”,从杂乱的数据中自动学习。因而提供了更大的自由度,也避免了由于特征选取不足导致的算法性能下降。那么深度学习中是怎么得到“特征”呢?就引入了很重要的知识-CNN(卷积神经网络)。


1. 基础

计算机视觉、神经网络等从命名上就能看出是对人的视觉的仿照,记得研究生课题做三维立体图像处理相关时,对人如何感受深度信息(双目视觉)、如何识别物体等看过一些资料,通俗的说,人之所以可以感知三维世界,在于左右眼观看同一物体时,得到有一定视差的两幅图像,经大脑融合,形成立体图像,其实是视差与深度之间的关系。

视觉神经学有以下几个关键点:

1) 人对一张图的识别由多个局部的识别点构成;

2) 人的不同神经员对不同的形状有识别能力,且神经具有叠加能力;

3)高层复杂的图案可以由底层简单的线条组成。

有以上几个特点后,可以想到,在做图像识别(分类)时,可将一整幅图像拆分为若干个局部图,对不同形状特征分别识别后,进行叠加,以上就形成了神经网络的理论基础。

2. 卷积基础

卷积可以模拟不同神经元对不同形状刺激的不同反映,卷积的数学基础网上、书上有很多资料,大多是比较抽象的公式,找到了一个讲解的非常通俗易懂的资料,将卷积形象的简化成一组x+y=n的直线,遍历x+y=n就相当于将一条“毛巾”【卷】起来,非常形象了。【点击打开链接】;另一篇中对卷积做了更进一步的详细解释,包括(f*g)(n)怎么运算:【点击打开链接】。

其实图像处理中卷积的用途很常见,例如对一幅有噪点的图像处理,去噪时,常用opencv相应几种函数:中值滤波、高斯滤波等平滑图像,其原理也是选取n*n尺寸的过滤器对图像进行处理。

3. CNN

之前一直很难理解深度学习中若干个层的含义,经过多个资料的介绍,终于有了比较形象易懂的理解。

以1中的神经学为基础,既然一张图可以分为很多局部图,对于一幅图的处理,可以设置多个过滤器,对不同特征进行筛选匹配,常见的特征如曲线、直线、边缘等等,用相应特征作过滤器,遍历原图,检测原图像素与过滤器之间的匹配程度(求卷积),匹配度越高,得到的卷积结果值越大,不匹配,可能值为0,CNN中将值比较大的情况称为激活映射(activat map),过滤器越多,激活深度越大,对输入内容越了解。

此时只得到了一些低级特征的映射,可对更高级的特征,如:圆、四边形等做过滤器,或者根据识别对象的具体特征确定特定的过滤器,检测更多高级特征。

神经网络中还有很重要的概念是:权重,通过权重和先前层之间的点积,可以得到不同分类的正确概率。此外,与机器学习的SVM类似,也需要对数据集进行训练和测试。(该部分以后补充)

CNN在计算机视觉中的应用很广泛,特别是手写数字的识别、图像分类、图像分割、图像标记等。在无人驾驶、自然语言处理、机器翻译等方面的应用也很热门。

你可能感兴趣的:(机器学习,深度学习,机器学习)