zoukankan      html  css  js  c++  java
  • 我对卷积神经网络的一点粗浅的理解

    Convolutional Neural Network,卷积神经网络,简称CNN,最近几年再次流行起来。

    CNN和普通的机器学习算法有什么相同,有什么不同?

    简单说,CNN=A+B,即CNN包括两个方面的功能:

    A:feature extactor 特征提取器

    普通的机器学习算法,比如决策树、随机森林、svm、逻辑回归/softmax等,它的输入通常就是若干个features

    而CNN的输入,是图片!

    我们当然可以把图像像素作为feature vector中的一个维度。但是这毕竟过于naive。往往并不怎么work。

    CNN中的特征提取,是通过卷积层完成的。这里说的卷基层,包括狭义的卷积、池化(下采样)。

    个人认为,我们并不一定要把CNN中的卷积层看作传统人工智能中的神经网络的改进。因为真的有点勉强:传统神经网络的输入就是一个个的feature vector,用作分类器或者回归器。CNN的输入则是图片。

    B:classifier or regressor 分类器或回归器

    CNN中的全连接层输出层,这个其实是和传统的神经网络一致的:处理的输入是feature vectors,输出的是类别label或者连续的预测数值

    总结

    CNN = 特征提取(卷积层)+ 分类(全连接层)

    其中特征提取是说,feature是学出来的,而不是“手工设计的”(比如SIFT,SURF,ORB,HOG,LBP,HSC等)

    但是这里还有一个疑问:学出来的feature应该是唯一的吗?怎样的学出来的特征算是“好的特征”?我们固然可以设计不同的网络结构,来学习出不同的特征。但是怎样的特征才是好的特征?以及,我们能否从特征学习的过程中,得到一些规律,用于辅助手工设计特征?毕竟搞一个CNN的话,要大量数据或者微调,而且需要GPU,并且还是一个black box缺乏理论支持的感觉。。

    有想法的请留言。欢迎吐槽。

  • 相关阅读:
    asp.net笔记第一章
    数据库复习笔记
    tp5博客项目实战2
    springboot调整MybatisPlus全局的验证策略
    SpringBoot整合MybatisPlus,并实现新增、修改、删除、查看、分页
    springboot整合Apollo
    创建apollo项目,并发布配置
    Apollo部门管理
    搭建Apollo环境(Ubuntu-18.04.4)
    启动apollo时出现的问题,../demo.sh: 行 84: curl: 未找到命令
  • 原文地址:https://www.cnblogs.com/zjutzz/p/5973383.html
Copyright © 2011-2022 走看看