探析神经网络

前言:神经网络的研究早在20世纪40年代就已经开始了,发展到今天形成了庞大的体系并且具有多学科交叉的特点。

文章目录

  • 一、神经元模型
    • 1.阶跃函数
    • 2.sigmoid函数
    • 3.tanh函数
  • 二、感知机与多层前馈神经网络
    • 1.感知机
      • (1)定义
      • (2)工作
    • 2.多层前馈神经网络
  • 三、BP算法
  • 四、对于某些问题的解决
    • 1.过拟合问题
      • (1)早停
      • (2)正则化
    • 2.跳出局部最小
      • (1)模拟退火
      • (2)随机梯度下降
      • (3)遗传算法
  • 五、其他常见神经网络
    • 1.RBF网络
    • 2.ART网络
    • 3.SOM网络
    • 4.Elman网络(递归神经网络)
    • 5.级联相关网络

一、神经元模型

由于神经网络具有多学科交叉的特点,所以对于神经网络的定义不一。我们采用最广泛的一种定义,即由Kohonen于1988年提出的:神经网络(neural networks)是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

下面我们来看看经久不衰的M-P神经元模型。
探析神经网络_第1张图片
为了便于理解,我对这个模型做一个简单的解释:n个神经元分别产生各自的输入x1、x2······xn,各自附有连接权重w1、w2······wn,输入值与接收的神经元阈值seta进行比较,通过激活函数产生输出。

常见的激活函数:

1.阶跃函数

探析神经网络_第2张图片
探析神经网络_第3张图片

x= linspace(0,1,101);
y = [zeros(1,50),ones(1,51)];
plot(x,y);

2.sigmoid函数

探析神经网络_第4张图片

探析神经网络_第5张图片

x= [-100:0.1:100];
y=1./(1+exp(-x) );
plot(x,y);

3.tanh函数

……另外激活函数还有很多这里就不一一列举了。需要指出的是单位阶跃函数是我们理想的激活函数,但由于其不是很光滑,性质不是很好,大多数情况下我们使用其他函数来代替单位激活函数。

二、感知机与多层前馈神经网络

为了更好地理解感知机与多层网络,我们首先可以建立逻辑与、或、非、异或、或非、与非的概念。

与:当所有输入条件同时满足1,输出1;输入条件只要有0即输出0。

或:输入条件有1即输出1;一个1也没有才输出0。

非:输出结果与输入条件取反。即0为1,1为0。

异或:对于两个输入门,输入条件相同为0,不同为1

或非:对于两个输入门,两输入条件都不为1时输出1;否则输出0。

与非:当输入条件都为1时反而输出0。

1.感知机

(1)定义

感知机由两层神经元组成,即输入层接受外界信号后加权传递给输出层。

(2)工作

我们知道探析神经网络_第6张图片
假定f为单位阶跃函数,通过控制权重和阈值可以实现逻辑与或非运算。那么我们很容易想到,权重和阈值如何确定呢?
答案是“学习”。其实阈值可看作固定输入为-1的“哑结点”,对应的连接权重为Wn+1,这样的话“学习”就等同于对于权重的学习。遵循“知错就改”的学习规则,即:
在这里插入图片描述
在这里插入图片描述
其中η(0<η<1)成为学习率,感知机根据估计值的错误程度进行调整。

2.多层前馈神经网络

实际上,感知机仅有一层功能神经元,即仅有输出层进行激活函数处理,能力有限,对于解决异或等逻辑问题显得能力不足。

先来谈谈线性可分与非线性可分问题:
此处就不给出严密的定义了,线性可分即为用一个线性超平面可以将两类模式分开,反之即为非线性可分。

对于异或问题,有:
探析神经网络_第7张图片
只能用两个线性超平面将两类分割,这样,我们原有的具有两层神经元的感知机就要扩展层数了,发展为多层神经网络,引入的层处于输入层和输出层之间,称为隐层,那么就有单隐层前馈网络与双隐层前馈网络。如果网络拓扑结构上不存在环或者回路,那么称之为多层前馈神经网络。

三、BP算法

要发展多层神经网络,就必须有强大的算法支撑,毕竟感知机的“知错就改”型学习规则太简单了。下面我们来看看至今为止最成功的神经网络算法——误差反向传播法。
对于具体的推导,方法不一,入手角度也不一,我用隐层到输出层的权重推导了1h,十分复杂,很容易就搞错了符号和下标。
推荐:[https://blog.csdn.net/u010858605/article/details/69857957]
关于累积BP与标准BP:
首先我们应该明确,BP算法的目标是最小化训练集上的累积误差,但标准BP算法每次只针对单个训练样例更新权重,更新显得更加频繁,处理更加复杂,时间也较长,并且不同次更新可能互相抵消。累积BP算法针对累积误差最小化,处理速度较快,但在某些问题中,累积误差减小到一定程度后难以下降,这时标准BP算法可能就取得较好的解。

四、对于某些问题的解决

1.过拟合问题

由于神经网络的功能实在是太强大了,其往往遭遇过拟合问题,指的是模型对于训练集高度拟合,但对于测试集的测试误差却不断升高。那么如何解决呢?

(1)早停

将数据集分为训练集和验证集,若训练集误差降低但验证集误差上升那么停止训练,同时返回具有最小验证集误差的连接权和阈值

(2)正则化

正则化的方法也不一,但基本思想都是一致的,即在误差目标函数中增加一个用于描述网络复杂度的部分,误差由经验误差和网络复杂度加权求和决定。
其实通俗地理解正则化就是使参数矩阵变得稀疏,淡化或忽略某些特征的影响,因而缓解了过拟合现象。

2.跳出局部最小

我们欲求寻找一组合适的参数使得误差目标函数取得全局最小,这是一个参数寻优过程。我们知道,全局最小一定是局部最小,局部最小却不一定是全局最小。有时我们可能陷入了局部最小,这个问题需要解决。

(1)模拟退火

(2)随机梯度下降

(3)遗传算法

·······
另外需要指出的是,这些算法均为启发式算法,缺乏数学保障。

五、其他常见神经网络

1.RBF网络

2.ART网络

3.SOM网络

4.Elman网络(递归神经网络)

5.级联相关网络

神经网络、机器学习、深度学习……发展实在是太快了,持续更新ing

你可能感兴趣的:(机器学习,神经网络,机器学习,深度学习)