一篇博客搞定深度学习基本概念与反向传播
创始人
2024-03-25 05:21:09
0

目录

  • 深度学习的发展过程

  • 深度学习的步骤

      • 定义Neural NetWork

        • 全前向连接

        • softmax介绍

      • 定义loss函数

      • 定义优化器选择最优参数optimization

        • 反向传播Backpropagation

深度学习介绍

反向传播视频

深度学习的发展过程

在这里插入图片描述

  • perceptron(liner model)感知机——线性模型

  • perceptron is limited 线性模型是有限的,不能表示一些复杂的折线变化或者一些曲线变化

  • multi layer perceotron 利用多个隐含层去贴合复杂的折现变化或者曲线

  • backpropagation 反向传播,用于更新参数

  • a layer can solve everthing 只用一层,这层无限宽即可解决所有问题——wide learning

  • RBM initialization 用于optimization时的设置参数初始化值

  • GPU加速

  • 用于语音识别方面

  • 用于图像处理

深度学习的步骤

在这里插入图片描述
同机器学习一样,仍包括 定义带有未知参数的函数(Neural Network)定义损失函数与选择最优参数三个步骤。

定义Neural NetWork

全前向连接

下面以激活函数为sigmoid为例

在这里插入图片描述
在这里插入图片描述

z=W×x+b,a=fA(z),之后z′=W′×a+b′,a′=fA(z′)z=W \times x+b,a=f_A(z) ,之后z'=W' \times a+b',a'=f_A (z') z=W×x+b,a=fA​(z),之后z′=W′×a+b′,a′=fA​(z′)

📌给定神经网络network structure不同的参数,会产生不同的函数(这些函数对于同一个向量的输 入会有不同的向量输出)。也就是说我们可以用network定义一个函数集

在这里插入图片描述

  • 神经网络大致包含输入层、隐含层、输出层。其中隐含层和输出层都是由若干个神经元(利用激活函数计算一次)组成。输入层无神经元,只是输入的向量。

  • 含有多个隐含层的神经网络即称之为深度学习Deep Learning

  • 输出层做Multi-class Classifier进行多级分类。输出层利用前一个隐含层的输出结果,通过SoftMax函数得到最后的输出。

  • 需要定义的超参数有:输入层的维度,隐含层的个数,隐含层内神经元的个数,输出层的维度,用什么样的激活函数

softmax介绍

https://zhuanlan.zhihu.com/p/105722023

softmax函数是与hardmax相对应的。我们一般找数组中最大的元素值即用到的是hardmax。hardmax最大的特点就是只选出其中一个最大的值,即非黑即白。而softmax则是对每一个结果都赋予可能的概率值(0~1),表示属于每个类别的可能性。一般选取所有结果中概率值最大的为预测结果。其基本公式如下:

softmax(zi)=e(zi)∑j=1ne(zj),zi为第i个结点的最后一个隐含层的输出值softmax(z_i)=\frac {e^(z_i)} {\sum _{j=1} ^n e^(z_j) },z_i为第i个结点的最后一个隐含层的输出值 softmax(zi​)=∑j=1n​e(zj​)e(zi​)​,zi​为第i个结点的最后一个隐含层的输出值

定义loss函数

在这里插入图片描述
在这里插入图片描述

采用softmax,一般的loss函数定义为交叉熵损失函数。将某个样本对应得到的分类结果与相对应的hardmax所得到的结果作交叉熵。其中hardmax的结果为y’,softmax的结果为y,求单个样本的交叉熵公式如下:

C(y,y′)=−∑i=1n(yi′lnyi),n为共多少个类别C(y,y')=- \sum _{i=1} ^n(y'_ilny_i),n为共多少个类别 C(y,y′)=−i=1∑n​(yi′​lnyi​),n为共多少个类别

那么一次batch的loss即是

totalloss=∑i=1nCi(y,y′),n为batch内样本数目total_{loss}=\sum _{i=1} ^n C_i(y,y'),n为batch内样本数目 totalloss​=i=1∑n​Ci​(y,y′),n为batch内样本数目

定义优化器选择最优参数optimization

仍采用gradient方法:

θi+1=θi−η×∂Loss∂θi\theta_{i+1}=\theta_i-\eta \times \frac{\partial Loss}{\partial \theta_i} θi+1​=θi​−η×∂θi​∂Loss​

反向传播Backpropagation

https://zhuanlan.zhihu.com/p/115571464

反向传播仍是采用Gradient Descent。它只是一种利用链式求导法则快速计算未知参数对loss偏导的方法

在这里插入图片描述

  • 链式求导法则

    z=h(y),y=g(x)则dzdx=dzdy×dydxz=h(y),y=g(x) 则 \frac {dz} {dx}= \frac {dz} {dy} \times \frac {dy}{dx} z=h(y),y=g(x)则dxdz​=dydz​×dxdy​

    z=k(x,y),y=h(s),x=g(s)则dzds=∂z∂x×dxds+∂z∂y×dydsz=k(x,y),y=h(s),x=g(s) 则 \frac {dz}{ds}=\frac{\partial z}{\partial x} \times \frac {dx}{ds} +\frac{\partial z}{\partial y} \times \frac {dy}{ds} z=k(x,y),y=h(s),x=g(s)则dsdz​=∂x∂z​×dsdx​+∂y∂z​×dsdy​

  • 计算未知参数对loss的偏导

在这里插入图片描述

也就是要求每个样本的参数对该样本结果的交叉熵的偏导

在这里插入图片描述

根据链式求导法则,参数w11,w21对交叉熵C的偏微分如下:

∂C∂w11=∂C∂z1×∂z1∂w11,∂C∂w21=∂C∂z1×∂z1∂w21\frac{\partial C}{\partial w_{11}}=\frac{\partial C}{\partial z_1} \times \frac {\partial z_1}{\partial w_{11}} ,\frac{\partial C}{\partial w_{21}}=\frac{\partial C}{\partial z_1} \times \frac {\partial z_1}{\partial w_{21}} ∂w11​∂C​=∂z1​∂C​×∂w11​∂z1​​,∂w21​∂C​=∂z1​∂C​×∂w21​∂z1​​

前向传播:

求导参数w11,w21对z的微分,这很简单,因为

z=x1×w11+x2×w21+b1,则∂z1∂w11=x1,∂z1∂w21=x2z=x_1 \times w_{11} + x_2 \times w_{21} +b_1,则 \frac {\partial z_1}{\partial w_{11}}=x_1,\frac {\partial z_1}{\partial w_{21}}=x_2 z=x1​×w11​+x2​×w21​+b1​,则∂w11​∂z1​​=x1​,∂w21​∂z1​​=x2​

因偏导结果为参数所接的输入值,按照既定方向即可得到,故称为前向传播

在这里插入图片描述

反向传播

求导z1对C的偏微分,则需要再进行链式求导

∂C∂z1=∂C∂a1×∂a1∂z1,而∂a1∂z1根据确定的激活函数即可得到该值——常数\frac {\partial C}{\partial z_1}=\frac {\partial C}{\partial a_1} \times \frac {\partial a_1}{\partial z_1},而\frac {\partial a_1}{\partial z_1}根据确定的激活函数即可得到该值——常数 ∂z1​∂C​=∂a1​∂C​×∂z1​∂a1​​,而∂z1​∂a1​​根据确定的激活函数即可得到该值——常数

∂C∂a1=∂C∂z1′×∂z1′∂a1+∂C∂z2′×∂z2′∂a1,z1′=w11′×a1+w21′×a2,∂z1′∂a1=w11′\frac {\partial C}{\partial a_1}=\frac {\partial C}{\partial z_1'} \times \frac {\partial z_1'}{\partial a_1}+\frac {\partial C}{\partial z_2'} \times \frac {\partial z_2'}{\partial a_1},z_1'=w_{11}' \times a_1 + w_{21}' \times a_2,\frac {\partial z_1'}{\partial a_1}=w_{11}' ∂a1​∂C​=∂z1′​∂C​×∂a1​∂z1′​​+∂z2′​∂C​×∂a1​∂z2′​​,z1′​=w11′​×a1​+w21′​×a2​,∂a1​∂z1′​​=w11′​

∂C∂z1=σ′(z1)×(w11′∂C∂z1′+w12′∂C∂z2′)\frac {\partial C}{\partial z_1}=\sigma'(z_1) \times (w_{11}'\frac {\partial C}{\partial z_1'}+w_{12}'\frac {\partial C}{\partial z_2'}) ∂z1​∂C​=σ′(z1​)×(w11′​∂z1′​∂C​+w12′​∂z2′​∂C​)

而∂C∂z1′=∂C∂a1′×∂a1′∂z1′,后者即又是根据激活函数的导数求得的常数,前者又递推而\frac {\partial C}{\partial z_1'}=\frac {\partial C}{\partial a_1'} \times \frac {\partial a_1'}{\partial z_1'},后者即又是根据激活函数的导数求得的常数,前者又递推 而∂z1′​∂C​=∂a1′​∂C​×∂z1′​∂a1′​​,后者即又是根据激活函数的导数求得的常数,前者又递推

因此为了求z1对C的偏导,可以反向传播,利用前向传播求出的每个z值,根据所选定的激活函数的导函数求出相对应的导函数值,以及最后隐含层输出的值对应的loss函数导函数的导函数值即可链式乘法算出z1对C的偏导

在这里插入图片描述

下面进行两种反向传播情况的介绍:

情况一:只有一层隐藏层
在这里插入图片描述

情况二:中间包含多个隐藏层

按照情况一的过程,多次递推,下面以中间包含两层的隐含层为例

在这里插入图片描述

反向传播与前向传播总结

相关内容

热门资讯

用心做好每一块电池的欣旺达,因... 这两天国内动力电池生产厂商欣旺达遇到麻烦事了,因其所生产的电芯存在质量问题被威睿电动汽车技术(宁波)...
以案为鉴筑防线 以审促廉扬清风... 为充分发挥以案释法、以案说纪的警示教育作用,进一步加强党风廉政建设,提高党员干部的法纪意识和廉洁意识...
新加坡国立大学东亚研究所高级研... 由三亚市人民政府主办,《财经》杂志、财经网、《财经智库》、三亚中央商务区管理局、三亚经济研究院承办的...
原创 全... 在国家有关调查力量进驻南京之后,一个并不显眼、却耐人寻味的现象悄然出现了。 短时间内,全国多地博物馆...
跨境金融研究院院长王志毅:离岸... 由三亚市人民政府主办,《财经》杂志、财经网、《财经智库》、三亚中央商务区管理局、三亚经济研究院承办的...
原告向法官出示证据,右下角赫然... 近日,湖北孝感大悟法院民二庭在审理一起房屋租赁合同纠纷案时,精准识破原告方利用AI技术伪造证据的行为...
美国纽约州出台法律约束“成瘾性... 美国纽约州州长凯茜·霍楚尔26日宣布,根据该州新出台的一项法律,具备无限刷新、自动播放和算法推送功能...
富安娜理财纠纷一审落槌,中信证... 乐居财经 李兰经历近三年后,富安娜(002327.SZ)理财纠纷有了新进展。 12月25日,富安娜发...
从合作伙伴到对簿公堂:威睿起诉... 12月26日,欣旺达发布公告,其全资子公司欣旺达动力科技股份有限公司(下称“欣旺达动力”)因买卖合同...
突发!俄称已控制库皮扬斯克;泽... 俄乌,突传大消息! 俄国防部称已控制库皮扬斯克 俄罗斯国防部12月27日在每日例行通报中说,库皮扬斯...