【深度学习笔记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年代很流行,也成功解决了很多问题。并且,感知器算法也是非常简单的。
感知器的定义
下图是一个感知器:
可以看到,一个感知器有如下组成部分:
输入权值 一个感知器可以接收多个输入
激活函数 感知器的激活函数可以有很多选择,常用的有阈值函数、分段线性函数、sigmoid函数和双曲正切函数,比如我们可以选择下面这个阶跃函数(阈值函数)来作为激活函数:
输出 感知器的输出由下面这个公式来计算
如果看完上面的公式一下子就晕了,不要紧,我们用一个简单的例子来帮助理解。
例子:用感知器实现and函数
我们设计一个感知器,让它来实现and运算。程序员都知道,and是一个二元函数(带有两个参数
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
- 【深度学习笔记002 神经网络与主流框架】
- TensorFlow与主流深度学习框架对比
- TensorFlow与主流深度学习框架对比
- 主流深度学习框架
- [DeeplearningAI笔记]神经网络与深度学习4.深度神经网络
- 《神经网络与深度学习》学习笔记
- 神经网络/深度学习框架
- 【神经网络与深度学习】GLog使用笔记
- 神经网络与深度学习 笔记 (一)
- 《神经网络与深度学习》编程笔记
- 神经网络与深度学习学习笔记:实现单隐层的神经网络
- 神经网络与深度学习学习笔记:神经网络的优化
- 神经网络与深度学习学习笔记:神经网络的优化(二)
- 深度学习主流框架Caffe
- 主流深度学习框架对比
- 主流深度学习框架对比
- [DeeplearningAI笔记]神经网络与深度学习2.1-2.4神经网络基础
- 深度学习框架Caffe学习笔记(8)-BP神经网络算法
- 如何在mac上配置vsftpd
- leetcode No117. Populating Next Right Pointers in Each Node II
- Java语言基础——数据类型与数据类型转换
- PHP上传文件
- C语言主要应用领域,C和C++的区别,自上向下和自下向上设计思想
- 【深度学习笔记002 神经网络与主流框架】
- mt3
- 部署描述文件web.xml解析(五) 声明过滤器
- 【Struts2】Session的获取
- Windows10 和 Ubuntu 16.04 双系统 系统时间不统一解决
- 关于开发工具不能找到系统中已经存在的字体
- swift 基础学习回顾(一)
- 【Leetcode】200. Number of Island
- NYOJ 255