人工神经网络简介

  ANN(神经元)学习对于训练数据中的错误是鲁棒的,并且已经成功地应用于学习包含诸如解释视觉场景,语音识别和学习机器人控制策略之类的问题的实值,离散值和向量值函数。人工神经网络(ANNs)的研究部分受到以下观察的启发:生物学习系统是由大脑中相互连接的神经元非常复杂的网络构建的。人类大脑包含一个密集的相互连接的网络,大约10 ^ 11-10 ^ 12个神经元,每个神经元连接平均连接到10 ^ 4-10 ^ 5个其他神经元。因此,在平均人类大脑上采取大约10 ^ -1来做出令人惊讶的复杂决策。移动ANN系统以基于分布式表示捕获这种高度并行计算。
  但人工神经网络对生物神经系统的激励较小,生物神经系统存在许多复杂性,而这些复杂性并未由人工神经网络建模。其中一些显示在图中。

生物神经元与人工神经元的区别

生物神经元 人工神经元
主要组成部分:Axions,Dendrites,Synapse 主要组件:节点,输入,输出,重量,偏置
来自其他神经元的信息以电脉冲的形式在称为突触的连接点处进入树突。信息从树突流到处理它的单元。输出信号,一系列脉冲,然后沿着轴突发送到其他神经元的突触。 神经元的排列和连接构成了网络并具有三层。第一层称为输入层,是暴露于外部信号的唯一层。输入层将信号传输到下一层中的神经元,称为隐藏层。隐藏层从接收的信号中提取相关特征或模式。然后将那些被认为重要的特征或模式引导到输出层,输出层是网络的最后一层。
突触能够增加或减少连接的强度。这是存储信息的地方。 人工信号可以通过权重以类似于突触中发生的物理变化的方式改变。
大约10^11个神经元。 10^2 ~10^4神经元与当前技术

使用人工神经网络的优势:

  • 人工神经网络中的问题可以包含由许多属性 - 值对表示的实例。
  • 用于具有目标函数输出的问题的ANN可以是离散值,实值或几个实值或离散值属性的向量。
  • ANN学习方法对训练数据中的噪声非常鲁棒。训练样本可能包含错误,这些错误不会影响最终输出。
  • 它通常用于可能需要快速评估学习目标函数的地方。
  • 人工神经网络可以承受较长的训练时间,具体取决于诸如网络中的权重数量,所考虑的训练样本的数量以及各种学习算法参数的设置等因素

McCulloch-Pitts神经元模型:

  人类神经元的早期模型由Warren McCulloch和Walter Pitts于1943年引入.McCulloch-Pitts神经模型也称为线性阈值门。它是一组输入I1,I2,...,Im和一个输出y的神经元。线性阈值门只是简单地将输入集分类为两个不同的类。因此输出y是二进制的。可以使用以下等式在数学上描述这样的函数:
\(Sum=\Sigma_{i=1}^{N}I_{i}W_{i}\)

\(y=f(Sum)\)

  W1,W2,W3 ...... .Wn是在(0,1)或(-1,1)的范围内归一化并且与每个输入线相关联的权重值,Sum是加权和,并且是阈值常数。函数f是阈值处的线性阶跃函数

单层神经网络(Perceptrons)

输入是多维的(即输入可以是矢量):
输入x =(I1,I2,...,In)
输入节点(或单元)连接(通常完全)到节点(或多个节点)在下一层中。下一层中的节点采用其所有输入的加权和:
\(SummedInput=\Sigma_{i}w_{i}I_{i}\)

规则:

输出节点具有“阈值”t。
规则:如果总结输入?t,然后它“触发”(输出y = 1)。否则(总和输入<t)它不会触发(输出y = 0)
\(if\Sigma_{i}w_{i}I_{i}\geq t\)

\(then ,y=1\)

\(else(if ,\Sigma_{i}w_{i}I_{i}<t)\)

\(then, y=0\)

感知器的局限性:

  1. 由于硬限制传递函数,感知器的输出值只能取两个值(0或1)中的一个。
  2. 感知器只能对线性可分离的矢量集进行分类。如果可以绘制直线或平面以将输入矢量分成正确的类别,则输入矢量可线性分离。如果向量不是线性可分的,则学习将永远不会达到所有向量被正确分类的点布尔函数XOR不是线性可分的(它的正负实例不能用直线或超平面分隔)。因此,单层感知器永远不能计算XOR函数。这是一个很大的缺点,曾经导致神经网络领域的停滞。但这已经通过多层解决了。

多层神经网络

  多层感知器(MLP)或多层神经网络包含一个或多个隐藏层(除了一个输入层和一个输出层)。虽然单层感知器只能学习线性函数,但多层感知器也可以学习非线性函数。

image

  该神经元将输入x1,x2,...,x3(和+1偏置项)作为输入,并输出f(求和输入+偏置),其中f(。)称为激活函数。Bias的主要功能是为每个节点提供可训练的常量值(除了节点接收的正常输入之外)。每个激活函数(或非线性)采用单个数字并对其执行某个固定的数学运算。在实践中您可能会遇到几种激活功能:

Sigmoid:获取实值输入并将其压缩到0到1之间的范围
\(\sigma(x)=\frac{1}{1+exp(-x)}\)

.tanh:获取实值输入并将其压缩到范围[-1,1]。
\(tanh(x)=2\sigma(2x)-1\)

ReLu: ReLu代表整流线性单位。它将实值输入和阈值设为0(将负值替换为0)。
\(f(x)=max(0,x)\)

posted @ 2019-01-23 15:07  编程自习室  阅读(923)  评论(0编辑  收藏  举报