动手深度学习:多层感知机

Hello,大家好。今天要给大家在多类逻辑回归模型基础上讲一讲多层感知机。

首先我们要知道多类逻辑回归模型的仍然是一个普适的线性模型,从之前我们画过的模型示意图中,我们可以发现它是一个两层神经网络。那什么是多层感知机呢?

简单来说,多层感知机就是至少包含一个隐含层的神经网络。换句话说,多层感知机就是在多类逻辑回归模型输入输出层中至少加入一层隐含层的模型。

隐含层:粗略的理解就是,除输入层和输出层以外的其他各层叫做隐藏层。隐藏层不直接接受外界的信号,也不直接向外界发送信号

下图表示一个包含两个隐含层的多层感知机:

隐含层有啥用?

从上图中我们可以看出来,如果我们隐含层里都是线性函数,那么其实整个模型仍然是线性的,那其实和多类逻辑回归并没有任何区别。

用数学公式来解释一下就是酱的:

$y = X⋅W1⋅W2$

W1 和 W2 表示是图上那两隐含层的函数,那我们都知道矩阵相乘的结果可以这么表示:

$ W3 = W1⋅W2 $

也就是又变成了:

$y = X⋅W3$

那么,这种隐含层都是线性函数的多层感知机其实就是多类逻辑回归。

但是!我们生活中有很多问题是线性函数不能解决的,为了让我们的模型能拟合非线性函数,我们需要在层与层之间插入非线性的函数,这里就会引入激活函数的概念。

激活函数可以引入非线性因素,解决线性模型所不能解决的问题。

对激活函数形象的理解,可以参考一个知乎的回答:

神经网络激励函数的作用是什么?有没有形象的解释? - lee philip的回答 - 知乎

https://www.zhihu.com/question/22334626/answer/21036590

用 Gulon 实现一个多层感知机

还记得我们之前写过的多类逻辑回归模型吗?

我们只需要稍稍改动一下就能实现多层感知机。

定义模型

在我们全连接层 Dense 层之前加入一个隐含层。

这里我们定义了一个 256 个节点的隐含层,选择了 ReLu 激活函数。

完整代码

完整代码和多类逻辑回归基本保持一致

训练结果

相比多类逻辑回归,准确率提高了有木有?!

结语

至此,我们的多层感知机的栗子就讲完了。

有问题的小伙伴可以留言。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180509G1YY2900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券