【Python与机器学习 7-2】人工神经网络ANN——Backpropagation算法

对于多层神经网络,理论上,如果有足够多的隐藏层和足够多的训练样本,可以拟合出任意方程。
所以现在神经网络才那么火啦~

下面我们来看如何设计神经网络的结构

设计神经网络结构

  • 输入层
    特征向量在被传入输入层之前要进行标准化(normalize)到0-1间,为了加速训练过程
  • 隐藏层
    包括确定网络层数,每层的节点个数。没有明确的规则来确定隐藏层的个数和节点的个数,一般是通过交叉验证的方法确定
  • 输出层
    神经网络既可以用来解决分类问题,也可以解决回归问题。如果是分类问题,则输出层的单元数是类别的个数

接下来我们看一个ANN中很火的算法——Backpropagation算法,看ANN具体是怎么实现的

Backpropagation算法

算法思想

•通过迭代处理训练集中的样本
•对比经过神经网络后输出层的预测值和真实值
•从输出层经过隐藏层反向传播到输入层,以最小化误差更新连接权重

算法过程

1.初始化权重(weights)和偏置(bias): 随机初始化在-1到1的值,每个节点有 一个偏向

2.每个训练样本执行以下步骤:
2.1 由输入层前向传播,根据初始化的参数及激活函数,计算出节点的输出, 直到输出层
2.2 反向传播计算误差,更新权重和偏置

3.终止条件
•1) 权重的更新低于某个阈值,
•2) 预测的错误率低于某个阈值
•3) 达到预设的循环次数

通过例子介绍人工神经网络训练过程

1.初始化权重(w)和偏置(b),提供输入(i)输出(o)

通过下图我们看到已经红色的数字为我们随机初始化的权重w,黄色的数字为随机初始化的权重b。左边的蓝色数字为输入i,右边的蓝色数字为输出o。
这里写图片描述

2.每个训练样本执行以下步骤:

2.1 前向计算

由输入层前向传播,根据初始化的参数及激活函数,计算出节点的输出, 直到输出层

2.1.1 隐含层
我的上一篇文章已经介绍了隐含层每个结点的输入(结点的左半球)为上一层结点的权重和,输出(结点的右半球)为通过激活函数将线性函数转成非线性的结果。
这里我们可以通过公式直观的看一下
①结点的输入(结点左半球)——权重和
这里写图片描述
②结点的输出(结点右半球)——激活函数
这里写图片描述<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值