首页 > 其他分享 >神经网络入门篇:直观理解反向传播(Backpropagation intuition)

神经网络入门篇:直观理解反向传播(Backpropagation intuition)

时间:2023-11-21 10:25:09浏览次数:25  
标签:intuition frac 公式 da 入门篇 Backpropagation dz 维度 vdots

详细推导反向传播

下图是逻辑回归的推导:

回想一下逻辑回归的公式(参考公式1.2、公式1.5、公式1.6、公式1.15)
公式1.38:

\[\left. \begin{array}{l} {x }\\ {w }\\ {b } \end{array} \right\} \implies{z={w}^Tx+b} \implies{\alpha = \sigma(z)} \implies{{L}\left(a,y \right)} \]

所以回想当时我们讨论逻辑回归的时候,我们有这个正向传播步骤,其中我们计算\(z\),然后\(a\),然后损失函数\(L\)。

公式1.39:

\[\underbrace{ \left. \begin{array}{l} {x }\\ {w }\\ {b } \end{array} \right\} }_{dw={dz}\cdot x, db =dz} \impliedby\underbrace{{z={w}^Tx+b}}_{dz=da\cdot g^{'}(z), g(z)=\sigma(z), {\frac{{dL}}{dz}}={\frac{{dL}}{da}}\cdot{\frac{da}{dz}}, {\frac{d}{ dz}}g(z)=g^{'}(z)} \impliedby\underbrace{{a = \sigma(z)} \impliedby{L(a,y)}}_{da={\frac{{d}}{da}}{L}\left(a,y \right)=(-y\log{\alpha} - (1 - y)\log(1 - a))^{'}={-\frac{y}{a}} + {\frac{1 - y}{1 - a}{}} } \]

神经网络的计算中,与逻辑回归十分类似,但中间会有多层的计算。下图是一个双层神经网络,有一个输入层,一个隐藏层和一个输出层。

前向传播:

计算\(z^{[1]}\),\(a^{[1]}\),再计算\(z^{[2]}\),\(a^{[2]}\),最后得到loss function

反向传播:

向后推算出\(da^{[2]}\),然后推算出\(dz^{[2]}\),接着推算出\(da^{[1]}\),然后推算出\(dz^{[1]}\)。我们不需要对\(x\)求导,因为\(x\)是固定的,我们也不是想优化\(x\)。向后推算出\(da^{[2]}\),然后推算出\(dz^{[2]}\)的步骤可以合为一步:

公式1.40:

\(dz^{[2]}=a^{[2]}-y\;,\;dW^{[2]}=dz^{[2]}{a^{[1]}}^{T}\)
(注意:逻辑回归中;为什么\(a^{[1]T}\)多了个转置:\(dw\)中的\(W\)(视频里是\(W^{[2]}_i\))是一个列向量,而\(W^{[2]}\)是个行向量,故需要加个转置);

公式1.41:

\(db^{[2]}=dz^{[2]}\)

公式1.42:

\(dz^{[1]} = W^{[2]T}dz^{[2]}* g[1]^{'}(z^{[1]})\)

注意:这里的矩阵:\(W^{[2]}\)的维度是:\((n^{[2]},n^{[1]})\)。

\(z^{[2]}\) , \(dz^{[2]}\)的维度都是:\((n^{[2]},1)\),如果是二分类,那维度就是\((1,1)\)。

\(z^{[1]}\),\(dz^{[1]}\)的维度都是:\((n^{[1]},1)\)。

证明过程:
见公式1.42,其中\(W^{[2]T}dz^{[2]}\)维度为:\((n^{[1]},n^{[2]})\)、\((n^{[2]},1)\)相乘得到\((n^{[1]},1)\),和\(z^{[1]}\)维度相同,

\(g[1]^{'}(z^{[1]})\)的维度为\((n^{[1]},1)\),这就变成了两个都是\((n^{[1]},1)\)向量逐元素乘积。

实现后向传播有个技巧,就是要保证矩阵的维度相互匹配。最后得到\(dW^{[1]}\)和\(db^{[1]}\),公式1.43:
\(dW^{[1]} =dz^{[1]}x^{T},db^{[1]} = dz^{[1]}\)

可以看出\(dW^{[1]}\) 和\(dW^{[2]}\) 非常相似,其中\(x\)扮演了\(a^{[0]}\)的角色,\(x^{T}\) 等同于\(a^{[0]T}\)。

由:
\(Z^{[1]} = W^{[1]}x + b^{[1]}\;,\;a^{[1]}=g^{[1]}(Z^{[1]})\)
得到:
\(Z^{[1]} = W^{[1]}x + b^{[1]}, A^{[1]} = g^{[1]}(Z^{[1]})\)

\[Z^{[1]} = \left[ \begin{array}{c} \vdots &\vdots & \vdots & \vdots \\ z^{[1](1)} & z^{[1](2)} & \vdots & z^{[1](m)} \\ \vdots &\vdots & \vdots & \vdots \\ \end{array} \right] \]

注意:大写的\(Z^{[1]}\)表示\(z^{[1](1)},z^{[1](2)},z^{[1](3)}...z^{[1](m)}\)的列向量堆叠成的矩阵,以下类同。

下图写了主要的推导过程:

公式1.44:

\(dZ^{[2]}=A^{[2]}-Y\;,\;dW^{[2]}={\frac{1}{m}}dZ^{[2]}{A^{[1]}}^{T}\)

公式1.45:

\(L = {\frac{1}{m}}\sum_i^n{L(\hat{y},y)}\)

公式1.46:

\(db^{[2]} = {\frac{1}{m}}np.sum(dZ^{[2]},axis=1,keepdims=True)\)

公式1.47:

\(\underbrace{dZ^{[1]}}_{(n^{[1]}, m)} = \underbrace{W^{[2]T}dZ^{[2]}}_{(n^{[1]}, m)}*\underbrace{g[1]^{'} (Z^{[1]})}_{(n^{[1]}, m)}\)

公式1.48:

\(dW^{[1]} = {\frac{1}{m}}dZ^{[1]}x^{T}\)

公式1.49:

$db^{[1]} = {\frac{1}{m}}np.sum(dZ^{[1]},axis=1,keepdims=True) $

反向传播的推导是机器学习领域最难的数学推导之一,矩阵的导数要用链式法则来求,如果这篇博客理解不了也没大的关系,只要有这种直觉就可以了。还有一点,就是初始化你的神经网络的权重,不要都是0,而是随机初始化。

标签:intuition,frac,公式,da,入门篇,Backpropagation,dz,维度,vdots
From: https://www.cnblogs.com/oten/p/17845614.html

相关文章

  • Redis入门篇(一)
    初学Redis简介以及入门一.Redis的介绍1.什么是redis?Redis(RemoteDictionaryServer)是一个开源的内存数据结构存储系统。它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。与传统的关系型数据库相比,Redis是一种更加快速高效的数据存储方式。Redis在内存中存......
  • 神经网络入门篇:神经网络的梯度下降(Gradient descent for neural networks)
    神经网络的梯度下降在这篇博客中,讲的是实现反向传播或者说梯度下降算法的方程组单隐层神经网络会有\(W^{[1]}\),\(b^{[1]}\),\(W^{[2]}\),\(b^{[2]}\)这些参数,还有个\(n_x\)表示输入特征的个数,\(n^{[1]}\)表示隐藏单元个数,\(n^{[2]}\)表示输出单元个数。在这个例子中,只介绍过的......
  • 神经网络入门篇:详解向量化实现的解释(Justification for vectorized implementation)
    向量化实现的解释先对几个样本计算一下前向传播,看看有什么规律:公式1.16:\(z^{[1](1)}=W^{[1]}x^{(1)}+b^{[1]}\)\(z^{[1](2)}=W^{[1]}x^{(2)}+b^{[1]}\)\(z^{[1](3)}=W^{[1]}x^{(3)}+b^{[1]}\)这里,为了描述的简便,先忽略掉\(b^{[1]}\)后面将会看到利用Python的......
  • 神经网络入门篇:详解多样本向量化(Vectorizing across multiple examples)
    多样本向量化与上篇博客相联系的来理解逻辑回归是将各个训练样本组合成矩阵,对矩阵的各列进行计算。神经网络是通过对逻辑回归中的等式简单的变形,让神经网络计算出输出值。这种计算是所有的训练样本同时进行的,以下是实现它具体的步骤:图1.4.1上篇博客中得到的四个等式。它们......
  • 神经网络入门篇:详解计算一个神经网络的输出(Computing a Neural Network's output)
    一个神经网络的输出首先,回顾下只有一个隐藏层的简单两层神经网络结构:图1.3.1其中,\(x\)表示输入特征,\(a\)表示每个神经元的输出,\(W\)表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。神经网络的计算关于神经网络是怎......
  • 神经网络入门篇:详解神经网络概述和表示
    神经网络概述(NeuralNetworkOverview)先开始快速浏览一下如何实现神经网络。上篇博客了解了逻辑回归,了解了这个模型(见图1.1.1)如何与下面公式1.1建立联系。图1.1.1:公式1.1:\[\left. \begin{array}{l} x\\ w\\ b \end{array} \right\} \implies{z={w}^Tx+b}\]如上所......
  • 入门篇-其之八-常用类的简单使用
    本文中使用到的工具是IntellijIDEA和JDK8,需要安装两款工具的请查看这两篇教程:点我查看安装JDK8/11/17教程、点我查看安装IntellijIDEA教程。一、控制台输入类Scanner假设今天我想在瓜摊买一个西瓜(西瓜的重量是10斤),西瓜两块钱一斤,此时使用Java程序代码如下:/***计算西瓜......
  • ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑
    ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑1.Elasticsearch产生背景大规模数据如何检索如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题:1)用什么数据库好?(mysql、oracle、mongodb、hbase…)2)如......
  • 计算机图像编码入门篇(下)
    前言本文旨在为初学者提供有关计算机图像编码的基础知识,以帮助他们初步理解计算机中图像编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。文中部分内容参考ChatGPT,在此感谢ppword的支持。四、YUV色彩空间1、YUV和YCbC的关系YUV是编译true-color颜色空......
  • 入门篇-其之六-Java运算符(中)
    祝所有程序员,1024节日快乐!!!......