【机器学习笔记】7. 神经网络(一):概述

机器学习系列-第 7 篇


作者注:机器学习系列是本人在学习机器学习相关内容时产生的笔记,希望也能对您有所帮助。值得注意的是,作者作为初学者,表述难免有误或不全面,望多批评指正。
如有任何问题,欢迎您随时与我联系:Hauyu.Chen@Gmail.com

版权声明:本文由 Hov 所有,发布于 http://chenhy.com ,转载请注明出处。



0 前言

前面我们已经掌握了机器学习的基本套路,通过模型、目标函数、优化算法实现一些简单的任务。

本文我们要开始学习神经网络,神经网络是非常重要的机器学习算法。我们将通过学习神经网络,了解如何将单独的单元按照一定的规则连接,从而实现更加复杂的任务。


1 简介

对人类而言,我们的视觉、听觉由大脑的神经中枢产生,而神经中枢由大量的神经元相互连接而成。一个神经元通过树突(Dendrite)接收其它神经元传来的化学物质(信息),从而改变该神经元的电位,当电位到达某一阈值(Threshold)时,该神经元被激活,即“兴奋”起来,从而通过轴突(Axon terminal)向其它神经元发送化学物质(信息)。

下图为一个神经元。



顾名思义,神经网络是一种模拟大脑的算法。神经网络中最基本的成分是神经元模型( Neural Model ,又称 Logistic Unit )。神经元模型就是模拟上述神经元接收信息并传递信息的过程,一个神经元为一层。神经网络将多个单一的“神经元”联结在一起,一个“神经元”的输出可以作为另一个“神经元”的输入。


2 神经网络模型

在监督学习中,我们有一组训练数据 ( x( i ), y( i ) ) ,神经网络算法能提供一种复杂的非线性的假设模型 hθ(x) ,以参数 θ 来拟合我们的数据。

一个简单的神经网络如下所示:



上面的神经网络只有一个“神经元”,最左的一层(蓝色圆圈)为输入层,最右的一层为输出层,中间为隐藏层。 x1、x2、x3 为输入单元, a1、a2、a3 为隐藏单元, hθ(x) 为输出单元。特别的, x0、a0 是我们单独增加的偏置单元。

在隐藏层中, 为激励单元。为第 j 层的第 i 个激励单元。

在本文中,我们选用 sigmoid 函数作为激活函数,即神经元的输入 - 输出的映射关系为逻辑回归。

举个栗子:

如果隐藏层只有一层,如下:

其中, x1、x2、x3 是训练数据中的输入, x0 是偏置单元。

第二层从上往下分别为第二层的第 1、2、3 个激励单元。激励单元可通过以下公式计算:

g( ) 为逻辑函数,即单个神经元的输入和输出之间的映射关系为逻辑回归。

每一层有其对应的权值,为第 j 层节点的权值。如果第 j 层有 s( j ) 个单元,第 j+1 层有 s( j+1 ) 个单元,则 矩阵, +1 是因为还要加上偏置单元 x0 。

第三层为假设函数,即为最后的输出,我们也可认为它是,同理,其计算公式如下:


3 前向传播


我们用一个新的变量 z 来表示 g(···) 里面的内容,所以有:

也就是说,对于第二层的第 k 个节点,变量 z 可表示如下:

将 x 和 z 向量化:

,则:

所以,

我们将上面的计算步骤称为前向传播。通过 表示输入层的激活值,那么以此类推可求得第 j 层的激活值,最终计算出第 j+1 层(输出层)的激活值,也就是

前向传播通过矩阵向量的运算方式,可快速求解神经网络。


4 实例

下面我们通过实例说明神经网络的应用原理。

4.1 AND运算

AND 运算相信大家都熟悉,x1 AND x2 只有当 x1=1 且 x2=1 ,结果为 1 ,否则为 0 。

AND 运算可通过加法器来求,那么有没有其它的方法呢?当然有,神经网络也可以。

通过神经网络实现 AND 运算,神经网络模型如下:

注:x0为偏置单元,x0=1。

设参数向量为:

所以假设模型为:

g 为逻辑函数,其图像如下:

所以,只有当 x1=1 且 x2=2 ,结果为 1 。

至此,我们通过神经网络实现了基本的 AND 运算。同理, OR 运算也可以通过这样的方式实现,只不过参数向量修改一下即可。

AND 、 NOR 、 OR 运算对应的参数向量如下:

4.2 XNOR运算

单一的 AND 、 OR 运算过于简单,下面我们通过神经网络来实现 XNOR 运算,以更好地领悟神经网络的精髓。

XNOR 运算:只有 x1 、 x2 都为 0 或都为 1 ,结果为 1 。

神经网络模型如下:

以 AND 和 NOR 为第一层的参数向量,

所以,第一层的参数向量如下:

以 OR 为第二层的参数向量,

所以,第二层的参数向量如下:

综上,神经网络图解如下:

第一层输入为 +1 ( 即x0 )、 x1 、 x2 ,输出为

第一层的输出为第二层的输入,所以第二层的输入为 +1 (即) 、,第二层的输出为,也就是

由前向传播的计算思路,有:

真值表如下:

至此,我们成功通过神经网络实现 XNOR 运算。神经网络实质上是将较简单的运算组合成较复杂的运算,以此实现更强大的功能。比如,在栗子中我们将简单运算 AND 、 OR 、 NOR 结合,实现复杂的 XNOR 运算。


 
comments powered by Disqus