23 前馈神经网络

1 从机器学习到深度学习

23 前馈神经网络
本节的主要目的是从一个较高的角度来介绍一下,什么是深度学习,并且给深度学习一个较好的总结,给大家一个较好的印象。机器学习是目前最火热的一个研究方向,而机器学习大致可以分为,频率派和贝叶斯派。频率派逐渐演变出了统计机器学习,而贝叶斯派逐渐演变出了PGM,也就是概率图模型。下面我们分开进行描述。

1.1 频率派

统计机器学习方法基本就是由频率派的估计思想得到的。统计机器学习方法大概可以分成四种。

  1. 正则化:L1;L2 也就是之前提到的Lasso 和岭回归,这实际上并没有产生新的模型,而是在之前模型的基础上进行了改进。我们可以把它描述为Loss function + regularized。用来抑制训练的过拟合。
  2. 核化:最著名的就是我们之前提到的,Kernel Support Vector Machine (SVM) 了。
  3. 集成化:也就是Adaboost 和Random Forest。
  4. 层次化:层次化主要就是我们指的Neural Network,也就是神经网络,神经网络进一步发展就得到了我们现在研究的深度学习。而神经网络中比较著名的几类就是:1. 多层感知机(Multiple LayerPerception);2. Auto-encode;3. CNN;4. RNN。这几个组合起来就是我们经常听到的Deep Network。

1.2 贝叶斯派

贝叶斯派的估计方法就演化得到了概率图模型(Probability Graphic Model。他们大致可以分成以下三类:

  1. 有向图:Bayesian Network,也就是Deep Directed Network,包括大家听得很多的:VariableAutomation Encode (VAE),Generative Adversarial Network (GAN) 和Sigmoid Belief Network 等等。
  2. 无向图:Markov Network,也就是Deep Boltzmann Modeling,这就是我们的第二类图模型。
  3. 有向图和无向图混合在一起,就是我们常说的Mixed Network,主要包括,Deep Belief Network
    等等。

而上述几个图模型,结合起来就是我们常说的Deep Generative Network,深度生成模型。

在我们狭义的深度学习的理解中,什么是深度学习,实际上就是统计学习方法中的层次化中的Deep Network。而广义的深度学习中,还应该包括,Deep Generative Network。而实际上绝大多数的深度学习者都不太了解Deep Generative Network,确实涉及到贝叶斯的理论,深度学习就会变得很难。而且它的训练也会变得非常的复杂。

2 发展:从感知机到深度学习

23 前馈神经网络
本节主要是来讨论一下,机器学习的发展历史,看看如何从感知机到深度学习。

2.1 从时间的发展角度来看

1958 年:up,首次提出了Perceptron Linear Algorithm (PLA),这里就是我们机器学习的开端了。
1969 年:down,Marvin Lee Minsky 提出了,PLA has a limitation。因为PLA 算法解决不了non-linear 问题,比如说XOR 问题。非常戏剧的是,这一年,Marvin Lee Minsky 获得了图灵奖,他也是“人工智能之父”,第一位因为AI 而获得图灵奖的科学家。
1981 年:up,学者提出了Multiple Layer Perceptron (MLP),可以用来解决非线性的问题,就是是最初的Feedforward Neural Network。
1986 年:up,Hinton 提出了将Back Propagation (BP) 算法和MLP 完美的融合在了一起,并且发展出了Recurrent Neural Network (RNN) 算法。
1989 年:up,提出了CNN。但是也迎来了人工智能的寒冬。down,在这一年中提出了一个Universal Apposhmation theorem,也就是一个大于1 层的Hidden Layer 就可以用来拟合任何的连续函数。那么这是就提出了一个疑问:1 layer is OK,why deep?并且,在BP 算法中,随着深度的增加还会出现梯度消失的问题。
1993 年和1995 年,down,这一年中Support Vector Machine (SVM) + Kernel + Theory,获得了很好的效果。并且,Adaboost 和Rondom Forest 等Ensemble algorithm 流派的提出,获得了很好的效果。
1997 年,up,提出了LSTM,但是远不足以止住深度学习发展的颓势。
2006 年,up,Hinton,提出了Deep Belief Network (RBM) 和Deep Auto-encoder。
2009 年,up,GPU 的飞速发展。
2011 年,up,Deep Learning 运用到了语音(Speech) 中。
2012 年,up,斯坦福大学李飞飞教授,开办了一个非常重要的比赛和数据库ImageNet。
2013 年,up,提出了Variational Automation Encode (VAE) 算法。
2015 年,up,提出了非常重要的Generative Adversarial Network (GAN)。
2016 年,up,围棋上AlphaGo 彻底引爆了Deep Learning。
2018 年,up,提出了重要的Graphic Neural Network (GNN),传统的神经网络是连接主义的,而GNN 中将符合主义和连接主义进行了联合,使之具有推理的功能。

2.2 总结

其实Deep Learning 的崛起是很多因素融合的结果。这些年来,主要都是在实践上的发展,而在机器学习理论上基本没有什么进步。它的发展得益于以下几点:1. data 的则增加,big data 时代的到来;2. 分布式计算的发展;3. 硬件水平的发展。其实最主要的说白了就是效果,效果比SVM 要更好,就占据了主要的地位。
计算机学科就是一门实践为主的科学,现在在实际上取得了很好的效果。之后随着理论研究的不断深入,我们一定可以不断的完善理论知识。之后AI 方向的研究,也将是以深度学习为主流,而其他机器学习学派的知识和优点将不断地丰富深度学习,扩充深度学习,来给它更强大的效果。

3 非线性问题的三种解决方法

实际上在1958 年就已经成功的提出了Perceptron Linear Analysis (PLA),标志着人工智能的正
式诞生。但是,Minsky 在1969 年提出PLA 无法解决非线性分类问题,让人工智能陷入了10 年的低
谷。后来的发展,人们开始寻找到越来越多的,解决非线性分类问题的方法。于是,我们提出了三种
解决非线性问题的方法。

3.1 Non-Transformation

这实际上就是一种明转换,将向量从 input space 转换到 feature space,可以写做 ϕ=XZ\phi=\mathcal{X} \longmapsto \mathcal{Z} 在 Conver’ s theory 中提出, 高维空间比低维空间更加容易线性可分。很显然对于一个异或问题 (XOR) 来说,我们将 x=(x1,x2)ϕz=(x1,x2,(x1x2)2)x=\left(x_{1}, x_{2}\right) \stackrel{\phi}{\longrightarrow} z=\left(x_{1}, x_{2},\left(x_{1}-x_{2}\right)^{2}\right)
0110111101ϕ101111011000000000 \begin{array}{cccccccccc} 0 & 1 & \longrightarrow & 1 & & 0 & 1 & 1 & \longrightarrow & 1 \\ 1 & 0 & \longrightarrow & 1 & \phi & 1 & 0 & 1 & \longrightarrow & 1 \\ 1 & 1 & \longrightarrow & 0 & & 1 & 1 & 0 & \longrightarrow & 0 \\ 0 & 0 & \longrightarrow & 0 & & 0 & 0 & 0 & \longrightarrow & 0 \end{array}
很显然在三维空间中,进行空间映射后,就会变得比较容易进行线性划分了。映射后的图像
23 前馈神经网络

3.2 Kernel Method

这实际上是一种暗转的思路,也就是令 K(x,x)=<ϕ(x),ϕ(x)>,K\left(x, x^{\prime}\right)=<\phi(x), \phi\left(x^{\prime}\right)>, 在这个核函数中实际上隐藏了一个ϕ, 而 x,xX\phi, \text { 而 } x, x^{\prime} \in \mathcal{X}

3.3 Neural Network

神经网络算法实际上就是一个 Multit-Layer Perceptron (MLP),有时也会被称为,Feedforward Neural Network (FNN),所以大家在其他书上见到这几种描述都不要感到意外。我们以 XOR (位运算) 为例吧。在我们的逻辑运算中,大致有四种运算方法。
23 前馈神经网络
而后三种运算为基础运算,因为异或运算实际上是可以由后三种运算组成,也就是x1x2=(x1x2)(x1x2)x_1 \bigoplus x_2 =(⌝x_1\wedge x_2) \vee (x_1\wedge ⌝x_2)。实际上就是先做两个与运算,然后做一个或运算。把一个线性不可分的东西来分层实现,将特征空间进行了分解而已。然后,在分层运算中插入了**函数,来达到非线性映射的效果。这部分内容,比较的简单,而且网上也有大量的资料,此处就不再做过多的阐述。实际上神经网络就是一个有向无环图。所以,某种意义上说可以引入概率图的模型。
23 前馈神经网络