【深度学习笔记002 神经网络与主流框架】

来源:互联网 发布:人肉软件 app 编辑:程序博客网 时间:2024/06/05 04:20

无论是前段时间的阿尔法完胜柯洁,还是谷歌、苹果公开它的无人驾驶计划,无不说明一个事实:一场人工智能(AI)的革命已经开始!作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?这篇文章带你来一起见识一下神经网络与深度学习的主流框架。

  • 1 从生物神经网络模型衍生出人工神经网络模型?
  • 2 BP神经网络?
  • 3 卷积神经网络?
  • 4 深度学习的主流框架有哪些?各有什么特性?

1 从生物神经网络模型衍生出人工神经网络模型

1.1 人脑视觉机理

故事还是从人脑视觉机理聊起,1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”:可视皮层是分级的:
这里写图片描述
我们看看他们做了什么。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔区域与大脑皮层神经元的对应关系。他们在猫的后脑头骨上,开了一个3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。然后,他们在小猫的眼前,展现各种形状、各种亮度的物体。并且,在展现每一件物体时,还改变物体放置的位置和角度。他们期望通过这个办法,让小猫瞳孔感受不同类型、不同强弱的刺激。之所以做这个试验,目的是去证明一个猜测。位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。经历了很多天反复的枯燥的试验,同时牺牲了若干只可怜的小猫,David Hubel 和Torsten Wiesel 发现了一种被称为“方向选择性细胞(Orientation Selective Cell)”的神经元细胞。当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。
这个发现激发了人们对于神经系统的进一步思考。神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。
这里的关键词有两个,一个是抽象,一个是迭代。从原始信号,做低级抽象,逐渐向高级抽象迭代。人类的逻辑思维,经常使用高度抽象的概念。
例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。
这里写图片描述
总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。例如,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。

1.2 感知器

上个故事主要研究了瞳孔区域与大脑皮层神经元的对应关系,众所周知生物神经元包括细胞体、树突、轴突、突触和细胞膜电位,生物神经元有兴奋与抑制以及学习与遗忘功能。从生物神经元衍生出来人工神经网络(Artificial Neural Network)的基本单元的神经元模型,神经元也叫做感知器。感知器算法在上个世纪50-70年代很流行,也成功解决了很多问题。并且,感知器算法也是非常简单的。
感知器的定义
下图是一个感知器:
这里写图片描述
可以看到,一个感知器有如下组成部分:
输入权值 一个感知器可以接收多个输入(x1,x2,...,xn|xiM),每个输入上有一个权值wiM,此外还有一个偏置项bM,就是上图中的w0
激活函数 感知器的激活函数可以有很多选择,常用的有阈值函数、分段线性函数、sigmoid函数和双曲正切函数,比如我们可以选择下面这个阶跃函数(阈值函数)来作为激活函数:

f(z)={z>0 0 otherwise

输出 感知器的输出由下面这个公式来计算
y=f(wx+b) 公式(1)
如果看完上面的公式一下子就晕了,不要紧,我们用一个简单的例子来帮助理解。
例子:用感知器实现and函数
我们设计一个感知器,让它来实现and运算。程序员都知道,and是一个二元函数(带有两个参数x1x2),下面是它的真值表:

x1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1

4 深度学习的主流框架与特性

(1)Caffe
Caffe的全称Convolutional Architecture for Fast Feature Embedding,它是一款开源高效的深度学习框架,核心语言是C++,支持命令行、Python和MATLAB接口,既可以在CPU上运行也可以在GPU上运行。作者是毕业于UC Berkeley在Facebook工作的贾杨清博士。Caffe以四维数组blobs方式存储和传递数据,利用层之间计算结果传递每层的输入和输出。其网络是一个有向无环层图,Caffe通过快速、标准的随机梯度下降算法训练一个模型(Model)。
主要特性:
• Caffe可以应用在视觉、语音识别、机器人、神经科学和天文学领域。
• Caffe提供了一个完整的工具包,用来训练、测试、微调和部署模型。

Reference:
[1] 乐毅,王斌.深度学习-Caffe之经典模型详解与实战 [M].北京:电子工业出版社,2016.
http://blog.csdn.net/zouxy09/article/details/8775518
https://www.zybuluo.com/hanbingtao/note/433855
https://www.zybuluo.com/mdeditor?url=https://www.zybuluo.com/static/editor/md-help.markdown#2-%E6%A0%87%E7%AD%BE%E5%88%86%E7%B1%BB

阅读全文
1 0
原创粉丝点击