Brief Introduction of Deep Learning

Deep Learning的现状和发展历程

时至今日,各行各业基本都涉及到了深度学习。如下图,2012年到2016年,深度学习技术的应用呈指数增长,现在肯定更加疯狂。

file

发展历程:

file

Deep Learning

我们可以采用之前的方法来做一个Deep Learning,先不要想得太过复杂。就是三步走:

  • set a Model
  • goodness of function
  • pick the best function

Step 1: set a Neural Network

这第一步就是和之前差别最大的地方,Deep Learning会在这一步套很多层的function.这些function都有自己的参数w(weight),b(bias);这些function作为一个个"Neuron"(神经元)组成一张巨大的神经网络。

file

例如全连接前馈网络:

file

file

我们可以这样理解:整个神经网络是一个大型的function,我们输入一个Vector,它会输出一个Vector,达成我们想让它完成的工作。

file

除去输入层和输出层中间的这些神经元层的层数就是一个Deep Learning的深度。

file

谁也不知道究竟多少层才能叫做深度学习,这个技术在不断深化。

file

我们观察一个神经元对它的输入数据的处理,其实就是在做一个Matrix Operation(矩阵运算).

file

这一层做完矩阵运算的结果又会被当成下一层的输入数据,不断进行下去。

file

我们可以把这个套娃式的矩阵运算用一个f表示出来,所以说整个神经网络就相当于一个复杂的function,现如今计算机能使用GPU来加速这样的一个矩阵运算。所以我们即使设计很复杂的Neural Network也能在有限的时间内得出结果。

file

对于一个多元分类,更有必要使用Deep Learning来代替手动的feature engineering。

最后的输出层可能会设置一个Softmax来强化相似度。

file

例如手写数字的辨识。

输入的是它的像素块占有情况的一个Vector,输出的是一个和各个数字相似度组成的Vector。

file

所以更直白得看出我们仅仅需要找一个Neural Network或者说是一个function.

file

你需要去设计一个Neural Network使这个function的效果最好。

file

当然这并不简单,需要大量的实验和尝试,也需要你长期形成的一种直觉。

file

Step 2 :Goodness of function

损失函数就定义为你得到的结果与目标结果的一个交叉熵。

以手写数字辨识为例:

你输入的是1,得到的是一个十维数组,里面装的是和各个数字的相似度;你的目标Vector肯定是一个1,9个0.交叉熵越小,这两个Vector就越接近,你就离目标越近。

file

当然一个手写数字是不够的,你需要一组手写数字,然后分别求他们的交叉熵,然后加在一起用总的交叉熵来当这个实验的损失函数。

file

Step 3:求参,pick the best function

方法仍旧是我们学习过的Gradient Descent。

把前面神经网络中所有的参数列成一个大集合,然后逐一求偏微分优化。

file

file

不要听到Deep Learning还是用Gradient Descent解出来的,就感到失落。

其实Alpha go这种也是用这种方法实现的。

file

在进行Deep Learning时,我们可能要进行大量的微分运算,其实现在有很多软件可以代劳,说不定一些DL大佬还真不会算微分。

file