zoukankan      html  css  js  c++  java
  • 神经网络

    【M-P神经元模型】

    神经网络中最基本的成分是神经元($Neuron$)模型。

    在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;

    如果某神经元的电位超过了一个“阈值”($threshold$),那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。

    1943年,$McCulloch$ 和 $Pitts$ 将上述情形抽象为简单模型,这就是一直沿用至今的“M-P神经元模型”。

    在这个模型中,神经元接受到来自 $n$ 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接($connection$)进行传递,

    神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”($activation function$)处理以产生神经元的输出。

    理想中的激活函数是阶跃函数,它将输入值映射为输出值“0”或“1”,显然,“1”对应于神经元兴奋,“0”对应于神经元抑制,

    然而,阶跃函数具有不连续,不光滑等不太好的性质,因此实际常用 $Sigmoid$ 函数作为激活函数,

    典型的 $Sigmoid$ 函数如图所示,它把可能在较大范围内变化的输入值挤压到 $(0,1)$ 输出值范围内,因此有时也称为“挤压函数” $squashing function$ 。

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

    事实上,从计算机科学的角度看,我们可以先不先考虑神经网络是否真的模拟了生物神经网络,只需将一个神经网络视为包含了许多参数的数学模型,

    这个模型是若干个函数,例如 $y_i=f(sum_iw_ix_i- heta_j)$ 相互(嵌套)代入而得。有效的神经网络学习算法大多以数学证明为支撑。

    【感知机与多层网络】

    感知机($Perceptron$)由两层神经元组成,如图5.3所示,

    输入层接受外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”($threshold logic init$)

    感知机能容易地实现逻辑与、或、非运算。

    注意到 $y=f(sum_{i}w_ix_i- heta)$ ,假定 $f$ 是图中的阶跃函数,有

    • “与” $(x_1land x_2)$ :令 $w_1=w_2=1, heta=2$ ,则 $y=f(1cdot x_1+1cdot x_2+2)$ ,仅在 $x_1=x_2=1$ 时,$y=1$;
    • “或” $(x_1lor x_2)$ :令 $w_1=w_2=1, heta=0.5$ ,则 $y=f(1cdot x_1+1cdot x_2-0.5)$ ,当 $x_1=1$ 或 $x_2=1$ 时,$y=1$;
    • “非” $(lnot x)$ :令 $w_1=-0.6,w_2=0, heta=-0.5$ ,则 $y=f(-0.6cdot x_1+0cdot x_2+0.5)$ ,当 $x_1=1$ 时,$y=$ ;当 $x_1=0$ 时,$y=1$

    更一般地,给定训练数据集,权重 $w_i(i=1,2,…,n)$ 以及阈值 $ heta$ 可通过学习得到。

    阈值 $ heta$ 可看作一个固定输入为“-1.0”的“哑节点”($dummy node$)所对应的链接权重 $w_{n+1}$ ,这样,权重和阈值的学习就可统一为权重的学习。

    感知机学习规则简单,对训练样例 $(x,y)$ ,若当前感知机的输出为 $hat{y}$ ,则感知机权重将这样调整:

    $$w_igets w_i+Delta w_i ag{5.1}$$

    $$Delta w_i=eta (y-hat{y})x_i ag{5.2}$$

    其中,$eta in (0,1)$称为学习率($learning rate$)。

    从式(5.1)可看出,若感知机对训练样例 $(x,y)$ 预测正确,即 $hat{y}=y$ ,则感知机不发生变化,否则将根据错误的程度进行权重调整。

    需注意的是,感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元($functional neuron$),其学习能力非常有限。

    事实上,上述与、或、非问题都是线性可分($linearly separable$)的问题。

    可以证明,若两类模式是线性可分的,即存在一个先行超平面能将他们分开,如图所示,则感知机的学习过程一定会收敛($converge$)而求得适当的权向量 $w=(w_1;w_2;…;w_n+1)$ ;

    否则感知机学习过程将会发生振荡($fluctuation$),$w$ 难以稳定下来,不能求得合适解,例如感知机甚至不能解决如图所示的异或这样简单的非线性可分问题。

    要解决非线性可分问题,需考虑使用多层功能神经元。

    例如图5.5中这个简单的两层感知机就能解决异或问题,在图5.5(a)中,输出层与输入层之间的一层神经元,被称为隐层或隐含层($hidden layer$),

    隐含层和输出层神经元都是拥有激活该函数的功能神经元。

    更一般的,常见的神经网络是形如图5.6所示的层级结构,每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,

    这样的神经网络结构通常称为“多层前馈神经网络”($multi-layer feedforward nerual networks$),

    其中输入层神经元接受外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出;

    换言之,输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元。因此,图5.6(a)通常被称为“两层网络”。

    为避免歧义,本书称其为“单隐层网络”。只包含隐层,即可称为多层网络。

    神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”($connection weight$)以及每个功能神经元的阈值;

    换言之,神经网络“学”到的东西,蕴涵在连接权与阈值中。

    【误差逆传播算法】

    【全局最小与局部最小】

    【其他常见神经网络】

    【深度学习】

  • 相关阅读:
    PHP中利用jQuery操作json格式数据,实现$_POST的数据传输和接收
    如何快速掌握一门技术【婴儿最强学习回头看一看】
    显示桌面.scf
    注册表数据库
    win10home_fixgpedit.msc
    Eclipse 中 jetty 调试模式(debug)正常启动无法访问;非调试模式正常
    svn中的与资源库同步操作 讲解
    windows下二进制mysql的卸载以及安装教程
    mysql服务正在启动或停止中请稍后片刻再试一次,服务强制杀死的方法
    Eclipse中git检出、更新、提交、合并分支、以及解决冲突
  • 原文地址:https://www.cnblogs.com/ForTech/p/8612741.html
Copyright © 2011-2022 走看看