目录

一、后向传播算法的本质——梯度下降法求局部极值

1、w迭代公式的合理性

二、后向传播算法的推导(以二层神经网络为例)

1、问题描述(创建目标函数loss函数,求参数)

2、求解参数的流程(四步曲)

3、求解参数第二步——目标函数对每一个参数求偏导(BP算法目的所在)

>>>问题1:为什么叫做后向传播算法(BP)?

>>>问题2:非线性函数fai的改造(重要)——激活函数

1)fai的改造函数形式一

2)fai的改造函数形式二

3)fai的改造函数形式三

4)fai的改造函数形式四

三、多层神经网络的向量模型以及BP算法求参(w(m)、b(m))流程步骤

1、多层神经(l层)网络的向量模型(前向传播流程)

1)关于多层神经网络向量模型中的一些定义

2)多层神经(l层)网络的向量模型

>>>问题3:上图中w(m),b(m)是怎么变化的?

2、BP算法(后向传播算法)流程

1)推导利用BP求偏导(链式法则)——已知第m+1层求第m层

2)所有对参数w,b的偏导

3)求解所有w,b参数小结(求解流程)

>>>问题4:w,b迭代公式中的α怎么进行取值?


一、后向传播算法的本质——梯度下降法求局部极值

这里需要注意的是区分SVM和BP,SVM找的是全局的最优解,BP寻找的是局部的最优解

1、w迭代公式的合理性

w的迭代公式是为了让函数值一直减小,直到在局部达到最小,即导数为0,那迭代公式能否完成极值点的寻找呢?证明如下:

从上图可知,通过w的迭代公式,可以让函数值随w的迭代而一直减小,直到找到极值点

二、后向传播算法的推导(以二层神经网络为例)

1、问题描述(创建目标函数loss函数,求参数)

下面为二层神经网络,有9个未知参数,目的是在让E函数值最小的情况下求解这9个参数

2、求解参数的流程(四步曲)

3、求解参数第二步——目标函数对每一个参数求偏导(BP算法核心)

第二步结束,执行第三步和第四步,直到满足条件时所有的参数w,b就算出来了

>>>问题1:为什么叫做后向传播算法(BP)?

答:如下图所示,

我们首先要从前往后通过输入的X来计算,a和z、y的表达式(前向计算),

然后再从后到前依次计算对各个参数的偏导,因此BP算法的目的就是用来求目标函数对参数的偏导的,所以叫后向传播算法

>>>问题2:非线性函数fai的改造(重要)——激活函数

求目标函数对参数求偏导时含有fai的导数,而前面说fai是阶跃函数,那其导数恒等于0,在0处无穷大,那该怎么把fai的导数带入到求参数偏导的式子中去呢?

答:这样的fai函数肯定是不行的,为此对fai函数进行了改造,改造成了以下几种形式

建议先看文章:《机器学习——人工神经网络之多层神经网络(多层与三层)——数学模型中的非线性函数fai》

用以下的fai函数和三层神经网络模型结合也可以解决所有的线性问题

1)fai的改造函数形式一

2)fai的改造函数形式二

以下两种是深度学习常被用到的fai函数

3)fai的改造函数形式三

4)fai的改造函数形式四

三、多层神经网络的向量模型以及BP算法求参(w(m)、b(m))流程步骤

1、多层神经(l层)网络的向量模型(前向传播流程)

1)关于多层神经网络向量模型中的一些定义

2)多层神经(l层)网络的向量模型

>>>问题3:上图中w(m),b(m)是怎么变化的?

答:w(m)和b(m)是待求参数,上图只是通过数学的推导来表示清楚多层神经网络模型中各个参数的变化以及关系式,至于怎么求w(m)和b(m)依旧使用的是BP算法,具体怎么求看后面部分

2、BP算法(后向传播算法)流程

注意:

1、这里得区分开y和Y的关系,y是变量,Y是输入的标签是已知量,但是两者的维度是一致的

2、链式法则指的就是求复合函数的偏导的法则

1)推导利用BP求偏导(链式法则)——已知第m+1层求第m层

①链式1:最后一层(l层)的偏导

②链式2:第m层的偏导——从后往前推的递推式

2)所有对参数w,b的偏导

通过下面四个式子可以将目标函数对所有参数的偏导求解出来

3)求解所有w,b参数小结(求解流程)

1、任意取一组参数w,b,

2、求出目标函数对所有参数w,b的偏导的表达式

3、将w,b的值代入偏导公式求出偏导值

4、根据w,b的迭代公式对w,b参数进行更新,得到新的一组w,b参数

5、若目标函数对所有的参数的偏导为0,则取该组w,b参数作为最优模型的参数,否则一直进行循环,直到偏导都为0

通过上述就将模型确定了

>>>问题4:w,b迭代公式中的α怎么进行取值?

答:α在模型中叫做步长,这个参数的取值,一般是通过调整得到的,过大可能会导致错过最好的参数,过小收敛效率慢。总的来说这个参数的取值随缘,先定一个步长,算出w,b后,再慢慢调节阿尔法的值

对模型中的参数该怎么进行设置呢?请看文章:《机器学习——人工神经网络之参数设置(BP算法)

机器学习——人工神经网络之后向传播算法(BP算法)相关推荐

  1. 机器学习——人工神经网络之参数设置(BP算法)

    目录 一.复习(BP算法) 二.训练模型的建议 三.参数设置内容 1.随机梯度下降(SGD) 2.激活函数的选择 (1)sigmoid (2)tanh双曲正切函数 3.训练数集初始化 4.(w,b)的 ...

  2. 人工神经网络(ANN)及BP算法

    1 什么是神经网络 1.1 基本结构 说明: 通常一个神经网络由一个input layer,多个hidden layer和一个output layer构成. 图中圆圈可以视为一个神经元(又可以称为感知 ...

  3. 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)

    目录 一.理论知识回顾 1.神经网络模型 2.明确任务以及参数 1)待估参数: 2)超参数: 3)任务 3.神经网络数学模型定义 1)激活函数 ​ 2)各层权重.阈值定义 3)各层输入输出定义 4.优 ...

  4. 机器学习——人工神经网络之多层神经网络(多层与三层)

    目录 一.多层神经网络 1.多层神经网络数学模型 2.数学模型中的非线性函数fai 1)非线性函数fai存在的意义 2)非线性函数fai具体是什么? 3.多层神经网络与单层神经网络的区别与改进 1)单 ...

  5. 机器学习——人工神经网络之发展历史(神经元数学模型、感知器算法)

    目录 一.神经元的数学模型 ​ 二.感知器算法(SVM算法前身) 1.目的 2.流程 >>>问题1:下图w和b的调整是什么意思? 3.算法的有效性验证 1)原算法 2)增广矩阵 3) ...

  6. 人工智能-机器学习人工神经网络

    机器学习 机器学习部分主要学习的内容是朴素贝叶斯算法和决策树算法. 机器学习研究计算机如何模拟人类的学习行为,获取新的知识或新的技能,重新组织已有知识改善自身性能,使得计算机具有人的学习能力,从而实现 ...

  7. 反向传播(BP算法)python实现

    反向传播(BP算法)python实现 1.BP算法描述 BP算法就是反向传播,要输入的数据经过一个前向传播会得到一个输出,但是由于权重的原因,所以其输出会和你想要的输出有差距,这个时候就需要进行反向传 ...

  8. 神经网络的反向传播(BP)是什么?sigmoid函数的导数是什么,有什么形式优势、优缺点?

    神经网络的反向传播(BP)是什么?sigmoid函数的导数是什么,有什么形式优势? 目录

  9. 吴恩达|机器学习作业4.0神经网络反向传播(BP算法)

    4.0.神经网络学习 1)题目: 在本练习中,您将实现神经网络的反向传播算法,并将其应用于手写数字识别任务.在之前的练习中,已经实现了神经网络的前馈传播,并使用Andrew Ng他们提供的权值来预测手 ...

最新文章

  1. java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序
  2. DB2存储过程语法规则
  3. java 取出集合前两个数据库_【Java】获取两个List中不同的数据(效率非常不错)-Go语言中文社区...
  4. 无法向会话状态服务器发出会话状态请求
  5. 在 SAP Spartacus 里如何调用 hybris 里实现的自定义 API
  6. java删除通用方法_一个比较通用的java删除文件和文件夹的方法
  7. Spring MVC:带有CNVR卷的REST应用程序。 1个
  8. TCP面向连接中的“连接”和“可靠”与“不可靠”
  9. 华为王军:未来座舱操作系统只有1个或者2个生态
  10. 普通人学python有意义吗-普通人为什么要学习Python?
  11. python 爬虫(一) requests+BeautifulSoup 爬取简单网页代码示例
  12. 跨页面实现多选(转)
  13. C# 使用 NPOI操作excle文件(读取与新建重写)
  14. linux 查看添加的镜像源,linux镜像源的查看、配置以及删除
  15. 《实战 Java 高并发程序设计》笔记——第1章 走入并行世界(一)
  16. office2007每次打开都配置进度_解决Office2007每次启动时出现配置进度的问题
  17. 最小错误率贝叶斯决策的基本思想_基于最小错误率的贝叶斯决策
  18. Transformer架构:位置编码
  19. 裸女街上走秀一小时 路人疯狂拍照无人制止
  20. Python实现选择排序算法

热门文章

  1. 如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试
  2. iOS 本地化应用程序汇总 国际化
  3. 最新的vue webpack模板没有dev-server.js文件,进行后台数据模拟笔记
  4. sql server常用性能计数器
  5. python 12306 车次数据获取
  6. 《SAS编程与数据挖掘商业案例》学习笔记之十五
  7. Unity3D:视物有点眩晕的原因
  8. PHP - 使用 Pear 进行安装和卸载包
  9. SQL DISTINCT 多字段查询用法
  10. 电商网站前端架构 学习笔记(全是干货)