李宏毅机器学习 P13 Brief Introduction of Deep Learning 笔记

版权声明:站在巨人的肩膀上学习。 https://blog.csdn.net/zgcr654321/article/details/83932980

deep learning的热度增长非常快。

下面看看deep learning的历史。

最开始出现的是1958年的单层感知机,1969年发现单层感知机有限制,到了1980年代出现多层感知机(这和今天的深度学习已经没有太大的区别),1986年又出现了反向传播算法(通常超过3层就对出好的结果没有什么帮助)。

1986年有人提出了反向传播算法。

1989年有人提出只要有一层隐藏层就可以建立一个model用来模拟任何的function。

 2006年有人提出受限玻尔兹曼机(Restricted Boltzmann Machine,简称RBM),实际上这与之前的多层感知机几乎一样,只是改了个名字。主要的区别就是找初始值的方式不一样,其他都一样。如果我们用RBM方式找初值,那么就是deep learning;如果不是用RBM方式找初值,那么就是多层感知机。

但是这种RBM寻找初值的方式其实对实际效果的帮助并不大,现在已经很少有人用了。

2009年时我们发现GPU可以加速神经网络的训练过程。这大大提升了神经网络的计算速度。

2011年时有人开始将深度学习用于语音识别,2012年有人开始将深度学习用于图像识别。

Deep learning也一样是3个step:

step1里面我们必须定义一个function,这个function就是一个neural network。

neural network中的每一个neuron其实就是一个logistic regression。

不同的连接方式构成了不同的network结构。

有各种不同的连接方式,如Fully Connect Feedforward Network(全连接前馈网络)的结构:

如上图,1X1+(-1)X(-2)+1(bias)=4,然后经过sigmoid函数,值为0.98。0.12的输出值也类似。

类似地,我们可以得到后面几层神经元的输出值。

如果输入是0和0的话,则各层的神经元的值如下:

一个neural network就可以把它看成是一个function。

我们可以把上面的神经网络表示成下面的形式:

因为每一层的每个神经元都会与下一层的所有神经元都有连接,所以叫全连接。

所谓的Deep就是有很多Hidden Layers。

如下面几种著名的deep neural network结构:

neural network每层之间的运算我们经常用矩阵运算来表示。

如上图输入层与下一层的运算可以表示成图上所示的矩阵。

我们把每层用的所有w和b按层形成矩阵w1,w2...wl和b1,b2...bl。

所以我们的神经网络模型代表的function y=f(x)可以表示为:

一般情况下我们用GPU来进行矩阵运算。

我们可以把所有隐藏层看成一个teature extracter,把输出层看成一个Multi-class Classifier。

举一个例子:

如下图,一张灰度图片有256个像素,就看成一个256维的vector,可以看成有颜色的地方像素值是1,否则是0;输出层是一个10个类的分类器(一个10维的vector)。

中间的function可以有很多种,有些比较好,有些比较差。

你需要对你当前的网络结构找到一个好的function。

怎么找一个好的function呢?经验+直觉。

事实上,对于神经网络,我们决定一个好的network结构更容易,也更重要。

就目前来说,深度学习在语音和图像识别上进步很大,但在NLP方面的进步不太明显。

step2:定义一个好的function。

举例:

根据一组输入数据,计算function的loss值(cross_entropy值)。

然后我们要一种方法来调整function的各个权重,使得loss值越小越好。

我们输入的样本往往是一组数据,我们可以得到一个total loss。

挑选最佳function,还是用梯度下降方法。

多次训练,持续更新w和b参数。

就可以找到一个好的function。

这就是deep learning。

反向传播算法用在计算梯度并用梯度更新参数。

为什么要用deep learning?

早年的一个研究数据:可以看到隐藏层越多,error值越小。

有一个理论是这样说的:

任何一个连续函数,N维输入,M维输出,都可以用一个network实现。

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/83932980