机器学习浅谈

机器学习浅谈

  最近整理之前的学习成果,为了加深学习印象,同时也为自己的学习过程做一个记录,决定写下一系列的学习心得文章,梳理之前的学习内容。今天将从整体上记录一下我学习机器学习的过程,以及对机器学习的哲学理解。

大纲

  • 为什么机器可以学习
  • 如何进行机器学习
  • 机器学习的小案例——Perceptron

1. 为什么机器可以学习

  学习的思路便是从得到的样本中去了解一般性规律,用数学的表达方法就是:从一堆样本中找到现实世界中的规则函数 f(x) f ( x ) ,而现实世界中的这一 f(x) f ( x ) 函数又是几乎不可能得到的,所以机器学习便是根据数据样本通过一个学习过程得到可以拟合 f(x) f ( x ) 的函数 g(x) g ( x ) ,机器学习中的算法几乎都是从这一原理出发。

  那么基于数据如何求出最符合 f(x) f ( x ) g(x) g ( x ) 变成了机器学习的重要问题,也是核心问题,这个问题将贯穿机器学习的始终。一提起样本与真实概率之间的关系,可以使用Hoeffding 不等式,如下:

P[|νμ|>ϵ]2exp(2ϵ2N) P [ | ν − μ | > ϵ ] ≤ 2 exp ⁡ ( − 2 ϵ 2 N )

  这个公式告诉我们当样本数量 N N 足够大时,样本的错误率几乎可以与现实世界的错误率相等,如果满足了这一条件也就是机器学习已经成功了一半,要想整个机器学习取得全部成功还有一个条件必不可少:错误率 ν ν 要很小,第二个条件就是机器学习算法的目标了。而Hoeffding 不等式就是机器学习的理论基础。

  这个公式的机器学习理解为: ν ν 代表的是样本数据中的 h(x) h ( x ) 的错误率 Ein E i n h(x) h ( x ) 表示的是机器学习中的一种假设,而 μ μ 则代表的是 h(x) h ( x ) 在样本以外的错误率 Eout E o u t ,即真实的错误率,其数学表达方法为:

EoutEin=εxp[h(x)f(x)]=1Nn=1N[h(xn)yn] E o u t = ε x ∼ p ⁡ [ h ( x ) ≠ f ( x ) ] E i n = 1 N ∑ n = 1 N [ h ( x n ) ≠ y n ]


  中 εxP ε x ∼ P 表示的是现实世界中 x x 的产生规律,可以知道这又是我们不知道的,所以在样本的收集中这一点特别重要,要保证样本产生的规律与这一规律相符。

  通过Hoeffding 不等式和机器学习的与之的联系,可以得出在 N N 足够大的时候,in-sample error Ein E i n 会与 out-of-sample Eout E o u t 之间的差距会很小:

P[|Ein(h)Eout(h)|>ϵ]2exp(2ϵ2N) P [ | E i n ( h ) − E o u t ( h ) | > ϵ ] ≤ 2 exp ⁡ ( − 2 ϵ 2 N )

  这也就解决了我们刚才所说的第一个问题,也保证我们使用机器学习算法得到的小的 Ein E i n 是有用的,是可以反映真实世界的,是学习到了知识的。

2. 如何进行机器学习

  经过上一部分的梳理我们知道了机器学习可以分为以下两个问题:

Eout(g)Ein(g)Ein(g) little enough E o u t ( g ) ≈ E i n ( g ) E i n ( g )   l i t t l e   e n o u g h

  其实只知道这部分还不足以证明机器就可以学习了,这一部分还需要使用break point、成长函数、VC bound 等数学方法再去证明机器学习的可行性,但在这里不做详细的数学推导,后续会陆续记录。这一部分将讲述如何进行机器学习。

  机器学习的大体流程:

机器学习浅谈_第1张图片

  因为实际机器学习过程中noise 的因素是不可避免的,所以 f(x) f ( x ) 之外需加上noise 部分,这也将现实世界的 X X y y 之间的关系为:

yP(y|X) y ∼ P ( y | X )

即结果与数据之间的关系由确定关系 y=f(x) y = f ( x ) 变成了不确定关系。noise的存在也使得训练数据的结果并不能真实体现现实数据,这也是以后出现过拟合现象的原因之一。

3. 机器学习案例——Perceptron

  这一部分只介绍一个非常简单的机器学习算法,Perceptron Learning Algorithm,以后会将所学习的机器学习或者深度学习算法逐步做一个总结。

  Perceptron 是一个线性分类器,所以其表现形式为:

h(x)=sign(i=0dωixi)=sign(ωTx) h ( x ) = s i g n ( ∑ i = 0 d ω i x i ) = s i g n ( ω T ⋅ x )

这里的 x x 的维度为 d d ,为了表达方便给 x x 增加一个维度为1, ω ω 也增加一个维度用来做偏置量。

  上式便是Perceptron 的备选函数集(Hypothesis set),而Perceptron 则作为机器学习流程图中的优化算法A。Perceptron 的优化过程为:

  1. 选取初始权重 ω0 ω 0
  2. 将权重代入到线性分类器中,找到出现错误的点 sign(ωTtxn(t))yn s i g n ( ω t T ⋅ x n ( t ) ) ≠ y n
  3. 修改错误 ωt+1=ωt+yn(t)xn(t) ω t + 1 = ω t + y n ( t ) x n ( t )
  4. 一直重复2和3步,直到没有错误为止

      这是一个简单的机器学习算法,可以解决简单的线性可分数据集,这一算法针对上述机器学习流程图而言没有显性的说明错误函数(err measure),但是从算法优化过程来看,这个算法的err measure 正是最简单的0/1 error,针对err measure 还会在复习几个算法之后专门开一篇介绍。

      这篇文章简单地介绍了机器学习的流程以及一些机器学习的哲学问题,其实无论学会多少机器学习算法,总归逃不过这一流程,机器学习哲学理念打好对于以后学习算法也会事半功倍。这篇文章总体的线条较粗,要在以后不断的进行优化和加强。

      第一次使用Markdown 来编辑文章,竟然还有些喜爱这东西了。

你可能感兴趣的:(机器学习)