深度学习系列(1):感知机
深度学习系列(1):感知机
前言
小论文总算告一段落了,近期开始深度学习了,跟着Hinton神经网络公开课边看边总结。视频参考链接如下:https://www.coursera.org/,搜索Neural Networks for Machine Learning即可找到资源。部分有中文翻译,当然也可以参考hankcs神犇关于Hinton神经网络的总结,参考链接如下:http://www.hankcs.com/ml/
思考
- 感知机是什么?
- 感知机如何实现?
- 感知机的优缺点?
感知机是什么?
大背景:给定输入,求得输出。中间需要一种模型来表达这种映射关系,于是有了: 输入 -> 模型(映射) -> 输出。
模型有很多,机器学习中有诸如SVM,DT,HMM等,这里我们只讨论神经网络的基础模型:感知机(perceptron)。
以下内容参考博文:
http://www.cnblogs.com/maybe2030/p/5597716.html#_label1
1943年,McCulloch和Pitts将上图的神经元结构用一种简单的模型进行了表示,构成了一种人工神经元模型,也就是我们现在经常用到的“M-P神经元模型”,如下图所示:
从上图M-P神经元模型可以看出,神经元的输出
其中
sigmoid函数的表达式和分布图如下所示:
定义:
感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。下图表示了一个输入层具有三个神经元(分别表示为x0、x1、x2)的感知机结构:
根据上图不难理解,感知机模型可以由如下公式表示:
其中,
Okay,以上内容均属于感知机的定义部分,问题是如何根据给定的{输入集合}和{输出集合}得到{
感知机如何实现?
思路
根据限有参数
其中满足:
我们的目标:需要求出给定集合
梯度下降:
先看图,形象来说,由
所以更新规则有:
而下降的方向实际上表示的一个值,数学上是
所以数学上只要求出
感知机的弱点
问题1:
在Hinton神经网络公开课上,老爷子举了两个例子来说明感知机的弱点,第一个是关于XNOR的数据集:
得到参数向量必须满足的方程:
所以如果针对第一行有:
还有一份《证:单层感知机不能表示异或逻辑》,参考链接如下:http://blog.****.net/panda07100/article/details/38580993
问题 2:
同样,对于这样的wrap-pattern数据集,感知机也无法区分模式A和模式B,歪?
此处需要考虑概率了,白色格子代表
总结:
参考老爷子和hankcs对视频的翻译:
但如果你手工选取有效的特征的话,感知机框架仍然有效。比如增加一些feature unit识别sub pattern。所以感知机模式识别的关键在于手写特征detector,而不是机器学习。老爷子说这个弱点被过分解读,导致早期很多人认为感知机不好用,那么神经网络也不好用。
如果有办法训练特征识别模块的话,神经网络就好用了。我们不但要学习特征权重,还要学习特征表示。第二代神经网络其实全是关于特征表示的学习(早期的神经网络没有hidden unit层,特征是原始的)。
多个线性的隐藏层无济于事,整个模型依然是线性的。于是怎么有效地训练非线性hidden unit就成为关键问题。学习流入hidden units的weight其实就是学习feature。