神经网络算法——解决非线性分类复杂问题

神经网络的定义 

把神经元模拟成一个逻辑单元,在神经网络的模型中,神经元收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activation funciton)处理以产生神经元的输出。

把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。

 一个神经元可以看成包含两个部分,一个是对输入的加权求和加上偏置,一个是激活函数对求和后的激活或者抑制。

与神经网络有关的几个重要术语:

阈值(threshhold)

阈值逻辑单元(Threshold Logic Unit,TLU),它可以输入一组加权系数的量,对它们进行求和,如果这个和达到或者超过了某个阈值,输出一个量。

激励函数(activation function)

所谓激活函数,就是在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

一个前馈神经网络如果具有线性层和至少一层具有 "挤压" 性质的激活函数(如 signmoid 等),给定网络足够数量的隐藏单元,它可以以任意精度来近似任何从一个有限维空间到另一个有限维空间的  可测函数。

要相符上面的定理,也就是想拟合任意函数,一个必须点是 “要有带有 “挤压” 性质的激活函数”。这里的 “挤压” 性质是因为早期对神经网络的研究用的是 sigmoid 类函数,所以对其数学性质的研究也主要基于这一类性质:将输入数值范围挤压到一定的输出数值范围。

权重

连接是神经元中最重要的东西。每一个连接上都有一个权重。

一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。

例如:我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成a*w,因此在连接的末端,信号的大小就变成了a*w。

如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图。

输入层、输出层、隐藏层

  • 输入层(input layer)输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;
  • 隐藏层(Hidden Layer):中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程
  • 输出层(Output Layer):顾名思义,输出层向外界输出信息处理结果

偏置单元( bias unit)

它本质就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。 
因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。

 bias的计算方式

 神经网络结构中对偏置单元的计算处理方式有两种, 
 (1)设置偏置单元=1,并在参数矩阵 Θ 中设置第 0 列对应偏置单元的参数,对应的神经网络如下: 
 神经网络架构 
 其中,x0 是第一层的偏置单元(设置为1),Θ(1)10 是对应该偏置单元 x0 的参数;a(2)0 是第二层的偏置单元,Θ(2)10 是对应的参数。 
 在计算激活值时按照(以a(2)1为例): 
 激活值计算公式

   相当于bias本身值为1,但它连接各个神经元的权重不为1,即---整个神经网络只有1个bias,对应有多个不同的权重(权重个数等于hide层和out层神经元的个数)

 

2)设置偏置单元,不在参数矩阵中设置对应偏置单元的参数,对应的神经网络如下: 
 神经网络架构 
 其中,b(1) 是 W(1) 对应的偏置单元向量,b(2) 是 W(2) 对应的偏置单元向量,b(1)1 是对应 a(2)1 的偏置单元。注意,此时神经网络的参数表示更改为:(W, b) 
 在计算激活值时按照: 
 激活值计算公式 

   相当于bias连接各个神经元的所有权重都为1,但bias本身不为1,即---有多个bias,但所有的bias对应的权重都为1(bias的个数等于hide层和out层神经元的个数)

 偏置的大小度量了神经元产生正 (负) 激励的难易程度

感知器

定义: 感知器就是神经网络中的神经元

 

图示:
 
 

输入:x1-xn

权值:w1-wn
偏置 :w0

激活函数 :跳跃函数
 
 

 

 

输出
 
 

用途:可以拟合所有的线性函数(线性分类、线性回归) 线性分类:可用一条线对目标进行分类。
感知器的训练训练方法:将权重项和偏置项初始化为0,利用感知器规则迭代的修改w 和b,直到完成。

 

关于神经网络,最后提炼了几条要点:

  1. 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;
  2. 神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;
  3. 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。  

 之前我们一直学习线性回归问题和神经网络之间的联系:

比如基础的逻辑回归,结合上面的神经元知识,可以发现,逻辑回归就是激活函数是sigmoid 的单层简单神经网络。也就是说,只要在神经元的输出端有一个合适的损失函数,就能让单个神经元变成一个线性分类器。因此说,那些线性的分类器本身就是一个单层神经网络。

原文地址:https://www.cnblogs.com/CuteyThyme/p/10681114.html