「机器学习-李宏毅」:Deep Learning-Introduction

这篇文章中,介绍了Deep Learning的一般步骤。

Up and downs of 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 【图像识别】

Step 1: Neural Network

在将Regression 和 Classification时,Step 1 是确定一个function set。

在Deep Learning中,也是相同的,只是这里的function set就是一个neural network的结构。

JmFnne.md.png

上图中,一个Neuron就是如上图所示的一个unit,neuron之间不同的连接方式构成不同的Neural Network。

Fully Connect Feedforward Network

JmFV1K.md.png

这是一个Fully Connect Feedforward Network【全连接反馈网络】,其中每个neuron的activation function都是一个sigmod函数。

JmFeXD.md.png

为什么说neural network其实就是一个function呢?上面两张图中,输入是一个vector,输出也是一个vector,可以用下面函数来表示。

$$ f\left(\left[\begin{array}{c}1 \\ -1\end{array}\right]\right)=\left[\begin{array}{c}0.62 \\ 0.83\end{array}\right] f\left(\left[\begin{array}{l}0 \\ 0\end{array}\right]\right)=\left[\begin{array}{l}0.51 \\ 0.85\end{array}\right] $$

JmFZ6O.md.png

上图为全连接网络的一般形式,第一层是Input Layer,最后一层是Output Layer,中间的其他层称为Hidden Layer。

而Deep Learning中的Deep的含义就是Many hidden layers的意思。

Matrix Operation

JmFkfx.md.png

上图的全连接网络中,第一个hidden layer的输出可以写成矩阵和向量的形式:

$$ \sigma\left(\left[\begin{array}{cc}1 & -2 \\ -1 & 1\end{array}\right]\left[\begin{array}{c}1 \\ -1\end{array}\right]+\left[\begin{array}{c}1 \\ 0\end{array}\right]\right)=\left[\begin{array}{c}0.98 \\ 0.12\end{array}\right] $$

JmFEp6.md.png

更为一般的公式,用W表示权重,b代表bias,a表示hidden layer的输出。输出vector y可以写成 $y = f(x)$ 的形式,即: $y= f(x)=$

JmFFt1.md.png

转换为矩阵运算的形式,就可以使用并行计算的硬件技术(GPU)来加速矩阵运算,这也是为什么用GPU来训练Neural Network 更快的原因。

Output Layer

Logistic Regression中第4节讲到Logistic Regression有局限,消除局限的一种方法是Feature Transformation。

但是Feature Transformation需要人工设计,不太“机器学习”。

在下图全连接图中,把Output Layer换成一个Multi-class Classifier(SoftMax),而其中Hidden Layers的作用就是Feature extractor,从feature x提取出新的feature,也就是 output layer的输入。

JmFpm4.md.png

这样就不需要人工设计Feature Transformation/Feature engineering,可以让机器自己学习:如何将原来的feature转换为更好分类的feature。


Handwriting Digit Recognition

Jmix6U.md.png

在手写数字辨别中,输出是一个16*16的image(256维的vector),输出是一个10维的vector,每一维表示是该image是某个数字的概率。

在手写数字辨别中,需要设计neural network的结构来提取输入的256维feature。

JmFC79.md.png

Step 2: Goodness of function

之前我们已经使用过的最小二乘法和交叉熵作为损失函数。

一般在Neural Network中,使用output vector 和target vector的交叉熵作为Loss。

Step 3: Pick the best function

在NN中,也使用Gradient Descent。

JmF90J.md.png

但是,Deep Neural Network中,参数太多了,计算结构也很复杂。

Backpropagation:an efficient way to compute $\partial{L}/\partial{w}$ in neural network.

Backpropagation本质也是Gradient Descent,只是一种更高效进行Gradient Descent的算法。

在很多 toolkit(TensorFlow,PyTorch ,Caffe等)中都实现了Backpropgation。

Backpropagation部分,见下一篇博客

Reference

「机器学习-李宏毅」:Deep Learning-Introduction

https://f7ed.com/2020/04/18/DL-introdunction/

Author

f7ed

Posted on

2020-04-18

Updated on

2020-07-03

Licensed under

CC BY-NC-SA 4.0


Comments