人工神经网络的一些基础知识

人工神经网络

        人工神经网络(artificial neural network, ANN)是对神经网络的一种数学描述形式。我们经常用"神经网络"来称呼"人工神经网络"。它是由简单神经元经过相互连接形成网状结构,通过调节各连接的权重值改变连接的强度,进而实现感知判断。他的训练目的是希望能够学习到一个模型,实现输出一个期望的目标值。学习的方式是在外界输入样本的刺激下不断改变网络的连接权值。
        传统神经网络主要分为:前馈型神经网络,反馈型神经网络和自组织神经网络,可以归结为监督型学习算法和非监督型学习算法。传统神经网络结构比较简单,训练时随机初始化输入参数,并开启循环计算输出结果,与实际结果进行比较从而得到损失函数,并更新变量使损失函数结果值极小,当达到误差阈值时即可停止循环。对于ANN,人们做了一些必要的假设:

  • 没有环
    ANN假设信号的传播路径中不存在回路,即信号经过一个神经元后,就不会再次传送到这个神经元
    在这里插入图片描述
  • 线性组合输入、激活函数与人工神经元
    ANN假设,一个神经元可以接收若干个信号,对这些信号进行"综合处理"(比如线性组合,sigmod函数映射,softmax函数映射)后,会输出一个新的信号
    在这里插入图片描述
    假设一个神经元接收的输入是n个,可以接收一个长度为 n n n的一维向量 x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn),对应的输入权重是 w = ( w 1 , w 2 , . . . w n ) w=(w_1,w_2,...w_n) w=(w1,w2,...wn),那么,这个神经元的输出就是 y = s i g m o d ( w ∗ x ) y = sigmod(w*x) y=sigmod(wx) = s i g m o d ( w 1 ∗ x 1 + . . . + w n ∗ x n ) = sigmod(w_1*x_1 + ... + w_n*x_n) =sigmod(w1x1+...+wnxn)人工神经元的理想输出是0或者1——0表示抑制状态,1表示激活状态。多个神经元的状态,看起来就像某种编码(比如001),可以用来表示特定的含义,比如我们可以用001、010、100来表示Iris Setosa、、Iris Versicolour和Iris Virginica鸢尾花的其中三种。
  • 背景噪声信号
    ANN还假设,大脑中存在一个类似背景噪声的信号,强度是1,每一个神经元都可以接收到这个信号。对此,我们可以理解为,各个神经元对背景噪声信号的处理(也就是加权)也是有区别的,那么,神经元对这些信号的加权就是 w = ( w 1 , w 2 , . . . w n , b ) w=(w_1,w_2,...w_n,b) w=(w1,w2,...wn,b)
    那么上面的公式就变为: y = s i g m o d ( w ∗ x ) y = sigmod(w*x) y=sigmod(wx) = s i g m o d ( w 1 ∗ x 1 + . . . + w n ∗ x n + b ) = sigmod(w_1*x_1 + ... + w_n*x_n+b) =sigmod(w1x1+...+wnxn+b)
  • 特定的神经网络完成特定的任务
    ANN还假设,针对特定外部信息,信号在神经网络中的传播路径是固定的。比如,我们完成一项动作时,只需要和这项动作相关的几个神经元工作就ok了。
前馈神经网络(Feed Forward Neural Network)

前馈神经网络是一种单向多层的网络结构,即信息是从输入层开始,逐层向一个方向传递,一直到输出层结束。

所谓的“前馈”是指输入信号的传播方向为前向,在此过程中并不调整各层的权值参数,
而反传播时是将误差逐层向后传递,从而实现使用权值参数对特征的记忆,即通过反向传播(BP) 算法来计算各层网络中神经元之间边的权重。BP算法具有非线性映射能力,理论上可逼近任意连续函,从而实现对模型的学习

感知机(器)
  • 感知机(器)是一种结构最简单的前馈神经网络,它主要用于求解分类问题。感知机的模型就是尝试找到一条直线,能够把二分类问题中的不同类别隔离开。放到三维空间或者更高维的空间,感知机的模型就是尝试找到一个超平面,能够把所有的二元类别隔离开。
    • 对于二维空间问题: 一个感知器可以接收 n n n个输入 x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn),对应 n n n个权值 w = ( w 1 , w 2 , . . . w n ) w=(w_1,w_2,...w_n) w=(w1,w2,...wn),此外还有一个偏置项阈值,就是图中的 b b b,神经元将所有输入参数与对应权值进行加权求和,得到的结果经过激活函数变换后输出,计算公式如下: y = f ( x ∗ w + b ) , 即 = x 1 ∗ w 1 + x 2 ∗ y 2 + . . . + x n ∗ y n + b y=f(x*w+b),即=x_1*w_1+x_2*y_2+...+x_n*y_n+b y=f(xw+b)=x1w1+x2y2+...+xnyn+b
      (这个计算公式和上一小节的第三个假设一样,你发现了吗)
    • 对于多维空间问题,如果我们有m个样本,每个样本对应于n维特征和一个二元类别输出,如下: ( x 1 ( 0 ) , x 2 ( 0 ) , . . . x n ( 0 ) , y 0 ) , ( x 1 ( 1 ) , x 2 ( 1 ) , . . . x n ( 1 ) , y 1 ) , . . . ( x 1 ( m ) , x 2 ( m ) , . . . x n ( m ) , y m ) (x_1^{(0)}, x_2^{(0)}, ...x_n^{(0)}, y_0), (x_1^{(1)}, x_2^{(1)}, ...x_n^{(1)},y_1), ... (x_1^{(m)}, x_2^{(m)}, ...x_n^{(m)}, y_m) (x1(0),x2(0),...xn(0),y0),(x1(1),x2(1),...xn(1),y1),...(x1(m),x2(m),...xn(m),ym)我们的目标是找到这样一个超平面,即: θ 0 + θ 1 x 1 + . . . + θ n x n = 0 \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n} = 0 θ0+θ1x1+...+θnxn=0让其中一种类别的样本都满足 θ 0 + θ 1 x 1 + . . . + θ n x n > 0 \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n} > 0 θ0+θ1x1+...+θnxn>0另一种类别的样本都满足 θ 0 + θ 1 x 1 + . . . + θ n x n < 0 \theta_0 + \theta_{1}x_1 + ... + \theta_{n}x_{n} < 0 θ0+θ1x1+...+θnxn<0从而得到线性可分。如果数据线性可分,这样的超平面一般都不是唯一的,也就是说感知机模型可以有多个解。
      在这里插入图片描述
      (此图也可以作为前向神经网络的过程)
      说到这个图,我顺便说下前向的步骤:
      在这里插入图片描述
      y = s i g m o d ( w ∗ x ) y = sigmod(w*x) y=sigmod(wx) y = s i g m o d ( w 1 ∗ x 1 + . . . + w n ∗ x n ) y=sigmod(w_1*x_1 + ... + w_n*x_n) y=sigmod(w1x1+...+wnxn)得:
      在这里插入图片描述使用 Sigmoid 激活函数对加权和进行缩放,得到了第一个隐藏层 h 1 h_1 h1 的值。请注意,原始的 2D 向量现在映射到了 3D 空间。
      在这里插入图片描述
      第 2 层 h 2 h_2 h2 类似。首先计算第一个隐藏层的加权和 z 2 z_2 z2在这里插入图片描述
      然后计算它们的 Sigmoid 激活函数。在这里插入图片描述(向量 [ 0.371665960.45414264 ] [0.37166596 0.45414264] [0.371665960.45414264] 代表的是网络对给定的输入 X 计算出的对数概率或者预测向量。)
      最后计算整体损失, 整 体 损 失 = 实 际 值 减 去 预 测 值 整体损失=实际值减去预测值 =,这个损失函数的目标就是量化预测向量 h 2 h_2 h2 和人工标签 y y y 之间的距离。请注意,这个损失函数包括一个正则项,它以岭回归的形式惩罚较大的权重。换言之,平方值比较大的权重会增大损失函数,而这正是我们希望最小化的指标。
      L o s s = 1 2 N ∑ i = 0 N ( y i − h 2 i ) 2 + λ 2 N ∑ i = 0 M W j 2 Loss=\frac{1}{2N}\sum\limits_{i=0}^{N}(y_i-h_{2i})^2+\frac{\lambda}{2N}\sum\limits_{i=0}^{M}W_j^2 Loss=2N1i=0N(yih2i)2+2Nλi=0MWj2
BP (Back Propagation)神经网络

BP也是前馈神经网络,只是它的参数权重值是由反向传播学习算法进行调整的。BP 神经网络模型拓扑结构包括输入层、隐层和输出层,利用激活函数来实现从输入到输出的任意非线性映射,从而模拟各层神经元之间的交互。其中,激活函数须满足处处可导的条件。例如,Sigmoid函数连续可微,求导合适,单调递增,输出值是0~1之间的连续量,这些特点使其适合作为神经网络的激活函数

在这里插入图片描述
图中箭头所指的方向为前向传播的过程,即所有输入参数经过加权求和之后,将结果值依次向下一层传递,直到最后输出层,层数越多、层中神经元越多,形成的权重值参数就越多。

这个模型的参数怎么求呢?在训练过程中,对于第一层神经元,他们的真实输入是已知的,但是真实输出是未知的;对于第2层神经元,他们的真实输出是已知的,但是真实输入是未知的。简单来说,就是每一个神经元的训练,似乎无法使用常见的有监督训练。
有认为,在训练开始之前,神经网络的参数存在较大的误差,第一层神经元由于参数的误差,输出的信号里会带有误差;第二层神经元,由于参数的误差,输出信号里带有误差,再考虑到第一层神经元输出的误差,第二层神经元实际输出的误差会更大。也就是说,神经网络最后输出的信号,包含了所有神经元输出的误差,体现了所有参数的错误程度;误差会在网络中传递。
在这里插入图片描述
其中,在这里插入图片描述
在编程的时候,可以采用后向算法来实现,就是我们在计算完某个节点的误差后,保存起来,然后在计算这个节点所在层的前一层的梯度的时候使用——这会节省大量的耗时

BP神经网络训练过程的基本步骤

  • 初始化网络权值和神经元的阈值,一般通过随机的方式进行初始化
  • 前向传播:计算隐层神经元和输出层神经元的输出
  • 后向传播:根据目标函数公式修正权值
    上述过程反复迭代,通过损失函数和成本函数对前向传播结果进行判定,并通过后向传播过程对权重参数进行修正,起到监督学习的作用,一直到满足终止条件为止

BP 神经网络的核心思想是由后层误差推导前层误差,一层一层的反传,最终获得各层的误差估计,从而得到参数的权重值。由于权值参数的运算量过大,一般采用梯度下降法来实现
所谓梯度下降就是让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时停止。此时,所有的参数恰好达到使损失函数取得最低值的状态,为了避免局部最优,可以采用随机化梯度下降。
或许读完这段话,你还是模模糊糊的,那么可以看看这个直观的解释:

比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
可见,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

关于反向传播神经网络,这里举个例子:
假设所需要的数据如图所示:
在这里插入图片描述
在这里插入图片描述
其中,(在矩阵上的微分链式求导法则)在这里插入图片描述
将数值代入到这些偏导数中,我们就能够计算出 W 2 W_2 W2 的偏导数,如下所示:
在这里插入图片描述
计算用于更新第一个隐藏层 W 1 W_1 W1 权重的链式规则就展现了重复使用已有计算结果的可能。
在这里插入图片描述
结果是一个 2x3 的矩阵 d L o s s d W 2 \frac{dLoss}{dW_2} dW2dLoss,它将会沿着最小化损失函数的方向更新 W 2 W_2 W2 的数值。
计算用于更新第一个隐藏层 W 1 W_1 W1 权重的链式规则就展现了重复使用已有计算结果的可能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获得 W 1 ∗ W_1* W1 W 2 ∗ W_2* W2后,我们需要给权重重新赋值,完成了对神经网络的一步训练。 W 1 = W 1 ∗ W_1=W_1* W1=W1 W 2 = W 2 ∗ W_2=W_2* W2=W2
后向步骤到此结束,你懂了吗?

总结:

  • BP(Back-propagation,反向传播)神经网络是最传统的神经网络。请注意他不是时下流行的那一套深度学习。要训练深度学习的网络是不可以使用这种算法的
  • 同一层的神经元之间没有通信,相邻的两批神经元之间是全连接的(当然不是真正的全连接,训练之后,一些神经元之间的连接权重会非常低,表示这些神经元通信强度很低)
  • 运算过程用的是矩阵乘法,调参用的是微积分里的链式求导法则。更进一步说是,在矩阵上的微分链式求导法则。
反馈神经网络

与前馈神经网络相比,反馈神经网络内部神经元之间有反馈,可以用一个无向完全图表示,反馈神经网络的训练过程,主要用于实现记忆的功能,即使用能量的极小点 (吸引子)作为记忆值,一般可应用以下操作来实现训练

  • 存储:基本的记忆状态,通过权值矩阵存储
  • 验证:选代验证,直到达到稳定状态
  • 回忆:没有(失去)记忆的点,都会收敛到稳定的状态

反馈神经网络包括了Hopfield 网络、BAM网络,Elman网络等。

Hopfield 网络

Hopfield 网络被认为是一种最典型的全反馈神经网络,它可以看作是一种非线性的动力学系统。它类似于人类大脑的记忆,即通过关联的方式,将某一件事物与周围场最中的其他事物建立关联,当人们忘记了一部分信息后,可以通过场最信息回忆起来,将缺失的信息找回。
通过在反馈神经网络中引入能量函数的概念,使其运行稳定性的判断有了可靠依据,由权重值派生出能量函数是从能量高的位置向能量低的位置转化,稳定点的势能比较低。基于动力学系统理论处理状态的变换,系统的稳定态可用于描述记忆,它具有强大的记忆能力。

  • Hopfield网络分为离散型和连续型两种网络
    • 离散 Hopfield 网络主要用于联想记忆。输入—输出模式的各元素之间,并不存在一对一的映射关系,输入—输出模式的维数也不要求相同:联想记忆时,只给出输入模式部分信息,就能联想出完整的输出模式。即具有容错性
    • 连续Hopfield 网络主要用于优化计算功能。优化计算在实际问题中有广泛的应用。如经典的 TSP 问题,工业生产和交通运输中的调度问题等。
  • 在Hopfield网络中,学习算法是基于Hebb学习规则,权值调整规则为若相邻两个神经元同时处于兴奋状态,那么他们之间的连接应增强,权值增大;反之,则权值减少
  • Hopfield网络的缺点:
    • 假记忆问题:只能记住有限个状态,并且当状态之间相似性较大时,或者状态的特征较少或不明显时,容易收敛到别的记忆上。
    • 存储容量限制:主要依赖极小点的数量。当两个样本距离较近时,就容易产生混淆。假设有n个神经元,那么最多可存0.15n个极小点;能够完美回忆到大部分结果只有 n 2 l n n \frac{n}{2ln ^n} 2lnnn;完美回忆
      所有结果只有 n 4 l n n \frac{n}{4ln ^n} 4lnnn。在上例中,神经元数量是25,则最多只能存储25*0.15=3.75个数字,大约可回忆的数字为3.88个,能完美回忆的数字为1.9个
    • 存在局部最优问题
双向联想记忆神经网络(BAM)
  • 双向联想记忆神经网络(BAM)具有非监督学习能力,网络的设计比较简单,可大规模并行处理大量数据,具有较好的实时性和容错性。此外,这种联想记忆法无需对输入向量进行预处理,省去了编码与解码的工作
  • BAM是一种无条件稳定的网络,与Hopfield相比是一种特别的网络,具有输入输出节点,但是与Hopfield网络的不足一样, 即存在假记忆、存储容量限
    制、局部最优等问题
Elman神经网络

Elman神经网络是一种循环神经网络,网络中存在环形结构,部分神经元的输出反馈作为输入,而这样的反馈将会出现在该网络的下一个时刻,也即这些神经元在这一时刻的输出结果,反馈回来在下一时刻重新作为输入作用于这些神经元,因此循环神经网络可以有效地应对涉及时序性的问题
在这里插入图片描述

自组织神经网络

自组织神经网络又称Kohonen网,这一神经网络的特点是当接收到外界信号刺激时,不同区域对信号自动产生不同的响应。这种神经网络是在生物神经元上首先发现的,如果神经元是同步活跃的则信号加强,如果异步活跃则信号减弱
MiniSom库是一种基于Python语言的Numpy实现的自组织映射(SOM)网络。
下面是用SOM来实现图片量化, 合并不太重要的颜色,减少颜色数量

参考文献:
BP神经网络:最快速的理解(一)退乎 知乎
BP神经网络的结构、使用方式和训练 李鹏宇 知乎
神经网络基础 赵卫东 中国大学mooc
梯度下降(Gradient Descent)小结
校招必备 | 从零开始解释神经网络的数学过程 计算机视觉life 微信公众号
Hopfield 网络(上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值