哈尔滨工业大学沈俊楠:典型模式-卷积神经网络入门

简介: 在2018年3月13日云栖社区,来自哈尔滨工业大学的沈俊楠分享了典型模式-卷积神经网络入门。本文详细介绍了关于卷积神经网络的基础概念和知识与讲解,并列举实例展示了卷积和池化的效果。

哈尔滨工业大学的沈俊楠分享了典型模式-卷积神经网络入门。本文详细介绍了关于卷积神经网络的基础概念和知识与讲解,并列举实例展示了卷积和池化的效果。
直播视频回顾请点击
以下是精彩视频内容整理:
问题引出
学习知识从问题引出入手是一个很好的方法,所以本文将可以围绕下面三个问题来展开:
1.CNN从何而来?有何作用?运行原理是什么?
2.为什么现在图像上用得这么多?怎么用?
3.我想要入门,怎么实践操作下?
本文思维导图如下:

_1

概念原理
预备知识-神经元
神经网络有大量的节点(或称“神经元”、“单元”)和相互链接而成。每个神经元接受输入的线性组合,进行非线性变换(亦称激活函数activation function)后输出。每两个节点之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。

_2

以上图为例,该图即为一个神经元。神经元有a1,a2,a3...an输入,而每个输入中都有权值以及偏置值,对应图中的w1,w2,w3...wn以及b。这些输入与权值的乘积加上偏置会经过激活函数的处理得到输出t。
神经元的作用我们可以根据上图以是否参加音乐节的决策为实力来详细介绍一下。图中a1,a2代表是否有人陪同参加音乐节,w1,w2代表今天的天气如何。分别赋值a1为1,a2为0,w1为5,w2为-2,偏置b代表随意事件,此处赋值为0。这些值的和为s,s=a1 w1+a2w2+b。
s作为输入进入激活函数,此处激活函数代表决策,当决策大于某一个值时就参加音乐节,若小于该值就不参加音乐节,最后的输出t即为是否参加音乐节。这就是神经远的构成。
预备知识-激活函数
常用的非线性激活函数有sigmoid、relu等等,前两者sigmoid比较常见与全连接层,后者relu常见与卷积层。这里先简要介绍下最基础的sigmoid。
sigmoid的函数表达式如下:

_3

其中z时一个线性组合,比如z可以等于:z=b+w1 a1+w2a2。通过带入很大的正数或很小的负数到g(z)函数中可知,其结果趋近于0或1。因此,sigmoid函数g(z)的图形表示如下图(横轴表示定义域z,纵轴表示值域g(z))。

_3

Sigmoid函数的功能是相当于把一个输出压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。压缩至0到1之间的作用是这样以来便可以把激活函数看作一种“分类的概率”,比如激活函数的输出为0.9的话便可以解释为90%的概率为正样本。
预备知识-神经网络
定义:将神经元组织在一起,其实便形成了神经网络。下图便是一个三层神经网络结构

_4


最左边的原始输入信息称之为输入层,最右边的神经元称之为输出层(上图中输出层只有一个神经元),中间的叫隐藏层。
输入层(Input layer)众多神经元(Neuron)接受大量非线性形输入讯息。输入的讯息称为输入向量。
输出层(Output layer)讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息成为输出向量。
隐藏层(Hidden layer)简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有同多个隐藏层,则意味着多个激活函数
同时,每一层都可能有单个或多个神经元组成,每一层的输出将会作为下一层的输入数据,不断传递,最终有输出层输出最终结果。
CNN的结构

_5


卷积神经网络(Convolutional Neural Network,CNN)是受到神经科学启发后的多层感知机模型的进化。
卷积的概念来自信号处理,是对输入信号经过持续的转换持续的输出另一组信号的过程。图像处理中可以通过卷积完成边缘检测、模糊、锐化等效果。
在计算机视觉(Computer Version)领域中卷积层是指感受野(Receptive Field)与卷积核(Kernel)的内积通过激活函数(Activation Function)之后输出特征图像(Feature Map)
结果多层的卷积层、池化层、全连接层,卷积神经网络便可以赋予计算机视觉等能力。
CNN的机构-感受野
感受野是指某个卷积核在输入图像所看到的空间。

_6


上图表示卷积操作为:卷积核3x3、填充1、步长2。第一排是对5x5蓝色图像进行卷积操作,得到3x3绿色图像。相对左侧的通常表示方法, 左侧表示方法更容易观察到特征的关注点(感受野的中心)和视野(感受野的范围)。第二排是对3x3的绿色图像进行卷积操作,得到2x2黄色图像。
CNN的结构-卷积操作
图像处理中,卷积操作是从输入图像中取出与卷积核大小相同的区块,与卷积核执行内积后生成一个像素,计算完毕后取下一个区块一次类推,最终得到特征图像,过程如下图所示:

_7


卷积操作的好处有两点,第一稀疏连接:眼睛在看东西的时候目光是聚焦在要给相对很小的局部,而不是全部。相对传统多层感知器的隐层节点会连接到图像的每个像素点上,卷积神经网络模拟了眼睛的特性,每个隐层节点通过卷积核连接到图像某个足够小局部的像素点上,从而大大减少权值参数。第二权值共享:如同神经中枢中的神经细胞,知识对某些形状有反应,这样的神经细胞被卷积核来模拟,同一个特征图像中的卷积核的权值是一样的,从而大大减少全职参数。通过仿生而提出的稀疏连接,卷积不仅仅符合视觉原理,复杂度也得到了很好的控制。
CNN的结构-卷积核

_8


_9


以图像为例,卷积是从输入图像中取出与卷积核大小相同的区块,与卷积核执行点乘后生成了特征图像(feature Map)中的一个像素,当一个像素计算完毕后,移动一个像素取下一个区块执行相同的运算。
不同的卷积核会得到不同的输出数据,比如深浅,轮廓等。如果想提取图像的不同特征,则需要使用不同的卷积核。所以卷积核有时候也被形象的称为检测器(Detector)。
CNN的结构-激活函数&特征图像
激活函数(Activation Function)是用来增加非线性能力,使得神经网络可以更好的解决较为复杂的问题。典型的激活函数有Rectified Linear Unit(非线性激活函数),即ReLU函数:Y=max{0,x}。

_10


不同的卷积核将产生不同的特征图像,适合的卷积核就可以为特征来进行图像识别。
CNN的结构-池化层
池化是对某个区域内的内容进行一定统计操作以改变输出的图像。池化层操作有两个典型用途:
1.降低计算
理想情况下,学习到的特征都嗯那个用来分类就好了,但是这种做法不仅在计算机的压力会非常打,还会容易造成过拟合。鉴于图像的特征往往出现在图片的多个地方,所以对于特征进行聚合来提高抽象程度,便显得非常合情合理了。这种池化操作往往通过控制步长使得感受野不重叠。
2.平移不变性
如果特征在不同的图像上有轻微的移动,池化操作能够确保该特征以一定概率在感受野上被识别与保留。这样,比如MNIST所针对的手写数字,及时有轻微的平移,仍然能够被正确识别。这种池化操作的感受野往往是重叠的。
池化操作的算法有两个,分别为平均池化核最大池化。平均池化考虑各种特征,最大池化强调突出特征。
CNN的结构-全连接层

_11


最后的两列小圆球就是两个全连接层,在最后一层卷积结束后,进行了最后一次池化,输出了20个12 12的图像,然后通过了一个全连接层变成了1100的向量。
自所以能够做到这样,其实就是有20 100个1212的卷积核卷积出来的,对于输入的每一张图,用了一个和图像一样大小的核卷积,这样整幅图就变成了一个数了,如果厚度是20那就是20个核卷积完了之后相加求和。这样就能把一张图高度弄成了一个数了。
由于传统的网络输出都是分类,也就是几个类别的概率甚至就是要给数类别号,那么全连接层的目的就是高度提纯特征,方便交给最后的分类器或者回归。
CNN的处理图像的例子-卷积效果与池化效果

_12


四张图片对应不同卷积核计算结果非别为:左上角模糊blur、右上角向下Sobel、左下角emboss、右下角outline

_13


该池化操作通过max_pool进行的,max_pool为最大池化。如图中为4 4的特征图像,对其用一个22的框架进行最大池化。可以看出提取出的四个结果分别为四个模块中的最大值分别为6、4、5、8。
应用介绍-LeNet5数字分类
LeNet是第一个卷积神经网络,它的架构是由Yann LeCun等在1998年的论文Gradient-Based Learning Applled to Document Recognition中首先提出的,主要用来识别数字。下图为LeNet的架构:

_14


MNIST数据作为场景。很大程度上,LeNet+MNIDST已经称为深度学习图像处理的Hello World了。MNIST包含三种数据:55000个训练数据点,10000个测试数据点,5000个验证数据点。每个MNIST 数据点有两部分内容:手写数字的图像,对应图像的标签。每个图像的长和宽都是28个像素,总共784像素。
LeNet模型包含:1.使用卷积核最大池化。2.仍然是卷积核最大池化,只是使用64个特征,卷积核仍然是5x5。最大池化后图像大小变为7x7。3.全连接层。4.对全连接层的输出使用劝退。5.直观的softmax层,得到最后的概率输出。
训练是通过损失函数表示模型的预测对比预期有多糟糕,训练的目标是最小化损失函数。预测是最后通过计算图谱便能够完成的。
本文由云栖志愿小组谭昊整理,编辑百见
数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!
目录
相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
29 1
|
7天前
|
域名解析 网络协议 应用服务中间件
网络编程入门如此简单(四):一文搞懂localhost和127.0.0.1
本文将以网络编程入门者视角,言简意赅地为你请清楚localhost和127.0.0.1的关系及区别等。
16 2
网络编程入门如此简单(四):一文搞懂localhost和127.0.0.1
|
9天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
22 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
1天前
|
机器学习/深度学习 人工智能 算法
深入理解卷积神经网络:从理论到实践
【9月更文挑战第31天】在深度学习的众多模型之中,卷积神经网络(CNN)以其在图像处理领域的出色表现而闻名。本文将通过浅显易懂的语言和直观的比喻,带领读者了解CNN的核心原理和结构,并通过一个简化的代码示例,展示如何实现一个简单的CNN模型。我们将从CNN的基本组成出发,逐步深入到其在现实世界中的应用,最后探讨其未来的可能性。文章旨在为初学者提供一个清晰的CNN入门指南,同时为有经验的开发者提供一些深入思考的视角。
|
1天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门与实践
【8月更文挑战第62天】本文以浅显易懂的方式介绍了深度学习领域中的核心技术之一——卷积神经网络(CNN)。文章通过生动的比喻和直观的图示,逐步揭示了CNN的工作原理和应用场景。同时,结合具体的代码示例,引导读者从零开始构建一个简单的CNN模型,实现对图像数据的分类任务。无论你是深度学习的初学者还是希望巩固理解的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
9天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
28 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
4天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的信息安全新挑战
【9月更文挑战第29天】在数字化浪潮的推动下,云计算服务如雨后春笋般涌现,为各行各业提供了前所未有的便利和效率。然而,随着数据和服务的云端化,网络安全问题也日益凸显,成为制约云计算发展的关键因素之一。本文将从技术角度出发,探讨云计算环境下网络安全的重要性,分析云服务中存在的安全风险,并提出相应的防护措施。我们将通过实际案例,揭示如何在享受云计算带来的便捷的同时,确保数据的安全性和完整性。
|
4天前
|
SQL 安全 算法
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第29天】随着互联网的普及,网络安全问题日益严重。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者了解网络安全的重要性,提高自身的网络安全意识。

热门文章

最新文章

下一篇
无影云桌面