连载|神经网络(上)

神经网络(上)

文末送书福利进行中~

人工神经元结构

受生物神经元的启发,1943年心理学家McCulloch和数学家Pitts提出了人工神经元模型(Artificial Neuron,简称AN),人们也常用它们两个名字的首字母来命名这个人工神经元模型,称之为M-P模型,这种模型也一直沿用至今。M-P模型的结构如下:

在这里插入图片描述

在M-P模型中神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值比较,然后通过“激活函数(activation function)”处理以产生神经元的输出。

最终我们把许多个神经元按一定的层次连接起来,就得到了神经网络,简单的神经网络模型如下:

在这里插入图片描述

激活函数

如果你不了解甚至没接触过神经网络,那么激活函数这个词语就会显得很陌生了,激活函数的作用是为了在神经网络中引入非线性的学习和处理能力。简单的说激活函数就是用来展示输入输出之间的映射关系用的,当数值经过激活函数处理后,会被压缩到一个范围区间内,数值的大小将会决定神经元到底是处于活跃状态还是抑制状态,最后将输出结果传递给下一个神经元。典型的神经元激活函数如下图所示:

[
通常理想中的激活函数是由上图中(a)所示的阶跃函数,他将输入值映射为输出值“0”或“1”,显然“1”对应于神经元活跃,“0”对应着抑制,但是阶跃函数具有不连续、不光滑等不太好的性质,因此在实际中我们经常用上图中(b)所示的sigmoid函数来作为激活函数,sigmoid函数把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时也称为“挤压函数”。

后面再让我们用单独的一篇文章来详细了解常用的激活函数。

感知机(单层神经网络)

感知机仅由两层神经元组成,如下图所示,输入层用于接受外界输入信号后传递给输出层,输出是M-P神经元,亦称阈值逻辑单元。

在这里插入图片描述

感知机能够轻易的实现逻辑“与”,“或”,“非”的运算,对于输出 y = f ( ∑ i w i x i − θ ) y=f(\sum_iw_ix_i-\theta) y=f(iwixiθ),假定f是我们上面提到过的阶跃函数,则有:

  • “与” ( x 1 & x 2 ) (x_1\&x_2) (x1&x2):令 w 1 = w 2 = 1 , θ = 2 w_1=w_2=1,\theta=2 w1=w2=1θ=2,则 y = f ( 1 ⋅ x 1 + 1 ⋅ x 2 − 2 ) y=f(1\cdot x_1+1\cdot x_2-2) y=f(1x1+1x22),仅在 x 1 = x 2 = 1 x_1=x_2=1 x1=x2=1 y = 1 y=1 y=1
  • “或” ( x 1 | x 2 ) (x_1|x_2) (x1x2):令 w 1 = w 2 = 1 , θ = 0.5 w_1=w_2=1,\theta=0.5 w1=w2=1θ=0.5,则 y = f ( 1 ⋅ x 1 + 1 ⋅ x 2 − 0.5 ) y=f(1\cdot x_1+1\cdot x_2-0.5) y=f(1x1+1x20.5),仅在 x 1 = 1 x_1=1 x1=1 x 2 = 1 x_2=1 x2=1 y = 1 y=1 y=1
  • “非” ( ! x 1 ) (!x_1) (x1):令 w 1 = − 0.6 , w 2 = 0 , θ = − 0.5 w_1=-0.6,w2=0,\theta=-0.5 w1=0.6w2=0θ=0.5,则 y = f ( − 0.6 ⋅ x 1 + 0 ⋅ x 2 + 0.5 ) y=f(-0.6\cdot x_1+0\cdot x_2+0.5) y=f(0.6x1+0x2+0.5),当 x 1 = 1 x_1=1 x1=1 y = 0 y=0 y=0,当 x 1 = 0 x_1=0 x1=0时, y = 1 y=1 y=1

通常情况下,给定训练数据集,权重 w i ( i = 1 , 2 , . . . , n ) w_i(i=1,2,...,n) wi(i=1,2,...,n)以及阈值 θ \theta θ可以通过学习得到,阈值可以看作是一个固定输入为-1的“结点”所对应的连接权重为 w n + 1 w_{n+1} wn+1,这样权重和阈值的学习就能够统一为权重的学习了。感知机的学习规则非常简单,对训练样例 ( x , y ) (x,y) (x,y),若当前感知机输出为 y ^ \hat{y} y^,则感知机的权重就会做如下的调整:

w i ← w i + Δ w i w_i\leftarrow w_i+\Delta w_i wiwi+Δwi

Δ w i = η ( y − y ^ ) x i \Delta w_i=\eta(y-\hat{y})x_i Δwi=η(yy^)xi

和梯度下降一样,这里的 η \eta η我们也称之为学习率,从上式中可以看出,若感知机对训练样例 ( x , y ) (x,y) (x,y)预测正确,则 y ^ = y \hat{y}=y y^=y,则感知机不发生变化,否则将根据错误的程度进行权重的调整。

多层神经网络

对于简单的感知机,我们可以看出只有输出层的神经元进行了激活函数的处理,这也使得它的学习能力很有限,上述我们提到的”与或非“的问题都属于线性可分的问题,如果遇到了非线性可分的问题(比如异或问题),这种简单感知机的表现就不尽人意了,具体的情况如下所示:

在这里插入图片描述

如果有一定经验的同学在这里可能会想到把感知机优化为SVM去解决此类问题,利用神经网络的结构,我们想要解决非线性可分问题,需要考虑使用多层功能神经元,这里引入一个存在于输入层和输出层之间的一层神经元,被叫做隐藏层(hidden layer),隐藏层和输出层的神经元都是拥有激活函数的功能神经元。加入隐藏层后的神经网络结构如下所示:

在这里插入图片描述

对于上图这样的结构,每层神经元与下层神经元全部相连,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feedforward neural networks),其中输入层神经元接收外界的输入,隐藏层和输出层对神经元信号进行加工,最终结果由输出层神经元输出。

注:我们在定义神经网络的层数的时候,通常只计算含有激活函数的功能神经层的个数,例如对于上图的神经网络层数可以定义为3层(hidden1、hidden2、output)。

我们了解了多层神经网络,对于上文所述的“异或”问题就有了如下的解决方案:

在这里插入图片描述

本文我们简单的了解了一下神经网络,下文再让我们来了解一下神经网络的学习算法“BP网络”。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哥不像程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值