深度学习系列(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神经元模型可以看出,神经元的输出

其中θ\theta为我们之前提到的神经元的激活阈值,函数f(⋅)f(·)也被称为是激活函数。如上图所示,函数f(⋅)f(·)可以用一个阶跃方程表示,大于阈值激活;否则则抑制。但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数函数f(⋅)f(·)。

sigmoid函数的表达式和分布图如下所示:

定义: 感知机(perceptron)是由两层神经元组成的结构,输入层用于接受外界输入信号,输出层(也被称为是感知机的功能层)就是M-P神经元。下图表示了一个输入层具有三个神经元(分别表示为x0、x1、x2)的感知机结构:

根据上图不难理解,感知机模型可以由如下公式表示:

y=f(wx+b)

y = f(wx + b)

其中,ww为感知机输入层到输出层连接的权重,b表示输出层的偏置。事实上,感知机是一种判别式的线性分类模型,可以解决与、或、非这样的简单的线性可分(linearly separable)问题,线性可分问题的示意图见下图:

Okay,以上内容均属于感知机的定义部分,问题是如何根据给定的{输入集合}和{输出集合}得到{ww的集合}?即如何学习?

感知机如何实现?

思路

根据限有参数ww(待求参数,未知)及给定的输入输出(已知)能够定义损失函数,以激活函数sigmoid为例:

其中满足:

我们的目标:需要求出给定集合w∗{w^*},L(w∗)L(w^*) 取得最小值。如果有解析解可以直接求导代入求出每个w1,w2,⋯,wn{w_1, w_2, \cdots, w_n}, 然这里并没有解析解,所以我们采用一种迭代的手段,即【梯度下降】。

梯度下降:

先看图,形象来说,由ww构成的L在三维空间内是一种曲面图,梯度是在当前点,如红色初始点往四周看下降最快的方向。有了这个方向,我们乘以一个学习率η\eta,就能让当前ww朝着地势较低的方向前进了。

所以更新规则有:

而下降的方向实际上表示的一个值,数学上是

,该值越大则地势越抖,走的也越快。所以在极值点时,导数为0,那么自然wiw_i不在更新,算法收敛,求得最优。但正如图中所示,在非凸函数中,梯度下降无法保证求出的解一定是全局最优,这是它缺点之一,其次η\eta学习率的选择也很重要,过大导致无法收敛,过小导致学习效率低,因此合理的,自适应的η\eta也就成为了研究的热点。

所以数学上只要求出

,就能写更新算法了。且收敛的条件可以用迭代次数或者参数L(w)L(w)的前后变化量控制。

感知机的弱点

问题1: 在Hinton神经网络公开课上,老爷子举了两个例子来说明感知机的弱点,第一个是关于XNOR的数据集:

得到参数向量必须满足的方程:

所以如果针对第一行有:

,针对第二行有:

,需要找到这样的阈值使得上述两个不等式着实有点困难呐。

还有一份《证:单层感知机不能表示异或逻辑》,参考链接如下:http://blog.csdn.net/panda07100/article/details/38580993

问题 2:

n×1n \times 1的图片的模式识别,两种模式分别只有4个像素是黑色,其他都是白色,如下图:

同样,对于这样的wrap-pattern数据集,感知机也无法区分模式A和模式B,歪?

此处需要考虑概率了,白色格子代表xi=0x_i = 0

, 黑色格子代表

,所以对于

,仅存在4个权值有效,于是有

,那么问题来了,推广到wrap,且大数据集上,每个格子都有被选中的机会,就上图而言被选中的概率为:4 / 16,所以每个格子都有25%的概率取黑色,于是有了

,这就呵呵了,模式B也是

,那么借用问题1的证明思路,阈值也出现了矛盾,即感知机无法区分上述两种简单的pattern。

总结:

参考老爷子和hankcs对视频的翻译:

但如果你手工选取有效的特征的话,感知机框架仍然有效。比如增加一些feature unit识别sub pattern。所以感知机模式识别的关键在于手写特征detector,而不是机器学习。老爷子说这个弱点被过分解读,导致早期很多人认为感知机不好用,那么神经网络也不好用。 如果有办法训练特征识别模块的话,神经网络就好用了。我们不但要学习特征权重,还要学习特征表示。第二代神经网络其实全是关于特征表示的学习(早期的神经网络没有hidden unit层,特征是原始的)。 多个线性的隐藏层无济于事,整个模型依然是线性的。于是怎么有效地训练非线性hidden unit就成为关键问题。学习流入hidden units的weight其实就是学习feature。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

Python数据分析笔记:聚类算法之K均值

我们之前接触的所有机器学习算法都有一个共同特点,那就是分类器会接受2个向量:一个是训练样本的特征向量X,一个是样本实际所属的类型向量Y。由于训练数据必须指定其真...

420100
来自专栏AI研习社

深度学习岗位面试问题一览

本笔记主要问题来自以下两个问题,以及我自己面试过程中遇到的问题。 深度学习相关的职位面试时一般会问什么?会问一些传统的机器学习算法吗?(http://t.cn/...

69150
来自专栏生信小驿站

决策树理论

在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。数据分类是一个两阶段过程,包括模型学习阶段(构建分类模型...

26400

用Pandas在Python中可视化机器学习数据

为了从机器学习算法中获取最佳结果,你就必须要了解你的数据。

24350
来自专栏Hadoop数据仓库

HAWQ + MADlib 玩转数据挖掘之(十二)——模型评估之交叉验证

一、交叉验证概述         机器学习技术在应用之前使用“训练+检验”的模式,通常被称作“交叉验证”,如图1所示。 ? 图1 1. 预测模型的稳定性    ...

1.7K70
来自专栏程序生活

CS224n 笔记2-词向量表示:Word2vec1. 单词含义的表示2. Word2Vec的主要思路3. 更多Word2Vec细节4 .梯度的推导5. 损失/目标函数相关推荐阅读

1. 单词含义的表示 我们如何表示一个单词的意思 下面是意思的定义: 用词语,语句表示的想法或观点 人们使用词汇,符号来表达的想法 在一篇文章和艺术品表达的观点...

45680
来自专栏大数据文摘

史上最全!27种神经网络简明图解:模型那么多,我该怎么选?

23540
来自专栏阮一峰的网络日志

理解矩阵乘法

大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。 ? 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 ? 矩阵减法也类...

36970
来自专栏人工智能LeadAI

SRU模型在文本分类中的应用

针对rnn网络训练速度较慢,不方便并行计算的问题,作者提出了一种SRU的网络,目的是为了加快网络的训练。

12130
来自专栏数据派THU

一文读懂支持向量积核函数(附公式)

来源:jerrylead 本文通过多个例子为你介绍支持向量积核函数,助你更好地理解。 核函数(Kernels) 考虑我们最初在“线性回归”中提出的问题,特征是房...

806140

扫码关注云+社区

领取腾讯云代金券