Python实现BP网络并进行语音识别(二)


title: Python实现BP网络并进行语音识别(二)
date: 2019-06-09 20:45:40
tags: [python, BP, 语音识别]

前言

BP算法作为神经网络的经典算法,理解其原理非常重要,我将从原理开始讲起,然后过渡到代码实现。

一:BP算法

1.1 反向传播算法和 BP 网络简介

误差反向传播算法简称反向传播算法(即 BP 算法)。反向传播算法于1986 年由 David E. Rumelhart和 James L. McClelland 发表于书籍 Parallel Distributed Processing 中。使用反向传播算法的多层感知器又称为 BP 神经网络。
BP 算法是一个迭代算法,它的基本思想为:
(1) 先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);
(2) 计算每一层的误差,误差的计算过程是从最后一层向前推进的(这就是反向传播算法名字的由来);
(3) 更新参数(目标是误差变小),迭代前面两个步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。

下面以三层感知器(即只含有一个隐藏层的多层感知器)为例介绍“反向传播算法(BP 算法)”。
enter image description here
三层感知器如图 1 所示。例子中,输入数据 X = ( x 1 , x 2 , x 3 ) T X=\left(x_1,x_2,x_3\right)^T X=(x1,x2,x3)T是 3 维的。对于第一层,可以认为 ( a i 1 = x i ) (a_i^1=x_i) (ai1=xi)唯一的隐藏层有 3 个节点,输出数据是 2 维的。

1.2 信息前向传播

显然,图 1 所示神经网络的第 2 层神经元的状态及激活值可以通过下面的计算得到:
z 1 2 = W 11 2 x 1 + W 12 2 x 2 + W 13 2 x 3 + b 1 2 z_1^2=W_{11}^2x_1+W_{12}^2x_2+W_{13}^2x_3+b_1^2 z12=W112x1+W122x2+W132x3+b12
z 2 2 = W 21 2 x 1 + W 22 2 x 2 + W 23 2 x 3 + b 2 2 z_2^2=W_{21}^2x_1+W_{22}^2x_2+W_{23}^2x_3+b_2^2 z22=W212x1+W222x2+W232x3+b22
z 3 2 = W 31 2 x 1 + W 32 2 x 2 + W 33 2 x 3 + b 3 2 z_3^2=W_{31}^2x_1+W_{32}^2x_2+W_{33}^2x_3+b_3^2 z32=W312x1+W322x2+W332x3+b32
a 1 2 = f ( z 1 2 ) a_1^2=f\left(z_1^2\right) a12=f(z12)
a 2 2 = f ( z 2 2 ) a_2^2=f\left(z_2^2\right) a22=f(z22)
a 1 2 = f ( z 1 2 ) a_1^2=f\left(z_1^2\right) a12=f(z12)

类似地,第 3 层神经元的状态及激活值可以通过下面的计算得到:
z 1 3 = W 11 3 x 1 + W 12 3 x 2 + W 13 3 x 3 + b 1 3 z_1^3=W_{11}^3x_1+W_{12}^3x_2+W_{13}^3x_3+b_1^3 z13=W113x1+W123x2+W133x3+b13
z 2 3 = W 21 3 x 1 + W 22 3 x 2 + W 23 3 x 3 + b 2 3 z_2^3=W_{21}^3x_1+W_{22}^3x_2+W_{23}^3x_3+b_2^3 z23=W213x1+W223x2+W233x3+

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值