判断大小简单算法_5分钟人工智能学习:大白话讲深度学习算法之BP算法

993e236ff81d259ba75ca98a3ddc5b61.gif

我是杰瑞,每天能带给你们简单实用的教学文章,关注我吧!


本篇文章一共1758字,阅读需要8分钟或以上

今天杰瑞要跟大家聊一聊深度学习中的BP算法,很多刚入门深度学习的同学都曾被这个BP算法给“劝退”了,但同学们请不要过于担心,因为杰瑞今天将帮你们把BP算法这块绊脚石给踢掉!在学习BP算法之前我们先来了解一下BP算法的来历以及它与深度学习的关系。

深度学习

很多同学经常把人工智能、机器学习、深度学习这三者之间的关系搞混,事实上我们平常所说的人工智能可以分为两类:一般的和狭义的,人工智能领域中有一种实现人工智能的方法叫做机器学习,今天我们要说的深度学习就是机器学习的一个子集,它使用神经网络来模拟人类大脑的工作方式,它们三者之间的关系如下图:

f50707530b7c43fd4ae3e4ba83358ba4.png

深度学习和我们人类的学习方式有非常大的相似性,但也有少部分的不同点。我们人类做决策的过程一般是这样的:

根据以往的经验来判断当前的事物,你的经验越多判断的越准确。

若你在这之前没有过处理这件事物的经验,那么你就会向周围的其他人寻求帮助,获取处理这件事物的经验。

若周围的人也没有处理这件事情的经验,那么人类就会不断地尝试新的解决方法,直到找到最优的解决方法为止。

而深度学习的“学习”过程和上面的第1、2点很相似,在训练某个模型的过程中,我们人类总是给定一个输入然后给对应的输出做一个标记,例如:我们输入一张猫的图片,然后打上标签“这是一只猫”,猫的图片与标签之间存在着某种关系,而通不断的训练,我们的模型就能找到猫的图片与标签之间的关系,并且训练次数越多精度越高(但精度增速会逐渐减慢甚至停止)。

8e93aa72e923467d928503d22e0a4a3a.png

BP算法的来历

在深度学习中,我们需要不断地去更新每一层隐层的权值数据,使实际输出和期望输出的差值达到最小,如果将差值记为E、实际输出为o、期望输出为t,那么我们可以得到一个误差函数。

9f5138d5f815cf1d6d59465e961d265e.png

我们学习的目的就是求得E(w1,w2,w3,……,wi)的最小值,很显然E的值只和权值w有关,所以我们的目标就变成了求使得E最小的那组权值。那么我们如何求这组权值呢?这时候BP算法就诞生了,我们可以通过将误差反向传递间接求出权值的改变大小,这时我们就需要用总误差对权值求偏导的方法来不断改变权值,并最终的到最优解的那组权值,总误差E与每一个权值有关,但是每一个权值对误差的影响程度是不一样的,有些权值改变一点就能使E的值产生巨大改变,而有些权值的改变并不会使E值有多大改变。

所以,我们现在就要知道每一个权值对E的“影响力”大小,这样才能对权值进行更新,而这里我们就是使用了一个偏导数的概念,通俗一点讲:函数E对某一个权值求偏导,值越大影响力越大

145c7cbcd6d37f6b3987df59a9b9d6a5.png

权值矩阵

BP算法实现过程(数学推导)

本段会有一些数学公式出现,但大家不要担心,这只是一些简单的链式法则应用罢了。

杰瑞使用一个三层神经网络作为例子,如下图:

f5999381d430553a5e1696c6118edece.png

网络结构

t1、t2为期望值,i1、i2为输入层,l1、l2为隐藏层,o1、o2为输出层,权值为w1……w8,偏执量为b1、b2。网络中隐藏层进行加权求和之后还会进行一次sigmoid()函数处理,这里忽略不计。

首先我们把01的值算出来,o1等于(w5*l1+b2)+(w8*l2+b2),o2的值为(w6*l1+b2)+(w7*l2+b2),总误差记做E_total,那么E_total就等于1/2(t1-o2)²+1/2(t2-o2)²

050e9c28f902eac1103e98667dabf44b.png

举个例子:现在我们想要知道权值w5对总误差E_total的影响力大小,所以我们用总误差E_total对w5求偏导,利用链式法则我们可以很快的到偏导数的值,注意:o1=(w5*l1+b2)+(w8*l2+b2),各位在纸上把过程写一下就会明白了,最后可以得到以下式子:

eb0ed3d9a48610c28b458ff23a0f5602.png

这是我们得到E_total对w5求偏导为-(i1-0i)*l1,最后我们将学习率乘以偏导数值然后和原来的权值相加,这样就可以得到我们新的权值。

f833d431895dfed733feefef8c9c078a.png

以此类推我们可以稍稍修改一下就可以,求得w1(新值)、w2(新值),由于求w1(新值)时会收到o1和o2这两个地方传过来的误差,所以在计算总误差时要把o1和o2加起来。我们将把式子变成下面形式:

b7816fd07d701b2da0e0216b684cb17f.png

到这里BP算法的计算过程就解释完了,各位同学可以在纸上试着推导一下。


看到这里就请各位:点赞、关注、转发

欢迎关注《编程高手杰瑞》,每天更新一篇简单实用的教程哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值