机器学习中的神经网络

神经元模型

神经网络是机器学习的一种模型,它试图模仿人脑的工作方式,通过学习数据的模式和结构来进行预测和决策。其最基本的成分是神经元模型,在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时, 就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神 经元的电位超过了一个“阈值”(threshold), 那么它就会被激活,即“兴奋” 起来,向其他神经元发送化学物质。根据这个特性,我们得到了神经元一致沿用至今的MP模型:
在这里插入图片描述
这里的 [ x 1 , x 2 , . . . , x n ] [x1,x2,...,x_n] [x1,x2,...,xn]表示的是一个输入样本的n个属性,然后 [ w 1 , w 2 , . . . , w n ] [w1,w2,...,w_n] [w1,w2,...,wn]则表示他们对应权重,最后全部汇总到第i个神经元,随后得到一个值,然后每个神经元都会有一个阈值θ,当这个值超过θ和没超过θ都表示着不同的情况。

激活函数

上述神经元提到最后的输出 y = f ( ∑ i = 1 n w i x i − θ ) y=f\left(\sum_{i=1}^n w_ix_i-θ\right) y=f(i=1nwixiθ)表示激活函数,我们常用的激活函数有两种,分别是阶跃函数和Sigmoid函数

感知机和多层神经网络

感知机

感知机是由两层神经元组成的,其模型结构如下图:
在这里插入图片描述
输入层输入参数给输出层的神经元,输出层的神经元得到输入层的数值后,经过激活函数,得到了输出值 y y y,输出值为可参考上面的激活函数
y = f ( ∑ i = 1 n w i x i − θ ) y=f\left(\sum_{i=1}^n w_ix_i-θ\right) y=f(i=1nwixiθ)

阈值

阈值θ可通过学习得到.一开始阈值θ可看作一个固定输入为-1.0的“哑结点” 所对应的连接权重 w n + 1 w_{n+1} wn+1, 这样,权重和阈值的学习就可统一为权重的学习.感知机学习规则非常简单,对训练样例(x,y),若当前感知机的输出为0,则感知机权重将这样调整:
在这里插入图片描述

多层神经网络

对于感知机来说,如果一类样本是线性可分的,也就是说能用一条直线拟合出他们之间的关系,那么通过感知机的学习,就可以保证他们能够收敛,但如果不能完全划分,如下图:

这里的异或问题中,我们无法用一条直线来拟合表示他们之间的关系,所以这时候如果用感知机,效果可能不尽人意。因此我们就提出了多层神经网络。

以异或为例,我们在输入层和输出层多加入了一层神经元,这一层我们称为隐含层,如图:
在这里插入图片描述
这里的加入了隐含层后,就相当于一个由3个感知机组合而成的多层神经网络,通过3个感知机,我们可以模拟出and函数,or函数和Not and 函数,通过这三个函数的组合就可以实现异或了

上面这种模型我们还称为单层前馈网络,如果隐含层不止一层,如下图:在这里插入图片描述
如果有两层,则称双层前馈网络,三层则称三隐层前馈网络,以此类推

误差逆传播算法

由于多层网络无论在结构上还是在数量上,都比单层感知机要复杂很多,因此我们不能在依据单层感知机那一套规则进行传播,我们需要一种更能适应这种结构的算法,因此BP算法就诞生了。BP算法也叫误差逆传播算法,它被称为至今为止最成功神经网络算法。

下面我将介绍一下BP算法:
为了方便介绍,我们先给出一系列变量。给定训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . . ( x i , y i ) } D=\{(x_1,y_1),(x_2,y_2),......(x_i,y_i)\} D={(x1,y1),(x2,y2),......(xi,yi)},其中 x x x表示的是一个样本中的每一个属性对应的值,以西瓜为例, x 1 x_1 x1可能表示的是西瓜的色泽, x 2 x_2 x2可能表示的就是西瓜的甜度属性,西瓜有多少个属性,输入层就有多少个神经元。根据上面的定义,我们也可以类比输出层, y y y有多少个值,输出层就有多少个神经元。然后我们定义 θ j θ_j θj γ h γ_h γh表示输出层和隐层的阈值, w h j w_{hj} whj v i h v_{ih} vih为隐层 − > -> >输出层的权重和输入层 − > -> >隐层的权重, α h α_h αh β j β_j βj分别为隐层的第h个神经元的值和输出层第j个神经元的值
因此,我们可以得出一个BP网络:
在这里插入图片描述
书上给了一大堆公式,以及过程,这里介绍它的误差公式,和迭代公式:

计算误差的公式为:
E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) E_k = \frac{1}{2}\sum_{j=1}^l(\hat y_j^k-y_j^k) Ek=21j=1l(y^jkyjk)
通过这个误差公式,我们不难发现他和我们的求线性回归时的误差分析是一样的

接着是迭代公式,对于迭代公式来说,我们先明确我们要迭代的对象,根据上图的BP神经网络结构图可以得知,我们需要迭代的对象有四个,分别为: w h j w_{hj} whj, v i h v_{ih} vih, θ j θ_j θj, γ h γ_h γh

它们对应的迭代公式为:

w h j = w h j − η g j b h w_{hj} = w_{hj} - ηg_jb_h whj=whjηgjbh

v i h = v i h − η e h x i v_{ih} = v_{ih} - η e_h x_i vih=vihηehxi

θ j = θ j − η g j θ_j = θ_j - ηg_j θj=θjηgj

γ h = γ h − η e h γ_h = γ_h - η e_h γh=γhηeh

符号定义如下:

w h j w_{hj} whj:表示从第 h h h个隐藏层神经元到第 j j j个输出层神经元的权重。

v i h v_{ih} vih:表示从第 i i i个输入层神经元到第 h h h个隐藏层神经元的权重。

θ j θ_j θj:表示第 j j j个输出层神经元的阈值。

γ h γ_h γh:表示第 h h h个隐藏层神经元的阈值。

η η η:是学习率,决定了每次权重更新的步长。

g j g_j gj:表示第 j j j个输出层神经元的梯度,通常是基于损失函数对输出层的输出的偏导数。

e h e_h eh:表示第 h h h个隐藏层神经元的误差,通常是基于损失函数对隐藏层的输出的偏导数。

b h b_h bh:表示第 h h h个隐藏层神经元的输出。

x i x_i xi:表示第 i i i个输入层神经元的输入。

误差传播算法的整体流程:

在这里插入图片描述
BP算法的目标其实是使得训练集上的累积误差最低
即得到:
min ⁡ E = 1 m ∑ k = 1 m E k \min E=\frac{1}{m}\sum_{k=1}^mE_k minE=m1k=1mEk

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值