3B1B深度学习系列视频学习笔记

简介: 本人学习这一知识点主要是为未来继续学习深度学习相关知识做铺垫。我本人有一定的机器学习基础,学过梯度下降等基本概念。本文是基于本人的背景知识所做,因此详略上可能不完全满足您的要求,如有解释不清之处可以直接评论。其他所叙谬误也可以直接评论。我是CSDN常驻居民,经常看账号的,回复飞快。

Part 1:深度学习之神经网络的结构


  1. 本课程中讲的是最简单的多层感知器MLP
  2. 神经元Neuron:可以视为装有一个数字(激活值0-1之间)的容器

在MNIST例子中,第一层神经元就是所有的像素值。

最后一层10个神经元代表0-9这十个数字(系统认为输入的图像对应着哪个数字的可能性)。

  1. 神经网络中信号的传递方式,是每一层数字逐渐向后传递

在示例中,就是每一层的图像(模式)逐渐向下一层传递,输出层最亮的神经元就代表神经网络的选择。

  • 计算第一步:对每一条边赋权,对每一个神经元,计算出其上一层与之相连的神经元的激活值和对应权的加权和

理解这个权:可以将其想象为图像像素表格中的阈值,越接近0则其连接的神经元越不影响结果,越接近1则越重要(这些接近1的神经元组成的图案,就是要识别的模式)(这种接近1的神经元被称为激发神经元),这样能在出现模式时达到加权和最大的效果


  • 计算第二步:将加权和转化到0-1之间,如使用sigmoid函数

image.png

这样就会得到一个对加权和“有多正”的打分

image.png

  • 为了防止过早激活(如希望加权和大于10时才为正),添加一个偏置bias

image.png

  • 加权和说明下一层神经元关注什么模式,偏置说明加权和要多大时神经元的激发才有意义


 4.整个神经网络分层,是试图将具象的任务拆分为抽象的层级,由每一层完成。

我们的理想状态是隐藏层最后一层每个神经元各能识别一种模式,到输出层就判断这些模式组合对应的输出即可。隐藏层倒数第二层则识别出组成这些模式的部分……以此类推。

(当然真实的网络不会像想象那样识别出短边→长边→整个数字这么具体清晰)


  1. learning的过程就是学到一大堆权重和偏置的过程


  1. 加权和的矩阵表示(下标是神经元编号,上标是层数)

image.png

这个sigmoid函数是对每个元素取一次sigmoid

image.png


这样就能更简洁地表达网络各层间激活值的转化:

image.png


  1. 将每个神经元看作一个函数更准确:输入是上一层神经元的激活值,输出是0-1之间的值。事实上整个神经网络就是个函数,输入输入值,输出输出层的向量


  1. 其实激活函数现在用sigmoid的少,ReLU(线性整流单元)的多sigmoid学得慢

ReLU在特别深的网络上表现较好

image.png


Part 2:深度学习之梯度下降法


  • 神经元之间连接的权重类似于连接的强弱,偏置值表明神经元是否容易被激活
  • 在训练神经网络前先随机设置权重和偏置值,然后根据下面所讲述的方式来逐步更新参数,最终学到所需的参数
  • 代价函数Cost Function:对每一个训练样本来说,是输出向量与真实向量每个元素差值求平方的总和;对整个网络来说是所有训练样本的代价的平均值(经验风险),衡量这个模型有多烂

这个代价函数的输入是全部的参数(权重和偏置),输出代价(一个标量),参数是若干训练样本

我们希望通过调整参数,使得在所有训练样本上的这个代价函数最小

  • 求函数最小值的方法:通过梯度下降获得函数的局部最小值local minima(在实践中可以使每步的大小和梯度成比例,有助于防止调过头)
  • 为了能够进行梯度下降,代价函数需要是平滑的(因为神经网络中的激活值是连续的)
  • 对参数向量求梯度后,得到负梯度值向量。

负梯度值向量的每个值衡量对应参数改变后对代价函数结果的影响程度(改变哪些参数,代价下降更快)(代价函数对这个参数有多敏感)(修改这个参数的性价比)


Part 3:深度学习之反向传播算法


我的理解是:反向传播就是从最后一层开始,通过后一层梯度来计算前一层梯度,一直往前推,这样一个过程。

本来我们想计算一个参数的梯度,需要计算它后面网络层的相应梯度,这是一个递归问题,所以直接从最后一层开始算,这样前面的网络层梯度就可以用后面层的梯度直接计算得到结果。一层层往前推,直到算完结果。所以叫反向传播。

推出梯度后就可以根据梯度下降算法进行参数更新。


……虽然PyTorch的autograd可以自动干这件事所以其实在实践中不需要应用原理就是了。


上篇:直观理解反向传播

  • 理论上,由于代价函数的计算是基于所有训练数据的,所以在梯度下降时也需要用所有训练数据来计算梯度。以下首先基于此假设进行讲解,在后文讲述具体对此问题的处理方式。
  • 在一次训练后,每个训练样本都有对应的输出层神经元和真实输出。我们想要通过改变参数而使二者接近,也就是降低代价函数。
  • 对某一希望获得高激活值的神经元来说,与它连接的前一层神经元中,激活值较高的神经元与之相连的权重如果提高,对它激活值的提高比其他权重的提高更有效。

因此这个神经元希望:偏置↑,权重↑(与对应前一层神经元激活值成比例),前一层神经元激活值↑(与对应权重成比例)

其他神经元对此的期待可能不一样。最后将同层所有神经元的期待加起来。

这样一层层反向传播,每一层都得到对上一层神经元激活值的期待

对所有训练样本进行反向传播,最后将所有参数的改变值求平均(得到的结果是负梯度乘一个常数)

  • 随机梯度下降:将所有训练样本分成很多minibatch,对每个minibatch进行上一步所说的反向传播(能得到近似值)
  • Human-in-the-loop approach:人工打标


有多少智能,背后就有多少人工


下篇:反向传播的微积分原理

  • 以一个四层的、每层只有一个神经元的简化网络来举例
  • 我们需要理解代价函数对各个参数有多敏感(微小扰动,导数/偏导数)

image.png

参数之间逐层影响的形式如图所示:

image.png

这个链条可以往上继续延伸,循环往复其影响因素

image.png

image.png


  • 每一层有多个神经元的非简化情况:

image.png

image.png



相关文章
|
7月前
|
机器学习/深度学习 监控 算法
m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
100 0
|
7月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真
|
机器学习/深度学习
深度学习模型调参技巧分享 视频讲解代码实战
深度学习模型调参技巧分享 视频讲解代码实战
82 0
|
7月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
|
2月前
|
机器学习/深度学习 自然语言处理 监控
深度学习之视频摘要生成
基于深度学习的视频摘要生成是一种通过自动化方式从长视频中提取关键片段,生成简洁且有代表性的视频摘要的技术。其目的是在保留视频主要内容的基础上,大幅缩短视频的播放时长,方便用户快速理解视频的核心信息。
143 7
|
2月前
|
机器学习/深度学习 数据处理 数据库
基于Django的深度学习视频分类Web系统
基于Django的深度学习视频分类Web系统
66 4
基于Django的深度学习视频分类Web系统
|
2月前
|
机器学习/深度学习 运维 监控
深度学习之视频内容理解
基于深度学习的视频内容理解(Video Content Understanding, VCU)是一项关键技术,旨在通过神经网络模型自动分析、解读和提取视频中的语义信息。
149 10
|
2月前
|
机器学习/深度学习 监控 人机交互
深度学习之视频中的姿态跟踪
基于深度学习的视频姿态跟踪是一项用于从视频序列中持续检测和跟踪人体姿态的技术。它能够识别人体的2D或3D关键点,并在时间维度上进行跟踪,主要应用于人机交互、体育分析、动作识别和虚拟现实等领域。
66 3
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】python之人工智能应用篇——视频生成技术
视频生成技术是一种基于深度学习和机器学习的先进技术,它使得计算机能够根据给定的文本、图像、视频等单模态或多模态数据,自动生成符合描述的、高保真的视频内容。这种技术主要依赖于深度学习模型,如生成对抗网络(GAN)、自回归模型(Auto-regressive Model)、扩散模型(Diffusion Model)等。其中,GAN由两个神经网络组成:一个生成器用于生成逼真的图像或视频,另一个判别器用于判断生成的图像或视频是否真实。通过不断的对抗学习,生成器和判别器共同优化,以产生更高质量的视频。
115 2
|
7月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)

热门文章

最新文章