深度学习笔记1

 

本文参考资料来自于CMU关于深度学习的tutorials。参考书资料为“Readings in  Deep Learning ——  a srudent perspective”, 编写作者为students at CMU。
1. W hat is Learning

这是学习deep learning 过程中遇到的第一个问题。

从人类的角度看, 可以将‘学习’理解为通过experience 获得knowledge的过程。

学习和memory(记忆)是不同的。学习就是从一些已经获得的 data/phenomena 中找到underlying pattern/causes/influences。

 什么是深度学习(deep Learning)

 现在我们来看看形容词deep 在这个词组的含义。 深度学习就是理解(comprehending)观测到的数据的内部结构

(inner structure), 并且能够将一些已经知道的概念(known concept和一些new concept 进行联接(cross linking),

 从而做出一些不太明显容易看出来的推理(non-obvious inferences)。 这就是深度的含义。 与deep Learning 相对

应的是 surface learning。 顾名思义, surface learning 并没有涉及到concept 和 推理 这些概念,只是对观测到

的数据(observed data)做一些很直白的学习。 尽管surface learning 也是learning, 但是这种学习很原始。

从computational的角度看学习, computer 是从大量的data中学习。 站在computational 的角度来看deep learning,

就是从data 中学习一个用于描述data的multilevel representation。 也就是对于给定inputs,学习一个该输入的layered model。

 Deep learning 需要layered deep structures去学习。在介绍layered deep structure 之前, 首先我们应该知道

deep structure 的概念(如下图) 对于任何一个directed network of computational element, 那么该有向

网络的深度(depth) 就是从input source nodes 到 output sink nodes 的最长的path 的长度。

 

Layered deep structure是deep structure 的一种, 如下图(注意下图只有one layer)

 

现在我们规定, 如果一个deep structures 的Depth > 2, 我们就说这个deep structures 是“deep“的。

 下面我们说说神经网络和冯诺依曼计算机的区别。

首先, Neural NetWork其实就是Connectionist Machines(连接计算机)也是处理数据的。 只不过Neural Network

具有许多的processing units(处理单元)。 我们的程序就是这些处理单元的连接处(the connections)。 

注意有的时候, 我们也可能在这些连接处定义存储器(memory)。

下面一幅图很好的说明了二者的区别。

 

Neural Network 的设计源于生物学人脑神经系统的结构。人脑本身就是一个功能强大的Connectionist Machine,

 即神经元(Neurons)之间的连接。 大脑的处理能力和这些connections 的数目是紧密联系的。 我们的Neural

Network就是模仿了人脑的这中结构。

神经网络的一个unit就相当于人脑的一个neuron。

 这个unit被称为perceptron(输出是连续的值)

当这个unit被称为Threshold Logic 时, 该unit的输出就是一个二值。.

如下图unit 的数学模型:

输入: 各个输入X1, X2, Xn 这n 个输入的线性组合作为该unit 的输入

输出:

——Threshold Logic如果线性组合超过某一个threshold, 输出1, 否则输出0

——Perceptron: 输出值是信息组合的连续函数(不过输出也可以是二元的)

设计好了这个Unit, 接下来, 我们就利用这个Unit 进行学习。

 

原则是, 如果某一输入和输出对cofire(大概可以译为关系更紧密), 我们就增强这个Connection(这里,增强的意思就是加

大该输入的权重)。

例如:

假如说, X2—Y pair co-fires,那么我们就应该增强X2 和Y之间的连接(Connection),

手段当时是增大对应的权重w2。 究竟如何增加,增加多少, 这里涉及到learning rule的问题。 常见的有两个learning rule:

(1)Hebbian Learning rule

(2)Widrow-Hoff Learning rule

 

显而易见, A single neuron is not enough!!

由于单个的element(或者unit)只是‘弱’运算单元(weak computational element), 所以我们

才需要神经网络(Networked elements)。

2.What is a perceptron

什么是感知器?

图就是一个感知器的原理框图。 Perceptron 其实是一个用于学习一个二进制分类器(binary classifier)算法

 其中w是权重向量, x 是输入的特征向量(feature vector),   是权重向量和输入特征向量的dot product。

我们可以将Perceptron 视为一个 feature detector, 也就是说当某一个特定的pattern出现的时候

(也就是, 我们输出1, 即表明该pattern(或者feature)被检测出来了。

 这样, 我们的神经网络其实就是Networkes of Perceptrons。

 

这样, 在神经网络每一(layer)的每一个Perceptron, 都会学习到一个feature来代表着数据中出现的local patterns 

另外, data 中的一些 Complex pattern 是由下一级的local pattern 组合, 并输入到本级Percetrons得到的。 随着级数(layer)

的增加 我们的对特征抽象的级别就越来越高, 概念也就越来越抽象了。 这就是深度学习。 我们只需要一个很小的

Hierarchial network 就可以很搞高效的获得data 中复杂的pattern。

这背后是有生物学, 感知学理论作为支撑的。

 总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征

,再到V2区的形状或者目标的部分(形状, 如圆, 矩形等简单的shape)等,再到更高层,整个目标、目标的行为等。

也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。

 3..What is a Learning problem?

学习问题其实也是一个最优化的问题。

 

 如上图, 我们的输出可以表达为:

我们的学习任务就是找到最

优的参数向量(其中是向量, vector。 很明显,

学习这些参数简直就是一个nightmare。 Hebbian rule 和W-H 已经不适合了。 这的确是一个challenge。

这个最优化的dilema 的救星就是BP(backpropagation)算法, 可以翻译为反向传播算法

 这个算法是由werbos 于1975年提出的。原理就是使得误差和梯度信息反向经过网络(从输出一直传播到输入层), 从而更新每一layer 的参数向量。

然而即使是BP算法, 也有一些问题, 就是当神经网络的规模很大的时候, 得到的最优化后的网络各layer 的参数不是那么可靠了。 另外, BP算法很大程度依赖于参数初始化值的选择。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值