bp神经网络推导及python实例

bp神经网络

BP(back propagation,反向传播)神经网络(neural network),通常指具有三层网络结构的浅层神经网络。神经网络由一个个神经元(Neuron)组成,神经元由输入、计算、输出单元组成。

image

对应上图输入为 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn和截距 + 1 +1 +1,输出为:
y ^ = h w , b ( X ) = f ( w T X ) = f ( ∑ i = 1 n w i x i + b ) \hat y=h_{w,b}(X)=f(w^T X)=f(\sum_{i=1}^n w_i x_i+b) y^=hw,b(X)=f(wTX)=f(i=1nwixi+b)
其中w表示权重值,函数f为激活函数,有如下激活函数:
s i g m o i d : f ( x ) = 1 1 + e x p − x sigmoid: f(x)=\frac{1}{1+exp^{-x} } sigmoid:f(x)=1+expx1
t a n h : f ( x ) = e x − e − x e x + e − x tanh: f(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh:f(x)=ex+exexex
R e L u : f ( x ) = m a x ( 0 , x ) ReLu: f(x)=max(0,x) ReLu:f(x)=max(0,x)
S o f t P l u s : f ( x ) = l o g e ( 1 + e x ) SoftPlus: f(x)=log_e(1+e^x) SoftPlus:f(x)=loge(1+ex)
对应图像为:

image

一个三层的神经网络结构图:

image

相关参数说明

  • 网络层数 n l n_l nl,三层网络 n l = 3 n_l=3 nl=3,第 l l l层记为 L l L_l Ll
  • L 1 , L 2 , L 3 L_1,L_2,L_3 L1,L2,L3分别为输入层,隐藏层,输出层
  • 权重 w = ( w 1 , w 2 ) w=(w^1,w^2) w=(w1,w2),其中 w i j l w_{ij}^l wijl表示 l l l层的第 j j j个神经元与 l + 1 l+1 l+1层的第 i i i个神经元的参数,如 w 21 1 w_{21}^1 w211表示1层第1个神经元与2层第2个神经元的连接参数
  • 偏置 b i l b_i^l bil表示第 l + 1 l+1 l+1层的第i个神经元的偏置项,如 b 2 1 b_2^1 b21表示2层第2个神经元的偏置项
  • z i l z_i^l zil表示 l l l层第 i i i个神经元的输入
  • a i l a_i^l ail表示 l l l层第 i i i个神经元的输出
  • S l S_l Sl表示 l l l层的神经元个数,如 S 3 S_3 S3表示3层有2个神经元

参数计算关系如下:
a 2 2 = f ( z 2 2 ) = f ( w 21 1 x 1 + w 22 1 x 2 + w 23 1 x 3 + b 2 1 ) a_2^2=f(z_2^2)=f(w_{21}^1 x_1+w_{22}^1 x_2 +w_{23}^1 x_3+b_2^1) a22=f(z22)=f(w211x1+w221x2+w231x3+b21)
即每个神经元的输入为上一层所有神经元输出的加权求和,神经元输入值经过激活函数处理后得到神经元输出。

损失函数

对于每个训练样本 ( X , y ) (X,y) (X,y),损失函数为:
J ( W , b ; X , y ) = 1 2 ∣ ∣ h w , b ( X ) − y ∣ ∣ 2 J(W,b;X,y)=\frac{1}{2}||h_{w,b}(X)-y||^2 J(W,b;X,y)=21hw,b(X)y2
表示最后一层输出层的输出值与实际值的欧式距离,结果是一个向量,向量维度等于输出层神经元数量。

为得到损失函数最小值,首先对参数进行初始化,初始化为一个接近0的随机值。再利用前向传播得到预测值,从而计算损失值。此时需要利用损失函数调整参数,可使用梯度下降法,梯度下降公式为:
W i j l = W i j l − α ∂ J ( W , b ) ∂ W i j l W_{ij}^l=W_{ij}^l-\alpha\frac{\partial J(W,b)}{\partial W_{ij}^l} Wijl=WijlαWijlJ(W,b)
b i l = b i l − α ∂ J ( W , b ) ∂ b i l b_i^l=b_i^l-\alpha\frac{\partial J(W,b)}{\partial b_i^l} bil=bilαbilJ(W,b)
其中偏导部分:
∂ J ( W , b ) ∂ W i j l = [ 1 m ∑ k = 1 m ∂ J ( W , b ; x k , y k ) ∂ W i j l ] \frac{\partial J(W,b)}{\partial W_{ij}^l}=[\frac{1}{m}\sum_{k=1}^m \frac{\partial J(W,b;x^k,y^k)}{\partial W_{ij}^l} ] WijlJ(W,b)

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值