聊聊深度学习这档子事(3):寻找万能的通用模型

聊聊深度学习这档子事(3):寻找万能的通用模型

作者: 许野平 2016-06-18 于济南

前面说过,机器学习最终结果的好坏,取决于模型的选择和训练数据的采集。今天讨论一下模型的选择。在前面的讨论中,我们假定身高与体重存在函数关系 y=ax+b 。给人的感觉有些太武断了。为什么它们满足这种关系?它们之间不会是其他别的关系吗?

因此,数学家们在考虑,是否能找到一种万能的函数表示方法,能表示世间的一切函数关系?如果确实存在这样一个模型,机器学习的问题就解决一半了,模型用这个通用的,剩下只需要求解参数就行了。那么,这样万能的通用模型存在吗?

1. 幂级数

数学里面有个泰勒定理,说的是“任何”函数 f(x) ,一定能表示成一系列幂函数的线性组合:

f(x)=a0+a1x+a2x2+a3x3+......+anxn+rn(x)

看到这里,有人已经忍不住要惊叹了,原来幂级数就是万能的数学模型呀,几乎可以表示世间一切函数了。你先别太兴奋,幂级数只是其中之一,下面我们再看另一个模型。

2. 傅里叶级数

傅里叶级数数,“任何”函数都可以表示成一系列三角函数的线性组合:

f(x)=a0+a1cos(x)+b1sin(x)+a2cos(2x)+b2sin(2x)+......

其实这个很多情况下比幂级数还靠普,为什么呢?因为弦函数是有界函数,不会干太出格的事。幂函数就不同了,常常会给一个出人意料的预测结果。当然正常情况下,我们可以根据试验结果确定二者的优劣。

3. 最小二乘法求解

老天爷似乎一切都安排得妥妥当当,我们学过最小二乘法。我们知道如果模型可以表示成若干函数的线性组合,就可以借助最小二乘法求解。这两个级数恰好符合这个要求,因此,我们拿过来试一试,看看效果好不好。

本来想用Matlab写个例子,但是感觉有些太浪费时间了,不如先在这儿说说吧。其实结果很简单:

  • 最小二乘法求解肯定没问题。已知训练样本数据求参数,就是解超定线性方程组,用最小二乘法求解毫无悬念。
  • 参数个数太少,意味着模型太简单,对付复杂问题,往往这样的模型效果不佳。比如,训练数据符合模型 y=sinx+3cos(2xπ3) ,而我们假定模型是 y=ax ,再怎么学习训练也不会取得好的结果, 因为模型本身就是错的。
  • 训练样本少,模型复杂,也容易发生悲剧。比如已知 f(1)=2,f(2)=4,f(3)=6 ,我们可以得到很多函数模型,最简单的比如 f(x)=2x 。模型也可以复杂一些,例如 f(x)=2x+(x1)(x2)(x3) ,或者 f(x)=2(x2)(x3)(12)(13)+4(x1)(x3)(21)(23)+6(x1)(x2)(31)(32) 等等。因为训练数据太少,我们不足以判定到底应该如何选取问题模型。这几个模型预测训练数据都是“零”误差,但是预测没见过的数据,则不见得奏效。因此,想取得好的效果,首先要保证足够多的训练样本。
  • 模型足够复杂(即,级数中的项数保留的比较多),同时,训练样本足够多,则有希望取得良好的训练结果。

经过反反复复的实验观察,我们可以得到最终的结论,利用幂级数或者傅里叶级数,在训练数据充分的条件下,借助最小二乘法可以求得比较理想的解。到这儿,似乎应该给机器学习打上一个大大的句号了,但是到底出了什么问题,让科学家们在机器学习领域又发明了这么多令人眼花缭乱的技术?经典数学分析领域的幂级数和傅里叶级数到底存在什么致命的缺陷,导致它们在机器学习的大舞台上让位于其他角色?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值