连载|神经网络(上)

简介: 连载|神经网络(上)

人工神经元结构

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

95.png

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

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

15.jpeg

激活函数

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

96.png

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


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


感知机(单层神经网络)

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

97.png

image.png

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

image.png

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

多层神经网络

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

16.jpeg

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

17.jpeg

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


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


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

99.jpg

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

相关文章
|
机器学习/深度学习 网络架构
神经网络4
与单层神经网络不同。理论证明,两层神经网络可以无限逼近任意连续函数。 这是什么意思呢?也就是说,面对复杂的非线性分类任务,两层(带一个隐藏层)神经网络可以分类的很好。 下面就是一个例子(此两图来自colah的博客),红色的线与蓝色的线代表数据。而红色区域和蓝色区域代表由神经网络划开的区域,两者的分界线就是决策分界。 可以看到,这个两层神经网络的决策分界是非常平滑的曲线,而且分类的很好。有趣的是,前面已经学到过,单层网络只能做线性分类任务。而两层神经网络中的后一层也是线性分类层,应该只能做线性分类任务。为什么两个线性分类任务结合就可以做非线性分类任务? 我们可以把输出层的决策分界单独拿出来看一下
70 0
|
5月前
|
机器学习/深度学习 存储 算法
简单的神经网络
softmax激活函数将多个未归一化的值转换为概率分布,常用于多分类问题。交叉熵损失函数,特别是与softmax结合时,是评估分类模型性能的关键,尤其适用于多分类任务。它衡量模型预测概率与实际标签之间的差异。在PyTorch中,`nn.CrossEntropyLoss`函数结合了LogSoftmax和负对数似然损失,用于计算损失并进行反向传播。通过`loss.backward()`,模型参数的梯度被计算出来,然后用优化器如`SGD`更新这些参数以减小损失。
|
5月前
|
机器学习/深度学习
什么是神经网络?
神经网络是一种深度学习方法,源自人类大脑生物神经网络的概念。它由大量相互连接的人工神经元(也称为节点或单元)组成,每个神经元接收输入,进行简单处理后生成输出,并将结果传递给下一层的神经元。
65 2
|
5月前
|
机器学习/深度学习 算法 数据可视化
感知机和神经网络
**神经网络**是模仿生物神经元结构的数学模型,用于处理复杂关系和模式识别。它由输入层、隐藏层(可能多层)和输出层组成,其中隐藏层负责信息处理。随着层数增加(深度学习),网络能处理更多信息。基本模型包括感知机,仅输入和输出层,用于线性划分;而**BP神经网络**有多个隐藏层,通过反向传播和梯度下降优化参数,避免局部最小值。训练过程中,神经元通过激励函数响应并调整权重,以提高预测准确性。
|
5月前
|
机器学习/深度学习 算法 PyTorch
神经网络反向传播算法
神经网络中的反向传播算法是用于训练的关键步骤,通过计算损失函数梯度更新权重。它始于前向传播,即输入数据通过网络得出预测输出,接着计算预测与实际值的误差。反向传播利用链式法则从输出层开始逐层计算误差,更新每一层的权重和偏置。例如,一个包含隐藏层的网络,初始权重随机设定,通过反向传播计算损失函数梯度,如sigmoid激活函数的网络,调整权重以减小预测误差。在Python的PyTorch框架中,可以使用`nn.Linear`定义层,`optimizer`进行参数优化,通过`backward()`计算梯度,`step()`更新参数。
|
5月前
|
机器学习/深度学习 算法 语音技术
神经网络
【6月更文挑战第14天】神经网络。
43 3
|
机器学习/深度学习 算法 PyTorch
神经网络知识蒸馏
翻译:《Distilling the knowledge in a neural network》
|
机器学习/深度学习 算法 自动驾驶
神经网络5
4.训练 下面简单介绍一下两层神经网络的训练。 在Rosenblat提出的感知器模型中,模型中的参数可以被训练,但是使用的方法较为简单,并没有使用目前机器学习中通用的方法,这导致其扩展性与适用性非常有限。从两层神经网络开始,神经网络的研究人员开始使用机器学习相关的技术进行神经网络的训练。例如用大量的数据(1000-10000左右),使用算法进行优化等等,从而使得模型训练可以获得性能与数据利用上的双重优势。 机器学习模型训练的目的,就是使得参数尽可能的与真实的模型逼近。具体做法是这样的。首先给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为yp,真实目标
81 0
|
机器学习/深度学习 自然语言处理 算法
简单了解神经网络
神经网络是一种强大的机器学习算法,具有很广泛的应用,可以用于图像识别、语音识别、自然语言处理、推荐系统等多个领域。
99 0
|
机器学习/深度学习 算法
连载|神经网络(下)
连载|神经网络(下)