一篇博客搞定深度学习基本概念与反向传播

news2024/11/18 15:31:24

目录

  • 深度学习的发展过程

  • 深度学习的步骤

      • 定义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/70158.html

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

相关文章

ESP32入门基础之资源管理

文章目录1 ESP32-DevKitC V4(ESP32-WROVER-E&IE)板载资源2 FreeRTOS任务内存使用监控1 ESP32-DevKitC V4(ESP32-WROVER-E&IE)板载资源 ESP32-DevKitC V4 入门指南 esp32-devkitc开发板参数对比 在工程中使用函数查询可用…

HTML学生个人网站作业设计:基于HTML+CSS+JavaScript设计多用途的图文展示博客HTML模板(16页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

IPv4/IPv6协议分析 实验报告

实验名称: IPv4/IPv6协议分析实验 一、实验预习 1、实验目的 利用抓包工具(Wireshark/Windump/Sniffer)抓取IPv4/IPv6分组,以进一步熟悉和理解IPv4/IPv6格式规范与IP协议的工作原理 2、实验内容…

HBase Windows 安装

一、写在前面 在安装HBase之前,我们需要先安装JDK和Hadoop,具体JDK和Hadoop的安装我前面已经做过了,需要的话,请看我的另一篇博客:Hadoop Windows 安装 还是那句话,在安装HBase之前,我们需要搞清…

IDEA 一些实用性的设置(Doing)

文章目录设置鼠标滑轮修改字体大小设置自动导包和删包功能设置显示代码行号和方法间的间隔符设置忽略大小写提示设置文件多行显示tabs设置默认字体、字体大小和行间距设置鼠标滑轮修改字体大小 file——setting(快捷键:CtrlAltS)——editor—…

ELK(搜索与分析技术栈)

一、介绍 ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下&#…

HTML学生个人网站作业设计成品 HTML+CSS肖战明星人物介绍网页 web结课作业的源码

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

并发与竞争(三)自旋锁

文章目录自旋锁的概念什么是自旋锁?自旋锁的API函数(一)自旋锁的使用步骤其他自旋锁API函数(二)自旋锁的注意事项内核中自旋锁的实例自旋锁死锁写代码临界区在哪?最简单的实现逻辑完整实现自旋锁的概念 什…

Python pip更新教程(两种方式)

1. 直接采用命令行模式更新 1.1 搜索框搜索cmd,然后以管理员模式打开 1.2 执行命令 python -m pip install --upgrade pip1.3 查看更新后的版本 pip --version注:如果更新失败,可能是因为网络的问题,则选择第二种更新方法。 2.…

零基础怎么入门python

本文由正厚软件陈老师提供 “编程零基础,可以学习Python吗?” 这是很多初学者经常问的一个问题,我的回答是可以!现在很多小学、初中也开始学习编程语言,选择的入门语言就是python。 python其实和学中文没什么区别&…

Windows 10关闭快速启动的方法

在Windows 8及其更高版本的Windows系统中,快速启动功能会被默认开启,开机时间也能大大缩短。但是在某些情况下,快速启动功能的开启会带来部分系统问题,从而无法正常使用电脑。那么我们该如何关闭快速启动呢? 快速启动的…

Redis06:Redis进阶部分

Redis进阶部分Redis配置文件详解Redis持久化持久化之RDB操作rdb优缺点Redis配置文件详解 Redis持久化 Redis是内存数据库,如果不将内存中的数据状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供…

taro3.3.12升级至3.5.8解决支付宝小程序启动基础库2.0构建报错---slot 的祖先节点中未找到 element

项目:taro3 vue3 taro版本:3.3.12 支付宝在上传版本时要求用基础库2.0编译,否则报错,启动2.0编译后, 会有如下错误: 解决方案:社区里面说是要升级taro >3.4.0 步骤1、查看taro版本 – …

bmp位图格式详细介绍-1/4/8/16/24/32bit、存储格式等

目录 一、概述 二、.bmp格式文件详解  2.1 位图文件头  2.2 位图信息头  2.3 调色板  2.4 位图数据 三、位图的其他知识  3.1 压缩的位图 一、概述 bmp是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,随…

FFplay音频滤镜分析

音频流的 滤镜是通过 configure_audio_filters() 函数来创建的,因为 ffplay 为了代码的通用性,即便命令行参数不使用滤镜,AVFrame 也会过一遍 空滤镜做下样子。 configure_audio_filters() 函数的流程图如下: configure_audio_fi…

HCIA OSI参考模型

一、前言 OSI七层模型是我们耳熟能详的,其实没有太多可以说的地方,我这里就按自己的理解做一下汇总。 二、OSI 七层模型 OSI七层模型是由“国际标准化组织”制定的“参考”模型。 1、物理层 实际上就是对网线、光纤等“连接”介质进行规定&#xff…

初学者必看的3D建模避坑技巧,高效3D制作

近来,随着3D技术的进步被认为任何对 3D 建模主题感兴趣的人打开了机会之门。现在,只要您拥有一台计算机和良好的空间分析技能,您就可以通过时间和持续练习来完善您的 3D 雕刻方式。 也就是说,该领域的许多初学者往往会犯建模错误&…

信号傅里叶变换后频谱刻度设置问题-附Matlab代码

一、概述 时域信号经FFT变换后得到了频谱,在绘制频谱图时还必须设置正确的频率刻度,这样才能从图中得到正确的结果。 二、实例分析 有一余弦信号,信号频率为30Hz,采样频率128Hz,信号长128,原始信号如下图…

【JavaScript+自然语言处理+HTML+CSS】实现Web端的智能聊天问答客服实战(附源码 超详细必看)

需要源码请点赞关注收藏后评论区留言私信~~~ 智能客服的部署方式比较多样化,可以作为组件嵌入到其他应用程序,也可以部署到定制网站,下面分别介绍如何新创建智能客服应用,从而使其能够集成为网站功能的一部分,以及如何…

给你讲明白MySQL的乐观锁和悲观锁

乐观锁与悲观锁是一种广义上的概念。不管是 Java 语言,也或者是其他语言以及数据库都有这类概念对应的实际应用。想要学习乐观锁和悲观锁就要学习他们的基本知识,那么下面我们来学习一下。 锁 生活中:锁在我们身边无处不在,比如我…