深度学习 21天实战caffe 前三天 笔记

本文用作《深度学习21天实战caffe笔记》的备忘,请结合原书食用~

前言

  1. Caffe框架以“层”为单位对深度神经网络的结构进行了高度的抽象。
  2. Caffe由贾杨清开发。
  3. 卷积神经网络发明者Geoffrey Hinton在20世纪70年代提出深度学习理论,随着NVIDIA GPU的广泛使用才大量应用。
  4. 深度学习年代久远,当时受限于计算能力不足和数据集匮乏陷入低谷,直到云计算、大数据时代到来才突飞猛进。

第一天 什么是深度学习

  1. 带“学习”功能的机器:“看”未知系统的输入-输出对训练样本),自动得算法,可举一反三(泛化)。
  2. 训练样本 D=z1,z2,z3zn D = z 1 , z 2 , z 3 ⋯ z n zi z i 输入-输出对
  3. 惩罚函数 L(f,Z) L ( f , Z ) ,参数为学到的规则 f f 和独立于Z的验证样本集,返回值为实数标量,称为惩罚值损失。目标是 L(f,Z) L ( f , Z ) 尽量小。
  4. 机器学习需要三份数据:
    • 训练集:机器学习的样例
    • 验证集:机器学习阶段,用于评估得分和损失是否满足要求
    • 测试集:机器学习结束之后,实战阶段评估得分。;
  5. 深度学习:由多个处理层组成的计算模型,可通过学习获得数据的多抽象层表示。
  6. 机器学习三大牛:Geoffrey Hinton, Yann LeCun,Youshua Bengio

第二天 深度学习的过往

  1. 传统机器学习需要手动提取特征,比较繁琐且往往需要领域专家设计特征。
  2. 分类问题中,高层特征能强调重要的类别信息,而抑制无关的。如图像中从低到高的特征:边缘->图案->图案组合。深度学习自动在高维数据中发现复杂结构。

监督学习

  1. 监督学习中的数据是带有标签(label)的。
  2. 训练过程中需要不断更新权值(参数)向量,方法是:计算梯度向量,表示每个权值增加一个微小值时目标函数的变化量,之后权值向量根据梯度向量的相反方向调节。
  3. 经典更新方法——随机梯度下降(Stochastic Gradient Descent, SGD):输入少量样本,计算输出和误差,计算样本的平均梯度,根据梯度调节平均值。
  4. 线性分类器:高于阈值就分为一类,否则另一类。
  5. 深度学习核心优势:自动学习好的特征,很多个模块,每个都能计算非线性输入-输出映射。

反向传播算法

反向传播算法通过计算目标函数相对于多层网络权值的梯度,进行链式求导,从而调整参数。

下面举一个网络的例子,下图的左、右分别代表了该网络的前向传播和反向传播的过程

前向传播

先看左图前向传播的计算过程:

Input -> H1

取H1中的一个结点 j j ,其值yj=f(zj)
其中 zj z j 是input中三个结点 x1,x2,x3 x 1 , x 2 , x 3 的函数,也就是说 j j yj xi x i 决定。
这里的 zj=iwijxi z j = ∑ i w i j x i ,其中 wij w i j 为权重。
函数 f f 是一个激活函数(如ReLU),它对zj进行非线性变换,得到输出 yj y j

H1->H2和H2->Output

类似的,令H2、Output中的结点为 k k l,我们可以得到:
yk=f(zk),zk=jwjkyj y k = f ( z k ) , z k = ∑ j w j k y j
yl=f(zl),zl=kwklyl y l = f ( z l ) , z l = ∑ k w k l y l

反向传播

再来看右图反向传播的计算过程,它分为两步;
1. 计算每层的梯度:对于每层,我们计算它对这一层输出结点误差的梯度,也就是求对后一层输入误差的加权和
2. 应用链式求导法则,将误差梯度传到这一层输入结点。

例如,若Output units中的结点 l l 的代价函数(loss function)为E=0.5(yltl)2,其中 tl t l 是我们想要的输出, yl y l 是目前的输出,我们现在求这个loss function对 zl z l 的梯度:

E E 对于yl的偏导数为 yltl y l − t l ,又因为 yl=f(zl) y l = f ( z l ) ,所以 Ezl=Eylylzl=(yltl)f(zl) ∂ E ∂ z l = ∂ E ∂ y l ∂ y l ∂ z l = ( y l − t l ) f ′ ( z l )
这里运用了链式求导法则,将 E E zl的偏导拆成了两个偏导的乘积,我们只需要分别计算这两个因子,将它们相乘就能得到想要的结果。

同理,要计算loss function对H2的梯度,应用链式求导法则的可得:
Eyk=lEzlzlyk=lwklEzl ∂ E ∂ y k = ∑ l ∂ E ∂ z l ∂ z l ∂ y k = ∑ l w k l ∂ E ∂ z l ,这里的 Ezl ∂ E ∂ z l 我们之前刚刚计算过,直接用就好。

后面两层的梯度计算同理。

卷积神经网络

卷积神经网络(ConvNet)如今应用广泛,它包含了卷积操作。ConvNet有4个基本特征;局部互联、共享权值、下采样和使用多个卷积层。

在ConvNet,数据会使用不同的卷积核经过卷积层得到特征图,从而提取到前一层的局部连接特征;使用激活函数(如ReLU)使网络具有非线性表达能力;通过下采样层(池化层)将相似特征融合,并减少参数量。

这种卷积-非线性-池化的组合构成了一组单元,ConvNet中可以有若干个这样的单元相连接。

ConvNet成功用在了图像处理中的多种任务上,如分割、分类等。

第三天 深度学习工具汇总

  1. Caffe实现了CNN,适合做特征提取,它提供了面向命令行、MATLAB和Python的接口。
  2. Torch目前已经进化到已经Pytorch,使用Python接口,很流行也很有潜力。
  3. MXNet目前在快速发展,提供了ndarray接口和symbolic接口。
  4. TensorFlow由Google支持,目前资料最多。
  5. Theano往往用于教学和研究,不够高效,不适合线上部署。
  6. CNTK由微软提出,对Windows支持最好,不建议初学者入门使用。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值