聊聊深度学习这档子事(3):寻找万能的通用模型
聊聊深度学习这档子事(3):寻找万能的通用模型
作者: 许野平 2016-06-18 于济南
前面说过,机器学习最终结果的好坏,取决于模型的选择和训练数据的采集。今天讨论一下模型的选择。在前面的讨论中,我们假定身高与体重存在函数关系y=ax+by=ax+b。给人的感觉有些太武断了。为什么它们满足这种关系?它们之间不会是其他别的关系吗?
因此,数学家们在考虑,是否能找到一种万能的函数表示方法,能表示世间的一切函数关系?如果确实存在这样一个模型,机器学习的问题就解决一半了,模型用这个通用的,剩下只需要求解参数就行了。那么,这样万能的通用模型存在吗?
1. 幂级数
数学里面有个泰勒定理,说的是“任何”函数 f(x)f(x),一定能表示成一系列幂函数的线性组合:
f(x)=a_0 + a_1x +a_2x^2+a_3x^3+......+a_nx^n + r_n(x)
看到这里,有人已经忍不住要惊叹了,原来幂级数就是万能的数学模型呀,几乎可以表示世间一切函数了。你先别太兴奋,幂级数只是其中之一,下面我们再看另一个模型。
2. 傅里叶级数
傅里叶级数数,“任何”函数都可以表示成一系列三角函数的线性组合:
f(x) = a_0 + a_1cos(x) + b_1sin(x) + a_2cos(2x) + b_2sin(2x) + ......
其实这个很多情况下比幂级数还靠普,为什么呢?因为弦函数是有界函数,不会干太出格的事。幂函数就不同了,常常会给一个出人意料的预测结果。当然正常情况下,我们可以根据试验结果确定二者的优劣。
3. 最小二乘法求解
老天爷似乎一切都安排得妥妥当当,我们学过最小二乘法。我们知道如果模型可以表示成若干函数的线性组合,就可以借助最小二乘法求解。这两个级数恰好符合这个要求,因此,我们拿过来试一试,看看效果好不好。
本来想用Matlab写个例子,但是感觉有些太浪费时间了,不如先在这儿说说吧。其实结果很简单:
- 最小二乘法求解肯定没问题。已知训练样本数据求参数,就是解超定线性方程组,用最小二乘法求解毫无悬念。
- 参数个数太少,意味着模型太简单,对付复杂问题,往往这样的模型效果不佳。比如,训练数据符合模型 y=−sinx+3cos(2x−π3)y=-\sin x + 3\cos{(2x-\frac{\pi}{3})},而我们假定模型是 y=axy=ax ,再怎么学习训练也不会取得好的结果, 因为模型本身就是错的。
- 训练样本少,模型复杂,也容易发生悲剧。比如已知f(1)=2,f(2)=4,f(3)=6f(1)=2,f(2)=4,f(3)=6,我们可以得到很多函数模型,最简单的比如f(x)=2xf(x) = 2x。模型也可以复杂一些,例如f(x)=2x+(x−1)(x−2)(x−3)f(x) = 2x+(x-1)(x-2)(x-3),或者f(x)=2(x−2)(x−3)(1−2)(1−3)+4(x−1)(x−3)(2−1)(2−3)+6(x−1)(x−2)(3−1)(3−2)f(x)=\frac{2(x-2)(x-3)}{(1-2)(1-3)}+\frac{4(x-1)(x-3)}{(2-1)(2-3)}+\frac{6(x-1)(x-2)}{(3-1)(3-2)}等等。因为训练数据太少,我们不足以判定到底应该如何选取问题模型。这几个模型预测训练数据都是“零”误差,但是预测没见过的数据,则不见得奏效。因此,想取得好的效果,首先要保证足够多的训练样本。
- 模型足够复杂(即,级数中的项数保留的比较多),同时,训练样本足够多,则有希望取得良好的训练结果。
经过反反复复的实验观察,我们可以得到最终的结论,利用幂级数或者傅里叶级数,在训练数据充分的条件下,借助最小二乘法可以求得比较理想的解。到这儿,似乎应该给机器学习打上一个大大的句号了,但是到底出了什么问题,让科学家们在机器学习领域又发明了这么多令人眼花缭乱的技术?经典数学分析领域的幂级数和傅里叶级数到底存在什么致命的缺陷,导致它们在机器学习的大舞台上让位于其他角色?
聊聊深度学习这档子事(3):寻找万能的通用模型相关推荐
- 聊聊深度学习这档子事(1):待定系数法
聊聊深度学习这档子事(1):待定系数法 作者: 许野平 2016-06-16 于济南 序 深度学习这几年很火,写算法不和深度学习沾点边都不好意思和人家打招呼.面对新生事物,老朽我总觉得好奇,就想看看深 ...
- 从Clarifai的估值聊聊深度学习
从Clarifai的估值聊聊深度学习 [转载请注明出处] 前几天和 Ayden @叶瀚中 聊天时,提到了 www.clarifai.com 这家公司. 此前,我已经从各方消息中听说过创始人Matt Z ...
- 当AlphaGo战胜李世石以后,我们来聊聊深度学习
当AlphaGo战胜李世石以后,我们来聊聊深度学习 作者 黄文坚 发布于 2016年5月26日 | 大家好,我是黄文坚,今天给大家讲讲深度学习.我不讲技术原理,讲讲技术应用. 深度学习是我们明略重要的 ...
- 深度学习实战22(进阶版)-AI漫画视频生成模型,做自己的漫画视频
大家好,我是微学AI,今天给大家带来深度学习实战22(进阶版)-AI漫画视频生成模型. 回顾之前给大家介绍了<深度学习实战8-生活照片转化漫画照片应用>,今天我借助这篇文章的原理做一个AI ...
- Keras深度学习实战(25)——使用skip-gram和CBOW模型构建单词向量
Keras深度学习实战(25)--使用skip-gram和CBOW模型构建单词向量 0. 前言 1. skip-gram 和 CBOW 模型 1.1 CBOW 模型基本原理 1.2 skip-gram ...
- 深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来
作者|Yoshua Bengio,Yann LeCun,Geoffrey Hinton 译者|香槟超新星 出品|AI科技大本营(ID:rgznai100) 人工神经网络领域的研究是基于对人类智能的观察 ...
- 大白话聊聊“深度学习”和“大模型”
1950年图灵发表论文<计算机器与智能>( Computing Machinery and Intelligence),提出了"机器智能"(Machine Intell ...
- 关于一起深度学习的那些事
1.前言 这将会是一个非常非常长的专栏,写这个专栏目的是让更多人可以自助解决自己的问题.最近也慢慢忙起来了,很多时候我并没有办法很有耐心的解决一些问题,而且很多问题我甚至无法解决,不同的问题有不同的产 ...
- 基于深度学习的轴承故障识别-构建基础的CNN模型
上回书说到,处理序列的基本深度学习算法分别是循环神经网络(recurrent neural network)和一维卷积神经网络(1D convnet).上篇构建了基础的LSTM模型,这一篇自然轮到CN ...
- 深度学习机器臂控制_深度学习新进展:可自建任务解决模型的机器人问世
机器学习已被验证为让计算机完成特定任务的有效策略,通过不断的试错和数据解析训练"教会"计算机学习任务的策略,通过自学习培育出精通这项任务的人工智能机器或者程序计算模型.来自哥大工程 ...
最新文章
- mapreduce将key相同的value结合在一起_个人理解Hadoop中MapReduce
- 安装交叉工具链arm-linux-gcc
- python中如何将数字改成字符串_python中如何将数字转字符串
- typeorm_Nestjs 热更新 + typeorm 配置
- 服务器多个网站开启quarz,GitHub - WuLex/QuartzSynchroData: 多个不同站点服务器数据同步到总服务器(数据中心)...
- [BZOJ3000] Big Number (Stirling公式)
- [linux内存]伙伴系统学习笔记(一)——概念
- python有趣小程序-Python全栈开发-有趣的小程序
- ​ [RHEL7.1]重新封装系统(制作模板)
- RecSys2020推荐系统论文Recommending the Video to Watch Next: An Offline and Online Evaluation at YOUTV.de
- DDS文档数据库服务
- 常用工具方法(7S,28,SWOT,PDCA,SMART,6W2H,时间管理四矩阵,WBS,碎石分析,ORID)
- 从乔布斯的演讲中获得的启示
- s开头wifi测试软件,应对5G WiFi 新一代无线测试的挑战
- matplotlib交互式数据光标实现——mpldatacursor
- lingo与matlab用哪个?matlab能代替lingo吗?非线性规划求解器Lingo,Matlab使用心得
- openlayers6【二十二】vue addLayer实现点击地图添加图标要素信息,编辑点位信息
- Elasticsearch:rollup - 索引管理
- 华为交换机linux版本号,华为交换机S5700升级实例
- Flask项目目录设计