深度学习基础

本文概述了深度学习的基本概念,包括其解决的问题、应用领域(如医学和AI换脸)、计算机视觉任务中的挑战,以及关键组件如得分函数、损失函数、前向传播、反向传播和神经网络架构的详细解释。特别强调了卷积神经网络、正则化、过拟合解决方法和词向量模型(如CBOW和Skip-gram)。此外,还提到了Keras框架的简化作用。
摘要由CSDN通过智能技术生成

1.深度学习要解决的问题

神经网络不应该称之为一种算法,而是当成特征提取的方法
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
深度学习就是去学什么样的特征是最合适的,有了特征之后,我们可以加其他东西,比如加LR(逻辑回归)做分类,或者传到SVM中…
深度学习解决的一个核心就是怎么样去提取特征

2.深度学习应用领域

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

医学领域
在这里插入图片描述

Ai换脸
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.计算机视觉任务

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

300表示高,100表示宽,3表示颜色通道,比如使用RGB三种颜色
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.视觉任务中遇到的问题

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

5.得分函数

w表示权重参数,起到决定性的作用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
b表示偏置参数,起到一个微调的作用

6.损失函数的作用

3表示三个类别,4表示猫有四个像素点
每个像素点要有一个权重
在这里插入图片描述
在这里插入图片描述
权重有大有小,比如2.1比较大,表示在狗这个类别中,第三个像素点比较重要

这个权重矩阵是优化而来的
比如一开始我可以随机构建一个3*4的矩阵
我们的神经网络就是做一个任务,什么样的W适合当前的任务,我就去改变这个W
在这里插入图片描述
在这里插入图片描述
上面我们的得到的结果就是不好的,比如图片明明就是猫
得到的分却是负的
这里我们就需要一个评判标准来判断好还是不好
在这里插入图片描述
我们神经网络既可以做分类,也可以做回归
唯一的区别就在于整个损失函数是怎么定义的
网络结构是不会变的,做不同的任务就是损失函数不同而已
损失函数,我们希望它越低越好,为0的时候代表没有损失
这里的+1表示我们的一个容忍程度
在这里插入图片描述
损失函数用来衡量当前权重参数,做完一个结果的意思

7.前向传播整体流程

在这里插入图片描述
A百分比产生过拟合,只关注一个局部
B则均匀分布到一个整体中

在这里插入图片描述

Lambda越大,表示不希望过拟合
Lambda小,表示意思意思,大概的消减一下变异

在这里插入图片描述

有输入数据x和权重参数w,通过得分函数f,得到了分值s
选择一个损失函数(hinge loss),加上正则化惩罚项,最后得到当前的损失L
在这里插入图片描述

说到底,最后就是得到一个得分
在这里插入图片描述

跟我们的分类任务还是有点差距,分类任务要得到的我们属于猫这个类的一个概率值
在这里插入图片描述
在这里插入图片描述

我们将一个猫输入其中,得到分值,比如cat是3.2,car是5.1
我们发现3.2和5.9之间的差异其实很小,我们要放大他们之间的一个差异
这里我们通过exp做一个映射,放大他们之间的差距
在这里插入图片描述
下面我们将其转换为概率值,做一个归一化
就是24.5/(24.5+164.0+0.18)=0.13
我们只考虑属于正确类别的概率值,我们希望当前输入的猫的概率越接近1越好
对于损失函数来说,概率值越接近1越没有损失,概率值越接近0损失越大(做的烂)
在这里插入图片描述
总结
输入一个数据,得到一个得分值,得分值做一个exp映射,使其更加明显一些
之后做一个归一化,归一化后用一个对数函数求他的损失
在这里插入图片描述

分类任务就由概率值去计算他的一个损失
回归任务就有得分值去计算一个损失
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.反向传播计算方式

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

9.神经网络整体架构

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

绿色是前向传播的值,红色是反向传播偏导的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.神经网络架构细节

在这里插入图片描述
Input layer有多少圈,代表我们的输入特征有多少个
比如一个人,有年龄age,体重w,身高h三个特征,有三个圈
一个图片由3072个像素点,有3072个特征,3072个圈

在这里插入图片描述
我们无论对数据做什么变换,都是为了让计算机更认识它
比如我们现在有三个特征年龄age,体重w,身高h,计算机可能不太认识他们
我们隐藏层1就将我们的三个特征变为四个特征,使计算机更认识这个数据
这里1就表示为age * 0.1 + w * 0.2 +h * 0.3 , 2、3、4类推
这里的0.1、0.2、0.3并没有什么实际的含义,只是一个数值
在这里插入图片描述

输入层和隐藏层之间的线就是我们的权重参数W1
输入层就是输入数据,batch就是我们一次训练多少数据,一次去迭代几个数据
如果我们指定batch为1,就一个数据一个数据玩
比如我们的输入层是一个1 * 3表示一个样本三个特征
W1就是一个3 * 4的权重参数矩阵,W2类似
到隐藏层2后,我们认为这里作为特征已经足够了,当前我们就使用隐藏层2最终得到的特征得到一个输出结果,我们看一下得到预测结果最终等于多少

我们的神经网络得到的结果好还是不好就是看这里的W1、W2、W3
在这里插入图片描述

我们这里不能用一个W4代替W1W2W3
在这里插入图片描述

因为我们在W1 * W2和W2 * W3之间还要做一个非线性变换(我们找一个非线性函数做映射)
在这里插入图片描述

比如我们这边使用非线性函数max
在这里插入图片描述

11.神经元个数对结果的影响

一般情况下,神经元个数越多,得到的过拟合风险越大
神经多的时候,运行速度相对比较慢
在这里插入图片描述
神经元越多 对其约束就越大 在可视化图像中能更好的把正确结果分离出来 但太多就会导致过拟合现象
在这里插入图片描述
https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html
可以进行可视化展示的一个神经网络

12.正则化和激活函数

处罚力度越小,越符合训练集的结果
在这里插入图片描述
神经元越大,过拟合的风险越大
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Sigmoid函数现在不用了,因为在参数较大或者较小时,梯度难以计算,
约等于0(梯度消失)
在这里插入图片描述

13.神经网络过拟合解决方法

在这里插入图片描述
拿到数据后不能直接输入到神经网络中,要做一个标准化的操作
将数据变到一个中心化(每一个数据的实际坐标值减去均值,得到以圆点为中心对称的结果)
接着就进行数据各个维度的放缩或者扩充(除上它的标准差),
在这里插入图片描述
调节神经网络中,最好不要让不同的权重参数差异过大
我们希望权重参数尽可能稳定一些
我们将初始化后的结果*0.01后
得到的初始化后的结果也都比较小

在这里插入图片描述
在这里插入图片描述
在神经网络训练的阶段中,在每一层杀死一部分神经元
画×的表示这一次的前向传播和反向传播就不带你玩了,保持原来的参数不变
参与的哪些去更新,去变化
这个×是在每一次训练中随机选择的
这里的drop-out相当于一个比例,比如说50%
指在这一次训练中,有一半的神经元是不参与到训练中的

测试阶段是没有必要的

在这里插入图片描述

14.卷积神经网络应用领域

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

15.卷积的作用

在这里插入图片描述
二维到三维
我们输入的数据
比如一个图片,我们在NN中输入的就是784个像素点
在CNN中我们就是输入一个原始的图像28 * 28 * 1
在这里插入图片描述
卷积是提取特征,池化是压缩特征
全连接层通过一组权重参数将输入层和隐藏层连接在一起
全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”。映射到样本标记空间的作用。

在这里插入图片描述
这里我们还是找到最好的权重矩阵W1使我们特征提取的效果最好
绿色就是特征图,图中的数据就是我们特征提取的一个结果

16.卷积特征值计算方法

RGB三颜色通道 32323 3分为3部分;每个颜色通道分别作计算;
最终把每个通道的卷积结果累加
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面实际上只是演示了一个通道,例如B通道

实际上我们要演示一个三通道的,我们要将三个通道的值分别加在一起
在这里插入图片描述

在这里插入图片描述
filter的前两个值表示每3 * 3的区域就要选出来作为一个特征(卷积核),
也可以选其其它大小的区域,比如4 * 4
但是最后一个值必须是一致的
在这里插入图片描述

在这里插入图片描述

17.得到特征图表示

在这里插入图片描述
得到的特征图不一定只有一个
只要我的f不同,我就会得到不同的特征图
f1得到第1张图,f2得到第2张图,相当于两种不同的特征提取方法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
output Volume就是我们特征图的个数
在这里插入图片描述
在这里插入图片描述

18.步长与卷积核大小对结果的影响

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

在这里插入图片描述
在图像任务中
在这里插入图片描述
卷积核一般为3 * 3或者4 * 4
在这里插入图片描述

19.边缘填充方法

在这里插入图片描述
在得到最后的特征图过程中
越往边界的点,被应用的次数越少
越往中间的点,被应用的次数越多
在边界外面加一圈0,原本是的边界点就不是边界点,被利用的次数更多了,在一定程度上弥补了边界信息缺失的问题

一般情况下,我们都是添加一圈

在文本中,我们一般是这样的
比如一个文本是100个词,另一个文本是120个词
在这里插入图片描述
在这里插入图片描述
卷积核个数就是我们在算的过程中要得到多少个特征图
在这里插入图片描述

20.特征图尺寸计算与参数共享

在这里插入图片描述
公式
即32怎么到28的,怎么到24的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于每一个位置都是选择了相同的卷积核
在这里插入图片描述

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

21.池化层的作用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将每个位置中最大的值选出来就可以了(在神经网络中,得到一个比较大的值说明这个值比较重要,因为权重参数是在不断改变的)

除了最大池化,还有平均池化等方法
在这里插入图片描述
最大池化比平局池化效果要好很多

22.整体网络架构

在这里插入图片描述

在这里插入图片描述
一般我们最后得到是一个立体的特征图,比如32 * 32 * 10
那么我们如何将它转换成概率用于分类任务呢
我们前面的卷积和池化只是做特征提取,我们想要得到一个结果还是得靠全连接层(FC)
我们要将特征图拉成一个特征向量,长度就是32 * 32 * 10 = 10240
我最终在全连接层最终得到的结果就是[10240,5]
相当于将我这个10240个特征转换为我5个类别的概率值
在这里插入图片描述

所以在最后的POOL层与FC层之间,还有一个将特征拉长的操作

在这里插入图片描述
上面是一个7层神经网络(只有带参数的,我才称之为一层)

在这里插入图片描述

23.VGG网络架构

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

24.残差网络Resnet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们建议将Resnet当成一个特征提取的网络,而不是一个分类网络
因为一个问题是分类还是回归,决定于损失函数,还有最后的层是如何连接的
Resnet当成一个特征提取可以运用到各种各样的任务中,物体检测、检索、分类、识别

25.感受野的作用

在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
因为77的卷积一次是55再卷是33再卷是11,所以是三个
在这里插入图片描述

26.RNN网络架构解读

前一个时刻训练出的中间结果特征,也会对后一个时刻产生影响
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
第一步先将我们的输入数据通过Word2vec模型转换为3维向量,并且按照时间顺序从前到后进行排列,之后训练模型
在这里插入图片描述

RNN网络会将之前看到的所有单词完全记下来,记的太多就会产生误差和错误
LSTM中我们的解决方案就是使其忘记一些特征
LSTM是在RNN基础上进行改进的,加上一个C参数控制单元,控制当前的模型复杂度
在这里插入图片描述

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

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

在这里插入图片描述

27.词向量模型通俗解释

在这里插入图片描述
在这里插入图片描述
我们一般使用50维带300维来表示一个单词
用向量表示一个词后
我们就可以使用相似度度量的方法来探索哪些词是相近的
在这里插入图片描述

28.模型整体架构

在这里插入图片描述
在这里插入图片描述
上面就是50维表示一个单词

在这里插入图片描述

在这里插入图片描述

那么我们如何训练一个词向量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类似于神经网络中多分类任务,后面接了一个softmax层
比如我们语料库中有100个词,哪个词的可能性是最高的
如果我们输入A、B,则我们希望C词的概率是最高的
在这里插入图片描述
那我们输入数据如何构建
因为我们的输入是一个词,但我们的词不能往神经网络中输入
我们要到语料库的大表中进行词的向量的查找
我们语料库的大表是随机进行一个初始化的操作
在这里插入图片描述
在神经网络中,前向传播去计算一个损失函数
反向传输根据损失函数更新权重参数
在word2vec模型中,有一个比较特别,不仅会更新神经网络的权重,输入也会一起更新
我们一开始的语料库是随机初始化的
每一层训练都会更新我们的语料库

29.训练数据构建

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

30.CBOW和Skip-gram模型

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

在这里插入图片描述
在这里插入图片描述
模型有两种方案可以选择,Gensim工具包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有时候我们的语料库很大,比如有5w个,这时我们进行softmax分类,工作量太大了,那么我们如何进行改进呢

在这里插入图片描述
训练过程跟神经网络差不多,通过前向传播我们得到损失函数,在损失函数中去计算一下error值,根据error值去计算我们的反向传播一步步该如何走,权重参数如何更新。有一点比较特殊的是我们不仅要更新权重参数,也要更新我们的输入数据
在这里插入图片描述

在这里插入图片描述
我们现在是通过A去预测B
但B的可能性太多了,因为语料库中可能有10w个词,B这边就可能是10w分类

我们将A和B都当成我们的输入,标签我们自己写,我们希望的target标签应该是1,希望神经网络预测出来的结果跟1越接近越好
在这里插入图片描述

31.负采样方案

在这里插入图片描述
我们需要自己额外添加target为0的标签
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
默认负采样参数为5
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
sigmoid二分类任务
在这里插入图片描述
神经网络迭代更新完成,每个词的词向量都训练好了,词向量模型即训练好了
Word2vec词向量模型的目的:得到每一个词的向量表示

32.简介与安装

在这里插入图片描述
Keras相当于把TensorFlow中一些复杂的API,封装成简单、便捷的形式,底层还是TensorFlow的内容

  • 20
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值