人工智能AI基本概念整理 2 feature map、卷积核、卷积核个数、filter、channel的概念解释

神经网络:一种可以通过观测数据使计算机学习的仿生语言范例,深度学习的形式,从广义上说深度学习的网络结构也是多层神经网络的一种。

CNN:卷积深度网络,是深度学习的基础。

ANN:人工神经网络

DNN: ANN人工神经网络有两个或两个以上隐藏层,称为DNN

多层感知机:至少一个隐藏层是多层感知机

感知机:没有隐藏层是感知机

深度学习: 是一种实现机器学习的技术,一组强大的神经网络学习技术,它适合处理大数据,深度学习是神经网络的发展延申。

简单说,人工智能范围最大,涵盖机器学习、深度学习和强化学习。如果把人工智能比喻成孩子大脑,那么机器学习是让孩子去掌握认知能力的过程,而深度学习是这种过程中很有效率的一种教学体系。

有人表示,人工智能是目的,是结果;深度学习、机器学习是方法,是工具。

扫描二维码关注公众号,回复: 14932362 查看本文章

OpenCV:开源计算机视觉库,OpenCV从自OpenCV 3.1版以来,dnn(深度神经网络)模块一直是opencv_contrib库(opencv的附加库)的一部分,在3.3版中,把它从opencv_contrib仓库提到了主仓库(opencv)中。新版OpenCV dnn模块目前支持Caffe、TensorFlow、Torch、PyTorch等深度学习框架。 OpenCV 3.3开始就提供了读取TensoFlow模型的接口了,不过现在能支持的模型并不多。另外,新版本中使用预训练深度学习模型的API同时兼容C++和Python。

TensorFlow:是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

张量的理解:张量是有大小和多个方向的量。这里的方向就是指张量的阶数。

我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。

激活函数:将神经网络上一层的输入,经过神经网络层的非线性变换转换后,通过激活函数,得到输出。常见的激活函数包括:sigmoid, tanh, relu等。

神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。

激活函数的用途(为什么需要激活函数)?

如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。

损失函数:度量神经网络的输出的预测值,与实际值之间的差距的一种方式。常见的损失函数包括:最小二乘损失函数、交叉熵损失函数、回归中使用的smooth L1损失函数等。

优化函数:也就是如何把损失值从神经网络的最外层传递到最前面。如最基础的梯度下降算法,随机梯度下降算法,批量梯度下降算法,带动量的梯度下降算法,Adagrad,Adadelta,Adam等。

CNN卷积神经网络:卷积神经网络是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,其三个关键的操作,其一是局部感受野,其二是权值共享,其三是pooling层,有效的减少了网络的参数个数,缓解了模型的过拟合问题。

Batch Normalization:(简称BN)就是对每一批数据进行归一化

keras模型:Keras是一个非常方便的深度学习框架,它以TensorFlow或Theano为后端。

OCR:Optical Character Recognition,光学字符识别。

深度学习训练中常用的名词:

(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;

(2)iteration:1个iteration等于使用batchsize个样本训练一次;

(3)epoch:1个epoch等于使用训练集中的全部样本训练一次,通俗的讲epoch的值就是整个数据集被轮几次。

比如训练集有500个样本,batchsize = 10 ,那么训练完整个样本集:iteration=50,epoch=1.

batch: 深度学习每一次参数的更新所需要损失函数并不是由一个数据获得的,而是由一组数据加权得到的,这一组数据的数量就是batchsize。

batchsize最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)。当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,成为完成了一次epoch。

feather map的理解

在cnn的每个卷积层,数据都是以三维形式存在的。你可以把它看成许多个二维图片叠在一起(像豆腐皮一样),其中每一个称为一个feature map。

feather map 是怎么生成的?

输入层:在输入层,如果是灰度图片,那就只有一个feature map;如果是彩色图片,一般就是3个feature map(红绿蓝)。

其它层:层与层之间会有若干个卷积核(kernel)(也称为过滤器),上一层每个feature map跟每个卷积核做卷积,都会产生下一层的一个feature map,有N个卷积核,下层就会产生N个feather map。

多个feather map的作用是什么?

在卷积神经网络中,我们希望用一个网络模拟视觉通路的特性,分层的概念是自底向上构造简单到复杂的神经元。楼主关心的是同一层,那就说说同一层。

我们希望构造一组基,这组基能够形成对于一个事物完备的描述,例如描述一个人时我们通过描述身高/体重/相貌等,在卷积网中也是如此。在同一层,我们希望得到对于一张图片多种角度的描述,具体来讲就是用多种不同的卷积核对图像进行卷,得到不同核(这里的核可以理解为描述)上的响应,作为图像的特征。他们的联系在于形成图像在同一层次不同基上的描述。

下层的核主要是一些简单的边缘检测器(也可以理解为生理学上的simple cell)。

上层的核主要是一些简单核的叠加(或者用其他词更贴切),可以理解为complex cell。

多少个Feature Map?真的不好说,简单问题少,复杂问题多,但是自底向上一般是核的数量在逐渐变多(当然也有例外,如Alexnet),主要靠经验。

卷积核的理解

卷积核在有的文档里也称为过滤器(filter):

每个卷积核具有长宽深三个维度;

在某个卷积层中,可以有多个卷积核:下一层需要多少个feather map,本层就需要多少个卷积核。

卷积核的形状

每个卷积核具有长、宽、深三个维度。在CNN的一个卷积层中:

卷积核的长、宽都是人为指定的,长X宽也被称为卷积核的尺寸,常用的尺寸为3X3,5X5等;

卷积核的深度与当前图像的深度(feather map的张数)相同,所以指定卷积核时,只需指定其长和宽 两个参数。例如,在原始图像层 (输入层),如果图像是灰度图像,其feather map数量为1,则卷积核的深度也就是1;如果图像是grb图像,其feather map数量为3,则卷积核的深度也就是3.

卷积核个数的理解

如下图红线所示:该层卷积核的个数,有多少个卷积核,经过卷积就会产生多少个feature map,也就是下图中 `豆腐皮儿`的层数、同时也是下图`豆腐块`的深度(宽度)!!这个宽度可以手动指定,一般网络越深的地方这个值越大,因为随着网络的加深,feature map的长宽尺寸缩小,本卷积层的每个map提取的特征越具有代表性(精华部分),所以后一层卷积层需要增加feature map的数量,才能更充分的提取出前一层的特征,一般是成倍增加(不过具体论文会根据实验情况具体设置)!

发布于 2022-12-12 15:11・IP 属地江苏

猜你喜欢

转载自blog.csdn.net/u012294613/article/details/130114429
今日推荐