Preknowledge卷积神经网络,是在神经网络的基础上进化而来的,想要理解卷积神经网络的原理,首先要理解什么是神经网络。神经网络的本质是一个分类器,如果将一个网络视为黑箱,那么它的输入是一个对象的特征向量,输出是这个对象所属的类别。主要由三个部分组成:损失函数(lossfunction)激活函数(activationfunction)神经元(Cell)损失函数(LossFunction)神经网络作为一个分类器,之所以能够work,最主要的原因在于训练。一个网络的初始参数是完全随机的,这样将数据输入网络,得到的输出也是完全随机的。但是在训练过程中,输入的数据是有标注的,即我们知道每一条输入数据的真实类别。在每一次训练后,损失函数会获得本次的分类结果,通过将每一条结果与真实类别比较,损失函数会给出本次分类与真实类别的差距。这个差距将指导神经网络更新参数。损失函数(LossFunction)损失函数具体的实现形式有很多,包括softmaxloss、SVMloss等等。但是只需要记住一点,损失函数的作用是衡量一次分类结果与真实类别的差距。如果一次分类全部正确,那么那次的损失(loss)就是0。输入网络本体输出损失函数的作用位置标准类别激活函数(ActivationFunction)事实证明,为了让神经网络计算出有效的函数,必须使用非线性激活函数,加入非线性因素,因为线性模型的表达能力不够。激活函数种类很多,实际选择哪一个,需要具体分析:神经元其中,Layer1叫做输入层,Layer2叫做隐藏层,Layer3叫做输出层卷积神经网络(ConvolutionalNeuralNetworks)课程内容:I.计算机视觉II.边缘检测III.卷积计算变量IV.简单卷机网络实例V.池化层VI.CNN实例计算机视觉(ComputerVision)图片分类目标检测图片风格转移计算机视觉(ComputerVision)处理一张1000×1000(约1M)的图片特征向量的维度达到了1000×1000×3(RGB通道),即特征为300W假设采用FCN,第一个隐藏层中有1000个隐藏单元,则𝑊[1]会有30亿个参数在参数如此大量的情况下:I.需要足够的数据防止发生过拟合和竞争需求II.需要巨大的内存进行数据处理如何解决呢?计算机视觉(ComputerVision)CNN出场了!什么是CNN?CNN,即convolutionalneuralnetwork,卷积神经网络,是近些年来在计算机视觉领域里程碑式的算法。在目标检测、对象识别、图像分割、超分辨、对象跟踪、对象检索等等一些列子问题中,基于CNN算法的识别精度都远远高于传统算法,可以说CNN正是推动此次人工智能浪潮的主要力量。CNN:卷积运算边缘检测给出这样一张图,让电脑“看清楚”里面是什么物体。做的第一件事是:那么如何检测边缘呢?检测图片中的边缘如图:垂线边缘:栏杆,人体轮廓线水平边缘:栏杆CNN:卷积运算对6×6×1灰度图像,检测垂直边缘I.构造矩阵,术语叫做“过滤器”(filter)构造的垂直边缘的过滤器:10−110−110−1(这是最简单的,也可以自己构造)II.对6×6的图像进行卷积(*)运算30127415893127251301317842162824523910-110-110-1*CNN:卷积运算输出将会是一个4×4矩阵,也可以看做是一个4×4的图像*10-110-110-1=𝑎131001−127411508−193121702−15130131784216282452396×6Imagefilter4×4Image𝑎1=3×1+1×1+2×1+0×0+5×0+7×0+1×(-1)+8×(-1)+2×(-1)=-5CNN:卷积运算301102−174151809−131271205−1130131784216282452393011207−141581903−112721501−13013178421628245239同理,计算a2,右移(在此规定移动1步)10-110-110-1*-5-410-110-110-1*==-5-40CNN:卷积运算30127415893127251301311708−142161208−124521309−110-110-110-1-5-408-10-2230-2-4-7-3-2-3-16*=6×6Imagefilter4×4Image为什么这个可以做垂直边缘检测呢?CNN:卷积运算10101000010101000010101000010101000010101000010101000010-110-110-1*把这个6×6的矩阵看作是一个图像,那么显示出来就像下边这个图片,左边白色,右边黑色。其中,有一个明显的垂直边缘在图像中间,这条垂直线是从黑到白的过渡线,或者从白到深色。CNN:卷积运算10101000010101000010101000010101000010101000010101000010-110-110-1030300030300030300030300*=可以看出,过滤器左边是明亮的像素,中间并不需要考虑,所以设为0,右边是深色的像素。这里检测出的边缘有点粗,因为图片太小了,如果是1000×1000的图像,会很好的检测出边缘。CNN:卷积运算前边讲的过滤器只是其中一种数字组合,也有其他组合。把过滤器的9个数字当作9个参数,使用BP(反向传播)算法,通过数据反馈,让神经网络自动去学习它们。301274158931272513013178421628245239*w1w2w3w4w5w6w7w8w9=神经网络可以学习出任何角度的边缘检测器。卷积运算变量:padding使用3×3的过滤器,会有两个缺点:I.每做一次卷积运算,图像会缩小;II.角落边缘的像素,只被一个输出使用;比如A位置,只能使用一次;B位置可以使用多次,因为有许多3×3与之重叠AB*如何解决这两个问题呢?卷积运算变量:padding做卷积之前,填充这幅图像。A可以发现:I.卷积之后,得到了一个和原始图像相同大小的图像;II.A位置也有重叠,角落的信息利用提高了。两种填充方法:I.Valid卷积:不填充II.Same卷积:输出图像大小=原始图像大小卷积运算变量:步长(Strided)233474462961609287433−1408338977836634421834632419830139214344102-10391*=Strided=2适应参数计算量卷积运算变量:步长(Strided)23734464296641807243348−13083977836634421834632419830139214344102-10391100*=Strided=2卷积运算变量:步长(Strided)2374632494669871403234838−190737836634421834632419830139214344102-1039110088*=Strided=2卷积运算变量:步长(Strided)23746296698743334484389771803266344−12013834632419830139214344102-103911008869*=Strided=2卷积运算变量:步长(Strided)23746296698743348389778366344218334464324191803201392−11043344102-10391100886991127447174*=Strided=2卷积运算:三维卷积*=对三维立体卷积:RGB图像6×6×3,3指的是三个颜色通道,可以想象成3个6×6图像的堆叠。过滤器也是三维的,维度为3×3×3,也是对应红、绿、蓝三个通道。卷积运算:三维卷积*=三维过滤器:10−110−110−1000000000000000000:红色通道的垂直边缘检测10−110−110−110−110−110−110−110−110−1:垂直边缘检测卷积运算:三维卷积*=Filter1—垂直边缘过滤器Filter2—水平边缘过滤器output1output2用2个不同的特征检测过滤器分别卷积原图像,得到了2个4×4的输出。池化层(Poolinglayers)目的:缩减模型的大小142129111323561292634×42×2最大池化:142129121223561283744×42×2平均池化:常见的两种池化:池化层(Poolinglayers)作用:如果在过滤器中提取到某个特征,那么保留其最大值;如果没有提取到,说明可能并不存在这个特征,其中的最大值也还是很小。特点:不需要学习任何值,最大池化是神经网络某一层的静态属性。卷积网络示例典型的卷积神经网络一般有三层:卷积层+池化层+全连接层手写体数字识别实例假设:输入32×32×3RGB模式的图片,图片中含有某个数字(比如6)需要识别卷积网络示例00680..032×32×328×28×814×14×810×10×165×5×16𝑓=5𝑠=1MaxPooling𝑓=2𝑠=2𝑓=5𝑠=1MaxPooling𝑓=2𝑠=2Covn1Pool1Covn2Pool2Fc3平整展开06100..0400120400个元素和120个元素紧密相连,就是全连接层。Fc407300..084SoftMax卷积网络示例过滤器大小过滤器个数填充层数步幅输出激活值尺寸计算参数输入32×32×330720卷积层1(Conv1)5×560128×28×86272208池化层1(Pool1)2×210214×14×815680卷积层2(Conv2)5×5160110×10×161600416池化层2(Pool2)2×21025×5×164000全连接层3(Fc3)120×112048001全连接层3(Fc4)84×18410081SoftMax10×110841聚类课程内容:无监督学习K均值算法优化目标随机初始化选择聚类数聚类:无监督学习简介聚类:无监督学习简介聚类:K均值算法算法接受一个未标记的数据集,然后将数据聚类成不同的组。K-均值算法是一个迭代算法聚类:K均值算法迭代1次迭代3次迭代10次K-均值算法:优化目标K-均值最小化问题,即最小化所有的数据点与其关联的聚类中心点之间的距离之和。优化目标是:找到使损失函数最小的距离和相应的中心点从算法可以看出:迭代计算每个点到中心的距离,是在减小距离差引起的损失;迭代更改中心点,是在减小μi引起的损失。K-均值算法:随机初始化K-均值有一个问题:可能会停留在一个局部最小值处,取决于初始化。解决方法:多次运行K-均值算法,比较损失函数,找出损失函数最小的结果。K-均值算法:选择聚类数没有所谓最好的方法,一般是根据具体的问题,人工选择。选择聚类数的参考原则:肘部法则K=3的时候达到一个肘点,之后代价函数值就下降的很慢,就选K=3谢谢!