博客
关于我
2017CS231n笔记5.CNN
阅读量:640 次
发布时间:2019-03-15

本文共 2272 字,大约阅读时间需要 7 分钟。

##CNN发展与架构详解

###CNN发展简史CNN的发展历程可以追溯到人工智能领域的早期,许多关键技术的诞生为后来的深度学习奠定了基础。

1957年,第一代感知机(Perceptron)正式诞生。这标志着人工神经网络研究的开始。1960年代,学者们开始尝试将多个感知机叠加,形成多层结构,以提高分类能力。

1986年,鲍普算法(Backpropagation, BP)终于被公开,解决了深度神经网络的训练难题。这一技术使得复杂的多层网络可以通过反向传播法进行参数更新,成为现代深度学习的基石。

2006年,亨廷顿(Hinton)提出了深度学习模型的初步框架,提出使用受限玻尔兹曼机(RBM)进行预训练,显著提高了模型的训练效率。

2012年,AlexNet在ImageNet图像分类比赛中击败人类 '{@em'}_smart人类', 85种手动分类达到85%以上的准确率。这一突破表现了深度学习模型的强大能力。

CNN的发展则呈现出明显特点。1960年代,研究者发现图像的建筑特征可以通过特定的滤器检测。1980年代,日本学者开始研究基于卷积核的图像处理方法。1998年,杨立坤(Yan LeCun)在年会上展示了第一个成功的CNN,结合了BP算法对CNN参数进行梯度下降训练,并成功应用于邮编识别任务。尽管这些早期的工作已展现出较强的实用性,但由于样本量有限的分类任务特点,应用范围仍然有限。

2012年,AlexNet等的成功开创了深度卷积学习的新纪元。如今,卷积神经网络已经渗透到图像处理、视频分析、自动驾驶等多个领域。

###CNN架构解析CNN的核心组件包括卷积核(Convolution Kernel)和池化层(Pooling Layer)。这两层的组合使得CNN在图像处理任务中大幅减少计算量,同时提高了模型的耐度和的效率。

  • 卷积核的作用

    卷积核是CNN的灵魂,而其名字来源于数学中的卷积运算。通过卷积核在图像上的滑动,可以捕获局部特征信息,这与人类视觉系统中初级视神经元的功能相似。

  • 卷积核的参数共享特性

    卷积核的参数是可以共享的,这与传统的富余连接( Fully Connected Networks, FCN)相比,使得传统网络的参数数量急剧下降。比如,一个5x5的卷积核可以在整个图像上滑动,只要计算一次滤镜参数,所有位置就能利用其效果。这一特性使得CNN在处理大量训练数据时显得更加高效。

  • 池化操作(Pooling)

    池化操作是CNN中高度优化的部分,通过降采样图像,使得模型可以不受像素洞 kombiniert-level特征的变化影响。在池化过程中,最常见的是最大值池化(Max Pooling)或平均池化。最大值池化可以更好地保留重要的特征,因为大范围的激活更有可能反映特征的重要性。

  • 池化带来的尺寸变化

    池化操作会显著减少图像的尺寸,降低计算开销。最大池化会将一个图像的高度和宽度都减少到原来的单位数,而深度维度则因为卷积核作用而保持不变或稍有减少。

  • 中间非线性激活层

    卷积核后的激活(Activation Patterns)可能是非线性的,用来捕捉复杂的特征关系。中间层的非线性激活(如ReLU)使得模型能够学习到更复杂的特征表示。

  • ###卷积核与池化的诞生源由

    卷积核这一概念源自信号处理领域中的卷积运算。卷积运算可以看作是对两个信号在空间域上的应用,输出的每个位置都是输入信号在该位置及其邻域内的加权和。这一概念在图像处理中得到了自然化的诠释,即通过卷积核在图像上的移动来捕获局部信息特征。

    针对卷积操作的具体尺寸计算,假设输入图像的尺寸为H x W x C,滤镜尺寸为F x F x C_in,其中C_in是输入通道数。stride是滤镜移动的步长,默认是1。如果stride大于1,相当于进行降采样。

    图像的边缘处理是一个关键问题。例如,当滤镜尺寸大于输入图像的边缘,就会需要填充(Padding)的操作。常用的填充方式是零填充。我们可以用一个通用的公式来计算卷积操作后的输出尺寸。H_out = (H + 2 * fill_size) // stride - 1。同理,对于W_out也是如此。

    ###应用实例以标准的AlexNet网络为例,输入图像尺寸为32x32x3。通过两次卷积操作,每次使用5x5的滤镜,且stride=2。假设使用零填充,那么输出图像尺寸会是32, 32, 6。再经过两次卷积和最大值池化,图像尺寸减少到8x8x6。这样就能够显著降低计算复杂度。

    最后的全连接层(Fully Connected Layer)会连接所有卷积激活后的特征,生成真正的分类信息。这个过程带有额外的偏置项(Bias Terms),用于调整不同区域的权重和偏置,使得最终的分类结果更具鲁棒性。

    ###注意事项

  • 在选择stride值时要注意,其主要用途是控制输出图像的尺寸。大stride会使得输出图像尺寸减少,但可能丢失一些细节信息,降低分类准确率。

  • 不同的池化方法会对模型的表现产生影响。最大池化能更好地保留重要特征,适合用于分类任务;而平均池化则对特征的一致性更有利。

  • 性能调优与优化

    整个CNN架构中的超参数设置对性能至关重要。这些参数包括卷积核的尺寸、stride的大小、填充方式、池化方法等。合理的超参数设置可以显著提高网络性能。

  • 总而言之,卷积神经网络通过参数共享和降采样的方式,为深度学习打下了坚实的基础。这一架构不仅使得图像分类任务变得高效,而且也为更复杂的图像理解任务开辟了道路。

    转载地址:http://yohlz.baihongyu.com/

    你可能感兴趣的文章
    Leetcode第557题---翻转字符串中的单词
    查看>>
    Problem G. The Stones Game【取石子博弈 & 思维】
    查看>>
    Java多线程
    查看>>
    openssl服务器证书操作
    查看>>
    我用wxPython搭建GUI量化系统之最小架构的运行
    查看>>
    我用wxPython搭建GUI量化系统之多只股票走势对比界面
    查看>>
    selenium+python之切换窗口
    查看>>
    重载和重写的区别:
    查看>>
    搭建Vue项目步骤
    查看>>
    账号转账演示事务
    查看>>
    idea创建工程时错误提醒的是architectCatalog=internal
    查看>>
    SpringBoot找不到@EnableRety注解
    查看>>
    简易计算器案例
    查看>>
    在Vue中使用样式——使用内联样式
    查看>>
    Find Familiar Service Features in Lightning Experience
    查看>>
    Explore Optimization
    查看>>
    连接Oracle数据库经常报错?关于listener.ora和tnsnames.ora文件的配置
    查看>>
    解决数据库报ORA-02289:序列不存在错误
    查看>>
    map[]和map.at()取值之间的区别
    查看>>
    成功解决升级virtualenv报错问题
    查看>>