在《机器学习:神经网络的模型构建》中,我记录了神经网络的一些基础知识,包括神经网络的逻辑单元、模型表示、前向传播等等。这篇笔记中,我会整理神经网络的代价函数以及反向传播算法~

那么如何在给定的训练集下,来为神经网络拟合参数呢?和之前学习的大多数算法一样,要从代价函数开始讨论起了。


神经网络在分类中的应用

神经网络可以应用在两种分类问题中:二分类问题和多分类问题。

在二分类问题中,y 等于 0 或 1,神经网络只有一个输出单元;多分类问题中,y 可能为任何实数,神经网络有多个输出单元。


神经网络的代价函数

现在我们有一个训练集: ,其中有 m 个训练样本,每个包含一组输入 和一组输出 ,我们用 表示神经网络的总层数,用 表示第 层的单元数量,即神经元的数量(不包括偏置单元

一般来说,我们使用的神经网络的代价函数是逻辑回归里代价函数的一般形式。

在逻辑回归中,我们的代价函数通常为: ,其中第一项表示预测值与实际值之间的差距,第二项为参数的正则化项。

对于神经网络来说,不再是只有一个输出单元,取而代之的是 K 个,那么其代价函数就表示为:

其中 (K 维向量), 表示第 i 个输出。

即每一个的逻辑回归算法的代价函数,按输出的顺序 1 ~ K,依次相加。


反向传播算法

那么如何将神经网络的代价函数最小化呢?我们来看一下反向传播算法。

在上一个部分中,我们已经得到了代价函数 的表达式,想要用梯度下降法或更高级的优化算法来求参数,就需要来计算

先回顾一下前向传播算法,如果有一个训练集,只有一组样本 ,那么求训练集在神经网络中各层的输出值的过程为:

就是第一层的激励值,也就是输入层,所以为 ,那么 就等于矩阵 ,第二层的激励值 就为 ,后几层同理,同样用前向传播求出 ,其中 为 S 型激励函数。同样, 也是假设函数的输出

⚠️接下来,为了计算导数项,我们就需要用到反向传播算法了!

简单来说,我们引入了一个误差变量 ,代表第 层中第 个节点的误差,表示了该节点对最终输出值的残差产生的影响,也就是说这个误差捕捉到了该节点的激励值,然后计算出其误差,例如:

向量化表示就是:

其中:向量维数等于输出的单元个数。

下一步就是计算前几层的误差项了:

(推导方法有很多种,式子太复杂就不记录了……)

到这里也看出来为什么叫反向传播算法了,因为是从输出层开始,一层一层往前推算的,一直计算到第二层,因为第一层是输入层,不存在误差。

这就是反向传播算法的大致过程,那么面对复杂的训练集时,如何使用反向传播算法呢?

假设训练集为 ,设误差 ,下面是一段伪代码:

For to
{
Set
Perform forward propagation to compute for
Using , cpmpute
Compute
}
if if

简单来说就是,从后向前依次计算每一层的 ,用 代表总误差,每一层都有对应的 ,再引入代价函数对参数进行求导的结果 时对应偏置项。

一旦计算出了 ,就可以得到代价函数对每个参数的偏导数,因为可以证明得到:

用来累加误差值,最后帮助我们计算偏微分~

机器学习:神经网络的代价函数及反向传播算法相关推荐

  1. Educoder 机器学习 神经网络 第三关:反向传播算法

    任务描述 相关知识 数据集介绍 神经网络是如何训练 前向传播 交叉熵 反向传播 sklearn中的神经网络 编程要求 测试说明 任务描述 本关任务:用sklearn构建神经网络模型,并通过鸢尾花数据集 ...

  2. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓

     100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦 ...

  3. 机器学习(深度学习)中的反向传播算法与梯度下降

    这是自己在CSDN的第一篇博客,目的是为了给自己学习过的知识做一个总结,方便后续温习,避免每次都重复搜索相关文章. 一.反向传播算法 定义:反向传播(Backpropagation,缩写为BP)是&q ...

  4. 深度神经网络(DNN)反向传播算法(BP)

    在深度神经网络(DNN)模型与前向传播算法中,我们对DNN的模型和前向传播算法做了总结,这里我们更进一步,对DNN的反向传播算法(Back Propagation,BP)做一个总结. 1. DNN反向 ...

  5. 【机器学习】详解 BackPropagation 反向传播算法!

    首先介绍一下链式法则 假如我们要求z对x1的偏导数,那么势必得先求z对t1的偏导数,这就是链式法则,一环扣一环 BackPropagation(BP)正是基于链式法则的,接下来用简单的前向传播网络为例 ...

  6. 浅谈神经网络之链式法则与反向传播算法

    反向传播是训练神经网络最重要的算法,可以这么说,没有反向传播算法就没有深度学习的今天.但是反向传播算法涉及一大堆数据公式概念.所以我们了解导数计算过程以及要介绍的新的复合函数多层求导计算过程. 链式法 ...

  7. 神经网络之BP(反向传播算法)的原理介绍

    反向传播是人工神经网络中的一个重要算法,这个方法可以对网络中所有权重计算损失函数的梯度,然后这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数. 反向传播算法的原理 我们先直观的看一下反向传播的 ...

  8. 人工神经网络——【BP】反向传播算法证明

    第一步:前向传播 [注]此BP算法的证明仅限sigmoid激活函数情况.本博文讲道理是没错的,毕竟最后还利用代码还核对了一次理论证明结果. 关于更为严谨的BP证明,即严格通过上下标证明BP的博客请戳这 ...

  9. 吴恩达《机器学习》课程总结(8)_神经网络参数的反向传播算法

    Q1代价函数 (1)假设神经网络的训练样本有m个,每一个包含一组输入x和一组输出信号y,L表示神经网络的层数,Sl表示每一层的神经元个数,SL代表最后一层中处理单元的个数. 则代价函数为(同样不对θ0 ...

最新文章

  1. SpringMVC 如何配置aop
  2. 生产场景 bond 0实战
  3. CentOS 6.7 RPM安装MySQL
  4. poj1182(加权值的并查集)
  5. 16、mybatis动态sql 批量插入
  6. Java设计模式分为创建模式, 结构模式, 行为模式 3种类型
  7. 转:Oracle 中union的用法
  8. python socket recvfrom 超时捕获_python-udp客户端超时机制
  9. MariaDB 安装与启动 使用MySQL
  10. 我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)(二)
  11. jsp里table边框线_JSP表格边框颜色
  12. php段错误coredumped,段错误 (core dumped)
  13. php 产生国际时间,php时间国际化和本地转换
  14. Muli3D源码分析(1) - 框架概览
  15. ajax get传递数组参数吗,ajax 传递数组参数
  16. 计算机网络之应用层(文件传送协议、万维网)
  17. 64位Win10 2004正式版镜像下载
  18. Qt运行过程中错误未找到信号的符号undefined symbol: _ZN11FileManager12sigTechFilesE4QMapIi7QSt
  19. c语言编程中野指针错误,小心C语言野指针
  20. JinJa2-测试器

热门文章

  1. hive 如何将数组转成字符串_Hive函数大全(含例子)之字符串函数(String Functions)...
  2. python刷b站教程_【Python】【学习资源】B站上的Python学习资源
  3. centos7 二进制安装mysql,Centos7 二进制安装mysql5.7
  4. mysql log error_MySQL日志之error_log
  5. SQL中的模糊范围查询特殊符号应用
  6. 【C#】详解C#异常
  7. 使用WebDeployment Project改善VS2005发布网站问题 [系列导读]
  8. 如何反编译.apk(注:CSDN上提供的资源过时了,都用不了)
  9. Ubuntu 出现apt-get: Package has no installation cand
  10. ubuntu下opencv和qt的安装配置