神经网络反向传播,通俗理解

前置知识:

sigmod 函数

g(z) = 1 / (1 + np.exp(-z))
g‘(z) = (1 / (1 + np.exp(-z))) * (1 - (1 / (1 + np.exp(-z))))
g‘(z) = g(z) * (1 - g(z))

LR-----1层神经网络

dL/dz 简称dz_,L(a,y)使用交叉熵。

da_ = dL/da = (-(y/a) + ((1-y)/(1-a)))

dz_ = dL/da * da/dz = da_*   g‘(z)

dw_ = dL/dz *dz/dw = dz* x

db_ = dz

2层神经网络

da_2 = dL/da2 =  (-(y/a) + ((1-y)/(1-a)))

dz_2 = dL/da2 * da2/dz2 = da_2*  g‘(z2)

dw_2 = dL/dz2 *dz2/dw2 = dz_2* a1

db_ 2= dz_2

da_1 =dz_2* w2

dz_1 = dL/da1 * da2/dz1 = da_1* g‘(z1)

dw_1 = dL/dz1 *dz1/dw1 = dz_1*  a0(x)

db_ 1= dz_1

多层神经网络

  • Pseudo code for forward propagation for layer l:

    Input  A[l-1]
    Z[l] = W[l]A[l-1] + b[l]
    A[l] = g[l](Z[l])
    Output A[l], cache(Z[l])
    
  • Pseudo code for back propagation for layer l:
    Input da[l], Caches
    dZ[l] = dA[l] * g‘[l](Z[l])
    dW[l] = (dZ[l]A[l-1].T) / m
    db[l] = sum(dZ[l])/m                # Dont forget axis=1, keepdims=True
    dA[l-1] = w[l].T * dZ[l]            # The multiplication here are a dot product.
    Output dA[l-1], dW[l], db[l]
    
  • If we have used our loss function then:
    dA[L] = (-(y/a) + ((1-y)/(1-a)))

https://github.com/mbadry1/DeepLearning.ai-Summary/tree/master/1-%20Neural%20Networks%20and%20Deep%20Learning#deep-l-layer-neural-network

原文地址:https://www.cnblogs.com/zle1992/p/10199937.html

时间: 2024-10-11 17:13:18

神经网络反向传播,通俗理解的相关文章

神经网络反向传播梯度计算数学原理

[神经网络]反向传播梯度计算数学原理 1 文章概述 本文通过一段来自于Pytorch官方的warm-up的例子:使用numpy来实现一个简单的神经网络.使用基本的数学原理,对其计算过程进行理论推导,以揭示这几句神奇的代码后面所包含的原理. 估计对大多数的同学来说,看完这个文章,肯定会是这样的感觉:字都认识,但是就是不知道讲的是啥~!不过对于有心人来说,本文确实能起到点睛之笔,就是你研究很久后,还差一点火候就顿悟了,希望本文能够帮你顿悟. 关键字:Numpy,神经网络,矩阵分析,反射传播,梯度下降

神经网络反向传播算法(4,5)

"反向传播"是最小化成本函数的神经网络术语,就像我们在logistic回归和线性回归中的梯度下降一样.我们的目标是计算: 也就是说,我们希望在θ中使用一组最优参数来最小化我们的成本函数j.在这一节中我们将看看我们用来计算J(Θ)的偏导数方程: 为此,我们使用下面的算法: 反向传播算法实现: 1.得到训练集 2.设置所有i,j,l(因此你最终有一个矩阵全零) 3.遍历训练样本t = 1到m: (1) (2)进行正向传播计算a(j)  j从1到m: (3)使用y(t),计算 其中L是我们的

神经网路(三) 反向传播直观理解

这是典型的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层,Layer L3是隐含层,我们现在手里有一堆数据{x1,x2,x3,...,xn},输出也是一堆数据{y1,y2,y3,...,yn},现在要他们在隐含层做某种变换,让你把数据灌进去后得到你期望的输出.如果你希望你的输出和原始输入一样,那么就是最常见的自编码模型(Auto-Encoder).可能有人会问,为什么要输入输出都一样呢?有什么用啊?其实应用挺广的,在图像识别,文本分类等等都会用到,我会专门再写一篇Au

前馈神经网络-反向传播(Back Propagation)公式推导走读

构造:输入神经元个数等于输入向量维度,输出神经元个数等于输出向量维度.(x1=(1,2,3),则需要三个输入神经元) 一 前向后传播 隐层: 输出层: 一般化,向量表示   二 反向传播 1计算梯度delta:均方误差,利用了sigmoid函数导数的有趣性. 输出层梯度: -->  eg.  隐层梯度:  -->   eg.  2更新权重: eg输出层: eg隐层: 备注 反向传播的公式推导 0目标函数: 1梯度下降法优化目标函数, 怎么计算出误差对于每个权重的偏导数呢? 2netj是第j个神

正向代理与反向代理通俗理解

代理,字面意义上来说,他就是相当于一个中间人这么个概念. 带到项目中也一样,那么来这样一个比喻. 用户(客户端) 代理(正,反)  提供者(服务端). 正向代理: 把整个流程比如成去饭店吃饭,我们也就是用户(客户端)去饭店吃饭(发送一个请求),你知道你要吃的是鱼香肉丝(请求),可是你不能自己做,那么就需要让大厨(服务端)给你做 ,可是去了饭店,大厨是在后台的,你也不能直接去告诉大厨,因为你没有权限(服务端在后台)这时候就需要服务员(代理)来帮忙告诉说某某某客户(客户端)要一盘鱼香肉丝(请求/访问

DL学习笔记-反向传播算法的理解

作者:杜客链接:https://zhuanlan.zhihu.com/p/21407711来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Backprop Note,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,堃堃和巩子嘉进行校对修改.译文含公式和代码,建议PC端阅读. 原文如下: 内容列表: 简介 简单表达式和理解梯度 复合表达式,链式法则,反向传播 直观理解反向传播 模块:Si

神经网络系列之二 -- 反向传播与梯度下降

系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 第2章 神经网络中的三个基本概念 2.0 通俗地理解三大概念 这三大概念是:反向传播,梯度下降,损失函数. 神经网络训练的最基本的思想就是:先"猜"一个结果,我们叫预测结果a,看看这个预测结果和事先标记好的训练集中的真实结果y之间的差距,然后调整策略,再试一次,这一次就不是"猜"了,而是有依据地向正确的方向靠近.如此反复多次

神经网络训练中的Tricks之高效BP(反向传播算法)

神经网络训练中的Tricks之高效BP(反向传播算法) 神经网络训练中的Tricks之高效BP(反向传播算法) [email protected] http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我们这些所谓的尝试应用机器学习技术解决某些问题的人,更是如此.曾记得,我们绞尽脑汁,搓手顿足,大喊“为什么我跑的模型不work?”,“为什么我实现的效果那么差?”,“为什么我复现的结果没有他论文里面说的那么好?”.有人会和你说“你不懂调参!

深度学习与计算机视觉系列(5)_反向传播与它的直观理解

作者:寒小阳 && 龙心尘 时间:2015年12月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50321873 声明:版权所有,转载请联系作者并注明出处 1. 引言 其实一开始要讲这部分内容,我是拒绝的,原因是我觉得有一种写高数课总结的感觉.而一般直观上理解反向传播算法就是求导的一个链式法则而已.但是偏偏理解这部分和其中的细节对于神经网络的设计和调整优化又是有用的,所以硬着头皮写写吧. 问题描述与动机: 大家都知道的,其实我