量化百科

机器学习前传

由ypyu创建,最终由ypyu 被浏览 6 用户

人工智能是最近很火热的话题,有的人似乎有幻觉,未来人类所有问题都可以交给电脑来处理。未来是否如此难以预知。但是在作出预测之前,我们有必要了解究竟什么是人工智能。

机器如何有人的智能呢?方法就是机器学习。机器学习不是一个新概念,很早之前就诞生了决策树、SVM、神经网络等方法。战胜了柯洁的AlphaGo和战胜了AlphaGo的AlphaZero都是神经网络算法中的深度学习。深度学习最早提出来之后,并没有对人工智能产生很显著的推进,因为它依赖于大量样本和大量计算。但随着互联网时代数据的大量产生、大量积累,深度学习重获新生。

神经网络不是万金油,它也只是解决某些问题的一种方法。什么时候我们需要它呢?为什么它可以解决问题呢?

下面我们将从简单的线性问题入手,来讨论解决不同问题的解决方法。最后简单介绍机器学习中的神经网络。希望可以让你:

  1. 体系化的了解机器学习,知道它的上下文
  2. 了解机器学习必备的基础概念:梯度下降,最优化
  3. 了解神经网络的原理

Outline:

  • problems with featured data:
  1. 正演问题
  2. 反演问题:线性反演问题,非线性反演问题,最优化
  • problems with raw data:
  1. 难以用具体函数描述的问题:机器学习,神经网络

BP实现代码参考:cypress777/MechineLearning

正演问题

从一般性的原理或模型,结合已知的具体条件,去预测观测结果称为正演问题(Forward Problems)。

比如说,已知行星运行速度和行星的直径、距离太阳的距离、密度有如下关系:

vel = k(diameter^{3}density)/distance^{2}

且已知地球的半径、密度和距离太阳的距离,我们就可以算出地球围绕太阳运行的速度。这就是解决正演问题的过程。

这个问题中模型、数据和观测数据分别有如下形式:

y =Xleft x_{1}, x_{2}, x_{3} rightcdot Mleft 1, 1, 1 right^{T}

其中  x_{1} = kcdot diameterx^{3}, x_{2} = kcdot density, x_{3} = distance^{-1} ,这就转化成了一个线性的正演问题。

考虑一般化,将所有正演问题归纳为由模型 M 和已知条件 X预测观测结果 Y 的问题:

Y =X

其中  n 为模型参数的数量。


反演问题

但是很多问题是需要通过已知条件和观测结果去归纳出一般性的原理或模型:

M

其中 k 为已知的观测值和已知条件对个数。这就是反演问题。

首先谈谈线性反演问题。

线性反演问题

考虑最简单的线性反演问题:观测数据没有误差,有充足的观测数据。

n 个未知数需要连立 n 个线性不相关的式子,有充足的观测数据也就意味着 n=k 。例如我们的技术已经可以精确的测出行星的半径、密度和距日距离,以及围绕太阳的运行速度。那么只需要知道金星、地球和火星的相关信息,就可以速度和半径、密度、距日距离的关系。

这种情况下 X_{nk} 是非奇异矩阵,问题也就转化为求 X_{nk} 的逆矩阵的问题。

考虑稍稍复杂一点的两种情况:我们有大量数据,但是这些数据都有随机误差,此时 k>n=r , rX 的秩;或当我们没有充足的观测数据,比如我们只能准确知道地球和金星的信息,这代表 k<nX_{nk}没有办法直接求逆矩阵。

对于第一种情况,我们希望求出的模型能使预测值与观测值最为接近,也就是方差最小:

E=(Y_{k} - X

展开得:

E=Y^{T}Y-M^{T}X^{T}Y-Y^{T}XM+M^{T}X^{T}XM

最小方差解必然满足:

frac{partial E}{partial M} = -Y^{T}X+M^{T}X^{T}X=0

所以可以得出:

M=(X^{T}X)^{-1}X^{T}Y

对于第二种情况,就必须引入先验信息,要么是对取值范围进行约束,要么是消除模型参数,这两点无效的情况下,我们通常采用奥卡姆剃刀原则。简单来说,就是任务模型应该尽量简单。

何为最简单,常见的一种定义是 L_{2} 范数定义的最简单模型。即:

E=m^{T}m=min

根据极值理论,引入拉格朗日算子 lambda 将条件极值问题变为无条件极值问题:

E=M^{T}M+lambda ^{T}(Y-XM)

求上述问题的极小值,也即求下式之解:

frac{E}{M}=M^{T}-lambda ^{T}M=0

M=X^{T}lambda, Y=XX^{T}lambda Rightarrow lambda =(XX^{T})^{-1}Y

最终可得:

M=X^{T}(XX^{T})^{-1}Y

非线性反演问题

然而这并非是一个线性的世界, Y=XM只能描述一部分现实关系。更多时候条件和观测结果的关系是 Y=F(X)F(X,Y)=0 。这种情况下,我们是对 F() 的参数进行估计。例如 y=asin(bsin(x_{1})+cx_{2}^{d})) ,对 M_{n=4}a,b,c,d 进行估计。

考虑有数据集 Y_kX_{nk} ,需要求解 M_n 。可以将方程看作为 Y=f(M,X)f(M,X,Y)=0 。模型 M_n 可以有多种选择,如何确定哪一个是更优的、更可靠的呢?

模型选择通常有两个通用的原则,一个是误差最小: sum{L_i((Y-F(X,M)))}sum{(L_i(F(X,Y,M)^2))} 最小,这里是;另一个是正则化,也可以理解是基于奥卡姆剃刀原则,对模型参数进行约束。正则化的一个好处就是缓解了过拟合。最后归结为最小化如下目标函数:

sum{L_i((Y-F(X,M)))}+lambda Omega

其中 Omega 为正则化项。

最优化

最小化目标函数,其实是一个最优化的过程。

sum{L_i((Y-F(X,M)))}+lambda Omega

实现最优化有很多方法,比较基础的有传统的非启发式方法如:梯度下降法,牛顿法;还有一些启发式方法:模拟退火法、遗传算法等。这里不具体讨论。

未知的非线性问题

从线性问题到非线性问题,问题似乎复杂了一些。但是还有很多时候我们完全不知道 YX 的关系的具体形式。比如说,通过西瓜的声音、花纹、根蒂的弯曲等来判断西瓜的成熟程度。很难去确定这之间有什么具体的函数关系。

人类可以凭经验去判断的成熟程度。那么计算机怎么做到呢?

机器学习--神经网络

机器?学习?

人类抽象的习得原理的过程需要大量的经验。这一过程甚至需要几代人的努力。随着互联网的发展,每天数据大量产生,又大量积累。能否用电脑利用这些数据去总结规律呢。答案是肯定的。类比人类的求知过程,我们生动的称之为机器学习。

机器学习和上文中我们提到的各种方法,本质上都是通过已知条件和观测结果,来求出两者之间的内在联系,也就是模型。只是机器学习仿照了人类智能的模式,利用的是大量数据来抽象的求解。

机器学习得益于信息的爆发,作用于一些很难直接建立函数方程的问题求解。下面我们将介绍机器学习中的一个方法,是最近最受关注的神经网络方法。

感知机

介绍神经网络之前,先介绍单个的神经元,单个的神经元是一个感知机。感知机接收输入 x(x_1, x_2...) ,每个输入都有不同的权值 omega(omega _1, omega_2...) ,总的输入即为 omegacdot x ,通过激活函数sign的处理,如果总输入超过了阀值bias,则输出1,否则输出0。

可以证明单个的感知机可以分离任何线性可分的数据。不过在具体实践中,由于sign函数不连续,通常激活函数使用的是sigmoid函数等。

神经网络

感知机就无法处理线性不可分的数据分布,将神经元组成神经网络可以解决这一问题。简单的前馈神经网络就足以解决很多复杂的分类问题。那么这是怎么做到的呢?

从数学的角度而言,单层神经相当于对数据进行了如下处理:

f(omega x-bias)

其中 f 为激活函数。这一过程相当于对数据 x(x_1, x_2, ...) 空间进行了变换:

  1. omega :升维/降维
  2. omega :缩放
  3. omega :旋转
  4. bias :平移
  5. F() :扭曲

则多层的神经网络相当于 f(omega ...f(omega f(omega x-bias) -bias) - bias) 。它对空间对变换能力更为强大。最终将数据空间的数据点扭转成线性可分的。如下图:

http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/

虽然理论证明,单层的神经网络就足以拟合任何连续函数。但是考虑到数据量和计算能力以及网络效率,具体到复杂问题时还是需要使用深度神经网络。

现在我们已经初步了解神经网络的结构和原理。那么具体来说神经网络是怎么运作的呢?

例如我们需要通过样本集训练一个神经网络来分类好瓜和坏瓜。例如 x_n [颜色值,根蒂弯曲程度,声音大小,重量], y_n [1](好瓜=1,坏瓜=0)就是样本集中的一个样本。 x_n 是神经网络的输入,经过多层神经元的处理,得到计算值 y_n^

那么显然这就转变成一个最优化问题:需要寻找神经网络的weights和bias,使得基于给定的样本集{ (x_1,y_1), (x_2,y_2), ...(x_n,y_n)},使 sum(y^_n-y_n)^2 最小。在神经网络中,通常是使用梯度下降来最优化。在back-forward的过程中更新网络的参数,利用了Back propagation算法,请自行查阅。

标签

人工智能机器学习决策树神经网络算法交易