深度学习基础概念笔记

深度学习框架

1.PaddlePaddle(百度)
2.Tensorflow(谷歌)( keras的关键计算依托于tensorflow 或者 theano. 初学和入门的话建议用 keras。但是想要深入或者做自己的APP的话建议用 tensorflow。)
第9章 使用Scikit-Learn调用Keras的模型
3.Caffe(Caffe2并入PyTorch)
4.MXNet(亚马逊)
5.Torch和PyTorch(Facebook)
深度学习三大框架(对比)
深度学习框架究竟是什么

权值共享和局部感受野

卷积神经网络CNN(卷积池化、感受野、共享权重和偏置、特征图)
感受野与权值共享
卷积神经网络的局部连接和权值共享
局部感知与权值共享

深度学习教程

卷积神经网络发展历史及各种卷积神经网络模型简介
卷积神经网络CNN总结
深度学习的经典算法的论文、解读和代码实现
床长人工智能教程
深入学习卷积神经网络中卷积层和池化层的意义
如何理解卷积神经网络(CNN)中的卷积和池化?
深度学习(4)–卷积神经网络小总结(Inception及其超好用的百度云链接,CNN,LeNet,AlexNet,vgg,ResNet,1×1卷积核,扩充数据)
深入学习卷积神经网络中卷积层和池化层的意义
深层神经网络的搭建
六种卷积神经网络
使用腾讯云 GPU 学习深度学习系列之三:搭建深度神经网络
掌握了这24个顶级Python库,你就是大神!
十种深度学习算法要点及代码解析
理解卷积神经网络CNN中的特征图 feature map

基础原理

深度学习|经典网络:GoogLeNet(一)
冠军的试炼
卷积神经网络超详细介绍
从卷积层、激活层、池化层到全连接层深度解析卷积神经网络的原理
卷积神经网络——卷积层、池化层和激活函数
卷积神经网络——输入层、卷积层、激活函数、池化层、全连接层
卷积神经网络入门详解
十四、卷积神经网络(1):介绍卷积神经网络
深度学习入门必须理解这25个概念
深度学习初学者必须知道的25个专业名词

卷积神经网络有两种神器可以降低参数数目。

卷积层最主要的两个特征就是局部连接和权值共享,有些地方又叫做稀疏连接和参数共享,总之都是一个意思。
所谓局部连接,就是卷积层的节点仅仅和其前一层的部分节点相连接,只用来学习局部特征。局部感知结构的构思理念来源于动物视觉的皮层结构,其指的是动物视觉的神经元在感知外界物体的过程中起作用的只有一部分神经元。在计算机视觉中,图像中的某一块区域中,像素之间的相关性与像素之间的距离同样相关,距离较近的像素间相关性强,距离较远则相关性就比较弱,由此可见局部相关性理论也适用于计算机视觉的图像处理领域。因此,局部感知采用部分神经元接受图像信息,再通过综合全部的图像信息达到增强图像信息的目的。从下图中我们可以看到,第n+1层的每个节点只与第n层的3个节点相连接,而非与前一层全部5个神经元节点相连,这样原本需要53=15个权值参数,现在只需要33=9个权值参数,减少了40%的参数量,同样,第n+2层与第n+1层之间也用同样的连接方式。这种局部连接的方式大幅减少了参数数量,加快了学习速率,同时也在一定程度上减少了过拟合的可能。
卷积层的另一大特征是权值共享,比如一个3*3的卷积核,共9个参数,它会和输入图片的不同区域作卷积,来检测相同的特征。而只有不同的卷积核才会对应不同的权值参数,来检测不同的特征。如下图所示,通过权值共享的方法,这里一共只有3组不同的权值,如果只用了局部连接的方法,共需要3x4=12个权值参数,而加上了权值共享的方法后,现在仅仅需要3个权值,更进一步地减少参数数量。
卷积神经网络的局部连接和权值共享

局部连接

一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。
在卷积神经网络中,感受野是卷积神经网络每一层输出的特征图上的像素点在原始图像上映射的区域大小适当增加感受野的大小可以提高模型的精确度
在这里插入图片描述
【深度学习】感受野
卷积神经网络物体检测之感受野大小计算
CNN中感受野的计算
AI疯狂进阶——感受野篇
卷积神经网络的感受野
【深度学习】感受野(receptive fields)概念计算及如何增加感受野总结
增大图像感受野方法的总结

前向及反向传播过程

卷积神经网络前向及反向传播过程数学解析
B站吴恩达深度学习视频笔记(28)——深度神经网络说明以及向前传播向后传播实现
吴恩达深度学习 —— 4.6 前向传播和反向传播
卷积神经网络前向及反向传播过程数学解析
卷积神经网络(CNN)前向传播算法
卷积神经网络(CNN)反向传播算法
深度学习:神经网络中的前向传播和反向传播算法推导
卷积神经网络(CNN)反向传播算法推导

模型参数量和计算量

我们在设计一个CNN网络时,通常要考虑两个事情,一个是这个网络需要的计算量有多大,一个是这个模型的参数量有多少。前者决定了网络训练的快慢(硬件设备确定的情况),后者决定了计算设备需要多大的内存或显存。
本文CNN的计算量以计算机做乘加次数为单位,即完成某个操作,需要执行多少次乘法和加法操作。参数量以参数个数为单位,要计算内存或显存的,用参数量乘以每个参数所占的字节数即可。
float32是4个字节,因此模型大小字节数=参数量×4
偏置的个数等于卷积核的个数,一个卷积核学习一个偏置
模型参数数量与计算量
以VGG为例,分析深度网络的计算量和参数量
CNN中计算量和参数的计算方法
卷积神经网络参数量和计算量的计算
神经网络时间复杂度和空间复杂度(参数量计算和计算量计算)
CNN 模型所需的计算力(flops)和参数(parameters)数量是怎么计算的?

卷积神经网络学习零碎笔记

池化层不需要学习参数,卷积层和batchnorm需要学习参数(权重)

批次和周期

迭代过程即梯度下降,迭代一次反向传播梯度跟新一次。当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch。
迭代是 batch 需要完成一个 epoch 的次数,batch size 是指模型一次性学习数据的大小, number of batches 是指。
比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch size,那么完成一个 epoch 需要 4 个 iteration。
批次(Batches)——在训练神经网络的同时,不用一次发送整个输入,我们将输入分成几个随机大小相等的块。与整个数据集一次性馈送到网络时建立的模型相比,批量训练数据使得模型更加广义化。
周期(Epochs)——周期被定义为向前和向后传播中所有批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。

前馈神经网络、BP神经网络、卷积神经网络

1、BP神经网络,指的是用了“BP算法”进行训练的“多层感知器模型”。
2、感知器(MLP,Multilayer Perceptron)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上,可以解决任何线性不可分问题。多层感知器(Multi-Layer Perceptron,MLP)也叫人工神经网络(Artificial Neural Network,ANN),除了输入输出层,它中间可以有多个隐层。
3、多层感知器就是指得结构上多层的感知器模型递接连成的前向型网络。BP就是指得反向传播算法
BP神经网络使用误差反向传播算法,而MLP只有前向传播没有反向传播
BP神经网络指的是在神经网络中采用反向传播法来进行训练的神经网络。
1、前馈神经网络:一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈
2、BP神经网络:是一种按照误差逆向传播算法训练的多层前馈神经网络
3、卷积神经网络:包含卷积计算且具有深度结构的前馈神经网络

卷积层:

卷积层其实就是在提取特征,卷积层中最重要的是卷积核(训练出来的),不同的卷积核可以探测特定的形状、颜色、对比度等,然后特征图保持了抓取后的空间结构,所以不同卷积核对应的特征图表示某一维度的特征,具体什么特征可能我们并不知道。特征图作为输入再被卷积的话,可以则可以由此探测到"更大"的形状概念,也就是说随着卷积神经网络层数的增加,特征提取的越来越具体化。

激活层:

激励层的作用可以理解为把卷积层的结果做非线性映射

池化层:

有时图像太大,我们需要减少训练参数的数量,它被要求在随后的卷积层之间周期性地引进池化层。池化的唯一目的是减少图像的空间大小。池化在每一个纵深维度上独自完成,因此图像的纵深保持不变。池化层的最常见形式是最大池化(还有均值池化等等)
降低了各个特征图的维度,但可以保持大部分重要的信息。卷积后的Feature Map中有对于识别物体不必要的冗余信息,我们下采样就是为了去掉这些冗余信息,所以并不会损坏识别结果。我们知道卷积核就是为了找到特定维度的信息,比如说某个形状,但是图像中并不会任何地方都出现这个形状,但卷积核在卷积过程中没有出现特定形状的图片位置卷积也会产生一个值,但是这个值的意义就不是很大了,所以我们使用池化层的作用,将这个值去掉的话,自然也不会损害识别结果了。如果不使用Max pooling,而让网络自己去学习。 网络也会去学习与Max pooling近似效果的权重。因为是近似效果,增加了更多的参数的代价,却还不如直接进行最大池化处理。
传统的卷积神经网络的做法,当有pooling时(pooling层会大量的损失信息),会在之前增加特征图的厚度(就是双倍增加滤波器的个数),通过这种方式来保持网络的表达能力,但是计算量会大大增加

全连接层

通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。
可以认为全连接层之前的在做特征提取,而全连接层在做分类,这就是卷积神经网络的核心。
全连接层也可以看作是卷积层,只不过卷积核是原图大小而已。

特征图的作用

在卷积神经网络中,我们希望用一个网络模拟视觉通路的特性,分层的概念是自底向上构造简单到复杂的神经元。楼主关心的是同一层,那就说说同一层。
我们希望构造一组基,这组基能够形成对于一个事物完备的描述,例如描述一个人时我们通过描述身高/体重/相貌等,在卷积网中也是如此。在同一层,我们希望得到对于一张图片多种角度的描述,具体来讲就是用多种不同的卷积核对图像进行卷,得到不同核(这里的核可以理解为描述)上的响应,作为图像的特征。他们的联系在于形成图像在同一层次不同基上的描述。下层的核主要是一些简单的边缘检测器(也可以理解为生理学上的simple cell)。上层的核主要是一些简单核的叠加(或者用其他词更贴切),可以理解为complex cell。多少个Feature Map?真的不好说,简单问题少,复杂问题多,但是自底向上一般是核的数量在逐渐变多(当然也有例外,如Alexnet),主要靠经验。

logits的含义

也可以这么理解:logits与 softmax都属于在输出层的内容,
logits = tf.matmul(X, W) + bias
再对logits做归一化处理,就用到了
softmax:Y_pred = tf.nn.softmax(logits,name=‘Y_pred’)
可以理解logits ——【batchsize,class_num】是未进入softmax的概率,一般是全连接层的输出,softmax的输入。当成 未归一化的概率 就好。
在深度学习之中logits就是输入到softmax之前的数值,本质上反映的也是概率,softmax只是归一化一下。
logits可以看成最后一层全连接的输出*权重参数,假设神经网络最后一层有m个结点,那logits= wx+b, 其中x是m维, 对于二分类,只需要预测出一个值,即对于每个样本,计算出的logits就是1个数, 这个数经过sigmoid就是最后预测的概率, 对于多分类(n>2),最后计算出的logits就是n维向量,经过归一化,即为属于每一类的概率。

卷积

传统的卷积神经网络模型,不同的卷积核提取不同的特征,多次卷积获取更深层次的特征
关于卷积和其偏置的详细动态图
1.卷积网络CNN中各种常见卷积过程
2.深度学习之快速理解卷积层
3.对图像提取特征时,连续做两次卷积操作有什么作用?是不是比只做一次要好?
CNN 中千奇百怪的卷积方式大汇总

卷积核的大小

AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,之前人们的观念是,卷积核越大,receptive field(感受野)越大,看到的图片信息越多,因此获得的特征越好。虽说如此,但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。于是在VGG(最早使用)、Inception网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数量(3×3×2+1 VS 5×5×1+1)被降低,因此后来3×3卷积核被广泛应用在各种模型中。
如何选择卷积核的大小?越大越好还是越小越好?
两个3×3的卷积层串联相当于1个5×5的卷积层,即一个像素会和周围5×5的像素产生关联,可以说感受野是5×5。同时,3个串联的3×3卷积层串联的效果相当于一个7×7的卷积层。除此之外,3个串联的3×3的卷积层拥有比一个7×7更少的参数量,只有后者的 (3×3×3) / (7×7) = 55%。最重要的是3个3×3的卷积层拥有比一个7×7的卷积层更多的非线性变换(前者可以使用三次ReLu激活,而后者只有一次)。
深入学习卷积神经网络中卷积层和池化层的意义
卷积神经网络中卷积层和池化层的意义
卷积层与池化层
卷积神经网络 - 卷积核越小越好吗?
变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。
关于不同卷积核大小的思考
卷积神经网络学习路线(三)| 盘点不同类型的池化层、1*1卷积的作用和卷积核是否一定越大越好?

1x1卷积的作用

  1. 实现跨通道的交互和信息整合;增强了非线性的表达能力
    对多通道图像做1x1卷积,其实就是将输入图像的每个通道乘以卷积系数后加在一起,即相当于把原图像中本来各个独立的通道“联通”在了一起。
  2. 进行卷积核通道数的降维和升维,降低计算的复杂度

1x1卷积只是添加了非线性函数,当然也可以让网络学习更复杂的函数
1x1卷积具有全连接的作用,添加了非线性,并且可以升维或者降维
这使得模型对于非线性决策函数的建模得到增强
普通卷积层用于提取图像的局部特征,1x1卷积层用于进一步融合/抽象不同通道的feature map中提取到的特征。
4.CNN 中, 1X1卷积核到底有什么作用呢?
5.1x1卷积的作用
6.【深度学习】CNN 中 1x1 卷积核的作用
7.11卷积核的作用
8.cccp 和 11 卷积层解释

卷积层和池化层的意义

最大池化是保留特征中的最大值,有正则化的作用,可以降低维度,防止过拟合。保留了主要特征的同时减少了参数量和计算量。

Batch Nomaliztion

  1. zero mean(中心化/零均值化)
  2. unit variance(单位方差,即方差为1)
  3. standard deviation(标准差)
    使数据变为均值为0,标准差为1的分布或者范围在0~1的分布

不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中“梯度弥散(特征分布较散)”的问题,从而使得训练深层网络模型更加容易和稳定。
深度学习(六)——BN算法(Batch Normalization)的原理和作用
【深度学习】批归一化(Batch Normalization)
详解BN(Batch Normalization)算法
归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)
方差、标准差和协方差三者之间的定义与计算
深度学习基础之归一化
BN(Batch Normalization)在TensorFlow的实现
tensorflow中batch normalization的用法

下采样与上采样与反卷积

图像的上采样(upsampling)与下采样(subsampled)
过采样与欠采样&图像重采样(上采样&下采样)
欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响
上采样,反卷积,上池化概念区别
在这里插入图片描述

卷积进行下采样和池化下采样的区别

1:卷积过程导致的图像变小是为了提取特征
2:池化下采样是为了降低特征的维度
虽然结果都是图像或者特征图变小,但是目的是不一样的。
使用空洞卷积可以像池化一样增大感受野,但是不会丢失信息。
池化下采样比较粗暴,可能将有用的信息滤除掉,而卷积下采样过程控制了步进大小,信息融合较好,现在池化操作较少的被采用。

反卷积和上采样也同理

激活函数和损失函数

sigmoid 和softmax

详解sigmoid与softmax, 多分类及多标签分类
损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系
softmax_cross_entropy_with_logits:二分类或者多分类类别相互排斥,结果只有一种可能
sigmoid_cross_entropy_with_logits函数,测量每个类别独立且不相互排斥,结果有多种可能
交叉熵损失函数详解
函数分类大PK:Sigmoid和Softmax,分别怎么用?
选择sigmoid激活函数
在这里插入图片描述
均方根误差函数
在这里插入图片描述
计算损失函数对w,b的导数
在这里插入图片描述
dw = dJ/dw 梯度的计算是指损失函数对w,b求导,选择不同的损失函数计算出来的公式是不一样的,如果激活函数选择sigmoid,损失函数选择均方根误差函数,那么w和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,w和b的大小调整得越快,训练收敛得就越快。
如果损失函数选择交差熵损失函数
在这里插入图片描述
w,b的梯度与激活函数的梯度无关,并且与σ(z)-y成正比,符合实际需求,交叉熵调整权值的策略比较合理
在这里插入图片描述

分类与回归

逻辑回归(logistic regress)是一个二分类的问题,其输出y的值为0或1。用于解决监督学习问题的学习算法。logistic regress的目的就是使预测值与真实值之间的误差最小。损失函数(Loss Function)来衡量预测值(y^(i))与真实值(y(i))之间的差异。
深度学习(一)逻辑回归
分类与回归区别是什么?
分类是一种定量,相当于预测值和真实值之间的误差的概念
回归是一种定性,只有正确与错误之分

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值