神经网络基础

        一直觉得人工智能很厉害,到底为什么这么流弊,我也不知道。怀着同样的疑问我开始了人工智能的相关学习了解。入坑后第一个让我觉得流弊的词汇就是神经网络了。不经感叹道:“我kao,这玩意儿还真弄的仿生学啊”。接下来就是想记录分享一下自己关于神经网络的一些理解。

神经元模型

高中的时候我们都学过生物,知道神经元(Neuron)是一种高度分化的细胞,是神经系统的基本结构和功能单位之一,它具有感受刺激和传导兴奋的功能。神经元有两种状态:兴奋和抑制。一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质目的就是为了传导信息。
1943年,McCulloch和Pitts将上图的神经元结构用一种简单的模型进行了表示,构成了一种人工神经元模型,也就是我们现在经常用到的“M-P神经元模型”,如下图所示:

神经网络基础_第1张图片

从上图M-P神经元模型可以看出,神经元的输出

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

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

神经网络基础_第2张图片


        我们该怎样去理解这个神经元模型呢?首先我们就先把这个模型简化为一个传导疼痛的模型,最后output的输出就是痛和不痛。这样假设之后我们在来看我们的模型中的白色的方框,x1,x2一直到xn.就是我们输入的信号。简单点说就是假如我打了你一拳,那么你皮肤上产生的形变信息,怎么变形,在x轴上形变多少,在y轴上形变多少。打的瞬间皮肤上的温度,湿度是多少等等一系列的信息都将被传入判断疼痛的神经元(黄色方框)但是这一系列的信息在传递到疼痛的神经元的时候不一定都是100%的传递。会存在一定的权值。假如说你疼不疼的这个判断主要是根据你皮肤表面的形变量来决定的所以他占的权重应该要大一点,权值也就会大一点,而皮肤表面的温度信息只是占很小一部分来帮助辅助判断。那么温度的信息在传递的权值也就小一点。上图中箭头线上的w1,w2..等就是用于表示神经元之间的连接权值。所以当所有的这些信号被传递到感受疼痛的神经元后。该神经元会对这些信号求和得到信号的强度。再将信号和判断疼痛的信号强度的阈值进行比较也就是上图中的绿色部分,我们称之为激活函数。当比较信号的强度大于阈值时就输出为疼痛,小于阈值时就输出不痛。这样我们就完成了一次信号的传递。


感知机和神经网络

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

神经网络基础_第3张图片

根据上图我们很容易的出该模型的数学表达式:

                                                                y= f(wx+b)

其中 w为感知机输入层到输出层连接的权重, b表示输出层的偏置。

在理解了神经元模型和感知机后,我们只需要将许多单一的神经元连接在一起,这样一个神经元的输出作为下一个神经元的输入我们就能得到一个神经网络,例如下图所示:

神经网络基础_第4张图片

上图是一个典型的三层神经网络Layer L1是输入层,Layer L2是隐含层,Layer L3是隐含层,我们现在手里有一堆信号{x1,x2,x3,...,xn},输出也是一堆信号{y1,y2,y3,...,yn},现在要他们在隐含层做某种变换,让你把信号灌进去后得到你期望的输出。这样一个神经网络的模型就建立好了。但是我们就能用他来完成我们想要的功能吗?显然是不行的。就像你自己一样已经拥有一套相当完整且高度发达的神经系统,在没有接触任何英语教学的情况下,你就能说英语吗?显然也是不行的,你得先学习,需要知道英语的一些规则,看到那些字母之后你进行理解输出,老师会告诉你这样理解是正确的还是错误的,如果错了你需要对理解进行调整,在输出新的理解,再错就会在调整,一直到理解正确为止,这样我们就完成了学习的过程。以后我们就能够对英语进行理解和处理。同样对于我们的神经网络模型也需要学习才能够完成我们想要他完成的功能。那么神经网络模型是如何来完成学习的过程的呢?

误差逆传播算法

所谓神经网络的训练或者是学习,其主要目的在于通过学习算法得到神经网络解决指定问题所需的参数,这里的参数包括各层神经元之间的连接权重以及偏置等。就是我们怎么去确认神经网络中的权值,w1,w2....wn.等等参数的过程就是神经网络的学习过程。

误差逆传播(error BackPropagation,简称BP)算法。BP学习算法通常用在最为广泛使用的多层前馈神经网络中。他就是一种经典的确定神经网络中各项连接参数的算法。其大致流程可以总结如下:

输入:训练集D ; 学习率;
  过程:
  1. 在(0, 1)范围内随机初始化网络中所有连接权和阈值
  2. repeat:
  3.for all (x k ,y k )∈D do
  4. 根据当前参数计算当前样本的输出;
  5. 计算输出层神经元的梯度项;
  6. 计算隐层神经元的梯度项;
  7. 更新连接权与阈值
  8. end for
  9. until 达到停止条件

  输出:连接权与阈值确定的多层前馈神经网络。

这里的数学公式就不推导里,主要还是想理解 这中处理问题的方法。

其实除了上面介绍的这个神经网络模型还有很多各种个样的神经网络模型像什么SOM网络(Self-Organizing Map,自组织映射)等等。

参考内容:http://www.cnblogs.com/maybe2030/p/5597716.html

你可能感兴趣的:(学习笔记)