• 卷积神经网络工作原理的直观理解


    在使用卷积神经网络时,它是一个黑盒。我们完全不用关心里面发生了什么。

    但是,作为开发人员,我们必须把盒子打开,看看里面到底有什么!

    就像剥洋葱一样,我们需要一层层地剥离。

    打开黑盒最外边包装,我们看到,它由两部分组成:

    • 卷积层:负责特征提取

    • 全连接层:负责分类

    当然,有些网络已经没有全连接层,是全卷积网络。为了方便说明和理解,这里,我们仍旧以包含全连接为例。

    从盒子外边再看看,最后的输出通常是一个小数值,可以简单理解为所属分类的概率。

    这些概率值的和是1,概率值越大意味着对应类的可能性越大。

    例如,猫的值是0.98,狗的值是0.02。意味着当前的分类极大可能是猫。

    我们用一个通俗的例子看一下。

    有一个小瓶子,里面可能是(水、氢气、氧气)。那么各部分的功能如下:

    • 卷积层:负责提取特征。简单理解,就是将物质里面的元素提取出来。例如,这里从物体里面提取出来氢元素(H)和氧元素(O)。

    • 全连接层:负责分类。将瓶子中H和O的可能拼接出来。可能是(H2O,O2、H2),不同的值,权重是不一样的。例如,2个H和一个O,构成H2O;两个O,构成O2;两个氢构成H2。

    从上述可以看到,不同的权重,意味着有不同的结果。

    卷积网络的核心是学到不同物质的不同权重值。

    我们进一步明确,神经网络包含两个组成部分(卷积层,全连接层),分别负责(特征提取,分类)。

    例如,很多网络在卷积层会得到4096个特征,交给全连接层去分类,最终得到比如5个分类。

    另外我们目前可以了解到的是,多个卷积层,分别提取不同的特征:

    • 前面的卷积层:提取的特征比较初级,比如边、角、线等;

    • 中间的卷积层:提取的特征时初级特征的组合,比如形状等;

    • 后面的卷积层:提取的特征是各种形状组合所得到的高级特征,如语义信息等。此时的特征通常具有一定的语义特征,比如人脸、车轮、房屋结构等等;

    后面我们会进一步介绍各个层提取特征的差异性。

    下面我们关心另外一个问题:为什么卷积能够提取得到特征?

    我们想象一下,使用卷积核(convolution kernel,可以理解为要找的特征:眼睛)在一幅图像(image)上不断地滑过。

    • 如果找到了卷积核,就将其标记为100,

    • 如果没有找到卷积核,就将其标注为0。

    其过程如下:

    图片来源:https://towardsdatascience.com/light-on-math-machine-learning-intuitive-guide-to-convolution-neural-networks-e3f054dd5daa

    输出图像中,

    • 数值100对应着高响应;

    • 数值0对应着低响应;

    从输出图像中,可以看到白色区域代表着找到的两只眼睛。

    接下来,我们看看数值卷积操作是怎么回事。卷积操作是卷积核在输入上滑过,然后将对应位置上的像素进行乘法运算并求和,从而得到输出。

    需要注意:输入和输出大小可能不一致。

    如下图所示:在使用(-1,1)作为卷积核,在左黑右白的图像上做卷积时,会得到一个黑白交界的特征竖线。

    下面,我们看看几个可视化的例子:

    1、手写数字的可视化

    Keras.js - Run Keras models in the browser

    这个看起来很抽象,大家可以访问上面的链接观察具体过程。

    其中的数字,是手写完成。

    编辑切换为居中

    添加图片注释,不超过 140 字(可选)

    2、手写数字过程立体观察

    拖动鼠标,可以进行不同角度、更细粒度的观察。

    3D Visualization of a Convolutional Neural Network

    3、CNN解释器

    CNN Explainer

    这个功能很强大,单击关键点,能够观察更细粒度的可视化效果。

  • 相关阅读:
    【Qt】常见控件
    educoder_python:7-1-矩阵(numpy)
    实验探究-ExecutorServiceAPI----未完待续!!!!
    Unreal NetMode&NetRole 解析
    TypeScript深度剖析:TypeScript 中枚举类型应用场景?
    【mindspore连接atlas 200dk】run后显示no matching deployment mapping
    《TCP/IP网络编程》阅读笔记--getsockopt和setsockopt的使用
    基于燃压缩空气储能系统的零碳微能源互联网优化调度(Matlab代码实现)
    20哈希表-三数之和
    reactive和effect,依赖收集触发依赖
  • 原文地址:https://blog.csdn.net/superdont/article/details/127124819