李宏毅机器学习 之 深度学习简介和反向传播 (四)

目录

一、深度学习简介

1、深度学习发展趋势

2、深度学习三步骤

1)神经网络 Neural Network

2)模型评估 Goodness of function

3)选择最优函数 Pick the best function

二、反向传播算法 Back Propagation

1、梯度下降

2、反向传播


一、深度学习简介

1、深度学习发展趋势

回顾一下deep learning的历史:

  • 1958: Perceptron (linear model)

  • 1969: Perceptron has limitation

  • 1980s: Multi-layer perceptron

                Do not have significant difference from DNN today

  • 1986: Backpropagation

                Usually more than 3 hidden layers is not helpful

  • 1989: 1 hidden layer is “good enough”, why deep?

  • 2006: RBM initialization (breakthrough)

  • 2009: GPU

  • 2011: Start to be popular in speech recognition

  • 2012: win ILSVRC image competition

  • 2012: win ILSVRC image competition 感知机(Perceptron)非常像我们的逻辑回归(Logistics Regression)只不过是没有sigmoid激活函数。09年的GPU的发展是很关键的,使用GPU矩阵运算节省了很多的时间。

2、深度学习三步骤

之前笔记中说过机器学习有三个步骤,分别是在function set中找function、对function进行评估、选择出最好的function,其实深度学习也是这三个步骤,下面详细介绍。

1)神经网络 Neural Network

1>完全连接前馈神经网络

概念:前馈(feed forward)也可以称为前向,从信号流向来理解就是输入信号进入网络后,信号流动是单向的,即信号从前一层流向后一层,一直到输出层,其中任意两层之间的连接并没有反馈(feedback),亦即信号没有从后一层又返回到前一层。

我们可以把输入看作神经网络的输入和输出都看作是向量,下图当输入为1,-1和0,0时最终输出的结果时不一样的,尽管中间的结构是一样的。当我们给上面的结构的参数设置不同的值,就是不同的函数,这些可能的函数结合起来就是一个函数集function set,函数集会非常大。

多少层才算是深层呢?Deep = Many hidden layer。下面是几个经典的例子。

 

随着网络深度的增加,网络训练的错误率降低,运算量也会增加,通常这些运算都是超亿万次的运算,当一个一个进行计算的时候,使用循环loop会导致训练效率降低。所以我们要对矩阵计算Matrix operation会提高运算效率。

2>矩阵计算 Matrix operation

当有很多层,计算量会大大增加,我们可以通过观察,发现每一层之间其实是有规律可循的,

整个神经网络运算就是一连串的矩阵运算。如下图所示。

从结构上看,每一层计算都是这样,我们就可以用计算机进行并行运算,进而使用GPU加速。

这样的本质是:通过隐藏层进行特征转换

把隐藏层通过特征提取来替代原来的特征工程,这样在最后一个隐藏层输出的就是一组新的特征(相当于黑箱操作)而对于输出层,其实是把前面的隐藏层的输出当做输入(经过特征提取得到的一组最好的特征)然后通过一个多分类器(可以是softmax函数)得到最后的输出y。

2)模型评估 Goodness of function

1>损失实例

对于模型的评估,我们一般采用损失函数来反应模型的好差,所以对于神经网络来说,我们采用交叉熵(cross entropy)函数来对和

的损失进行计算,接下来我们就是调整参数,让交叉熵越小越好。

2>总体损失

损失不是单层看的,而是总体的损失统计,把所有损失的数据加起来才是总体损失L,然后找出最小的损失L,或者找出一组神经网络的参数来最小化总体损失L。

3)选择最优函数 Pick the best function

寻找最优函数的方法就是梯度下降。

1>反向传播

在神经网络中计算损失最好的方法就是反向传播。

二、反向传播算法 Back Propagation

1、梯度下降

之前也讲过梯度下降,这里就不详细说了,感兴趣的可以去翻翻前面的笔记哦。

这里\theta表示一组参数,计算偏微分,然后不断地更新\theta

当然,我们会遇到下面两种情况,前一层的输出会影响到下一层的输入,连锁影响,数学中的链式法则Chain Rule,反向传播用的就是链式法则Chain Rule。下图中,可以看出x会影响y,y会影响z;当z对s求偏导时,对x和y都有影响。

2、反向传播

  • 损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的,用L表示。

  • 代价函数(Cost function)是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。

  • 总体损失函数(Total loss function)是定义在整个训练集上面的,也就是所有样本的误差的总和。也就是平时我们反向传播需要最小化的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值