文章目录

  • 1.深度学习
    • 1.1机器学习的基本流程
    • 1.2深度学习的原理
    • 1.3深度学习的应用
    • 1.4计算机视觉
  • 2.神经网络
    • 2.1前向传播
      • 2.1.1神经网络的基础
      • 2.1.2损失函数
      • 2.1.3Softmax分类器
    • 2.2 反向传播
      • 2.2.1计算偏导数
    • 2.3神经网络架构细节
      • 2.3.1正则化
      • 2.3.2激活函数
  • 3.神经网络过拟合解决方法
    • 3.1数据预处理
    • 3.2参数初始化
    • 3.3DROP-OUT
  • 4.神经网络的总结
  • 5.卷积神经网络应用领域
    • 5.1计算机视觉CV领域发展
    • 5.2卷积神经网络的应用场景
    • 5.3卷积网络与传统网络的区别
    • 5.4卷积神经网络整体架构
    • 5.5卷积层
      • 5.5.1图像颜色通道
      • 5.5.2卷积特征值计算方法
      • 5.5.3步长与卷积核大小对结果的影响
      • 5.5.4特征图尺寸计算
      • 5.5.5卷积参数共享
      • 5.5.6卷积层总结
    • 5.6池化层
  • 6.整体网络架构
  • 7.经典网络Alexnet
  • 8.VGG网络架构
  • 9.残差网络Resnet
  • 10.感受野的作用
  • 11.RNN网络构架解读
  • 12.LSTM网络构架解读

1.深度学习

  • 深度学习电子书
  • 深度学习电子书中源代码
  • 深度学习在线课程

1.1机器学习的基本流程

  • 第一步:数据获取
  • 第二步:特征工程(最重要的一点)
  • 第三步:选择一个算法建立模型
  • 第四步:评估与应用

对数据做处理之后,我们得思考如何提取特征,从而得到更有价值的输入,有没有一种算法,就是拿到数据之后,可以自动提取特征,深度学习是跟人工智能最贴切,即解决人工的那部分,我们可以让网络真正的去学习什么特征是比较合适的,这就是深度学习能够达到的一种境界。深度学习是机器学习的一部分,也是最大的一部分,主要就是解决了特征工程。

1.2深度学习的原理

特征工程的作用:

  1. 数据特征决定了模型的上限
  2. 预处理和特征提取是最核心的
  3. 算法与参数选择决定了如何逼近这个上限

特征如何提取:
比如文本、图像等如何去提取特征,我们要尽可能多的去想找个特征是如何做的权重参数

深度学习的核心:
有输入数据之后,会神经网络就是一个黑盒子进行一个自动的特征提取,这些特征能够让计算机认识,所以深度学习的核心就是怎么样去提取特征

1.3深度学习的应用

  • 参数很多,但是速度可能很慢
  • 常见应用:人脸识别、无人驾驶、医疗方面等 链接: 最庞大的图像数据集,收集图像然后标注图像
  • 数据集样例:CIFAR-10(10类标签、50000个训练数据、10000个测试数据、大小均为32*32)

1.4计算机视觉

  • 图像分类任务
  • 图像表示:在计算机中图像就是一个个小矩阵组成的,一张图片被表示成三维数组的形式,每个像素的值从0到255,0代表越暗,255代表越亮,255×255×3,其中3是颜色通道,RGB值
  • 测试数据跟每一个训练数据进行比较,距离算出来,

2.神经网络

  • 神经网络不应该称为一种算法,把他当作一个特质提取的方法更为贴切,无论还在机器学习、数据挖掘、或者其他任务点当中,所有的人工智能任务,最重要的可能不是算法,而是数据层面上,就比如一个人要去做一个好菜好饭,没有好食材能做出来吗,所以特征是非常重要的。
  • 神经网络分为两大模块:一个是前向传播,一个是反向传播

2.1前向传播

2.1.1神经网络的基础

  • 线性函数:从输入到输出的映射 f(x,W)=Wx+bf(x,W)=W_x+bf(x,W)=Wx​+b
    其中,xxx对应一个像素点,WWW意思是parameters是每个参数对应的权重(取决定性的作用),bbb是bias起到微调的作用

2.1.2损失函数

  • 定义:损失函数是用来衡量,当前这组权重参数做完之后的一个结果

  • 公式: Li=∑j≠yjmax(0,Sj−Syi+1)L_i=\sum\limits_{j\ne y_j}max(0,S_j-S_{y_i}+1)Li​=j=yj​∑​max(0,Sj​−Syi​​+1)
    其中, SjS_jSj​是该图像属于其他类别,SyiS_{y_i}Syi​​是该图像属于正确类别的,加1相当于加Δ\DeltaΔ(一个容忍程度):即算出错误类别-正确类别+Δ\DeltaΔ的值,与0比较大小,取其中较大值,所以等于0时,为没有误差

  • L=1N∑i=1N∑j≠yjmax(0,f(xi;W)j−f(xi;W)yi+1)+λR(W)L=\frac 1 N \sum\limits_{i=1}^N \sum\limits_{j\ne y_j}max(0,f(x_i;W)_j-f(x_i;W)_{y_i}+1)+\lambda R(W)L=N1​i=1∑N​j=yj​∑​max(0,f(xi​;W)j​−f(xi​;W)yi​​+1)+λR(W)
    其中,加号前半部分是data_loss(即数据在当前损失函数当中得到的一个损失),加号后半部分是正则化惩罚项(即由这组模型一个权重参数WWW所带来的一个损失,跟数据是没有任何关系的,只考虑权重参数,R(W)=∑k∑lWk,l2R(W)=\sum_k\sum_lW_{k,l}^2R(W)=∑k​∑l​Wk,l2​,就是w12+w22+w32+……+wl2w_1^2+w_2^2+w_3^2+……+w_l^2w12​+w22​+w32​+……+wl2​再乘上一个λ\lambdaλ,λ\lambdaλ越大消减的越大,也就是我不希望过拟合,我希望正则化大一些,λ\lambdaλ数值较小就是意思意思得了)注:过拟合就是只关注其中一个种类,而不关注其他种类

  • 图解:

2.1.3Softmax分类器

  • 归一化:P(Y=k∣X=xi)=esk∑jesjP(Y=k|X=x_i)=\frac {e^{s_k}} {\sum_j e^{s_j}}P(Y=k∣X=xi​)=∑j​esj​esk​​
    其中,s=f(xi;W)s=f(x_i;W)s=f(xi​;W)

  • 计算损失值:Li=−logP(Y=yi∣X=xi)L_i=-logP(Y=y_i|X=x_i)Li​=−logP(Y=yi​∣X=xi​)

  • 先得到各类别的一个得分值xxx,然后算出各自对应的exe^xex值,再将该值进行归一化,得到概率值,例如其中一种的概率值比所有种类的概率值,根据对数函数的图像可知,对数函数中x是0-1时对应的y值是负数,所以我们给式子前面加上负号,并且x越接近于1,损失值越小,也就是说正确的类别的概率值越接近1的越没有损失

  • 回归任务最终是要预测一个值,是由得分值去计算一个损失

  • 分类任务是由概率值去计算一个损失

2.2 反向传播

  • 前向传播:有了xxx和www是可以计算出一个损失的
  • 反向传播:神经网络的实质就是更新www,损失值很高就是指www不好,那么反向传播就是调整www,能让损失值下降,这就是一种优化,采用梯度下降方法

2.2.1计算偏导数

  • f(w,x)=11+e−(w0x0+w1x1+w2)f(w,x)=\frac 1 {1+e^-{(w_0 x_0+w_1 x_1+w_2)}}f(w,x)=1+e−(w0​x0​+w1​x1​+w2​)1​
    比如有三个人要计算www的值,就是第一个人先算出x0w0x_0w_0x0​w0​的值,然后第二个人再将该值乘www得出w1w_1w1​,接着第三个人再算出w1w_1w1​乘www得到w2w_2w2​,即[(xw1)w2]w3[(xw1)w2]w3[(xw1)w2]w3

  • 公式如下: σ(x)=11+e−x\sigma(x)=\frac 1 {1+e^{-x}}σ(x)=1+e−x1​sigmoid function dσ(x)dx=e−x(1+e−x)2=(1−σ(x))σ(x)\frac {d\sigma(x)} {dx}=\frac {e^{-x}} {{(1+e^{-x}})^2}={(1-\sigma{(x)})}\sigma(x)dxdσ(x)​=(1+e−x)2e−x​=(1−σ(x))σ(x)

  • 加法门单元:均等分配

  • MAX门单元:给最大的

  • 乘法门单元:互换的感觉

2.3神经网络架构细节

  • 我们对数据进行变换的目的是让计算机能够识别
  • 全连接层的含义:输入层与隐藏层的每个圆圈都连着一起了,就是全连接
  • 比如前面传入的数据是身高、年龄、体重,我们把数据进行变换,转换成四个特征,年龄乘0.1+身高乘0.2+体重乘0.3=第一个圆圈的值,神经网络是一个黑盒子,我们也不知道里面进行了怎样的变换
  • 但是做一个矩阵乘法,将三个圆圈变成四个圆圈,也就是x×wx×wx×w之后得到的结果
  • 非线性变换:在每一步变成4个圆圈之前,先找一个非线性函数做一个映射,sigma函数或者max函数
  • 基本架构:f=W2max(0,W1x)f=W_2max(0,W_1x)f=W2​max(0,W1​x)
  • 继续堆叠一层:f=W3max(0,W2max(0,W1x))f=W_3max(0,W_2max(0,W_1x))f=W3​max(0,W2​max(0,W1​x))
    其中,max函数,当xxx值小于0,即为0,xxx值大于0,即为xxx
  • 神经网络的强大之处在于,用更多的参数来拟合复杂的数据
  • 每一个圆圈都代表一个神经元,神经元越多,多拟合程度越大,得到的结果可能会更好,但是计算量也会更大


链接: 可视化展示神经网络

神经元为1,就相当于切了一刀,神经元为3就相当于切了三刀

2.3.1正则化

  • 正则化的作用:惩罚力度对结果的影响

  • λ\lambdaλ越小,越符合训练集的结果

  • 训练集的loss+R(W)R(W)R(W)的loss组成了最终的一个惩罚力度

  • 我们实际看的还是测试集

  • 过拟合:失去泛化能力,不能够判断出样本中异常的点,例如图一,强行将红色的点给区分出来,而那个红色的点应该是绿色的,过拟合只是在样本数据集中精确,而引入其他数据集就不太精确,俗称泛化能力差,如下图的都是会过拟合的,所以我们就需要一个具体的参数,而达到更好的效果

  • 参数个数对结果的影响

  • 神经元越多,过拟合风险越大

  • 不选过拟合的,尽量选不过拟合的情况下,把结果展示的更好一些

2.3.2激活函数

  • 是神经网络中非常重要的一部分
  • 神经网络经过一组权重参数计算完之后,要进行一个非线性的变换
  • 常用的激活函数(Sigmoid,Relu,Tanh等)就列出了常见的非线性变换,激活函数是非线性变化
  • Sigmoid函数中,一旦数值较大或是数值较小,梯度为0代表不进行更新,不进行传播,出现了梯度消失的现象
  • 现在90%都使用Relu函数,小于0时都为0,大于0时为xxx本身,所以梯度很好算,小于0的都剔除掉了,所以不会有梯度消失的现象

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

3.1数据预处理

  • 不同的预处理结果会使得模型的效果发生很大的差异!
  • 第一步是实际坐标值-均值,将数据都集中到中心,得到一个以原点为中心对称的结果(图二)
  • 进行各个维度的扩充(放缩),将数据除标准差(图三)

3.2参数初始化

  • 通常我们都使用随机策略来进行参数初始化
  • W=0.01∗np.random.randn(D,H)W=0.01*np.random.randn(D,H)W=0.01∗np.random.randn(D,H)
    例如一些参数值起伏很大,一会很大,一会很小,那么我们乘上0.01就可以将数值都变得很小,在函数图像上基本看不到太大的起伏

3.3DROP-OUT

  • 传说中的七伤拳(伤敌七分,自损三分,互相伤害的感觉)
  • 过拟合是神经网络非常头疼的一个大问题
  • 通常层数比较多,神经元也比较多,这就造成整个神经网络过拟合风险特别大
  • 之前说了可以加正则化R(W)R(W)R(W)
  • 左图是完整的神经网络,是一个全连接的,跟与其他神经元全部连在一起
  • 右图在神经网络训练的过程中(注意是训练的过程),在每一层随机杀死一部分神经元,第一次训练可能第一层2、4不用,而第二次训练是3、4不用

4.神经网络的总结


前向传播

  • 例如有数据x1x2x3x_1 x_2 x_3x1​x2​x3​
  • 先进行数据预处理,并不是说所有数据都可以当做输入的,如文本去除停用词,图像数据进行标准化
  • 预处理之后得到输入层
  • 输入层和隐藏层之间是w1w2w3w_1 w_2 w_3w1​w2​w3​,用这些权重参数来连接的
  • 在与www进行相乘之前,会经过一个Relu激活函数,进行非线性转化

反向传播

  • 计算loss值
  • loss先对w3w_3w3​求偏导,算出w3w_3w3​对结果做出了怎样的变化
  • 再依次对Relu函数,w2w_2w2​,Relu,w1w_1w1​求偏导,其中Relu函数值不发生变化,而www值会进行更新
  • 整个神经网络在计算过程当中,就是找权重参数,什么样的权重参数能够最适用于当前的任务
  • 也就是说,w1w2w3w_1 w_2 w_3w1​w2​w3​ 具体值算出来了,整个神经网络就做完了

多拟合

  • 神经网络99%都会过拟合的
  • 一旦过拟合了,我们就得想什么样的解决方案是合适的
  • 方法一,加上正则化
  • 方法二,加上DROP-OUT
  • 还有其他各种各样的方法,层出不穷
    (神经网络一些细节一直在更新,但是整体的框架是不会变的)

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

5.1计算机视觉CV领域发展

  • 卷积神经网络主要就是应用在计算机视觉任务当中的
  • 深度学习使计算机视觉取得了很好的成就
  • 通过上图我们可以观察到(数值表示判断错误率),在2012年引入深度学习之前,错误率是很高的,而2015年已经可以达到跟人类判别错误率基本相同的水平了,2016年至今,技术水平仍在提高

5.2卷积神经网络的应用场景

  • 基本上的视觉任务都能由CNN网络实现
  • 卷积神经网络就是解决上述内容中,过拟合、参数过多、神经元多、矩阵大等问题的
  • 目前只要涉及图像方面的,都能用到,例如医学细胞检测、无人驾驶、人脸识别

5.3卷积网络与传统网络的区别

  • 右边是卷积神经网络,输入的不再是点,而是28×28×1三维的图像(H×W×C),左边传统的输入只是一列特征
  • 不会把数据拉成向量,而是直接对样本进行特征提取
  • 还添加了depth深度

5.4卷积神经网络整体架构

  • 输入层:是一个图像数据28×28×1(该图像是一个灰度,所以乘1)
  • 卷积层:主要就是提取特征(后面会具体讲解)
  • 池化层:压缩特征(后面会具体讲解)
  • 全连接层:通过一组权重矩阵www,例如前面讲述过的将输入层和隐藏层连接在一起

5.5卷积层

  • 比如图像是只猫,边界的特征以及和猫的特征就是不一样的,所以我们要对不同的区域提取出不同的特征,我们得知道边界的特征不是那么重要,而猫的特征是很重要的
  • 所以我们将一张图像分为很多不同的部分,不同的地方需要区别的处理
  • 比如改图像第一步分割成5×5×3的,如蓝色的立方体,
  • 第二步由权重参数得到特征值,上图的权重矩阵就是 [0,1,22,2,00,1,2]\begin{bmatrix} 0,1,2\\2,2,0\\0,1,2\end{bmatrix}⎣⎡​0,1,22,2,00,1,2​⎦⎤​,得到的绿色的就是特征图

5.5.1图像颜色通道

  • 图像是有三个通道的点击查看三通道动态效果

  • 因此我们需要对每一个通道进行计算,然后将三者值相加

  • 例如对于一张输入图像的同一块位置,R通道算完该区域的值,存储在上图黄色矩阵里,接着对G和B通道进行计算,再将三者值进行相加(上图少画了一个绿色的立方体)

  • 上图仍然少画了一个绿色的立方体

5.5.2卷积特征值计算方法

  • 先随机初始化一个权重参数,三通道对应的www矩阵值都是不一样的
  • 矩阵与矩阵相乘时,采用内积,即矩阵对应位置相乘之后的结果相加,例如上图左侧第一个图与w0w_0w0​相乘之后就是0×1+0×1+0×1+0×(-1)+1×(-1)+1×0+0×(-1)+1×1+1×0=0,第二个是2,第三个是0,
  • 之后再将上面求得的值相加0+2+0+b0b_0b0​,别忘记了加b0b_0b0​,偏置参数,b0b_0b0​=1,所以最终值为3,也就是上图最右侧的左上角的值3
  • 第一块区域做好了之后,我们会移动,此时的步长是2,然后与上面的步骤是一样的
  • 其中,步长是根据输出决定的,例如该图需要3×3的输出,就得移动两个单元格

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

  • 先粗力度的提取特征,然后再细力度提取特征,最后再高水平提取特征,拿高级特征进行分类

  • 所以做一次卷积是不够的,我们是在第一步得到的特征图上再做一次卷积

  • 首先开始输入的图像(粉色立方体)中的C表示三通道

  • 进行卷积层之后的C表示多少个特征图,如蓝色的立方体前面的e.g.6,就是前面的粉色立方体用了6个例子,

  • 卷积层涉及的参数:

  • 滑动窗口的步长:步长越小,滑动窗口越多,计算效率越慢

  • 卷积核尺寸:就是每个滑动窗口的大小

  • 边缘填充:比如下面这张图第一行第一个括号内有一个(+pad 1)

  • 我们可以观察到第一列中有紫色和灰色,其中灰色就是我们填充的,pad1就是原来是5×5的,现在变成6×6,因为我们在采用窗口进行滑动的时候,可观察到中间的部分有交集,也就是被提取的特征次数增多,而边缘的机会就很少,所以我们采用了边缘填充,让原本在边界的地方尽量往中间靠拢

  • 同时为了避免添加的边界会对最终的值产生影响,我们给元素值设置为0,也被称为zero padding

  • 一定程度上弥补了边界缺失的现象

  • 具体添加pad值为多少,根据实际需求,为了整除和方便计算来设置

  • 卷积核个数:最终在算的过程中要得到多少特征图,即 卷积核的个数决定最终特征图的个数

5.5.4特征图尺寸计算

  • HHH和WWW的计算方法都是一模一样的
  • 其中,W1W_1W1​、H1H_1H1​表示输入的宽度、长度;W2W_2W2​、H2H_2H2​表示输出特征图的宽度、长度;FFF表示卷积核长和宽的大小;SSS表示滑动窗口的步长;PPP表示边界填充(加几圈0),因为pad每次加的时候都是上下加一层,左右加一层,所以公式中是乘2P2P2P
  • 例如,输入数据是32×32×3的图像,用10个5×5×3的filter来进行卷积操作,指定步长为1,边界填充为2,最终输入的规模为?
  • (32-5+2×2)/1+1=32,所以输出规模为32×32×10,经过卷积操作后也可以保持特征图长度、宽度不变

5.5.5卷积参数共享

  • 我们在用卷积核时,矩阵里面的数值如果都是不同的话(如上图左边),参数太多了,对计算会造成麻烦,所以我们采用同一个卷积核,矩阵数值都一样(如上图右边)
  • 例如,数据依旧是32×32×3的图像,继续用10个5×5×3的filter来进行卷积操作,所需的权重参数有多少个呢?
  • 5×5×3=75,表示每一个卷积核只需要75个参数,此时有10个不同的卷积核,就需要10×75=750个卷积核参数,不要忘记还有b参数,每个卷积核都有一个对应的偏置参数,最终只需要750+10=760个权重参数

5.5.6卷积层总结

  • 可以看到,在一张图像输入之后,我们通过一层卷积可以得到绿色的特征图
  • 对于同样一张图来说,我们可以通过相乘不同的矩阵,多尺度多力度的进行特征提取,让特征图更丰富起来,如下图就是用了6个不同的矩阵,得到了6个特征图,相当于得到了一个丰富的特征(计算公式会在后面的内容中给出)

5.6池化层

  • 由卷积层得到那么多特征图,卷积可以做很多次,但是如果特征图比较多呢,这时就需要引入池化层,对得到的数据进行下采样downsampling(压缩)
  • 如上图,原始是224×224×64,我们通过pool(池化层)得到一个112×112×64,只会变长和宽,而不会变64,也就是卷积核的个数
  • 上图的右边是将每个框内取最大值,也就是MAX POOLING,做了一个筛选,因为数值较大,意味着权重参数越大,整个网络认为该数值是比较重要的
  • 还有另一种平均池化AVERAGE POOLING,取每块区域的平均值(但是现在很少用了,因为我们既然已经得到好的特征了,那么为什么还要算较差的特征呢)
  • 所以基本上都是MAX POOLING,因为优胜劣汰,经过不断的实验,发现该方法效果更好
  • 池化层没有涉及到矩阵的运算,只是一个筛选,所以还是比较简单的

6.整体网络架构

  • 先通过卷积CONV,进行特征提取
  • 每一步卷积之后都会有一个RELU,进行非线性变换他们相当于一个组合
  • 两次卷积一次池化
  • 假设最终得到一个32×32×10的特征图,我们这个特征图是一个立体的,我们如何将这个立体的特征图转化成5个分类的概率值
  • 前面的卷积和池化主要是做特征提取的,得到最终的结果还得靠全连接层FC
  • 我们首先需要将32×32×10的立体图,拉成一个非常长的特征向量32×32×10=10240
  • 比如上图的FC矩阵就是一个[10240,5]
  • 也就是说在最后的POOL层和FC层之间还有一个拉长的操作
  • 带参数计算的才能叫做一层,比如这里卷积层带参数计算,而RELU不带参数计算(没有权重参数,没有偏置参数,没有数据更新),所以说激活函数不带参数计算,因为不需要返回传播,也不需要更新数据,同理POOL层也不需要,全连接层有权重参数矩阵,所以上图一共有6+1=7层的神经网络

7.经典网络Alexnet

  • 是很早之前的,12年夺冠的网络
  • 缺点:
  • 1、11乘11的filter,大刀阔斧的提取特征,现在基本上是越小越好
  • 2、stride=4,太大了
  • 3、pad=0,不填充
  • 8层网络、5层卷积、3层全连接、还有2层Local Response Norm(这层后来被证明是没用的,所以不用去管)

8.VGG网络架构

  • 14年的网络
  • 有右图表中的六个版本,其中最主流的就是D版本
  • 特点:
  • 1、所有卷积核的大小都是3×3,意味着都是细力度进行提取
  • 2、Alexnet网络只有8层,而VGG有16层/19层,所以层数是更优秀的
  • 3、下图右侧图标中conv3-64表示得到64个特征图,我们知道在经过一次maxpool层之后,会损失部分特征信息,而在VGG网络中,每次经过pool层之后,都将特征图翻倍,如下图可以观察到从64-128-256-512,所以相当于用特征图的个数去弥补损失
  • Alexnet要训练8小时,而VGG要训练3天

9.残差网络Resnet

  • 15年年底,出现了残差网络Resnet
  • 深层网络遇到的问题,下图中的右侧两个坐标轴中可以观察出,无论是左侧(训练集),还是右侧(测试集)中,56层的效果都比20层效果差(error是错误率,所以越低效果越好)
  • 20层到56层中间加36层,其中可能有些层的效果并不好
  • 解决方案核心思想:如果加入的层数效果不好,那么我们就不用它,将它的权重参数设置为0
  • 解决方案:假设xxx是第20层,经过weight layer一层卷积,然后经过relu激活函数,之后再经过weight layer一层卷积,得到的结果F(X)F(X)F(X),此时我们再额外的连接一条identity线,原封不动的再把20层的xxx拿过来,现在不仅有原来的F(X)F(X)F(X)结果,还有同等映射的xxx一个结果,如果F(x)F(x)F(x)得到的loss值并不好,那么就会将其中的权重参数设为0,再加上原来的xxx,就是有个保底,至少不会比原来差
  • 该残差网络将VGG救活了

10.感受野的作用

  • Input中绿色的经过一次卷积,得到First Conv里面的绿色小方块,因此First Conv是由前面Input中3×3得到的

  • Second Conv又是由First Conv中9个上一步中类似绿色的小方块得到的,一个绿色小方块对应到Input是3×3,而9个小方块加上重叠的部分对应到Input正好是5×5

  • 上图答案:假设输入大小都是h×w×ch×w×ch×w×c,并且都使用ccc个卷积核(得到ccc个特征图),可以来计算一下其各自所需参数:
  • 一个7*7卷积核所需参数=C×(7×7×C)=49C2C×(7×7×C)=49C^2C×(7×7×C)=49C2
  • 三个3*3卷积核所需参数=3×C×(3×3×C)=27C23×C×(3×3×C)=27C^23×C×(3×3×C)=27C2
  • 很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是VGG网络的基本出发点,用小的卷积核来完成体特征提取操作

11.RNN网络构架解读

  • 递归神经网络RNN,在传统的神经网络基础上进行改进

  • 比如特征提取与时间相关,由于时间相关性,对结果产生的影响,这就是RNN在处理时间方面的优势

  • 数据在经过隐藏层之后会得到当前的特征,比如隐藏层会将数据转化成64个特征,然后64个特征经过输出会得到10个类别的输出值,前一个时刻训练的特征也会对后一个特征产生影响的,因为特征无非就是数据的一个表达,在特征上也会呈现出一个相关性,会将前一层结果保留下来,这样得到的结果会更准确一点

  • CNN主要应用在CV中,而RNN主要应用在NLP(自然语言处理)中,因为人类说话是有顺序的

  • 比如有多个不同的时刻,x0,x1...xtx_0,x_1...x_tx0​,x1​...xt​,每个时刻都有对于的输出结果h0,h1...hth_0,h_1...h_th0​,h1​...ht​,代表中间结果,最后我们要选择其中的一个结果hth_tht​,它会将之前所有的结果综合考虑进来

  • 首先得将输入数据转化成对应的特征向量,并且按照时间顺序,从前到后进行排列,得到结果之后,我们就可以来训练这个模型了,例如:单词我们使用Word2Vec进行编码,将单词编码成向量,比如将所有的单词转化成300个向量

12.LSTM网络构架解读

  • RNN的缺点是最后一个结果会将前面的所有结果都考虑进来,但是前面的结果一定都重要吗,而且一旦记录的多了,可能就不精了,会产生误差
  • LSTM就是过滤掉没必要的特征

  • C:控制参数,决定什么样的信息会被保留什么样的信息会被遗忘,C需要持续进行维护和更新(下图左侧粗细所示)
  • 还有一些门单元,门是一种让信息选择式通过的方法(下图右侧所示)
  • sigmoid神经网络层和一些乘法操作
  • sigmoid层输出0到1之间的数值,描述每个部分有多少量可以通过,0代表“不许任何量通过”,1就指“允许任意量通过”
  • ft=σ(Wf×[ht−1,xt]+bf)f_t=\sigma(W_f×[h_{t-1},x_t]+b_f)ft​=σ(Wf​×[ht−1​,xt​]+bf​)
  • ftf_tft​与Ct−1C_{t-1}Ct−1​计算决定丢弃什么信息(如下图)

  • it=σ(Wi×[ht−1,xt]+bi)i_t=\sigma(W_i×[h_{t-1},x_t]+b_i)it​=σ(Wi​×[ht−1​,xt​]+bi​)
  • Ct=tanh(Wc×[ht−1,xt]+bc)C_t=tanh(W_c×[h_{t-1},x_t]+b_c)Ct​=tanh(Wc​×[ht−1​,xt​]+bc​)

  • LSTM的基本架构

一篇文章带你走进深度学习相关推荐

  1. 一篇文章解决机器学习,深度学习入门疑惑

    前言 进入正文前,我们先来看则新闻: 只看图不多说. 由此可见国家对人工智能的重视程序,趁早学习,让我们也贡献一份力量. 这篇文章要说的东西 研究生有不少日子,和之前的几个学长以及几个学弟偶尔也聊聊天 ...

  2. 撒花!《图解深度学习》已开源,16 章带你无障碍深度学习,高中生数学就 ok!

    红色石头的个人网站:www.redstonewill.com 今天给大家介绍一个深度学习入门和进阶的绝佳教程:<Grokking Deep Learning>,中文译名为:<图解深度 ...

  3. 360题带你走进深度学习!吴恩达深度学习课程测试题中英对照版发布

    吴恩达的深度学习课程(deepLearning.ai)是公认的入门深度学习的宝典,本站将课程的课后测试题进行了翻译,建议初学者学习.所有题目都翻译完毕,适合英文不好的同学学习. 主要翻译者:黄海广 内 ...

  4. 《图解深度学习》图书及代码,16章带你无障碍深度学习

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯 [导读]Andrew Trask 是DeepMind的科学家,同时也是OpenMinded的负责人.他著作的<Grokking ...

  5. 一篇文章带你走进测试工程师的世界

    一. 测试工程师: 1. 国内定位和发展前景: 测试工程师,软件质量的把关者,工作起点高,发展空间大.我国的软件测试职业还处于一个发展的阶段,所以测试工程师具有较大发展前景. 目前传统的软件行业还是以 ...

  6. 一篇文章带你走进Qlik,由浅入深了解商业智能BI明星产品

    Qlik Sense是下一代自助式数据可视化工具,它让每个人都能够轻松地凭直觉创建一系列灵活.交互的可视化应用去浏览.发现数据. Qlik Sense基于QIX关联数据索引引擎-QIX是Qlik的第二 ...

  7. 一篇文章带你走进web,初始HTML

    在这个互联网发展迅速的时代,前端工程师也作为一门很吃香的行业在迅速的发展,因为本人就是一名web前端工程师,那么我们接下来就来深入学习如何成为一名资深的web前端工程师. 在学习web前端开发工程师之 ...

  8. 全网首发,一篇文章带你走进pycharm的世界----别再问我pycharm的安装和环境配置了!!!万字只为君一笑,赶紧收藏起来吧

    欢迎来到我的世界:Pycharm

  9. 乐鑫esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...

最新文章

  1. python读取配置文件存在某配置_Python读取配置文件(config.ini)以及写入配置文件
  2. docker 启动sqlserver_Docker mssql-server-linux:如何在构建期间启动.sql文件(来自Dockerfile)...
  3. JSON.parse与eval的区别
  4. SQL注入1-5_cookie基于base64的注入
  5. R中与数据挖掘相关的package
  6. html5怎么改为vue_Vue.js 项目打包优化实践
  7. Servlet过滤器和监听器知识总结
  8. P3200 [HNOI2009]有趣的数列
  9. ORACLE 正則表達式
  10. Android 系统架构图
  11. 管道读写报错121:信号灯超时时间已到
  12. ArcGIS聚类分析
  13. 知识图谱概述(金融场景图谱)
  14. 为什么说“人生苦短,我用Python”?
  15. Dell笔记本 BIOS改硬盘模式Raid改为ahci,开机蓝屏0xc0000001
  16. Java微信公众平台开发之群发接口(高级群发)
  17. c语言自定义函写计算器,C语言实现计算器功能
  18. 医院信息管理系统源码 HIS系统源码
  19. 基于visual c++之windows核心编程代码分析(24)IO控制、内核通信
  20. 【分享】SDLPAL 仙剑奇侠传开源项目编译

热门文章

  1. Linux部署python接口自动化教程,基于centos7 python3
  2. vivo全球商城:库存系统架构设计与实践
  3. C#判断字符串是不是英文或数字
  4. python用函数绘制椭圆_Python 如何绘制椭圆?
  5. MFC基本类库——链表类CList
  6. 我的世界服务器标记家位置,我的世界地图怎么标记家的位置 | 手游网游页游攻略大全...
  7. 记录错误:NotImplementedError: Wrong number or type of arguments for overloaded function
  8. 2020软件测试行业趋势
  9. idea插件-Spring Assistant
  10. 关于ABB机器人安全区设定案例