当前位置: 首页 > article >正文

【机器学习】 卷积神经网络 (CNN)

文章目录

    • 1. 为什么需要 CNN
    • 2. CNN 的架构
    • 3. 卷积层
    • 4. 池化层
    • 5. CNN 的应用

1. 为什么需要 CNN

  • 前提:利用前置知识,去掉全连接神经网络中的部分参数,提升学习效率。
  • 本质:在 DNN 之前加上 CNN,先去除不必要的参数,再进入 DNN。
  • 常用于图片识别
    • 对图像特征的局部性(稀疏连接)和平移不变性(参数共享)进行处理。
    • 分层特征提取:从低级到高级,捕获图片中的复杂结构。
    • 池化层:降维,减少参数量。

2. CNN 的架构

  1. 特征1(卷积层)

    • 检测局部图案,不需要查看整张图。
    • 满足稀疏连接特性。
  2. 特征2(卷积层)

    • 对不同位置相同的图案,使用相同的参数(Filter)。
    • 满足参数共享特性。
  3. 特征3(池化层)

    • 通过抽样将图片缩小,保留最重要的特征,且不影响最终结构。

3. 卷积层

  • 总体功能:卷积层用于特征提取,通过稀疏连接和权值共享,将输入图像与滤波器进行卷积操作,得到多个特征图

卷积核

  • 特点:过滤器,相当于 DNN 中的神经元,卷积核就是 CNN 中的神经元。

  • 作用:检查图像中是否存在某些图案。

  • 优点:

    • 满足特征1:可以只检测局部区域。
    • 满足特征2:不同位置的图案共享同一卷积核。
  • 注意:卷积核的尺寸会根据输入图像的维度进行调整。

    • 例如:若输入图像维度为 1,卷积核为 3×3,若图像维度为 25,卷积核变为 25×3×3。
  • 通常情况下,多个不同的卷积核被用于构建过滤器,每个卷积核提取不同的特征。

特征映射

  • 过程:卷积核滑动并与图像局部进行卷积操作,得到特征图。
  • 注:卷积后的特征映射维度与卷积核的数量相关,而与当前图像维度无关。
    • 示例:输入 28×28×3,卷积核 3×3×3,核数为 5,步幅 1 → 输出为 26×26×5。

改进

  • 问题:同一个卷积核处理不同大小的图案较为困难。
  • 解决方案:在 CNN 前加一层进行图像加工(如缩小、旋转等处理)。

4. 池化层

功能

  • 池化层将卷积层输出划分为多个区域,从每个区域中提取最大值或平均值,从而减少图像尺寸,同时保持图像特性。
  • 保持平移、伸缩、旋转不变性。
  • 减少参数量,提升模型的泛化能力。

Flatten

  • 过程:池化层操作后,将提取到的特征平铺,输入到 DNN 层进行深度学习。

池化类型

  • 平均池化:对每个区域取平均值,保留整体信息。
  • 最大池化:对每个区域取最大值,提取最显著的特征。

5. CNN 的应用

  1. AlphaGo

    • 只使用了卷积层,不使用池化层。
  2. 语音识别

    • 将语音转为频谱图,卷积核仅在纵坐标(频率)方向上移动,而不在时间序列方向上移动。其他模型用于处理时间序列部分。
  3. 文字处理

    • 卷积网络的核心是捕捉局部特征。在文本处理中,若干单词组成的滑动窗口就构成了局部特征。
    • 对特征进行组合和筛选,获取不同层次的语义信息。
    • 只在时间方向上使用卷积,因为不同维度的文字意义是相互独立的。

http://www.kler.cn/a/458848.html

相关文章:

  • vue实现下拉多选、可搜索、全选功能
  • 《Vue进阶教程》第三十一课:ref的初步实现
  • 【Spark】架构与核心组件:大数据时代的必备技能(下)
  • 【网络安全实验室】SQL注入实战详情
  • 爬虫代码中如何添加异常处理?
  • xxxPipeline.from_pretrained(model_path)加载自定义路径下的模型结构
  • 基于Docker基础与操作实战
  • 【WdatePicker】选择不能小于当天
  • 深度学习模型格式转换:pytorch2onnx(包含自定义操作符)
  • 当现代教育技术遇上仓颉---探秘华为仓颉编程语言与未来教育技术的接轨
  • 电子电器架构 ---什么是智能电动汽车上的BMS?
  • VScode怎么重启
  • C# init 关键字的使用
  • 【ArcGIS Pro/GeoScene Pro】可视化时态数据
  • javaweb线上问题排查(若依定时任务)
  • 分布式版本管理工具——git 中忽略文件的版本跟踪(初级方法及高级方法)
  • 进程、线程和协程是什么,以及他们之间的区别
  • K-means 聚类:Python 和 Scikit-learn实现
  • uniapp 微信小程序开发使用高德地图定位SDK
  • ZYQN MPSoc系列芯片综述
  • MOS管驱动方案汇总
  • WeNet:面向生产的流式和非流式端到端语音识别工具包
  • 下载mysql免安装版和配置
  • 计算机网络-L2TP VPN基础实验配置
  • LeetCode-正则表达式匹配(010)
  • 为什么C++支持函数重载而C语言不支持?