淘先锋技术网

首页 1 2 3 4 5 6 7

神经网络

欢迎访问本人blog网站:www.xuanworld.top

​ 神经网络就是构建一种数学模型,模仿人脑神经系统,这就称为人工神经网络,简称神经网络。在机器学习领域,神经网络是指由很多人工神经元构成的网络结构模型,这些人工神经元之间的连接强度是可学习的参数。

​ 神经网络的初衷是为了能够模拟人类的大脑,在1980s和1990s之间应用的十分广泛。后来神经网络技术逐渐被冷落,主要原因就是神经网络所需的计算量较大。最近芯片技术的突飞猛进,导致神经网络技术又重新被人们所重视。

神奇的题外话

​ 以前我们认为人的大脑由不同的组织组成,比如负责听觉的大脑部分只能处理听觉信息,负责视觉的大脑部分只能处理视觉信息,但是后来的实验却证明事实可能并非如此,如图所示,我们将大脑负责听觉的部分进行处理,使其无法接受到来自听觉的信号。同时,我们将传递视觉信号的神经给接到这个地方。结果我们发现,处理听觉的大脑部分学会了处理视觉!!!,这些实验被称为神经重接实验。所以我们可以假设所有的大脑部分其实都是由同一种组织构成,存在某种机制能够使相同的组织进行学习从而完成不同的任务。

​ 这就是神经算法的一种简单原理,或者说最终目的,顶尖的科学家希望通过模拟大脑的运行方法实现真正的人工智能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aoeqyqdO-1661676734774)(/img/blogImg/CNN3_1.png)]

1 神经元

神经元是神经网络进行信息处理的基本单元,其主要是模拟生物神经元的结构和 特性,接收输入信号并产生输出。

在这里插入图片描述

生物上神经元的原理

生物神经元通常具有一个轴突和多个树突,树突可以用来接受信息。当输入的神经信号超过一定的阙值之后,他就会处于兴奋状态,产生电脉冲,轴突尾部的许多末梢可以与其他神经元的树突连接,将脉冲信号传给其他的神经元。

1.1 MP神经元

MP神经元是心理学家McCulloch和数学家Pitts根据生物神经元结构提出的一种非常简单的神经元模型。

一个基本的神经元包括三个基本的组成部分:输入信号、线性组合和非线性激活函数。

在这里插入图片描述

(a1,a2,a3是输入信号,w1,w2,w3是输入信号的权值。)

2 多层感知器

2.1 单隐层感知器

首先我们来看一下它的结构图形

在这里插入图片描述

由于小废物Rytter不喜欢书本上那总难以理解的公式化炫技解释,所以我将以人话进行解释:这种结构的输入会首先经过输入层映射到隐藏层,然后再通过隐藏层映射到输出层,其实就是对输入的信息进行变换。这两种映射叫做激活函数。

2.2 感知器的信息传递

在这里插入图片描述

信息通过多次传递,传递到最后一层

向前传播:指的就是信号从输入到输出的一层层传播。这种传播可以很好的用向量进行表示。

3 激活函数

激活函数是神经网络中十分重要的概念,他的非线性使神经网络更加复杂,能够去表示更多的东西。

激活函数有多种多样,一个基本要求是他们要连续可导,常用的有S型激活函数和ReLU变种。

3.1 S型激活函数

S型激活函数中比较典型的是Sigmoid和Tanh,这种激活函数的特点是有界,并且输入的绝对值越大,对应的梯度就越小,越趋近于0.

Sigma函数的定义是: σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1,值域在0到1之间

将任意输入全部压缩到0到1之间,在神经网络中经常作为二分类器最后一层激活函数,可将任意实数值转化为概率。而且还可以作为类似开关的调节器,对其他信息进行调节。

在这里插入图片描述

另一种函数是Tanh函数,定义式为: t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanh(x)=ex+exexex

相较于sigma函数,tanh函数的范围更大一些,为(-1,1),也可以作为开关调节信息。
在这里插入图片描述

3.2 ReLU及其变种

3.2.1 ReLU

ReLU是目前深度学习中经常使用的激活函数。

ReLU函数的表达式为:

R e L U ( x ) = { x ,   i f   x ≥ 0 0 ,   i f   x < 0 ReLU(x)=\begin{cases}{x, \ if \ x\ge 0}\\ {0, \ if \ x<0}\end{cases} ReLU(x)={x, if x00, if x<0

可以看出,ReLU对正负值的处理方式完全不同,当输入为负时全部置零,而输入为正时保持不变,这种特性叫做单侧抑制。单侧抑制会导致某个神经元死亡,原因是如果某个神经元输出一直为负,则进行传播的时候就会一直输出为0,导致无法进行有效的更新。

为避免以上情况,所以ReLU函数还会有许多变种。

3.2.2 LeakyReLU

LeakyReLU表达式为

L e a k y R e L U ( x ) = { x ,   i f   x > 0 λ x , i f   x ≤ 0 LeakyReLU(x)=\begin{cases}{x, \ if \ x>0}\\{\lambda x,if \ x \le 0} \end{cases} LeakyReLU(x)={x, if x>0λx,if x0

λ \lambda λ取值一般取0.2

3.2.3 PReLU

它将LeakyReLU中的 λ \lambda λ改进为可以训练的参数,并且每个神经元可以使用不同的参数。

P R e L U ( x ) = { x ,   i f   x > 0 a x , i f   x ≤ 0 PReLU(x)=\begin{cases}{x, \ if \ x>0}\\{ax,if \ x \le 0} \end{cases} PReLU(x)={x, if x>0ax,if x0

3.2.4 ELU

输入为负时,进行非线性压缩变换。

E L U ( x ) = { x ,   i f   x ≥ 0 α ( e x − 1 ) , i f   x < 0 ELU(x)=\begin{cases}{x, \ if \ x \ge 0}\\{\alpha(e^x-1),if \ x < 0} \end{cases} ELU(x)={x, if x0α(ex1),if x<0

在这里插入图片描述