一篇博客总结深度学习与反向传播

news2024/11/19 11:20:20

目录

  • 深度学习的发展过程

  • 深度学习的步骤

      • 定义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 = f A ( z ) , 之 后 z ′ = W ′ × a + b ′ , a ′ = f A ( 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),表示属于每个类别的可能性。一般选取所有结果中概率值最大的为预测结果。其基本公式如下:

s o f t m a x ( z i ) = e ( z i ) ∑ j = 1 n e ( z j ) , z i 为 第 i 个 结 点 的 最 后 一 个 隐 含 层 的 输 出 值 softmax(z_i)=\frac {e^(z_i)} {\sum _{j=1} ^n e^(z_j) },z_i为第i个结点的最后一个隐含层的输出值 softmax(zi)=j=1ne(zj)e(zi),zii

定义loss函数

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

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

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

那么一次batch的loss即是

t o t a l l o s s = ∑ i = 1 n C i ( y , y ′ ) , n 为 b a t c h 内 样 本 数 目 total_{loss}=\sum _{i=1} ^n C_i(y,y'),n为batch内样本数目 totalloss=i=1nCi(y,y),nbatch

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

仍采用gradient方法:

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

反向传播Backpropagation

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

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

在这里插入图片描述

  • 链式求导法则

    z = h ( y ) , y = g ( x ) 则 d z d x = d z d y × d y d x z=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 ) 则 d z d s = ∂ z ∂ x × d x d s + ∂ z ∂ y × d y d s z=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=xz×dsdx+yz×dsdy

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

在这里插入图片描述

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

在这里插入图片描述

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

∂ C ∂ w 11 = ∂ C ∂ z 1 × ∂ z 1 ∂ w 11 , ∂ C ∂ w 21 = ∂ C ∂ z 1 × ∂ z 1 ∂ w 21 \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}} w11C=z1C×w11z1,w21C=z1C×w21z1

前向传播:

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

z = x 1 × w 11 + x 2 × w 21 + b 1 , 则 ∂ z 1 ∂ w 11 = x 1 , ∂ z 1 ∂ w 21 = x 2 z=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,w11z1=x1,w21z1=x2

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

在这里插入图片描述

反向传播

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

∂ C ∂ z 1 = ∂ C ∂ a 1 × ∂ a 1 ∂ z 1 , 而 ∂ a 1 ∂ z 1 根 据 确 定 的 激 活 函 数 即 可 得 到 该 值 — — 常 数 \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}根据确定的激活函数即可得到该值——常数 z1C=a1C×z1a1,z1a1

∂ C ∂ a 1 = ∂ C ∂ z 1 ′ × ∂ z 1 ′ ∂ a 1 + ∂ C ∂ z 2 ′ × ∂ z 2 ′ ∂ a 1 , z 1 ′ = w 11 ′ × a 1 + w 21 ′ × a 2 , ∂ z 1 ′ ∂ a 1 = w 11 ′ \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}' a1C=z1C×a1z1+z2C×a1z2,z1=w11×a1+w21×a2,a1z1=w11

∂ C ∂ z 1 = σ ′ ( z 1 ) × ( w 11 ′ ∂ C ∂ z 1 ′ + w 12 ′ ∂ C ∂ z 2 ′ ) \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'}) z1C=σ(z1)×(w11z1C+w12z2C)

而 ∂ C ∂ z 1 ′ = ∂ C ∂ a 1 ′ × ∂ a 1 ′ ∂ z 1 ′ , 后 者 即 又 是 根 据 激 活 函 数 的 导 数 求 得 的 常 数 , 前 者 又 递 推 而\frac {\partial C}{\partial z_1'}=\frac {\partial C}{\partial a_1'} \times \frac {\partial a_1'}{\partial z_1'},后者即又是根据激活函数的导数求得的常数,前者又递推 z1C=a1C×z1a1,

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

在这里插入图片描述

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

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

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

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

在这里插入图片描述

反向传播与前向传播总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识图谱-KGE-语义匹配-双线性模型-2018:CP

【paper】 Canonical Tensor Decomposition for Knowledge Base Completion【简介】 这篇是 Facebook 法国巴黎 AI 研究中心发表在 ICML 2018 上的文章,是对传统的张量分解方法 CP(Canonical Tensor Decomposition)做的分析改进。对传统的几个…

泛微文书定确保电子档案移交接收过程:真实、完整、可用和安全

电子档案的移交接收是电子档案管理流程的重要环节之一。 国家档案局发布的《电子档案移交接收操作规程》中明确了电子档案移交接收的工作流程,规定了电子档案移交接收准备工作和电子档案移交接收操作的要求。 在移交接收过程中,如何快速处理大量的电子…

当软件测试迭代测试时间不够时该如何去做好质量控制呢?

大家好,今天我们一起来聊聊,当我们在工作中尤其是快速迭代版本中测试版本的时间被压缩的很短,甚至不够完成用例执行时怎么去做好质量控制呢? 在我们的日常生活中导致软件测试时间不够的原因有很多,那么在这些不确定的人…

客快物流大数据项目(九十二):ClickHouse的MergeTree系列引擎介绍和MergeTree深入了解

文章目录 ClickHouse的MergeTree系列引擎介绍和MergeTree深入了解 一、MergeTree系列引擎介绍 二、​​​​​​​MergeTree深入了解 1、创建MergeTree表的说明 2、创建MergeTree引擎的表 3、删除MergeTree引擎的表 ClickHouse的MergeTree系列引擎介绍和MergeTree深入了解…

【数据库数据恢复】MySQL数据库误删除未备份的数据恢复案例

MySQL数据库属于关系型数据库。SQL是一种用于操作关系型数据库的结构化语言。关系型数据库就是指在关系模型的基础上建立起来的数据库,是一种借助了集合代数等一些数学方法和数学概念处理数据的数据库。 MySQL数据库具有体积小,速度快,性价比…

【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.2 界面布局

本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV1fR4y1k7Kt 上节课,初步展示了本章要实现的效果。本节课开始,就从零新建工程,把效果一一实现 首先先把界面搭建起来,也就是把用到的 Label、ComboB…

R语言实现向量自回归VAR模型

澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到刺激,收入增加了。 最近我们被客户要求撰写关于…

[附源码]计算机毕业设计JAVA整形美容咨询网站

[附源码]计算机毕业设计JAVA整形美容咨询网站 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

企业为什么要做知识管理?如何进行知识管理?

今天将和大家聊一聊如何通过5大步骤,帮助企业进行知识管理与知识沉淀。 近年来,随着建设的深入,IT不仅成为企业运营的基础,而且在ERP、CRM、OA等信息系统内沉淀的大量知识成为了企业创新的知识源泉,于是知识管理逐渐提…

第十四届蓝桥杯集训——JavaC组第一篇——Eclipse的使用

Eclipse是一个非常经典的开发工具,我们小时候使用的就是这个工具,转眼就这么多年了,依然还在使用,说明这个软件的健壮性还是非常强的。 本博客讲解Eclipse这个IDE的使用: 目录 Eclipse的基础使用 1、常用菜单中英…

C语言有必要学的很深入细致吗?

c语言作为一门高级语言来说,它本身的知识点是很少的,很容易掌握,它没有诸如『类,接口,继承,多态,分派,模板』等等唬人的概念,当然不是说你不能通过c实现这些概念而是这个…

【R语言】计算信息份额模型 - Computes information share component share weights

INTRO 最近又重新开始做一些价格发现相关的研究,目前针对不同市场的同种标的之间价格发现作用的度量,大多采用Hasbrouk(1995)开发的基于VECM的信息份额模型,通过计算IS指标和CS指标来度量信息份额和价格发现的贡献程度…

【MySQL自学之路】第2天——关系代数计算【理论知识】

目录 前言 基础名词 关系 候选码 关系运算 传统的集合计算(二目运算) 样例表创建【SQL】 专门的关系运算 后记 销毁已经创建的表 前言 在上一节我们提到了关系型数据库和非关系型数据库之间的关系,我们主要以MySQL关系型数据库为主…

11月更新 | Visual Studio Code Python

我们很高兴地宣布,2022年11月发布的适用于 Visual Studio Code Python 和 Jupyter 扩展现已推出! 此版本包括以下改进: 迁移 isort 扩展 Pylance 默认关闭自动导入 Pylint 和 flake8 扩展 用于笔记本单元调试的“Just My Code” 如果您有…

STL常用排序算法、替换算法、拷贝算法(20221207)

STL的常用算法 概述&#xff1a; 算法主要是由头文件<algorithm> <functional> <numeric> 组成。 <algorithm>是所有STL头文件中最大的一个&#xff0c;涉及比较、交换、查找、遍历等等&#xff1b; <functional>定义了一些模板类&#xff0…

《Linux运维实战:Centos7.6一键离线部署mongodb4.2.23副本集群》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&#xff0c;而作为基础组件中的mongodb针对不同的客户环境需要多次部署&#xff0c;作为一个运维工程师&#xff0c;提升工作效率也是工作中的重要一环。所以我觉得有必要针对mongodb4…

window+deepin双系统安装

说明 参考教程&#xff1a;https://baijiahao.baidu.com/s?id1662960328855347503 特别注意&#xff0c;最好用最新的PE工具&#xff0c;我用的 微PE。因为我弄过一次全盘安装&#xff0c;导致整个硬盘在PE工具中的diskgenius无法识别&#xff0c;最终为U盘安装最新版PE工具后…

中国唯一代表!阿里第三次当选Java全球管理组织最高管理席位

12月7日消息&#xff0c;近日&#xff0c;Java全球管理组织JCP披露了最高执行委员会&#xff08;JCP-EC&#xff09;新成员名单&#xff0c;作为唯一中国代表&#xff0c;阿里巴巴再次连任&#xff0c;任期两年。这是阿里连续三次入选JCP最高管理席位&#xff0c;代表着中国技术…

SpringBoot全局异常@ExceptionHandler无法精确匹配问题分析

这个是我的全局异常处理类&#xff0c;以new ThirdException&#xff08;JSON.toJSONString(obj)&#xff09;形式抛出了这个自定义异常&#xff0c;不管从最底层的方法抛出上层不抛&#xff0c;还是从controller的入口开始都抛出&#xff0c;均无法精确匹配。下面分别是自定义…

云原生底座之上,企业如何借力领跑数字化转型?

导语 | 随着数字化转型的加速&#xff0c;越来越多企业选择“乘云而上”&#xff0c;把云战略提升到了全新的高度&#xff0c;并逐步朝着多云架构加速演进。云原生架构的持续迭代&#xff0c;使得云原生技术的应用层出不穷&#xff0c;无论是互联网公司&#xff0c;还是银行、政…