为何有必要进修统计机器学习?

因为你没有那么多的数据

因为未知的东西最终还是需理论所解释


基于规则?基于概率?

---- 图灵奖得主、贝叶斯之父 Judea Pearl 谈深度学习局限,想造自由意志机器人

从科学角度来说,基于规则的系统就是错误的。它们为专家建模,而不是对疾病本身建模。

问题在于,程序员创建的规则没有正确的组合。当添加更多新的规则时,你必须撤消旧的规则。它是一个非常脆弱的系统。

例如,如果医院出现程序上的变动,整个系统都必须得重写。而且我们这里谈的规则不是一两个,而是有数百个,包括专家(在这个例子中是医生)理解的所有互动方式;当专家输入100 条规则,可能就已经忘了前面几条。

我不喜欢基于规则的系统的另一个原因是它不具有科学透明性。我很懒。所以我需要了解我在做什么,我需要了解它的数学理据。基于规则的系统在数学上是不稳定的。

数学可以优雅地告诉你:“如果你的过程没出错,就能保证得出确定的结果。”这种保证令人愉快,但基于规则的系统缺乏这种保证。

上世纪 80 年代初,我们从基于规则的系统转变为贝叶斯网络时,出现了一种新的思路。贝叶斯网络是一个概率推理系统。

专家可以把自己对所在领域的专业知识输入其中,这和专家系统的目标是一致的。这一思路是对某个领域而不是应用过程建模。拿疾病的例子来说,你需要把疾病相关的局部概率知识和相关变量表现形式输入,如果你观察到一些证据,计算机将会采纳并在需要的时候激活这些概率知识,并为你计算出新的证据所需要的修正概率。

专家系统能在小数据提供精确的回答,但专家的知识本身就具有“局限性”。

世界是概率的,且目前人类已经具备处理大数据的能力,大数据便意味着“大数收敛”,这个世界的未来,毕竟还是概率的。

失去透明性

贝叶斯网络主要卖点:可重组和透明

  问题在于紧凑性和速度,这是两个主要的障碍。理论上,信念修正需要指数级的时间和指数级的存储能力,而这些难以提供。

  知识构建者理解哪些事实是相关的,哪些是无关的,这是我们的优势。这给了我们一个稀疏的网络,而当你有一个稀疏的网络,就可以利用它的稀疏性,获得速度和紧凑性。

贝叶斯网络是一种在告诉它初始信念后,快速计算出修正信念的方式。这显然是飞跃性的进步,因为它具有概率演算的所有有利属性,再加上基于规则的系统的程序优势。而且,它是透明的。

我们现在的深度学习失去了透明性。我有跟那些说深度学习“效果很好”的用户交谈过,但他们不知道为什么效果好。一旦解开了它的束缚,它会有自己的动态性,会自己做修复,做优化,而且大多数情况下能得出正确的结果。但当它被束缚,你就没有线索知道它哪里出了错,哪里需要修复。这是让我担心的事情。


插播:机器学习专家与统计学家观点上有哪些不同?

作者:麦子

链接:https://www.zhihu.com/question/29687860/answer/45794666
来源:知乎

共同点:

统计建模或者机器建模的目的都是从数据中挖掘到感兴趣的信息。下面只讨论supervised learning, 就是对一个pair:

( 自变量x,因变量y)进行建模。 也就是找到一个函数 y=f(x) , 用x 来刻画 (解释、预测)y。

首先我们要一组观察值(x,y),来 回归(learn)这个未知的函数 f。

区别:

统计学家: 在刻画 f 的过程中,统计学家用的方法是: 对于 f 的形状和 y 的random distribution 进行一些假设。

比如说假设 f 是线性模型, 或者y 是normal distribution。

然后来求在一定标准下最优的 f。

比如说,在BLUE (Best Linear Unbiased Estimators 最佳线性无偏估计)的标准下,最小二乘估计出来的 f 就是最好的估计。

然后根据对数据的distribution的假设或者是大数定律,可以求出 参数估计的不确定性 或者是 standard error。

进而构建置信区间,来表达我对我能做出的 f 的最好的估计 的信心。

优点: 可以对不确定性度量。 简单模型的可解释性强。当假设的assumptions满足时模型科学、准确、严谨。

缺点:复杂情况下assumptions难以验证。

机器学习专家:不对 y 的distribution进行过多的假设,不计算standar error,不 care bias。 通过 cross validation来判断 对于 f 的估计的好坏。

也就是说,在机器学习领域,数据量大,机器学习专家拿一部分来估计(train,learn )f,留一部分来验证预测结果的好坏。预测结果好的模型就是好模型,不计算估计参数的偏差。

缺点: 缺乏科学严谨性。

优点: 简单粗暴。 有一次听一个大牛的seminar几个教授的段子记忆尤新:"those machine learning people are making predictions without probability! "。成为了一门玄学。

对于这句话:“统计学家更关心模型的可解释性,而机器学习专家更关心模型的预测能力” : 总体来说,可解释性强的模型会损失预测能力,预测能力强的模型往往比较难解释。

常见的模型中,"可解释性强 --> 预测强" 的模型依顺序排列是

    1. Lasso+线性回归     // least absolute shrinkage and selection operator
    2. 线性回归
    3. 非线性模型
    4. 非参模型
    5. SVM

构建简单的模型,比如线性模型,更容易解释因变量对自变量的影响。 适合于那种目的是解释一个变量对另外一个变量的影响的问题。也是经典统计中最常用到的模型。

变化再多一些,非线性模型,非参模型,更灵活,选择更多,所以可能达到更好的预测效果。但是往往比较难解释x对y的影响。(这些模型都来源于统计,推广于机器学习。这些模型都是几十年前统计的研究成果了好么!!因为最近计算机速度提上来了,原来没名气,是因为计算速度带不动,数据没收集辣么多啊!!)!

因为机器学习领域的数据大,运算能力强,所以能把复杂的非参或者非线性模型用的效果比较好。

各自的领域优势?
在一些传统领域,工程实验,生物试验,社会调查,物理实验,我们能获得的数据量非常小,我们必须小心翼翼的对待我们的模型,从有限的数据中提取尽量可能多的信息。抑或是一些对参数很敏感的预测,差之毫厘失之千里,
比如检验一个艾滋病新药物是否有效,来决定要不要投入funding去进行研发,我们就要用严谨的概率统计模型。(个人做项目,小公司做项目,数据量不大,或者项目具有唯一性,那么统计机器学习便是必要的)
但是在搜索引擎,淘宝用户购买信息,人脸特征识别等领域,我们能够获得很大量的数据,而且数据维度也非常高,用传统方式建模,很有可能维度高到严谨的function根本解不出来,机器学习的理论就非常有效了。
 

那么,为什么要学统计机器学习?

Can you guarantee a certain level of inferential accuracy within a certain time budget even as the data grow in size.

Link:

History of Bayesian Neural Networks

PPT

 


如何加强透明性

这便是Bayesian Deep Learning的价值。

From: Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI

Epistemic and aleatoric uncertainty.

认知和偶然的不确定性

  GMIS 2017 | 清华大学朱军详解珠算:贝叶斯深度学习的GPU库(附视频)

[Bayes] *Bayesian Deep Learning for Transparency Improvement的更多相关文章

  1. 贝叶斯深度学习(bayesian deep learning)

      本文简单介绍什么是贝叶斯深度学习(bayesian deep learning),贝叶斯深度学习如何用来预测,贝叶斯深度学习和深度学习有什么区别.对于贝叶斯深度学习如何训练,本文只能大致给个介绍. ...

  2. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  3. A Full Hardware Guide to Deep Learning

    A Full Hardware Guide to Deep Learning Deep Learning is very computationally intensive, so you will ...

  4. A Full Hardware Guide to Deep Learning深度学习电脑配置

     https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149( 欢迎关注博 ...

  5. Why are very few schools involved in deep learning research? Why are they still hooked on to Bayesian methods?

    Why are very few schools involved in deep learning research? Why are they still hooked on to Bayesia ...

  6. (转) Awesome - Most Cited Deep Learning Papers

    转自:https://github.com/terryum/awesome-deep-learning-papers Awesome - Most Cited Deep Learning Papers ...

  7. 机器学习(Machine Learning)&深度学习(Deep Learning)资料

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

  8. 机器学习(Machine Learning)&深入学习(Deep Learning)资料

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林. ...

  9. Machine and Deep Learning with Python

    Machine and Deep Learning with Python Education Tutorials and courses Supervised learning superstiti ...

随机推荐

  1. Python游戏引擎开发(七):绘制矢量图

    今天来完毕绘制矢量图形. 没有读过前几章的同学,请先阅读前几章: Python游戏引擎开发(一):序 Python游戏引擎开发(二):创建窗体以及重绘界面 Python游戏引擎开发(三):显示图片 P ...

  2. Node.js制作图片下载爬虫的一般步骤

    图片下载爬虫分两部分:爬页面和下载图片. 爬页面时先看网址是https还是http的,然后选择不同的内置对象: 其次看编码,如果是charset=gb2312的网页就需要iconv帮忙转码,好在大部分 ...

  3. activemq5.14.5单节点安装Demo

    什么情况下使用ActiveMQ? 1     多个项目之间集成 (1) 跨平台 (2) 多语言 (3) 多项目 2     降低系统间模块的耦合度,解耦 软件扩展性 3     系统前后端隔离 前后端 ...

  4. 做一个创建cocos2d-x新项目的shell脚本

    1. 进入console目录 cd /Users/apple/Documents/MyArchitecture/Cocos2d-x/Framework/cocos2d-x-3.4/tools/coco ...

  5. .Net Framework 之 托管代码和非托管代码的区别

    一.什么是托管代码(managed code)? 托管代码:是微软的中间语言(IL),即微软中间语言MSIL(Microsoft Interspace Language). “ 源代码→机器码 ”运行 ...

  6. eclipse 模版的使用

    输入:s,然后利用快捷提示键(alt+/)高速的打出:System.out.println(""); 这样能够节省不少时间,使用了三个按键,却打出了这么多的字.事实上,这个功能是利 ...

  7. Linux下Wi-Fi配置工具2

    上回说到,linux下面的Wi-Fi配置工具,说是江湖多事,风起云涌...嗯,这回是真的要动手配置了.各种麻烦啊,想死的心都有了有木有啊. 尝试用iwconfig 话说上回说用iwconfig配置Wi ...

  8. python冒泡算法

    array = [1,2,3,6,5,4,28,2,1,9,3,0,200,2,9,3,2,98,33,988,22,0,223,0,33,78,222,88,32,0,238,883,2,0,23] ...

  9. PKCS7 的 attached 和 detached 方式的数字签名

    搜遍了整个网络,都没有详细的说明.只在一个页面上有介绍,还模棱两可的,地址是:http://docs.oracle.com/cd/E19398-01/820-1228/gfnmj/index.html ...

  10. 用interrupt()中断Java线程

    最近在学习Java线程相关的东西,和大家分享一下,有错误之处欢迎大家指正. 假如我们有一个任务如下,交给一个Java线程来执行,如何才能保证调用interrupt()来中断它呢? class ATas ...