卷积网络背后的直觉

2018 年 5 月 31 日 论智
作者:Adel Nehme
编译:weakish

编者按:和数据科学研究生Adel Nehme一起,探索卷积神经网络(机器视觉和图像识别领域最重要的深度学习技术之一)背后的直觉。

背景

随着AI的突破持续吸引公众注意,人们开始不加区别地使用“人工智能”、“机器学习”、“深度学习”等术语。然而,了解这些术语的区别,有助于把握AI技术的发展趋势。

人工智能同心圆

我们可以把这三个术语想象成三个同心圆,其中人工智能包含了机器学习,机器学习又包含了深度学习。

简单来说,有一些任务,传统上认为需要通过人类认知活动才能完成,开发执行这些任务的计算机系统,即为人工智能。

而机器学习则是创建从大规模数据集中学习模式,并提供洞见的系统。机器学习本身可以分为三大类:

  1. 监督学习(supervised learning),理解一组数据点和标签之间的关系,并在未标注的数据点上给出预测。例如,分类是否会出现不良贷款,预测未来股价。

  2. 无监督学习(unsupervised learning)则直接基于数据集的相似特征识别有意义的模式。例如,根据购物行为的相似程度聚类消费者。

  3. 强化学习(reinforcement learning)让智能体在定义良好的环境中选择可能的行动,并最大化目标函数(奖励)。我们可以把自动驾驶看成一个强化学习问题,在公路上(环境)自动行驶的汽车(智能体),最大化其目标——不要出事故(奖励)。

最后,深度学习是一种机器学习技术,该技术利用大规模数据和多层神经网络以理解数据集的模式。最近在计算机视觉和语音识别等领域的AI突破都是由深度学习研究以及算力的日常商品化驱动的

什么是卷积神经网络?

深度学习有众多架构和技术,以适应不同的使用场景,其中一种主要的架构和技术是卷积神经网络。卷积神经网络,受到哺乳动物视觉脑皮层方面的研究的启发,参考了哺乳动物使用不同层次的神经元感知世界的方式。可以将这一模型想象成视觉皮层的模型,专门设计的不同神经元组识别不同的形状。每个神经元组看到相应目标后激活,并和其他神经元组互相交流,以发展出感知目标的总体理解。

这一系统可以解释为分层的神经元组,检测输入刺激的低层特性,并互相交流,以发展对目标的高层检测。

  • 第一组神经元结构识别低层特征(例如,脸部的轮廓)

  • 第二组神经元结构识别颜色和形状(例如,肤色和颌骨转角)

  • 第三组神经元结构识别细节(例如,耳朵、鼻子、眼睛)

  • 第四组神经元结构整体识别整个目标(例如,脸部和对应之人)

简单来说,看到给定目标后,系统中的不同神经元组因目标的不同方面而激活,并互相交流以形成整体图景。

Yann Lecun从这一视觉脑皮层的层次模型中汲取了灵感,研发了卷积神经网络:

  • 局部连接:每层共享一个连接,以互相传递所学特征。

  • 层次结构:在不同网络层之间有一个很明显的层次结构——从低层特征(例如,鼻子,眼睛)到高层特征(脸部、具体的人)。

  • 空间不变性:模型可以适应输入的平移等变换,仍然能够完成识别。(人类能够识别颠倒或经过其他变换的图像。)

因此,卷积神经网络的架构如下图所示:

典型的卷积神经网络架构

  • 其中,输入数据为四维矩阵(样本数字,高,宽,频道)。其中频道对应色彩,彩图有3个频道(R、G、B),而灰度图像只有1个频道。

  • 输入数据将连接到一个隐藏层(卷积层),应用多个任意尺寸(通常为3x3或5x5)的过滤器至图像。可以将过滤器想象为一个大小为3x3(或5x5)的小手电,照在输入图像上,尝试提取特征映射。基于特征映射,算法可以理解数据中的局部特征(眼、耳……),不管其位置如何(平移不变性)。如下图所示:

  • 池化是一个降采样操作,通过应用任意尺寸(步长)的窗口,在窗口中根据用户指定,提取和、最大值、平均值,以降低提取的特征映射的维度。在下面的示意图中,我们使用的是最大池化,在特征映射的2x2窗口中提取最大值。这一技术有助于在保留信息的前提下降低维度。

  • 最后是传统的全连接层,对卷积习得的表示进行softmax操作,并输出预测。简单来说,全连接层包含观察到特定模式后会“点亮”的节点。

从直觉上说,卷积神经网络将图像作为输入,尝试使用一系列数学运算(卷积池化)辨认不同的小特征(局部连接),不管其位置如何(空间不变性),以理解整个图像的内容。这些数学运算牵涉到建模图像为一系列数字,其中每个数字表示像素亮度(假设输入为灰度图像)。

实例

我们的数据集是72x72网格中的一组几何图形(三角形、圆形、矩形)。由于这些是灰度图像,因此它们只有一个频道。下面是一些样本:

我们将使用python的Keras包实现一个卷积神经网络,该网络在分类这些形状时可以达到98%精确度。

导入依赖:

  
    
    
    
  1. import numpy as np

  2. import keras

  3. from keras import Sequential, optimizers

  4. from keras.layers import Dense, Activation

  5. from keras.callbacks import EarlyStopping

  6. from sklearn.metrics import confusion_matrix, accuracy_score

  7. from keras.layers import Conv2D, MaxPooling2D, Flatten, Dropout

  8. from keras.utils import np_utils

生成训练数据集和测试数据集:

  
    
    
    
  1. [X_train, Y_train] = generate_dataset_classification(1000, 20, True)

  2. [X_test, Y_test] = generate_test_set_classification()

根据keras的要求转换标签至类别矩阵,并重整训练集中图像的形状:

  
    
    
    
  1. Y_train = keras.utils.to_categorical(Y_train, 3)

  2. X_train = X_train.reshape(1000,72,72,1)

构建模型:

  
    
    
    
  1. conv_model = Sequential()

  2. conv_model.add(Conv2D(16, (5,5), activation = 'relu', input_shape = (72,72,1)))

  3. conv_model.add(MaxPooling2D((2,2)))

  4. conv_model.add(Conv2D(16, (5,5), activation = 'relu'))

  5. conv_model.add(MaxPooling2D((2,2)))

  6. conv_model.add(Conv2D(16, (5,5), activation = 'relu'))

  7. conv_model.add(MaxPooling2D((2,2)))

  8. conv_model.add(Flatten())

  9. conv_model.add(Dense(3, activation = 'sigmoid'))

编译、训练模型:

  
    
    
    
  1. conv_model.compile(optimizer = 'Adam', loss = 'categorical_crossentropy')

  2. conv_model.fit(X_train, Y_train, validation_split = 0.3, epochs = 100, batch_size = 32)

重整测试集数据的形状,在测试集上进行预测,并评估精确度:

  
    
    
    
  1. X_test = X_test.reshape(300,72,72,1)

  2. predictions = conv_model.predict_classes(X_test)

  3. print("精确度评分为 {} %".format(accuracy_score(Y_test, predictions) * 100))

结果:

  
    
    
    
  1. 精确度评分为 97.33333333333334 %


结语

卷积神经网络代表了图像识别中的重大突破。卷积神经网络在自动驾驶汽车,人脸识别系统,医学诊断等场景都有广泛应用。然而,值得注意的是,卷积神经网络仍有提升的空间,而卷积网络的适用领域也出现了一些新技术,比如胶囊网络

原文地址:https://towardsdatascience.com/understanding-convolutional-neural-networks-221930904a8e

登录查看更多
4

相关内容

在数学(特别是功能分析)中,卷积是对两个函数(f和g)的数学运算,产生三个函数,表示第一个函数的形状如何被另一个函数修改。 卷积一词既指结果函数,又指计算结果的过程。 它定义为两个函数的乘积在一个函数反转和移位后的积分。 并针对所有shift值评估积分,从而生成卷积函数。
【KDD2020】自适应多通道图卷积神经网络
专知会员服务
119+阅读 · 2020年7月9日
【斯坦福大学博士论文】自监督场景表示学习, 97页pdf
专知会员服务
92+阅读 · 2020年6月19日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
【强化学习】深度强化学习初学者指南
专知会员服务
179+阅读 · 2019年12月14日
深度学习算法与架构回顾
专知会员服务
80+阅读 · 2019年10月20日
深入卷积神经网络背后的数学原理
人工智能学家
10+阅读 · 2019年4月26日
深入探究深度卷积语义分割网络和 Deeplab_V3
AI研习社
6+阅读 · 2019年4月13日
卷积神经网络简明教程
论智
8+阅读 · 2018年8月24日
特征金字塔网络FPN的直觉与架构
论智
11+阅读 · 2018年8月6日
语义分割和转置卷积
AI研习社
10+阅读 · 2018年6月22日
全连接网络到卷积神经网络逐步推导
炼数成金订阅号
7+阅读 · 2018年4月25日
卷积网络循环网络结合-CNN+RNN
数据挖掘入门与实战
7+阅读 · 2018年2月11日
数据科学家应该知道的10个高级深度学习架构
深度学习
6+阅读 · 2018年2月11日
CapsNet入门系列之一:胶囊网络背后的直觉
论智
8+阅读 · 2017年11月20日
Arxiv
6+阅读 · 2019年9月25日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
22+阅读 · 2018年2月14日
Arxiv
27+阅读 · 2017年12月6日
VIP会员
相关VIP内容
相关资讯
深入卷积神经网络背后的数学原理
人工智能学家
10+阅读 · 2019年4月26日
深入探究深度卷积语义分割网络和 Deeplab_V3
AI研习社
6+阅读 · 2019年4月13日
卷积神经网络简明教程
论智
8+阅读 · 2018年8月24日
特征金字塔网络FPN的直觉与架构
论智
11+阅读 · 2018年8月6日
语义分割和转置卷积
AI研习社
10+阅读 · 2018年6月22日
全连接网络到卷积神经网络逐步推导
炼数成金订阅号
7+阅读 · 2018年4月25日
卷积网络循环网络结合-CNN+RNN
数据挖掘入门与实战
7+阅读 · 2018年2月11日
数据科学家应该知道的10个高级深度学习架构
深度学习
6+阅读 · 2018年2月11日
CapsNet入门系列之一:胶囊网络背后的直觉
论智
8+阅读 · 2017年11月20日
Top
微信扫码咨询专知VIP会员