大话反向传播递推公式

反向传播算法(过程及公式推导) 反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。 阅读详情

一、博客主旨

本着好读书不求甚解的精神,本文只讨论对BP四公式使用的理解,推导请自行百度,给两篇参考博客1,博客2,两者结合效果更佳。

二、大结局

只有能用自己的话解释公式,才算理解了它。 ----鲁迅

  • BP四公式
    在这里插入图片描述
  • 缭乱的手推
    在这里插入图片描述
  • 权重定义看上图。注意:网络层从0开始,权重从1开始(日常迎合公式)。
  • 损失函数使用均方误差,激励函数使用Sigmoid
  • 四公式是向量化的形式,我们看单个神经元怎么计算
    • bp1是损失函数一阶导数和激励函数一阶导数的乘积,不考虑复合函数,只求最外层导数
    • bp2中权重的i遍历该层神经元,j与等号左边的下标相同

三、番外

本文写于头昏脑涨时,欢迎切磋讨论、批评指正。
俺去写程序验证了,未来一年内肯定上代码。(奸笑)


20200508 上代码

用代码实现时,你才知道有没有真正懂了公式。 ----莎士比亚

void SimpleLayer::BackWard(vector<float> delta) {
  for(int j = 0; j < ic_; ++j) {
    delta_[j] = 0;
  }
  for(int j = 0; j < ic_; ++j) {
    for(int i = 0; i < oc_; ++i) {
      delta_[j] += weight_[i*ic_+j]*delta[i];
      // std::cout << delta[j] << endl;
    }
  }
  // std::cout << "*******Backward*******\n";
  for(int i = 0; i < oc_; ++i) {
    for(int j = 0; j < ic_; ++j) {
      float tmp = input_[j]*delta[i];
      weight_[i*ic_+j] -= lr_ * tmp;
      // std::cout << weight_[i*ic_+j] << endl;
    }
    bias_[i] -= lr_ * delta[i];
    // std::cout << bias_[i] << endl;
  }
}
  • 全乎的手推,忽略虚线框,那个画错了!!“伪代码”就是上述代码的逻辑,各位客官努力理解把,哈哈。
    全乎的手推
    完整代码点击这里下载
晶振匹配电容容值计算方法 在使用晶振时,应仔细参考晶振规格书,以确保正确选择匹配电容,从而获得稳定和精准的时钟源。 阅读详情

相关推荐

面板数据分析中的随机前沿软件FRONTIER Version 4.1应用

随机前沿模型是一种用于评估单位效率的统计方法。它考虑了输入和输出的随机性,允许我们在效率评估中引入不确定性。随机前沿模型通常用于评估生产单位、金融机构、医院等各种类型的决策单元的效率。FRONTIER是一个广泛使用的随机前沿分析软件,具有用户友好的界面和强大的功能。它提供了估计效率、前沿分析和模型比较的工具,使用户能够深入研究单位的效率和绩效。面板数据是一种包含多个单位(通常是时间序列数据)的数据类型,可以用于分析单位在不同时间点的变化和效率。

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 2982

反向传播算法(过程及公式推导)_反向传播(BP)算法的数学原理

============================================由于平台对公式支持较少,本文用了少量LaTeX语法来编辑公式,其中a_j表示以j为下标的代数式a^j表示以j为上标的代数式a_j^l表示以j为下标、l为上标的代数式\sum_j表示对所有以j为下标的元素进行求和b/a 表示以b为分子,a为分母的分数========================...

weixin_39823676的博客 4650

Qt·DBus快速入门

DBus快速入门

m0_64560763的博客 2273

数值分析核心算法实战:从理论到代码的收敛、稳定与精度

本文深入探讨数值分析中评估算法优劣的三大核心标准:收敛性、稳定性与精度。通过Python代码实战,对比了牛顿法与简单迭代法的收敛速度,分析了递推计算中的稳定性陷阱与病态问题,并提供了精度评估与合理停止准则的实用方法,帮助开发者从理论到代码全面掌握构建鲁棒、高效数值算法的关键。

k6l7m8n9的博客 675

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 368

【翼型】基于Matlab的NACA翼型气动性能仿真与优化【附源码】

本文详细介绍了如何使用Matlab进行NACA翼型的气动性能仿真与优化。内容涵盖从生成NACA翼型坐标、利用面板法快速估算升阻力,到进阶的粘性流模拟与优化设计入门。通过清晰的代码示例和分步指南,帮助读者掌握基于Matlab的翼型分析与优化流程,为飞行器或叶片设计提供实用工具和方法。

weixin_29032489的博客 411

反向传播算法的直观理解

一、反向传播的由来 在我们开始DL的研究之前,需要把ANN—人工神经元网络以及bp算法做一个简单解释。 关于ANN的结构,我不再多说,网上有大量的学习资料,主要就是搞清一些名词: 输入层/输入神经元,输出层/输出神经元,隐层/隐层神经元,权值,偏置,激活函数 接下来我们需要知道ANN是怎么训练的,假设ANN网络已经搭建好了,在所有应用问题中(不管是网络结构,训练手段如何变化)我们的目标

xf__mao的博客 5万+

【N32L40X】学习笔记08-定时器的基本定时功能-超时功能

【代码】【N32L40X】学习笔记08-定时器的基本定时功能-超时功能。

Car12 828

反向传播back propagation:神经网络递推与一般表示的向量形式

零 前置知识 损失函数与激活函数 损失函数的形式称为交叉熵(cross entropy),后面的推导中的损失函数L都是此形式 梯度下降法 Repeat: { } until convergence 可见若进行梯度下降法,需求出w与b对L的导数   一 Logistic回归中的导数与back propagation 基本结构   logistic回归的梯度表...

Norstc的博客 1461

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1834

华为od 面试八股文_C语言_02_含答案

华为od 面试八股文_C语言_02_含答案

MISAYAONE的博客 2230

深度学习基础:反向传播即BP算法的推导过程

BP算法简单的来说就是根据神经网络实际的输出和目标输出(也就是输入样本对应的标记)之间的误差计算神经网络各个权值的过程。 采用BP算法从输出层、经过隐层再到输入层进行层层计算的原因是如果直接计算误差函数相对于各权值的偏导很难得到显式的表达函数(最小均方算法或Widrow-Hoff学习算法),采用从后向前递推的方式大幅度的利用了前期的计算值,也使得网络具备了更多的灵活性。

LL的博客 6503

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

神经网络的反向传播公式推导

写在前面 机器学习算法工程师的面试中常会问到一个很基础的问题,那就是反向传播公式的推导,今天看了下吴恩达老师的公开课《神经网络和深度学习》,将一些推导过程记录下来。 逻辑回归反向传播的推导 逻辑回归是最简单的神经网络,先从逻辑回归入手,有助于后面的理解。 上图是一个逻辑回归正向传播的示意图。具体细节不再描述。 损失函数L(a,y)=−yloga−(1−y)log(1−a)L(a,y)...

hywel_xue的博客 2075

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

BP神经网络:误差反向传播公式的简单推导

最近看了一下BP神经网络(Backpropagation Neural Networks),发现很多资料对于BP神经网络的讲解注重原理,而对于反向传播公式的推导介绍的比较简略,故自己根据《PATTERN RECOGNITION AND MACHINE LEARNING》这本书的思路推导了一下反向传播的过程,记录在这里,以便以后看。

Meringue's Blog 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

“反向传播算法”过程及公式推导(超直观好懂的Backpropagation)

自己学习机器学习,深度学习也有好长一段时间了,一直以来都想写点有价值的技术博客,以达到技术分享及记录自己成长的目的,奈何之前一直拖着,近来算是醒悟,打算以后不定时写一写博客,也算是作为自己不断学习,不断进步的记录。既然是写博客,希望自己的博客以后要做到“准确、生动、简洁、易懂”的水平,做到对自己、对读者负责,希望大家多交流,共同进步! 言归正传,想起当时自己刚入门深度学习的时候,当时对神经网络的“...

aift的专栏 24万+

2.递推关系(一)

2.1取石头 题目: 有一堆石子,A,B两人轮流从中取出石子,每次取出的石子数目只能为1,3,7或8,最后一枚石子谁取到就是输方。A,B两人都足够聪明,不会做出错误的判断。现给出一定数目的石子,A先取石子,计算A最终是输是赢,赢用1表示,输用0表示. ...

weixin_46561163的博客 1941

算法总结之递推与递归

递推算法 递归算法大致包括两方面的内容:1)递归起点 ; 2)递归关系 递推起点 递归起点一般由题目或者实际情况确定,不由递归关系推出。如果无法确定递归起点,那么递归算法就无法实现。可见,递归起点是递归算法中的重要一笔。 递推关系 递归关系是递归算法的核心。常见的递归关系有以下几项: 1)一阶递推; 2)多阶递推; 3)间接递推; 4)逆向递推; 5)多维递推。 下面通过栗子来详细介绍一下上述...

yunyunyx 3986

反向传播算法(过程及公式推导)_全连接神经网络中反向传播算法数学推导

点击上方“CVer”,选择加"星标"或“置顶”重磅干货,第一时间送达作者:南柯一梦宁沉沦https://zhuanlan.zhihu.com/p/61863634本文已授权,未经允许,不得二次转载本文以神经网络中最简单的全连接神经网络为例介绍反向传播算法的理论推导。因为它涉及到的数学理论相对其它网络更为简单,仅需要对矩阵的乘法运算以及微积分中求导链式法则有较好的理解。全连接神经网络中的反...

weixin_39549312的博客 1029

DNN中的反向传播算法

对反向传播算法的理解求梯度用反向传播算法,核心是“链式求导”法则,又如何具体实现呢?这里,主要参考Michael Nielsen的Neural Networks and Deep Learning里的第二章。介绍反向传播算法之前,我们需要知道以下几点: - 确定Cost function CC,即损失函数 - 根据CC得出CxC_x,即一个训练样本的损失函数。需要CxC_x的原因是,我们接下来的

YQMind的博客 1830

反向传播示例代码全解析

四个基本公式 (1). 输出层错误量的等式:δLj=∂C∂aLjσ′(zLj)δjL=∂C∂ajLσ′(zjL)\delta^L_j=\frac{\partial C}{\partial a_j^L}\sigma'(z^L_j) (2).依据下一层错误量δl+1δl+1\delta^{l+1}获取错误量δlδl\delta^l的等式:δl=((wl+1)Tδl+1)⊙σ′(zl)δl=...

J.zhang 4012

卷积神经网络之反向传播算法

前面已经推导学习了卷积神经网络之前向传播算法,本篇文章将推导卷积神经网络之反向传播算法。在学习卷积神经网络算法之前,希望你对深度神经网络有一定程度的了解,我在之前也有写过相关的文章,包括深度神经网络之前向传播算法、深度神经网络之反向传播算法、深度神经网络之损失函数和激活函数、深度神经网络之正则化,可以先看一下再学习卷积神经网络。 1.DNN反向传播算法 学习CNN(卷积神经网络)反向传播算法之前,...

谓之小一 4230

Leetcode 174. 地下城游戏 反向递推动态规划

从右下角反向递推回去,很容易推导出转移方程: class Solution { public: int calculateMinimumHP(vector<vector<int>>& dungeon) { int n = dungeon.size(), m = dungeon[0].size(); vector<vector<int>> dp(n,vector<int>(m)); ...

wwxy1995的博客 223

yolov3选取正负样本

负责预测目标网格中与ground truth的IOU最大的anchor为正样本(记住这里没有阈值的事情,否则会绕晕) 与全部ground truth的IOU都小于阈值的anchor为负样本 其他是忽略样本 代码未完待续

random_repick的专栏 4658

使用python3.6编译caffe

一、前言 使用snpe转换模型,调用的是python3 系统是ubuntu18.04 二、安装python3.6 使用anaconda安装python3.6和requirements.txt中的依赖(不用写版本号,都满足) conda create -n snpe python=3.6 三、修改Makefile.config 0.因为是用来转换模型,所以不用GPU和opencv 1.注释USE_CUDNN := 1 2.打开CPU_ONLY := 1和USE_OPENCV := 0 3.PYTHO

random_repick的专栏 3994

小白都能看懂的rk3399 pro使用

前言 在ubuntu上给rk3399 pro烧录debian 1. 准备 从这里下载debian固件 从这里下载烧录工具 2. 烧录 1、Type-C线连接主机端的USB接口和TB-RK3399Pro开发板的Type-C接口。 2、长按TB-RK3399Pro开发板上recovery按键后重启机器,进入Loader模式。 3、解压固件,将固件拷贝到linuxTool-v1.0/images目录下 4、执行sudo ./flash.py -l all,如何失败执行sudo python flash.py

random_repick的专栏 3769

pytorch之vgg16特征图可视化

参考的这篇博客 改了图像保存方法,注释了不必要的内容 写这篇博客主要是为了自己以后能直接复制使用 import torch from torchvision import models, transforms from PIL import Image import matplotlib.pyplot as plt import numpy as np import scipy.misc import cv2, imageio # 将输入图片转化为卷积运算格式tensor数据 def trans.

random_repick的专栏 3090
上一篇: Ubuntu tips
下一篇: ROS各消息类型的data理解
刀么克瑟拉莫
博客等级 码龄14年 68粉丝 268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值