【机器学习】Tensorflow:概率编程初步印象
来源:互联网 发布:淘宝香云纱 编辑:程序博客网 时间:2024/06/06 04:21
谷歌对Tensorflow的定位是机器学习库而不仅仅是深度学习库。随着基于Tensorflow的深度概率编程库Edward的发展,Tensorflow踏入概率编程领域,与stan、pymc展开了竞争,大大扩展了应用范围。现在来看看基于Tensorflow的概率编程的一些初步知识笔记。
在深度学习爆火以前,很多机器学习书籍都以统计学习为主要内容。统计学分为两大派别:频率派和贝叶斯派。随着贝叶斯方法在机器学习的实际应用,贝叶斯派打足了气,很多实用的机器学习方法都以贝叶斯为基础。知乎甚至将PRML宝典称为“贝叶斯视角的机器学习方法”,可见贝叶斯方法的重要。
深度学习大热之后,统计学习方法退潮了。深度学习大致经历了感知器->浅层神经网络,DBN,RBM->CNN,RNN等阶段。其中基于概率模型的DBN和RBM,和神经网络一起催生了DNN,但是又有不同。虽然DNN有了长足发展,其基本思想、构造和80年代的论文思路基本一致;其基本原理依然是个谜,没有有理有据的指导方法。DNN网络层数越复杂,要求解出DNN的最优解,就需要在非常高维度的空间中搜索解空间;DNN很难继承人已掌握的知识,基本需要从头学起。诸多原因催生DNN和概率模型的结合,有利于限制学习维度,优化训练速度,变化出更强的普适性。DNN可以归入图模型,目前的一些猜想上认为DNN与统计方法有联系,所以有观点将统计学习和深度学习统一为概率图模型大类中。
市面上概率图模型的基础教程,按大章节可分为:统计、推断、验证。统计就是统计学原理;推断可以对应数理统计,在已有样本的基础上进行预测,类比深度学习的predict。按结构分为贝叶斯网络和马尔科夫随机场,分别对应有向图和无向图。实际应用中两者都会用到。概率图模型包含的东西很多,说的不好听叫又大又空,说的好听叫包罗万象,本质上是一个基础框架,如何用概率方法描述世界。用神棍的话说,其现实基础是量子力学。
基于Tensorflow 的Edward是一个深度概率编程库。其支持语言为Python,目前还没有支持C++的计划,其官方定位是深度概率模型的快速原型实现。Edward涉足三个领域:贝叶斯方法、概率编程、深度学习(感觉前两个可以归为一类)。其支持四类模型:
- 有向图
- 神经网络
- 生成模型(生成对抗网络)
- 贝叶斯/概率编程
Edward支持如下统计推断:
- 变分推断系列方法
- 蒙特卡洛系列方法
其他推断方法
由于带有Tensorflow血统,Edward可以利用CPU/GPU/分布式集群等计算资源,和其他机器学习库一样有自动微分、学习功能。
可以看出,Edward偏重于概率图模型中的贝叶斯网络,马尔科夫随机场系列并不怎么涉及。对于随机场,一般可以通过Tensorflow的深度学习部分来进行建模和求解。- Dustin Tran, Alp Kucukelbir, Adji B. Dieng, Maja Rudolph, Dawen Liang, and David M. Blei. 2016. Edward: A library for probabilistic modeling, inference, and criticism.
- 【机器学习】Tensorflow:概率编程初步印象
- 【机器学习】Tensorflow概率编程:线性混合模型
- TensorFlow学习笔记之一——初步印象
- 【机器学习】Tensorflow概率编程: 贝叶斯线性回归、变分贝叶斯与黑盒变分推断
- 【机器学习】tensorflow:图像空间域逆滤波初步
- 45、Docker 加 tensorflow的机器学习入门初步
- Tensorflow 的初步学习
- 【机器学习实验】概率编程及贝叶斯方法
- 【机器学习实验】概率编程及贝叶斯方法
- 机器学习与TensorFlow编程(1)线性回归模型
- 机器学习与TensorFlow编程(3)Softmax回归
- 机器学习6-tensorflow
- 新手机器学习-tensorflow
- 机器学习-TensorFlow安装
- 机器学习初步
- 机器学习初步理解
- 机器学习初步了解
- 初步认识机器学习
- opencv3.2生成不依赖vs2015的dll
- 移植wpa_supplicant和Openssl 0.9.8 za
- Android异步相关-Handler
- 22
- pat-1086. Tree Traversals Again 树的构建
- 【机器学习】Tensorflow:概率编程初步印象
- golang mgo的mongo连接池设置:必须手动加上maxPoolSize
- 反引号与$()的区别以及eval的作用
- Android性能相关--工具篇
- Codeforces 557D
- event的使用例子
- 如何往Github上提交项目(二)—SSH方式
- bzoj 1016: [JSOI2008]最小生成树计数
- C#窗口控件大小随窗口大小而改变