最近和小伙伴们一直在学习AI。抽空写下关于学习过程的总结。这篇文章主要讲关于AI中深度学习技术的概述,也就是其发展的过程和现在的状况,以及人工神经网络的基础。
概述
- 定义
- 发展历程
- 发展现状
- 人工神经网络基础
定义
人脑神经网络 vs 人工神经网络
-
神经元
如上图的人脑神经网络。学过生物的都知道,我们的大脑是由无数的神经细胞组成,神经细胞又有突触,轴突,树突等组成。而人工神经网络其实就是对人脑神经网络的一种粗略的模拟。人工神经细胞是对神经细胞的一种模拟,一般也叫做人工神经元,就是如图中第二行最右侧的数学模型的抽象,它将树突抽象为该数学模型中的输入,将轴突抽象为该数学模型中的输出,轴突连接到其他人工神经细胞中,在人工神经网络中就是其他神经细胞的输出,下一层的输入。
所以,现在的人工神经元只是对大脑的人工神经细胞的粗略的模拟
- 专家的定义
- 人工神经网络是一个并行,分布式处理结构,由处理单元及其称为连接的无向通道互连而成。
- 这些处理单元具有局部内存,可以完成局部操作,该操作由输入至该单元的信号值和存储在该单元的信号值来决定。(所谓的存储值就是参数,输入值就是要训练的数据)
- 每个处理单元有一个单一的输出连接,输出信号可以是任何需要的数学模型。
由以上两点(专家的定义和仿生学),神经网络就是一种模仿生物神经网络的结构和其功能的一种数学模型。
发展历程
- 发展的起伏
从1940年起,首先提出了MP模型Hebb(海布)学习规则.这是神经网络的起源,也奠定了神经网络的基础模型。
第一波浪潮。在1960年,提出了感知机模型,感知机模型可以对简单的数据节点进行分类,这个发现引起了第一波的AI浪潮,因为人们认为简单的感知机可以实现分类功能,那通过组合可以实现更复杂的功能,但后面发现感知机无法模拟异或运算,无法处理非线性的问题,第一波浪潮就这样沉入了低谷。
第二波浪潮。1980年Hopfiled网络,Boltzmann机和BP算法的提出,人们发现可以增加网络的深度来实现非线性的功能,所以开始了第二次浪潮。但是在80年代,计算机的计算能力十分有限,很难训练出一个有效的模型来使用,所以导致了这种方式始终处于鸡肋的状态。再加上同一时期浅层方法的成功,如SVM(1995), 使得人们转为研究浅层的方法。
1998年CNN被提出,也应用到了邮政局的邮政编码识别,但是因为当时并不重视这种深度网络,导致并没有火起来。
第三波浪潮。到了2006年,Hinton提出了DBN,解决了更深层次的网络是可以通过一些策略更好的训练和实现,所以就引起了现在深度学习的第三次浪潮。
发展的现状
-
发展的速度
imageNet图像识别是竞赛从2010和2011年使用浅层的识别方法(就是手动提取特征, 设计识别器)错误率有25.8%到28.2%。到了2012年,出现了AlexNet模型,首次使用8层的神经网络进行识别,错误率降到了16.4%。一直到最近何凯明发明的ResNet已经达到了152层的神经网络,其识别错误率降到了3.57%,这个识错误率已经比人眼还低。
从上面的数据中可以看出从8层到19层的翻倍增长用了两年,从19层到152层的增长用了2年。如果保持这种指数级的爆炸性增长,是十分可怕的。
- AI在图像上的研究方向
- 图像分类
- 目标检测和识别
- 图像分割
- 图像描述
- 视频处理
- 图像生成
- 推荐看的论文和书籍
1.Hinton等三个大神写的关于AI的论文<<Deep learning>>
2.瑞士的大牛,Yoshua Bengio写的<<Learning Deep Architectures for AI>>
3.去年出版的《Deep learning》的一本书,github上搜索得到
早起模型介绍
基于CNN的分类模型:AlexNet, VGG-Net, ZF-Net,GooLeNet
做分割的模型: FCN, Deeplab, DeconvNet, CRFRNN
做目标检测: R-CNN, Fast R-CNN, Faster R-CNN最新模型介绍
图像分割: ENet,
目标检测和识别: MobileNet, ShuffleNet
图像分割和解析: PSPNet, RefineNet,DenseNet: 目的在于在网络中不同层的feature map进行全连接。
检测,分割都涉及: Mask R-CNN
人工神经网络基础
神经元到人工神经元
人工神经元的基本结构和功能
主要就是以上三点,其中第三点确认输出就是经过非线性的激活函数f(X).
激活函数(激励函数)
- 将可能的无限域变换到指定的有限范围进行输出(其实只是一种映射)
- 类似于生物神经元的非线性转移特性
- 常用的激励函数
这么说激励函数可能很抽象,其实就是将输入到输出的映射从无穷变为-1到1,如符号函数。也就是进行了对输出的压缩。至于为什么要进行压缩,主要是为了保留生物神经元的非线性转义特性。