科学网

 找回密码
  注册
科学网 标签 机器学习 相关日志

tag 标签: 机器学习

相关日志

IEEE预印本Top1:可能是时候完善人工神经网络的神经元了 【变吧!ANN们!】
Time 2020-10-30 14:04
可能是时候完善人工神经网络的神经元了 中文摘要翻译: 近年来,人工神经网络(ANN)在模式识别,机器学习或人工智能领域赢得了无数竞赛。 ANNs的神经元根据70年前对生物神经元的陈旧知识而设计的。人工神经元表示为f(wx + b)或f(WX)。此设计未考虑树突的信息处理能力。但是,最近的一些研究表明,生物树突参与了输入数据的预计算。具体而言,生物树突在提取输入(特征)之间的交互信息提取中起着作用。因此,可能是时候改善人工神经网络的神经元了。本文将树突功能添加到人工神经元中。树状函数可以表示为W i,i-1 Ai-1○A0 | 1 | 2 | ... | i-1 。广义新神经元可以表示为f(W(W i,i-1 Ai-1○A0 | 1 | 2 | ... | i-1 ))。简化新神经元可以表示为f(∑(WA○X ))。完善神经元后,可以尝试的网络有许多。本文展示了一些基本架构,以供参考。 有趣的事情:(1)串联的树突模块(W i,i-1 Ai-1○Ai-1 )的计算复杂度远低于秦九韶/Horner算法。这会加速计算机中基本函数的计算吗? (2)动物的视线具有梯度,但是卷积层不具有此特性。本文提出了梯度感受野。 (3)使用Gang神经元的网络可以删除传统网络的全连接层。换句话说,“全连接层”的参数被分配给单个神经元,这样就减少了具有相同映射能力的网络参数。 强调:ResDD可以替代当前所有ANN的神经元(ResDD模块+一个线性模块)! ResDD具有可控制的精度以获取更好的泛化能力! GitHub代码: https://github.com/liugang1234567/Gang-neuron paper链接及截图: https://doi.org/10.36227/techrxiv.12477266
个人分类: 刘刚的个人主页|1989 次阅读|0 个评论
[转载]IEEE CDC 2020 中关于 Learning 与 Control 的各种 Workshop
josh 2020-10-8 00:09
2020 IEEE Conference on Decision and Control 中有关于 Learning 与 Control 的各种 Workshop,详见: https://cdc2020.ieeecss.org/workshops.php
个人分类: Engineering Cybernetics|1655 次阅读|0 个评论
(详细视频讲解)新的基础算法:树突网络(Dendrite Net):一个用于分类、回归和系统识别的白箱模块
Time 2020-10-1 11:18
听上会儿,祝您有所得! 基础算法可以应用于大多数工程领域! 视频讲解:https://www.bilibili.com/video/BV1Dp4y1a7Bk/ ArXiv: https://arxiv.org/abs/2004.03955 GitHub(开源代码): https://github.com/liugang1234567/Gang-neuron
个人分类: 刘刚的个人主页|3328 次阅读|1 个评论
新的基础算法:树突网:一个用于分类、回归和系统识别的白箱模块
Time 2020-9-30 10:26
摘要—本文提出了一种像支持向量机(SVM)或多层感知器(MLP)一样的基础机器学习算法。 DD 的主要理论是: 如果输出的逻辑表达式包含 相应类关于输入之间的逻辑关系 (与、或、非),则该算法可以在学习后识别该类。 实验和结果:(1)作为首个白盒机器学习算法的DD,对黑箱系统展示出了出色的系统识别性能。(2)对于回归问题,通过九个实际应用证明相对于模仿神经元细胞体(Cell body Net)的MLP架构,DD具有更好的泛化能力。(3)对于分类问题,通过MINIST和FASHION-MINIST数据集验证了在更大的训练损失下DD的测试样本分类精度高于Cell Body Net。模块的数量可以有效地调整DD的逻辑表达能力,从而避免过度拟合,易于获得具有出色泛化能力的模型。(4)在MATLAB和PyTorch(Python)中进行的重复实验表明,在epoch和正向传播上,DD都比Cell body Net快。我们强调DD的白盒属性、基于可控制的精度提供的更好的泛化能力、更低的计算复杂度。 DD不仅可以用于一般工程领域,DD作为深度学习的模块具有巨大的发展潜力。代码开源: https://github.com/liugang1234567/Gang-neuron . 原文 大纲
个人分类: 刘刚的个人主页|2132 次阅读|2 个评论
人工智能的尽头是人工(二):偏差与方差之争
热度 6 heruspex 2020-9-16 08:20
自上世纪 50 年代开始,人工智能研究关心的核心问题之一就是预测。如早期的跳棋程序设计,就期望能获得对棋局的准确预测。但当年人工智能的学习算法,在研究水平上还达不到实用级,数据的采集规模和条件都很有限,硬件条件也不允许做基于大规模数据的高效计算。最初曾考虑模拟人的决策方式,比如采用基于规则的方法或专家系统。但好景不长,不多久基于规则的方法和专家系统就面临组合爆炸问题,即无法穷尽所有的可能,总有不符合规则的例外出现。所以,这一思路没持续多长时间就被其它更有效的预测方法替代。 而同时期 Rosenblatt 提出的感知机模型,让大家看到了利用有限的样本数量,从理论上估计分类器性能的希望。但这一方法风光一段时间后,就被人工智能代表人物 Marvin Minsky 指出无法解决异或问题。神经网络方向的研究也因此一度陷入困境。再加上同时期其它人工智能研究的不顺利,使得人工智能进入了第一次寒冬。 虽然如此,人类在提高模型的预测能力上还是想了很多办法,复杂的、简单的,统计的、几何的。不过用哪种方法,事实上都离不开两个基本概念的平衡或折衷,即偏差和方差。 偏差是什么呢?就像有条正确的路,然后你走的时候因为重心不稳导致无法一直沿着它走,便产生了与正确路线不同的差异,即偏差。 方差是什么呢?哲学家赫拉克利特说过,一个人不可两次同时踏进同样的河。即然无法沿精确的正确路线走,那每次走的路线自然也会不一样。把多次行走出来的路线累计起来再算对这些路线的平均结果的差异,再平方后就是方差。 我们在预测时,往往希望偏差尽可能小,以便获得好的预测。同时,也希望方差小,这样模型会更稳定。然而,这两个却天生就有矛盾,如同熊掌与鱼,不可兼得。 偏差小的,通常需要对真实的路线做更精细的匹配,这就意味着得把模型设计得更为复杂才有可能。它带来的副作用是其对数据的敏感性会增大,预测的结果容易产生更大的波动,即大的方差。偏差大的,模型相对简单,比如不管是啥路,我就走直线,那从数学上看显然是最简单的,稳定性也好。所以,对不同的路线,结果产生的波动相对也要小,即小的方差。 从人工智能角度来看,要对真实任务建模并形成好的预测性能,往往是三部分的平衡所致。一是偏差,二是方差,三是不可约简的噪声。第三部分一般认为是固有的、无法消除,所以,对世界的学习,重点主要都放在前两部分。 即然两部分的和决定了对世界的逼近能力,自然就可以沿两条不同的思路来实现。 一种是尽可能是减少偏差。以分类为例,即识别一个目标属于哪一类,能最大程度减少偏差的似乎是最简单且几何上直观的 1- 近邻分类器。按字面理解就知道,它是根据离哪个已知标签或类别的样本更近来判别未知样本的类别归属。这种方法只要衡量远近的距离或度量确定了,后面的处理都简单易行,找到 1 个最近的即可。所以,只要有标签的训练样本足够多,可以保证偏差会很低。但问题是,这样做的话,容易一叶障目,导致看不全未知的变化,以至于方差会比较高。 Cover 和 Hart 1967 年曾给出过一个著名的结论,即从渐近意义来看, 1 近邻分类的错误率不超过贝叶斯误差率或 人类误差率 的两倍。粗略来说,就是最多训练数据和测试数据会各贡献一次误差。 另一种则是减少方差,它寻找对真实世界的稳定逼近或近似。举例来说,统计学比较喜欢用的最小二乘。该方法是通过简单的特征加权组合来实现对未知世界或函数的逼近。这一方法的好处是线性,能提供强的可解释性。由于是无偏的,即估计量的数学期望等于被估计参数的真实值,著名的高斯 -- 马尔可夫定理曾证明过,在所有无偏的线性估计子中,最小二乘估计具有最小的均方偏差。 有了对偏差方差的直觉印象,科研人员发现其实在线性情况下做的无偏估计,有的时候总的偏差仍然不低。那么,如果不考虑无偏,稍微放松点,做成有偏的估计,虽然会增加一些方差,但却有可能进一步减少偏差,从而让预测性能能够进一步提升。 举例来说,偏最小二乘方法搜索有高方差和与响应高度相关的方向,并倾向于收缩掉低方差的方向。虽然不是无偏的,却也能进一步提高总的预测性能。类似地,岭回归是在所有方向均进行收缩,但对低方差方向收缩更为厉害。也有反向的处理。如自然三次样条,则是通过约束边界节点以外的部分为线性函数,以边界处偏差增大的代价来减小边界节点以外的方差。诸如此类的技巧还有很多,就不一一枚举。 在经典的偏差方差理念下,大家想到的解决方案或模型设计都是寻找这两者的平衡或折衷。然而,对实际工程应用中,事实上,有的时候也可以忽略统计上的期望,只追求对单次或有限次数意义下的有效估计。那么在这种情况下,我们可以找到更优异的模型,比如深度学习。 除了偏差与方差,统计与个体的思考外,还有科学家考虑过(非不可约)噪声存在的情况下,需要做的折衷。 比如提出过《控制论》、或者说自动化专业的“祖师爷”维纳。他发现信号的还原和噪声的抑制之间存在折衷。具体来说,在还原信号的过程中,如果只是单纯的把让信号退化的函数逆变回来,在有独立于信号退化过程的噪声存在时,那么这个噪声也得除下退化函数。结果是,当该退化函数在频率高的部分系数很小时,这些小的系数会在还原真实信号的同时放大噪声的不利影响,导致逆向还原函数的性能不理想,甚至有可能完全受噪声的影响。此时,就需要引入能自适应控制信噪比的维纳滤波器来处理。 不难看出,为了能获得好的预测性能,我们在偏差方差上花了非常多的时间和精力去寻找突破。但需要指出的是,人类和智能生命存在的意义可不止是为了预测。预测是帮助其生存的重要条件,但并非唯一意义。如果只是预测,人类和其它智能生命可能就只是机器了。这也是人工智能和人工的智能存在最大区别的地方。 张军平 2020 年 9 月 15 日 注: 在追求可解释性的前提下,科研工作者最爱用的工具是线性的,比如长宽高这种可以简单叠加计算的,就属于线性的。之所以线性意味着可解释,原因之一是因为多数人类只懂加减乘除。即使在大学中学过更为高深的高等数学,一旦进入社会,最终能保留下来的也就是利用 excel 电子表格来做简单的加减乘除运算了。所以,把模型做成线性,有利于我们理解和解释其中的道理,哈哈! (原创作品,如需转载,请联系我本人,谢谢!) 往期文章阅读: 1. 人工智能的尽头是人工? 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列20余篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC, TIP等。学术谷歌引用4000余次,H指数32。 出版科普著作《爱犯错的智能体》,曾连续24次推荐至科学网头条,2019年获得中国自动化学会科普奖。关于人工智能发展趋势的观点曾被《国家治理》周刊、《瞭望》、《科技日报》、《中国科学报》等媒体多次报道。连载的《读研秘技》至今被科学网推荐头条20次。
10262 次阅读|13 个评论
深圳大学徐平教授科研创新团队博士后招聘启事(计算成像方向)
ideal 2020-8-26 11:29
深圳大学徐平教授科研创新团队博士后招聘启事(计算成像方向) 2020.8.15 徐平教授,光学工程专业博导,微纳光学专家,深圳大学物理与光电工程学院院长。拟招聘博士后的研究方向包括但不限于:计算成像、相干衍射成像、相位恢复、压缩感知、计算机视觉、机器学习及其在显微成像领域的应用。 联系人:程冠晓博士(gx.cheng@szu.edu.cn) 应聘条件 (一)年龄在 35 周岁以下,获得博士学位不超过 3 年,具有较强的英语阅读和写作能力,能胜任科研岗位的工作要求。 (二)身体健康,勤奋敬业,具有较强的事业心和责任感,具有较强的科研创新 能力和团队协作精神,具有严谨的科学态度和良好的学术道德。 (三)具有上述研究方向相关的专业背景和研究经历。有生物医学工程、医学影像、数字图像处理、计算机视觉、机器学习、应用数学等研发经验者,优先考虑。 聘期待遇 (一)深圳市待遇 1、市政府对在站期间完成开题考核和中期考核合格的博士后研究人员发放每人 每年 18 万元(免税)的生活补助,一般每季度发放一次,合计 36 万元; 2、市政府对出站选择留深工作,且与本市企事业单位签订 3 年以上劳动(聘用) 合同的博士后,给予 30 万元启动经费资助,用于出站博士后的科研投入或创新 创业前期费用。 3、符合深圳市后备级人才条件者,可以获得 160 万元的住房补贴。 4、更多优惠政策详询市人力资源和社会保障局网站: http://www.szhrss.gov.cn/ztfw/gccrc/ (二)深圳大学待遇 1、深圳大学为理工科博士后提供约 15 万的综合年薪,对入站时符合优秀博士后 条件的人员予以额外奖励。 2、在权威期刊发表学术论文或者获得国家级科研项目的博士后,深圳大学按规 定给予科研奖励或配套资助。 3、符合学校政策要求的优秀博士后可申请转为教师。 4、博士后在站期间可以负责人身份申请各级科研项目资助。 5、博士后人员进站,可自愿选择落户深圳市。选择落户深圳市的,其配偶及未 成年子女可办理随迁入户。博士后子女入托、入学等按深圳市相关条例执行。 (三)实验室待遇: 1、实验室每月发放科研津贴 2000 元(由学校从合作导师科研项目代扣代发)。 2、实验室年终根据个人科研成绩(如发表论文 JCR 分区或申请/授权发明专利情 况等)给予科研绩效奖励。 3、从事博士后研究工作期间,可根据科研需求到国内或国外相关单位开展合作 研究。 岗位职责 (一)协助合作导师完善实验室建设,协助合作导师完成科研项目; (二)完成博后科研课题,发表高水平学术论文,参加学术会议; (三)认真履行实验室及深圳大学的管理规定。 应聘方式 (一)请将个人简历及本人近 5 年代表性学术成果的电子文档,发给联系人。邮件标题请注明:博后应聘 + 姓名。 联系人:程冠晓博士(gx.cheng@szu.edu.cn) (二)初审合格者,将被通知面试,请准备如下材料供专家组审核: 1. 个人简历; 2. 学位证明复印件; 3. 反映本人学术水平的近 5 年代表性成果复印件; 4. 博士生导师推荐信。 深圳大学徐平教授科研创新团队博士后招聘启事-计算成像方向.pdf
2838 次阅读|0 个评论
极限算法?会改变计算机底层基本函数计算速度吗? 秒了霍纳法则??
Time 2020-7-31 16:14
计算机里sin等基础函数存储方式本身是多项式系数的形式。 使用时,实际计算是多项式计算。 加快了多项式计算是不是从底层改变了计算机的计算速度呢? 文章: https://doi.org/10.36227/techrxiv.12477266 B站讲解视频: https://www.bilibili.com/video/BV1FD4y1U76C/
个人分类: 刘刚的个人主页|1734 次阅读|0 个评论
机器学习、计算机视觉的小伙伴看过来:更新新模块(IEEE 预印本已火,年热度top6):梯度感受野-替换卷积?
Time 2020-7-22 10:12
梯度感受野: 人在看东西时, 视野是有梯度的! 现有神经网络卷积丢失了这一梯度,损失了位置信息。本模块补全; 群编码:基于梯度编码,实现大脑网络模拟。 B站视频讲解:https://www.bilibili.com/video/BV1RV411B7aD/
个人分类: 刘刚的个人主页|1947 次阅读|0 个评论
Two (adapted) quotes on "Control"
josh 2020-7-21 09:19
What we cannot control, we do not understand. — Adapted from Richard Feynman: “What I cannot create, I do not understand.” The best way to predict the future is to control it. — Adapted from: “The best way to predict the future is to invent it.” (See https://quoteinvestigator.com/2012/09/27/invent-the-future/ )
个人分类: Engineering Cybernetics|1888 次阅读|0 个评论
“汉明码之父” 汉明 Hamming 的一本书与“动态规划之父” 贝尔曼 Bellman 的一本书
josh 2020-7-16 03:45
发现之前推荐过的两本非常好的书最近都再版了,供大家参考: Richard W. Hamming 的 The Art of Doing Science and Engineering: Learning to Learn 链接: https://www.amazon.com/Art-Doing-Science-Engineering-Learning/dp/1732265178 Richard Bellman 的 Eye of the Hurricane: An Autobiography 链接: https://www.amazon.com/Hurricane-Autobiography-Richard-Ernest-Bellman/dp/9971966018
个人分类: The Art of Learning and Research|3507 次阅读|0 个评论
机器学习中如何保存大规模的特征
glory8901 2020-7-15 07:44
第一种方法是直接保存在文本文件,如csv中。通用,保存多少字段都可以,调用稍微不方便一些。 第二种方法是保存在传统数据库中,如postgresql,sqlite。方便可与传统手段融合,支持sql。 第三种寻找nosql的方案,因为不需要修改,写入后读取是最重要的。速度快,支持稀疏矩阵,方便调用
1707 次阅读|0 个评论
个人领英(Linkedin)
josh 2020-7-14 06:02
链接: https://www.linkedin.com/in/charlesfangsong/
个人分类: Engineering Cybernetics|2065 次阅读|0 个评论
【当期目录】IEEE/CAA JAS第7卷第4期
IEEEJAS 2020-7-13 09:12
IEEE/CAA JAS第7卷第4期发表了 关于智能控制、稳定性分析、机器人、图像处理、智能车辆、机器学习、多智能体系统等方向论文。欢迎阅览。 01 Qinglai Wei, Hongyang Li and Fei-Yue Wang, Parallel Control for Continuous-Time Linear Systems: A Case Study , IEEE/CAA J. Autom. Sinica , vo l. 7, no. 4, pp. 919-928, July 2020. Highlights: ❖ A new parallel control structure for continuous-time linear systems is proposed. ❖ The parallel controller is proposed based on parallel control theory. ❖ The parallel controller considers both system state and control as input. ❖ The parallel controller can avoid the disadvantages of state feedback control. 02 Pierluigi Di Franco, Giordano Scarciotti and Alessandro Astolfi, Stability of Nonlinear Differential-Algebraic Systems Via Additive Identity, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 929-941, July 2020. Highlights: ❖ Representation of DAE systems as feedback interconnection. ❖ Stability analysis forDAE systems via Lyapunov Method and Small Gain-like arguments. ❖Stability analysis for nonlinear mechanical systems with holonomic constraints. ❖Stability analysis of Lipschitz DAE systems. 03 Jacob H. White and Randal W. Beard, An Iterative Pose Estimation Algorithm Based on Epipolar Geometry With Application to Multi-Target Tracking , IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 942-953, July 2020. Highlights: ❖ This paper introduces a new algorithm for estimating the relative pose of a moving camera. ❖ A novel optimization algorithm solves for the relative pose using the epipolar constraint. ❖ Applications include multi-target tracking, visual odometry, and 3D scene reconstruction. ❖ If IMU information is available, it is used to seed the pose estimation algorithm. ❖ Real-time execution of the algorithm is demonstrated on an embedded flight platform. 04 Haowei Lin, Bo Zhao, Derong Liu and Cesare Alippi, Data-based Fault Tolerant Control for Affine Nonlinear Systems Through Particle Swarm Optimized Neural Networks, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 954-964, July 2020. Highlights: ❖ A data-based fault tolerant control scheme is investigated. ❖ The unknown system dynamics is approximated by PSO-NN identifier. ❖ The HJB equation is solved with a high successful rate by the PSOCNN. ❖ The online fault tolerant control is shown to be optimal. 05 Xiaodong Zhao, Yaran Chen, Jin Guo and Dongbin Zhao, A Spatial-Temporal Attention Model forHuman Trajectory Prediction, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 965-974, July 2020. Highlights: ❖ Study the trajectory prediction jointly with temporal and spatial affinities. ❖ A LSTM model that uses attention mechanism to improve the accuracy of trajectory prediction . ❖ An experimental error analysis using data based on both world plane and image plane. 06 Ali Forootani, Raffaele Iervolino, Massimo Tipaldi and Joshua Neilson, Approximate Dynamic Programming for Stochastic Resource Allocation Problems, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 975-990, July 2020. Highlights: ❖ MDP based resource allocation problem is proposed. ❖ MPC is considered in the framework of the MDP. ❖ Algorithms suitable for computer implementation are proposed. ❖ Compressive sampling is considered for ADP. ❖ Linear architecture is considered for ADP. 07 Liang Yang, Bing Li, Wei Li, Howard Brand, Biao Jiang and Jizhong Xiao, Concrete Defects Inspection and 3D Mapping Using CityFlyer Quadrotor Robot, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 991-1002, July 2020. Highlights: ❖ A high-quality labeled dataset for crack and spalling detection, which is the first publicly available dataset for visual inspection of concrete structures. ❖ A robotic inspection system with visual-inertial fusion to obtain pose estimation using an RGB-D camera and an IMU. ❖ A depth in-painting model that allows depth hole in-painting in an end-to-end approach with real-time performance. ❖ A multi-resolution model that adapts to image resolution changes and allows accurate defect detection in the field. 08 Giancarlo Fortino, Antonio Liotta, Fabrizio Messina, Domenico Rosaci and Giuseppe M. L. Sarnè, Evaluating Group Formation in Virtual Communities, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1003-1015, July 2020. Highlights: ❖ The problem of forming effective groups in virtual communities is addressed. ❖The proposed solution exploits trust information without significant overhead by adopting local reputation instead of global reputation. ❖An index to measure the effectiveness of group formation is introduced, as well as an algorithm to drive group formation as proof of concept. ❖Experimental trials performed on two data sets extracted from social networks have shown that the adoption of the proposed solution offer significant advantages. 09 Chinthaka Premachandra, Dang Ngoc Hoang Thanh, Tomotaka Kimura and Hiroharu Kawanaka, A Study on Hovering Control of Small Aerial Robot by Sensing Existing Floor Features, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1016-1025, July 2020. Highlights: ❖ Hovering control of small aerial robot. ❖Image processing using small-type and low-weight microcontrollers. ❖Specific image feature point detection by weak directional pattern analysis. ❖On-board camera image processing based autonomous flight control of UAV. ❖Simple and low-cost image noise removal process. 10 Mohammadhossein Ghahramani, Yan Qiao, MengChu Zhou, Adrian O’Hagan and James Sweeney, AI-Based Modeling and Data-Driven Evaluation for Smart Manufacturing Processes, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1026-1037, July 2020. Highlights: ❖ To address this concern, a dynamic feature selection model based on an integrated algorithm including a meta-heuristic method (GA) and an artificial neural network is proposed. ❖The implemented algorithm considers two major conflicting objectives: minimizing the number of features and maximizing the classification performance. ❖The proposed AI-based multi-objective feature selection method together with an efficient classification algorithm can enables decision makers to scrutinize manufacturing processes. 11 Yaojie Zhang, Bing Xu and Tiejun Zhao, Convolutional Multi-Head Self-Attention on Memory for Aspect Sentiment Classification, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1038-1044, July 2020. Highlights: ❖ Using convolution and self-attention to capture semantic information of n-gram and sequence itself. ❖The aspect-sequence modeling ability and network parallelism of memory network are preserved. ❖Can complete ACSA and ATSA tasks and win in baseline. 12 Chaoyue Zu, Chao Yang, Jian Wang, Wenbin Gao, Dongpu Cao and Fei-Yue Wang, Simulation and Field Testing of Multiple Vehicles Collision Avoidance Algorithms, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1045-1063, July 2020. Highlights: ❖ A distributed real-time MVCA algorithm is proposed by extending the reciprocal n-body collision avoidance method and enables the intelligent vehicles to choose their destinations and control inputs independently. ❖The effects of latency and packet loss on MVCA are also statistically investigated through theoretically formulating broadcasting process based on one-dimensional Markov chain and the results uncover that the tolerant delay should not exceed the half of deciding cycle of trajectory planning, and shortening the sending interval could alleviate the negative effects caused by the packet loss to an extent. ❖The MVCA was tested by a real intelligent vehicle, the information on obstacles and the latitude and longitude of the vehicle were input into the algorithm, 13 Kritika Bansal and Pankaj Mukhija, Aperiodic Sampled-Data Control of Distributed Networked Control Systems Under Stochastic Cyber-Attacks, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1064-1073, July 2020. Highlights: ❖ A hybrid aperiodic sampled-data mechanism for distributed networked control systems under stochastic deception attacks is introduced to alleviate the problem of computational load, energy consumption and communication load. ❖A more general attack scenario on distributed networked control systems is considered whereby stochastic deception attacks of different intensity on different subsystems may occur. ❖The implementation of self-triggering strategy alone for distributed networked control systems under attack is also presented. ❖The analysis of the proposed strategy for an isolated system is presented as a special case. Also, minimum inter-event time is obtained for an isolated system under deception attack. 14 Chao Han and Yuzhen Shen, Three-Dimensional Scene Encryption Algorithm Based on Phase Iteration Algorithm of the Angular-Spectral Domain, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1074-1080, July 2020. Highlights: ❖ An accurate angular spectrum diffraction is used to reduce the loss of information transmission. ❖The combination of the angular spectrum diffraction and the three - phase iterative algorithm improves the security of the encrypted information. ❖The algorithm proposed can achieve the encryption and decryption of 3D scenes and increase the capacity of the encrypted information. 15 Xiaoyuan Wang, Chenxi Jin, Xiaotao Min, Dongsheng Yu and Herbert Ho Ching Iu, An Exponential Chaotic Oscillator Design and Its Dynamic Analysis, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1081-1086, July 2020. Highlights: ❖ Exponential nonlinear term This exponentially nonlinear term may make the new chaotic system have better performance. And the effectiveness of this exponential chaotic system has been proved by various theoretical analyses. ❖NIST test The exponential chaotic system passed all fifteen tests, but the Lü system passed only fourteen of them. Also the exponential chaotic system has 9 tests with P-values greater than the Lü system in all 15 tests. ❖Circuit This paper has designed a circuit corresponding to the exponential chaotic system. And the simulation results of Multisim are consistent with the theoretical analysis. 16 Mohammad Javad Morshed, A Nonlinear Coordinated Approach to Enhance the Transient Stability of Wind Energy-Based Power Systems, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1087-1097, July 2020. Highlights: ❖ Introduce a new nonlinear coordination method based on MIMO zero dynamics approach. ❖Coordinate controllers of DFIG and synchronous generators (SGs) in multi-machine power systems. ❖Propose a coordinated framework for large scale power systems with n-DFIG and m-SG. ❖Enhance transient and voltage stability of inter-connected power systems. ❖The proposed approach is implemented to the IEEE 39-bus power systems. 17 Chao Deng, Weinan Gao and Weiwei Che, Distributed Adaptive Fault-Tolerant Output Regulation of Heterogeneous Multi-Agent Systems With Coupling Uncertainties and Actuator Faults, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1098-1106, July 2020. Highlights: ❖ A novel distributed adaptive fault-tolerant control method is proposed to solve the fault-tolerant output regulation problem for heterogeneous MASs with matched system uncertainties and mismatched coupling uncertainties among subsystems. ❖Different from the existing distributed fault-tolerant control result, a more general directed network topology is considered in this paper. ❖ A novel sufficient condition with cyclic-small-gain condition is proposed by using the linear matrix inequality technique. 18 Jing Huang, Yimin Chen, Xiaoyan Peng, Lin Hu and Dongpu Cao, Study on the Driving Style Adaptive Vehicle Longitudinal Control Strategy, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1107-1115, July 2020. Highlights: ❖ A driver-adaptive fusion control strategy of Adaptive Cruise Control and Collision Avoidance was proposed. ❖Different styles of divers’ driving behavioural data were collected via driving simulator experiments, corresponding driving behaviour characteristics were extracted and used in the driver-adaptive control. ❖Real-time recognition of driving style was achieved based on fuzzy reasoning rule. ❖The effect of the fusion control strategy was validated by virtual experiments. 19 Qi Wu, Li Yu, Yao-Wei Wang and Wen-An Zhang, LESO-based Position Synchronization Control for Networked Multi-Axis Servo Systems With Time-Varying Delay, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1116-1123, July 2020. Highlights: ❖ It is demonstrated that the proposed approach can deal with the effects of system uncertainty, external disturbance, and short time-varying for the NMASS. ❖It is rigorously proved that the closed-loop control system under the proposed controller is bounded-input-bounded-output (BIBO) stable. ❖It is verified that the proposed method has better tracking and synchronization performance than the improve PID-based method by testing on a four-axis NMASS experimental platform. ❖The bandwidth-parameterization tuning method is applied in both controller design and observer design, so that the number of parameters that need to be adjusted is greatly reduced. 20 Longwei Fang, Zuowei Wang, Zhiqiang Chen, Fengzeng Jian, Shuo Li and Huiguang He, 3D Shape Reconstruction of Lumbar Vertebra From Two X-ray Images and a CT Model, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1124-1133, July 2020. Highlights: ❖ This paper introduces a novel method that use prior model and two x-ray images to reconstruct 3D vertebra. ❖We use the CT data of a vertebra specimen to provide both the shape mesh and the intensity model, and only one prior model used in our method. ❖We combine the elastic-mesh-based and statistical-intensity-model-based methods, which can provide efficient and robust 3D vertebra reconstruction. 21 Jiahai Wang, Yuyan Sun, Zizhen Zhang and Shangce Gao, Solving Multitrip Pickup and Delivery Problem With Time Windows and Manpower Planning Using Multiobjective Algorithms, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1134-1153, July 2020. Highlights: ❖ A multiobjective pickup and delivery problem with time windows and manpower planning is introduced. ❖A multiobjective iterated local search algorithm with adaptive neighborhood is proposed. ❖The nature of objective functions and the properties of the problem are analyzed. ❖The benefits of multiobjective optimization are discussed. 22 Jin Xu, Wei Wu, Keyou Wang and Guojie Li, C-Vine Pair Copula Based Wind Power Correlation Modelling in Probabilistic Small Signal Stability Analysis, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1154-1160, July 2020. Highlights: ❖ In this paper, the C-vine pair copula theory is introduced to describe the complicated dependence of multidimensional wind power injection, and samples obeying this dependence structure are generated. ❖The probabilistic stability of power system integrated with six wind farms is investigated by performing the Monte Carlo simulations under different correlation models and different operating conditions scenarios. ❖In the case study of a modified New England test system, the simplified pair copula construction (sPCC) with C-vine structure proves to have a better reflection of the actual dependence than the linear correlation coefficient (LCC) model and multivariate normal copula model. 23 Shengwen Xiang, Hongqi Fan and Qiang Fu, Distribution of Miss Distance for Pursuit-Evasion Problem, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1161-1168, July 2020. Highlights: ❖ An analytic method for solving the distribution of miss distance is proposed by integrating the error model of zero-effort miss distance. ❖Four different types of Bang-Bang disturbances are considered specifically. ❖Results provide a powerful tool for the design, analysis and performance evaluation of pursuit-evasion problems. 24 Teng Liu, Hong Wang, Bin Tian, Yunfeng Ai and Long Chen, Parallel Distance: A New Paradigm of Measurement for Parallel Driving, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1169-1178, July 2020. Highlights: ❖ Parallel driving 3.0 system as potential autonomous driving system is essentially discussed. ❖Parallel distance framework is presented to measure real and artificial world. ❖Techniques related to multiple distance calculation are quantified and compared. ❖Practical applications of parallel distance framework is introduced and outlined. 25 Lan Jiang, Hongyun Huang and Zuohua Ding, Path Planning for Intelligent Robots Based on Deep Q-learning With Experience Replay and Heuristic Knowledge, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1179-1189, July 2020. Highlights: ❖ Fast convergence and Better strategy ❖Deep Q-learning ❖Experience replay ❖Heuristic knowledge 26 Luping Wang and Hui Wei, Avoiding Non-Manhattan Obstacles Based on Projection of Spatial Corners in Indoor Environment, IEEE/CAA J. Autom. Sinica , vol. 7, no. 4, pp. 1190-1200, July 2020. Highlights: ❖ A method is presented to avoid non-Manhattan obstacles in an indoor environment from a monocular camera. ❖The method can cope with the non-Manhattan obstacle without prior training, making it practical and efficient for a navigating robot. ❖The approach is robust against changes in illumination and color in 3D scenes, without the knowledge of camera’s intrinsic parameters, nor of the relation between the camera and world.
1683 次阅读|0 个评论
基于机器学习的癫痫脑电数据分类
Lewistute 2020-6-29 11:19
1 前言 癫痫俗称 “ 羊癫风 ” 或 “ 羊角风 ” ,由于部分神经元的异常放电导致大脑短暂功能异常,是一种严重的同时很难治愈的慢性疾病。癫痫发作通常表现为突然、短暂的痉挛,或出现动作中止不动,两眼呆滞等。长时间的癫痫发作会使患者长期处于紧张焦躁不安中,影响其身心发展及精神健康。其中包括:( 1 )严重影响生命安全。由于癫痫的发作经常是突然,无法预料的,所以发作会导致患者烫伤、摔伤,严重者会出现溺水或交通事故。( 2 )容易患有精神疾病。癫痫患者长期在学业、就业以及工作中受到歧视,使得深深影响其精神的健康发展。( 3 )使得智力下降、并出现记忆障碍,可能最终导致丧失生活能力。癫痫脑电波主要包括尖波、棘波、尖慢复合波及棘慢复合波等,癫痫发作时与未发作的波形对比如图 1 所示。 图 1 (a) 癫痫发作时脑电图 图 1 (b) 癫痫未发作时脑电图 目前,对癫痫的诊断常常是医生通过对脑电图信号结合患者是否出现异常的抽搐进行联合检查,从而判断是否出现异常放电和癫痫发作。然而,这种方法不仅费时,而且由于医生的主观性极强,容易造成误诊。因此,有必要通过一种实时、准确的方式自动检测和预测癫痫的发作。基于机器学习方法对脑电信号进行自动检测有较好的效果和较高的准确率。这种类型的方法主要有以下几个步骤构成:特征提取、特征选择以及分类器分类。其中,特征选择在提取众多不同类型特征时起到降低特征数目,减小算法复杂度的重要作用。 2 数据描述 本文所用的脑电图数据来源于一位癫痫患者的脑电信号记录。该病人脑电数据包含 38 个连续 EDF 文件( EDF 为存储脑电图信号专有文件格式信号和脑电图信号在一个 EDF 文件被称为一个样本。)和一个注释文档用来标记病人脑电数据记录的开始时间和结束时间以及癫痫发作和发作结束的具体时间。本文以编号为 23 的脑电数据为例进行分析。 3 数据预处理 我们选取一个导联数据进行分析,根据注释文档截取出一段癫痫发作的脑电数据和一段等时长的未发作时的脑电数据,然后对两段数据进行特征提取和标注。针对上述脑电数据,每次特征提取选取长度为 5 秒的数据,再次提取时滑动 0.5 秒。特征提取可以降低分类器的计算成本,提高分类器的性能。特征提取阶段我们所提取的特征有: (1) 均值 所有数据进行累加求和,再除以数据个数: (1) (2) 方差 表示该组数据的分散程度: (2) 4 分类方法及实验结果 4.1 感知机 感知机是 1957 年,由 Rosenblatt 提出会,是 神经网络和支持向量机 的基础。感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是 +1 和 -1 ,属于判别模型。假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。如果是非线性可分的数据,则最后无法获得超平面。 感知机从输入空间到输出空间的模型如下: (6) 其中, x 为输入矩阵, w , b 为参数, sign 为激活函数。 损失函数为: (7) 优化器采用梯度下降法,随机抽取一个误分类点,通过公式 (8) 调整 w , b 的值,使分离超平面向该误分类点的一侧移动,直至误分类点被正确分类。 (8) 采用感知机进行分类时,选择均值和方差作为特征值输入, 图 2 为模型的分类结果。 图 2 感知机模型训练结果 4.2 感知机 支持向量机( Support Vector Machine, SVM )是一类按监督学习( supervised learning )方式对数据进行二元分类的广义线性分类器( generalized linear classifier ),其决策边界是对学习样本求解的最大边距超平面( maximum-margin hyperplane )。 SVM 使用铰链损失函数( hinge loss )计算经验风险( empirical risk )并在求解系统中加入了正则化项以优化结构风险( structural risk ),是一个具有稀疏性和稳健性的分类器。 SVM 可以通过核方法( kernel method )进行非线性分类,是常见的核学习( kernel learning )方法之一。 SVM 被提出于 1964 年,在二十世纪 90 年代后得到快速发展并衍生出一系列改进和扩展算法,在人像识别、文本分类等模式识别( pattern recognition )问题中有得到应用。 当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。 假设有一堆样本点 ( x 1 , y 1 ), ( x 2 , y 2 )... ( x n , y n ) ,在 SVM 中,我们采用 +1 和 -1 来区分类别,假设超平面 ( w , b ) 可以将训练样本正确分类,则 SVM 模型的目标函数,就是这样一个超平面,可表示为公式 (8) : (8) 其中, 是 SVM 的核函数,当样本点线性可分类时,采用线性核;当样本点非线性时,可采用多项式核、径向基函数核、拉普拉斯核和 Sigmoid 核等,进行维度变换。 如果能够正确分类所有样本点的超平面存在,而对应的决策函数如公式 (9) 所示: (9) 其中, sign 函数是符号函数: (10) 实验中,我们同样选择均值和方差作为特征值输入,图 3 为模型的分类结果。 图 3 支持向量机模型训练结果 5 总结 1. 感知机追求最大程度正确划分,最小化错误,很容易造成过拟合。支持向量机追求间隔最大化超平面,一定程度上避免过拟合; 2. 支持向量机对非线性数据分类,也有着良好的表现;
个人分类: 机器学习|772 次阅读|0 个评论
看似繁荣的机器学习,却已不见百花齐放
热度 1 zmpenguestc 2020-6-28 15:12
很多时候,看见不少申报课题的立项依据、投稿论文的引言中写到,本项目(本论文)要利用深度学习(DL)做 ××× 识别,大篇幅阐述了这类识别的重要性和应用前景。比如谈得最多的是有关各类病变的医学影像处理,主要难度是缺少大数据,因此,难于获得高精度的识别与分类结果。试问: 有了大数据还需要你研究吗,那不就是做一下标注的工作吗,这是工业届人士(工程师)去解决的问题。 研究背景中明确说到,这类影像针对的患者和病例达数亿人(如糖尿病、肝病等),那怎么还会缺大数据呢?只能说明,你不拥有大数据。既然你得不到数据,为啥还选择这个方向的研究呢?那么完全可以交给拥有大数据的机构去做。 所以,问题的本质不在数据少,而在于研究课题的本身所涉及的科学问题的凝练,你是要解决脏、乱、差样本的学习问题(共性问题),还是具体应用中数据存在的个性(语义)问题。 我们不能视深度学习为万能工具,而把数据当道具。这样的课题申报书和学术论文看起来就是千篇一律的,缺了一些特色和味道。 机器学习(ML)曾经历过演化计算(EC)、小波变换(WT)、压缩感知(CS)及视觉特征建模等一浪高过一浪的热潮,自泛信息领域通吃的深度学习(DL)粉墨登场以来,其热度和普及程度前所未有。于是乎,神马概率统计、矩阵理论、优化理论等数学基础和信号处理、图像处理、模式识别等专业基础均显得可有可无。当年,那些苦苦探寻BP神经网络动力学行为的学者们,也只能暗自神伤 ...端到端, 意味着少了人的干预, 意味着高度智能化。我们要做的就是在输入端准备好数据,输出端定义好结果... ML领域的研究早已看不见以往所呈现的百花齐放的景象。 长按/扫一扫二维码,敬请关注“闻道研学” 相关博文: 如何看待学生的追“AI”潮
个人分类: 科海拾零|9703 次阅读|2 个评论
突然发现我是IEEE预印版paper总点击top1
热度 1 Time 2020-6-23 01:14
莫名兴奋! https://www.techrxiv.org/articles/It_may_be_time_to_perfect_the_neuron_of_artificial_neural_network/12477266
2769 次阅读|1 个评论
完善神经元,完善所有的神经网络,等待大家一起去研究!
Time 2020-6-21 15:31
基于国家对科研学术圈的优化,及预印版平台的发展,我决定在预印版平台上构建自己的个人学术主页(便于推广和引用,构建学术声誉,扩大学术影响力) 以下是我个人主页的简要内容, 相信大家看完都有所得! 完善人工神经元后有太多神经网络需要去探索了,需要大家一起尝试 B站视频讲解: https://www. bilibili.com/video/BV1u a4y1Y7Tm/ ( 强烈推荐 ) 预印版形式的个人主页(不提交期刊,保留主页更新的版权): https://www. https://www.techrxiv.org/articles/It_may_be_time_to_perfect_the_neuron_of_artificial_neural_network/12477266 我们知道,人工神经网络的灵感来自于生物神经网络。70年前,人们通过模仿当时生物神经元的知识来设计人工神经元。今天,由于生物学的发展,我们对神经元,特别是树突的工作原理有了比较好的了解。 我发现,在设计的时候,传统的人工神经元忽略了生物神经元或生物神经网络中树突参与预计算的事实。 更具体地说,生物树突在大脑中对输入数据的交互信息进行预处理。这可以通过生活中的两项任务简单地说明。为了理解图片任务,生物树突在提取输入图片各部分之间的关系方面发挥了作用。为了理解一篇文章或一个语音任务,生物树突在提取输入词中各部分之间的关系方面起着重要作用。 传统的人工神经元在提取输入数据的交互信息方面存在不足。因此我们设计了很多卷积层。Gang神经元可能会减少现有网络的层数来完成同样的任务。 简要摘要 近年来,人工神经网络(ANNs)在模式识别、机器学习和人工智能方面赢得了众多比赛。神经网络的基本单元是模拟大脑中的神经元。神经网络中的神经元表示为f(wx+b)或f(wx)。这种结构没有考虑树突的信息处理能力。然而,最近的研究表明树突参与了大脑的预计算。具体来说,生物树突对输入数据的交互信息进行预处理。因此,是时候完善神经网络中的神经元了。本文在前人研究的基础上,加入树突处理部分,提出了一种新的人工神经元(CR-PNN或Gang变换)。树突处理部分可以表示为WA.X。因为我完善了神经网络的基本单位——神经元,所以有那么多的网络可供尝试。 一些截图如下:
个人分类: 刘刚的个人主页|2396 次阅读|0 个评论
个人简历
josh 2020-5-19 10:24
个人简历(非正式;来自于个人网页): resume.pdf 不知道有没有用人单位感兴趣?欢迎垂询 :) 联系电邮:fang.song@aliyun.com
个人分类: Engineering Cybernetics|1781 次阅读|0 个评论
Gang变换(比传统BP快5-10倍):泰勒级数可以映射所有函数关系,将所有函数关系转化为泰勒级数的网络版。
Time 2020-5-16 22:36
Gang变换的简单理解是: 将泰勒展开式转化为一种特殊神经网络。 误差反传模拟泰勒展开式中的导数。 网络层数代表精度。 每增加一个阶次,只需增加一层。 😉😉😉给大家一直探索的神经网络解释性以直观解答。 反向传播算法为啥好用呢? 泰勒级数的导数咋回事呢? Gang变换告诉你,异曲同工! 我的B站讲解:https://b23.tv/XFtER7
个人分类: Gang系统分析方法论|2661 次阅读|0 个评论
关于 Learning-in-the-Loop Control “机器学习在控制回路/闭环” 所能达到的性能极限的文章
josh 2020-5-16 05:24
Fundamental Entropic Laws and L_p Limitations of Feedback Systems: Implications for Machine-Learning-in-the-Loop Control 链接: https://arxiv.org/abs/1912.05541
个人分类: Engineering Cybernetics|1352 次阅读|0 个评论
[转载]“Interplay Research 内参” mailing list / e-letter
josh 2020-5-12 06:22
链接: https://zhuanlan.zhihu.com/p/131015757 https://zhuanlan.zhihu.com/p/133662740
个人分类: The Art of Learning and Research|1463 次阅读|0 个评论
Hindawi特刊 | 机器学习和数据挖掘在移动医疗中的应用
Hindawi 2020-4-30 10:19
​期刊: Mobile Information Systems 特刊: Artificial Intelligence for Mobile Health Data Analysis and Processing(人工智能在移动医疗数据分析和处理方面的应用) 出版日期: 2018年11月 本期特刊以近期快速发展的移动健康为启发,探讨了人工智能在移动医疗数据和分析方面的应用。物联网(IoT)正在变革 智慧医疗 (eHealth),尤其是 移动医疗 (m-Health)系统。目前,越来越多的固定及移动医疗器械被安装在患者体内和医疗设备上。患者所处的临床/家居环境收集种类繁多的海量健康数据,并将其发送至医疗信息系统,用于病情分析。 该特刊旨在深入探讨机器学习和数据挖掘在移动医疗中的应用。 Mobile Hardware-Information System for Neuro-Electrostimulation (点击查看) 神经电刺激移动硬件信息系统 作者: Vladimir S. Kublanov、Mikhail V. Babich和Anton Yu. Dolganov 学校:俄罗斯乌拉尔联邦大学研究医疗和生物工程高科技中心(Research Medical and Biological Engineering Centre of High Technologies) 本文阐述了基于多因子神经电刺激设备的移动硬件信息系统的组织原理,并探讨了人工智能和机器学习在治疗流程管理中的应用前景。 Computer-Assisted Diagnosis for Diabetic Retinopathy Based on Fundus Images Using Deep Convolutional Neural Network (点击查看) 基于深度卷积神经网络生成的眼底图像的糖尿病视网膜病变计算机辅助诊断 作者: Yung-Hui Li(1)、Nai-Ning Yeh(1)、Shih-Jen Chen(2)和Yu-Chien Chung(3) 1:国立中央大学,台湾地区 2:国立阳明大学,台湾地区台北市北投区 3:天主教辅仁大学附设医院,台湾地区 糖尿病视网膜病变(DR)是一种糖尿病慢性并发症,早期症状较少,很难检测。目前,DR的诊断通常需要采集数字眼底图像,以及使用光学相干断层扫描技术(OCT)生成的图像。OCT设备的价格昂贵,但如果依靠读取数字眼底图像做出准确诊断,患者和眼科医生均会受益。本文作者提出了一种基于深度卷积神经网络(DCNN)的新算法,来辅助诊断糖尿病视网膜病变。 由查尔斯沃思集团(Charlesworth Group)统筹翻译。 点击查看期刊内优秀论文。
2615 次阅读|0 个评论
[转载]个人网站与个人简历
josh 2020-4-16 11:38
个人网站: https://sites.google.com/site/charlesfangsong/home 个人简历: https://sites.google.com/site/charlesfangsong/resume
个人分类: Engineering Cybernetics|0 个评论
[转载]拟牛顿法相关优化算法
ChenChengHUST 2020-4-14 10:41
https://blog.csdn.net/songbinxu/article/details/79677948 https://www.cnblogs.com/shixiangwan/p/7532830.html https://blog.csdn.net/lishuandao/article/details/51027445 https://blog.csdn.net/wsyhawl/article/details/78220011 https://blog.csdn.net/wsyhawl/article/details/78220011 https://blog.csdn.net/zgcr654321/article/details/89674713 https://blog.csdn.net/wenzishou/article/details/73350591
个人分类: 科研|1221 次阅读|0 个评论
专著 “Towards Integrating Control and Information Theories”
热度 1 josh 2020-3-25 07:03
Towards Integrating Control and Information Theories: From Information-Theoretic Measures to Control Performance Limitations By Song Fang, Jie Chen, and Hideaki Ishii This book is an attempt towards bridging control theory and information theory to characterize the fundamental limitations of generic feedback systems; in particular, we aim to develop an information-theoretic framework to analyze the performance bounds and design trade-offs that are prevalent in all possible feedback systems. Towards this end, the book introduces new entropic measures compatible with the analysis of feedback control systems and studies various classes of performance limitation relations. In addition, we examine the implications of the results in the context of state estimation and correspondingly obtain generic bounds on estimation errors. It is also worth mentioning that, thanks to the information-theoretic analysis, the aforementioned performance limits are valid for arbitrary causal controllers or estimators, whether they be designed using conventional approaches or, say, machine learning methods (learning in the loop). 链接: https://www.springer.com/us/book/9783319492889
个人分类: Engineering Cybernetics|1495 次阅读|4 个评论
AI的未来:教会机器-学会方法(learning and search),而不是学会技术
lhj701 2020-3-14 07:42
AI的未来:教会机器-学会方法(learning and search),而不是学会技术 强化学习的奠基人理查德·S·萨顿 (Richard S. Sutton)提出AI的未来是教会机器(计算机)学会能够靠自己学习的方法,而不是学会按照人类思考设计出的一门技术。而那些方法,主要靠机器自己的计算,而不是人类自己脑力计算的迁移。而目前证明能够更好work的方法是:让机器自己learning和search。Deep learning 的成功就是这样的例子。 也就是,人类负责的是设计这些机器使用的方法,而不是具体的一门门技术。未来,应该让让机器放手一搏,让它们自己找到适合机器自己的技术(通过人类设计的方法)。 PS: 当然,这让人类增加了越来越多的不安全感,我们仍然担心,未来机器会控制人类社会。但至少目前,这似乎是让AI继续发展的一种方向。 因为,机器(计算机)似乎也说:“授之于鱼不如授之于渔”。 PS : 文章原文 The Bitter Lesson Rich Sutton March 13, 2019 The biggest lesson that can be read from 70 years of AI research is that general methods that leverage computation are ultimately the most effective , and by a large margin. The ultimate reason for this is Moore's law, or rather its generalization of continued exponentially falling cost per unit of computation. Most AI research has been conducted as if the computation available to the agent were constant (in which case leveraging human knowledge would be one of the only ways to improve performance) but, over a slightly longer time than a typical research project, massively more computation inevitably becomes available . Seeking an improvement that makes a difference in the shorter term, researchers seek to leverage their human knowledge of the domain, but the only thing that matters in the long run is the leveraging of computation. These two need not run counter to each other, but in practice they tend to. Time spent on one is time not spent on the other. There are psychological commitments to investment in one approach or the other. And the human-knowledge approach tends to complicate methods in ways that make them less suited to taking advantage of general methods leveraging computation. There were many examples of AI researchers' belated learning of this bitter lesson, and it is instructive to review some of the most prominent. In computer chess, the methods that defeated the world champion, Kasparov, in 1997, were based on massive, deep search. At the time, this was looked upon with dismay by the majority of computer-chess researchers who had pursued methods that leveraged human understanding of the special structure of chess. When a simpler, search-based approach with special hardware and software proved vastly more effective, these human-knowledge-based chess researchers were not good losers. They said that ``brute force search may have won this time, but it was not a general strategy, and anyway it was not how people played chess. These researchers wanted methods based on human input to win and were disappointed when they did not. A similar pattern of research progress was seen in computer Go, only delayed by a further 20 years. Enormous initial efforts went into avoiding search by taking advantage of human knowledge, or of the special features of the game, but all those efforts proved irrelevant, or worse, once search was applied effectively at scale. Also important was the use of learning by self play to learn a value function (as it was in many other games and even in chess, although learning did not play a big role in the 1997 program that first beat a world champion). Learning by self play, and learning in general, is like search in that it enables massive computation to be brought to bear. Search and learning are the two most important classes of techniques for utilizing massive amounts of computation in AI research. In computer Go, as in computer chess, researchers' initial effort was directed towards utilizing human understanding (so that less search was needed) and only much later was much greater success had by embracing search and learning. In speech recognition, there was an early competition, sponsored by DARPA, in the 1970s. Entrants included a host of special methods that took advantage of human knowledge---knowledge of words, of phonemes, of the human vocal tract, etc. On the other side were newer methods that were more statistical in nature and did much more computation, based on hidden Markov models (HMMs). Again, the statistical methods won out over the human-knowledge-based methods. This led to a major change in all of natural language processing, gradually over decades, where statistics and computation came to dominate the field. The recent rise of deep learning in speech recognition is the most recent step in this consistent direction. Deep learning methods rely even less on human knowledge, and use even more computation, together with learning on huge training sets, to produce dramatically better speech recognition systems. As in the games, researchers always tried to make systems that worked the way the researchers thought their own minds worked---they tried to put that knowledge in their systems---but it proved ultimately counterproductive, and a colossal waste of researcher's time, when, through Moore's law, massive computation became available and a means was found to put it to good use. In computer vision, there has been a similar pattern. Early methods conceived of vision as searching for edges, or generalized cylinders, or in terms of SIFT features. But today all this is discarded. Modern deep-learning neural networks use only the notions of convolution and certain kinds of invariances, and perform much better. This is a big lesson. As a field, we still have not thoroughly learned it, as we are continuing to make the same kind of mistakes. To see this, and to effectively resist it, we have to understand the appeal of these mistakes. We have to learn the bitter lesson that building in how we think we think does not work in the long run. The bitter lesson is based on the historical observations that 1) AI researchers have often tried to build knowledge into their agents, 2) this always helps in the short term, and is personally satisfying to the researcher, but 3) in the long run it plateaus and even inhibits further progress, and 4) breakthrough progress eventually arrives by an opposing approach based on scaling computation by search and learning. The eventual success is tinged with bitterness, and often incompletely digested, because it is success over a favored, human-centric approach. One thing that should be learned from the bitter lesson is the great power of general purpose methods, of methods that continue to scale with increased computation even as the available computation becomes very great. The two methods that seem to scale arbitrarily in this way are search and learning . The second general point to be learned from the bitter lesson is that the actual contents of minds are tremendously, irredeemably complex; we should stop trying to find simple ways to think about the contents of minds, such as simple ways to think about space, objects, multiple agents, or symmetries. All these are part of the arbitrary, intrinsically-complex, outside world. They are not what should be built in, as their complexity is endless; instead we should build in only the meta-methods that can find and capture this arbitrary complexity. Essential to these methods is that they can find good approximations, but the search for them should be by our methods, not by us. We want AI agents that can discover like we can, not which contain what we have discovered. Building in our discoveries only makes it harder to see how the discovering process can be done.
个人分类: 人工智能|2597 次阅读|0 个评论
[转载]“卡尔曼滤波之父” 卡尔曼 Kalman 的 Kyoto Prize 演讲:What is System Theory?
josh 2020-2-22 23:48
推荐 Kalman 的 Kyoto Prize 演讲: What is System Theory? https://www.kyotoprize.org/wp-content/uploads/2019/07/1985_A.pdf
个人分类: Engineering Cybernetics|1348 次阅读|0 个评论
[转载]“动态规划之父” 贝尔曼 Bellman 的自传: “Eye of the Hurricane”
josh 2020-2-21 22:05
推荐一本非常好的书,“动态规划之父” 贝尔曼 Bellman 的自传: Eye of the Hurricane: An Autobiography
个人分类: Engineering Cybernetics|2794 次阅读|0 个评论
[转载]机器学习kaggle比赛准备
ChenChengHUST 2020-2-17 09:18
0基础的人如何上手Kaggle? 理论上来讲,Kaggle欢迎任何数据科学的爱好者,不过实际上,要想真的参与其中,还是有一定门槛的。一般来讲,参赛者最好具有统计、计算机或数学相关背景,有一定的coding技能,对机器学习和深度学习有基本的了解。Kaggle任务虽然不限制编程语言,但绝大多数队伍会选用Python和R,所以你应该至少熟悉其中一种。此外,对于那些对成绩有追求的人,Feature Engineering也是必不可少的。 当然,如果你从未独立做过一个项目,还是要从练习赛开始熟悉。因为竞赛模式中的任务是公司悬赏发布的实际案例,并没有标准的答案;而练习赛不仅项目难度低,而且是有官方给出的参考方案的,大家可以用来对比改善自己的测试结果,从中进行提高。所以呢,建议感兴趣的同学先去独立做一下101和playground的训练赛,至于做多少个案例才能上道,就要看个人素质啦。这里为大家推荐几篇非常好的文章,里面手把手的教了大家入门级的两个经典练习项目,供大家学习。 1. Titanic(泰坦尼克之灾) 中文教程: 逻辑回归应用之Kaggle泰坦尼克之灾 (点击查看) 英文教程: An Interactive Data Science Tutorial (点击查看) 2. House Prices: Advanced Regression Techniques(房价预测) 中文教程: Kaggle竞赛 — 2017年房价预测 (点击查看) 英文教程: How to get to TOP 25% with Simple Model using sklearn (点击查看) 3. Digital Recognition(数字识别) 中文教程: 大数据竞赛平台—Kaggle 入门 (点击查看) 英文教程: Interactive Intro to Dimensionality Reduction (点击查看) 资源: 这里有超级良心的手把手教程, 如何在 Kaggle 首战中进入前 10% , 详细介绍了Kaggle项目的大致流程,包括Data Exploration, Statistical Test, Data Processing, Feature Engineering, Model Selection, Ensemble Generation每一步该怎么做,有哪些Tips,最后还给出了一个“Home Depot Search Relevance”的案例,拿到它就可以开始自己的Kaggle排位赛了!祝愿大家都能够成为一个优秀的Data Scientist! 接下来是我整理的一些相关的学习资源,大家各取所需。 基础准备篇之Python 廖雪峰 怎么用最短时间高效而踏实地学习 Python? 你是如何自学 Python 的? 在线教育网站(Coursera网易云edx课堂腾讯课堂等)有哪些值得推荐的 Python 教程? 基础准备篇之R 业余时间如何学数据分析? 如何高效地学好 R? 好看的数据可视化的图片是怎么样做的? 基础准备篇之Machine Learning 机器学习该怎么入门? 深度学习如何入门? JustFollowUs/Machine-Learning 基础准备篇之Kaggle Experience 从Python菜鸟到Python Kaggler的过程: Python机器学习实践与Kaggle实战 经常更新的的大数据博客 TO最爱学习的你:国外大数据博客资源大全 | 36大数据 How to start doing Kaggle competitions? What do top Kaggle competitors focus on? A Journey Into Data Science Techniques to improve the accuracy of your Predictive Models 转载自: http://www.360doc.com/content/18/0106/16/44422250_719580875.shtml
个人分类: 科研|1610 次阅读|0 个评论
机器学习最终清楚地解释了基因调控
zhpd55 2019-12-29 21:46
机器学习最终清楚地解释了基因调控 诸平 据美国冷泉港实验室( Cold Spring Harbor Laboratory 简称 CSHL )的 Brian Stallard2019 年 12 月 26 日提供的消息, CSHL 的研究人员,将用于基因调控的数学热力学模型(见图 1 左上方)公式化为人工神经网络( artificial neural network 简称 ANN )(见图 1 左下方)。大型 DNA 数据集通过新的 ANN (见图 1 右图示)输入。连接方式以生物学家易于解释的方式呈现。最终可以使机器学习清楚地解释基因控制。 Fig. 1 A mathematical thermodynamic model for gene regulation (top, left) is formulated as an artificial neural network (ANN) (bottom, left). Large DNA datasets are fed through the new ANN (right). The pattern of connections is presented in a way that is easy for biologists to interpret. Credit: Kinney lab/ CSHL, 2019 在这个 “ 大数据 ” 时代,人工智能( artificial intelligence 简称 AI )已成为科学家的宝贵盟友。例如,机器学习算法正在帮助生物学家理解控制基因功能的令人眼花缭乱的分子信号。但是,随着开发出新算法来分析更多数据,它们也变得更加复杂且难以解释。 CSHL 的定量生物学家 贾斯汀· 金尼( Justin B. Kinney )和阿马尔·塔里恩( Ammar Tareen )制定了设计高级机器学习算法的策略,使生物学家更容易理解。 该算法是一种 ANN 。受神经元在大脑中连接和分支方式的启发, ANN 是高级机器学习的计算基础。尽管具有 ANN 的名称,但它并非专门用于研究大脑。 像 贾斯汀· 金尼和阿马尔·塔里恩这样的生物学家,都使用 ANN 来分析来自称为 DNA 的 “ 大规模平行报告基因分析 ” ( massively parallel reporter assay 简称 MPRA )实验方法的数据。利用这些数据,定量生物学家可以制作出 ANN ,以预测哪些分子在称为基因调控的过程中控制 特定基因 。 细胞在所有时间并非需要所有蛋白质。相反,他们依靠复杂的 分子机制 根据需要打开或关闭产生蛋白质的基因。当这些规定失效时,通常会出现疾病。 贾斯汀 · 金尼说: “ 了解基因调控的机制,对于开发针对疾病的分子疗法与束手无策之间的差异至关重要。 ” 不幸的是,根据 MPRA 数据塑造标准 ANN 的方式与科学家在生命科学中提出问题的方式大不相同。这种错位意味着生物学家发现很难解释 基因调控 是如何发生的。 贾斯汀 · 金尼助理教授在 2019 年 12 月 13 日举行的第一届计算生物学机器学习会议上展示了一种新设计的 ANN 的相对易于理解的结构 ( 见图 2 所示 ) 。 Fig . 2 Assistant Professor Justin Kinney showcases the relatively easy-to-understand structure of a newly-designed artificial neural network. His results were officially presented at the 1st Conference on Machine Learning in Computational Biology on December 13 . Credit: CSHL, 2019 现在,贾斯汀 · 金尼和阿马尔·塔里恩开发出了一种新方法,可以弥合计算工具与生物学家的想法之间的鸿沟。他们创建了自定义的人工神经网络,以数学方式反映了生物学中有关基因和控制它们的分子的常见概念。通过这种方式,这对科学家实际上迫使他们的机器学习算法以 生物学家 可以理解的方式处理数据。 贾斯汀 · 金尼解释说,这些努力强调了如何优化现代工业 AI 技术以用于生命科学。贾斯汀 · 金尼的实验室已经验证了这种用于制作定制 ANN 的新策略,因此正在将其应用于调查各种各样的生物系统,包括与 人类疾病 有关的关键基因回路。 该结果于 2019 年 12 月 13 日在加拿大温哥华举行的第一届计算生物学机器学习会议上正式宣布。也可以通过 CSHL 的 bioRxiv 服务器上 的预印本 来阅读原文,了解更多信息。 Biologists pioneer first method to decode gene expression AmmarTareen, Justin BlockKinney. Biophysical models of cis-regulation as interpretable neural networks , bioRxiv (2019). DOI: 10.1101/835942 . PostedDecember 27, 2019. Abstract The adoption of deep learning techniques in genomics has been hindered by the difficulty of mechanistically interpreting the models that these techniques produce. In recent years, a variety of post-hoc attribution methods have been proposed for addressing this neural network interpretability problem in the context of gene regulation. Here we describe a complementary way of approaching this problem. Our strategy is based on the observation that two large classes of biophysical models of cis-regulatory mechanisms can be expressed as deep neural networks in which nodes and weights have explicit physiochemical interpretations. We also demonstrate how such biophysical networks can be rapidly inferred, using modern deep learning frameworks, from the data produced by certain types of massively parallel reporter assays (MPRAs). These results suggest a scalable strategy for using MPRAs to systematically characterize the biophysical basis of gene regulation in a wide range of biological contexts. They also highlight gene regulation as a promising venue for the development of scientifically interpretable approaches to deep learning.
个人分类: 新观察|3981 次阅读|0 个评论
如何高效入门 PyTorch ?
wshuyi 2019-12-10 07:59
PyTorch 入门,坑着实不少。咱们来谈谈,如何选个合适的教程,避开它们。 选择 好几位读者,都留言问我: 王老师,我想学深度学习,到底是该学 Tensorflow ,还是 PyTorch? 没有水晶球,我也不知道谁会 最终胜出 。 从现状来看,PyTorch 的发展势头非常迅猛。在深度学习的顶会上,相关论文 增速 大幅超越 Tensorflow 。 Javaid Nabi 总结了一张最近两年 arxiv 机器学习论文中提及 PyTorch 的折线图,增长趋势一目了然。 在机器学习顶会 NeurIPS 2019 上,PyTorch 更是被单独拿出来讨论。 底下的听众,是这样的。 而另一边,Google 的 Tensorflow 2.X 版本,在 Reddit 上正被 吐槽 和围观。 如果你是个应用机器学习前沿技术的研究者,却还对 PyTorch 的存在熟视无睹,恐怕不是一个明智的选择。 你该依赖的,是深度学习研发领域的 生态系统 。具体的原理,我在《 学 Python ,能提升你的竞争力吗? 》和《 数据科学入门后,该做什么? 》两篇文章里,已经给你详细阐释过了。 简单来说,别人都用来沟通和协作的东西,你一窍不通,那就没法 愉快参与协作 了。深度嵌入到系统的协作能力,才是你 赢得竞争的秘密武器 。 例如,有人把 Google 的 BERT 从 Tensorflow 迁移到 PyTorch 后,就迅速开拓了一个评价高达 18.4K 颗星的项目。该项目受到学术界、工业界,乃至整个儿开发圈子的热情追捧。 为什么? 因为在 PyTorch 模型的基础上进行修改,非常方便,一切都是那么自然和透明。这吸引了许多研究者参与进来,一步一个脚印,利用别人做出来的东西,更进一步攀爬。 如果你做研究用到机器学习,需要站在前人的肩膀上,那 PyTorch 已经成为了你爬上别人肩膀的 重要阶梯 。 可当你信心满满,开始认真学习 PyTorch 时,多半会…… 掉在前方的 陷坑 里。 想想看,为什么网上为初学者展示深度学习 “多么简单” 的文章,举的例子除了 Keras 就是 fast.ai ,而不是 PyTorch ? 因为 PyTorch 学起来,确实没有它们那样简便。 障碍 你要学习 PyTorch ,会遇到哪些问题? 太多了。 篇幅所限,咱们只讲其中 最大的两个坑 。 首先是 面向对象 (Object-Oriented Programming, OOP)。 PyTorch 的代码,当然也可以写成 Keras 那种序列化形式。 然而对于大部分的 PyTorch 用户的应用场景来说,写成那样,是 没有什么意义 的。 因为他们中的主体,是 研究者 。研究者不会满足于现有结果或者 重复 已知模型。他们要搭建自己的模型结构,尝试做自己的实验。 如果你要 深度定制 自己的模型架构,甚至对于一些细节作出精妙的修改(例如对不同模型层次,使用不同学习速率),那 PyTorch 写出来,就会像是这个样子。 看到 class 这样的陌生关键词,你可能会觉得有些发懵 —— 用 Python 有段时间了,没见过这玩意儿啊。 Python 说简单很简单,因为它可以被当成脚本语言来使用。也就是用 顺序 、 循环 和 判断 组织起来,类似英文的操作说明。 然而,说复杂,它也可以变得非常复杂。因为它完全可以被当成 面向对象 语言来用。 许多标题里带着 “入门” 字样的 PyTorch 教材或者课程,往往会直接假设你 已经掌握了 面向对象编程的基础知识,一带而过。或者干脆告诉你,先去学习一下 OOP ,然后再回来继续学。 于是,你打开一本讲授 面向对象编程 的书,旋即被其中的 “抽象”、“继承”、“封装”、“多态” 等术语绕晕,轻松完成 “从入门到放弃”。 其实,你根本用不着 完全掌握 面向对象程序设计的各种要素,就可以学 PyTorch 。早有 William Falcon 等人把 PyTorch 的程序写法大卸八块,给了你模板。真正用的时候,你只需对着模板填空就好。 可是,一些必要的面向对象知识,还是得学。不然填空你都不知道该填的位置,容易张冠李戴。 说完了 “面向对象”,咱们再说第二个坑,也就是 “ 张量 ”(Tensor)。 PyTorch 让许多研究者用户大呼过瘾的奥秘,其实就在于 “张量”。 因为高阶 API,例如 Keras, 甚至是 fast.ai ,都对张量进行了重度 包裹 。 用户不需要理解什么是张量,也可以做图片分类,也可以分析文本的情感。 但是,PyTorch 不想惯你这种毛病。 想用它来搭建神经网络?你就必须直面张量。 你必须能够说清楚每一层输入和输出张量的样子。你必须知道怎么把你的原始数据,转换成这种样子。 这种负担,看似会惹恼或者吓走用户。然而我们看问题不能只看一面。它的好处在于,代码书写规则,一下子变得 简洁 和 一致 。 因为你早已一杆子到底,知道在 PyTorch 深度学习模型构建中, 最本质的操作 究竟是什么。你不需要别人每次都为你提供高层 API 包裹的 拐棍 。 你可以随时知道怎么完成各种操作。例如怎样修改设置细节。遇到意想不到的问题,也能了解如何高效查错。 可是要理解张量,并不像 Pandas 数据框那么简单而直观。 你会看到不少 PyTorch 的书籍和教程,都干脆指引你去学会 numpy 。然后告诉你,PyTorch 可以近似看成 numpy 的一个轻量包裹。作者其实,是在寄希望于你能 自学 好一大块知识结构,并且还可以 触类旁通 。 你怎么通? 从头学 numpy ?还是更进一步,把线性代数也学一遍? 这样做,听起来没有问题。打牢基础是好事儿嘛。但是,你可能真的等不及。 你可能是想要复现一篇论文里的结果,并且进行调整改进。 等你耐下性子,东一榔头西一棒子,学完了刚才说过的好几门基础课,别人的论文早就发出来了。 大多数时候,科学界只奖励先到者。第二名不会有任何的功劳(credit)。 况且,如果能这样学完,你至少还掌握了一项技能。 更大的可能,是你在自学相关知识体系的途中 跌倒 了,再也没有爬起来。 痛点 为什么 PyTorch 初学者,会遭遇这些困境? 因为现有的教程,大多与你 不匹配 。 甚至就连 PyTorch 的预期用户,也和你不匹配。 PyTorch 的设计,显然不是为了完全不懂编程的普通用户。按照作者原先的预想,只有学过了线性代数、科学计算、数据结构和面向对象程序设计的 专业人士 ,才是它的核心用户群体。 然而,深度学习的突破进展,像一个黑洞,吸引力异常强大。它把许多从来没有学过编程的人,都裹挟了进来。 在机器学习日新月异的进展下,太多领域存在着 低垂的果实 。只要你学会了应用现有深度学习工具,稍加改进就可以采摘到它们。 这种诱惑,你能抵挡吗? 对这个突然冒出来的人群,现有的教材和教程,很难做出足够快速和必要的调整。所以你学起来,会很吃力。 那么,作为一个非计算机类专业出身的研究者,你需要什么样的教程呢? 它应该至少有以下两个特点: 一站式 样例导向 所谓一站式,就是别只顾给出链接和线索,让读者东奔西走,甚至还得自己寻找相关的学习资源。遇到某个知识点,例如面向对象,或者张量,试图从头到尾完整学习体系知识,显然效率不高。做深度学习需要用到的,就该认真掰开揉碎讲清楚;暂时用不到的,就根本先不要提,免得让学习者被一下子涌来的信息淹没掉。 所谓样例导向,就是能有实际的例子,让学习者跟着作者讲解的进程,轻松上手操作实践。有些知识点,只要上手了,练过,犯过错,你立即就能明白其中的关窍。你从而迅速掌握,并且建立宝贵的 成就感 。反之,如果只是给你凭空灌输一系列的概念,或许能让你听着好像懂得了。可真正要用的时候,你立即就会感受到什么叫 “书到用时方恨少”。 满足上述两个必要条件的合适教程,有吗? 教程 不好找。 要满足上述两点,教程的编写者就需要长期的技能培养和打磨。技能不仅包括对于 PyTorch 本身的深入理解和掌握,还得充分理解初学者的需求,知道如何把握讲授的 进度 和 节奏 。 这还不够。作者还得寻找合适的样例,用形象化的方式表述抽象概念,甚至是用动态的效果展示张量操作与权重变化…… 这些,都需要耗费大量宝贵的时间。 大部分机器学习领域的教材和教程,在编写的时候,都有严格的时间进度限制。这个领域,一直是高强度竞争性。大家生怕自己的东西发布晚了,别人抢占先机,所以很难有足够的耐心。东西做到 60 分,能有一定合适的阅读学习群体,那还不赶紧发布?等什么? 另外,拥有这种技能的作者,往往机会成本非常高。能够全心全意投入教学,而不选择拿着自己高超的深度学习应用技能出去赚快钱,也非易事。 我最开始学 PyTorch 时,尝试了若干主流 MOOC 平台,还见识了不少网红教师的教程。可惜,不仅学得效率低,过程也很痛苦。 后来,我 终于找到 一套视频课程,真的可以满足上述两点要求。 譬如说,它将张量和面向对象知识的介绍,包含在了课程里面。作者用浅明易懂的例子,让你了解必要概念和技能后,迅速上手。 为了让你能够做一个图像分类深度学习模型,作者真的精心设计,帮你把它拆分成若干前后联系紧密的模块,一一娓娓道来。 视频中使用了不少特效和动画。例如帮助你理解一张图片如何转化成张量,如何经由你自行构造的模型加以转化,最终支持机器判断类别,以及如何计算损失,迭代改进,让你的分类模型越变越聪明。 甚至,对于为什么 GPU 可以加速深度学习,都有专门的章节,给你娓娓道来。 每一个视频,大约都是 10 分钟 - 20 分钟的长度。足够慢慢谈透一个知识点,也不会让你觉得疲倦。 大部分视频,都结合代码来介绍。你可以打开 Google Colab 或者 Kaggle Notebook ,利用免费的 GPU ,尝试自己建构和运行。 视频末尾,还总是有一些有趣的彩蛋。为了不剥夺你的乐趣,就不剧透了,你自己看。 为了保证视频的品质,这套教程精细打磨。从 2018 年秋天开始发布第一个视频起,一直持续更新了一年多的时间,才算全部制作完毕。 我学的时候,看教程是很愉快的。但是等候更新如同追剧,总是让人觉得时间过得太慢,很难熬。 好消息是,你现在不用等了。因为该教程所有的篇章都已齐备。你只需学就好了。 羡慕你。 在我的公众号 “玉树芝兰” 后台,回复 “pytorch”,我会发给你全套视频教程的链接。 小结 这篇文章里,咱们谈到了以下知识点,我帮你梳理一下。 PyTorch 在科研领域作用日益重要,你如果做深度学习科研,恐怕是不得不学习它; PyTorch 包含了一些面向对象、张量操作等前导知识要求,初学者会有不小的学习障碍。所以选择好的教程很重要; 在良莠不齐的 PyTorch 教程中,我把自己已发现的最精良一个视频教程推荐给你。希望它也能帮你快速上手 PyTorch,助你早日做出自己的优秀研究成果。论文发表了,别忘请我喝杯咖啡。 祝深度学习愉快! 读过本文,如果觉得有收获,请 点赞 。 要读更多的文章,微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 如果本文对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 学 Python ,能提升你的竞争力吗? 如何高效学 Python ? 如何快速写作论文初稿? 文科生用机器学习做论文,该写些什么? 如何用人工智能帮你找论文?
3926 次阅读|0 个评论
机器学习-周志华-绪论-学习笔记
SNXGT 2019-12-1 14:56
一、绪论 1.1引言 机器学习的“ETP”定义:通过从经验E中学习,针对某项任务T,实现了任务性能P的提升,并可以对未见过的新任务,作出有价值的判断。 1.2基本术语 数据集dataset 属性值attribute value 张成为:属性空间attribute space / 样本空间 samplespace 又称 输入空间,数据集通常是样本空间的一个采样; 标记值label 组成:输出空间labelspace; 示例instance / 样本sample + 标记label = 样例example,有时也称样本(此时,视标记 label 为样本本身的一部分)即 ( x i , y i ) 属性attribute / 特征feature 学习learning / 训练training:通过学习算法learningalgorithm,训练数据(training data),得到模型。 学得模型,定义为:假设hypothesis(是一种与训练集一致的从输入空间X到输出空间Y的映射,对应于数据的某种潜在规律)v.s. 这种潜在的规律本身,定义为:真实ground-truth 监督学习supervised:分类classifucation,回归regression v.s. 无监督unsupervised:聚类clustering 测试testing,使用学得模型进行预测,被预测的样本称测试样本testingsample,比如学得模型 f 作用于测试样本 x ,得到其预测标记 y=f(x) 。 泛化generalization(whenwe haveunseeninstance未见新样本),希望学得模型不仅仅在训练集上应用得好,而且适用于整个样本空间。 独立同分布采样 (i.i.d) independent identically distribution ,独立的从样本空间中采样获得,样本越多,模型泛化能力越强。 1.3假设空间 假设就是学习得到的模型,可能有多个模型与训练集一致,它们一起组成了版本空间versionspace 如何表示假设一旦确定,所有可能与不可能的假设,组成了假设空间,学习过程就是搜索与训练集匹配一致的假设集合,即版本空间versionspace 机器学习做的事情,就是从特殊到一般的归纳induction,即归纳学习inductive learning,以期得到泛化能力强,语义明确(输出空间有清晰的概念concept)的模型 1.4归纳偏好 通过学习得到了对应假设空间中的一个假设,即学得模型。该模型应当是“唯一的”。现实中,人们做决定前可能有很多选择空间,但最终做出的选择只有一个,这种选择必定是基于某种偏好的。 假设偏好inductive bias:任何一个有效的机器学习算法learningalgorithm,必定对某种类型的假设有偏好,否则,对训练集等效的不同假设,当面临某个新的未见样本时,就可能给出不同的判断预测结果,这是无意义的。 要找到一个与训练集一致的模型,就好像要找到一条穿过所有训练样本点的曲线,而往往存在多条曲线与有限的样本点一致,因此就必须有“启发式”或者“价值观”,来帮助学得模型做出选择。(这里所谓的选择,与数值分析中函数拟合的方法有些相似)以下是一些一般性原则: 第一,奥卡姆剃刀(Occam‘srazor):同样效果之下,选那个更简单的。而如何判断哪个更简单,需要引入其他机制。 第二,“没有免费午餐”定理(No Free Lunch Theorem):对一个算法a,若其在某些问题比算法b更好,则必定存在另一些问题,在那里算法b比算法a更好。该定理的前提是所有问题出现的机会相同,或所有问题同等重要。但实际中,我们往往只关心对某个具体的应用任务,解决方案能否取得最佳效果。 脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,所有学习算法都一样好。要谈论算法的相对优劣,必须要针对具体的学习问题,算法各有长短,互有优劣,算法的归纳偏好是否与问题本身(想要的效果)匹配,决定了算法能否取得好的性能。 1.5发展历程(这部分完全是个人兴趣,哈哈!以下时间均为20世纪,如50s,代表20世纪50年代) 机器学习是人工智能发展到一定阶段的必然产物。 历史进程 50s-70s:“推理期”:赋予机器逻辑推理能力,逻辑理论家和通用问题求解等程序,可以完成数学定理的证明; 70s-80s:“知识期”:赋予机器知识,专家系统;瓶颈是由人把知识总结出来再教给计算机相当困难; 80s-至今:“学习期”:赋予机器自主学习知识的能力; 机器学习发展历程 50s-70s:图灵测试讨论机器学习可能性;A. Samuel跳棋程序;神经网络的连接主义connectionism学习,如感知机perception等;基于逻辑表示的符号主义symbolism学习,“结构学习系统”等;基于决策理论的学习和强化学习,如“学习机器”等;统计学习理论的奠基性工作等。 80s以来:机器学习大致分为:从样例中学习,在问题求解和规划中学习,通过观察和发现学习,从指令中学习等类别(R.S. Michalski,1983)。其中,从样例中学习是一种广义的归纳学习,是被研究最多,应用最广的机器学习种类。涵盖监督和无监督学习。 80s: 符号主义学习 ,决策树decisiontree和基于逻辑的学习;由于在人工智能“推理期”和“知识期”中,符号知识表示取得了很大成就和成果,因此,自然在“学习期”的初期倍受青睐。决策树技术简单易用,至今仍十分常用;基于逻辑的学习技术,很强的领域知识表达能力,但因此导致的假设空间过大,复杂度极高,致使其在mid-90s陷入低潮。 80s-mid90s: 基于神经网络的连接主义学习 ,从“异或”问题的解决困难(1969),到流动推销员NP难问题的解决(1983),再到反向传播(Back-Propagation)算法的发明(1986),连接主义技术以其有效性实用性,发展迅速。从知识获得的角度,连接主义产生的是”黑箱“模型,这一点与符号主义能产生概念明确的表示模型不同,是一个弱点;更重要的是,学习过程涉及大量的参数,参数的设置缺乏理论指导,主要靠手工”调参“,夸张地说,参数调节上失之毫厘,学习结果可能谬以千里。 mid-90s: 统计学习statisticallearning ,支持向量机(support vector machine)和更一般的核方法(kernelmethods)。”支持向量“概念(Vapnik 1963),”VC维“(1968),结构风险最小化原则(1974),直到九十年代中期有效的支持向量算法提出后,才在文本分类应用中,成为主流机器学习技术;核技巧也被用在机器学习的各个角落。 21BC: 深度学习 为名的连接主义学习,数据量庞大+计算能力强大了,带来深度学习的繁荣;降低了机器学习的使用门槛,更加依赖手工调参,缺乏严格理论基础,为机器学习走向工程实践提供便利。 1.6应用现状 在过去的二十多年,人类收集、存储、传输、管理、处理、利用数据的能力飞速提升。个人认为,在信息行业的这几方面上的软、硬件实现上都大有可为。 机器学习、云计算、众包是大数据时代的三大关键技术。 数据挖掘的技术基础是机器学习(以统计学为理论基础)算法实现和数据库数据管理。 机器学习的国家战略意义、对人类社会政治经济生活的意义、对探索自然的意义。 1.7阅读材料(等有空再整理)      努力修炼鸭!
个人分类: 学习笔记|0 个评论
[转载]申请的(十四个)知乎专栏一览
josh 2019-9-14 21:15
链接: https://zhuanlan.zhihu.com/p/82214882
个人分类: The Art of Learning and Research|1732 次阅读|0 个评论
发表了一篇英文长文:语义信息G理论和逻辑贝叶斯推理for统计学习
热度 1 lcguang 2019-8-21 01:04
这是我近五年研究的总结, 也基于我以前的研究结果。 发表的期刊是:Information: https://www.mdpi.com/journal/information 文章是: https://www.mdpi.com/2078-2489/10/8/261 英文open access 期刊, 不限长度。 我用的方法——语义信息方法——与众不同, Information正好适合我。同行评论要过两关,要老实按reviewers要求,逐条回应。以前不知道,吃过大亏。 西方研究语义信息论的名人Luciano Floridi和 Wolfgang Johannsen 也在上面发表过文章。 Flridi还是Information中 Information Theory and Methodology Section 的编委。 现在可以让大家比较了。 文章有30多页。我很开心, 等于发表了四篇。我以前发表的一篇英文也是很长的 http://www.survivor99.com/lcg/english/information/GIT/index.htm ,40多页。好像短的反而难发表——只发表过会议。可能新东西不全面就很难让人理解。 我的文章中,背景包含两个部分: 1.从Shannon信息论到语义信息G理论, 也谈及其他人的语义信息理论(包括Floridi和钟义信教授的); 2.从传统的贝叶斯预测到逻辑贝叶斯推理, 主要是对贝叶斯推理(Bayesian Inference)的挑战。 方法包含我独创的4个信道匹配算法: 1.语义信道匹配香农信道,求解多标签学习函数——隶属函数——的简单方法。但是最重要的应用是求解if-then叙述的确证度。 2. 两个信道相互匹配:求解多标签分类;比流行的方法简便很多。 3. 重复两个信道相互匹配,迭代算法, 求解最大互信息分类。根据特征求解最大互信息分类或估计,这可是Shannon信息论和经典信息论留下的难题。 4. 两个信道相互匹配,通过求解最大通信效率G/R, 求解混合模型. 顺便证明EM算法所依据的混合模型理论是错的。 文中提供了不少例子;补充存料还提供了这些算法的Python 3.6程序。都是我自己编的。方法应用迫使我学习Python编程。幸亏我是老程序员 。 对于机器学习,2,3用于分类是很实用的; 难度最大的是求解混合模型,特别是证明迭代收敛。 但是最有理论意义的是提供新的确证度b*. 归纳问题由来已久。由于绝对正确的全称假设的归纳被否定,归纳问题演变为求不完全正确假设的归纳问题——即确证度计算问题。证伪主义者Popper也曾试图解决这一问题。早期逻辑贝叶斯主义者凯恩斯和卡尔纳普企图用逻辑概率或条件逻辑概率(在0和1之间变化)表示确证度,但是现代归纳主义者大多用可信度或归纳支持度(在-1和1之间变化)表示确证度(见这里http://www.fitelson.org/probability/comp.pdf )。 我的确证度也在-1和1之间,但是和流行的确证度不同, 流行的确证度主要取决于正例是否多,而我的确证度b*主要取决于反例是否少——这就兼容Popper的证伪思想。要让大家信服, 还需要继续努力。 我相信我的确证度公式迟早会被大多数人接受, 不过其命运可能就像我的色觉模型( http://blog.sciencenet.cn/home.php?mod=spaceuid=2056do=blogid=1160412) 。 徐匡迪院士呼吁研究算法:http://www.sohu.com/a/312151330_680938 我的努力就是。但是这样的文章在还真不容易再 国内期刊 发表。我的最大互信息分类文章就再三被拒绝。不知道审稿人是否知道:Shannon及后来者至今无法解决这一问题!这应该是信息论王冠上的钻石啊! 一个中文初稿见:http://www.survivor99.com/lcg/CM/Homepage-NewFrame.pdf 关于语义信息论和统计学习的更多讨论见:http://www.survivor99.com/lcg/books/GIT/ 欢迎交流。
个人分类: 信息的数学和哲学|3054 次阅读|2 个评论
EM算法(期望最大化算法)简介
luria 2019-8-1 00:12
和 HMM 简介一样(有关 HMM ,隐马尔科夫模型的简介,请参见我的另一篇博文 http://blog.sciencenet.cn/blog-2970729-1188964.html ),我们还是通过一个例子引入 EM 算法 (Expectation Maximization Algorithm) 1. 一个经典例子 我们有两枚硬币 (coin A coin B) ,这两枚硬币是用特殊材质做的,硬币 A 抛出正面 ( H ead) 和反面 ( T ail) 的概率为 θ A 和 1- θ A ,硬币 B 抛出正面和反面的概率为 θ B 和 1- θ B 。我们不知道 θ A 和 θ B ,因此想通过不断的抛硬币来推测出 θ A 和 θ B ,为了方便,写成向量形式: θ = ( θ A , θ B ) 。 因为有两枚硬币,我们随机地在硬币 A 和硬币 B 中挑一个 ( 概率相等,各为 50%) ,然后再用选中的硬币独立地抛 10 次,为了使整个事件更具说服力,我们选硬币抛硬币的整个过程重复做了 5 次。因此,总的来说选了 5 次硬币,抛了 5 × 10=50 次。 选了 5 次硬币,每次记为 z i ∈ {A, B} , 5 次合到一起记为 z=(z 1 , z 2 , z 3 , z 4 , z 5 ) ;每选 1 次硬币 ( 抛 10 次 ) ,我们记录其中正面出现的次数 x i ∈ {0,1,...,10} , 5 次合到一起记为 x=(x 1 , x 2 , x 3 , x 4 , x 5 ) 。于是,很容易我们就可以评估出 θ A : 这种通过观测来评估模型参数的方法称为 极大似然评估 (Maximum likelihood estimation) 。 上面这个例子比较简单,是一个完备问题 (complete data case) 。如果上面这个例子中,已知 x 向量,但是不知道 z 向量,这时再来评估 θ A 和 θ B 。这类问题属于不完备问题 (incomplete data case) ,我们称未知的 z 向量为 隐变量 (hidden variables) 或者 潜在因素 (latent factors) 。 注:我们可以想象一下,开篇的例子中,我们挑一枚硬币且记录下挑了什么硬币,再抛这枚硬币且记录下硬币的正反面。现在由于意外发生,挑硬币的那部分记录不幸遗失,只有硬币正反向次数的记录,让我们求解两枚硬币抛出正面的概率分别是多少。仔细一想,这个问题其实还是挺难的!聪明的人们想出了一个很直觉的解决办法—— EM 算法。 首先我们随便给定 θ A 和 θ B ,如果有先验知识也可以用先验知识。 基于这两个参数,计算这 5 次硬币 A/B 最可能的出现情况。再固定这 5 次硬币 A/B 抽取情况,估计 θ ,此时记为 再不断重复这一过程直到收敛。 总之, EM 算法轮流执行两个步骤:其一,在当前模型的前提下,猜测最可能的概率分布,例如推测硬币 A/B 的抽取概率和期望,这一步称为 E-step ;其二,在推测的结果基础上重新评估模型的参数,推测 θ A 和 θ B ,这一步称为 M-step 。 之所以称为 E-step ,是因为通常不需要在绝对完整的前提下来生成概率分布,而是在当前完整的情况下,计算 期望的 (Expected) 的充分统计量。与此类似,之所以称为 M-step ,是因为模型的重新评估可以认为是使期望的 log 值 最大化 (Maximization) 。 2. 数学推导 在推导之前我们需要一点数学知识: Jensen’s inequality 对应的图形如下: 问题:已知一组独立的样本 x={x 1 , x 2 , x 3 , ..., x m } ,求模型 p(x, z) 的参数 θ ,使 p(x, z) 最大,其中 z 是隐变量。 开始推导: 因为 log 函数是单调递增的,所以求 p(x, z) 的最大值,即求 log(p(x, z)) 的最大值。完整的写出似然函数如下,即求 L( θ ) 最大时参数 θ 的值: 因为 z 通常观测不到,这使得问题比较复杂,无法直接求 L( θ ) 的最大值。我们采用 EM 算法,构建 L( θ ) 的下界 (E-step) ,再优化下界 (M-step) ,并不断重复这一过程。 (1) 式是上述所求的。上述公式来自 Andrew Ng , Andrew Ng 喜欢用上标表示 index ,可能和我们的习惯写法有点不一致,在此不展开,大家可以简单地将 x (i) 看成 x i (2) 式是分子分母同乘了一个 Q i (z (i) ) 它是一种分布,而且 (3) 由第 2 个式子到第 3 个式子的推导如下: 那么第 2 个式子到第 3 个式子推导如下: 当且仅当以下等式成立时, L( θ ) 取得极大值: 其中 c 表示常数。也即 又因为 Q i (z (i) ) 是概率分布,按照定义 所以有 综上,不断重复以下两个步骤,直到收敛: 其中:=表示当前等于,也即覆盖之前的值 3. 用 C huong 文章中的实例详细计算一下 i=0 时,令 E-Step : (1) 计算第一次选硬币,且投出的结果为 H-T-T-T-H-H-T-H-T-H 时,选的是硬币 A 的概率 根据二项分布定义,如果第一次选的是 A 硬币,投 10 次有 5 次为正面的概率为: 同理,可计算出如果第一次选的是 B 硬币,投 10 次有 5 次为正面的概率: 再由贝叶斯定律可计算出,投币结果为 H-T-T-T-H-H-T-H-T-H ,且这一结果是硬币 A 投出的概率为: 注意:其中 P(A) 和 P(B) 都为 0.5 ,因为抽取 A 硬币和抽取 B 硬币是等可能的。 同理,投币结果为 H-T-T-T-H-H-T-H-T-H ,且这一结果是硬币 B 投出的概率为: (2) 再依次计算第二到第五次选硬币时,抽取到 A/B 硬币的概率。所有结果汇总如下表: 其中, Coin A 列表示投出该行硬币正反面情况下,推测是用 A 硬币来投的概率。 Total 行是计算的 5 次试验的总和,而 Score 行的计算如下: Score = (0.45 × 5) + (0.8 × 9) + (0.73 × 8) + (0.35 × 4) + (0.65 × 7)=21.24 仔细回想,这里的 Score 其实就是 5 次选币( 50 次投币)事件的期望值 (Expectation) !以上整个过程也正是在计算 P(z (i) | x (i) ; θ ) ,即 每次观测 (Observation) 索引 = i 当前 θ 参数条件 = ( θ A , θ B ) 每次观测,如 H-T-T-T-H-H-T-H-T-H = x (i) 挑选的硬币( Coin A, Coin B ) = z (i) 的概率 P(z (i) | x (i) ; θ ) 另外,我们可以在文中看到如下表格,计算的也是一样的,以第二行为例 Coin A 列的 2.2H 表示第一次选硬币,再抛 10 次时硬币为 H 的总和 0.45 × 5 ; Coin B 列的 2.8H 表示 0.55 × 5 同理,我们也可以算出观测到是 HTTTHHTHTH 时 Coin A 抛出反面的概率得分 2.2T M-Step : 再计算当前假设下,硬币 A 投正面的概率,以及硬币 B 投正面的概率,即 从 θ (i) 到 θ (i+1) 的过程为什么叫做极大化 (Maximization) ?其实这里有个认证:每次迭代的过程 ( 从 θ (i) 到 θ (i+1) ) ,都会使 P(z (i) | x (i) ; θ ) 增大,越来越接近或者达到局部极值 再将 θ (i+1) 作为参数,不断重复上述步骤,直到结果收敛。 经过 10 次重复之后,算出如下结果: 最后,需要强调的是 EM 也有自身的缺陷: (1) 最终的结果与初始值的选取有关,不同的初始值可能得到不同的参数估计值 (2) 很可能会陷入局部最优解,而无法达到全局最优解 总结: 本文简约地介绍了 EM 算法,旨在深入浅出,面向的对象是算法小白 ( 如我一般 ) 。留下两个问题,有兴趣的读者可以继续探索,如果有时间后续我也会整理出来: (1) EM 算法的收敛性: E-Step 和 M-Step 不断重复,最后是否会收敛? (2) EM 算法的应用,例如高斯混合模型、 HMM 中的第三个问题 ( 这个问题我会尽快整理到博文中,敬请期待 ) 等。 参考材料: C huong B Do, Serafim Batzoglou. What is the expectation maximization algorithm? Konstantinos G. Derpanis . Jensen’s Inequality Andrew Ng. CS229 Lecture notes https://ynorm.com/blog/expectation-maximization/
个人分类: Algorithm|16162 次阅读|0 个评论
如何在 fast.ai 用 BERT 做中文文本分类?
wshuyi 2019-7-29 10:19
鱼我所欲也,熊掌亦我所欲也。 痛点 我之前用 BERT ,就 没有 痛快过。 最初,是 Google 发布的原始 Tensorflow 代码,一堆堆参数,一行行代码,扑面而来。让人看着,就眼晕。 后来,Google 把 BERT 在 Tensorflow Hub 上面打了个包。 还是需要很多行代码,许多参数设置,才能让它学习你自己提供的数据。不过我还是很兴奋地帮你重构代码,搞了个 十行代码可执行版本 。 但这其实,不过是 隐藏了大量细节 而已。 那些繁琐的代码,依然在那里。 代码越多,修改和维护就越困难。 你看人家 fast.ai ,需要什么功能,只要找到对应的 API ,输入三样东西: 数据 模型架构 损失函数 一般而言,只需要几行代码。 然后,结果就出来了。 这样,你可以很轻易尝试自己的想法,并且在不同数据集上面加以验证。 这种 快速迭代反馈 ,对于机器学习研究来说,是非常有益处的。 因此,当 Huggingface 的 Kaushal Trivedi 真的起心动念,仿照 fast.ai 搞了个 fastbert 时,我特别开心。 于是又 写了份教程 ,教你如何用它来做多标签文本分类。 但是,这个 fastbert ,与 fast.ai 比起来,差别还是太大了。 首先是设置起来依旧繁琐,你得照顾到许多参数; 其次是维护并不及时。两次更新之间的时间,竟然可能相差一个月; 第三是缺乏文档和样例。这对于新手,是非常不友好的。 几乎所有遭遇到这些问题的人,都在问一个问题: 什么时候,才能在 fast.ai 里面,方便地调用 BERT 来完成自然语言处理任务呢? 大部分人,只是动动念头,然后继续将就着使用 fast.ai 提供的 ULMfit 来处理英文文本。 毕竟,对于英文、波兰文来说,效果 也不错 。 可是,中文怎么办? ULMfit 推出1年多了,至今却没有一个公开发布、广泛使用的中文预训练模型。 这真是令人烦恼的事儿啊! 黑客 有需求,也就有人来琢磨解决。 fast.ai 结合 BERT 这问题,对研究者的要求,着实不低。至少包括: 熟悉 fast.ai 框架机制; 熟悉 BERT 工作原理; 此外,还得能够融汇贯通,把二者结合起来,这就需要对 PyTorch 的熟练掌握。 能做出这样工作的人,大约就算是黑客了。 幸好,这样的高人真的出手了。 他就是卡内基梅隆大学的研究生,Keita Kurita。 Keita 有个博客,叫 Machine Learning Explained ,干货非常多,这里一并推荐给你。 他写的 fast.ai 结合 BERT 的英文教程,地址在 这里 。 其实,有时候问题的解决,就如同窗户纸,一捅就破。 Keita 并没有尝试“重新发明轮子”,即从头去解决这个问题。 他只是巧妙地借用了第三方的力量,并且将其与 fast.ai 融合起来。 这个第三方,就是咱们前面提过的 Huggingface 。 自从 BERT 的 Tensorflow 源代码经由 Google 发布出来,他们就在 Github 上面,搞了一个 PyTorch 版本的克隆。 这个克隆,还包含了预训练的结果。 也就是说,他们提供了一个完整版的模型架构,只要配上相应的数据和损失函数, fast.ai 就可以开工了! fast.ai 文本处理一直不支持中文,是因为它其实也调用了第三方库,就是咱们介绍过的 Spacy 。 到今天为止, Spacy 也并不能完整支持中文处理,这就导致了 fast.ai 对中文无能为力。 但是, BERT 可不是这样。 它很早就有专门的中文处理工具和预训练模型。 关键是,如何在 fast.ai 中,用它替换掉 Spacy 来使用。 Keita 的文章,一举解决了上述两个问题。 便捷的 fast.ai 框架就这样和强大的 BERT 模型嫁接了起来。 变化 受 Keita 的影响,其他作者也尝试了不同的任务和数据集,并且把自己的代码和工作流程也做了发布。 例如 abhik jha 这篇 “Fastai integration with BERT: Multi-label text classification identifying toxicity in texts”(地址在 这里 ),还在 Twitter 受到了 Jeremy Howard (fast.ai 联合创始人)点赞。 蒙天放 这篇 知乎教程,更讲解了如何处理中文数据分类。 看起来,我似乎没有必要再写一篇教程了。 然而环境是在 变化 的。 Huggingface 现在,已经不仅仅做 BERT 预训练模型的 PyTorch 克隆了。 他们居然希望把所有的 Transformer 模型,全都搞一遍。 于是把原先的 Github 项目“pytorch-pretrained-BERT”,改成了“pytorch-transformers”这样一个野心勃勃的名字。 新的项目地址在 这里 。 你的想象空间,也就可以因此而开启了。 能不能用这些基于 Transformer 的预训练模型,来做自己的下游任务呢? 一如既往, Huggingface 的技术还是那么过硬。 然而,提供的接口,还是那么繁琐。虽然用户手册比之前有了较大改进,可教程样例依然不够友好。 我于是在思考,既然老版本 BERT 预训练模型可以和 fast.ai 对接,那能否把新版本的各种 Transformer,也用这种方式简化调用呢? 如果这样做可以的话,咱们就不必再眼巴巴等着 Huggingface 改进教程与用户接口了,直接用上 fast.ai ,取两者的长处,结合起来就好了。 于是,我开始了尝试。 一试才发现,新版本“pytorch-transformers”的预训练模型,与老版本还有一些变化。倘若直接迁移代码,会报错的。 所以,这篇文章里,我从头到尾,为你提供一个在新版本“pytorch-transformers” 中 BERT 预训练模型上直接能用的样例,并且加以详细讲解。 这样一来,相信我踩了一遍的坑,你就可以躲开了。这可以大量节省你的时间。 同时,我也希望你能够以这个样例作为基础,真正做到 举一反三 ,将其他的 Transformer 模型尝试迁移,并且把你的试验结果,分享给大家。 环境 本文的配套源代码,我放在了 Github 上。 你可以在我的公众号“玉树芝兰”(nkwangshuyi)后台回复“aibert”,查看完整的代码链接。 如果你对我的教程满意,欢迎在页面右上方的 Star 上点击一下,帮我加一颗星。谢谢! 注意这个页面的中央,有个按钮,写着“在 Colab 打开”(Open in Colab)。请你点击它。 然后,Google Colab 就会自动开启。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 Colab 为你提供了全套的运行环境。你只需要依次执行代码,就可以复现本教程的运行结果了。 如果你对 Google Colab 不熟悉,没关系。我 这里有一篇教程 ,专门讲解 Google Colab 的特点与使用方式。 为了你能够更为深入地学习与了解代码,我建议你在 Google Colab 中开启一个全新的 Notebook ,并且根据下文,依次输入代码并运行。在此过程中,充分理解代码的含义。 这种看似笨拙的方式,其实是学习的有效路径。 代码 首先提示一下,fast.ai 给我们提供了很多便利,例如你只需要执行下面这一行,许多数据科学常用软件包,就都已经默认读入了。 from fastai.text import * 因此,你根本就不需要执行诸如 import numpy as np , import torch 之类的语句了。 下面,我们本着 fast.ai 的三元素(数据、架构、损失函数)原则,首先处理数据。 先把数据下载下来。 !wgethttps://github.com/wshuyi/public_datasets/raw/master/dianping.csv 这份大众点评情感分类数据,你应该已经很熟悉了。之前的教程里面,我多次用它为你演示中文二元分类任务的处理。 让我们用 Pandas ,读入数据表。 df=pd.read_csv( dianping.csv ) 下面是划分 训练集、验证集和测试集 。我们使用 scikit-learn 软件包协助完成。 from sklearn.model_selection import train_test_split 首先,我们把全部数据,分成训练和测试集。 注意这里我们设定 random_state ,从而保证我这儿的运行结果,在你那里可 复现 。这可是“可重复科研”的基本要件。 train,test=train_test_split(df,test_size= .2 ,random_state= 2 ) 之后,我们再从原先的训练集里,切分 20% ,作为验证集。依旧,我们还是要设置 random_state 。 train,valid=train_test_split(train,test_size= .2 ,random_state= 2 ) 之后,咱们检查一下不同数据集合的长度。 训练集: len(train) 验证集: len(valid) 测试集: len(test) 然后,来看看训练集前几行内容。 train.head() 数据预处理的第一步,已经做完了。 但是,我们都知道,机器学习模型是不认识中文的,我们必须做进一步的处理。 这时候,就需要 Huggingface 的 Transformers 预训练模型登场了。 !pipinstallpytorch-transformers 本文演示的是 BERT ,所以这里只需要读入两个对应模块。 一个是 Tokenizer ,用于把中文句子,拆散成一系列的元素,以便映射成为数字来表示。 一个是 序列分类 模块。在一堆 Transformer 的顶部,通过全连接层,来达到分类功能。 from pytorch_transformers import BertTokenizer,BertForSequenceClassification 我们指定几个必要的参数。 例如每句话,最长不能超过128个字。 每次训练,用32条数据作为一个批次。 当然,我们用的预训练模型,是中文的,这也得预先讲好。 bert_model= bert-base-chinese max_seq_len= 128 batch_size= 32 设置参数之后,我们就可以读取预置的 Tokenizer 了,并且将它存入到 bert_tokenizer 变量中。 bert_tokenizer=BertTokenizer.from_pretrained(bert_model) 我们检查一下,看预训练模型都认识哪些字。 这里我们随意选取从 2000 到 2005 位置上的 Token 来查看。 list(bert_tokenizer.vocab.items()) 这里我们看到, BERT 还真是认识不少汉字的。 我们把全部的词汇列表存储起来,下面要用到。 bert_vocab=Vocab(list(bert_tokenizer.vocab.keys())) 注意 fast.ai 在 Tokenizer 环节,实际上设计的时候有些偷懒,采用了“叠床架屋”的方式。 反正最终调用的,是 Spacy ,因此 fast.ai 就把 Spacy Tokenizer 作为底层,上层包裹,作为自己的 Tokenizer 。 我们这里做的工作,就是重新定义一个新的 BertFastaiTokenizer ,最重要的功能,就是把 Spacy 替掉。另外,在每一句话前后,根据 BERT 的要求,加入起始的 和结束位置的 ,这两个特殊 Token 。 class BertFastaiTokenizer (BaseTokenizer) : def __init__ (self,tokenizer,max_seq_len= 128 ,**kwargs) : self.pretrained_tokenizer=tokenizer self.max_seq_len=max_seq_len def __call__ (self,*args,**kwargs) : return self def tokenizer (self,t) : return ]+self.pretrained_tokenizer.tokenize(t) + ] 我们把这个类的调用,作为一个函数保存。 tok_func=BertFastaiTokenizer(bert_tokenizer,max_seq_len=max_seq_len) 然后,最终的 Tokenizer, 是把这个函数作为底层,融入其中的。 bert_fastai_tokenizer=Tokenizer( tok_func=tok_func, pre_rules= ) 我们设定工作目录为当前目录。 path=Path( . ) 之后,得把训练集、验证集和测试集读入。 注意我们还需要指定数据框里面,哪一列是文本,哪一列是标记。 另外,注意 fast.ai 和 BERT 在特殊 Token 定义上的不同。 include_bos 和 include_eos 要设定为 False ,否则两套系统间会冲突。 databunch=TextClasDataBunch.from_df(path,train,valid,test, tokenizer=bert_fastai_tokenizer, vocab=bert_vocab, include_bos= False , include_eos= False , text_cols= comment , label_cols= 'sentiment' , bs=batch_size, collate_fn=partial(pad_collate,pad_first= False ,pad_idx= 0 ), ) 让我们来看看预处理之后的数据吧: databunch.show_batch() 在 fast.ai 里面,正常出现了 BERT 风格的中文数据预处理结果,还是很令人兴奋的。 注意,前面我们指定了 pre_rules 和 post_rules 两个参数,都写成 下面,我们来用新构建的类,搭模型架构。 注意你需要说明分类任务要分成几个类别。 我们这里是二元分类,所以写2。 bert_pretrained_model=MyNoTupleModel.from_pretrained(bert_model,num_labels= 2 ) 现在,只剩下第三个元素了,那就是 损失函数 。 因为要做二元分类,输出的结果按照 fast.ai 的要求,会是 这样。所以损失函数我们选择 nn.CrossEntropyLoss 。 loss_func=nn.CrossEntropyLoss() 三大要素聚齐,我们终于可以构建学习器 Learner 了。 learn=Learner(databunch, bert_pretrained_model, loss_func=loss_func, metrics=accuracy) 有了 Learner ,剩下的工作就简单了许多。 例如,我们可以寻找一下最优的最大学习速率。 learn.lr_find() 找到后,绘制图形。 learn.recorder.plot() 读图以后,我们发现,最大学习速率的量级,应该在 e-5 上。这里我们设置成 2e-5 试试。 这里,只跑两个轮次,避免过拟合。 当然,也有省时间的考虑。 learn.fit_one_cycle( 2 , 2e-5 ) 验证集上,效果还是很不错的。 但是,我们不能只拿验证集来说事儿。还是得在测试集上,看真正的模型分类效果。 这里面的原因,我在《 如何正确使用机器学习中的训练集、验证集和测试集? 》一文中,已经为你做了详细的解释。 如果忘了,赶紧复习一下。 我们用 笨办法 ,预测每一条测试集上的数据类别。 定义一个函数。 def dumb_series_prediction (n) : preds= ) )) return preds 实际执行,结果存入到 preds 里面。 preds=dumb_series_prediction(len(test)) 查看一下前 10 个预测结果: preds 我们还是从 scikit-learn 里面读入分类报告和混淆矩阵模块。 from sklearn.metrics import classification_report,confusion_matrix 先看分类报告: print(classification_report(test.sentiment,preds)) f1-score 达到了 0.9 ,很棒! 再通过混淆矩阵,看看哪里出现判断失误。 print(confusion_matrix(test.sentiment,preds)) 基于 BERT 的中文分类任务完成! 小结 通过这篇文章的学习,希望你掌握了以下知识点: 如何在 fast.ai 中使用自定义 Tokenizer; 如何根据与训练模型要求,微调特殊 Token 设置; 如何在 fast.ai 中调用 Transformer 预训练模型; 如何把自己的数据、架构和损失函数封装在 fast.ai 学习器中。 如前文所述,希望你举一反三,尝试把 Huggingface 推出的其他 Transformer 预训练模型与 fast.ai 结合起来。 欢迎你把尝试的结果在留言区分享给其他同学。 祝深度学习愉快! 征稿 SSCI 检索 期刊 Information Discovery and Delivery 要做一期《基于语言机器智能的信息发现》( “Information Discovery with Machine Intelligence for Language”) 特刊(Special Issue)。 本人是客座编辑(guest editor)之一。另外两位分别是: 我在北得克萨斯大学(University of North Texas)的同事 Dr. Alexis Palmer 教授 南京理工大学 章成志教授 征稿的主题包括但不限于: Language Modeling for Information Retrieval Transfer Learning for Text Classification Word and Character Representations for Cross-Lingual Analysis Information Extraction and Knowledge Graph Building Discourse Analysis at Sentence Level and Beyond Synthetic Text Data for Machine Learning Purposes User Modeling and Information Recommendation based on Text Analysis Semantic Analysis with Machine Learning Other applications of CL/NLP for Information Discovery Other related topics 具体的征稿启事(Call for Paper),请查看 Emerald 期刊官网的 这个链接 (http://dwz.win/c2Q)。 作为本专栏的老读者,欢迎你,及你所在的团队踊跃投稿哦。 如果你不巧并不从事上述研究方向(机器学习、自然语言处理和计算语言学等),也希望你能帮个忙,转发这个消息给你身边的研究者,让他们有机会成为我们特刊的作者。 谢谢! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 BERT 做多标签(multi-label)文本分类? 题图 : Photo by Harley-Davidson on Unsplash
9017 次阅读|0 个评论
如何用 fast.ai 高效批量推断测试集?
wshuyi 2019-7-22 08:42
简洁和效率,我们都要。 痛点 通过咱们之前几篇 fast.ai 深度学习框架介绍,很多读者都认识到了它的威力,并且有效加以了利用。 fast.ai 不仅语法简洁,还包裹了很多实用的数据集与预训练模型,这使得我们在研究和工作中,可以省下大量的时间。 跟着教程跑一遍,你会发现做图像、文本分类,乃至推荐系统,其实是非常简单的事情。 然而,细心的你,可能已经发现了一个问题: fast.ai 训练数据体验很好;可做起测试集数据推断来,好像并不是那么 高效 。 教程里面,模型训练并且验证后,推断/预测是这么做的: 如果你只是需要对单个新的数据点做推断,这确实足够了。 但是如果你要推断/预测的是一个集合,包含成千上万条数据,那么该怎么办呢? 你可能会想到,很简单,写个循环不就得了? 从道理上讲,这固然是没错的。 但是你要真是那么实践起来,就会感觉到 等待的痛苦 了。 因为上面这条语句,实际上效率是很低的。 这就如同你要搬家。理论上无非是把所有要搬的东西,都从A地搬到B地。 但是,你比较一下这两种方式: 方法一,把所有东西装箱打包,然后一箱箱放到车上,车开到B地后,再把箱子一一搬下来。 方法二,找到一样要搬的东西,就放到车上,车开到B地,搬下来。车开回来,再把下一样要搬的东西放上去,车开走……重复这一过程。 你见过谁家是用方法二来搬家的? 它的效率太低了! 用循环来执行 predict 函数,也是一样的。那里面包含了对输入文本的各种预处理,还得调用复杂模型来跑这一条处理后的数据,这些都需要开销/成本。 怎么办? 其实,fast.ai 提供了完整的解决方案。你可以把测试集作为整体进行输入,让模型做推断,然后返回全部的结果。根本就不需要一条条跑循环。 可是,因为这个方式,并没有显式写在教程里面,导致很多人都有类似的疑问。 这篇文章里,我就来为你展示一下,具体该怎么做,才能让 fast.ai 高效批量 推断测试集数据。 为了保持简洁,我这里用的是文本分类的例子。其实,因为 fast.ai 的接口逻辑一致,你可以很方便地把它应用到图像分类等其他任务上。 划分 为了保持专注,我们这里把一个模型从训练到推断的过程,划分成两个部分。 第一部分,是读取数据、训练、验证。 第二部分,是载入训练好的模型,批量推断测试集。 我把第一部分的代码,存储到了 Github 上,你可以在我的公众号“玉树芝兰”(nkwangshuyi)后台回复“train”,查看完整的代码链接。 点击其中的“Open in Colab”按钮,你可以在 Google Colab 云端环境打开并且执行它,免费使用 Google 提供的高性能 GPU 。 如果你想了解其中每一条代码的具体含义,可以参考我的这篇《 如何用 Python 和深度迁移学习做文本分类? 》。 注意,在其中,我加入了3条额外的数据输出语句。 分别是: data_clas.save( 'data_clas_export.pkl' ) 这一条,存储了我们的分类数据(包含训练集、验证集、测试集)及其对应的标签。注意,因为 fast.ai 的特殊假设(具体见后文“解释”部分),测试集的标签全部都是0。 也正因如此,我们需要单独存储测试集的正确标签: with open(path/ test_labels.pkl , 'wb' ) as f: pickle.dump(test.label,f) 除了上述两条之外,你还需要保留训练好的模型。 毕竟,为了训练它,我们也着实是花了一番时间的。 learn.export( model_trained.pkl ) 上述 pickle 数据文件,我都存储到了 Gitlab 公共空间。后面咱们要用到。 这就是训练和存储模型的全部工作了。 第二部分,才是本文的 重点 。 这一部分,我们开启一个全新的 Google Colab 笔记本,读入上述三个文件,并且对测试集进行批量推断。 这个笔记本,我同样在 Github 上存储了一份。 你可以在后台回复“infer”,找到它的链接。 下面,我给你一一讲解每一条代码语句的作用,并且告诉你一些关键点, 避免 你在使用过程中,跟我一样 踩坑 。 代码 首先,你要读入 fast.ai 的文本处理包。 from fastai.text import * 注意这个包可不只是包含 fast.ai 的相关函数。 它把许多 Python 3 新特性工具包,例如 pathlib 等,全都包含在内。这就使得你可以少写很多 import 语句。 下面,是从 Gitlab 中下载我们之前保存的 3 个 pickle 数据文件。 !gitclonehttps://gitlab.com/wshuyi/demo_inference_ulmfit_fastai_data.git 如果你对 pickle 数据不是很熟悉,可以参考我的这篇文章《 如何用 Pandas 存取和交换数据? 》。 我们设定一下数据所在目录: path=Path( 'demo_inference_ulmfit_fastai_data' ) 下面,我们就要把训练好的模型恢复回来了。 learn=load_learner(path, model_trained.pkl ) 不过这里有个问题。 虽然 fast.ai 是高度集成的,但为了避免训练结果占用空间过大,模型和数据是分别存储的。 这时我们读取回来的,只有一个预训练模型架构。配套的数据,却还都不在里面。 我们可以通过展示学习器 learn 的内容,来看看。 learn 注意下方架构的数据是完整的,但是训练集、验证集、测试集的长度,都是0。 这时候,我们就需要自己读入之前存好的分类数据了。 learn.data=load_data(path, data_clas_export.pkl ) 数据、模型都在,我们可以进行测试集数据推断了。 predictions=learn.get_preds(ds_type=DatasetType.Test,ordered= True ) 注意这一句里,函数用的是 get_preds 。说明我们要批量推断。 数据部分,我们指定了测试集,即 DatasetType.Test 。但是默认情况下,fast.ai 是不保持测试集数据的顺序的。所以我们必须指定 ordered=True 。这样才能拿我们的预测结果,和测试集原先的标记进行比较。 测试集推断的结果,此时是这样的: predictions 这个列表里面包含了 2 个张量(Tensor)。 千万不要以为后面那个是预测结果。不,那就是一堆0. 你要用的,是第一个张量。 它其实是个二维列表。 每一行,代表了对应两个不同分类,模型分别预测的概率结果。 当然,作为二元分类,二者加起来应该等于1. 我们想要的预测结果,是分类名称,例如0还是1. 先建立一个空的列表。 preds= .tolist(): preds.append(int(item item )) 看看我们最终预测的标记结果: preds 为了和真实的测试集标记比较,我们还要读入第三个文件。 with open(path/ test_labels.pkl , 'rb' ) as f: labels=pickle.load(f) 预测结果与真实标记我们都具备了。下面该怎么评价模型的分类效果? 这时可以暂时抛开 fast.ai ,改用我们的老朋友 scikit-learn 登场。 它最大的好处,是用户界面设计得非常人性化。 我们这里调用两个模块。 from sklearn.metrics import classification_report,confusion_matrix 先来看分类报告: print(classification_report(labels,preds)) 几千条数据训练下来,测试集的 f1-score 就已经达到了 0.92 ,还是很让人振奋的。 fast.ai 预置的 ULMfit 性能,已经非常强大了。 我们再来看看混淆矩阵的情况: print(confusion_matrix(labels,preds)) 分类的错误情况,一目了然。 解释 讲到这里,你可能还有一个疑惑,以易用著称的 fast.ai ,为什么没有把测试集推断这种必要功能做得更简单和直观一些? 而且,在 fast.ai 里,测试集好像一直是个“二等公民”一般。 以文本分类模型为例。 TextDataBunch 这个读取数据的模块,有一个从 Pandas 数据框读取数据的函数,叫做 from_df 。 我们来看看它的文档。 注意这里, train_df (训练集) 和 valid_df (验证集)都是必填项目,而 test_df 却是选填项目。 为什么? 因为 fast.ai 是为你参加各种学术界和业界的数据科学竞赛提供帮助的。 这些比赛里面,往往都会预先给你训练集和验证集数据。 但是测试集数据,一般都会在很晚的时候,才提供给你。即便给你,也是 没有 标记的。 否则,岂不是成了发高考试卷的时候,同时给你标准答案了? 看过《 如何正确使用机器学习中的训练集、验证集和测试集? 》一文后,再看 fast.ai 的设计,你就更容易理解一些。 你训练模型的大部分时候,都 不会 和测试集打交道。甚至多数场景下,你根本都没有测试集可用。 所以,fast.ai 干脆把它做成了可选项,避免混淆。 然而,这种设计初衷虽然好,却也给很多人带来烦恼。尤其是那些不参加竞赛,只是想和已有研究成果对比的人们。 大量场景下,他们都需要频繁和测试集交互。 我建议 fast.ai ,还是把这部分人的需求考虑进来吧。至少,像本文一样,写个足够简明的文档或样例,给他们使用。 小结 通过这篇文章的学习,希望你掌握了以下知识点: 如何保存在 fast.ai 中训练的模型; 如何在 fast.ai 中读取训练好的模型,以及对应的数据; 如何批量推断测试集数据; 如何用 scikit-learn 进行分类测试结果汇报。 祝深度学习愉快! 征稿 SSCI 检索 期刊 Information Discovery and Delivery 要做一期《基于语言机器智能的信息发现》( “Information Discovery with Machine Intelligence for Language”) 特刊(Special Issue)。 本人是客座编辑(guest editor)之一。另外两位分别是: 我在北得克萨斯大学(University of North Texas)的同事 Dr. Alexis Palmer 教授 南京理工大学 章成志教授 征稿的主题包括但不限于: Language Modeling for Information Retrieval Transfer Learning for Text Classification Word and Character Representations for Cross-Lingual Analysis Information Extraction and Knowledge Graph Building Discourse Analysis at Sentence Level and Beyond Synthetic Text Data for Machine Learning Purposes User Modeling and Information Recommendation based on Text Analysis Semantic Analysis with Machine Learning Other applications of CL/NLP for Information Discovery Other related topics 具体的征稿启事(Call for Paper),请查看 Emerald 期刊官网的 这个链接 (http://dwz.win/c2Q)。 作为本专栏的老读者,欢迎你,及你所在的团队踊跃投稿哦。 如果你不巧并不从事上述研究方向(机器学习、自然语言处理和计算语言学等),也希望你能帮个忙,转发这个消息给你身边的研究者,让他们有机会成为我们特刊的作者。 谢谢! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 题图: Photo by Tim Evans on Unsplash
6251 次阅读|0 个评论
[转载]知乎专栏: “当控制论、信息论遇到机器学习”
josh 2019-7-12 17:12
专栏链接: https://zhuanlan.zhihu.com/control-information-learning
个人分类: Engineering Cybernetics|3020 次阅读|0 个评论
AI“诗人们” 博客记事 2019年7月8日 北京 云、雨
热度 1 等离子体科学 2019-7-9 20:17
AI“诗人们” 博客记事 2019年7月8日 北京 云 这门课的学生,每年都给人胜过往年的感觉。今年也不例外。 第一次作业,同学们都下了功夫。 第一组讲的,题目是《大数据时代AI“诗歌创作”的现象》。 举个例子吧(电视上播过的): 题:《静夜思》 不免车马静,相思灯火阑。更深才见月,比向掌中看。 月明清影里,露冷绿撙前。赖有佳人意,依然似故年。 一首是诗人作的,一首是机器作的。 看上去AI“诗人”(或者叫“作诗机器”)似乎可以乱真了。只差在“灵性”和“意境”高低。 这是著名的清华“九歌”作诗系统的佳作之一。其以《全唐诗》为样本,通过机器学习,可以在短时间内掌握作诗的要领和遣词造句,写出似模似样的诗来。曾经和北大、清华、复旦才子才女反复比试,均无敌手。 这是一位学生自己输入几个字之后电脑显示出来的诗(改一字,保持谦虚精神): 北斗星辰光动地 大江风雨暗通津 牛羊正好归来晚 满眼青山似故人 还好。 这张是放了我的微信头像后,学生们请“微软小冰”这位“AI诗人”做的: (摘自学生作业的PPT) 如何?只对照片的话,不靠谱;但是作为诗,还是不错的吧?
个人分类: 学海无涯|3180 次阅读|1 个评论
如何正确使用机器学习中的训练集、验证集和测试集?
热度 3 wshuyi 2019-7-3 10:53
训练集、验证集和测试集,林林总总的数据集合类型,到底该怎么选、怎么用?看过这篇教程后,你就能游刃有余地处理它们了。 问题 审稿的时候,不止一次,我遇到作者 错误使用 数据集合跑模型准确率,并和他人成果比较的情况。 他们的研究创意有的很新颖,应用价值较高,工作可能也做了着实不少。 但因对比方法错误,得出来的结果,不具备说服力。几乎全部都需要 返工 。 这里,我帮你梳理一下,该怎么使用不同的数据集合: 训练集(training set) 验证集(validation set) 测试集(test set) 目的只有一个——避免你 踩同样的坑 。 其实这个问题,咱们之前的教程文章,已有涉及。 《 如何用 Python 和深度迁移学习做文本分类? 》一文中,我曾经给你布置了一个类似的问题。 在文章的末尾,我们对比了当时近期研究中, Yelp 情感分类的最佳结果。 下表来自于:Shen, D., Wang, G., Wang, W., Min, M. R., Su, Q., Zhang, Y., … Carin, L. (2018). Baseline needs more love: On simple word-embedding-based models and associated pooling mechanisms. arXiv preprint arXiv:1805.09843. 注意这里最高的准确率(Accuracy)数值,是 95.81 。 我们当时的模型,在验证集上,可以获得的准确率,是这个样子的: 97.28%,着实不低啊! 于是我问你: 咱们这种对比,是否科学? 你 当时的 答案是什么? 这么久过去了,又看了那么多新的教程和论文,你的答案发生变化了吗? 现在咱们公布一下答案吧。 不科学 。 为什么? 因为 对比方法 有问题。 方法 原文中有这样一句: 这里数据集只提供了训练集和“测试集”,因此我们把这个“测试集”当做验证集来使用。 作为演示,数据集咱们想怎么用,就可以怎么用。 甚至你把测试集拿来做训练,然后在训练集上跑测试,都没有人管。 但是写学术论文,声称你的模型优于已有研究,却绝不能这么草率。 注意,比较模型效能数值结果时,你只能拿不同的模型,在 同样的测试集 上面比。 测试集不同,当然不可以。 但模型A用测试集,模型B用验证集(与A的测试集数据完全一致)比,可以吗? 很多人就会混淆了,觉得没问题啊。既然数据都一样,管它叫做什么名称呢? 可是请你注意,哪怕A模型用的测试集,就是B模型用的验证集,你也 不能 把这两个集合跑出来的结果放在一起比较。 因为这是 作弊 。 你可能觉得我这样说,颇有些吹毛求疵的意味。 咱们下面就来重新梳理一下,不同数据集合的作用。 希望你因此能看清楚,这种似乎过于严苛的要求,其实是很有道理的。 咱们从测试集开始谈,继而是验证集,最后是训练集。 这样“倒过来说”的好处,是会让你理解起来,更加透彻。 先说 测试集 吧。 测试 只有在 同样的测试集 上,两个(或以上)模型的对比才有效。 这就如同参加高考,两个人考同样一张卷子,分数才能对比。 甲拿A地区的卷子,考了600分,乙拿B地区的卷子,考了580分。你能不能说,甲比乙成绩高? 不行吧。 为了让大家更易于比较自己的模型效果,许多不同领域的数据集,都已开放了。而且开放的时候,都会给你指明,哪些数据用于训练,哪些用于测试。 以 Yelp 数据为例。 在 AWS 上存储的 fast.ai 公开数据集中,训练集和测试集都已为你准备好。 你不需要自己进行划分。 大家达成共识,做研究、写论文,都用这个测试集来比拼,就可以。 所以,如果你的研究,是靠着比别人的模型效果来说事儿,那就一定先要弄明白 对方的测试集 是什么。 但是,这个听起来很容易达成的目标,实践中却很容易遇到困难。 因为有的人写论文,喜欢把数据和代码藏着掖着,生怕别人用了去。 他们一般只提一下,是在某个公开数据集上切了一部分出来,作为测试集。 测试数据集不发布,切分方法(包括工具)和随机种子选取办法也不公开。 这是非常不靠谱的行为,纯属自娱自乐。 作为严肃的审稿人,根本就 不应该允许 这样的研究发表。 因为机器学习研究的数据集不开放,便基本上没有 可重复性 (Reproducibility)。 如果你没有办法精确重复他的模型训练和测试过程,那么他想汇报多高的准确率,就纯凭个人爱好了。 当然,我们不是活在理想世界的。 你在某一个领域,用机器学习做应用研究的时候,面对这种无法重复已发表论文的情境,该怎么办? 直接用他声称的结果与你的实际运行结果比较,你可能是在追逐海市蜃楼。累到气喘吁吁,甚至怀疑自我的程度,也徒劳无功。 忽视它? 也不行。 审稿人那关你过不去。 人家会说,某某研究跟你用的是一样的数据,准确率已经达到98%,你的才96%,有什么发表的意义呢? 看,左右为难不是? 其实解决办法很简单。 不要考虑对方声称达到了多高准确率。把他提供给你的数据全集,自行切分。之后 复现对方的模型 ,重新跑。 模型架构,一般都是要求汇报的,所以这几乎不是问题。 至于这种复现,越是复杂的模型,我越推荐你用 PyTorch 。 之后把你的模型,和复现的对方模型在同样的测试集上做对比,就可以了。 当然,论文里要写上一句: 由于某篇文章未提供代码与具体数据切分说明,带来可重复性问题,我们不得不独立复现了其模型,并在测试集完全一致的情况下,进行了比对。 这里多说一句,一定要保证你自己的研究,是 可重复 的。 不要怕公布你的代码和数据。它们不是你的独门暗器,而是 支撑你研究的凭据 。 回看我们前面提到的 Yelp 公开数据的例子。 这时候你会发现一个奇怪的问题——为什么它只有训练集和测试集? 我们一直反复提到的 验证集 哪里去了? 验证 验证集,就如同高考的模拟考试。 不同于高考,模拟考只是你调整自己状态的指示器而已。 状态不够满意,你可以继续调整。 当然,参加过高考的同学都有经验——这种调整的结果(从模拟考到高考),有可能更好,也有可能更糟糕。 回到机器学习上,那就是测试集上检验的,是你 最终模型 的性能。 什么叫“最终模型”? 就是你参加高考时候的状态。包括你当时的知识储备、情绪心态,以及当天的外部环境(温度、湿度、东西是否带齐)等。 最终模型,只有 一个 。 就如同每年的高考,你 只能参加一回 。 考成什么样儿,就是什么样。 而验证集上跑的,实际上却是一个模型 集合 ,集合的大小,你可能数都数不过来。 因为这里存在着超参数(hyper-parameter)设置的问题。不同超参数组合,就对应着不同的潜在模型。 验证集的存在,是为了从这 一堆可能的模型 中,帮你表现最好的那个。 注意这里的表现,是指在 验证集 上的表现。 好比说,有个超参数叫做训练轮数(epochs)。 在同样的训练集上,训练3轮和训练10轮,结果可能是不一样的模型。它们的参数并不相同。 那么到底是训练3轮好,还是10轮好? 或者二者都不好,应该训练6轮? 这种决策,就需要在训练后,在验证集上“是骡子是马牵出来溜溜”。 如果发现训练3轮效果更好,那么就应该丢弃掉训练6轮、10轮的潜在模型,只用训练3轮的结果。 这对应着一种机器学习正则化(Regularization)方式——提早停止训练(early stopping)。 其他的超参数选取,你也可以举一反三。总之就是按照验证集的效果,来选超参数,从而决定最终模型。 下一步,自然就是把它交给测试集,去检验。这个我们前面已经详细讲解过了。 至于这个最终选择模型,在新数据集(测试集)上表现如何,没人能打包票。 所以,回到咱们之前的问题。在《 如何用 Python 和深度迁移学习做文本分类? 》一文中,我故意用 验证集 上筛选出的最好模型,在 验证集 上跑出来分数,当成是 测试 成绩,这显然是不妥当的。 你不能把同样的题做他个三五遍,然后从中找最高分去跟别人比。 即便你的模拟考,用的是别人的高考真题。两张卷子完全一样,也 没有 说服力。 所以你看,验证集的目的,不是比拼最终模型效果的。 因此,怎么设定验证集,划分多少数据做验证,其实是每个研究者需要独立作出的决策,不应该强行设定为一致。 这就如同我们不会在高考前去检查每个考生,是否做过一样多的模拟试卷,且试卷内容也要一致。 极端点儿说,即便一个考生没参加过模拟考,可高考成绩突出,你也不能不算他的成绩,对吧? 不过,讲到这里,我们就得要把训练集拿进来,一起说说了。 训练 如果测试集是高考试卷,验证集是模拟考试卷,那么训练集呢? 大概包括很多东西,例如作业题、练习题。 另外,我们上高三那时候(噫吁嚱,已经上个世纪的事儿了),每周有“统练”,每月有“月考”。也都可以划定在训练集的范畴。 减负这么多年以后,现在的高中生应该没有那么辛苦了吧?真羡慕他们。 这样一对比,你大概能了解这几个集合之间本应有的关系。 学生平时练题,最希望的,就是考试能碰到 原题 ,这样就可以保证不必动脑,却做出正确答案。 所以,出模拟考卷时,老师尽量要保证不要出现学生平时练过的题目,否则无法正确估量学生目前的复习备考状态,噪声过高容易误事儿。 验证集和训练集,应该是 不交叠 的。这样选择模型的时候,才可以避免被数据交叠的因素干扰。 每个学校的模拟考,却都恨不得能押中高考的题。这样可以保证本校学生在高考中,可以“见多识广”,取得更高分数。 高考出卷子的老师,就必须尽力保证题目是全新的,以筛选出有能力的学生,而不是为高校选拔一批“见过题目,并且记住了标准答案”的学生。 因此,测试集应该既不同于训练集,又不同于验证集。 换句话说,三个数据集合,最好都没有重叠。 学生应该学会举一反三,学会的是知识和规律。 用知识和规律,去处理新的问题。 我们对机器模型的期许,其实也一样。 在学术论文中,你见到的大部分用于机器学习模型对比的公开数据集(例如 fast.ai 公开数据集中的 Yelp, IMDB, ImageNet 等),都符合这一要求。 然而,例外肯定是有的。 例如我在 INFO 5731 课程里面给学生布置的某期末项目备选项,来源于某学术类数据科学竞赛,目标是社交媒体医学名词归一化。 其中就有数据,既出现在了训练集,又出现在了验证集,甚至测试集里也会有。 面对这种问题,你该怎么办? 你怎么判断自己的模型,究竟是强行记住了答案,还是掌握了文本中的规律? 这个问题,作为思考题留给你。 我希望在知识星球中和热爱学习的你,做进一步讨论。 另外的一个问题,是训练集要不要和别人的 完全一致 ? 一般来说,如果你要强调自己的模型优于其他人,那么就要保证是在 同样的 训练集上训练出来。 回顾深度学习的三大要素: 数据(Data) 架构(Architecture) 损失(Loss) 如果你的训练数据,比别人多得多,那么模型自然见多识广。 对于深度学习而言,如果训练数据丰富,就可以显著避免过拟合(Overfitting)的发生。 GPT-2 模型,就是因为具备了海量 Reddit 数据做训练,才能傲视其他语言模型(Language Model),甚至以安全为理由,拒绝开放模型。 但是这时候,你跟别人横向比较,似乎就不大公平了。 你的架构设计,未必更好。假使对方用同样多的数据训练,结果可能不必你差,甚至会更优。 这就如同一个复读了5年的学生甲,充分利用每一分每一秒,做了比应届生乙多5倍的卷子。结果在高考的时候,甲比乙多考了1分(同一张卷子)。 你能说甲比乙更有学习能力,学习效果更好吗? 小结 这篇教程里,我为你梳理了机器学习中常见的三种不同数据集类别,即: 训练集 验证集 测试集 咱们一一分析了其作用,并且用“考试”这个大多数人都参加过,且容易理解的例子做了诠释。 希望读过本文之后,你的概念架构更为清晰,不再会误用它们,避免给自己的研究挖坑。 祝深度学习愉快,论文发表顺利哦! 作业 这里给你留一道思考题: 有的时候,你看到有人把训练集切分固定的一部分,作为验证集。但是另一些时候,你会看到有人采用“交叉验证”的方式,即每一轮训练,都动态轮转着,把一部分的数据,作为验证集。对吧? 那么问题来了,什么样的情况下,你应该采用第一种方式,即固定分配验证集?什么样的情况下,你应该采用“交叉验证”方式呢?后者的优势和缺点,又各是什么呢? 欢迎你留言回复,写下自己的判断标准与原因阐述。咱们一起交流讨论。 征稿 One more thing …… 这里还有个 征稿启事 。 国际学术期刊 Information Discovery and Delivery 要做一期关于 “Information Discovery with Machine Intelligence for Language” 的特刊(Special Issue)。 本人是客座编辑(guest editor)之一。另外两位分别是: 我在北得克萨斯大学(University of North Texas)的同事 Dr. Alexis Palmer 教授 南京理工大学 章成志教授 征稿的主题包括但不限于: Language Modeling for Information Retrieval Transfer Learning for Text Classification Word and Character Representations for Cross-Lingual Analysis Information Extraction and Knowledge Graph Building Discourse Analysis at Sentence Level and Beyond Synthetic Text Data for Machine Learning Purposes User Modeling and Information Recommendation based on Text Analysis Semantic Analysis with Machine Learning Other applications of CL/NLP for Information Discovery Other related topics 具体的征稿启事(Call for Paper),请查看 Emerald 期刊官网的 这个链接 (http://dwz.win/c2Q)。 作为本专栏的老读者,欢迎你,及你所在的团队踊跃投稿哦。 如果你不巧并不从事上述研究方向(机器学习、自然语言处理和计算语言学等),也希望你能帮个忙,转发这个消息给你身边的研究者,让他们有机会成为我们特刊的作者。 谢谢! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何快速写作论文初稿? 如何选研究题目? 数据科学入门后,该做什么? 文科生如何理解循环神经网络(RNN)? 《文科生数据科学上手指南》分享 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 题图: Photo by Jonah Pettrich on Unsplash
14070 次阅读|4 个评论
传统作物模型与数据驱动的模型的融合
热度 1 csiro 2019-6-8 15:00
最近跟学生讨论融合把数据驱动的模型(机器学习,或者统计模型)跟传统的机理模型结合的问题。大意如下: (1) 我们都知道,模型是现实的简化,它不可能代表真实的世界,真实的世界远比模型复杂。这就带来一个问题:模型的不确定性,就是算不准的问题。很多模型虽然通过调参,可以模拟得很好,但是对未来的预测,或者对新数据的解释,往往不尽如人意。这就是当前的主要问题,模型可以用来发表文章,但是不能做预报。 (2) 模型的不确定性来自三个方面:模型结构、模型参数、模型输入。模型结构过于简化,不能反映实际情况,导致计算出来有偏差;不是所有的模型参数都来自实验观测,多数是从实验数据反推过来(率定,Calibration),参数不准确,也会带来计算结果的偏差;模型输入,基本是气象因子,光照温度降水等气象要素,每时每刻都在变化,也是每时每刻都在影响作物生长,但是我们的模型简化到一天一个平均值,或者比较详细的,每小时一个气象因子(一般是插值出来),这样也会带来误差。 (3) 在实际工作中,如气象局,他们的气象业务中,用到模型。也有很多觉得模型不准,而用统计模型。统计模型可以说是经验模型,它是根据当地的数据,用简单的相关或者多元回归建立。事实上,它捕捉到了作物产量与主要影响因子的关系。但是经验模型只适用于当地,离开这个地方,作物-环境关系改变了,这个经验关系也变化。 (4) 能否把传统模型与数据驱动的统计模型结合起来?类似于数据同化方法,传统模型有它的作用,它基本上体现了作物生长的主要限制因子,统计模型的优势在于,传统模型没有包括的情况,它可以弥补,如水稻的冷害(在水稻开花期遇到低温冷害,空瘪粒增加,产量降低),如黄淮海小麦灌浆期遇到干热风,成熟提前,减产。 (5) 我们现在可能走到一个十字路口,不能沿着传统的方向往前走了,把国外的模型拿过来,用我们的实验数据检验一下,然后做些分析,就发表一些论文。而常常是,模型的检验不是找模型的问题,是找自己的问题。模型检验不了,不去怪模型不合适,而是去自责模型没有调好。这样的工作,即使发表也没有多大的价值。我们需要重新审视传统作物模型能做什么,不能做什么。 (6) 如果有一天,数据的采集非常容易,过去需要计算的量,如叶水势,如光合速率,都直接观测了,那么模型就没有必要包括这一块(未知的变量成为已知的变量)。当数据足够多的时候,这些数据经历了各种环境情况,那么通过机器学习就可以把作物产量和环境的因子的关系建立起来。这样传统的模型根本就不需要了。最近接触几个公司,他们的数据在很快积累。大约5-10年,核心技术是数据和数据分析方法,而不是传统的作物模型。 (7) 现在需要思考的,是我们当前能够用的有哪些新的、大的数据? 附上我的博士生冯璞玉最近发表的几篇相关论文,可以在www.agrivy.com上全文下载: Feng, P.Y., Wang, B., Liu, D.L., Waters, C., Yu, Q.* , 2019. Incorporating machine learning with biophysical model can improve the evaluation of climate extremes impacts on wheat yield in south-eastern Australia . Agricultural and Forest Meteorology , 275: 100-113. Impact Factor:4.039 Feng, P.Y.*, Liu, D.L., Wang, B., Waters, C., Zhang, M.X., Yu, Q. , 2019. Projected changes in drought across the wheat belt of south-eastern Australia using a downscaled climate ensemble . International Journal of Climatology , 39(2):1041-1053. Impact Factor: 3.100 Feng, P.Y., Wang, B., Liu, D.L., Yu, Q.* , 2019. Machine learning-based integration of remotely-sensed drought factors can improve the estimation of agricultural drought in south-eastern Australia . Agricultural Systems , 173: 303-316. Impact Factor: 3.004
个人分类: 创新篇|9937 次阅读|2 个评论
深圳湾实验室高毅勤教授课题组诚聘博士后(理论与计算化学、生物信息学、机器学习)
hiyesterday 2019-5-20 15:54
深圳湾实验室 高毅勤教授课题组博士后招聘启事 ( 2019 年 5 月) 深圳湾实验室(生命信息与生物医药广东省实验室)是广东省委、省政府以培育创建国家实验室、打造国家实验室“预备队”为目标主导启动的第二批广东省实验室之一。由中国工程院院士詹启敏担任实验室主任,全国人大外事委员会副主任委员林建华担任特别顾问。实验室由深圳市和北京大学深圳研究生院共同举办,深圳湾实验室以深圳健康科学研究院为直属研究机构,协同深圳大学、南方科技大学、香港中文大学(深圳)、清华大学深圳研究生院、哈尔滨工业大学(深圳)、深圳先进技术研究院、华大生命科学研究院、深圳数字生命研究院以及相关领域具有研究基础和应用优势的单位合作共建。 深圳湾实验室立足中国最具创新力的城市深圳,整合北京大学以及粤港澳大湾区的生命健康研究优势资源,吸纳全国乃至全球的顶尖人才,围绕生命信息,医学工程和创新药物研究三个方面,开展生物医学领域前沿研究,解决人口与健康领域的重大科学问题,建立健康科学研究的全方位、跨尺度、全周期的重大装置平台,包括生物医学成像平台、生物化学与分子生物学研究平台、尖端基因技术与组学平台、生物医药筛选平台和临床医学研究平台。 高毅勤教授为教育部长江学者,深圳湾实验室、北京大学化学与分子工程学院、北京大学生物医学前沿创新中心(BIOPIC)教授。高毅勤教授的研究方向是理论与计算化学和生物物理学,致力于发展针对生物和化学体系的理论与计算方法,特别是染色质三维结构、生物大分子和材料自组装、DNA别构效应、水溶液中蛋白质的折叠机理、无机盐水溶液性质等领域的研究。 根据课题组目前的建设需要,现面向学术界诚邀德才兼备、勇于接受挑战的人才加入,现计划在深圳湾实验室招聘博士后两名。 一、研究方向 目前课题组在深圳湾实验室的主要研究方向是生物和化学体系的智能计算,包括: 1. 新型增强抽样方法的开发 2. 机器学习方法在计算化学、计算生物学以及生物信息学中的应用 3. 蛋白质和水分子力场的优化 4. 染色质三维结构的探索 5. 生物大分子及材料的自组装 二、应聘条件 基本条件: 1. 热爱科学,能够坚守学术道德,具有团队合作精神,具备优秀的学习能力。 2. 在化学、生物、数学、物理、材料、计算机等相关学科即将获得博士学位,或已经获得博士学位不超过三年。 3. 曾经从事或参与过分子动力学、生物信息学或机器学习等领域的相关科研工作。 4. 会使用至少一种计算机编程语言。 进阶条件(满足一条或多条者将优先考虑): 1. 可熟练使用C++进行面向对象编程,或者熟悉任意一种分子动力学模拟软件的代码。 2. 熟悉任意一种增强抽样方法。 3. 熟悉深度学习技术。 4. 具有分子力场开发或参数优化的经验。 5. 曾经作为主要负责人之一参与过任意一种针对计算化学、计算生物学或生物信息学体系的计算或分析方法的开发。 6. 拥有自己的一套完整且可行的研究计划(若判定有价值课题组会全力支持)。 三、福利待遇 聘期基本待遇按照深圳湾实验室和北京大学深圳研究生院关于博士后的相关规定执行,同时可享受深圳市对于相关人才的优惠和待遇: 1. 年薪30万起,同时课题组将依据绩效额外提供生活补助。 2. 具有海外博士学位或海外博士后经历者,在站期间可申请深圳市孔雀计划(C类人才补贴160万,B类人才补贴200万)。 3. 博士后出站如选择留深工作,可获得深圳市政府按规定给予的30万元科研启动经费。从事科研工作满三年者,可认定为深圳市后备级人才并获深圳市160万补贴。 4. 课题组将提供充足科研经费并全力支持其作为负责人申请博士后科学基金、国家自然科学基金及省、市各级项目。 四、应聘方式 满足岗位要求且有兴趣从事相关研究工作者请提供如下材料: 1. 求职信(cover letter)。 2. 履历(CV):包含已发表与即将发表文章的列表,其中尚未公开发布的文章请提供全文或摘要,预印本请提供链接。 3. 体现个人能力的其他相关资料。 联系人:杨奕博士 联系方式: yangyi@szbl.ac.cn
6254 次阅读|0 个评论
那本 Tensorflow 2.0 奇书,你可以限时免费下载了
wshuyi 2019-5-12 10:49
还记得在《 文科生 Python 与数据科学入门教材推荐 》一文里,我推荐给你的这本书吗? 它的第一版,是数据科学出版史上的奇迹。 就连放在 Github 上 的配套代码,居然都获得了超过 14000 星。 还专门有人,做了一期视频。给你讲为什么这是他读过的,关于深度学习的 最好的一本书 。 视频的链接在 这里 ( http://t.cn/EKhDwOW )。 现在,它就要推出第二版了。 这一版针对的,是最新的 Tensorflow 2.0 版本。这个版本的重大改进和优点,以及学习必要性,我在《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》一文里,已经详细为你阐述过了。 可惜的是,这本书距离正式出版,还有几个月的时间。 况且,价格也要 60美元 。 出版社跟你一样心急,想让你先睹为快。 开玩笑啦,人家其实是招募一小撮 Beta 版用户,帮着挑挑错误,以便在正式出版时改进。 所以,没有大张旗鼓的宣传。 该版本实际上已经包含了第二版的 全部内容 ,只是还没有经过严格校对而已。 但这绝对是个 双赢 的事儿,不是吗? 在这样一个快速发展、实践导向的领域里,比别人提前几个月读完一本优质的新书,会是一种怎样的体验? 自己想吧。 从现在起到 5月16日 ,你都可以通过我分享的链接, 免费下载 本书的预览版本。 获取方法如下: 关注我的微信公众号“玉树芝兰”(nkwangshuyi)。 后台回复:“tf2e”,注意字母都是 小写 的。 然后你就能获得链接了。 点击进去,在右侧表格里面填写你的个人信息(尤其注意 邮箱 要填对)。 不一会儿,你就能收到出版社发给你的邮件,里面有 pdf 版本的下载链接。 然后,你就可以跟我一样,享受阅读这本机器学习奇书的乐趣了。 赶紧开始吧! 这个开放下载的时间窗口很短,要抓紧。 通过这事儿,想必你也能 加深理解 ,优质信息渠道的 重要性 了。 如果你有亲朋好友正准备学习机器学习,欢迎你把这个信息一并 及时 转发给TA。 TA 也一定会体验到你的善意和友情的。 祝深度学习愉快! 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
3694 次阅读|0 个评论
数据科学入门后,该做什么?
热度 2 wshuyi 2019-5-10 10:28
三种学习方式,助你建构多重网络,获得能力与价值的非线性增长。 疑问 有不少读者,在我的数据科学教程下留言,问我类似这样的问题: 王老师,我已经跟着您的全部教程,从头到尾实践了一遍。中间不懂的地方,也专门看书或者上网查找,补充了知识。感觉数据科学算是入门了。但是之后我该做什么呢?有没有什么进阶教材推荐一下? 你的问题很有价值。 教材的事儿,我之前专门为你写了《 文科生 Python 与数据科学入门教材推荐 》。其中部分书籍的深度,已经不止算是入门级别了。尤其是那些讲到了 BERT 的。 然而,从入门到进阶,绝不是再多去看几本书这么简单。 恰好,这周我在北得克萨斯大学的《信息系统中的计算方法》课程结课了。 这一学期,我教给学生们的主要知识技能,包括 Python 、数据整理(Pandas)、数据可视化、机器学习(包括深度神经网络)和自然语言处理。 说到这里,你可能会心一笑。 对,其实你把我全部教程跑一遍,学的内容也应该差不多了。 你面对的问题,同时也应该是他们的问题。 只不过,他们学得 更辛苦 一些。 毕竟,每次作业都有个明确的截止日期。 我上第一课的时候,逐个做过调查。不少学生之前没有接触过 Python 或者类似的编程语言。 这一学期下来,他们不仅学完了 Python 基础,还能用深度学习处理结构化数据、图像,乃至自然语言相关任务了。 达成学习目的的背后,是辛勤的付出。 我说:考虑到平均每周课后你们需要在这门课上花 15个小时 做作业和练习,着实辛苦了…… 学生立即插话:别逗了,老师。绝对 不止啊 ! 学生们展示完期末报告后,我们一起合了张影。 然后他们就想收拾包下课走人,被我拦下了。 我说,还差一部分内容,听我讲完。 我着实不希望,学生们在付出这些时间和汗水后,就此止步。 别忘了,你我的头脑,都有一个重要功能—— 遗忘 。 倘若从此停止学习,他们之前所学的内容,也就随着自然的遗忘,前功尽弃了。 我补充的这部分内容叫做: 下一步,该干什么? 我主要讲了3点: 实践中学习 教学中学习 传播中学习 我把这部分内容整理出来,加上一些解释和阐述,一并分享给你。 希望能帮助主动勤奋学习的你,在入门数据科学之后,走上 高效进阶 之路。 实践 第一种方式,是在 实践中学习 。 简单来说,就是找 现实世界中 的任务,整合与磨练自己的技能。 为什么是“现实世界中的任务”? 教科书里面的任务,往往为了结果的一致性和讲解方便,隐藏了很多的细节。 尤其是数据,基本上都是帮助你清理好的,或者是很容易整理和转换。你拿过来直接灌进模型,就可以看结果。这样确实有助于提升你的成就感。 但是处理一次真实世界的数据,你就会发现。一个机器学习任务,整体的时长是10小时的话,那么其中大概8个小时,都不是用来建模训练的。 建模这件事儿,如今做起来,真的跟搭积木几乎没区别。 我给你举过十行代码搞定图像识别的例子。但更极端的,是连写代码都可以省略。 只需要根据目标,把若干层次堆叠好,剩下的就是算力和时间在发挥功效了。 例如 Google Cloud AutoML 。 工学院的开放日,我曾驻足在一个海报前,问学生怎么获得了这么高的图像识别率,都如何调整超参数的? 对方答不上来。但是告诉我他们用了 Cloud AutoML 。超参数调整云端后台直接搞定,根本不用自己操心。 但是,你应该清楚,即便在数据和模型齐备的情况下,为了能够让你的原始数据可以被这个标准化的模型接受,你得花费多少时间和心力。 文本数据,你需要进行编码转换(有些词汇里面有非英文拉丁字母),替换标点和特殊符号(例如 Emoji),处理大小写,也得考虑停用词问题。对于中文,甚至还需要分词。你需要找到足够好的词嵌入预训练模型。对于长短不同的句子,也得明白该如何截断和补齐。(参见《 如何用 Python 和循环神经网络做中文文本分类? 》) 时间序列,你需要清理缺失数据,找寻要提取的特征,设定时间窗口和地理围栏。为了平衡数据集,你需要在随机抽取的基础上,考虑前导事件序列是否有重复,是否为空。面对一个只有1GB的小型数据集,如果操作不当,这些预处理动作都会耗费你大量的时间资源。(参见《 如何用 Python 和循环神经网络预测严重交通拥堵? 》) 如果只是满足于拿别人清理好的数据直接灌进模型,这些知识你是不会触碰的。 只有在 实践 中,你才可能积累这种层级的认知。 而当你不断扩展和延伸这些琐碎的、书本上来不及介绍的知识,你也就在向着专业的高峰攀爬。 你可以把学到的数据分析技能,应用到自己的研究与工作中,变手工为自动,让老板和客户赞叹;也可以把基于规则的系统,改造成从数据中提炼规律的智能自适应系统。 你可以去参加五花八门的开放数据竞赛,与各路高手过招。 输了你能学到别人的先进经验和理念,赢了有奖金。 有了这些积累,你甚至可以尝试在工作与学习之余,打造自己的智能应用。 挖掘痛点、迭代开发,把成果放到应用商店或者网站上,给自己赚取些“睡后收入”。 教学 第二种方式,是在教学中学习。 这并非要求你转换职业,去当老师。 你可能常听说过一句话,叫做: 教是最好的学。 你信吗? 我想告诉你,这是 真的 。 “教”这个动作,蕴含着两个事儿:“输出”和“被接受”。 输出,可以倒逼你的输入,而且是高质量输入。 为了讲出来,你就必须自己弄懂。 在这个过程中,你可能会倒吸一口凉气——之前自己的理解,居然是错的呀! 自己弄懂之后,还不算完。 因为“教”是有明确对象的。 对方 能否接受和理解,才是评价你 教学效果 的准则。 为了让对方弄懂,你就不得不想办法,把原先仅限于“自己理解”的知识,用举例、说明、比喻等方法,包装成对方可以 吸纳 和 理解 的产品。 为了说明白一些动态过程,你甚至需要去制作动图乃至视频。 上图来自于 Raimi Karim 的博客 。我觉得他把 LSTM 单元工作的原理,介绍得非常清晰生动。 教学这个过程,会充分强化你与知识内容之间的连接。 你可能会认为, 免费教学 很吃亏。 其实不然。 教学过程中,你梳理了专业知识、打磨了沟通技巧、建立了声誉和信任感。 对这些收获,不要视而不见。 并非只有货币化的回报才有价值。 回忆一下,上中学的时候,班上可能有两种学霸。 第一种自己苦学。别人问问题,都推说自己也不会。这种人即便成绩好,因为缺乏协作能力,也很难有大成就。 第二种爱答疑解惑。老师不在的时候,他甚至会自告奋勇走上讲台,往黑板上面抹画,给大家讲解难题。当他把一个班的答疑工作都承包后,想不得第一是件很有难度的事儿。 提起这第二种学霸,我就不由得想起我们高中班长的形象来了。他清华毕业后到加州读博士做研究,发过不止一篇 Nature 。 更让人印象深刻的是——毕业将近20年了,每次只要他一回国,立刻就可以召集起数十人的聚会。 这就是人缘。 数据科学不是什么屠龙术。你不肯讲解,别人也能通过其他渠道来获取相应信息。 所以真的没必要藏着掖着。 在教学互动中,你可能还能收获许多 意想不到的机遇 。 该怎么做呢? 你可以给身边的同事、同学、朋友讲解自己数据分析实践获得的新知。 还可以参加开放数据日等活动,给其他初级参与者以编程指导。 如果恰巧身边缺乏感兴趣的线下受众,也不要紧,有网络嘛。 知乎、Quora 和 Stackoverflow 等问答社区,都是你给别人答疑解惑的好场所。搜寻一下数据科学板块的热点问题,如果你会,就把答案写下来。 在这个过程中,你也能充分触摸市场的温度,了解哪些具体问题更受人们关注。 当然,更推荐的方法,是直接到我的教程后面找读者的留言提问。 许多问题,因为从头到尾尝试过,你有了现成解决的方法与心得。教起来就更是轻车熟路,不是吗? 传播 第三种方式,是在传播中学习。 对,我要教你如何 加杠杆 了。 或许你满足于只在一个特别小的圈子里面建立专业声誉,可外部世界对你一无所知。 对不起,你亏大发了。 因为机会成本太高。 人们常说,这是一个 个体崛起 的时代。 个体崛起的基础,是传播技术的发展。 统计一下,每天你花在微信、头条、知乎和抖音上的时间,有多少? 不光是你,许多人每天的时间和注意力,也会在这些信息传播平台上。 提醒你一下,在这些平台上创作和发布内容,是 免费 的。 把你实践的经验,用图文记录下来。 把你之前线下的讲解教学,用视频展现出来。 总之,是形成一个可发布的完整作品,而不只是片段。 然后,找准用户群,放到相应的平台上。 这样,你就能以最低廉的成本,把自己创作的文本、图像甚至是影像,传播到互联网的每一个角落。 有专业的团队替你操心租用服务器、网络安全、负载均衡,乃至是版权保护的问题,你只需要 专注内容 。 高质量、满足需求的内容,会给你带来更多的受众。 更多的受众,会迅速为你提升专业声誉,扩大你的社会网络,乃至给你带来更多的 优质机会 。 你之前实践和教学积攒的认知,都会在这个过程中迅速放大,乃至充分变现。 出版机构会联系你,希望你把系列教程结集出书。 专业领域的高手们,会注意到你,并且愿意把你拉进圈子,一起交流切磋。 猎头会积极联系你,更好的平台会给你伸来橄榄枝。甚至,你还可以有机会提供付费咨询服务。 你创造的应用,也会获得更多人的关注。如果使用效果好,他们会用口碑帮你自然传播,省下大笔营销费用。 广告主们自然会纷纷来找你谈合作与推广…… 但是,这里必须提醒你一下,一定要 注意底线 。 赚不该赚的钱,会损害你好不容易积累起来的网络与专业声誉,着实得不偿失。 小结 从入门到进阶,我给你推荐了三种方法。分别是: 实践中学习 教学中学习 传播中学习 细心的你,一定已经发现了。三种方法,实际上是在帮助你的三个网络增长延伸。 实践中学习,是帮你扩展 技能网络 。你与知识、技能连接越多,学习与领悟新知识就越快,尤其会提升 专业敏感度 。面对新问题,获取到同样的信息,新手可能胡子眉毛一把抓,最终束手无策;而高手只要扫一眼,就大概可以准确猜出问题在哪里,并且 快速掌握 对应的新知,来加以解决。 教学中学习,是帮你扩展 专业网络 。你给别人提供知识服务,不仅可以帮助自己提升沟通技能,打磨优化知识结构,更是与同事、同学、同业建立更好连接的机会。你的收获,除了帮助别人获取的快乐外,还有专业声誉(即 靠谱程度 )的提升。 传播中学习,是帮你扩展 社会网络 。你可以利用日渐完善的内容传播平台,建立个人品牌,增长关注者数量。这将给你带来不可估量的优质机会,帮助你实现自己的价值与理想。 这三者之间, 绝不是孤立 的关系。 它们是相互促进的。 你有了更广阔的社会网络,就有更多的机会接触到更有价值的问题,获取更宝贵的专属数据,甚至是操作更丰富的计算资源,从而获得自己独特的技能认知,反过来促进技能网络。 而你的技能增长,会让你的教学内容更有深度和质量,从而进一步扩展你的专业网络。 你的声誉越高,口碑越好,就会有越多的人关注你,加入到你的社会网络中。 这种增长,即所谓“正反馈”,是 非线性 的。 我们早已在波澜不惊的世界里,习惯以线性观点来衡量事物的变化。 所以总有一天,你的成长速度会把自己吓到。 这就是为什么,对“数据科学入门后,该做什么”这个问题,我无法给你推荐什么进阶书籍。 因为你需要的,根本就不是另一本包含更多公式的高难度教材。 只有看到这些别人看不到的网络,把你自己融入真实世界中,甚至逼迫自己不得不适应生长,你才有可能在技术、数据急速改变与塑造的新环境里借势而起,让自己充分增值,并且与适合自己的机遇产生链接。 祝 深度 学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图 :Photo by Samuel Ferrara on Unsplash
12820 次阅读|2 个评论
你的机器“不肯”学习,怎么办?
热度 1 wshuyi 2019-5-1 08:30
给你讲讲机器学习数据预处理中,归一化(normalization)的重要性。 前情回顾 Previously, on 玉树芝兰 …… 我给你写了一篇《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》,为你讲解了 Tensorflow 2.0 处理结构化数据的分类。 结尾处,我给你 留了一个问题 。 把测试集输入模型中,检验效果。结果是这样的: model.evaluate(test_ds) 准确率接近80%,看起来很棒,对吗? 但是,有一个疑问: 注意这张截图。训练的过程中,除了第一个轮次外,其余4个轮次的这几项重要指标居然 都没变 ! 它们包括: 训练集损失 训练集准确率 验证集损失 验证集准确率 所谓机器学习,就是不断迭代改进。 如果每一轮下来,结果都 一模一样 ,这里八成有鬼。 我给了你提示: 看一个分类模型的好坏,不能只看准确率(accuracy)。对于二元分类问题,你可以关注一下 f1 score,以及混淆矩阵(confusion matrix)。 这段时间,你通过思考,发现问题产生原因,以及解决方案了吗? 从留言的反馈来看,有读者能够正确指出了问题。 但很遗憾,我没有能见到有人提出 正确和完整 的解决方案。 这篇文章,咱们就来谈谈,机器为什么“不肯学习”?以及怎么做,才能让它“学得进去”。 环境 本文的配套源代码,我放在了 这个 Github 项目 中。请你点击 这个链接 ( http://t.cn/ESJmj4h )访问。 如果你对我的教程满意,欢迎在页面右上方的 Star 上点击一下,帮我加一颗星。谢谢! 注意这个页面的中央,有个按钮,写着“在 Colab 打开”(Open in Colab)。请你点击它。 然后,Google Colab 就会自动开启。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 Colab 为你提供了全套的运行环境。你只需要依次执行代码,就可以复现本教程的运行结果了。 如果你对 Google Colab 不熟悉,没关系。我 这里有一篇教程 ,专门讲解 Google Colab 的特点与使用方式。 为了你能够更为深入地学习与了解代码,我建议你在 Google Colab 中开启一个全新的 Notebook ,并且根据下文,依次输入代码并运行。在此过程中,充分理解代码的含义。 这种 看似笨拙 的方式,其实是学习的 有效路径 。 代码 请你在 Colab Notebook 里,找到这一条分割线: 用鼠标点击它,然后从菜单里面选择 Runtime - Run Before : 运行结束后,你会获得如下图的结果: 《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》一文的结果已经成功复现。 下面我们依次来解读后面的语句。 首先,我们利用 Keras API 中提供的 predict 函数,来获得测试集上的预测结果。 pred=model.predict(test_ds) 但是请注意,由于我们的模型最后一层,用的激活函数是 sigmoid , 因此 pred 的预测结果,会是从0到1区间内的小数。 而我们实际需要输出的,是整数0或者1,代表客户“流失”(1)或者“未流失”(0)。 幸好, numpy 软件包里面,有一个非常方便的函数 rint ,可以帮助我们四舍五入,把小数变成整数。 pred=np.rint(pred) 我们来看看输出结果: pred 有了预测输出结果,下面我们就可以用更多的方法,检验分类效果了。 根据前文的提示,这里我们主要用到两项统计功能: 分类报告 混淆矩阵 我们先从 Scikit-learn 软件包导入对应的功能。 from sklearn.metrics import classification_report,confusion_matrix 然后,我们对比测试集实际标记,即 test ,和我们的预测结果。 print(classification_report(test ,pred)) 这里,你立刻就能意识到出问题了——有一个分类,即“客户流失”(1)里,三项重要指标(precision, recall 和 f1-score)居然都是0! 我们用同样的数据查看混淆矩阵,看看到底发生了什么。 print(confusion_matrix(test ,pred)) 混淆矩阵的读法是,行代表实际分类,列代表预测分类,分别从0到1排列。 上图中,矩阵的含义就是:模型预测,所有测试集数据对应的输出都是0;其中预测成功了1585个(实际分类就是0),预测错误415个(实际分类其实是1)。 也就是说,咱们费了半天劲,训练出来的模型只会傻乎乎地,把所有分类结果都设置成0. 在机器学习里,这是一个典型的 笨模型 (dummy model)。 如果咱们的测试集里面,标签分类0和1的个数是均衡的(一样一半),那这种笨模型,应该获得 50% 的准确率。 然而,我们实际看看,测试集里面,分类0(客户未流失)到底占多大比例: len(test == 0 ])/len(test) 结果是: 0 .7925 这个数值,恰恰就是《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》一文里面,我们在测试集上获得了准确率。 一开始我们还认为,将近80%的准确率,是好事儿。 实际上,这模型着实很傻,只有一根筋。 设想我们拿另外一个测试集,里面只有 1% 的标注是类别0,那么测试准确率也就只有 1% 。 为了不冤枉模型,咱们再次确认一下。 使用 numpy 中的 unique 函数,查看一下预测结果 pred 中,到底有几种不同的取值。 np.unique(pred) 结果是: array ( ,dtype=float32) 果不其然,全都是0. 果真是“人工不智能”啊! 分析 问题出在哪里呢? 模型 根本就没有学 到东西。 每一轮下来,结果都一样,毫无进步。 说到这里,你可能会有疑惑: 老师,是不是你讲解出错了? 两周前,我在 UNT 给学生上课的时候,他们就提出来了这疑问。 我早有准备,立即布置了一个课堂练习。 让他们用这套流程,处理另外的一个数据集。 这个数据集你也见过,就是我在《 贷还是不贷:如何用Python和机器学习帮你决策? 》里面用过的贷款审批数据。 我把数据放在了 这个链接 ( http://t.cn/ESJ3x3o ),你如果感兴趣的话,不妨也试着用前文介绍的流程,自己跑一遍。 学生们有些无奈地做了这个练习。 他们的心理活动大概是这样的: 你教的这套流程,连演示数据都搞不定,更别说练习数据了。做了也是错的。是不是先纠正了错误,再让我们练啊? 然后,当运行结果出来的时候,我在一旁,静静看着他们惊诧、沉思,以至于抓狂的表情。 同一套流程,在另外的数据上使用,机器 确实学习到了规律 。 数据集的细节里面,藏着什么魔鬼? 归一 直接说答案: 流程上确实有问题。数值型数据 没有做归一化 (normalization)。 归一化是什么? 就是让不同特征列上的数值,拥有类似的分布区间。 最简单的方法,是根据训练集上的对应特征,求 Z 分数。 Z 分数的定义是: Mean 是均值 Standard Deviation 是标准差 为什么一定要做这一步? 回顾一下咱们的数据。 我这里用红色标出来了所有数值特征列。 看看有什么特点? 对,它们的分布迥异。 NumOfProducts 的波动范围,比起 Balance 或者 EstimatedSalary ,要小得多。 机器学习,并不是什么黑科技。 它的背后,是非常简单的数学原理。 最常用的迭代方法,是梯度下降(Gradient descent)。如下图所示: 其实就是奔跑着下降,找局部最优解。 如果没跑到,继续跑。 如果跑过辙了,再跑回来。 但问题在于,你看到的这张图,是只有1维自变量的情况。 咱们观察的数据集,仅数值型数据,就有6个。因此至少是要考察这6个维度。 不好意思,我无法给你绘制一个六维图形,自己脑补吧。 但是注意,对这六个维度,咱们用的,却是同一个 学习速率 (learning rate)。 就好像同一个老师,同时给6个学生上数学课。 如果这六个维度分布一致,这样是有意义的。 这也是为什么大多数学校里面,都要分年级授课。要保证授课对象的理解能力,尽量相似。 但假如这“6个学生”里,有一个是爱因斯坦,一个是阿甘。 你说老师该怎么讲课? 爱因斯坦听得舒服的进度,阿甘早就跟不上了。 阿甘能接受的进度,爱因斯坦听了可能无聊到想撞墙。 最后老师决定——太难了,我不教了! 于是谁都 学不到东西 了。 对应到我们的例子,就是因为数据分布差异过大,导致不论往哪个方向尝试改变参数,都按下葫芦浮起瓢,越来越糟。 于是模型判定,呆在原地不动,是 最好的策略 。 所以,它 干脆不学 了。 怎么办? 这个时候,就需要归一化了。 对应咱们这个不恰当的举例,就是在课堂上,老师要求每个人都保持每天一单位(unit)的学习进度。 只不过,爱因斯坦的一单位,是100页书。 阿甘同学……两行,还能接受吧? 新代码 请你点击 这个链接 ( http://t.cn/ESJBJHW )访问更新后的代码。 按照之前的方式,点击“在 Colab 打开”(Open in Colab)。使用 “COPY TO DRIVE” 按钮,存放在你自己的 Google Drive 中。 对比观察后,你会发现,改动只有 1个代码段落 。 就是把原先的数值型特征采集从这样: for header in numeric_columns: feature_columns.append(feature_column.numeric_column(header)) 变成这样: for header in numeric_columns: feature_columns.append( feature_column.numeric_column( header, normalizer_fn= lambda x:(tf.cast(x,dtype=float)-train .mean())/train .std())) 尤其要注意,我们要保证平均值和标准差来自于 训练集 。只有这样,才能保证模型对验证集和测试集的分布一无所知,结果的检验才有意义。否则,就如同考试作弊一样。 这就是为了归一化,你所需做的全部工作。 这里我们依然 保持 原先的 随机种子设定 。也就是凡是使用了随机函数的功能(训练集、验证集和测试集的划分等),都与更新代码之前 完全一致 。 这样做,改变代码前后的结果才有 可对比性 。 下面我们使用菜单栏里面的 Run All 运行一下代码。 之后查看输出。 首先我们可以注意到,这次的训练过程,数值终于有变化了。 因为其他变量全都保持一致。所以这种变化,没有别的解释,只能是因为使用了归一化(normalization)。 我们更加关心的,是这次的分类报告,以及混淆矩阵。 分类报告是这样的: 注意这一次,类别1上面的几项指标,终于不再是0了。 混淆矩阵中,类别1里,也有36个预测正确的样本了。 成功了! …… 别急着欢呼。 虽然机器在学习和改进,但是效果好像也不是很好嘛。例如类别1的 Recall 简直惨不忍睹。 有没有什么办法改进呢? 这个问题,就需要你了解如何微调模型,以及超参数的设定了。 我把推荐的学习资料,放在了公众号的对应文章里,欢迎查看。 小结 这篇文章里,我为你介绍了以下知识点: 分类模型性能验证(尤其是 Accuracy 之外的)评测指标; 预处理过程中数值数据归一化(Normalization)的重要性; 如何在 Tensorflow 2.0 的数据预处理和特征抽取中使用归一化; 如何利用模型预测分类结果,并且使用第三方软件包功能快速统计汇报。 希望上述内容,能对你使用深度神经网络进行机器学习有帮助。 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图 :来自于 freepixels
8440 次阅读|1 个评论
文科生 Python 与数据科学入门教材推荐
wshuyi 2019-4-22 10:50
从入门到精通,给你推荐几本 Python 与数据科学好书。 需求 最近读者数量增长了不少。有许多新读者留言,说自己想入门 Python 与数据科学,希望我能够推荐一些教材书籍。 老读者们都知道,我经常会在教程末尾的“资源”或者“小结”章节,推荐相关的书目。我推荐的书籍,有个特点,就是写得简明易懂,适合文科生阅读。 那种一打开,公式便随处可见的书,也许内容质量非常高,但确实不适合文科生的 入门级阅读 。许多人就是这样被吓跑,然后干脆放弃了的。 所以,如果你是专业人士,看完之后,按捺不住想要发飙: 为什么没有提到XXX和XXX,那才是经典!你还好意思自称老师,到底懂不懂行?! 请保持理智,注重文明举止,多一份同理心给文科生们。 谢谢合作! 考虑到这些书籍推荐散落各处,新读者一篇篇翻找起来不是很方便,我这里把它们汇总一下。同时,我也加入了一些新的书籍,有的只是之前没有提到,有的却甚至 新到还没出版 的地步。 下面我分成 Python,数据科学,机器学习这几个部分,分别给你谈一谈。 Python 第一本,当然是《笨办法学 Python 》(Learn Python the Hard Way)。 我在《 如何高效学Python? 》一文里,隆重推荐过它。 书名起成这样,居然还能卖得出去,实在是 营销界的奇迹 啊! 能卖出去,想必不是因为书名吸引人。 吸引人的书名应该叫做《XX天 Python 从入门到精通》,《X天学会数据科学》,或者《深度学习24小时教程》…… 能有这么多人购买学习,说明了它的 口碑效应 相当好。 这本书,最适合自学入门。如同《新概念英语》,它采用 螺旋上升、以练促学、温故知新 的形式来讲解和辅导你练习。 你得相信口碑的力量。 别人能拿它学会, 你也行 。 若购买中文版,请选择最新的 Python 3 版本,链接在 这里 。 第二本,是我这学期在北得克萨斯大学(University of North Texas)讲授的《面向信息系统的计算方法》( Computational Methods for Information Systems )课程的教材之一。 书名叫做:“Think Python: How to Think Like a Computer Scientist”,我用的是第二版。 你对这个书名,不应该陌生。因为我在《 如何高效学Python? 》一文中,为你介绍过这本书和传奇 Python MOOC Programming for Everybody 之间的关联。 你可以 点击链接 查看具体说明。 经过这一学期的教学实践,我确认这本书不愧为经典教材。配合上 翻转教学 的形式,以及 Google Colab 的环境支持 ,学生们上手 Python 特别迅速。 这本书的中文版叫做《像计算机科学家一样思考Python》,购买链接在 这里 。 数据科学 第三本书,是数据科学的入门读物,也是我本学期课程的另一本指定教材。 书名叫做:“Data Science from Scratch”。 该书的特点,可以这样概括: 就是 不 教你调包。 大家都知道,现在的数据科学工具丰富。许多时候,你只要知道如何调用一个第三方软件包,就可以轻松完成某项任务,例如下载数据、绘图,甚至是机器学习建模。 但是这本书偏反其道而行之,从最简单问题入手,让你 从头实现 功能。 这样一来,你就不止知其然,还充分明白其 所以然 。 为了调动你的兴趣,书中选择的样例,都是非常实用而有趣的。虽然你的代码比较基本,但是麻雀虽小五脏俱全,成就感一点也不会差。 因为成书时间比较早,这本书原始代码,都是用 Python 2 写成的。因此在今天的 Python 3 环境下运行,会有差别。 好在作者非常贴心,从头更新了所有的代码,把 Python 3 版本发布在了 Github 上面。 你可以访问 这个链接 ,查看与尝试最新版代码。 中译本名称为《数据科学入门》,链接在 这里 。 第四本,是关于 Python 数据框 Pandas 的 。如果你用 Python 做数据分析,不会 Pandas 也能完成很多任务,只是会更痛苦一些。 我曾经有多篇教程,展示了 Pandas 的功能强大。简单的一两行代码,就可以让你从原始数据中提炼与绘制出这样的统计图形来。 还记得吧?上图来自《 如何用 Python 和 Pandas 分析犯罪记录开放数据? 》一文。要注意复习哦。 这本书的名字叫做 “Python for Data Analysis”。 作者是 Wes McKinney ,Pandas 项目的 创始人 。 软件包的创造者亲自写书,权威程度可想而知。 这本书第一版就很畅销,后来在2017年又推出了使用 Python 3 的第二版。 中译本目前还只有第一版的,链接在 这里 。不过 Wes McKinney 在个人主页说第二版就快要面世了。 机器学习 第五本书,是 Aurélien Géron 的 “Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems”。 这本书简直就是个教材出版界的奇迹。 发行量咱就不提了,就连放在 Github 上 的配套代码,居然都获得了超过 14000 星。 这本书同时涉及了经典机器学习和深度神经网络,适合你从零基础了解到最新前沿内容。 中文译版叫做《机器学习实战:基于Scikit-Learn和TensorFlow》。链接 在这里 。 且慢下单! 还记得我前面说的那句话吗? 有的甚至 新到还没出版 的地步。 这本书的第二版,快要上市了。 书名更新为 Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems。 其实你看,第二版的书名里面,也就是加了个 Keras 。但是如果你阅读我的那篇《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》比较仔细,应该不难理解这意味着什么。 由于 Keras 已经成了 Tensorflow 2.0 中**深度整合且官方推荐的高阶 API **,所以这本书实际上讲的,就是 Tensorflow 2.0 。 作者也表示说,可能需要跟出版社沟通,看要不要在封面上显著标识一下 Tensorflow 2.0 字样。 不过,第二版的出版时间,预定是 2019年8月 。 咱们还真得 等些日子 。 等待的这些日子,就不能学习 Tensorflow 2.0 了吗? 当然不是。 再次强调,现在你学 Keras ,就是学习 Tensorflow 2.0 的 最佳铺垫 。 第六本书,我不止一次推荐过,叫做“Deep Learning with Python”。书名很霸气,但实际上讲的,就是 Keras 这一个框架。 豆瓣评分,高达9.7。 这评分,看着跟刷出来的似的。 但实际上, 名至实归 。 又一次,教材作者,就是 Keras 框架作者本人 。 这本书,不仅教你 Keras 的用法,更深入浅出地讲解了深度学习的底层逻辑。尤其是表征(representation)的概念,讲得真是透彻。 读它之前,我原本就已经学过了 Andrew Ng 的深度学习课程,还拿到了证书。但可以说,看完了这本书后,我才对深度学习 真正 有了 清晰 的感觉。 这本书的中译本,在 这个链接 。 第七本,咱们得提一下 PyTorch 了。 深度学习框架领域的竞争结果,基本上明朗化了。 一方面,是 Google 阵营的 Tensorflow 2.0;另一方面,就是 Facebook 阵营的 Pytorch。 现在你要想入门,这两边你恐怕得挑一个。主流的学术论文,基本上都是用这两种框架来实现的。想要复现实验结果,学习设计思路,你绕不开它们。 PyTorch 的1.0正式版本出现不久。相关的教材,还不完备。 这本书的名称是“Beginner's Guide To Using PyTorch For Deep Learning”,确实,就是给 初学者入门 预备的。 作者 Ian Pointer 已经宣称,书中不仅会有 PyTorch 的基础内容,而且一直还会延伸到图像领域 ResNet 架构迁移学习,甚至是 BERT 与 GPT-2 这样的自然语言处理最新研究成果。 想想吧,一书在手,从入门到专业全方位覆盖。 可惜的是,根据亚马逊官网显示,这本书的上市时间,要等到2019年11月份。 看来,好的作品,都需要时间来打磨啊。 其他 哦,差点儿忘了,我自己也写了一本书,名字叫做《 文科生数据科学上手指南 》,包含了我对自己系列数据科学教程的梳理。现在网上 免费开放获取 。 你可以点击 这个链接 ( http://t.cn/EvMHAyo )查看。 小结 本文给你推荐了若干本教材,适合文科生初学者入门 Python 与数据科学。这些书籍的特点是: 门槛很低,但是天花板足够高。 例如其中提到的 BERT 和 GPT-2 等,都是目前前沿的领域研究成果。 希望读过本文之后,能对你的学习有帮助。 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图:Photo by Sharon McCutcheon on Unsplash
10043 次阅读|0 个评论
神经网络是怎么火起来的?
热度 1 yxgyylj 2019-4-19 02:33
目录: 0. 引子 1. 人工神经网络发家史 2. 深度学习——从横空出世到广泛应用 四个例子:--计算机视觉 --自然语言处理 --自动驾驶系统 --生成对抗网络 3. 神经网络背后的算法 三大要点:--反向迭代算法 --激活函数的选择 --随机梯度下降法 4. 神经网络的局限性 --要求大量训练数据 --过度拟合 --超参数选取和数学理论的缺乏 5. 笔者点评 0. 引子 近几年,“人工智能”(AI)、“深度学习”这类字眼越来越频繁地出现在我们的视野中。和十年前相比,我们的生活已经被 AI 和深度学习改变了太多太多,而今年的图灵奖得主也颁发给了深度学习领域的三位奠基人: 2019 年图灵奖得主,图片来自纽约时报(The New York Times) 正所谓几家欢喜几家愁,有人把它们当作赚钱的利器;有人对这类野蛮生长的科技深表忧虑;还有人则只愿意安静地当吃瓜群众,扔掉瓜皮吐光瓜籽后继续自己的美好或并不美好的生活。 无论您是哪类人,一个既定事实是,人工智能和深度学习已经在短短数年之内对人们的生活带来了太多的改变。近年来最为著名的一个例子也许就是 DeepMind 团队的阿尔法狗战胜李世石和柯洁 —— 尽管在国际象棋方面,人工智能在 30 年前就足以吊打所有人类大师,但由于围棋在计算复杂度吊打国际象棋,阿尔法狗的辉煌战绩依然被认为是人工智能领域的一大里程碑。 国际象棋和围棋的计算复杂度对比。两者皆为决策树模型,国际象棋使用了 α-𝛽 修剪算法,围棋则使用了蒙特卡洛决策树搜索+神经网络。图片来自 DeepMind 官网 有读者也许依然会对此不屑一顾:“围棋虽然复杂,但本质上和象棋一样,也只有有限多种可能结果啊,人工智能只需要把最佳结果意义列举并比较比较罢了!” 然而对于具有无限多种可能结果的情况,人工智能也不甘示弱,这在去年的一些电竞比赛中得到了证实。例如,在团队型即时战略游戏 Dota 2 中 (一个 5 v 5 的在线游戏),人类顶尖玩家团队被 OpenAI 团队的 OpenAI Five 战胜。 OpenAI Five(左下方)对战人类玩家(右上方) 一些资深游戏玩家或许认为 Dota 毕竟是五个人的游戏,出现“猪队友”的概率比“猪人工智能”大多了。不过在以单人竞技为主的即时战略游戏《星际争霸》中,人类顶尖玩家也败于 DeepMind 团队开发的人工智能 , 阿尔法星(AlphaStar) 之手。(关于《星际争霸》和人工智能的早期介绍,可以参考笔者的另一篇文章《 数学模型教你如何成为星际争霸高手·下 》) AlphaStar 的训练过程。动图来自 https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/ 注: 笔者表示,Dota 和星际争霸的复杂度都可以趋向于无穷,因为这类游戏的操作界面在时间和空间上都是连续的,无法用 AlphaGo 的蒙特卡洛搜索树算法来穷举。做为即时战略游戏迷,笔者以后会更加详细地介绍上面两个团队各自的算法。 不管是 DeepMind 也好,还是 OpenAI 也好,他们在训练人工智能的时候都用到了 深度学习 ,也就是有很多层的 人工神经网络 (artificial neural network,以下简称神经网络)。想必大部分读者对“神经网络”的最初印象都来自于大脑神经,顾名思义,神经网络必然和脑神经有着千丝万缕的联系。那么神经网络为什么会这么火呢?我们先来看看神经网络的发家史。 1. 人工神经网络发家史 人工神经网络的首次提出可以追溯到上世纪 40 年代,美国神经科学家 Warren McCulloch 和 Walter Pitts 提出的 神经逻辑计算模型 (Neural Logical Calculus Model, )。不过做为神经科学家,McCulloch 和 Pitts 提出该模型的初衷只是为了解释大脑是如何运行的,他们不会想到这个模型会成为神经网络的先驱,为人工智能领域带来天翻地覆的影响。 图一:McCulloch-Pitts 模型,后来的各种人工神经网络都可以归纳于这个大框架。我们会在后面的章节中详细介绍 由于受到时代的限制,McCulloch-Pitts 模型乃至于之后出现的 感知元 (Perception)都并不能体现出神经系统的特点。到了 1959 年,加拿大神经科学家 David Hubel 和瑞典神经科学家 Torsten Wiesel(两位都是诺贝尔生理学或医学奖得主,神经科学家的牛 x 是不分国界的)发现视觉神经系统中存在两种不同细胞, 复杂细胞 (complex cell)和 简单细胞 (simple cell),分别位于大脑的不同部位。受此启发,人们便在原来的神经网络中加入 隐藏层 (Hidden Layer),以体现复杂细胞可以跨层次存在。 图二 不过归根结底,人工神经网络终究是个数学模型,层数越多,模型越复杂。由于缺少有效的算法支持,在 60-80 年代期间,神经网络的研究进入一个低谷期。直到 1984 年,深度学习之父,杰弗里·辛顿(Geoffrey Hinton)等人将所谓的 反向迭代算法 (Backpropagation)引入神经网络中,神经网络的研究方才再次步入正规。例如如今炙手可热的 玻尔兹曼机 (Boltzmann machine)、 卷积神经网络 (CNN, Convolutional Neural Network)和 长短期记忆 (LSTM, Long-Short Term Memory)等,实际上在上世纪 80-90 年代就出现了。 图三:神经网络界的几大网红。笔者会在后续的文章中更加详细地介绍这些神经网络的工作原理 2. 深度学习——从横空出世到广泛应用 当神经网络真正成为网红概念时,它已经有了一个更加高大上的名字—— 深度学习 (Deep learning) 。2012 年,深度学习之父杰弗里·辛顿和他的两个学生设计了一个有 7 个隐藏层的卷积神经网络,不仅赢得了该年度计算机图像分类大赛的冠军(ILSVRC),并且其分类错误率远低于传统的图像分类方法 。 笔者注: 在计算机视觉领域,“传统”方法也是上世纪 90 年代以后才提出来的方法了,例如支持向量机、稀疏编码、SIFT方法等。该领域更新换代速度也许只略逊于生物医学的某些领域(例如癌症研究),远超其他大多数行业。 图四:你能准确分辨拖把和拖把狗吗?基于深度学习的计算机已经可以了! 从此以后,深度学习渐渐变成了越来越多领域的香饽饽。文章开头提到的阿尔法狗、阿尔法星和 OpenAI Five 就都用到了深度神经网络,以及 强化学习 (Reinforcemence Learning)的框架。 图五:新东西总是最美好的 又如在 自然语言处理 (Natural Language Processing, 一般指不同于计算机语言的人类语言)领域,2012 年,谷歌团队开发出了一种用高维向量来表示单词的方法(俗称 word2vec),于是文本变成了数据,为使用深度学习方法(例如长短期记忆 LSTM网络)提供了理论架构 。 图六:文本处理与深度学习的结合。多数聊天机器人就是用这种方式被训练出来的 再如自动驾驶系统的实现。最著名的框架也许是英伟达(NVIDIA)公司在 2016 年提出来的“端对端系统” (end-to-end system)。该系统采用三个不同相机以通过不同视角记录和随机生成路况信息,然后将这些生成的路况信息用一个卷积神经网络进行训练,并不断地用实际操纵指令来纠正神经网络产生的错误。该系统的训练过程如下所示: 图七:英伟达的“端对端系统”训练过程。原图来自 的图片 2 英伟达提出的这个架构十分类似于另一个近年来应用十分火爆的神经网络架构 —— 生成对抗网络 (Generative Adversarial Nets)。也许很多读者并不清楚这是何方神圣,所以我们先来看一下它的几个应用: 智能换脸 AI 合成表情 新华社的 AI 合成主播 也就是说,我们平常在网上看到的一些看似不可思议的视频或动图,其实都是通过生成对抗网络合成出来的!而这个网络的魔力就在于,它拥有 生成器 (Generator)和 判别器 (Discriminator)两个不同的神经网络,其中生成器通过随机输入的数据来生成图像,判别器则负责鉴别生成器生成的图像是否达到标准,以此来达到训练的目的。 3. 神经网络背后的算法 注:本节要求读者有高等数学和线性代数基础,并对梯度下降法有一定了解 到这里,相信读者们已经对神经网络的应用有了一些大体的认识。我们经常听说一个神经网络需要接受“训练”,这个“训练”到底是怎么做到的呢? 答案就是 反向迭代算法 (Backpropagation)。读者不要被这个算法高大上的名字吓到了,它的核心只有两个—— 偏导数 和 链式法则 。反向迭代算法的目的在于 通过减小输出值与实际值的差异,来不断更新神经网络里的各种参数 。这便是“训练”一个神经网络的全部内容。 听上去训练一个 AI 比训练小孩子容易多了!然而实际上,训练神经网络最大的挑战就在于 更新模型中的大量参数 。一图以蔽之,神经网络隐藏层的每个神经元本质上都是这样运作的: 图八:神经网络算法总结 从上图中我们可以看到,神经元起到的作用无非就是把一系列输入数据转化为输出,只不过需要引入一系列未知参数——权重 w_{ij} 和 偏差 b_{j} 罢了(j 表示神经网络的第 j 层,i 表示第 j-1 层的第 i 个神经元)。而 如何更新这些未知参数,则是训练神经网络的核心所在 。下面的图表明了反向迭代算法和向前迭代算法的区别,以及为什么在训练神经网络(尤其是深层神经网络)的过程中必须用到反向迭代算法的原因: 图九:反向迭代vs向前迭代 在实际训练过程中,我们需要不断地更新权重 w_{ij} 和偏差 b_{j},这可以通过不断地最小化某个损失函数 L 来完成。根据实际问题,常用的损失函数有 均方差 (L2 损失)、DL 距离和 交叉熵 (Cross Entropy)等等。确定好损失函数后,我们使用 梯度下降法 分别对 w_{ij} 和 b_{j} 求偏导数,然后利用 链式法则 计算出每一步需要更新的步长,例如对于权重参数 w_{ij},更新方法如下: 图十:上角标 t 表示训练(迭代)次数 其中“学习效率”一般取值在 0 和 1 之间。就像小孩一样,如果学习效率太高,遇到不好的输入数据时就很容易学到坏东西,但如果学习效率太低,那么学习成本又会过高。因此选取适当的学习效率值,是训练一个好神经网络的关键。 图十一:学如江流徒杠,不可鹅行鸭步,亦不可操之过急 此外值得一提的是,从数学的观点看来,神经网络中 激活函数 (Activation Function)的非线性性是神经网络的一大特色。早期的激活函数选择受到了生物神经元的影响(可参考笔者之前的文章《 读懂你的大脑——漫话神经元 》),一般选择 Sigmoid 函数或双曲正切函数(tanh): 图十二:生物神经元模型中常用的两种激活函数 不过由于当输入比较大时,上面这两兄弟关于输入的导数接近于 0 (读者可自行验证),这在反向迭代过程中并不是个好消息 —— 图十中在 L 对 s_{i} 的偏导数几乎为 0,因而在迭代过程中权重 w_{ij} 几乎不变!这在十年之前一直是一个难题,不过 2011 年以后,上面这两兄弟便很快被一种叫做 线性整流 (ReLU,Retified Linear Unit)的激活函数所取代。这个函数长这样: 图十三:ReLU 函数 容易验证,只要 u 0, 那么 f'(u) = 1, 于是损失函数 L 对 s_{i} 的偏导数不会接近 0,更新参数困难的问题得以解决! 到此为止,神经网络算法的理论基础已经被搞定了。然而在实际操作中还有另外一个问题——计算时间。试想如果要训练一个非常深层的神经网络,势必需要更新大量未知参数(未知参数的个数随着网络层数呈指数上升),如果采用图十那样的每更新一个参数都需要把 N 个训练数据(输入数据的一种)都用进去,那么当训练数据很多的时候,计算复杂度将非常高!为了解决这个方法,人们通常采用一种叫做 随机梯度下降 (Stochastic Gradient Descent)的算法,来代替常规的梯度下降法: 图十四:梯度下降 vs 随机梯度下降。其中 L_k 表示只依赖于第 k 个训练数据的损失函数, k 从 N 个总训练数据中随机取出的一个 可以看到,相比常规的梯度下降法,每一步随机梯度下降的计算量小了很多。不过由于训练数据的随机性,这样带来的后果便是收敛速度变慢,训练所需的迭代次数增加了(t 的取值上界更高)。所以如今常用的迭代方法一般是经过两者综合的 微小块梯度下降法 (Mini Batch Gradient),或者收敛速度更快的的 自适应动量估计 (Adam, Adaptive Moment Estimation) 算法等等。限于文章篇幅,具体细节在此不做介绍,有兴趣的读者可以参考一篇不错的综述 。 4. 神经网络的局限性 到此为止,我们已经对深度学习和神经网络的历史、应用,以及背后的算法有了初步的认识。但话说回来,世间万物皆有破绽,那么神经网络还存在哪些局限性呢? 也许一些读者会思考这样的问题:如果神经网络真的这么厉害,历史也不算短了,为什么直到 21 世纪以后才开始普遍投入使用呢?其中主要原因其实是硬件层面的,因为进入 21 世纪,电子硬件的成熟,尤其是通用性 GPU 的广泛使用才得以胜任深层神经网络的训练任务。换言之,神经网络和深度学习的火爆在 很大程度上依赖于芯片技术的不断更新换代 。关于 GPU 计算的更多内容,可参考笔者之前的文章《 让 GPU 也参加到计算中来 》。 CPU 和 GPU 计算力(以浮点数计算效率为测度)对比。图片来自网络 既然有了如此强大硬件的支持,如果没有足够的训练数据集的话,神经网络也并不见得比传统方法高效多少了。这是因为神经网络的一大主要特色就是,其未知参数数量可以非常多,因此在理论上可以逼近出任何函数。但这样做的代价就是需要有足够的训练和测试数据集(测试数据集用于测试训练出来的神经网络表现如何)。 另一方面,如果模型参数太多,很容易出现 过度拟合 (overfitting)的情况,反而降低模型的准确率。为了解决过度拟合,人们会采用许多不同的 正则化 (regularization)技巧,例如 随机失活 (Dropout)、加入惩罚项、自助式聚合(Bagging, Bootstrap Aggragation)等方法来达到减少参数个数的目的。限于篇幅,这里不做进一步介绍了。 神经网络的另一大特色就是架构非常灵活——如引言中所述,卷积神经网络(CNN)、长短记忆(LSTM)、玻尔兹曼机等等都是很常用的神经网络,而且每种神经网络都有大量 超参数 (Hyperparameter,例如神经网络的深度、宽度、学习效率、激活函数等等)供选择,没有一个可靠的数学定理保证应该如何选取超参数以及神经网络种类。 做为数学系出身的笔者对此表示遗憾。限于学识水平,笔者所知道的关于神经网络的数学定理都不算十分本质,例如 万有近似定理 (Universal Approximation Theorem),用本科的泛函分析工具(哈恩-巴拿赫定理 + 里兹表示定理)证明了任一连续有界的 n 维实函数可被一个至少一层的神经网络任意逼近,且该定理对不同的激活函数(Sigmoid 和 ReLU)又有不同的证明方法,尽管证明过程都非常漂亮。这个定理不算十分本质的原因在于,其他许多非神经网络系统,例如 模糊系统 (Fuzzy System),也有类似的万有近似定理。 万有近似定理的核心就是证明上面这个函数的值域在 R^N 上是稠密的 从数学上看来,还有一些其他有趣结论和神经网络有关。例如 2016 年有人严格地证明了在模型复杂度的意义下,深层的神经网络比浅层的更为高效 。不过从证明过程中可以看出,这个定理只是在渐进意义(单层神经元数目趋向于无穷)下有效,对实际应用的指导依然非常有限。笔者十分希望以后有机会能看到一个能真正具有广泛指导意义的数学定理。 5. 笔者点评 我们不难看出,深度学习虽然在很大程度上改变了我们的生活,但它依然存在不少软肋。天下没有免费的午餐,深度学习之所以有今天的火爆,很大程度上依赖于芯片技术的发展(计算力的提升),而芯片生产是一个很长的产业链,有设计、设备、材料和测封等过程,涉及到大量基础学科。因此笔者认为, 基础学科才是科技发展的重中之重,而并非盲目地追求人工智能、深度学习这些热门词汇 。 另一方面,深度学习虽然火爆至今,但这种火热能持续多久,笔者持以保留态度。其一,深度学习的理论基础,神经网络,在上世纪 90 年代就已经被研究透测,而据笔者所知,该领域至今并未出现一个如同广义相对论(可参考笔者和小伙伴合作的文章《 广义相对论 是如何被一步步构思出来的?》)或规范场论(可参考笔者和小伙伴合作的文章《 带你认识高大上的规范场 》)那样具有框架性的数学理论;其二,深度学习只是众多机器学习方法的其中一种,每种机器学习方法都有自己的优缺点,并不存在一种万能的方法。因此,笔者建议打算入行深度学习的朋友们, 要先打好微积分、线性代数、概率论与数理统计、离散数学、最优化算法和数据挖掘这些课程的基础 ,毕竟也许几年以后,便会有一种全然不同的机器学习方法凌驾于深度学习之上。 参考文献: McCulloch WS, Pitts W. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics. 1943 Dec 1;5(4):115-33. https://www. nobelprize.org/prizes/m edicine/1981/hubel/biographical/ Ackley DH, Hinton GE, Sejnowski TJ. A learning algorithm for Boltzmann machines. Cognitive science. 1985 Jan 1;9(1):147-69. LeCun Y, Boser B, Denker JS, Henderson D, Howard RE, Hubbard W, Jackel LD. Backpropagation applied to handwritten zip code recognition. Neural computation. 1989 Dec;1(4):541-51. Hochreiter S, Schmidhuber J. Long short-term memory. Neural computation. 1997 Nov 15;9(8):1735-80. Krizhevsky A, Sutskever I, Hinton GE. Imagenet classification with deep convolutional neural networks. InAdvances in neural information processing systems 2012 (pp. 1097-1105). Mikolov T, Chen K, Corrado G, Dean J. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781. 2013 Jan 16. Bojarski M, Del Testa D, Dworakowski D, Firner B, Flepp B, Goyal P, Jackel LD, Monfort M, Muller U, Zhang J, Zhang X. End to end learning for self-driving cars. arXiv preprint arXiv:1604.07316. 2016 Apr 25. Goodfellow I, Pouget-Abadie J, Mirza M, Xu B, Warde-Farley D, Ozair S, Courville A, Bengio Y. Generative adversarial nets. In Advances in neural information processing systems 2014 (pp. 2672-2680). Ruder S. An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747. 2016 Sep 15. Cybenko G. Approximation by superpositions of a sigmoidal function. Mathematics of control, signals and systems. 1989 Dec 1;2(4):303-14. Eldan R, Shamir O. The power of depth for feedforward neural networks. In Conference on learning theory 2016 Jun 6 (pp. 907-940). 欢迎大家关注我的公众号“科普最前线”(id:kpzqxyxg),对话前沿科学!每篇文章都由笔者亲自完成或修改,希望和大家一起交流!
981 次阅读|2 个评论
[转载]最实用的机器学习算法优缺点分析,没有比这篇说得更好了!
wxs4ever 2019-4-1 03:19
推荐理由 对于机器学习算法的盘点,网上屡见不鲜。但目前,还没人能结合使用场景来把问题说明白,而这一点正是本文的目的所在。 在文章中,作者将结合他的实际经验,细致剖析每种算法在实践中的优势和不足。 本文的目的,是务实、简洁地盘点一番当前机器学习算法 。尽管人们已做过不少盘点,但始终未能给出每一种算法的真正优缺点。在这里,我们依据实际使用中的经验,将对此详加讨论。 归类机器学习算法,一向都非常棘手,常见的分类标准是这样的:生成/判别、参数/非参数、监督/非监督,等等。 举例来说,Scikit-Learn 对算法的分类是根据它们的学习机制,由此所产生的类别如下: 广义线性模型 支持向量机 最近邻 决策树 神经网络 …… 然而,根据我们的经验,这都不是最实用的算法分类方式。这是因为,在使用机器学习的时候,你不会这么去想:“我今天想训练一个支持向量机出来!” 相反,你一般是想着那个最终的目标,比如预测某个结果,或是将观察结果进行分类。 因而,我们想基于你的任务目标,来对机器学习算法进行分类。 天下没有免费的午餐 在机器学习领域,一个基本的定理就是“没有免费的午餐”。 换言之,就是没有算法能完美地解决所有问题,尤其是对监督学习而言(例如预测建模) 。 举例来说,你不能去说神经网络任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。 其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。 当然, 所选的算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。 作为类比,如果你需要打扫房子,你可能会用到吸尘器、扫帚或是拖把,但你绝对不该掏出铲子来挖地。 机器学习的任务 这里,我们将首先讨论当前的「三大」最常见的机器学习任务: 1、回归( Regression ) 2、分类( Classification ) 3、聚类( Clustering ) 以及两大数据降维(Dimensionality Reduction)问题: 4、特征选取( Feature Selection ) 5、特征提取( Feature Extraction ) 后续的文章,我们还将讨论密度估计(Density Estimation)和异常检测(Outlier Detection)的任务。 说明:本文将不讨论具体的细分领域,如自然语言处理。 本文也不会覆盖到每一个具体的算法。毕竟当前的算法数不胜数,而新的算法更是层出不穷。尽管如此,本文仍能针对每项任务给出当下最有代表性的算法。 ▌ 1.回归 回归是一种用于连续型数值变量预测和建模的监督学习算法,使用案例包括房地产价格、股价走势或学生成绩等的预测。 回归任务的特征是具有数值型目标变量的标注数据集。换言之,每一个用以监督算法的观察样本,都有一个数值型真值。 线性回归 1.1 (正则化)线性回归 线性回归是回归任务最常用的算法。它最简的形式,是用一个连续的超平面来拟合数据集(比如,当你仅有两个变量时就用一条直线)。如果数据集内的变量存在线性关系,拟合程度就相当高。 在实践中,简单线性回归通常会被其正则化形式(LASSO、Ridge 及弹性网络)所取代。正则化是对过多回归系数所采取的一种避免过拟合的惩罚技巧,同时,惩罚的强度需要被平衡好。 优点 :线性回归的理解和解释都非常直观,还能通过正则化来避免过拟合。此外,线性模型很容易通过随机梯度下降来更新数据模型。 缺点 :线性回归在处理非线性关系时非常糟糕,在识别复杂的模式上也不够灵活,而添加正确的相互作用项或多项式又极为棘手且耗时。 实现 : Python - scikit-learn.org/stable/modu… R - cran.r-project.org/web/package… 1.2 回归树(集成方法) 回归树,又名决策树,通过将数据集重复分割成不同的分支来最大化每次分离的信息增益,从而让回归树很自然地学到非线性关系。 集成的方法,如随机森林(RF)或梯度提升树(GBM),则能结合许多独立训练树的预测。我们在这里不会详述其中的机制,但在实践中,随机森林一般都有很出色的表现,梯度提升树则较难调参,但往往能有更高的性能上限。 优点 :决策树能学习非线性关系,对异常值也具有很强的稳健性。集成学习在实践中表现优异,经常赢得经典的(非深度学习)机器学习竞赛。 缺点 :由于无约束,单棵树容易过拟合,这是因为单棵树可保留分支直至记住训练的数据。不够,集成方法可以弱化这一缺点。 实现 :随机森林 Python - scikit-learn.org/stable/modu… R - cran.r-project.org/web/package… 实现 :梯度提升树 Python - scikitlearn.org/stable/modu… R - cran.r-project.org/web/package… 1.3 深度学习 深度学习是指能够学习极端复杂模式的多层神经网络。它们在输入层和输出层之间使用隐藏层来对数据的中间表征建模,这一点是其他算法很难做到的。 深度学习还有几个重要的机制,如卷积、漏失等,这使该算法可以有效学习高维数据。然而,相对于其他算法,深度学习需要更多的数据来进行训练,因为该模型需要估算更大数量级的参数。 优点 :深度学习是当前特定领域的最先进技术,如计算机视觉与语音识别。深度神经网络在图像、音频和文本数据上表现优异,也很容易通过反向传播算法来更新数据模型。它们的架构(即层级的数量和结构)能适用于多种问题,同时隐藏层还能降低算法对特征工程的依赖。 缺点 :深度学习算法往往不适合用于通用目的,因为它们需要大量的数据。事实上,对于经典的机器学习问题,深度学习的表现并不比集成方法好。此外,由于训练所需的密集型计算,它们需要更多的专门知识才能进行调参(如设定架构与超参数)。 实现 : Python - keras.io/ R - mxnet.io/ 1.4 荣誉奖:最近邻算法 最近邻算法是“基于实例的”,也就意味着它需要保留每一个训练观察值。最近邻算法通过搜寻最相似的训练样本来预测新样本的观察值。 它是内存密集型算法,处理高维数据时的效果并不理想,同时还需要高效的距离函数来计算相似度。在实践中,使用正则化的回归或树型集成方法通常是更好的选择。 ▌ 2.分类 分类是一种用于分类变量建模及预测的监督学习算法,使用案例包括员工流失、邮件过滤、金融欺诈等的预测。 正如你所见,许多回归算法都有其对应的分类形式,分类算法往往适用于类别(或其可能性)的预测,而非数值。 逻辑回归 2.1 (正则化)逻辑回归 逻辑回归是线性回归所对应的分类方法,基本概念由线性回归推导而出。逻辑回归通过逻辑函数将预测映射到 0 到 1 的区间,因此预测值可被视为某一类别的概率。 该模型依旧是线性的,只有当数据线性可分时(例如,数据可被某决策平面完全分离),这一算法才会有很好的表现。逻辑回归同样能惩罚模型系数以进行正则化。 优点 :输出结果会有很好的概率解释,而算法也能通过正则化以避免过拟合。逻辑模型很容易通过随机梯度下降来更新数据模型。 缺点 :逻辑回归在面对多元或非线性决策边界时性能较差。 实现 : Python - scikit-learn.org/stable/modu… R - cran.r-project.org/web/package… 2.2 分类树(集成方法) 对应于回归树的分类算法是分类树。通常,它们都是指决策树,更为严谨的说法是“分类回归树(CART)”,也就是非常有名的 CART 算法。 优点 :跟回归方法一样,分类树的集成方法在实践中的表现同样十分优异。它们在应对异常数据时有着相当的稳健性与可扩展性。由于其层级结构,分类树的集成方法能够很自然地对非线性决策边界建模。 缺点 :不可约束,单棵树容易过拟合,集成方法可削弱这一影响。 实现 :随机森林 Python - scikit-learn.org/stable/modu… R - cran.r-project.org/web/package… 实现:梯度提升树 Python - scikitlearn.org/stable/modu… R - cran.r-project.org/web/package… 2.3 深度学习 深度学习同样很容易适应于分类问题。实际上,深度学习应用地更多的是分类任务,如图像分类等。 优点 :深度学习非常适合于音频、文本与图像数据的分类。 缺点 :与回归方法一样,深度神经网络需要大量的数据进行训练,所以也不是一个通用目的算法。 实现 : Python - keras.io/ R - mxnet.io/ 2.4 支持向量机 支持向量机使用一个名为核函数的技巧,来将非线性问题变换为线性问题,其本质是计算两个观测数据的距离。支持向量机算法所寻找的是能够最大化样本间隔的决策边界,因此又被称为大间距分类器。 举例来说,使用线性核函数的支持向量机类似于逻辑回归,但更具稳健性。因而在实践中,支持向量机最大用处是用非线性核函数来对非线性决策边界进行建模。 优点 :支持向量机能对非线性决策边界建模,又有许多可选的核函数。在面对过拟合时,支持向量机有着极强的稳健性,尤其是在高维空间中。 缺点 :不过,支持向量机是内存密集型算法,选择正确的核函数就需要相当的j技巧,不太适用较大的数据集。在当前的业界应用中,随机森林的表现往往要优于支持向量机。 实现 : Python - scikit-learn.org/stable/modu… R - cran.r-project.org/web/package… 2.5 朴素贝叶斯 朴素贝叶斯是一种基于条件概率和计数的简单算法,其本质是一个概率表,通过训练数据来更新其中的概率。它预测新观察值的过程,就是根据样本的特征值在概率表中来寻找最为可能的类别。 被称为“朴素”原因,是其核心的特征条件独立性假设(例如,每一项输入特征都相互独立),在现实中几乎是不成立的。 优点 :即便条件独立性假设很难成立,但实践中的朴素贝叶斯算法却能表现得很好。该算法易于实现且能伴随数据集更新。 缺点 :因为朴素贝叶斯的算法太过简单,所以很容易被上述分类算法所取代。 实现 : Python - scikit-learn.org/stable/modu… R - cran.r-project.org/web/package… ▌ 3.聚类 聚类是基于数据内部结构来寻找样本自然族群(集群)的无监督学习任务,使用案例包括用户画像、电商物品聚类、社交网络分析等。 由于聚类属于无监督学习,也就不会输出“正确的答案”,评价结果时往往要用到数据可视化。如果你需要“正确的答案”,亦即训练集中存在预标注的集群,那么用分类算法会更加合适。 K 均值 3.1 K 均值 K 均值是基于样本点间的几何距离来度量聚类的通用目的算法。由于集群围绕在聚类中心,结果会接近于球状并具有相似的大小。 我们之所以推荐该算法给初学者,是因为它不仅足够简单,而且足够灵活,对于大多数问题都能给出合理的结果。 优点 :K 均值是最为流行的聚类算法,因为它足够快速、足够简单,如果你的预处理数据和特征工程都做得十分有效,那它将具备令人惊叹的灵活性。 缺点 :该算法需要指定集群的数量,而 K 值的选择通常都不是那么容易确定的。另外,如果训练数据中的真实集群并不是类球状的,那么 K 均值聚类会得出一些比较差的集群。 实现 : Python - scikit-learn.org/stable/modu… R - stat.ethz.ch/R-manual/R-… 3.2 仿射传播 仿射传播是一种相对较新的聚类算法,它基于两个样本点之间的图形距离来确定集群,其结果倾向于更小且大小不等的集群。 优点 :仿射传播不需要指出明确的集群数量,但需要指定“sample preference”和“damping”等超参数。 缺点 :仿射传播的主要缺点是训练速度较慢,且需要大量内存,因而难于扩展到大数据集。此外,该算法同样在假定潜在的集群要接近于球状。 实现 : Python - http://scikit-learn.org/stable/modules/clustering.html#affinity-propagation R - https://cran.r-project.org/web/packages/apcluster/index.html 3.3 分层 / 层次 分层聚类,又名层次聚类,其算法基于以下概念来实现: 1) 每一个集群都从一个数据点开始; 2) 每一个集群都可基于相同的标准进行合并; 3) 重复这一过程,直至你仅剩下一个集群,这就获得了集群的层次结构。 优点 :层次聚类的最主要优点,是集群不再假定为类球形。此外,它可以很容易扩展到大数据集。 缺点 :类似于 K 均值,该算法需要选定集群的数量,即算法完成后所要保留的层次。 实现 : Python - http://scikitlearn.org/stable/modules/clustering.html#hierarchical-clustering R - https://stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html 3.4 DBSCAN DBSCAN 是一种基于密度的聚类算法,它将样本点的密集区域组成集群;其最新进展是HDBSCAN,它允许集群的密度可变。 优点 :DBSCAN 不需要假定类球形集群,其性能可以扩展。此外,它不需要每个点都被分配到集群中,这就降低了集群的噪音。 缺点 :用户必须要调整“epsilon”和“min_sample”这两个超参数来定义集群密度。DBSCAN 对此非常敏感。 实现 : Python - http://scikit-learn.org/stable/modules/clustering.html#dbscan R - https://cran.r-project.org/web/packages/dbscan/index.html 维度灾难 在机器学习领域,“维度(Dimensionality)”通常指数据集中的特征数量(即输入变量的个数)。 当特征的个数特别大的时候(相对于数据集中观测样本的数量来说),训练出一个有效的模型,对算法要求就会特别高(即,用现有的算法训练出一个有效的模型特别困难)。这就是所谓的“维度灾难(Curse of Dimensionality)”,特别是对依赖于距离计算的聚类算法而言。 对于“维度灾难”,有位 Quora 用户给出了一个非常好的类比: 假设有一条100码的直线,而你在该直线的某处掉了一枚硬币。要找回硬币并不难,你只需沿着这条线走就行了,最多花上你2分钟时间。 然后,假设有一个长和宽都是100码的广场,而你是把硬币掉在广场的某个位置。现在再想找回它,可就不容易了,这好比在两个并排的足球场中找针,可能会耗上你几天时间。 再然后,假设是一个长、宽、高都是100码的立方体,那就好比是在30层楼高的大型体育场内找zhen找针…… 随着维度的增加,在空间中搜索的难度也会变得愈加困难。 Quora链接: www.quora.com/What-is-the… 这就需要数据降维的办法:特征选取和特征提取。 ▌ 4.特征选取 特征选取是从你的数据集中过滤掉不相关或冗余的特征。特征选取与特征提取的关键区别在于:特征选取是从原特征集中选取一个子特征集,而特称提取则是在原特征集的基础上重新构造出一些(一个或多个)全新的特征。 需要注意的是,某些监督式机器学习算法已经具备了内在的特征选取机制:比如正则回归与随机森林。通常,我们是建议一开始优先尝试这些算法,如果它们能匹配上你的问题的话。对此我们已经做过介绍。 作为独立的任务,特征选取既可以是非监督式的(如方差阈值),又可以是监督式的(比遗传算法)。有必要的话,你还可以把多种方法以某种合理的方式整合在一起。 4.1 方差阈值 方差阈值会摒弃掉观测样本那些观测值改变较小的特征(即,它们的方差小于某个设定的阈值)。这样的特征的价值极小。 举例来说,如果你有一份公共健康数据,其中96%的人都是35岁的男性,那么去掉“年龄”和“性别”的特征也不会损失重要信息。 由于方差阈值依赖于特征值的数量级,你应该对特征值先做归一化处理。 优点 :使用方差阈值方式进行数据降维只需一个非常可靠的直觉:特征值不怎么改变的特征,不会带来什么有用的信息。这是在你建模初期进行数据降维相对安全的一种方式。 缺点 :如果你正在解决的问题并不需要进行数据降维,即便使用了方差阈值也几乎没有什么作用。此外,你需要手工设置、调整方差阈值,这个过程相当具有技术含量。我们建议从一个保守(也就是,较低)的阈值开始。 实现 : Python - http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.VarianceThreshold.html R - https://www.rdocumentation.org/packages/caret/versions/6.0-76/topics/nearZeroVar 4.2 相关性阈值 相关性阈值会去掉那些高度相关的特征(亦即,这些特征的特征值变化与其他特征非常相似)。它们提供的是冗余信息。 举例来说,如果你有一个房地产数据,其中两个特征分别是“房屋面积(单位:平方英尺)”和“房屋面积(单位:平方米)”,那么,你就可以去掉其中的任何一个(这非常安全,也不会给你的模型带来任何负面影响)。 问题是,你该去掉哪一个特征呢?首先,你应该计算所有特征对的相关系数。而后,如果某个特征对的相关系数大于设定的阈值,那你就可以去掉其中平均绝对相关系数较大的那一个。 优点 :使用相关性阈值同样只需一个可靠的直觉:相似的特征提供了冗余的信息。对于某些含有强相关性特征较多的数据集,有些算法的稳健性并不好,因此,去掉它们可以提升整个模型的性能(计算速度、模型准确度、模型稳健性,等等)。 缺点 :同样,你还是必须手动去设置、调整相关性阈值,这同样是个棘手且复杂的过程。此外,如果你设置的阈值过低,那么你将会丢失掉一些有用的信息。无论在什么时候,我们都更倾向于使用那些内置了特征选取的算法。对于没有内置特征提取的算法,主成分分析是一个很好的备用方案。 实现 : Python - https://gist.github.com/Swarchal/881976176aaeb21e8e8df486903e99d6 R - https://www.rdocumentation.org/packages/caret/versions/6.0-73/topics/findCorrelation 4.3 遗传算法 遗传算法是可用于不同任务的一大类算法的统称。它们受进化生物学与自然选择的启发,结合变异与交叉,在解空间内进行高效的遍历搜索。这里有一篇非常棒的简介:“遗传算法背后的原理引入”。 在机器学习领域,遗传算法主要有两大用处。 其一,用于最优化,比如去找神经网络的最佳权重。 其二,是用于监督式特征提取。 这一用例中,“基因”表示单个特征,同时“有机体”表示候选特征集。“种群体”内的每一个有机体都会基于其适应性进行评分,正如在测试数据集上进行模型性能测试。最能适应环境的有机体将会生存下来,并不断繁衍,一直迭代,直至最终收敛于某个最优的解决方案。 优点 :在穷举搜索不可行的情况下,对高维数据集使用遗传算法会相当有效。当你的算法需要预处理数据却没有内置的特征选取机制(如最近邻分类算法),而你又必须保留最原始的特征(也就是不能用任何主成分分析算法),遗传算法就成了你最好的选择。这一情况在要求透明、可解释方案的商业环境下时有发生。 缺点 :遗传算法为你解决方案的实施带来了更高的复杂度,而多数情况下它们都是不必要的麻烦。如果可能的话,主成分分析或其它内置特征选取的算法将会更加高效和简洁。 实现 : Python - https://pypi.python.org/pypi/deap R - https://cran.r-project.org/web/packages/GA/vignettes/GA.html 4.4 荣誉奖:逐步搜索 逐步搜索是一个基于序列式搜索的监督式特征选取算法。它有两种形式:前向搜索和反向搜索。 对于前向逐步搜索,你从没有任何特征开始。接着,从候选特征集中,选择一个特征来训练模型;然后,保存模型性能最好对应的那个特征;再往下,你不断往训练模型的特征集中添加特征,一次添加一个特征,直到你模型的性能不再提升。 反向逐步搜索的过程相同,只不过顺序相反:从把所有的特征都用于训练模型,接着一次性移除一个特征,直到模型的性能骤降。 我们提及这一算法纯粹是源于某些历史原因。尽管很多教科书都把逐步搜索算法作为一个有效的方法,但它所表现出来的性能总是不及其它监督式方法,比如正则化。逐步搜索有很多明显的缺陷,最致命的一点就是它是一个贪心算法,无法面对未来变化的冲击。我们并不推荐这个算法。 ▌ 5.特征提取 特征提取是用来创造一个新的、较小的特征集,但仍能保留绝大部分有用的信息。值得再提的是,特征选取是用来保留原始特征集中的一部分子特征集,而特征提取则是创造全新的特征集。 跟特征选取一样,某些算法内部已经具有了特征提取的机制。最好的案例就是深度学习,它可以通过每一层隐神经层,提取出越来越有用的能表征原始数据的特征。我们在“深度学习”部分已给出相关的讲解。 作为独立的任务,特征提取可以是非监督式的(如主成分分析)或监督式的(如线性判别分析)。 5.1 主成分分析 主成分分析是一个非监督式算法,它用来创造原始特征的线性组合。新创造出来的特征他们之间都是正交的,也就是没有关联性。具体来说,这些新特征是按它们本身变化程度的大小来进行排列的。第一个主成分代表了你的数据集中变化最为剧烈的特征,第二个主成分代表了变化程度排在第二位的特征,以此类推。 因此,你可以通过限制使用主成分的个数来达到数据降维的目的。例如,你可以仅采用能使累积可解释方差为90%的主成分数量。 你需要在使用主成分分析之前,对数据进行归一化处理。否则,原始数据中特征值数量级最大的那个特征将会主导你新创造出来的主成分特征。 优点 :主成分分析是一项多用途技术,实用效果非常好。它部署起来快速、简单,也就是说,你可以很方便地测试算法性能,无论使用还是不使用主成分分析。此外,主成分分析还有好几种变体和扩展(如:核主成分分析(kernel PCA),稀疏主成分分析(sparse PCA)),用以解决特定的问题。 缺点 :新创造出来的主成分并不具备可解释性,因而在某些情况下,新特征与应用实际场景之间很难建立起联系。此外,你仍然需要手动设置、调整累积可解释方差的阈值。 实现 : Python - http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html R - https://stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html 5.2 线性判别分析 线性判别分析不是隐含狄利克雷分布,它同样用来构造原始特征集的线性组合。但与主成分分析不同,线性判别分析不会最大化可解释方差,而是最大化类别间的分离程度。 因此,线性判别分析是一种监督式学习方式,它必须使用有标记的数据集。那么,线性判别分析与主成分分析,到底哪种方法更好呢?这要视具体的情况而定,“没有免费的午餐”原理在这里同样适用。 线性判别分析同样依赖于特征值的数量级,你同样需要先对特征值做归一化处理。 优点 :线性判别分析是一种监督式学习,基于这种方式获取到的特征可以(但并不总是能)提升模型性能。此外,线性判别分析还有一些变体(如二次线性判别分析),可用来解决特定的问题。 缺点 :与主成分分析一样,新创造出来的特征不具有可解释性。而且,你同样要手动设置、调整需要保留的特征数量。线性判别分析需要已经标记好的数据,因此,这也让它更加接地气儿。 实现 : Python - http://scikit-learn.org/stable/modules/generated/sklearn.discriminant_analysis.LinearDiscriminantAnalysis.html#sklearn.discriminant_analysis.LinearDiscriminantAnalysis R - https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/lda.html 5.3 自编码机 自编码机是一种人工神经网络,它是用来重新构建原始输入的。例如,图像自编码机是训练来重新表征原始数据的,而非用以区分图片里面的小猫、小狗。 但这有用吗?这里的关键,是在隐含层搭建比输入层和输出层更少数量的神经元。这样,隐含层就会不断学习如何用更少的特征来表征原始图像。 因为是用输入图像来作为目标输出,自编码机被视为无监督学习。它们可被直接使用(如:图像压缩)或按顺序堆叠使用(如:深度学习)。 优点 :自编码机是人工神经网络中的一种,这表示它们对某些特定类型的数据表现会非常好,比如图像和语音数据。 缺点 :自编码机是一种人工神经网络。这就是说,它们的优化需要更多的数据来进行训练。它们并不能作为一般意义上的数据降维算法来用。 实现 : Python - https://keras.io/ R - http://mxnet.io/api/r/index.html 小结 基于我们的经验,以下是一些有用的建议: 练习,练习,练习 。要找到一些数据集,趁热打铁。了解这些算法只是一个开头,掌握好它们就需要你不停地实践。 掌握好基础 。掌握这里算法,能为你去运用机器学习打下坚实的基础,因为其他所有的算法都是基于上述算法的一些变形。举例来说,先掌握主成分分析和线性判别分析之前的区别,而后再去学习线性判别分析的相关细节以及二次线性判别分析之间的差别,效果会更好。 铁律,好的数据远胜于花哨的算法 。在机器学习应用领域,算法总是可以替换的;而有效的探索性分析、数据清洗与特征工程总是能大力提升你的结果。我们会经常提及这一点,因为这就是该死的真相! 原文链接: elitedatascience.com/machine-lea… elitedatascience.com/dimensional… 作者:AI100 链接:https://juejin.im/post/5930cc4c2f301e006bd4b2a9 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
个人分类: 神经网络|3362 次阅读|0 个评论
一个能够考虑系统误差的用于高能物理分类问题的机器学习算法QBDT
xialigang 2019-3-28 22:41
机器学习有很多应用。在我们高能实验物理方面,我们经常用它能区分信号和本底。一个典型的问题是,高能物理实验会涉及很多系统误差(特别是在像LHC这样的强子对撞机上寻找微小的信号),而这些系统误差会影响对信号的灵敏度。但是目前,还没有一个成熟的机器学习方法可以把各种各样的系统误差考虑到training当中,并提高信号的显著性。为此,我提出了一种新的基于决策树( decision tree )和统计学里面的“显著性( significance )”概念的方法——QBDT (即将在NIMA上发表)。 算法: https://github.com/xialigang/QBDT 文章: https://arxiv.org/abs/1810.08387 它的核心思想是:把信号显著性(记作Q)当成优化目标,利用Q来控制决策树的生长,定义误判的权重因子(所谓错误判断的惩罚机制),以及作为最后的输出(score)。在计算Q时,我们可以把各种各样的系统误差考虑进去。直接利用最大似然拟合方法得到Q是非常费时费力的。这里利用我以前的一个 计算结果 ,可以得到考虑系统误差的Q的一个近似的解析表达式。 其中 的表达式为 这里很多量不解释了,请参考上面的文章。
个人分类: 物理妙趣|2920 次阅读|0 个评论
[转载]量子计算促进机器学习
quantumchina 2019-3-20 18:13
量子至上听起来像漫威电影里的一些东西。但是对于在量子计算前沿工作的科学家来说,这种处理信息的根本不同的方法所带来的希望和炒作是非常真实的。由于量子力学古怪的特性(这里有一个漂亮的入门),量子计算机有潜力极大地加速某些类型的问题,特别是那些模拟自然的问题。 科学家们尤其痴迷于将量子世界与机器学习结合起来的想法。尽管他们取得了如此多的成就,我们的硅学习伙伴仍然是有缺陷的:机器学习算法和传统的CPU不能很好地发挥作用,部分原因是贪婪的算法占用了经典的计算硬件。 然而,如果再加上量子计算,机器学习可能会在很短的时间内处理超出当前能力的复杂问题。 多亏了IBM和麻省理工学院的一项新研究,我们才有了一些初步的实验证据,证明理论可能成为现实。发表在《自然》杂志上的这项合作使用了一个双量子位量子计算系统,表明量子计算机可以利用实验室生成的数据集支持一种特定类型的机器学习(通常用于分类)。 毫无疑问,这只是第一步。但这项研究清楚地表明,目前无法企及的完美量子计算机,对帮助我们的人工智能并无必要。尽管量子系统的噪音很大,但它们已经符合这项法案的要求——尤其是那些能够与经典计算机协同工作、以团队形式进行机器学习的系统。 “我们离实现机器学习的量子优势还有很长的路要走,”该团队在一篇博客文章中指出。“然而,我们正在开发的方法可能很快就能对比传统计算机处理的任何数据集都要复杂得多的数据集进行分类。我们所展示的是一条充满希望的前进道路。” 分类器是什么? 这项研究始于一个意想不到的发现:某种依赖于“内核方法”的机器学习,在数学上与量子计算机内部发生的事情惊人地相似。 这些算法的一个经典例子是支持向量机(SVM),它在上世纪90年代迅速流行起来,之后被深度学习取代。简而言之,对于区分不同事物(例如猫和狗)的问题,当描述每个类的特性相当简单时,支持向量机是相对强大的。 这就是事情变得古怪的地方。基本上,支持向量机依赖于内核方法来“投射”输入数据,使用一种明确定义的数学方法进入高维空间,用超平面来分离特性(是的,这在我听起来也像是无稽之谈)。 它有助于在我们熟悉的3D世界中使用一个简化的类比。在一张纸上画一只猫,并把一张狗的贴纸贴在上面。因为纸只有一个表面,所以绝对没有办法画一条线或一个平面来区分猫和狗。 现在添加另一个维度,深度。你突然意识到这两个项目实际上是重叠的,居住在不同的深度。通过将猫和狗投射到高维空间中,现在可以在它们之间滑动一张纸(一个“平面”),将它们分成不同的类别。 非常简单,这就是支持向量机的工作原理。计算机为猫或狗拍摄图像,根据颜色、形状或其他一些我们人类大脑不熟悉的特征对像素进行重组,然后将这些输入“投射”到一个抽象的高维空间中。这被称为“特征图”,然后计算机用它来构建内核——一种最好地分离特征以帮助分类的方法。 如今,SVM通常不是整个新闻的深度学习方法。 虽然已经尝试用量子计算桥接(极端)简单的神经网络,但这两者并不适合。 “基本上,核方法和量子力学的数学理论有很多相似之处,而量子理论和神经网络的理论非常不同,”Schuld解释说。Schuld和IBM团队几乎同时探索的这种洞察力是关键。 量子机器学习分类器 量子计算有助于以两种方式加速基于内核的分类器。一个想法是使用量子计算机本身作为“鉴别器”。训练数据被映射到量子状态,类似于将彩色图像转换为0和1。在这种情况下,输出是一堆叠加的量子粒子。然后将这些数据馈入短深度量子电路,该电路可以主要维持量子特性直到计算结束。可以把它想象成一台通常可靠并且不会经常崩溃的笔记本电脑,而不是一台完美的机器。 研究作者,IBM研究奇异中心的量子研究科学家Kristan Temme博士说,整个过程与人工神经网络(ANN)略有相似。 “我们的量子变分方法使用一个(可能是随机的)起始参数集,然后在训练期间进行优化。从这个意义上说,可以感知到这样的类比,因为神经网络也使用参数化量(权重)并从随机状态开始,“他解释说。 由于它们的量子特性,驱动量子计算机的粒子抽象地居住在一个非常大的“量子态”中,充满了各种可能性。理论上,这使得分离功能比传统计算机更容易和更快。 “为了获得量子优势,至关重要的是电路的形式无法在 中经典地模拟它们,”Temme说。 另一个想法是使用量子计算机来计算内核:即,如何最好地将所有输入数据映射到高维空间,以帮助以有意义的方式分离特征。在这里,经典的基于硅的计算机完成剩下的工作 - 使用其量子伴侣的内核(洞察力),它学习了“这些东西使它成为猫”或“狗”的规则。 从理论到实验 在一个两位量子计算系统中,该团队使用人造数据集测试了这两种策略 - 一个“玩具”问题。 “我们希望看看我们是否可以在量子硬件中实现机器学习分类器,”该团队解释道。这就是为什么数据是人为的,可以通过100%的成功分类来验证方法。 即使有当前一代量子计算机的固有噪音,该团队也能够实现近乎完美的分类(你可以在这里玩这个演示)。 这是关键,舒尔德说。 “尽管一些新闻报道夸大其词,但任何在云中尝试过量子计算的人都知道,由于计算中的实验噪音水平很高,从这些设备中收集有意义的数据是非常困难的,”她说。 该团队的结果显示,即使存在噪声也可以对其数据进行分类,这对于渴望将量子计算与机器学习联系起来的人来说确实是个好消息。 “这种量子机器学习方法为我们提供了一条通向理解的途径,即使是噪声,中等规模的量子计算机也可以胜过经典的机器学习算法,”IBM研究奇异中心实验量子计算经理Jerry说。 。 Tanisha Bassan是一位年轻的量子机器学习研究员,他在多伦多没有参与这项工作,他对此表示赞同。 “这些令人印象深刻的结果有助于表明,当前NISQ硬件量子计算机 需要纠错,并展示更有用的量子机器学习应用的潜力,可以实现更强大的算法。” 她补充说,给量子计算机一个随机存取存储器 - 类似于当前计算机如何访问数据 - 理论上可以进一步支持量子机器学习。 舒尔德还指出,虽然令人兴奋,但硬件的结果有其局限性。 一个是在这种情况下量子计算机是相当简单的。 “原理验证实验 这些天使用至少五个量子比特,”她说。 或许更重要的是,除了实验细节之外,新设置是否可以使用真实世界数据产生真实世界的结果;例如,使复杂数据更易于分析。 “这些技术是否足以击败近30年的经典方法?”舒尔德问道。 “这是我们未来几年必须建立的。” 原文来源: https://baijiahao.baidu.com/s?id=1628514410957782295wfr=spiderfor=pc
个人分类: 量子机器学习|1940 次阅读|0 个评论
省钱了,以后chip-seq不用做control了!用机器学习替代ChIP-seq中的control
chinapubmed 2019-3-17 14:20
ChIP-seq是鉴定转录因子结合的一种常用技术,但存在背景信号,传统做法是用一个对照(control)数据集进行校正,去掉背景信号,但是对照也存在“bias”:一套对照可能会miss潜在的bias来源。白话就是:一个对照在A基因处ok,在B基因处也ok吗? 利用公共数据库中的大量control数据集,机器学习发挥了其优点,可以这些公共的control评估背景信号,并更加准确地识别峰。 AIControl能够(i)以高分辨率评估背景信号;(ii)以一种数据驱动的方式,系统地权衡最合适的对照数据集;(iii)捕获可能被一套对照数据集错过的潜在偏倚来源;和(iv)去掉昂贵且耗时的对照实验需求。 用一堆control来学习某位点(例如基因A)处,到底该用哪个对照。bias少了,更加准确了! ChIP-seq也能进入到AI大数据时代了! PS:所有优点集中在一起,最终还是优点吗?观望! https://github.com/suinleelab/AIControl.jl
个人分类: 软件|3595 次阅读|0 个评论
(机器的)深度学习不是(人类的)学习:人机双脑的较量不在此
geneculture 2019-2-25 17:38
(机器的)深度学习不是(人类的)经验学习:人机双脑的学习能力的较量不在于此。 (机器的)神经网络也非(人类的)神经网络:人机双脑的神经网络的较量更不在此。 尽管如此,但是,基于神经网络的深度学习的确又比基于统计的机器学习进了一大步。当然,更比基于规则的自动计算(批处理)进步了许多。 最近,在调查了信息处理、人工智能和大数据三类技术之后,我发现:2016年及其前后这段时间是非常重要的转折点。因此,就2016-2018年自己提出的“三信、三智和三数”之后,进一步坚定了自己长期研究方向,即:人际和人机以及机际乃至机人之间怎样结合得更好这个融智学的研究方向。因此,我对于(机器的)深度学习不是(人类的)经验学习和(机器的)神经网络也非(人类的)神经网络这样的判定是支持的。尽管如此但是我仍然认为:机器的神经网络虽非人类的神经网络,机器的深度学习也非人类的经验学习,但它们的确都有其不可替代的重要的里程碑意义。因为,它们向人类(尤其是人类的广大成员甚至少数精英成员都)提出了巨大的挑战。未来学的第一和第二定律在此更具备可验证性。-邹晓辉 附录: “深度学习不是学习”:英特尔高管与AI大牛LeCun展开互怼 量子位 02-24 13:09 郭一璞 夏乙 假装发自 旧金山 量子位 出品 | 公众号 QbitAI “深度学习不是真正的学习。” 英特尔神经形态计算实验室主任Mike Davies在国际固态电路会议(ISSCC)上将深度学习批判了一番。 Davies说,深度学习跟大多数人印象中的并不一样,它只是一种优化程序,实际上并不是真正在“学习”。 受到攻击的重灾区,还是深度学习中的反向传播算法。 他说,反向传播与大脑无关,而只是在深度学习计算机程序中用来优化人工神经元响应的一种数学技术。 自然的反向传播例子,并不存在。 虽然他承认深度学习现在非常有效,但他也坚定地强调里,大脑才是真正智能计算的范例。 Davies死死抓住不放的“不像大脑”这个问题,也正是深度学习教父Hinton一直重视的。 不过对于这次批判本身,美国媒体ZDNet认为,他主要的攻击目标其实是Yann LeCun。 深度学习vs.神经形态计算之争 为何攻击LeCun? 就在周一,这位AI大牛在同一个学术会议上发言时,顺便批判了Davies在搞的神经形态计算。 神经形态计算是英特尔布局的一个重要新兴方向,在这个领域,他们推出了芯片样品 Loihi 。英特尔说,这种芯片可以实现自主学习,而且能耗只有传统芯片的千分之一。 而Davies就是神经形态计算实验室的负责人,主管着英特尔在这一领域的探索。他参加ISSCC会议,也是来讲Loihi的。 Loihi用了一种名叫 尖峰神经元(spiking neurons) 的技术,这类神经元只有在输入样本后才能被激活。 神经形态计算倡导者们认为,这种方法更好地模拟了大脑的运行机制,比如说信号传递的过程就像大脑一样经济。 在LeCun看来,神经形态计算领域没有产生有实际效果的算法,为何要为一种没用的算法构建芯片? 不过Davies直接表达了反对,他说,神经形态计算产生的算法是有效的, LeCun忽视了神经形态计算的优势 。 Davies说:“LeCun反对尖峰神经元,但他却说我们需要解决硬件中的稀疏性,尖峰神经元就是干这个的啊。” 他说,这太讽刺了。 为了驳斥对尖峰神经元的批评,Davies引用了安大略滑铁卢一个名叫应用脑科学(Applied Brain Science)的机构的数据,比较了一种语音检测算法在不同芯片上的表现。 这个算法被要求识别“aloha”这个词,并且拒绝无意义词语,这家机构在CPU、GPU和Loihi芯片上运行了这一算法。 这份数据显示,Loihi在常规处理器上运行常规神经网络性能最佳,特别是在计算速度方面,并且能源效率更高,不过精确度会低一些。 在另一个例子中,Davies说Loihi执行的基本分类器任务的速度是传统的基于GPU的深度学习网络的40倍,准确度提高了8%。 因此,Davies认为Loihi效率高得多,可以运行规模越来越大的网络,他认为,机器人控制将会是Loihi这类神经形态芯片的杀手级应用。 Davies还从LeCun的批评挑出了他认同的一点:尖峰神经元的硬件非常充足,提供了很多工具来映射有趣的算法。 针对这句话后边隐含的“但是软件算法层面不行”,Davies说,他的团队当前目标就是在算法上取得进展,算法确实拖了这个领域的后腿。 在推特上,也有人隔空参与了这场辩论。 有人认为,神经形态计算就像量子计算一样处在起步阶段,所以没什么可批判的。 也有人觉得深度学习已经在许多领域内取得了成果,量子计算和神经形态计算还差得远,虽然技术很尤其,但两者都没有被证实,而且都没有编程模型。 其实,这场LeCun和Davies的争斗,除了学术方面之外,另外不得不考虑的一点就是Facebook和英特尔的商业竞争。 周一,LeCun表示Facebook内部正在开发AI芯片,一旦Facebook自己的芯片研发成功,那就不需要使用英特尔的芯片了,甚至还会抢走英特尔的客户。 看完这场隔空口水战的来龙去脉,我们把目光收回到Davies指责的核心:反向传播。 训练深度学习模型离不开它,但对它的质疑也接连不断。 反向传播到底行不行? 反向传播,生于1986,出自David Plaut、Steven Nowlan、Geoffrey Hinton在卡耐基梅隆大学(CMU)时发表的Nature论文:Experiments on Learning by Back Propagation。 △ www.cs.toronto.edu/~fritz/absps/bptr.pdf 31年后,这一概念已经随着深度学习广泛应用到了各种领域,也遇到了最大的一次危机。 它的的提出者之一、“深度学习之父”Hinton在多伦多举办的一场会议上公开提出了质疑。 他说,他对反向传播“深感怀疑”,甚至想“全部抛掉,重头再来”。因为,大脑的运作机制并不是这样的。 “不像大脑”这个问题,Hinton一直非常重视,他曾在MIT的一次讲座上说,他相信正是这些不像大脑的东西,导致人工神经网络的效果不够好。 在Hinton发出自我质疑之后,反向传播更成了讨论的热点,甚至被称为“今日AI的阿喀琉斯之踵”。 不过现在,可能Hinton应该自己的作品稍微满意一点了。 哈佛大学临床神经科学学院的两位科学家在最新一期Cell旗下期刊《认知科学趋势》(Trends in Cognitive Sciences)上发表综述,总结了人工神经网络的反向传播算法,在大脑中是怎样体现的。 这篇综述题为“大脑中误差反向传播的理论”(Theories of Error Back-Propagation in the Brain),综合了近来的一批理论研究,分析几类生物反向传播模型。 作者说,这些理论研究“否定了过去30年来普遍接受的教条,即:误差反向传播算法太复杂,大脑无法实现”。 根据这些研究,脑神经回路中类似反向传播的机制,是基于突触前和突触后神经元活动的简单突触可塑性规则。 论文:https://www.cell.com/trends/cognitive-sciences/fulltext/S1364-6613(19)30012-9 One more thing… 虽然Davies和LeCun在一场学术会议上隔空吵得很热闹,但深度学习和神经形态计算并非势不两立。 有不少学者在研究如何把神经形态芯片和深度学习结合起来。 比如: 美国橡树岭国家实验室、加州理工大学和田纳西大学的学者们,就曾经研究过如何在高性能计算设备、神经形态芯片和量子计算机上运行复杂的深度神经网络。这是他们的研究: A Study of Complex Deep Learning Networks on High Performance, Neuromorphic, and Quantum Computers arxiv.org/abs/1703.05364 而奥地利格拉茨技术大学的Guillaume Bellec、Franz Scherr等人,最近在arXiv上公开了一项研究,提出了反向传播的一种替代方案。他们的研究题为: Biologically inspired alternatives to backpropagation through time for learning in recurrent neural nets arxiv.org/abs/1901.09049 供感兴趣的朋友们深入探索~ — 完 — https://mbd.baidu.com/newspage/data/landingsuper?context=%7Bnid%3Anews_9369246177122558788%7Dn_type=0p_from=1
个人分类: 融智学前期探索|2394 次阅读|1 个评论
比较6种算法在图片中的实体识别效果
duskwaitor 2019-1-1 19:19
Brown University CS242 homework 5很有趣,相关链接如下: http://cs.brown.edu/courses/cs242/assignments/ 该Homework给了一个toy 的图片特征数据集,然后让学生把算法填充完整,进而预测每张图片上出现的实物类型(数据集1上一共有13种实物类型,诸如人、马、牛、羊、山峰、飞机等等,数据集2上一共23种实物类型),显然这是一个多标签预测问题,该任务中用到了三种类型的因素: 1. unary potential : 实物类型s是否出现; 2. pairwise potential:实物类型s和实物类型t是否共现; 3. feats potential:实物类型s和第k种特征的关系; 一共使用了6种算法进行多标签预测,分别是: 1. indenpendent 2. logistic 3. Markov Random Field(精确推导版本的SGD) 4. Conditional Random Field(精确推导版本的SGD) 5. Markov Random Field(Mean Field Approximation版本的SGD) 6. Conditional Random Field(Mean Field Approximation版本的SGD) 结果如下 顺便解释一下,上面这张图,横坐标是测试样本中给定出的已经观测到的标签的数量,每个样本总共有13个标签,可以看出: 1. 当给出的标签数量越多的时候,MRF效果有明显提升,CRF效果略有提升,但无论MRF如何提升,距离CRF总还5个百分点的差距,毕竟MRF没有用到观测特征,这是怎么补充可观测标签都无法弥补的损失; 2. logistic仅考虑unary potential和feats potential,不考虑标签之间的共现信息,所以即便给出同一张图片中的其他标签,对它预测剩余标签的准确率仍然没有任何帮助; 3. independent模型只考虑unary potential,这个模型没有使用任何对预测结果有价值的信息,所以结果和随机猜测是一个效果,AUC在0.5左右; 4. CRF/MRF用了两个版本来学习模型参数,分别是精确SGD版本/近似SGD版本,近似版本使用Mean Field Variational Inference,可以看出两个版本下CRF/MRF随标签数量增多,模型表现的变化趋势是一致的,但就同一种模型来说,精确版本和近似版本求参在模型表现上差了约10个百分点。 再说下另外一件事,就是参数学习的迭代过程,在CRF/MRF近似版本的学习过程中,会出现negtive LogLikelihood降低到0以下,然后收敛的现象,虽然从训练出来的模型的表现来说,效果尚可,但negtive LogLikelihood降低到0以下始终觉得很诡异,不知道是否是Mean Field Variational Inference的正常现象,另外值得一提的是,在跑MRF时候,如果在每次更新的theta参数下Mean Field Approximation都跑20次迭代,那么最终学习结束后negtive LogLikelihood降低到0以下,但如果我将Mean Field Approximation的迭代结束条件限制为Evidence Lower bound的改变量小于某阈值,那么negtive LogLikelihood会在0以上收敛,而且收敛时negtive LogLikelihood的值和CRF精确解时negtive LogLikelihood的值类似,好奇怪的现象。 最后还有一个收获,就是从图片中抽取的可观测特征都是用连续值来表示的,其应用这些连续值特征的方式就是将标签类别Xs与该特征Yk用权重r_sk来表示。 后记:一直以来我都很好奇在CRF中怎么使用连续值,虽然之前知道这种将标签类别Xs与某特征Yk之间关系用权重r_sk来表示,进而在CRF中使用连续特征的做法,但后来在Coursera PGM课程的Assignment 7中,我发现将该连续值的特征离散化,进而将每个离散值与类别Xs之间分配一个r_sk能够取得更好的效果,那有没有比这个还好的应用连续特征的方法呢?现在还没有看到,从这个例子中知道对于连续特征,大家通用的做法就是简单将标签类别Xs与该特征Yk用权重r_sk来表示,虽然这种做法还有很大的提升空间。
个人分类: 乱评一气|3858 次阅读|0 个评论
医学人工智能四大机遇、四大挑战
pinjianlu 2018-12-21 19:41
四大机遇:AI有望改善医疗产品的研发和生命周期管理 1.使用AI工具评估临床试验的纳入/排除标准; 2.在II期临床试验中使用人工智能识别临床活动; 3.从非结构化文本中提取数据; 4.自动化行政工作。 四大挑战:人工智能深入临床面临着监管挑战 1.如何验证不断“学习”的AI软件; 2.如何评估从新的基于AI的临床端点发出的安全信号; 3.如何审查使用AI的医疗技术; 4.人工智能系统需要数据——谁拥有患者的数据? 机遇1:使用AI工具评估临床试验的纳入/排除标准 在临床试验中,人工智能可用于评估与影像学或组织病理学相关的纳入和排除标准。因为第一批使用人工智能技术的诊断工具已经进入市场,所以这种应用是意料之中的。有了这些工具,对已有纳入/排除标准的评估过程将会变得更快,同时成本也会随着标准化程度的提高而降低。 对于低收入到中等收入国家来说,AI工具特别重要。当需要通过血液或组织等生物样本诊断疾病时,这些国家通常缺乏本国专家来评估生物样本。AI工具可以有效简化这一过程,帮助研究人员在当地进行样本评估,而不需要复杂且耗时的跨国运输。 机遇2:在II期临床试验中使用人工智能识别临床活动 利用人工智能评估新药的临床疗效可以降低成本、加快临床研发、尽早为患者带来新疗法,比如在II期试验中评估CT扫描或MRI扫描的成像端点。基于人工智能的算法可以优化成像结果的读取和评估,减少阅读器之间和内部的可变性,从而提高测量的灵敏度和特异性。如果这一工作不再需要放射科医生,那么可以有效地加快测量过程并降低成本。 另一个应用是开发新的临床试验终点,因为人工智能算法可以帮助减少试验患者数量。例如,帕金森病患者可以在手腕上佩戴加速度计,就像健身追踪器一样。该加速度计将提供患者运动障碍及其随时间变化的连续数据,然后人工智能算法对这些数据进行评估,以区分患者是处于ON状态还是OFF状态,从而记录药物是否能起到改善病情的作用。与患者日记或帕金森病综合评分量表(UPDRS)相比,这种评估方法可以极大降低可变性,因为UPDRS量表无法测量ON和OFF状态的确切时间。如果确认了临床终点,降低的变异性可能有助于招募更少的II期患者,以确定一种新药的治疗效果。 机遇3:从非结构化文本中提取数据 我们可以从卫生局、医疗保健公司和互联网的非结构化文本中获得有价值的信息。其中包括关于智能监管等相对复杂的信息,但也有简单的数据,一旦这些数据被提取并转移到数据库中,研究人员就可以很容易地对其进行评估。 使用自然语言处理(NLP)进行文本挖掘的新工具为从文档中提取信息和数据以及随后自动上载到数据库中进行分析提供了新的可能性。现在已经有了基于人工智能的工具,可以从非结构化文本(如产品特性摘要)中提取数据来识别药品(IDMP)(如物质名称或强度) 机遇4:自动化行政工作 卫生当局和医务工作者管理着大量的行政工作,而机器人流程自动化(RPA)和机器学习(ML)可以帮助他们减轻工作负担。例如,一项对监管优化组织(ROG)的审查显示,在欧盟,约有400名全职员工受雇于有关当局及行业,负责管理IA型变异。在人工智能联盟会议上,参会人员就AI/RPA如何帮助自动化处理IA型变异进行了讨论,前提是有关企业可以在没有授权批准的情况下实施,但需要在特定时间告知卫生当局这一情况。 挑战1:如何验证不断“学习”的AI软件 人工智能系统在不断地学习,因此它们在未来的医疗保健中有着巨大的应用潜力。然而,这也产生了一个很重要的问题,即当基于人工智能的软件在使用过程中持续学习时,应该如何以及何时对其进行验证。其中一种方法是以交错的方式验证它,以便在一定数量的学习周期之后能够重新验证它。而另一个问题在于验证方法是否会产生风险,因为研究人员假设完全自主学习解决问题的系统风险更高,因此需要比使用ML技术进行优化的工具更严格的验证。此外,还需要对“人工评分者”和最终结果进行验证。因此,在任何情况下,都需要进行讨论,以确定最合适的方法来验证基于AI的软件。 挑战2:如何评估从新的基于AI的临床端点发出的安全信号 正如前面强调的,基于AI的技术帮助开发用于识别临床疗效的新端点。然而,这些数据可能包括必须进行彻底评估的安全信息。在前面使用腕式加速度计对患者进行持续监测的例子中,数据可以识别患者是否跌倒或是否处于活动状态。因此,在实施这种新方法时,必须适当考虑如何从这些数据中获取和评估安全信号。 挑战3:如何审查使用AI的医疗技术 越来越复杂的医疗设备/软件,包括那些采用人工智能技术的设备/软件,正给监管部门带来越来越大的审查挑战。例如,最近第一个人工智能软件获得批准,该软件可以在不需要专家的情况下识别疾病。此外,利用深度学习技术训练神经网络,可以从皮肤镜图像中诊断出黑色素瘤。这些产品在美国由FDA审查和批准,而在欧盟,医疗器械认证体系已经比较完善。因此,欧盟成员国确定了60个第三方指定机构,来决定医疗设备/软件是否符合指令93/42/EEC。对于这么多组织来说,达到并保持必要的知识深度,以规范日益复杂的技术产品是很困难的,尤其是因为他们不仅需要了解技术而且还需要了解设备应用的疾病。人工智能联盟会议质疑向欧盟卫生当局分配的医疗设备/软件审查,并认为这是一种集中的方式,以确保适当的专业知识可用于评估。 挑战4:人工智能系统需要数据——谁拥有患者的数据? 人工智能系统需要数据来进行“学习”,在许多医疗应用中,所需数据来自患者。使用这些数据开发的工具可能会为未来的患者护理提供便利,但也可能只是作为商用。在这种情况下,问题的关键在于谁拥有数据以及随后开发的工具。这个问题的答案并不简单,患者群体、法律专家、医疗服务提供者、行业和医院等利益相关方需要密切合作,按照项目范围和规定要求,根据具体情况逐一做出决定。为了促进使用患者数据开发基于人工智能的创新工具,必须建立并实施具有一致标准的国际框架体系。因此,关于这个主题的讨论是很有必要的,并且应该考虑数据匿名化等问题。 参考文献: https://vcbeat.net/MmQ1Yzc4YjAzMjE3MzhlZTExMWJjOGI5ZDVlODBjMTE=
个人分类: 科研随笔|1872 次阅读|0 个评论
爱犯错的智能体(二十,完结篇) -- 平衡:机器vs智能?
热度 3 heruspex 2018-12-21 08:24
一个明智的人,仅仅自己研究自然和真理是不够的,他应该敢于把真理说出来,帮助少数愿意思想并且能够思想的人;因为其余甘心作偏见的奴隶的人,要他们接近真理,原来不比要虾蟆飞上天更容易。 ------- 引自拉 · 梅特里,《人是机器》 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 自然界总是存在各种平衡。对一件事的极致追求,往往需要用另一件的损失来换。比如,有了钱的时候就没时间,有了时间的时候又没有钱,因为“鱼和熊掌不可兼得”。 宇宙万物,在微观层面的平衡表现为量子力学中的不确定性原理,也称为测不准原理,是测量粒子的精确位置与精确速度上的不可兼得,他保护了量子力学。而在宇观,有一个光速不变性原理, 30 万公里的速度限定了人类探索宇宙的空间范围,他同时也保护了宇宙物理学。那人工智能领域里的平衡、研究方式能是怎样的呢?研究现状又存在哪些瓶颈呢? 我想从五点展开讨论: 1、 人工智能的不确定性原理 2、 由粗到细的结构发育 3、 智能测试 4、 智能体实验的伦理 5、 人工智能困境 一、不确定原理 在人工智能领域,与物理中有过几个类似的不确定原理。深度学习之前曾一度流行的稀疏学习理论里,科学家们希望通过对数据特征的稀疏化来获得可解释性。但是,其解释性的代价是构造了具有随机性、稠密的变换基函数,如高斯函数。这一思路是稀疏与稠密、时间与空间的不确定性。我们在傅里叶变换、小波变换以及稀疏学习中都能看到这一不确定原理的影子,时间域细节清晰了,频率域就稠密,反之亦然。但这种不确定性原理只提供了寻找可解释变量的方式,能处理的变量规模相对有限,对智能的启示还不明显。 图 1 拉特 飞 ·扎德 ( 来自 Wiki) 另一个是模糊理论 的创始人、加州大学伯克利分校的拉特飞·扎德 (Lotfi A. Zadeh, 1921. Feb. 2 - 2017. Sep. 6) 教授(见图 1 )在 1972 年提出的、解释复杂系统的 不相容原理 (Incompatibility Theory) 。他认为: “随着系统复杂性的增加,我们对其特性作出精确而有显著意义的描述能力会随之降低,直至达到一个阈值,一旦超过它,精确和有意义二者就会相互排斥。” 不相容原理表明,随着复杂性的增加,预测和可解释性之间将存在平衡或折衷。然而,纵观人工智能的发展史,复杂性的定义一直在变迁。最早复杂性被认为是模型参数的数量,后又被视为神经网络的网络结构复杂程度。统计学习理论提出后,在分类问题上又转为“能分类任意数据组合的”模型划分能力。值得指出的是,这种划分能力并不与参数个数成线性关系的,有可能一个参数也具有无穷大的划分能力。结果,单从复杂性的角度来度量这种平衡或刻画不确定性,尽管直观,但还存在复杂性不容易确定的问题。 我在《深度学习,你就是 116 岁的长寿老奶奶》中指出过,可解释性和可预测性之间存在着平衡,因为它是统计和个体之间的平衡。要追求预测性能,总可以找到不具统计解释但却性能优异的个体,而统计往往又会因为平均而牺牲个体的优异性能。这是统计和个体形成的预测与可解释性之间的不确定性,估且将其称为“平猫不确定原理”。 如果令模型的预测 P 与最优预测 P* 之间的绝对值差异为 ∆ P =|P-P*| ,令模型的可解释性与最优的可解释性 I* 之间差的绝对值差异为 ∆I=|I-I*| ,令 C 是一个足够小的常数,则会存在一个预测和可解释之间的不确定性,即: 前者可以通过对个体性能的追逐获得足够近的小值,而后者可以通过对平均性能的追逐获得足够近的小值,但两者之间存在折衷,不可兼得。 而现阶段我们对可预测性的追求更多一些,因为他与工业界关注的性能密切相关,能够直接带来 GDP 的产出,也是引发了第三波人工智能热潮的主要原因。但是,只追求预测性能,会使得其更像是机器、更像是人工智能领域的“飞机”,是“弱人工智能”, 与我们最终期望实现的“强人工智能”还有不小的距离 。 如果我们想要构造具有这种折衷或平衡的智能,有没有可行的路呢? 二、由粗到细的结构发育 除了宇宙可能是从零开始的以外,没有什么其它东西是凭白无故产生的。人的智能从胚胎发育开始,然后有了视觉、听力、触觉等感官和身体器官的发育,并最终有了智能体的形态。再经过漫长的儿童期和教育,智能才得以逐渐完善。在这一过程中,人类的智能经历了由粗到细的结构变化,而平衡似乎就隐藏在其中: 1 、人在思维中,存在快思维与慢思维两种方式,常以快思维为主 。而快思维的频繁使用应该与最初的粗糙或粗略学习有密切关系。试想,人在走路的时候,有谁会关注路面的纹理细节呢?即使人的身份识别,早期儿童心理学发现,小孩往往更容易记住父母而非陌生人。但如果母亲用帽子将其轮廓遮挡后,小孩会出现短时的认知障碍。这些都表明,粗略式的学习和记忆是早期智能发育的基础。因为他可以让人类更快速地了解环境和目标。在保证足够预测精度的同时,节省了大量的计算资源和耗能。 2 、这种粗放式的认知模式可能被固化到后期的认知中,对快思维起了关键作用。值得指的是,并非只有人类才有这种快思维。非人的动物或智能体都具备,所以在常识智能方面人和其他非人智能体存在着有共性的结构发育方式。 3 、 我们也可以推测,这种共性的发育是被嵌套在基因里,通过遗传完成的。所以,似乎人类和非人智能体最初的学习模式、甚至于情感的表达方式都并非全是主动完成的,而是被基因编码所诱导的。从这个角度来看,人和非人智能体似乎就是一台机器。那么,弄明白基因的这种按时表达,也许对于理解智能的发育和建构是关键的,甚至有可能在未来改变智能体的学习模式。但人又不完全是机器,因为人类在漫长的演化中,引入了漫长的儿童期、独特的教育和语言,并通过群体的交互保证了种族的稳定和繁衍。 4 、如果以上推测是合理的,那么结构的表达大概是怎样一个次序呢?首先,对于正常发育的人来说,视觉应该是最重要和优先发育的,然后才是其他辅助的感官器官的发育。因为视觉本就是从大脑发育中分离出来的,可以视为大脑的一部分。其次,当具体概念得到由粗到细的认知后,才开始建构更抽象的语言。既使是情感的建立,也是从直觉式的情感开始,然后才有更细腻的、被修饰了的理性情感。在其他认知能力上,发育的模式应是类似的,其建构非常象我们常说的金字塔 ( 见图 2) 。如果在研究人工智能的过程中,本末倒置的去建构人工智能体,比如重点关注抽象的、如自然语言的结构分析,而不给其提供视觉或其他感官器官的发育研究成果作为支撑,很有可能研究出来的是缺乏真正智能的机器。 5 、不仅在具体到抽象中存在金字塔式的由粗到细认知结构,在每个层次如视觉、听觉等也应有类似的层级结构。智能体在使用这些结构时,能自适应地按需选择是用粗糙、还是精细、还是两者折衷的模型来完成推理、预测等认知任务,以获得在快思维和慢思维间的平衡。 图 2 埃及金字塔 三、如何判断有智能? 假定若干年后,人造的智能体具备了由粗到细、金字塔式的结构,那如何判定其是否具有智能呢?不妨回看下经典的、一正一反的两个智能测试方案。 在人工智能领域,图灵测试是最经典的智能测试方案,它由艾伦·图灵 (Alan Turing) 在 1950 年的论文《计算机器与智能》中提出 。他设想了一种环境,如图 3 ,在测试者与被测试者隔开的情况下,测试者通过某种设备如键盘向被测试者随意提问。经过多次测试后,如果超过 30% 的测试者不能确定被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类相仿的智能。 图 3 图灵测试 ( 来自 Wiki) 自此以后,不计其数的科研人员设计了各种程序,希望能通过图灵测试,以证明其能达到甚至超越人类的智能。然而,情况并没有想象的乐观。事实上, 30% 的指标,还是图灵当年基于对人工智能前景看好,预测在 2000 年就能实现的。但现在看来,我们离这一目标还有些不小的距离。 除此以外,图灵测试里设置的提问环节,或多或少都假定了机器和智能体具备了高层或抽象智能,因此自其测试被提出后,人类对问题回答 ( 俗称 Q/A) 的研究一直常盛不衷。但是,这一测试对并没有涉及常识智能甚至情感的鉴别。而从结构发育的角度来看,如果要建构智能体,这两者的鉴别尤其重要。 图 4 中文房间 另一个有名的测试是中文房间 (Chinese room ,或称为 the Chinese room argument) ,如图 4 。它由美国哲学家约翰·希尔勒( John Searle )在 1980 年提出 。 在中文房间的测试中,希尔勒假定了有个完全不会说中文、只能说英文的人在一间房里。房间除了门和一个小窗口,其余全封闭。不过,他随身带了本具有中文翻译能力或程序的书,房间里还有足够的纸、笔和柜子。测试者将中文纸条通过窗口递进房间,而屋里的人可使用他的书来翻译并以中文回复。尽管完全不懂中文,但却可以让房间外的人以为他是会说流利中文的。 这个测试表明,即使房间里的人对中文一窍不通,但仍然可以通过运行翻译程序来骗过测试者,让测试者对机器产生智能的印象 。与图灵测试不同,中文房间是希望推翻强人工智能对智能的定义,即“只要计算机设计好适当的程序,理论上来说,就可以认为计算机拥有了它的认知状态,并且能像人一样进行理解活动”。 从中文房间的测试不难发现,它主要质疑的是预测行为与智能的等价性。但是,智能不仅仅只是预测。因此,我们应该要在比预测更宽泛的定义和环境下测试智能。 另外,这两个测试都采取了隔离,它迫使测试不得不借助于高层的抽象智能如语言来完成交互。其次,这两个测试似乎都假定了与人的智能的逼近。 回看本科普系列中介绍的犯错机制和常识智能等,可以发现常识智能、犯错都是智能体中必然存在的。尤其是犯错机制,从某种意义来说,他是使得智能体世界具有多样性的原因之一,也是有群体存在的前提之一。所以,智能测试应该不限定于抽象智能,更应该包含常识智能和对犯错情况的一般性测试。 另外,其它非人智能体同样具备了一些基本的智能,包括情感智能、快思维方式和慢思维方式。更何况,如果没有语言和工具的引入,人在自然界的进化中, 本属于极易被淘汰的一种生物。 因此,采用更一般性的智能测试条件:开放环境、不限定人的智能模拟,是评测智能有否的关键。 基于这些考虑,这里提出一个也许可以合理来检验是否具有智能的方案,估且称为“平猫测试”: 将一个机器猫 ( 也可以是其它任意形态 ) 放在透明的盒子里或开放环境里,测试者可以与它交互,可以观察、分析它的行为。在确信它的预测能力足够好的前提下,如果它的犯错程度是可接受的,情绪表达、自我意识会让 超过一定比例如 30% 的测试者 感觉与人或非人智能体相差无几时,则可以认为它具有智能。 只要它满足了以上条件,我们就可以认为它是智能体。注意,这里是不要求其具有任何我们已知的智能体形态,但要通过测试,测试者需要确信这只机器猫有智能体该具备的某种平衡。如果只是预测能力方面有异常优异的表现时,而对其它智能相关的指标牺牲过大时,此时不能认为其具有智能,而只能认为是具有机器的预测能力。 要构建能通过这一测试的智能体,我们必须在有智能体形态的智能体上寻找线索。那么,在哪里找呢? 四、如何研究智能 --- 智能测试体的选择与伦理 谈强人工智能,一般我们认为是可能制造出真正能推理和解决问题的智能机器,并且,这样的机器能被认为是有知觉,有自我意识的。因为这样的定义,多数人工智能研究者会将其向人的智能看齐,需要研究人或像人的生命体的智能发育。这自然会带来比较严重的伦理问题,因为研究人的智能途径之一是要对人的大脑中进行深层次的探索。可是不管是脑电极形式还是基于核磁共振的方式,都会或多或少损害人脑的神经元细胞。这是大家不愿意涉及强人工智能的原因之一。 当然,退而求其次似乎更合理。于是,科研人员选择了与人类在形态上最为接近的猴子与猩猩来做实验。不管是手势的使用,还是对语言的理解,似乎都有一些相似之处,选择它们似乎是最佳选择。为了人类的未来,它们做些牺牲也无可厚非。所以,在这两类动物上进行的很多实验,经常能看到要么把猴子关在笼子里,要么开颅插好电极固定在架子上,测试其对各项指令的反映程度,试图发现脑区活动与智能的线索。 然而,这也许并非是现阶段研究智能最有效的方式,也可能并非是最好的实验品。因为成本太贵,能做得起猴子猩猩的实验室可以说都是非富即贵的。所以,才会有研究人员宁愿直接在人身上直接做相关测验,因为可能更经济。实际上,真正与人类有良好情感交互的,不是猴子猩猩,而是宠物狗。经过几千年的驯服,狗早已经能够非常好的理解人类的情感,甚至部分语言。从常识智能和基本情感来看,狗已经具备了和人类几乎一样的能力。更何况,狗的数量远多于猴子猩猩,且不存在不可逾越的伦理问题。 事实上,如果不是因为语言和教育,人类在自然界的位置应该是属于弱小的行列。所以,综合这些信息,从这个角度出发,我们并不需要把研究的测试体限定在人和猴子猩猩上,而是有着大量可供选择的测试体,来帮助我们理解目前还不太明了的常识智能和情感。 然而,即使提供了大量的测试体,现阶段着手研究强人工智能也并非是一蹴而就、水到渠成的,因为我们还处在人工智能的困境中。 五、人工智能困境 在这一波人工智能热潮中,有相当多的学科都投入了人工智能的研究中。尽管产业界形成了显著的进展,尤其在安防相关的行业,也有通过图灵测试的所谓报道,但我们似乎并没有看到多少与真正智能相关的影子,困难主要在哪里呢?这里从几个主要方向上谈些自己初浅的观点, 希望能给大家一些思考和线索: 1 、机器学习 在本轮人工智能热潮中,最亮眼的主角无疑是深度学习,或更宽泛一些的机器学习。他对于弱人工智能以及在产业界的应用的推动是显而易见的。然而,机器学习是否真能帮助理解真正的智能呢? 我们不妨将机器学习的技术概括成程咬金的三板斧:正则化、加圈、加层,这样也许会比较容易理清头绪。 第一板斧是正则化,其观点是认为我们要研究的问题求解不存在唯一性,往往是一对多的求解。 Tikhonov 将其称之为 病态问题 (ill-posed problem) 。要让病态问题良态化,最自然的做法就是引入约束项或正则化项。从病态问题良态化的思想提出至今,这一板斧挥了六十多年,随着对数据的结构持续不断、更新的认识,我们提出了各种正则化的方案,从模型参数的复杂性、到空间的光滑性、到模型结构的复杂性、到特征的稀疏性,诸如此类。但似乎这些努力最终都转化为预测任务,而并没有对智能给出更明晰的解答。可能的原因是:如果给定了一个限定体积的球作为搜索空间,那能寻找的解空间必然只能在此球内去找。不管增加多少的约束项来使问题良态化,该良态化获得的全局最优解也只能是这个球张成的解空间上的局部最优。可是,如果一开始球就给错了呢?如果这个球只是相当于盲人摸象中摸的其中一条腿呢? 第二板斧是加圈,其主要思想是假定有观测到的世界变迁可能有一个或多个小人在暗中控制中,且这些变迁的变量和小人之间存在较复杂的相互关系,由此我们可以构造要么是有明确指向关系的有向图模型、要么是无明确指向的无向图模型,当然也可以混搭。这一板斧的优势在于方便解释,因为关系都是明确的。要丰富对世界各个侧面的理解,最自然的做法就是增加能描述更细粒度关系的圈和圈与圈的边了。但这一方法在变量过于复杂时,又容易出现关系混乱、计算量过大的问题,在现阶段也很难构造出可以自我生长的模型。 第三板斧是深度学习的加层。既可以往深了加,也可以往宽了加,还可以跳着加,只要你想得到就行。加层的历史按性能的改善可以分两阶段,相对浅层的经典神经网络时代和 2012 年深层的后神经网络时代。尽管有两个时代,从理论方面来看,他的变化却并不大。但从工程技巧来看,逐层变特征学习的策略让其获得了巨大的可寻优空间,再加上大数据的支持,使得其在预测能力相关的任务中,目前处于独孤求败的地位。其它门派只能在小样本环境中找点自留地。但是, ( 深度 ) 神经网络模型从 MP 模型开始,到非线性变换函数的引入、到反向传播算法的提出,到深层结构的发展,这一结构的主要长处还是预测,因为有广义逼用定理的支持。它并没有考虑模型的可塑性、可发育性,也没有触及本文中提及的智能所需要的平衡。 因为预测是机器学习的重中之重,所以,我们在此框架下能够追求的更多是弱人工智能方面的成就,也确实看到了不少相关的成果。但在真正智能的探索方面,机器学习还缺乏相关的理论支持。 2 、 脑科学 与机器学习主战场在预测不同,脑科学更关注大脑的发育以及与智能的关系。在近几十年来,脑科学在微观层面,已经进入了细胞、分子水平;在宏观层面,随着各种无创伤脑成像技术的使用,如正电子发射断层扫描术 (PET) 、功能性磁共振成像技术 (fMRI) 、多导程脑电图记录术和经颅磁刺激术等的使用,已经可以对不同脑区数以万计的神经细胞的活动与变化进行有效的分析 。 然而,由于目前各种探测技术在空间和时间两方面的成像分辨率都并不理想,我们的分析仍然是雾里看花的方式。尽管这种探测方式远比 19 世纪初曾盛行的“颅相学”科学多了,但我们对神经细胞集群每个单元的活动仍知之甚少,更不用说,将单元的信息组合起来理解大脑对知识、信息的加工和编码过程 。其次,现在的研究对大脑中的意识也缺乏有效的了解办法。比如,尽管我在前文中提到过梦境的复述方法,但仍没有办法能真正复现大脑在梦境中的场景和故事。另外,如何从简单的神经活动升华为我们平日思考所用的快思维、慢思维,也都还缺少有效的研究方案。不仅如此,如果从机器学习的角度来看,由于脑的活动都是个体的,脑科学中诸多实验的可重复性都偏低,难以形成有统计意义的结论。基于以上原因,如果用唯物主义的讲法来归纳脑科学的情况,那就是:我们已有一些条件来理解脑活动中量变的过程,却还不明了什么时候量变会引起质变。 3 、统计学 统计学对人工智能贡献最大的,当属频率派和贝叶斯两大流派,主要不同在于要不要利用先验信息。比如每一次买彩票的情况就可以看成是下一次彩票时可用的先验信息。 自英国学者贝叶斯发表了“论有关机遇问题的求解”一文、并提出了贝叶斯公式后,就有了贝叶斯学派。该学派认为任何一个未知量都可以通过重复实验的方式来获得一个先验的分布,并以之来影响总体分布和推断。而在贝叶斯派形成之前,曾经一统江湖的频率派从来就是立场坚定反对这种特别带主观性质的做法。当两大门派形成后,便为了主观还是客观描述未知量,有了一场吵了近 250 年,至今还在吵的架 。 另外,为了追求可分析,统计学界偏好采用线性模型求解,以便获得相对干净的答案。但是,现实世界却存在大量的非线性问题。 所以,不管两个学派谁对谁错,要研究真正的智能、寻找可解释性的线索,就需要统计学的这两个学派能提供更多有效的、非线性的理论、方法和工具。 4 、数学 对我来说,数学是最美丽的,几千年的努力已经让其成为了人类历史上最完备的学科,没有之一。数学之美在于简洁,往往一两个公式、一个定理就能把连篇累牍的内容讲清楚。然后,这种简洁和完备性的获得也是有代价的,很多时候是通过大量放缩、牺牲小项来得到的。而研究人工智能,在达到一定预测性能后,我们需要了解的,也许就是这些在放缩过程中被牺牲掉的小项。因为我们在处理实际问题时,大多数情况是有噪的,不确定性的。 另外,我们也需要思考一个问题:智能是否需要严谨的数学?也许并不要!如果我们将智能狭义的理解为人类的高级智能的话,那是必需的。但这也只是在需要进行严密思维、慢思维的时候才用到着。大部分的常识智能是不依赖于这类高级智能,即不需要进行太多的数学关联,就能形成。比如大自然中的绝大多数动物,哪种动物会像人一样学过数学?可为什么仍然能很好地适应环境?这说明我们在仿生智能时,从数学上建模可能并不见得是等同于真正智能的感知和预测模式。 图 5 “ 薛定 谔 猫” 佯谬 5 、物理学 谈到物理学与人工智能,必须提下波动力学之父、曾提出过“薛定谔猫”佯谬 ( 见图 5) 的奥地利物理学家埃尔温·薛定谔。他于 1944 年出版的书《生命是什么 --- 活细胞的物理学观》开启了分子生物学的大门,也有说其对人工智能的早期发展起了重要作用。他认为物理学和化学原则有助于解释生命现象,而基因的持久和遗传模式的稳定可以用量子理论来说明。该书也促使英国物理学家克里克从粒子物理的研究转行到生物学,并与美国生物学家沃森一起在 1953 年提出了 DNA 双螺旋分子结构模型,解开了遗传信息的复制和编码机理。 而现代物理学中,与人工智能可能最密切相关的是量子计算。从机理上来看,量子比特的量子叠加态特性,可以避开现有计算机发展中摩尔定律的影响,避免现有 CPU 发热问题,以指数级的效率大幅度提升计算能力。然而,量子计算在理想情况下的主要优势是加速计算。但速度快的同时,他也为每个量子位的状态引入了概率或不确定性。这使得其在研究人工智能时,有可能失去原本机器学习很容易获得的精确性能。比如聚类中最经典的 K- 均值算法,经典机器学习能轻松达到的性能,利用量子计算的框架来处理,可能效果反而会变得差强人意。另外,智能的本质问题应该不是通过提高计算效率就能解决。 6 、遗传学 遗传学解释了基因的复制、交叉、变异,近年来在基因测序方面也取得了长足的进步。从已知的情况看,基因的结构很象是一个超乎寻常的程序员编制的程序,固定的基因序列中包含了可以表达功能的编码区和负责多个其他能力如调控的非编码区。不仅如此,基因似乎有一种按时表达或调控的能力。这种编程技巧目前还无法在人类已有的程序中找到对应的。 不仅如此,目前对于分析非编码 区 DNA 序列还没有一般性的指导方法。在人类基因组中,并非所有的序列均被编码,即便是某种蛋白质的模板,已完成编码的部分也仅占人类基因总序列的 3~5% 。非编码区的调控机制人类还远没到能百分之百说得清楚的地步。 说个极端的例子,一个受精卵分裂成两个相同的,两变四,四变八,依此类推,上面的发育成了大脑、上身,下面的发育成了脚,可是这种细胞与细胞间的方向性是如何被调控机制获得的呢? 所以,对非编码区按时调控的深入分析,也许对于理解智能体的结构发育有着重要的作用。 正如 1975 年获得诺贝尔生理学或医学奖的美国科学家 Dulbecco 于 1986 年所说:“人类的 DNA 序列是人类的真谛, 这个世界上发生的一切事情,都与这一序列息息相关” 。但要完全破译这一序列以及相关的内容,我们还有很长的路要走。 7 、认知心理学 心理学中与智能研究相关的主要是认知心理学。从广义来讲,与人认识相关的都是认知心理学的研究范围。狭义理解,主要是信息加工相关的心理学。它将人的认知与计算机类比看待,希望从信息的接受、编码、处理、存储、检索的角度来研究人的感知、记忆、控制和反应等系统。 从 20 世纪 50 年代中期开始,到 1967 年美国心理学家奈瑟出版《认知心理学》一书形成了独立的流派,至今已有近 70 年的历史。其学科中也衍生了强调整体大于部分的格式塔心理学、 皮亚杰的结构主义等众多分支。因为门派众多,这里仅以此两个分支为例来简要讨论在人工智能研究中的意义和存在的问题。 在视觉方面,格式塔心理学总结了一些规律,如涌现、多视角、聚类、旋转不变性等,强调整体与部分之间的差异,并非简单的累加,甚至整体可能大于部分之和。另外,顿悟学习、学习迁移、创造性思维的研究也是其重要方向之一。其不足在于,忽视了对生理基础的研究,部分实验缺乏足够的证据。另外,格式塔理论发展出来的观点不太容易量化、程序化。结果,尽管大家觉得它有一定的道理,但近几十年在计算机视觉和机器学习研究领域可以见到的相关论文仍然非常少。 皮亚杰倡导的儿童发育心理学和结构主义是另一条探索智能发育的道理,主张认识的同化和顺应,即将本能反应向不同目标的范围扩大的同化,以及根据环境变化而对行为产生改变的顺应 。他对儿童在感觉运算、前运算、和具体运算阶段的观察分析,视角非常独特,也开启了儿童发育心理研究的大门。皮亚杰的结构主义不足在于 1 )受研究的个体数量和年龄跨度的限制,难以获得更一般性的归纳总结; 2 )偏好用问题回答的方式来研究,难以对语言未完全掌握的儿童进行有质量的询问。而且,如我之前所述,问题回答本已是高层和抽象智能,远离了智能金字塔的基础。 如果可以多审视下格式塔心理学和皮亚杰的结构主义,也许对于我们重新思考智能体的发育,尤其是理解犯错机制会有着重要的启示作用。另外,也许可以考虑研究宠物的认知心理,尽管它不如人那么聪明,但宠物狗的认知能力并不会比一两岁小孩的弱多少,而且宠物狗的一生长时间是停留在与儿童相仿的认知能力下的。 所以,尽管认知心理学可以利用计算机模拟人的抽象思维能力,但在早期发育和金字塔结构的研究这一块还存在大的空间有待挖掘。 8 、社会学 在未来,人工智能体必然是以群体形式来存在和发展壮大的,所以有必要研究群体行为的各种内在因素。与这一问题最密切相关的,是研究社会行为与人类群体的社会学。 自 1838 年由法国社会学创始人奥古斯特·孔德首次提出“社会学”的概念, 19 世纪 40 年代由埃米尔·迪尔凯姆、卡尔·马克思、马克斯·韦伯三大社会学巨头共同创立, 社会学至今已经形成了从微观的社会行动和人际互动、到宏观的社会系统和结构的广泛研究范围。在群体行为的结构功能、符号互动、社会冲突、社会交换、社会心理、社会统计学、社会伦理等方面,社会学都有着深入而丰富的研究成果。 尽管如此,社会学在形式化这些成果方面还存在困难,这使得仿真社会学中的群体行为各要素有一定难度。而如果希望了解未来人工智能体社会的各种变化,程序化这些要素又是必然的。另外,社会学关注的主要是人。而未来的人工智能社会组成肯定不限于只有人类。那么,如果要提前布局和预测,需要将非人类智能群体行为的研究也纳入智能的研究范畴中。 到此,爱犯错的智能体系列就告一段落了。总体来看,研究人工智能、大脑的功能一点也不比研究宇宙简单。从我列举的、并不算完全的方向来看,研究人工智能的相关学科之间的差异比较大。研究机器学习的,可能对脑科学、社会学知之甚少,研究脑科学、社会学又对机器学习的核心理论与算法一知半解。结果, 单靠一臂之力或一个方向的力量,孤立开来各自做研究,可能就只能盲人摸象,看到局部,却依然不明智能路在何方。也许,打破彼此间的鄙视链,交叉合力、优势互补,或许能找到关于智能的答案。 参考文献: 1. 拉 · 梅特里 . 人是机器 . 商务印书局 , 2011. 2. Zadeh, L. A. Fuzzy sets.Information and Control.8(3): 338–353,1965 doi : 10.1016/S0019-9958(65)90241-X 3. Zadeh. L. A. Outline of a new approach to the analysis of complex systems and decision proce sses.IEEE Trans. Systems, Man and Cybernetics, SMC3(1): 28–44, 1973. 4 . Kahneman, D. Thinking, Fast and Slow. Farrar, Straus and Giroux, 2011 5. Turing, A. M. Computing Machinery and Intelligence : Oxford University Press on behalf of the Mind Association , 1950. 6. Searle, J. 1980a. Minds, Brains, and Programs. Behavioral and Brain Sciences 3, 417-424. 7. Tikhonov, A. N. On the solution of ill-posed problems and the method of regularization, Dokl. Akad. Nauk SSSR, 151:3, 501–504, 1963. 8. 杨雄里 . 当前脑科学的发展态势和战略 . 2018. https://www.sohu.com/a/221020764_465915 9. Efron, B. Bayes’ theorem in the 21 st century. Science, 340(7):1177-1178, 2013. 10. Dulbecco, R. A turning point in cancer research: sequencing the human genome. Science, 231(4742): 1055-1056, 1986. 11. 皮亚杰 . 结构主义 . 商务印书局, 1984. 张军平 2018 年 12 月 21 日星期五 注:本系列已授权清华大学出版社,将于明年出版。如需引用本科普系列的内容,请采用以下格式引用,谢谢! 张军平 . 爱犯错的智能体,清华大学出版社, 2019. 延伸阅读: 23. 爱犯错的智能体(十九) – 群体智能与错觉 22. 爱犯错的智能体(十九) – 群体智能与错觉 21 . 爱犯错的智能体(十八):情感与回忆错觉 20. 爱犯错的智能体(十七):灵光一闪与认知错觉 19. 爱犯错的智能体 (十六):庄周梦蝶与梦境学习 18. 爱犯错的智能体 --- 语言篇:可塑与多义 17. 爱犯错的智能体 – 体感篇:我思故我在? 16. 爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2800余次,ESI高被引一篇,H指数28.
11482 次阅读|9 个评论
基于机器学习的国际河流径流评价研究成果发表在WRR
热度 2 jiasf 2018-12-16 19:23
国际河流的测站本来就少,加之各国之间互相保密,径流信息很难获得。 我们研究组关注国际河流的水资源评价已经超过十来年了。 大概从2007年开始,多次应印度有关机构的邀请,去印度、孟加拉、尼泊尔等地参加兴都库什-喜马拉雅地区气候变化与水资源安全研讨会。曾经利用国际模拟产品评估过布拉马普特拉河-恒河-米格拉河水系(BGMS)的天然径流量及其国别分布,并给印度的同行说不要担心中国在雅鲁藏布江的用水,因为从雅江干流中国境内来的水占全流域水量的比重不过百分之十几!即便全部截住也影响不大,何况中国境内用水很少!万一有人决定要调水,调水量占全流域水量的比例也很小(百分之几以内)! 想起来那时候国际河流研究并不太热,曾经外方委托我邀请更多专家参加会议,对方负责交通费和食宿,中方专家只要投入时间,但除了两位教授接受邀请之外,一些同行并不积极,政府也没有排上议事日程。最近几年国际河流似乎成为显学,政府重视了,研究的机构和学者也越来越多。 我的2014级博士生严家宝先生是学GIS出身的,尤其是计算机编程能力很强,在人工智能方面也有一定基础,所以在他选题的时候就定下了利用机器学习方法评价中国国际河流径流量的题目。实际上主要研究成果2016就出来了,2017年他就可以三年内按时答辩毕业,但为了慎重起见,他主动要求延长一年,我们采用更多方法、更多数据反复进行了验证,结果表明用机器学习方法和中国的径流、降水、地形、地质、土地利用、植被等数据训练的径流计算模型,获得了涉及中国的国际河流的0.1度网格尺度的多年平均径流系数和径流深,经过与有可靠的流域径流量数据的对比,可以证明此方法的结果比目前已有的所有产品精度都要高! 研究论文去年夏天就提交给了水资源领域传统上认为最权威的期刊Water Resoruces Research ,经过两轮专业修改和一轮语言修改,好事多磨,也终于在今年11月2日被正式接受,并已经网络发表!(DOI: 10.1029/2018WR023044) 真诚感谢匿名审稿人和编辑为本文付出的辛勤劳动、提出的宝贵意见!你们为本文达到目前的水平做出了非常有价值的贡献! 此方法的优势是不需要利用各国的保密数据、仅仅利用公开数据就可以获得相对可靠的国际河流分国家的多年平均径流量数据,为掌握各国的水资源量提供了可以公开、可以重复验证的方法和结果。 此方法的深远意义还在于:利用机器学习方法可以提供比目前最先进的基于物理机制的水文模型还要好的结果!这充分说明了“数据为王”——有了大数据和挖掘大数据信息的人工智能方法,就可以获得比建立在物理机制上的模型更好的结果!随着大数据的数量越来越庞大,人工智能学习方法的改进,可以相信人工智能方法比物理机制水文模型更有用武之地! 下一步计划在几个方面拓展,希望有更好的成果奉献出来!
个人分类: 水是杂谈|3919 次阅读|9 个评论
爱犯错的智能体(十九) – 群体智能与错觉
热度 2 heruspex 2018-12-7 07:41
跨界 我是理科生 混进了一诗歌群 学习与赏析 诗歌中的意象与意境 有天好奇地问了句 为什么 诗歌一天能写好多 科研一年才一点点 灵感怎么差那么多? 于是 群里炸开了锅 有人说 科研哪要灵感 有人说 科研和科学研究 你知道区别吗 有人说 你做的是科研吗 一点数学也没有 我只好 展示了一些 我在 数学鄙视链 最底端的 统计学成果 还有 物理教学的 一点心得 结果 整个群里 只有 两个理科生 在激烈地 辩论着 偶尔会有人发表情包䁔场 群主最后 不得不出面 嗨,两位同学 这里是文学群 请不要讨论不相关的内容 平猫 2018 年 12 月 1 日 个体成群后,才便于延续和壮大。人类和非人智能体在结成群体的进程中,从生存需求的共生到精神需求的依赖,经历了蜿蜒曲折的变化和调整,最终形成了精彩纷呈、各式各样的群体。而聚集成群的个体,会与独立存在或独处时,有一些明显的区别 。那群体的行为是如何体现的呢?它对智能有何影响,又有哪些错觉呢? 一、群体智能 人类对群体行为的研究年代比较悠久。我国著名科学家钱学森先生在上世纪90年代曾提出了“综合集成研讨厅”的体系。他强调专家群体应以人机结合的方式进行协同研讨,共同对复杂巨系统的挑战性问题进行研究。而将群体行为关联至智能学习则常从两个方面出发,一是分析宏观的群体表现,一是审视微观的群体行为。宏观主要从非人智能体的角度着手,以观察动物的群体行为为主。 天上的飞鸟比较容易看到的,但是形成能变换各种形状的飞鸟群却已不多见 ( 图 1) 。不多见的原因与人类曾过度使用化学药品和肥料有关,美国科普作家蕾切尔·卡逊在其 1962 年的科普书《寂静的春天》介绍过。不过偶尔还能见到些,所以 1995 年 Eberhart 和 Kennedy 博士就分析了飞鸟集群觅食的行为。他们发现当鸟群需要的食物处在鸟群生活的某个区域时,在搜索食物时,每只鸟不仅会受自己飞行的路径影响,还会受和它相邻鸟群的局部飞行路线,以及鸟群以群体的整体飞行路线所影响。鸟群会通过共享这些个体和群体的信息,并通过不断交换和更新这些信息,最终鸟群能用“最优”的效率找到食物。基于这一观察, Eberhart 和 Kennedy 博士提出了一套群体智能算法,称为鸟群优化算法 (Bird Swarm Optimization) 。如果把每只鸟假设成一颗粒子,一群鸟群则构成粒子群,则鸟群算法还有个更一般的名字,叫粒子群优化算法 (Particle Swarm Optimization ,简称 PSO) 。 不仅天上的飞鸟有群体行为,地上的走兽穴蚁也有,而其中最方便观察、能频繁见到、密度又极高的群体是蚂蚁 ( 图 1) 。于是,意大利的学者 Dorigo 和 Maniezzo 等观察了蚂蚁的觅食行为,在上世纪 90 年代提出了蚁群系统 (Ant System 或 Ant Colony System) 。不同于飞鸟,蚂蚁是通过一边行路一边释放“信息素”的物质 ( 英文为: pheromone 。通俗点讲,是体味的一种 ) 来形成群体觅食行为的。蚂蚁会沿着“信息素”浓度高的路径来行走,同时它走过的时候也会留下自己的追踪“信息素”,进一步强化了可能到达食物的最短路径。同时, “信息素”会随时间的增长而挥发,以保证路径搜索不易僵化,失去灵活性。通过信息素的反复增强和淡化过程,蚁群就能沿最短路径到达食物了 。 蚁群和鸟群优化算法是文献中最经典的两个群体智能算法。事实上,非人智能体的群体行为有很强的多样性,如果留意观察各种群体的行为表现,还能找到更多很有新意的群体智能算法。 举例来说,美国德州奥斯丁议会大桥有群蝙蝠群。据估计,桥下生存了 150 万只墨西哥无尾蝙蝠 ( 图 1) 。每到傍晚时分就会出洞,成群飞行去觅食,已是当地最负盛名的旅游景点。对飞行类群体智能行为感兴趣、希望找到新算法的不妨去观察观察。海洋中的鱼群也自有其特点。较小的鱼偏好成团,形成比较大的形状,如图 1 。与飞鸟不同,研究表明,小鱼爱成群的原因是较个体而言,鱼群的体积要大得多,能够让潜在的捕食者误以为是比它大的生物体,从而不敢冒然攻击,也就让小鱼多了生存的机会。除了觅食和生存行为,迁徒行为也可以研究。比如大雁南飞时的,头雁引航的人字形队现象。在迁徒中,头雁与其它从雁在决定路线方面的决策权方面显然存在大的差异。 图 1 :从上到下,从左到右:鸟群、蚁群、蝙蝠群、鱼群 当然,动物的群体行为也并非始终优于个体,常常是机会与风险并存。比如,蚁群靠追踪“信息素”来觅食的行为就不是百分之百安全。假如有一只引路的工蚁碰巧离开了有“信息素”的路径,跟着它集体觅食的蚂蚁都会离开路径,极端情况下会形成如图 2 的蚂蚁乱转 (Ant Mill) 的循环圆圈,最终导致蚂蚁因为体能耗尽而集体死亡。 这是与群体优势相背的 群体错觉 。 再比如小鱼的鱼群现象,有些捕食者就会故意利用这个习性。如杀人鲸 (Killer Whale ,也称虎鲸 ) 为了提高吃小鱼的效率,会有意识地分散开将小鱼们围起来,驱使小鱼被动在包围圈内形成密集的鱼群,然后虎鲸便会轮流冲入圈中饱餐一顿。 这是不同智慧级别的群体智能的对决结果。 图 2 左: 蚂蚁 乱 转;右:虎鲸在学习捕食鱼群技巧 不仅非人智能体存在值得研究的群体行为,微观层面中也有。 二、微观和非生命体的群体算法 微观的层面可以分析群体行为的,一种是物理学中经常提及的布朗运动,即微小粒子的无规则运动。这种运动从单个微粒来看是无规则的、无序的,但从群体或整体来看却能形成运动中的动态平衡。最早是英国植物学家 R ·布朗从花粉中观测到这一现象。尽管解释很多,真正有效的解释还得归功于维纳于 1863 年提出的分子振动假说和爱因斯坦的分子运动论原理。 1926 年法国人贝兰和斯维德伯格因为实验验证了爱因斯坦的假说而获得诺贝尔物理学奖。 在布朗运动的基础上,科学家提出了模拟退火 (Simulated Annealing) 的智能算法。它模拟了金属退火中的加温过程、等温过程和冷却过程,通过增强和减弱随机游走的分子的布朗运动强度 ( 如图 3) ,使其最终形成有序的全局平衡或最优解 。 除了分子的群体行为外,科学家们也看好基因。因为在算法层面上,进行群体的“基因编辑”都是相当安全且无伦理问题的。进化论告诉我们,基因的演化有三种模式:复制 (reproduce) 、交叉 (crossover) 和变异 (mutation) 。那么,如果要“编辑”出一个最优的“基因”,我们完全可以让成千上组“基因”通过这三种方式来实现优胜劣汰,最终收敛到期望的解。不过需要注意的是,在演化过程中,复制是根本,变异只能偶尔为之。这种基于基因群体行为的方法被称为遗传算法 (genetic algorithm) 。 不仅微粒和基因有群体行为,甚至毫无生命特征的钞票,也有人观察到了有趣的群体流通行为。 2002 年德国物理学家 Dirk Brockmann 发现,尽管在绝大多数时间里,钞票只在一个较小的区域里交换,但是仍有一小部分钞票会流通到较远的地方,如图 3 所示。他将这种流通模式被称为列维飞行模式( Levy flight pattern ),并认为其流通性质表明小概率的事件有时会产生较大的影响 。 图 3 :布朗运动中的随机游走与列维飞行模式 不论采用的是哪种方法,从本质上都有一个隐含假设在其中。既认为个体的活动具有随机性,但纳入群体后,最终这种局部或个体的随机性可以收敛到全局平衡有序的环境。基于这一假设,以上提及的非人智能群体智能、微观群体算法和遗传算法常被用于目标的寻优,目的是为了帮助需要迭代求解或梯度寻优的算法获得最优解。需要注意的是,由于这类算法或多或少都带有比较强的启发式,因此不太容易找到好的理论性证明,如数学家们偏好的存在性、收敛性和唯一性等以及统计学家偏好的泛化界。即使有一些理论性的证明,也只是在给了较多假设条件后的有限结论。尽管如此,这类方法在工程上仍然形成了不少好的应用成果。 三、多样性与集成学习 要发挥群体的优势,关键是多样性必不可少,因为差异大的时候更容易形成互补性。如蚁群算法中常假定每只蚂蚁具有独特的个性。不仅单个物种内部有互补性,跨物种间也存在互补性,甚至更明显。比如两种能独立生存的生物间的原始协作关系 (Protocooperation) ,可以保证双方都能获利。图 4 中寄居蟹与附着于寄居蟹匿居的贝壳上的海葵、鮣鱼利用吸盘附着在鲨鱼体表与鲨鱼,都是这类原始协作关系。海葵借助寄居蟹、鮣鱼借助于鲨鱼扩大了活动范围和觅食机会,反过来海葵和鲨鱼又分别给寄居蟹和鮣鱼提供了保护。还有对一方有利,对另一方无关紧要的偏利共生 (Commensalism) ,如常受海葵保护的双锯鱼。人类与宠物狗的共生也比较有意思。人从宠物狗中得到了情感的慰籍,老年人甚至把它做为已自立门户的子女的替代品。而宠物狗也不仅仅是得到食物,还从人类这里学习了很多人类的行为规范。值得再次强调的是,机器智能目前还无法替代宠物狗的共生功能。而在人工智能领域,也有不少研究是在学习和利用这种跨物种间的互补性,如利用地面机器人与无人机的互补性来实现对未知环境的快速探路。 而 2017 年出台的《新一代人工智能发展规划》中,也强调了要着重研究“多人多机联结,使之涌现出更强大智能”的群体智能。 图 4 : 左:寄居蟹与海葵;右: 鮣鱼与鲨鱼 在通讯中也能见到利用多样性和互补性的应用。如在信道的误差纠编中,为了保证信息在传输中不发生错误,最简单的操作就是多传输几次。尽管每一次都有可能出错,但只要出错的位置不同,总能通过 少数服从多数 的方式来大幅度降低传输犯错的概率,最大程度地保证信号传输的正确性。 机器学习界把利用集体或群体来增强性能的策略叫做集成学习 (Ensemble learning) 。要在集成框架下获得好的性能,基本假设是每个子体学习器要有一定的预测能力,比如至少要比扔硬币随机猜的性能好一点,同时分类器之间要有足够大的多样性或差异性。在这一思想下,大量的集成学习方法被发展。以分类任务如人脸识别为例,早期端对端的深度学习还未流行时,一般都从三个角度来实现群体的集成。或是改变输入的特征,形成多样性;或是变更学习器的多样性,或是动最终输出函数的集成方式 。虽然基本套路并不复杂,但俗话说得好“三个臭皮匠抵个诸葛亮”。在 2012 年深度学习没有形成大的性能提升前,集成学习模型形成的群体优势几乎是打遍了“所有与数据相关的竞赛”而无敌手。而 2012 年后,尽管深度学习成为主流,但仍然能见到集成学习的三板斧,有些是转化成了深度学习中网络的结构变化,有些仍是通过把多个深度模型结合来继续用群体优势拔得竞赛的头筹。 图 5 :三个臭皮匠顶个诸葛亮 如果分析以上这些群体智能学习,不难发现,这些群体算法要么是针对某个目标的优化来考虑的,要么是针对某个目标的预测来实施的。研究非人智能体的群体算法时,科学家们着重观察的现象似乎主要与其群体的生存密切相关。反观人类,在成了地球主宰后,早已不再仅仅满足于生存需求,还衍生了生理、安全、社交、尊重和自我实现共五个层次的需求,被称为马斯洛需求层次理论。而这些高层次的需求在人工智能的学习中却很少被涉及。 图 6 :马斯洛需求层次理论 � � 如果要研究人工智能,必然要考虑人工智能体形成社会和群体、而非个体时的情况。那我们不妨看看,人类智能体在生存需求以上,群体生活时会存在哪些错觉。如果人工智能体希望模拟人的群体行为,也许就能从这些错觉中得到一些经验的借鉴。 四、群体错觉 一旦有了社会,生存需求就退居二线了。此时的群体不再满足于以“预测”为终极目标的,对知识的渴求会逐渐占上风,尤其是信息量大的知识。比如“太阳从东边升起”这种自然规则,按概率来说,就是百分之百能成立的。然而他却是没有知识含量的。因为 按信息论之父香农的定义,信息是事件出现概率的倒数的负对数比。简单来说,百分之百出现的,信息等于 0 。对习惯快思维的人类来说,这类信息会和路面的细节一样被直接忽略。如果事件出现的概率很小时,反而蕴含了大的信息量。比如马路上突然有人打架,于是路人们会一拥而上,观战拿手机发朋友圈。这是信息论下 “ 对知识的渴求 ” 表现出来的群体本能反应。 可是假如不是打架,而是刑事事件时,旁观者愿意主动施救的反而可能变少,尤其是在人来人往的场所。这是因为当在场的人太多时,帮助的责任就被大家平分,平分到连旁观者都意识不到,以至于给人造成了“集体冷漠”的感觉。这不是信息量在起作用,而是责任分散效应的群体错觉。我国的“三个和尚”故事中讲的“一个和尚挑水喝 , 两个和尚抬水喝 , 三个和尚没水喝”,就是责任分散效应的体现。 也有人期望通过群体的力量获得集成学习般的性能提升。然而,“物以类聚、人以群分”,即使现代社会也是如此,如朋友圈中的五花八门的群,常是因某一方面的共性而形成的群体。在这种群体时,执异见的更容易被孤立而非接纳。不仅群体有排斥现象,甚至有时还会有智商、情商的拉低效应。比如如果参加传销团体,人会不由自主失去自我意识,导致本应正常的智商无法表现,变成智力水平低下的生物。这些现象是群体的拉平错觉 。 群体智能在少数服从多数问题上也存在误区。因为群体经常表现的是普通品质,并不能胜任需要很高智力才能完成的工作 ,但却可能因这一规则而扼杀智慧。比如在早期科学还处在启蒙阶段时,哥白尼因坚持日心说而被教会烧死,而伽利略为了保全性命不得不牺牲掉自己对这一观点坚持。这些都表明多数投票策略可能存在的风险,因为真理并一定都掌握在多数人手里的。这是统计中在缺乏先验信息时,采用群体平均权重引发的错觉。 这也反映了另一个现象,在群体社会中,成群并非对所有人都是最优的,因为“牛羊才会成群,狮虎只会独行”。 毕淑敏说过“孤独是一种兽性”。它反映了独来独往的自信和勇猛。适当享受个体的孤独,还能更有效的管理时间和自由的探索。 群体错觉还有不少,它间接或直接地导致了社会的多样性和层次性。这些是我们在研究人工智能群体行为时需要注意的,也是人工智能体未来形成人工智能社会时需要考虑的。 到此为止,我已经从诸多层面介绍了人类的错觉。我们不禁要问,人类如此爱犯错,为什么还能主宰世界呢?机器智能会替代人类成为主宰吗? 参考文献: 1 、古斯塔夫·勒庞 著,冯克利 译 . 乌合之众:大众心理研究 . 中央编译出版社, 2005. 2 、 Kennedy, J., Eberhart, R. Particle swarm optimization. In: Proceedings of the IEEE International Conference on Neural Networks. 4: 1942–1948, 1995. 3 、 Dorigo, M., Maniezzo, V., Colorni A. Ant system: optimization by a colony of cooperating agents. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 6(1), pp: 29-41, 1996. 4 、 Kirkpatrick, S., Gelatt Jr, C. D., Vecchi, M. P. Optimization by Simulated Annealing. Science. 220 (4598): 671–680, 1983. 5 、 https://en.wikipedia.org/wiki/Genetic_algorithm 6 、 Brockmann, D., Sokolov, IM. Lévy flights in external force fields: from models to equations. Chemical Physics 284 (1-2), 409-421, 2002. 7 、 Zhou Z.-H. Ensemble Methods: Foundations and Algorithms. CRC Press. Jun 6, 2012. � 张军平 2018 年 12 月 7 日 � 延伸阅读: 22. 爱犯错的智能体(十九) – 群体智能与错觉 21 . 爱犯错的智能体(十八):情感与回忆错觉 20. 爱犯错的智能体(十七):灵光一闪与认知错觉 19. 爱犯错的智能体 (十六):庄周梦蝶与梦境学习 18. 爱犯错的智能体 --- 语言篇:可塑与多义 17. 爱犯错的智能体 – 体感篇:我思故我在? 16. 爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2800余次,ESI高被引一篇,H指数27.
9739 次阅读|6 个评论
爱犯错的智能体(十八):情感与回忆错觉
heruspex 2018-11-28 07:13
两岁的路比对小区里的雌比熊很是着迷。为了能听到她的声音,他会长时间地后腿直立着、前脚扶着窗檐傻傻地站很久。后来,那主人把雌比熊送走了。他才接受事实,慢慢淡忘了。过了许久,有天遛好回家路上,碰巧碰到雌比熊的主人,路比仰头闻了下,似乎想起了什么,居然跟着那主人到了他家楼下,隔着门在那站了许久。我想,路比大概是回忆起他那触不到的爱情了吧。 因为一时心软,换来了时时的照顾和遛遛的它。既养之,就爱之,我也顺便观察和思考它的发育和情感表现。走路,路比和我们一样,都是潜意识地直觉反应,不会去关注路面的细节。而作为人类驯化了数千年的动物,狗可能也是最能理解和分享人类情感的动物 。但狗的感情流露更加直接、毫不掩饰。两相比较,让我有些明白,人类的基本情感表达、快思维和非人智能体的区别并没有那么明显,很多方面甚至是相似的。那么,情感是什么呢?它有多重要呢? 一、情感 情感是人或智能体与机器最明显的区别之一。古文中将情感做了细分,认为人有七情六欲。七情的定义,儒家、佛教、医家略有不同。《礼记·礼运》中道:“何谓人情?喜、怒、哀、惧、爱、恶、欲,七者弗学而能。”而我们常说的七情指喜、怒、哀、乐、惧、爱、恶。六欲的记载最早见于《吕氏春秋 . 贵生》:“所谓全生者,六欲皆得其宜者。”后人将其对应到人的眼、耳、鼻、舌、身、意的生理需求或愿望,即见欲(视觉)、听欲(听觉)、香欲(嗅觉)、味欲(味觉)、触欲(触觉)、意欲。 不管是哪种情感,人类和非人智能体最基本的情感,都是源于直觉,源自这种快思维方式的表达。渴和饥饿时,新儿生会自然地通过大喊大叫大哭来表达;而动物的愤怒和害怕则是为了防御和保护 。这些是求生的本能,不需要事先学习任何复杂的数学运算和人情世故。甚至于爱,从其本原的意义来看,也是一种本能,是为了能更好的向后代传递基因而形成的、促进智能体相互做优化选择的本能。 随着人的成长,通过父母、家人、学校的教育和社会的融入,情感的表达逐渐从基本的本能和生存需求向更高层次发展,并糅合到生活的各个毛孔。人类学会了记载、传播情感,能把情感写进文字、唱入歌声、播到音乐中。人类也能通过这些来分享、体会他人的情感。人类还学会了控制情感,把情商 ( 控制情感、情绪的能力 ) 锤炼成成功的三要素之一,与智商、时商 ( 管理时间的能力 ) 相提并论。古人在情绪控制上也给出了不少善意的建议,如清代画家郑板桥的“难得糊涂”和北宋文学家范仲淹在《岳阳楼记》中的“不以物喜,不以物悲”。 但情感、情绪如何在大脑中表现的呢?文献上众说纷纭,马文明斯基在其书《情感机》中,认为这种看上去简单的情感表达可能是由复杂的多个小资源来组成的,不同的情绪由不同的小资源 (resources) 组成。他认为简单是表像,复杂是隐事实 。这有些像苹果手机的设计理念,简单的操作留给用户,而背后的复杂则留给工程师们。也许大脑经过漫长的演化后最终也以这一形式来表达了它的功能,包括情感、情绪。 那么,这种复杂是如何在大脑中形成其结构的呢?明斯基给了些线索,即结构是层次的,首先有直觉的情感,然后才有高层、抽象的情感 。如果我们将该线索和之前谈到过的由粗到细的结构、以及快思维和慢思维方式结合起来,再审视下情绪的控制方式, 似乎能找到一些端倪。 虽然人类已经学会用社会规则来约束和控制自己,从而使得真实的情感不容易被表露出来,但有时会失控。比如家长看到小朋友作业做得慢,有些父母就很容易把原本象拳头一样收拢的情绪打开来、暴露出自己的暴躁脾气。从某种意义来看,这就是快思维接管慢思维、本能或直觉压倒自控能力的后果。 不仅从脾气控制上能看到情绪的变化,人类还有可能从肌肉的细微变化分析真实情感的表达。有研究曾发现,某个有自杀倾向的人在视频前一直表现得很开心。然而,心理学家通过回放视频,发现其中有两三帧该患者有极度痛苦的表情。心理学家将这种短暂易逝的表情称为微表情。因为 1 秒可以录制 30 帧,所以 2-3 帧持续时间的状态很难通过主动控制情绪,或慢思维控制来获得,而更可能是潜意识下真实情绪的表现。结果,有效识别微表情也就成为检测人的真实表情或情绪的可行策略之一 。 反过来再看下,现有人工智能框架下的情感分析模型,似乎更关注预测能力,不管是用深度学习还是经典的机器学习方法。即使是分析自然语言中的情感,也很少考虑情感可能具有的结构性。只关注预测的弊端在于,我们实际上并没有真正理解情感。结果,基于这类模型获得的情感很难让人体会到真正的情感。举个例子,日本某机构曾经研制过一个可回答问题的服务机器人,然后将其放在幼儿园中。一开始,小朋友们都非常开心,愿意跟机器人一起玩,询问它各种问题。但过了几天后,服务机器人就被闲置在一边了。因为小朋友们很快就发现了,这只是一台机器,而不是能产生有互动性、可以分享情感的智能体。显然,在情感的生成和构造机理还没完全弄明白之前,我们现有技术能做出的机器人,还远不如宠物狗更能让人产生情感上的依赖和责任。 二、人与机器的回忆 除了以上所述情感,还有一种对人类和非人智能体至关重要的,那就是回忆。因为每天都在接触新事物,人类需要定期清理大脑中的硬盘,留出空间学习新知识。可是并非所有的内容都会被格式化,因为我们需要有东西回忆来维系情感。在多数情况下,人类会构建用于回忆的文档,保留每条信息中有意义的、关键的,去掉可忽略的细节。回忆的内容可以是一张人脸、一段场景,诸如此类。然而,回忆具体存在哪里,就我所知,仍不是很清楚,也许真是在记忆的最深处。 但它能帮我们回想起过去。比如有些人偶尔可能在梦中回想起那触不到的爱。有些人看到一个许久未曾谋面的人或听到某段很久以前曾听过的音乐时,会感觉很熟悉,有种“似曾相识燕归来”的感觉,然后会突然把人的各个细节或音乐回想起来。有的时候甚至会令人难以置信,走在路上,突然就哼起一段已经三十年未曾唱过的歌曲。可是,在大脑容量有限的情况下,人类智能体为什么要存储这种如果不想起、也许一辈子都用不着的东西呢? 再比较看看现有的人工智能技术是如何处理记忆的。机器常把要回忆的知识视为一个时序序列,早期常采用隐马尔可夫模型来模拟对时序信息的记忆。简单来说,就是模型中会有好几个与时间相关的状态,其中当前时刻的状态依赖于前一个或多个时刻的状态。也有采用在线学习的方法来形成记忆。而近年来的深度学习,针对时序数据的处理,主要采用 RNN( 循环神经网络 ) 、 LSTM( 长短时记忆网络 ) 和 Conv-LSTM( 卷积 - 长短时记忆网络 ) 等。这些模型的目的都是为了能尽可能根据新的数据分布的变化,来有效地调整模型,来改进对新数据的预测能力。从统计上来看,即我们不太希望数据与数据内在的分布总是被假定成一致的,总是假定每个数据是独立从相同的内在分布中采样得到的,即独立同分布性假设。而是希望数据的采集更贴近实际情况,即数据分布会随时间而改变。因此,模型在建构过程中不可避免地会引入遗忘机制。 可是,现有机器遗忘内容的方法与人类及其他非人智能体的处理有本质区别。因为机器的“遗忘”是为了适应新数据的分布,而不会考虑保留的信息对回忆、情感的意义。 而人类保留信息的目标并非完全是为了适应新的数据分布,而是用这些片段来帮助自己回顾个人的人生、体会曾经的酸甜苦辣。这些都造成了人与机器的本质性区别,即机器缺乏对真实情感的需求。所以,机器遗忘机制在方法论上隐含的假设应该是: 机器不需要回忆,他只需要按人类既定的指标要求,实现精准预测即可 。 三、回忆错觉 人的记忆还有个很独特但也有趣的现象,即回忆错觉。虽然现在有很多多媒体如照片、视频可以帮助人类形成了连续性的回忆,但人对以往的记忆存在不连续性,且常发生在 2-3 岁以前。这与大脑在发育过程中,由粗到细的认知结构产生了较显著的变化有关,导致原有的记忆无法通过后来形成的认知模型还原或恢复。 这是认知模型变化导致的回忆缺失 。 另外,人在存储回忆信息时具有主观性,有时会不自觉地选择值得记忆的去记忆,而舍弃那些不愿意再想起的,因此,会不可避免地形成选择性回忆或 主观回忆缺失 。比如我因为初高中的成绩惨不忍睹,对那段时间能回忆起来的东西就很少,除了记得父母不太愿参加家长座谈会以外。 尽管有回忆,人的回忆也并非百分百可靠的,可能还会人为的给自己的回忆贴上莫须有的东西。最近网上有个贴子似乎能佐证这一点,就是乔羽填词、韦唯原唱、宋祖英唱红, 1991 年为第四届中国少数民族运动会创作的会歌《爱我中华 》。对多数人来说,歌词应该是这样的: 五十六个民族五十六支花 五十六族兄弟姐妹是一家 五十六种语言汇成一句话 爱我中华爱我中华爱我中华 嘿罗嘿罗嘿罗嘿罗嘿罗嘿罗 可是,歌词第一句实际是这样的:“五十六个星座五十六支花”。但是,几乎很少有人会记得是“星座”而不是“民族”,因为数字“五十六”的原因,人的记忆会非常自然地把它与“民族”挂钩,而非讨论了半天也没明白为什么是作者选择的“星座”。这也是回忆错觉的一种,称为曼德拉效应(英语: Mandela Effect ),是指很多人都发觉对同一事物的记忆与事实有出入的现象。一种可能的解释是人在删除信息后,重建的时候更容易将记忆的与最紧密相关但不一定正确的内容联系,并还原完整的信息。 更有甚者,还有可能把自己的回忆强行建立在不真实的记忆上。正如哲学家尼采所说,“慌言说了一千遍也就成了真理”。莱昂纳多主演的烧脑电脑《禁闭岛》中就塑造了具有这种回忆的角色:精神分裂的莱蒂斯,为了逃避现实中的痛苦经历,在精神中塑造了另一个自己,并孕育了一个完整的故事和“回忆”。 图1: 《禁闭岛》剧照 图2 :左:美国前 总统 罗纳德 · 威 尔逊 · 里根;右:“光纤之父”高 锟 除了这些,还有一种令人揪心的、“回忆低级格式化”导致的回忆障碍,那就是 Alzheimer 症 ( 阿尔茨海默病或老年痴呆症 ) 。 它的特点是,人会一点一点把自己的回忆抹掉,如美国前总统里根后来记不得自己曾当过总统, “光纤之父”的高锟在 2009 年获得诺贝尔物理学奖时已经不记得自己在光纤的成就,还有更多患者会在患病后记不起自己的家人。据估计,全球有超过 3500 万人患有老年痴呆症,每 7 秒就新增一人患上此病,而中国则拥有世界上最多的老年痴呆症患者。有研究表明,这可能是基因长期演化形成的一种“自毁”机制。只是以前在正常的自然环境生存时,人类的寿命还活不到需要启动这种“自毁”机制,因此患病数量远少于现在。还有研究发现,在痴呆症患者的大脑里有“老年斑”现象 ( 即 纤维状类淀粉蛋白质斑块沉积,英文名 Senile Plaque ) ,并以此来推测老年痴呆症发生的风险。遗憾地是,到目前为止,人类也没完全明白它的机理,不少相关的研究仍是空白。 图: 左:正常神经元;右:大脑中的老年斑或纤维状类淀粉蛋白质斑块沉积(网图) 不管是否存在回忆错觉,生理的、心理的,回忆都是人类维系情感的重要组成部分,而情感又是人和非人智能体区别于机器的重要标志。 要设计一个真正逼近智能体的人工智能体,也许不应只依赖于大数据、 GPU 的算力,毕竟我们对智能体的了解还太浅太少。哪怕是一只从没学习过数学、两岁小比熊具备的情感,现有的服务机器人尽管考虑了各种复杂的数学模型,仍然还只能望及项背。这里面显然不纯粹是计算能力的问题,更关键的是对情感甚至智能形成的基本原理缺乏颠覆性的思路。 我不怀疑现有的人工智能模型可以以足够高的精度来预测智能体的情感状态,但我比较怀疑这些模型是否能真正明白什么是情感?什么是回忆?如果在建模时,缺乏从直觉情感到深层次情感的递进建模过程,缺乏形成智能体个体与众不同的多样性,那么还原出来的情感也只能是机器的机械表现。 也许,我们可以考虑重拾“观察”这个古朴的研究方法,去深入了解情感的发育,比如儿童的情感发育。考虑到人类儿童期过于漫长,也可以观察下最能理解人类情感、成熟又比较快的宏物狗的情感、常识发育。 到目前为止,本系列讨论了个体在视听觉、语言、认知、情感等方面存在的多种多样的错觉。但是,要促进智能体的相互发展,必然要组成群体、构成社会。那么,智能体形成的群体有没有错觉呢? 参考文献: 1 、尤瓦尔·赫拉利 . 人类简史 . 中信出版社, 2014. 2 、 Marvin Minsky. The Emotion Machine: Commonsense Thinking, Artificial Intelligence, and the Future of the Human Mind. Simon Schuster, 2006. 3 、徐峰,张军平 . 人脸微表情识别综述 . 自动化学报 , vol. 43, no. 3, pp. 333-348, 2017. 张军平 2018 年 11 月 28 日 延伸阅读 20. 爱犯错的智能体(十七):灵光一闪与认知错觉 19. 爱犯错的智能体 (十六):庄周梦蝶与梦境学习 18. 爱犯错的智能体 --- 语言篇:可塑与多义 17. 爱犯错的智能体 – 体感篇:我思故我在? 16. 爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2800余次,ESI高被引一篇,H指数27.
7371 次阅读|0 个评论
双语文本知识库质量决定机器翻译质量
geneculture 2018-11-22 11:17
机器学习,尤其是双语对照文本的机器学习为新一代的机器翻译提供了大前提,于是算法即批处理软件的核心技术方法就成了小前提,结论则可在人机交互平台即实际应用环境里面来获得人机互助合作的评估(这是我们可看到的近期未来)。-邹晓辉 附录: 【当向神经机器翻译系统输入新的待译原文时,系统每次先读取一个原文单词,然后开始输出一个译文单词,再读取下一个原文单词,并输出下一个译文单词,直到整个原文句子全部读取完成。通过这样的方式,神经机器翻译系统可以处理整句话,而统计机器翻译的N元模型则无法如此处理。与统计机器翻译系统相比,神经机器翻译系统可以更好地处理单词的内部结构和单词的形成规律、能更好地选择所用词汇、能更好地解决词序问题(包括词语之间不连续的依存关系),只不过训练神经机器翻译系统需要花费更长时间,耗费更多计算资源。 对于大公司来说,时间和计算资源都不是问题。2016年9月底,谷歌公司宣布谷歌翻译移动端和网页端的中英机器翻译服务全部由谷歌神经机器翻译系统提供支持。即便如此,神经机器翻译还是存在很多问题,比如:漏词、错译(尤其是生僻字词)、忽略上下文语境孤立翻译某句话等。】 阅读原汁原味的原文: https://www.ciol.org.uk/translator-and-machine-dorothy-kenny
个人分类: 双语信息处理|1465 次阅读|0 个评论
爱犯错的智能体(十七):灵光一闪与认知错觉
热度 3 heruspex 2018-11-20 07:35
公元前 245 年,古希腊叙拉古城的赫农王命令工匠制作一顶纯金的王冠。工匠完工后,国王感觉不放心,对着重量没变的王冠左看看,右看看,总怀疑工匠把里面的金子换成其他材料了。可是,没证据又不好明说。跟大臣们说起此事,他们也只能面面相觑。于是,国王按一大臣的建议,请来了当时最有名的数学家阿基米德帮助鉴定。阿基米德看了半天,也没弄明白要怎么测。又冥思苦想了多日,还是没看出一丝端倪,便想泡个澡舒缓下心情。跨进装满水的浴盆后,他发现水的涨落似乎和他的站起坐下有关,而且坐下时还能感受到水向上对身体的托力,身体也随之变轻了。他恍然大悟,原来可以用测量固体在水中排水量的办法,来检测物体的体积。那也就能根据王冠的密度与体积之间的关系,来推测王冠是否造假了。 一瞬间他豁然开朗,跳出了澡盆,连衣服都忘记 穿 了,一路大声喊着 ” 尤里卡!尤里卡” (Eureka ,希腊语: εύρηκα ,意思是我知道了 ) 。阿基米德由此破解了王冠称重的难题,发现了工匠欺骗了国王。更重要的是,他因此发现了浮力定律,即物体在液体中得到的浮力,等于物体排出液体的重量。 图:阿基米德与浮力定律 科学发现靠什么呢?有不少重大的发现靠的是灵光一闪,如阿基米德洗澡时想到的浮力定律或阿基米德定律,俄国化学家门捷列夫玩扑克牌时发现的元素周期表。这种感觉可以用宋朝夏元鼎《绝句》中的“踏破铁鞋无觅处,得来全不费工夫”来形容。我国管灵光一闪叫“顿悟”,西方则把它称之为 Eureka effect( 尤里卡效应,或称为 Aha Moment 和 Eureka Moment) 。 与人皆有之的、来自潜意识自然反映的直觉不同,顿悟虽然也是潜意识的反映,但相对神秘。目前在学术界,关于顿悟的发生仍然争论不休。一是其在脑区发生的精确位置未知,一是在何种环境下能发生也未知。所以,阿基米德只好泡澡来启发思考,而量子电动力学的创始人之一费恩曼则爱在泡酒吧的同时顺便做研究。 从文献的总结来看,顿悟这种思维方式包括两个部分:首先是在某一问题上已经经过进行了长时间的思考,但陷入了困境。尽管尝试了能想到的各种可能性,仍不得其门而入。突然某一天在某地,令人意想不到的就有了灵感,并快速找到了问题的答案。而且,该灵感不必要依赖于原来已经僵化的解题逻辑或结构,甚至需要“跳出三界外”,才有可能获得。 一般认为,它有四个特点: 1 )它是突然出现的; 2 )对该问题的求解是流畅、平滑的; 3 )通常有正面效应; 4 )经历顿悟的人相信它的解是真实和正确的。这四个特点往往需要组合在一起才能见效,如果分开了就很难获得灵感或顿悟 。 尽管关于灵感仍无合理的解释,但可以推测它的形成机制不是突然凭空在大脑中加速形成的,应该与人类已经学习好的某些结构具有关联性。那么,它和我们哪种思维方式比较相似呢?如果能找到其中的关联,也许我们就能设计具有类似创造能力的人工智能体。 我们不妨了解下人类认知中普遍采用的两种思维方式:快思维和慢思维,以及快思维中存在的直觉统计错觉 。 一、认知错觉 人类经历了长时间的演化,发明了语言、制造了工具、 建立了几尽完备的数学理论体系,并通过其他智能体不可能具备的、长时间的学习来帮助提高知识水平。然而, 很多高阶能力并不见得会在日常生活中起主导作用。比如,我们虽然会在大学学习微积分,但绝大多数情况下,我们只需要知道用电子表格填下数字就行了。甚至在需要缜密计算时,有时候人类还是会凭自己的经验或直觉来优先进行判断。 举个极端情况的例子, 为什么在股市中专家的建议经常不怎么管用呢?实际上,多数专家在做分析时,都是按《经济学原理》来指导和建议的,目的是对投资组合进行利益最大化。总不能说经过了千锤百炼的经济学原理有严重不足吧,可为什么股民很多还是很容易被割韭菜呢?因为实际上偏好理性决策或慢思维的人并不多,尤其在股市瞬息万变的时候,能做深层次思考、计算的机会也少,股民往往会凭自己的直觉或快思维来做快速决策。可是,这些决策很多时候是远离了专家建议的最优决策。 美国普林斯顿大学的心理学教授卡纳曼和其前同事特沃斯基对人的两种思维方式进行了深入研究。他们从 直觉统计学 (Intuitive Statistics) 的角度出发,发现了一系列有趣的现象,于 1974 年在 Science 发表了一篇社会科学领域引用最高的关于不确定性判断的论文 ,后进一步形成了 展望理论 (Prospect Theory ,也有称前景理论 ) ,并因为这些成果卡纳曼于 2002 年获得诺贝尔经济学奖 ( 注:特沃斯基过早去世,因而没能获奖 ) 。尽管获得的是经济学奖,但其理论体系详细地是阐述了智能体在认知上存在的认识误区。 他们发现人在做很多复杂任务判断时,并不会用缜密的思维去计算每个事件的概率,反而会借助于少量的启发式技巧来做更为简单、快速的判断。这些判断策略在绝大多数情况下是有效的,不然人很快就会在自然进化中被淘汰。但是,这种判断策略有时会导致严重和系统性的错误,而人类却不见得会意识到,即使是受过训练的专家也是如此。 比如我们在判定物理量如距离和大小的,常通过启发式的规则来做主观的概率评估。看得越清楚的物品通常会被认为距离更近,反之更远。虽然这种规则在一定情况下是有效的,但也可能会带来系统性误差。如在“立霾”后,就很容易把距离估得远一些,以致于有可能需要依赖听觉来辅助识路。而类似的系统性偏差在概率意义的直观、启发式判断中广泛存在着。 根据卡纳曼和特沃斯基的理论,人类在快思维中,会有三种评估概率的启发式策略: 1 ) 代表性 (representativeness) ,常用于“当人被询问要判断一个目标或事件 A 属于类别或过程 B 的概率”的情形。 2 )实例或场景的 可用性 (Availability) ,常用于“当人被询问要评估一个类的频率或者一个特定发展的可能性”时。 3) 从锚点的调整 (Adjustment from an anchor) ,常用于“当一个相关值可用时的数值预测”。这三种启发式策略高度的经济,一般也有效,但它们容易产生 系统偏差 和 预测偏差 。具体来说: 1 )代表性 (representativeness) : 当测试者被给予不同的概率比例暗示时,比如做问卷调查时,告诉测试者,某人是图书馆员的概率是 60% ,农夫为 40% 。在无其它信息时,测试者会使用这些概率来判定一个人的职业;但在缺乏概率信息时,如果引入某段毫无价值但却有代表性的描述时,比如告知平时常见的图书馆员的衣着打扮,测试者就很容易被这个暗示影响,导致不正确的结论。这是由于人对于 结果的先验概率的不敏感性 形成的。 另外,由于人们对事件发生的可能性进行评估时往往依赖于直觉,因此很少考虑事件的样本数量影响。如小样本情况下产生的波动性要明显大于大样本。但人直觉上却很容易认为两者的波动性是一致的。这是人对于 样本规模存在不敏感性 引起的。 对于机会,人类也存在误解,常以为远离随机性的事件不是太可信。事实上局部有规律的行为并不会否定全局随机性,但它却会误导人们形成不合逻辑的推理。这种误解被称为 赌徒谬误 (gambler’s fallacy) ,它让人们以为一系列事件的结果会隐含某种自相关的关系。比如 A 事件的结果影响了 B 事件,就推测 B 是依赖于 A 的。比如最近天气转晴,连续几天大太阳就会让人高概率担心周末会下大雨。而赌徒则认为如果一直手气不好时,则会以为再过几把就能翻盘回本甚至赚钱。 不仅如此,在做预测时,人类更多会偏好用自己选择的材料做判断,而非真正需要预测的结果,即 对可预测性不敏感 。比如在招聘时面试官容易受面试表现影响,即使面试者的材料准备得更充实可信,但面试官还是会过分相信自己的判断, 形成验证性错觉 (Illusory of Validity) 。而这种错觉最终会被 均值回归 (Regression toward the mean) 检验并现形。其原因在于,人的表现容易受运气成份影响,导致某个时刻的发挥异常精彩或失常。但时间一长,就会回到正常的表现上去。这也能解释为什么现在上海和一些地方的中考要考察初二开始的月考和期中期末成绩,本质上是为了避免“一锤子买卖”引起的验证性错觉。 2 )可用性 (Availability) : 我们评估事件的概率或某类别发生的频率时,会根据曾经经历过或知道的事情和例子来联想。比如我们会根据在新闻中报道的飞机失事,来判断飞机失事率的高低,而较少考虑飞机与其他交通工具的实际失事比例。又比如,我们会根据周边的同龄人或熟人有心脏病出意外的情况,来评估自己可能得心脏病的风险。这种判断的启发式称为 可用性 。然而,可用性往往受频率或概率以外的因素影响,如搜索集的有效性、可想象性 (imaginability) 、错觉相关性 (illusory correlation) 和示例的可遍历性 (retrievability) ,导致产生 预测偏差 。 关于 搜索集有效性 ,卡纳曼和特沃斯基曾做过一个实验。他们询问测试者英文字母 r 或 k 在第 1 个字母还是第 3 个字母出现的次数更多。多数人回答是前者,因为直觉上更容易想到第 1 个字母为 r 或 k 开始的单词,而要想到第 3 个出现的单词时,则需要费点脑筋。而实际上作为辅音, r 或 k 会更多出现在第 3 个字母上 。 在 可想象性 方面 , 如果评估示例不在记忆中的类别的概率,此时人则需要按某个规则来估计。这种情况下,人会生成多个示例,然后评估其可能性。比如,我们在做商业计划时,会想象可能碰到的各种风险以评估其失败的概率。由于想象的信息并非真实情况,所以会引起偏差。 人也在产生 错觉相关性, 如对两件共同发生的事情。卡纳曼和特沃斯基曾让几个假装的精神病人画画,然后让测试者根据诊断结果判断他们是否有偏执狂或疑心病,以及判断画的画有没有独特的视角。从测试者判断结果来看,测试者大概率会形成有相关性的判断,如认为疑心病与独特视角之间存在相关性。这称为 错觉相关性 。其原因是因为之前形成的成对相关性的印象,会导致了随后产生预测偏差。 3 )调整和锚定效应 (Anchoring Effect) : 当我们在做决策时,会将某些特定的数值或状态作为起始点,而后的调整会因为此起始点而受限,从而影响到最终的决策方案。其原因在于我们给了最初的信息或起始点,比如给予那些明显的、难忘的证据过多的权重和重视,就容易产生歪曲的认识。比如我们常说的第一印象就是一种锚定效应。《唐逸史》中所说的唐明皇时期,钟馗为终南山人(镇宅赐福圣君)因为相貌丑陋应举不中,羞愧之下触殿阶而死。这是为第一印象所累。正面的锚定效应也有,比如光环效应,一个帅哥和自信的讲者,总能让人听报告时觉得物超所值,当然也更容易被报告忽悠。这还是为第一印象形成的锚定效应所累。 为了证实锚定效应, 1974 年卡纳曼和特沃斯基曾做了一个有名的实验。他们要求测试者估计非洲国家在联合国的席位百分比。首先,测试者需要旋转一个有 0-100 数字的罗盘,根据停下来的数字做初始决定。测试者将被告知所选择的数字比实际值大或小,然后测试者可以向上或向下调整估计值。结果,他们发现这些随机选择的数字对最终结果有明显影响。初始值为 10 和 65 的两个小组,最终调整的平均值为 25 和 45 。由此可见,初始状态设定后,确实会引起锚定效应,限制人解决问题的范围。 因此,深入理解这些启发式规则,有助于改进在不确定情形时人的决策和判断能力。也需要注意,这些不足并不是否定我们人类的直觉能力。正如大部分时间我们都是健康的,但偶尔也会生病。 直觉也是如此,并非一直都是对的。即使统计学家也不见得会是一个好的直觉统计学家。近年的研究表明,除了这些启发式规则外,技能也有助于形成直觉判断和选择,如专家更依赖于其长期的训练获得的经验,而会相对少的依赖启发式规则。有的时候,技能和启发式规则会交替产生影响,促进人们形成快思维方式 。 尽管在很多情况下,直觉都是由个人的偏好如喜欢不喜欢、而不是精细的思考或推理来驱动。但当直觉思维得不到解决方案时,人类会自然转向一种更缜密、需要点努力的慢思维方式,或称之为理性思维阶段。此时,通过漫长学习期获得的知识才会更多地派上用场。 总之,在实际生活中,人类更习惯于快思维,只在困难问题才考虑慢思维,两者经常在无缝地交替使用着,但很少会思考其中的差异和潜在的风险。 二、认知错觉与顿悟 既然人类智能体普遍具有快和慢两种思维方式,人类还有独特的顿悟能力。而且顿悟的最终迸发似乎又是一种接近快思维的方式。那么,我们现有的人工智能模型有没可能复制这些机制呢? 如果只考虑预测性能,人工智能模型的“慢”的思维方式在某些领域确实已经占了上风。 2017 年以来各大人工智能顶会上的论文投稿数量巨增,人脸识别、图像检索领域的识别率已优于人类的能力,这些都可以佐证人工智能在利用复杂模型进行预测的方面有了明显的突破。但是,“快”的思维方式这块则还有明显的差距。 其原因一是缺乏人类学习的可塑性。结果,人工智能模型只能沿着固化的模型结构来完成指定任务。二是缺乏对“不同结构、不同模态的网络之间的联系”的学习。三是未考虑认知错觉或直觉统计学的可借鉴性。 如果以现有的深度学习模型作比拟,也许可以将认知错觉当成一种浅层思维方式。即在深度模型被充分训练和拟合后,在做快速判断时,并不一定需要经过深层次的结构来实现判断。而是像现在深度模型一样,在训练好的浅层区有一个直接联到输出端的跳连接 (skip connect) 。换个角度来说,如果假定人类构建的模型具有由粗到细的结构,当大脑中枢认为在比如 80% 的识别率也能保证其正常生存时,就会直接从相对粗糙的浅层位置跳连接到最终的结论输出端,以促进快思维的形成。 另外,要实现顿悟式的学习,也许可以考虑利用不同结构间的相似性。比如 AlphaGo 下围棋时,就不是完全依赖常规的规则判断,而是创新性地借助了图像处理和计算机视觉的办法来帮助分析围棋棋局的胜负。这从某种意义来看,这是一种 跨模态的结构学习 。那么,一个自然的问题是,这种结构迥然不同、却面向相同任务的模型之间有没有可能通过自动学习来获得呢?如果可能,也许人工智能体实现顿悟就有希望了。 当然,我们也不能忽视梦可能对顿悟形成的作用。数学家 Henri Poincare 庞加莱曾说过“作为一种无意识的思考方式,它却能帮助形成突破困境的结果。” 除了顿悟和认知错觉,智能体还有什么感觉也可能以浅层思维或快思维模式为主呢? 参考文献: 1. https://en.wikipedia.org/wiki/Eureka_effect 2. Kahneman, Daniel. Thinking, Fast and Slow. Farrar, Straus and Giroux, 2011 3 . Amos Tversky, Daniel Kahneman. Judgment under Uncertainty: Heuristics and Biases. Science, 185(4157):1124-1131, 1974. 4 . Daniel Kahneman; Amos Tversky. Prospect Theory: An Analysis of Decision under Risk Econometrica, Vol. 47, No. 2. (Mar., 1979), pp. 263-292 张军平 2018 年 11 月 20 日 延伸阅读: 19. 爱犯错的智能体 (十六):庄周梦蝶与梦境学习 18. 爱犯错的智能体 --- 语言篇:可塑与多义 17. 爱犯错的智能体 – 体感篇:我思故我在? 16. 爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! � 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2800余次,ESI高被引一篇,H指数27.
9435 次阅读|7 个评论
人工智能网络资源集合
quantumchina 2018-11-17 20:50
人工智能网络资源集合 1 ,Python https://www.python.org/ PyCharm \0 http://www.jetbrains.com/pycharm/ \0Anaconda https://www.anaconda.com/ PyTorch \0 https://pytorch.org/ \0 2 ,R https://www.r-project.org/ 3 ,Julia https://julialang.org/ 4 ,Stan http://mc-stan.org/
个人分类: 软件程序|1916 次阅读|0 个评论
爱犯错的智能体 --- 语言篇:可塑与多义
热度 2 heruspex 2018-11-7 07:46
人之初,性本善;性相近,习相远。苟不教,性乃迁;教之道,贵以专。昔孟母,择邻处;子不学,断机杼。窦燕山,有义方;教五子,名俱扬。养不教,父之过;教不严,师之惰。 子不学,非所宜;幼不学,老何为? 玉不琢,不成器;人不学,不知义。为人子,方少时;亲师友,习礼仪。 --- 《三字经》 作为国学启蒙书籍之一,《三字经》在知识的简洁表达上做到了极致。聊聊数笔,人的性格养成、子女教育、礼义廉耻就言简意赅的表达了。在让人知道学区房重要性的同时,也反映了另一层事实,后天的学习可以帮助近乎“白纸”、最初相近的人类形成了多样性的“远”。 从人工智能的角度来看,这种表述方式很符合 1978 年 Jorma Rissanen 提出的最小描述长度原则 (Minimum Description Length ,常简称为 MDL) 。直观来说,就是在给定表达集合的前提下,产生最大压缩效果而又不丢失信息或知识的表达是最好的。虽然背后的原因可能是毛笔字太难写,能少写就尽量少写。反观现在流行的说唱,似乎可以称为最少时间描述,因为需要在最少的时间完成最大的信息量传递。 虽然《三字经》强调学习的重要性,但关于语言是如何习得的,却没有涉及。 一、语言学习的次序与可塑性 对于新儿生来说,获得语言能力的时间比获得视听觉能力的时间要晚不少。在最初的 2-3 个月期间,新生儿最多会说些简单的象声词,会哭会笑。到七坐八爬的时间段,开始能理解大人的简单对话,尤其是当内容与新生儿可以接触到的物体相关时。但要学会说话,还得耐心地等到 1 岁半左右。 2 岁以后,才能发音或清晰或含糊的跟成人交流了。 由此可见,在人类的智能发育中,尽管从出生开始就沉浸在相对单纯的语言环境中,儿童的语言习得却具有很明显的滞后性。这种滞后性一方面与声带练习需要时间有关,而 这种练习可能是为了配合人类由粗到细学习模式、演化的结果;另一方面也可能与人脑在建构具体到抽象概念的认知结构的次序有关,即更抽象的语言学习需要建立在,能通过感官感觉到的概念的基础之上,如通过视觉、听觉、触觉获得的概念。 在交流变为通畅后,儿童的语言学习就开始快步前进了,最后会进入稳定期,一如成人一样。不过并非年龄越大,学习语言的能力就越强。比如,在外语学习方面,有一个比较有趣的拐点错觉,即 12 岁以前学习外语往往被认为是黄金时期。夸张地讲,儿童在全英文环境下获得的英文提升能力的效率,大概是成年人在相同环境下的六倍左右。 这似乎与直觉有些相悖,因为成人的学习能力、学习方法、注意力都能做得更有效。但是,儿童学习外语的优势恰恰又在于这个弱势,即他仍处在一个没有完全把母语的语言结构固化的阶段。由于没有固化,就不容易受到母语的影响,就有可能形成两个相对更独立的语言认知模型。反观成年人的外语学习,多数人在阅读英文文献时,可能都会下意识地先在大脑里翻译成中文再去找对应的英文意思。结果,成年人要完全脱离母语去思考英文就需要更长的调整时间。这说明成年人的多语言结构中母语具有更强的优先级,且对新语言的学习会形成明显的干扰。而儿童的母语结构的优先级则不明显,因而在语言学习时有更强的可塑性。很有意思的一点是,这种可塑性是在构造由粗到细的学习模式的中段而非终段发生的。 如果比较下当今人工智能对新模式的学习策略,就能发现,多数是在模拟终段的学习。不管是零样本学习 (zero-shot) 、少量样本学习 (few-shot) 、迁移学习 (transfer learning) 还是领域自适应 (domain adaptation) ,它们都假定了有某一已知的、(接近)固化的结构在其中,或是分布、或是几何结构、或是其它某种假设。如果能研究下人类智能中段的学习模式,说不定能让目前极容易固化的机器智能得到更强的可塑性。 二、语言学习中的整体与局部认知 语言学习有其基本的规律,首先要学会的是识字。儿童识字的过程是从看图说话开始的,读书是从图画书逐渐过渡到少图甚至无图的书籍。这说明了具体与抽象的匹配在人的前期认知建构非常重要。那人在识字时是如何记忆每个字符的呢? 一种可能是基于由粗到细、由整体到局部的记忆模式,因为这与人的视觉发育机理吻合。可以用来佐证整体记忆的例子是如下的乱码阅读: The nghit bferoe lsat,jsut berofe dnienr, wihle my ftaehr was lkooing trhugoh the envenig pepar,he sdduelny let out a cry of srpusrie. Letar he epxinaeld: 'I had tohhugt taht he had deid at laset tewtny yares ago. But can you bleeive taht my fisrt tcheear, Mr. Crossett, is sitll liivng? ' 这段文字选自曾经的某中学英语高中第二册第一课。打乱字母次序后,看上去很混乱,但稍微懂点英文的,应该能不太费力的将每个拼错的单词自动纠正,并把全文正确读出来。它表明人在记忆英文单词或句子时,会优先进行整体认知。只要单词中的第一和最后一个字母次序保持不变,人就可以准确识别。整体认知的情况在汉语中同样存在。不妨阅读下面这个句子: 研表究明,汉字的序顺并不定一能影阅响读,比如当你完看这句话后,还没发这现里的字全是乱的。 显然,只要没改变每个短句的第一和最后一个汉字,相邻字的次序交换也不会影响阅读和对句子意思的理解。整体认知也能解释惯用简体字的国人为什么能比较轻松地识别多数繁体字。因为多数情况下,繁体字与简体字的字型是相近的。甚至当汉字产生字体变化时,如楷体、宋体、行书,基本也不影响人对汉字的理解。当然,“医生体 ”除外。 另外,整体认知也方便人识别和记忆未知的汉字。当识别结构相似、发音也相同的汉字时, 如“喽”和“楼” ,“景”和“憬”,“援”和“媛”时,就能够快速地获得正确的发音。如果观察 儿童早期的文字识别,可以发现,当他们遇到不认识的字时,会在大脑中寻找相似字型的字来匹配,并推测未知字的发音。但当遇到 结构相似、发音不同的汉字时,如“锦”和“绵”、“流”和“毓”、“途”和“徐”,则可能形成错误推广。这些错误和正确的推测,表明 儿童在建构语言记忆模型时,可能会将字型结构类似的字放在相近的记忆模型中,以提高学习的效率。 三、语言 断句和释义 的歧义性 认知心理学的分支之一、格式塔心理学强调了整体认知的重要性。然而,这一理论目前还没有形成太好的量化机制或程序化方法来,它使得机器对需要整体认知的问题还一筹莫展。除此以外,语言的歧义性也使得人类在语言理解上,较机器更灵活和智能,甚至多了些茶余饭后的文字游戏。如以下示例: 1 、自然语言处理领域常用来示例的歧义句: 南京市长江大桥 是 ” 南京市 / 长江大桥 ” 还是 “ 南京市长 / 江大桥 ” ? 2 、最近网络中流传的两个段子: 1) 改编自金庸的《神雕侠侣》: 来到杨过曾经生活过的地方,小龙女动情地说:“我也想过过过过儿过过的生活。” 2) “行”字 句: 人要是行,干一行行一行,一行行行行行; 要是不行,干一行不行一行, 一行不行行行不行 3 、古诗新解:唐代诗人杜牧的千古名作之一、七绝诗《清明》: 清明时节雨纷纷,路上行人欲断魂; 借问酒家何处有,牧童遥指杏花村。 如果不按古诗的格式、而是按散词的形式来断句,就会多一层俏皮的感觉: 清明时节雨,纷纷路上行人,欲断魂。 借问酒家何处?有牧童,遥指杏花村。 不仅如此,我们还可以将此诗改写成微型独幕剧: 时间:清明时节 天气:雨纷纷 主要人物:路上行人 精神状态:欲断魂 台词:借问酒家何处有 ? 另一主要人物:牧童 动作:遥指 台词:杏花村 可见汉语在语意表达上是相当丰富的。汉语的多义性让这类例子已不胜枚举,再看两例同义 / 反义和多义的例子: 1 、同义 / 反义: 当中国女排获得世锦赛冠军时,媒体既有“中国女排大胜美国女排”,也有“中国女排大败美国女排” 报道,那到底是大胜还是大败呢? 2 、多义性: 上司:“你这是什么意思?”小明:“没什么意思。意思意思。”上司:“你这就不够意思了。”小明:“小意思,小意思。”上司:“你这人真有意思。”小明:“其实也没有别的意思。”上司:“那我就不好意思了。”小明:“是我不好意思。” 请问以上“意思”分别是什么意思? 这些都是机器理解中文自然语言的难点,而国人因为有背景知识的支持,理解起来就相对容易些。 除了语言自身的特点,视听觉系统也会对语言的理解有着重要的作用。 四、视听觉对语言的影响 俗话说“千言不如一画”,对于视觉优先的人类而言,图画能提供更丰富和具体的信息。可是,如果语言搭上图画的包装,将字面的意思用图画的形式表述出来,那即使是人,也得思考半天才能理解语言的意思。比如根据苏轼的一首诗《晚眺》来书写的图 1 。原文是: 长亭短景无人画,老大横拖瘦竹筇 回首断云斜日暮,曲江倒蘸侧山峰 图 1 则将诗中的形容词“长、短、大、横、瘦、断、斜、曲、倒、侧”等通过视觉的方式融入到诗里的名词中,让原本已经很美的诗更加添了一丝画面感。 图 1 : 苏轼的《晚眺》 要让机器来理解这种有画面感的诗,需要分析字体的大小关系、方向性、断字情况、反向书写、局部字体变化与诗词的关系。这些无形中加大了机器处理语言的难度,更不用说理解字画的意境了。 不仅视觉能影响人对语言的理解,听觉也能影响。同样的语句,重音不同,想强调了的内容就差不少 。比如: 明天别忘了带笔记本电脑去单位! 如果重音在“明天”,则是强调时间;如果在“别忘了”,则是强调记性;如果在“笔记本电脑”,则是强调带的物品,如果在“单位”,则是强调要去的场所。 可见视听觉的融入会不同程度地影响对语言的理解,导致机器分析的难度上升。 五、语言与音乐的循环游戏 除此以外,对语言的巧妙设计还能衍生出不少有趣的结构,如回文诗。汉语回文诗有很多形式,如从诗的末尾一字读至开头一字可成新诗的通体回文、下一句为上一句回读的双句回文、每句前关句与后半句互为回文的就句回文、诗的后半篇为前半篇回复的本篇回文、先连续至尾再从尾连续至开头的环复回文等等。 虽然什么时候开始有已无从考究,但从古诗词中可以找到不少回文诗。举例来说,传说北宋时期,苏小妹与长兄苏东坡六月荡舟西湖时,收到她丈夫秦小游捎来的、如图 2 的叠字回文诗书信,“静思伊久阻归期忆别离时闻漏转静思伊”。 图 2 秦少游的连环诗《相思》 苏小妹冰雪聪明,很快便悟出其中奥妙,将诗解读出来: 静思伊久阻归期,久阻归期忆别离。 忆别离时闻漏转,时闻漏转静思伊。 并回诗一首“采莲人在绿杨津一阕新歌声濑玉采莲人”。苏东坡见状,不甘寂寞,也即兴提笔赋诗一首“赏花归去马如飞酒力微醒时已暮赏花归”。 比较类似的回文诗是明末浙江才女吴绛雪写的四首《四时山水诗》,均是由十字组成的辘轳回文诗。其中,春景诗由“莺啼岸柳弄春晴夜月明”解读为: 春景诗: 莺啼岸柳弄春晴, 柳弄春晴夜月明。 明月夜晴春弄柳, 晴春弄柳岸啼莺 而夏景诗“香莲碧水动风凉夏日长”、秋景诗“秋江楚雁宿沙洲浅水流”、冬景诗“红炉透炭炙寒风御隆冬”均可通过上述方式解读成诗。 宋代李禺写的夫妻互忆回文诗《两相思》也很有意思,正着读是《思妻诗 》 : 枯眼望遥山隔水,往来曾见几心知? 壶空怕酌一杯酒,笔下难成和韵诗。 途路阻人离别久,讯音无雁寄回迟。 孤灯夜守长寥寂,夫忆妻兮父忆儿。 倒过来读就变成《思夫诗 》了: 儿忆父兮妻忆夫,寂寥长守夜灯孤。 迟回寄雁无音讯,久别离人阻路途。 诗韵和成难下笔,酒杯一酌怕空壶。 知心几见曾往来,水 隔山 遥望眼枯。 清代诗人李旸写的诗《春闺》则是一首通体回文诗: 垂帘画阁画帘垂, 谁系怀思怀系谁? 影弄花枝花弄影, 丝牵柳线柳牵丝。 脸波横泪横波脸, 眉黛浓愁浓黛眉。 在英文中,也有很多回文,称为 Palindrome 。如用来纪念美国前总统西奥多 . 罗斯福在任内取得巴拿马运河开凿权的句子 ”A man, a plan, a canal-Panama!” 就是典型的回文,正反都是一个意思。 我们甚至在音乐作品中,也能见到回文的影子。如巴洛克时期著名的德国作曲家、管风琴演奏家巴赫( Johann Sebastian Bach , 1685 年 3 月 21 日- 1750 年 7 月 28 日)的作品《音乐的奉献》 ( 英语: The Musical Offering; 德语: Musikalisches Opfer, BWV 1079) 中的 “Thema Regium”(“ 国王的主题 ”) 。 这 首曲子源自于 巴赫与腓特烈二世在 1747 年 5 月 7 日波茨坦国王住处的一次会面。因为巴赫的作曲很有名,国王席间便为巴赫提供了一段长而复杂的音乐主题,命他作首三声部赋格。完成后,国王又让其作首六声部的。巴赫回家两个月后,便完成了国王的任务,称为《音乐的奉献》组曲。其中“国王的主题”很特别, 它的旋律即可以正着演奏,也可以逆着演奏,且可以将正的和逆的作成两个声部同 时 演奏,因而叫“ 镜 像卡 农 ”。因 为这样 的旋律走向很像螃蟹走路,也 将其称为螃蟹卡农, 而非回文的命名。还有人把这种旋律看成是一种莫比乌斯带上的循环。据说巴赫业余时间喜欢读他同时期的、但已声名大震的数学家莱布尼兹的著作,说不定他这种数学味很浓的组曲的灵感来自于莱布尼兹,因为后者曾说过“音乐是数学在灵魂中无意识的运算”。 图 3 : 《国王的奉献》 乐曲片断和二声部乐曲 螃蟹卡农链接: https://v.qq.com/x/page/l0616bmt8hk.html 所以,研究语言在儿童期的学习过程以及与视觉、听觉相关目标的学习次序,可能对于我们构建真正的智能体是有启示性作用的。我们是否应该一开始就从高层语义的语言着手来设计智能体,还是应该按金字塔式的结构,对视听觉及其他感官系统的构建给予更高的优先级呢?而能否将文字游戏中隐藏的各种奥妙解开,也许是真正理解语言的途径之一。 如果不看、不听、不摸、不说,智能体还能学习吗?请听下回! 参考文献: 侯世达著,郭维德等译 . 哥德尔、艾舍尔、巴赫:集异壁之大成 . 商务出版社, 1996. 张军平 2018 年 11 月 6 日 延伸阅读: 17. 爱犯错的智能体 – 体感篇:我思故我在? 16. 爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2800余次,ESI高被引一篇,H指数27.
11548 次阅读|4 个评论
[转载]开启博士生涯:佐治亚理工、MIT等四所高校招收博士生
josh 2018-10-30 18:56
转载三篇 “机器之心” https://www.jiqizhixin.com/ 的文章(按时间顺序,其中最后一篇是最新发表的): 机器之心学生读者福利:这些大学、教授在招博士生 链接: https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==mid=2650735505idx=5sn=6c37173b73e0d26c745ca1846f287135 机器之心学生读者福利:这些海外华人教授在招博士生(第二期) 链接: https://www.jiqizhixin.com/articles/2018-01-23-5 招生 | 开启博士生涯:佐治亚理工、MIT等四所高校招收博士生 链接: https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==mid=2650750447idx=4sn=1b0ad01eacd394df967f5a38c15e58eascene=0#wechat_redirect
个人分类: The Art of Learning and Research|1208 次阅读|0 个评论
如何用 Python 和 fast.ai 做图像深度迁移学习?
热度 2 wshuyi 2018-10-26 11:03
本文带你认识一个优秀的新深度学习框架,了解深度学习中最重要的3件事。 框架 看到这个题目,你可能会疑惑: 老师,你不是讲过如何用深度学习做图像分类了吗?迁移学习好像也讲过了啊! 说得对!我要感谢你对我专栏的持续关注。我确实讲过深度学习做 图像分类 ,以及 迁移学习 这两项内容。 写这篇文章,是因为最近因为科研的关系,发现了 fast.ai 这款框架。我希望把它介绍给你。 你可能会不解,之前介绍过的 TuriCreate, Tensorflow, tflearn 和 Keras 好像都挺好用的啊! 我想问问,你在实际的科研工作里,用过哪一个呢? 大多数的读者,只怕基本上都没真正用它们跑过实际的任务。 为什么呢? 因为对普通用户(例如我经常提到的“ 文科生 ”),这些框架要么用起来很简单,但是功能不够强大;要么功能很强大,但是不够易用。 例如苹果的 TuriCreate ,我给你演示过,直接零基础上手都没问题。但当你希望对模型进行构造调整的时候,马上就会发现困难重重。因为其专长在于快速产生模型,并且部署到苹果移动设备,因此文档里面底层细节的介绍是有欠缺的。而且有些模型,非苹果平台目前还不能兼容。 至于某著名框架,直到推出3年后,在各方压力下,不得已才把好用的 Eager Execution 作为主要使用模式。其间充分体现了那种技术人员独有的傲慢和固执。另外,就连程序员和数据科学家们都把吐槽“看不懂”它的官方文档当作了家常便饭。这些轶事,由于公开发布会招致口水仗,所以我只写在了知识星球专属语雀团队《发现了一套非常棒的(该框架名称)视频教程》一文中。感兴趣的话,不妨去看看。 原本我认为, Keras 已经是把功能和易用性做到了最佳平衡了。直到我看到了 Jeremy Howard,也就是 fast.ai 创始人提出的评判标准——如果一个深度学习框架需要写个教程给你,那它的易用性还不够好。 我看了之后,可以用感动来形容。 Jeremy 说这话,不是为了夸自己——因为他甚至做了个 MOOC 出来。他自己评价,说目前 fast.ai 的易用性依然不算成功。但在我看来, fast.ai 是 目前 把易用性和功能都做到了 极致 的深度学习框架。 它的门槛极低。如同 TuriCreate 一样,你可以很轻易用几句话写个图片分类模型出来,人人都能立即上手。 它的天花板又很高。因为它只是个包裹了 Pytorch 的代码库。 你可能也听说了,在过去的一年里,Pytorch 在学术界大放异彩,就是因为它的门槛对于科研人员来说,已经足够友好了。如果你有需求,可以非常方便地通过代码的修改和复用,敏捷构造自己的深度学习模型。 这种积木式的组合方式,使得许多新论文中的模型,可以第一时间被复现验证。如果你在这个过程中有了自己的灵感和心得,可以马上实践。 且慢,fast.ai 的作者不是已经做了自己的 MOOC 了吗?那写这篇文章,岂不是多此一举? 不是的。 首先,作者每年迭代一个 MOOC 的版本,因为 MOOC 一共包括三门课程,分别是: Practical Deep Learning for Coders Cutting Edge Deep Learning for Coders Introduction to Machine Learning for Coders 但现在你能看到的深度学习基础课,还是去年录的。今年10月,伴随着 Pytorch 1.0 的推出, fast.ai 做了一次显著的大版本(1.0)更新。如果你去看去年的课程,会发现和目前的 fast.ai 代码有很多区别。在完成同一个功能时,你愿意再跑去学旧的过时内容吗?特别是,如果搞混了,还很容易出错。 可是,想看到这个版本课程的免费视频,你至少得等到明年1月。因为目前正式学员们也才刚刚开课。 而且,那视频,也是 英文 的。 正因如此,我觉得有必要给你讲讲,如何用最新的 fast.ai 1.0 版本,来完成图像深度迁移学习。 数据 Jeremy 在 MOOC 中提到,如果你打算让机器通过数据来学习,你需要提供3样东西给它,分别是: 数据(Data) 模型结构(Architecture) 损失度量(Loss Metrics) 模型结构,是根据你的具体问题走的。例如说,你需要让机器做图片分类,那么就需要使用卷积神经网络(Convolutional Neural Network)来表征图片上的像素信息构成的特征。如果你需要做自然语言处理,那么就可以使用循环神经网络(Recurrent Neural Network)来捕捉文本或者字符的顺序关联信息。 损失衡量,是指你提供一个标准,衡量机器对某项任务的处理水平。例如说对于分类效果如何,你可以使用交叉熵(Binary Cross Entropy)来评判。这样,机器会尝试最小化损失结果,从而让分类表现越来越好。 至于数据,因为我们这里的任务是做分类。因此需要有标注的训练数据。 我已经把本文需要用到的数据放到了 这个 github 项目 上。 打开其中的 imgs 文件夹,你会看见3个子文件夹,分别对应训练(train),验证(valid)和测试(test)。 打开 train 文件夹看看。 你没猜错,我们用的图片还是哆啦A梦(doraemon)和瓦力(walle)。 因为这样不仅可以保持教程的一惯性,而且也可以保证结果对比的公平。 打开哆啦A梦的目录看看: 展示其中第一个文件内容。 好熟悉,是不是? 你可以浏览一下其他的哆啦A梦照片,然后别忘了去瓦力的文件夹里面扫上一眼。 这就是我们的数据集了。 环境 为了运行深度学习代码,你需要一个 GPU 。但是你不需要去买一个,租就好了。最方便的租用方法,就是云平台。 fast.ai 官方,给出了以下5种云计算平台使用选项: Paperspace Gradient Salamander SageMaker Google Compute Platform Amazon Web Services EC2 其中,我推荐你使用的,是 Google Compute Platform 。原因很简单,首先它成本低,每小时只需要 0.38 美元。更重要的是,如果你是新用户, Google 会先送给你 300美金 ,1年内有效。算算看,这够你运行多久深度学习? 原先,fast.ai 上面的设置 Google Compute Platform 教程写得很简略。于是我写了个一步步的教程,请使用 这个链接 访问。 不过,我发现 fast.ai 的迭代速度简直惊人,短短几天时间,新的教程就出来了,而且详尽许多。因此你也可以点击 这里 查看官方的教程。其中如果有跳步,你可以回看 我的教程 ,作为补充。 因此,Google Compute Platform 中间步骤,咱们就不赘述了。当你的终端里面出现这样的提示的时候,就证明一切准备工作都就绪了。 下面,你需要下载刚刚在 github 上面的代码和数据集。 git clone https://github.com/wshuyi/demo-image-classification-fastai.git 之后,就可以呼叫 jupyter 出场了。 jupyterlab 注意因为你是在 Google Compute Platform 云端执行 jupyter ,因此浏览器不会自动弹出。 你需要打开 Firefox 或者 Chrome,在其中输入 这个链接 ( http://localhost:8080/lab? )。 打开左侧边栏里面的 demo.ipynb 。 本教程全部的代码都在这里了。当然,你如果比较心急,可以选择执行 Run-Run All Cells ,查看全部运行结果。 但是,跟之前一样,我还是建议你跟着教程的说明,一步步执行它们。以便更加深刻体会每一条语句的含义。 载入 我们先要载入数据。第一步是从 fast.ai 读入一些相关的功能模块。 from fastai import * from fastai.vision import * from fastai.core import * 接着,我们需要设置数据所在文件夹的位置,为 imgs 目录。 执行: path=Path( 'imgs' ) 下面,我们让 fast.ai 帮我们载入全部的数据。这时我们调用 ImageDataBunch 类的 from_folder 函数,结果存储到 data 中: data=ImageDataBunch.from_folder(path,test= 'test' ,ds_tfms=get_transforms(),size= 224 ) 注意这里,我们不仅读入了数据,还顺手做了2件事: 我们进行了数据增强(augmentation),也就是对数据进行了翻转、拉伸、旋转,弄出了很多“新”训练数据。这样做的目的,是因为数据越多,越不容易出现过拟合(over-fitting),也就是模型死记硬背,蒙混考试,却没有抓住真正的规律。 我们把图片大小进行了统一,设置成了 224 x 224 ,这样做的原因,是我们需要使用迁移学习,要用到预训练模型。预训练模型是在这样大小的图片上面训练出来的,因此保持大小一致,效果更好。 下面,检查一下数据载入是否正常: data.show_batch(rows= 3 ,figsize=( 10 , 10 )) 没问题。图片和标记都是正确的。 训练 用下面这 一条 语句,我们把“数据”、“模型结构”和“损失度量”三样信息,一起喂给机器。 learn=ConvLearner(data,models.resnet34,metrics=accuracy) 数据就不说了,模型我们采用的是 resnet34 这样一个预训练模型作为基础架构。至于损失度量,我们用的是准确率(accuracy)。 你可能会纳闷,这就完了?不对呀! 没有告诉模型类别有几个啊,没有指定任务迁移之后接续的几个层次的数量、大小、激活函数…… 对,不需要。 因为 fast.ai 根据你输入的上述“数据”、“模型结构”和“损失度量”信息, 自动 帮你把这些闲七杂八的事情默默搞定了。 下面,你需要用一条指令来训练它: learn.fit_one_cycle( 1 ) 注意,这里我们要求 fast.ai 使用 one cycle policy 。如果你对细节感兴趣,可以点击 这个链接 了解具体内容。 5秒钟之后,训练结束。 验证集准确率是,100%。 注意,你“拿来”的这个 resnet34 模型当初做训练的时候,可从来没有见识过哆啦A梦或者瓦力。 看了100多张形态各异,包含各种背景噪声的图片,它居然就能 100% 准确分辨了。 之前我们讲过机器学习的 可解释性 很重要。没错,fast.ai 也帮我们考虑到了这点。 preds,y=learn.get_preds() interp=ClassificationInterpretation(data,preds,y,loss_class=nn.CrossEntropyLoss) 执行上面这两行语句,不会有什么输出。但是你手里有了个解释工具。 我们来看看,机器判断得最不好的9张图片都有哪些? interp.plot_top_losses( 9 ,figsize=( 10 , 10 )) 因为准确率已经 100% 了,所以单看数值,你根本无法了解机器判断不同照片的时候,遇到了哪些问题。但是这个解释器却可以立即让你明白,哪些图片,机器处理起来,底气(信心)最为不足。 我们还能让解释器做个混淆矩阵出来: interp.plot_confusion_matrix() 不过这个混淆矩阵好像没有什么意思。反正全都判断对了。 评估 我们的模型,是不是已经 完美 了? 不好说。 因为我们刚才展示的,只是验证集的结果。这个验证集,机器在迭代模型参数的时候每一回都拿来尝试。所以要检验最为真实的效能,我们需要让机器看从来没有看到过的图片。 你可以到 test 目录下面,看看都有什么。 注意这里一共6张图片,3张哆啦A梦的,3张瓦力的。 这次,我们还会使用刚才用过的 get_preds 函数。不过区别是,我们把 is_test 标记设置为 True ,这样机器就不会再去验证集里面取数据了,而是看测试集的。 preds,y=learn.get_preds(is_test= True ) 注意目录下面看到的文件顺序,是依据名称排列的。但是 fast.ai 读取数据的时候,其实是做了随机洗牌(randomized shuffling)。我们得看看实际测试集里面的文件顺序。 data.test_dl.dl.dataset.ds.x 好了,我们自己心里有数了。下面就看看机器能不能都判断正确了。 preds 这都啥玩意儿啊? 别着急,这是模型预测时候,根据两个不同的分类,分别给出的倾向数值。数值越大,倾向程度越高。 左侧一列,是哆啦A梦;右侧一列,是瓦力。 我们用 np.argmax 函数,把它简化一些。 np.argmax(preds,axis= 1 ) 这样一来,看着就清爽多了。 我们来检查一下啊:瓦力,瓦力,哆啦A梦,哆啦A梦,哆啦A梦,哆啦A梦…… 不对呀! 最后这一张, walle.113.jpg ,不应该判断成瓦力吗? 打开看看。 哦,难怪。另一个机器人也出现在图片中,圆头圆脑的,确实跟哆啦A梦有相似之处。 要不,就这样了? 微调 那哪儿行?! 我们做任务,要讲究精益求精啊。 遇到错误不要紧,我们尝试改进模型。 用的方法,叫做微调(fine-tuning)。 我们刚刚,不过是移花接木,用了 resnet34 的身体,换上了一个我们自定义的头部层次,用来做哆啦A梦和瓦力的分辨。 这个训练结果,其实已经很好了。但是既然锁定了“身体”部分的全部参数,只训练头部,依然会遇到判断失误。那我们自然想到的,就应该是连同“身体”,一起调整训练了。 但是这谈何容易? 你调整得动作轻微,那么效果不会明显;如果你调整过了劲儿,“身体”部分的预训练模型通过海量数据积累的参数经验,就会被破坏掉。 两难啊,两难! 好在,聪明的研究者提出了一个巧妙的解决之道。这非常符合我们不只一次提及的“ 第一性原理 ”,那就是返回到事情的本源,问出一句: 谁说调整的速度,要全模型都一致?! 深度卷积神经网络,是一个典型的层次模型。 模型靠近输入的地方,捕获的是底层的特征。例如边缘形状等。 模型靠近输出的地方,捕获的是高层特征,例如某种物体的形貌。 对于底层特征,我们相信哆啦A梦、瓦力和原先训练的那些自然界事物,有很多相似之处,因此应该少调整。 反之,原先模型用于捕获猫、狗、兔子的那些特征部分,我们是用不上的,因此越靠近输出位置的层次,我们就应该多调整。 这种不同力度的调整,是通过学习速率(learning rate)来达成的。具体到我们的这种区分,专用名词叫做“歧视性学习速率”(discriminative learning rate)。 你可能想放弃了,这么难!我不玩儿了! 且慢,看看 fast.ai 怎么实现“歧视性学习速率”。 learn.unfreeze() learn.fit_one_cycle( 3 ,slice( 1e-5 , 3e-4 )) 对,只需在这里指定一下,底层和上层,选择什么不同的起始速率。搞定。 没错,就是这么 不讲道理地智能化 。 这次,训练了3个循环(cycle)。 注意,虽然准确率没有变化(一直是100%,也不可能提升了),但是损失数值,不论是训练集,还是验证集上的,都在减小。 这证明模型在努力地学东西。 你可能会担心:这样会不会导致过拟合啊? 看看就知道了,训练集上的损失数值,一直 高于 验证集,这就意味着,没有过拟合发生的征兆。 好了,拿着这个微调优化过后的模型,我们再来试试测试集吧。 首先我们强迫症似地看看测试集文件顺序有没有变化: data.test_dl.dl.dataset.ds.x 既然没有变,我们就放心了。 下面我们执行预测: preds,y=learn.get_preds(is_test= True ) 然后,观察结果: np.argmax(preds,axis= 1 ) 如你所见,这次全部判断正确。 可见,我们的微调,是真实有用的。 小结 本文为你介绍了如何用 fast.ai 1.0 框架进行图像深度迁移学习。可以看到, fast.ai 不仅简洁、功能强大,而且足够智能化。所有可以帮用户做的事情,它全都替你代劳。作为研究者,你只需要关注“数据”、“模型结构”和“损失度量”这3个关键问题,以改进学习效果。 我希望你不要满足于把代码跑下来。用你获得的300美金,换上自己的数据跑一跑,看看能否获得足够满意的结果。 祝(深度)学习愉快! 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
13492 次阅读|2 个评论
爱犯错的智能体 --- 听觉篇(二):视听错觉与无限音阶的拓扑
热度 1 heruspex 2018-10-26 09:15
小朋友小时候,我们请了一位家里外婆辈份的亲戚帮忙来照顾。虽然长我一辈,年龄却比我小。不过还好,亲戚家在湖南省的华容县,那边的人管这个辈份的都称为“家 (Ga) 家 (Ga) ”,所以,叫起来也不会太尴尬和别扭,反正外人听不懂。小朋友学语言很快,一切都很正常。可是 GaGa 老是叫不好,总发成 DaDa 。她自己也没觉得有什么不对,我们纠了几次,没什么效果,只好听之任之了。还好,随着小朋友一天天的长大,终于有一天她自己纠正过来了。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 上一篇说过,人在辨声方面有“鸡尾酒会效应”的能力。一个人不需要借助视觉的帮助就可以在酒会中选择性地聆听需要听的声音,而把其他声音弱化甚至屏蔽掉。谷歌则尝试结合视频与语音来提高人声分离的性能。那么,视觉与听觉之间会不会相互影响呢? 一、视听错觉 第一个证实有相互影响的实验来源于一次意外。早在 20 世纪 70 年代中期,英国 Surrey 大学的心理学家 Harry McGurk 和他的助手 John MacDonald 做了个实验。他们用不同的口语因素给视频配音,想研究不同时期儿童对语言的理解程度。在配音的时候,一个本应发“ ga ”的音节错配成了“ ba ”的音,测试者听完后坚持认为听到的音节是第三节音素“ da ”而不是视频中说出来的原音节。对于这个意外,他们分析后认为,在听觉系统和视觉系统收集的信息存在相互矛盾时,人类会优先相信视觉通道传输进来的信息。因为与视觉系统相比,听觉系统获得的信息没有那么强的确定性。他们将这一现象称“麦格克效应” (McGurk effect) 。该成果发表在 1976 年的《自然》杂志上 。 麦格克效应: https://v.qq.com/x/page/i0624sd97n4.html 随着研究的深入,科学家们发现这种视听觉相互影响的“麦格克效应”在很多方面都有体现。如儿童早期发音的学习上。如果视觉和听觉没有得到好的整合,儿童就容易产生错误的发音。另外,视力不好的人,如果摘下眼镜,也很可能出现“麦格克效应”,会感觉自己的听力也同时下降了。 2007 年, Körding 等进一步研究了视听觉相互影响的情况。他们在 5 个平行的位置上均放置了发声和闪光设备,然后在不同或相同的位置同时给出声音和闪光,让 19 位测试者判断发声的位置和闪光的位置。实验设置和结果如图 1 所示 。 从图上可以看出,当光和声音分别处理、没有相互干扰时, 19 个测试者的反应是稳定且合乎正确分布的。而当灯光和声音同时出现后,能看出 1 )闪光位置的判断几乎不受影响,和没有声音的时候分布一致; 2 )声音的位置影响明显。尤其最后一列,其声音似乎容易被光线影响,而形成轻微向左的误判。这表明声音的不确定更多一些,更容易被闪光影响。所以,这两个实验都证明了,视觉确实会影响听觉的认知。 � � 图 1 :视听觉线索的组合 。 (a): 实验架构。每个测试,一个视觉和一个听觉刺激同时被给出,测试者通过按按钮来报告感知的视觉刺激和听觉刺激位置。 (b): 视觉对在中间位置发出的听觉刺激的感知位置影响被显示。不同颜色对应在不同位置的视觉刺激 ( 从左到底,颜色从暖色调转为冷色调 ) 。只有声音的模型以灰色表示。 C) 对于 35 种刺激条件,测试者 ( 实线 ) 以及理想观测者的预测 ( 破折线 ) 的平均响应。左边第一列虚线为五个闪光位置;第二列为无音频的响应,从左至右的折线表示响应位置。在无音频时响应很精确。 上方第一行指五个声音位置;第二列为无视频响应,从左到右的折线表示响应情况。 二、无限音阶的拓扑 听觉反过来会促进视觉上的感知。我们在观赏影视作品时经常能感受到。比如在家看恐怖电影时,一到令人发悚的情节, 胆小点的就会情不自禁把音量关小或干脆把耳机拿下来,说明视听觉的双重作用确实增强了影片的恐怖程度。 另外,在音乐中,还有个奇怪的旋律。他通过两个或多个声部的交替,能产生无穷递进的感觉,让人误以为声音一直在往高处走。这就是谢帕得音阶 ( Shepard tone) ,也称为无限音阶。 相比音乐的历史,这种音阶出现的时间并不早。它是美国斯坦福大学的心理学家谢帕德在 1971 年的心理学实验中发明的,所以称为谢帕得音阶。它由不重合的多个八度音组合在一起,形成多个声部。 2017 年克里斯托弗 • 诺兰执导关于 1940 年二战历史事件“敦刻尔克大撤退”的电影《敦刻尔克》时,为了能为海边撤退的场景来营造一种无始无终的紧张感,便送给作曲家汉斯 • 季默一个手表连续敲击的录音。季默受此启发,便以与之类似的谢帕德音阶为基础,创作了电影的背景乐。事实证明,这段配乐非常完美地加强了撤退时的紧张感,让观众有了身临其境、坐立不安的感觉。 谢帕德音阶 : https://v.qq.com/x/page/g05479i6hs5.html 为了帮助理解,我写了个类似的两声部例子来解释谢帕德音阶的构成,如图 2 所示。其中,第一列的低音部是慢慢渐强,而第二列的高音部分则慢慢减弱,到最弱音时,再同时增加一个相同音量但低八度的音进来。按此规律,两列的旋律一直循环播放。结果,在第一列的低音到最强处,刚好能接上第二列高音的最弱音。于是两个声部就实现了自然的过渡,低声部的过渡到高声部,高声部也过渡到低声部。结果,如果按此规律增加更多的声部进来,那么,旋律中总可以一直听到至少两种声调在同时升高。而大脑会形成听觉错觉,认为这些音调一直在往上走。 图 2 两声部的无限循 环,左列为低音的渐强,右列为高音的渐弱;左列到B4时,刚好能接上右列的C5;同理,右列弱至B5时,会再增加一个同样小声的B3音进来,从而可以自然过渡到左列的C4上。 有趣的是,这种循环,我们不仅能在音乐中看到,还能在很多方面见到类似的。比如艺术作品中,前面提到过的荷兰著名画家艾舍尔就画过一系列无限循环的作品。如图 3 所示的水的循环流动、楼梯的“循环”、还有画里画外的蜥蜴。这些都是现实世界不可能实现的无限循环。 图 3 艾舍尔的各种循环画: 无尽的水流;无尽的楼梯;画里画外的蜥蜴 而在日常生活中,理发店的旋转灯筒也有着无限循环的影子,如图 4 所示。这种灯筒何时出现的无从考证,说法很多,有说是世界大战时期,有的是大革命时期。 一种说法是为了纪念一位为国家 ( 法国 ) 做出贡献的理发师,旋转灯筒的红白蓝三色其实是法国的国旗。 图 4 : 理发灯箱与针式打印机色带 另一种说法是:据说在中世纪,因为对人体的认识不足,人们认为生病是体内元素不平衡造成的。只有释放出多余的元素,才能恢复健康。血液显然是最容易放出的一种元素。不过很多医师觉得这个工作比较低贱,不愿意动手放血,就委托理发师代办。所以,理发师就选三色柱作为他们行医和理发的标志。其中,三色柱中的红色代表动脉,蓝色代表静脉,白色代表纱布。他们甚至还发明了专门用于切割血管的刀片,叫“柳叶刀” (Lancet) 。这也是现在一本顶级医学期刊的名字。放血疗法也一度成为非常流行的治疗方法,就连美国总统华盛顿也是因感冒想用此法治疗,结果于 1799 年死于失血性休克。 不管来自何种典故,灯箱的旋转,会让人产生循环往复、一直向上的错觉。这是在理发店的无限循环。 事实上,这种循环性,我们在上世纪曾广泛使用、现在主要用于打印各种增值税发票的针式打印机上也能见到。大家可以拆开色带看看,就会发现色带两面都是一直在交替着打印的,如图 4 ,因为这样可以提高色带的利用率。这是打印机里的无限循环。 这种循环的几何结构有个数学味更浓的名字,叫莫比乌斯带 (Mobius Band) ,它可以将纸按图 5(a) 所示方法折成。类似地,普林斯顿大学教授、作曲家和音乐理论专家 Dimitri Tymoczko 在假定十二音律是一个圆形循环的基础上,认为 两音符组成的音程关系可以表示成如图 5(b) 的莫比乌斯带而非甜甜圈的几何结构 。 \0 \0 图 5 : (a): 莫比乌斯带折法:将纸按箭头方法对折后再粘在一起,便可以获得 (c) 的结构; (b) 两音符音程关系可以视为莫比乌斯带 (c) 莫比乌斯带上的蚂蚁 ( 艾舍尔 ) 图 5(c) 中,艾舍尔画的蚂蚁图也是莫比乌斯带。它有个很意思的特点,如果让一只不会飞、只能生活在二维空间的蚂蚁沿着莫比乌斯带爬行。假如这个带子足够宽,蚂蚁只能向前爬,那么它可以一直向前爬下去,却不能发现这个带子是否有正有反。用更严谨的话来表达,假定你在一个点上竖一根垂直的杆子,或者称为曲面上该点的法向量,然后将杆子保持与纸面的垂直一直向前挪动,结果你会发现当杆子运动到背面该点位置时,这根垂直杆子的方向与最初正面的方向刚好是相反的。一个点上出现了两个相反的垂直杆子,这种矛盾的情况导致莫比乌斯带面上的点都没有确定的方向,称为无定向的曲面。 三维空间上,这种二维曲面还可以构造的,但是否存在一个三维无定向的结构呢?理论上是有的,即 Klein 瓶 ( 克莱因瓶 ) ,如图 6 所示。这个瓶子有个神奇的特点。如果有药片放在瓶子里的话,不用开瓶盖就拿把药片拿出来了。这对于拧不开瓶盖需要找男同胞帮忙的女性朋友们绝对是个福音。因为在三维空间中,能打不开瓶盖就拿出瓶内药片的,似乎只有“气功大师”或“魔术师”可以做到。不过很遗憾,在三维空间中无法构造出真正的克莱因瓶实体,需要更高维度的空间。 除了莫比乌斯带和克莱因瓶这两个稍显古怪的几何结构外,日常生活中,我们还能见到大量的几何结构,如甜甜圈、杯子、花瓶等。如何确定它们的几何结构呢?这些结构能否用于人工智能呢? 图 6 : (a): 克莱因瓶; (b) 图像边缘构成的克莱因瓶,不同颜色表示不同的折叠方向; (c) 玻璃的“克莱因瓶” 三、持续同调 研究几何结构的理论,有初等几何、高等几何、射影几何这些常见的,也有数学再深一点可以研究曲面不变性如高斯第一性、高斯第二性的微分几何,再复杂些就是代数几何 (Algebra Geometry) 和代数拓扑 (Algebra Topology) 。这两个数学分支中复杂和抽象的理论这里不谈。着重介绍下拓扑,它是分析几何图形或空间在连续改变形状后仍能保持不变性的理论,俗称橡皮几何学理论。比如一个杯子,如果给它加个把手,它的拓扑结构就变了。因为多了一个洞,它也就没办法在不改结构的情况下变成原来的杯子了。在拓扑学发展历史中,著名的哥尼斯堡七桥问题、多面体欧拉定理、四色问题等都是其中的重要问题。而如果想直观感受下拓扑的魅力,不妨买个中国的传统民俗玩具智环类的如九连环来玩玩,它和拓扑密切相关。 那么如何从拓扑角度判断两个形变的结构具有相同拓扑性质呢?拓扑学家们定义了一些直观的参数。最简单的参数如凸多面体上的顶点数 (Vertex) 、棱数 (Edge) 和面数 (Face) 。利用这三个参数的交错和可以确定多面体的一个不变量,叫欧拉示性数 (Euler Characteristic) 。比如三角形,它的顶点为 3 ,棱数为 3 ,面数为 2( 把外部数在内 ) ,那么它的欧拉示性数就等于 V-E+F=2 。这里我们把顶点视为 0 维空间,边或棱看成是 1 维空间,平面看成是 2 维空间。如果希望向高维空间推广,我们可以继续用这样的交错和来估计高维拓扑结构的不变量。不过得换个稍个稍微专业点的名字,叫 Betti 数 (Betti number) 。如第 0 维的 Betti 数 b0 表示连通分量 (Connected components) 的数量,第 1 维 b1 表示有圆形洞 (Circular) 的数量,第 2 维 b2 表示有二维球形洞 (Void 或 Cavities) 的数量。以图 7 所示甜甜圈为例,它只有一个连通分量, b0=1 ;但有二个圆形洞,所以 b1=2 ;有一个二维结构构成的空洞 (Void) 。那么,它的欧拉示性数则是这些按维数获得的 Betti 数分量的交错和,即 b0-b1+b2=0 。 图 7 : n 维空间的甜甜圈 拓扑学的研究在计算机图形学方面有着异常重要的地位,因为图形学里涉及的结构变形、几何结构分析上都离不开它。但是在人工智能里怎么使用拓扑呢? 与图形学不同,人工智能中有的主要是数据。每个数据点都是离散的、有噪的。如果直接利用拓扑学的概念,并不好处理,因为 Betti 数的估计需要连续的结构。不过幸运地是,数学家们发明了一套新的办法来研究数据中的拓扑,叫持续同调 (Persistent Homology) 。名字很学术,理论也相对复杂。所以,我在这里用一个不太精确但可以直观理解的方式来解释。 如果用五线谱来比拟,一个音是一个结构。但人唱这个音的时候会有细微的抖动,通常几个赫兹到几十个赫兹。如果在这个差异范围内变化,他人听不出来,那么我们仍然可以认为这些音是同一个调的。那么,这个从最小变化到最大不可区分音调的变化区间就是这个音所具有的生命力,称为持续性。另外,如果这个音出现时间非常短,那它就不会被认为是稳定的,可能只是跑调或破音了。要找主旋律,这些生命力短的音可以忽略不计。保留下来的就是那些稳定或有较长生命力的同调的音了。 与音调不同的是,数据中的持续同调是希望找到一些在一定范围内稳定不变的几何结构。那如何去寻找范围呢?科学家们想到了可以用一组能连通的三角形或学术上要求更严谨的名字“单纯复形” (Simplicial Complex) ,或半径可变的圆来实现。 如图 8 所示,左图中有七个数据点,如果给一组比较小的三角形或半径小的圆,则这些圆在连通意义下不能覆盖全部数据。因此,可以在保证连通性的情况下,将所有数据点通过若干相互连通的圆来覆盖。因为这些圆的大小限制,中间的空洞不会被填充。所以,最终连通成的圆形集合会保留原来的几何结构。我们能根据这个圆形集合形成的结构来估计它在不同维度上的 Betti 数是多少。这些 Betti 数可以做为数据分析的一组特征,也可以用来估计欧拉示性数。因为数据是离散的,如果要找一个稳定的几何结构,那么可通过增加圆的半径来完成对数据集合的多次覆盖,直到数据集合中的被连通的圆的集合完全填充。最终,原来能看到的拓扑结构如空洞就会终止,而对应的 Betti 数的持续性或生命力也会消逝,并出现新的拓扑结构。 图 8 左:从数据点中用圆形覆盖来提取拓扑结构;右:有噪的双圆形数据集 我们将稳定的拓扑结构提取出来,与已知目标的拓扑结构进行匹配,这样就能知道数据集合与哪种形式的结构最相似。 另外,直接在数据上做推测也不是完全合理的。因为数据是有噪声的,而数据量过大的时候,噪声的波动会破坏原来的几何结构,比如形成短路边,如图 8 右图。所以,我们还得用些采样技术来适当地稀疏化数据。 这样做能否发现一些有意思的现象呢?斯坦福大学的 Gunnar Carlsson 教授等人 曾经对自然图像做过实验 。他们将图像切成若干小块,每块上只有朝向不同的边缘,他们对这些边缘图像块进行采样,然后再利用不断变大的三角形来连通和勾画图像块集合的拓扑结构。结果他们发现自然图像的边缘图像块集合构成的结构和 Klein 瓶很相似,如图 6(b) 。这是第一个与拓扑相关、比较有意思的发现。 在实际应用中,还是能看到一些它的应用。比如手语识别上,因为手语的结构具有一定的拓扑性质。我们也曾将其用于图像的目标识别 。 需要提醒的是,仅用拓扑结构来构造目标识别系统是有风险的。比如带把手的咖啡杯和实心甜甜圈这种人一眼就能区分的目标,从拓扑学家的角度来看却是分不清的。 图 9 :咖啡杯和甜甜圈 更重要的是,将这类方法用于高维数据分析还存在一个问题:这些基元指标如 Betti 数是基于人对三维空间的直觉来获得的;至于高维空间是否还存在一些特别的基元,人类还无法感知。也许存在更复杂的高维基元,只是无法感知和想象而已。要解开这个难题,或许和解开彭罗斯超弦理论中隐藏的高维结构一样的困难。 所以,单纯依赖拓扑结构来完成人工智能中常常面临的预测任务,现阶段很有可能会陷入与“量子计算用于人工智能”一样、看上去很美的尴尬境界,因为“ 不是不好,时辰未到”。 不过,理解音乐、艺术、数据中的几何或拓扑结构,对于改善对智能体发育和犯错机制的了解,必将大有裨益。 参考文献: 1. H. McGurk, J. MacDonald. Hearing lips and seeing voices.Nature.264(5588): 746–748. doi : 10.1038/264746a0 . PMID 1012311 , 1976 2. K. P. Körding, U. Beierholm, W. J. Ma, S. Quartz, J. B. Tenenbaum, L. Shams. Causal Inference in Multisensory Percepti on. PLOS, ONE 2(9): e943, 2007 3. D. Tymoczko. The Geometry of Musical Chords. Science 07, 313(5783), pp. 72-74. DOI: 10.1126/science.1126287, Jul 2006 4. D. Tymoczko. A Geometry of Music: Harmony and Counterpoint in the Extended Common Practice. Oxford University Press, 2011 5. H. Edelsbrunner, J. Harer. Persistent Homology—a Survey. Surveys on Discrete and Computational Geometry: Twenty Years Later: AMS-IMS-SIAM Joint Summer Research Conference, Jul 18-22, 2006, Snowbird, Utah. American Mathematical Society, pp. 257-283 6. G. Carlsson, T. Ishkhanov, V. de Silva, A. Zomorodian. On the Local Behavior of Spaces of Natural Images, International Journal of Computer Vision, vol. 76, no. 1, pp. 1-12, 2008 7. J. Zhang, Z. Xie and S. Z. Li. Prime Discriminant Simplicial Complex . IEEE Transactions on Neural Networksand Learning Systems, vol. 24, no.1, pp. 133-144, 2013 � 张军平 2018 年 10 月 26 日 延伸阅读: 15. 爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2700余次,ESI高被引一篇,H指数27.
15858 次阅读|2 个评论
爱犯错的智能体 -- 听觉篇(一):听觉错觉与语音、歌唱的智能分析
热度 2 heruspex 2018-10-22 08:14
京中有善口技者。会宾客大宴,于厅事之东北角,施八尺屏障,口技人坐屏障中,一桌、一椅、一扇、一抚尺而已。众宾团坐。少顷,但闻屏障中抚尺一下,满坐寂然,无敢哗者。 遥闻深巷中犬吠,便有妇人惊觉欠伸,其夫呓语。既而儿醒,大啼。夫亦醒。妇抚儿乳,儿含乳啼,妇拍而呜之。又一大儿醒,絮絮不止。当是时,妇手拍儿声,口中呜声,儿含乳啼声,大儿初醒声,夫叱大儿声,一时齐发,众妙毕备。满坐宾客无不伸颈,侧目,微笑,默叹,以为妙绝。 未几,夫齁声起,妇拍儿亦渐拍渐止。微闻有鼠作作索索,盆器倾侧,妇梦中咳嗽。宾客意少舒,稍稍正坐。 忽一人大呼 火起 ,夫起大呼,妇亦起大呼。两儿齐哭。俄而百千人大呼,百千儿哭,百千犬吠。中间力拉崩倒之声,火爆声,呼呼风声,百千齐作;又夹百千求救声,曳屋许许声,抢夺声,泼水声。凡所应有,无所不有。虽人有百手,手有百指,不能指其一端;人有百口,口有百舌,不能名其一处也。于是宾客无不变色离席,奋袖出臂,两股战战,几欲先走。 忽然抚尺一下,群响毕绝。撤屏视之,一人、一桌、一椅、一扇、一抚尺而已。 节选自《虞初新志》的《口技 》, 林嗣环 ( 清 ) 图 1 : 口技 声音能刻画得如此妙不可言,听觉系统功不可没。就人而言,听觉系统由左右两只耳朵构成,一方面能帮助我们形成立体听觉,有助于辩识声音的位置,另一方面也方便我们在不喜听到某事时,可以一只耳朵进,一只耳朵出。它是除了视觉以外,另一个可以帮助我们实现远距离以及视觉系统不可用时识别目标的感知系统。比如《红楼梦》中描绘的“未见其人先闻其声”,便是林黛玉进贾府初见王熙凤的情形,朗朗的笑声瞬间就把王熙凤的形象树立了起来。另外,因为人的视觉接受外界信号是以光的速度完成的,而接收声音的速度则慢得多。所以,听觉系统还能帮助纠正视觉上的错觉。比如,有些人会看上去是非常的闪亮、聪明,这一印象会一直维持到听到他开口说话为止。于是,为了保证视觉与听觉美感上的“一致”,不少短视频 APP 提供了大量有特色的声音母带。这也是短视频大受欢迎的原因之一。因为对人类文明而言,听觉系统促进了智能体之间的交流和提升了精神生活的档次。 图 2 耳朵结构图 要更具体地了解听觉系统,可参考图 2 。 它包括用于收集声音的耳朵、用于声音传递的外耳道、用于将声音变为振动频率的耳膜、耳蜗内用于将声音转为电脉冲的毛细胞、以及传输电脉冲的听神经和处理声音的听觉中枢。这里毛细胞是听觉细胞,包括 3500 个内毛细胞和 12000 个外毛细胞,以分别处理不同频率的声音。其中,低音部的毛细胞多,高音的相对较少。所以,对年纪大的人来说,首当其冲损失的是高频部分的听力能力。 虽然人的听觉系统中的毛细胞数量和布局,和人的视网膜有得一比。 但由于现有传感器设备的限制, 机器在模仿时都将采集到的声音最终简化成一条曲线似的信号。好处是,多媒体研究最开始着手的方向,就是数字音频处理。随着计算机处理能力的增强,才逐渐将研究重点转移到具有二维结构的数字图像上来。在 1995 年至本世纪初期,曾经有一段时间,计算机学科中一大半的研究生从事的研究方向都与数字图像处理密切相关。说不定,未来等量子计算机研制成功,基本的计算基元从二进制转成连续值后,也许得考虑量子语音处理、量子图像处理了。 撇开这段历史不表,因为声音是多源的、随时间变化的,当声音压缩变成一维的语音信号后,语音处理的难度便大了不少。 早期的语音处理研究是举步维艰的。曾记得 95 年左右的微软曾出过一版语音识别软件,识别的性能远低于期望,很快就被市场淡忘。当年在连续语音识别的主要方法,包括统计学领域 60 年代、后在 70 年代中期被挪到语音领域的隐马尔可夫模型, 和多个高斯分布组合的多元混合高斯模型。其中,隐马尔可夫模型假定了声音时间序列的前后时刻具有相关性,即马尔可夫过程。同时,假定这些相关性由一组隐含的变量控制。将这些性质构成网络后,便形成了隐马尔可夫模型。尽管模型结构有细微变化 ,但主体思想仍旧,曾在语音分析领域引领风骚数十年。一直到近年来的深度学习的出现,语音识别也由于预测性能的显著提高而随之走向全面实用化。 但实用化并不意味着听觉系统就完全被了解清楚了,里面仍有许多不明的机理,如听觉错觉。同时,语音识别本身也还存在一些目前难以解决的问题。第三,人类在说话以外,还发展了音乐这样独一无二的能力,尤其是唱歌。理解唱歌,对于理解智能体本身也是有帮助的。本节中,我将从此三方面展开介绍。 一、听觉错觉 听觉系统和视觉系统一样,虽然有效,但同样存在不少有意思的错觉。这些错觉既有来自听觉系统的,也有来自大脑生理或心理感受的,还有来自外部经过特殊设计诱导的。 来自听学系统的通常是功能性退化引起的。举例来说,当外界不存在声源输入时,而人又能感受到声音信息时,就是听觉系统本身出了问题,可大可小。比较常见的是耳鸣,一些神经官能症患者或神经衰弱的人会比较容易出现这种问题。它产生的原因,一直是众说纷纭,有认为是大脑听觉中枢存在问题所致,也有认为与传导声音的神经通道在无信号时的活动有关。后一观点里,比较有意思的一个研究成果是美国约翰 - 霍普金斯小组德怀特 • 彼格斯等最近做出的。他们在听力还没发育成熟的小鼠上进行了实验,发现耳鸣的发生可能与听觉系统早期阶段,非感觉性毛细胞,即支撑细胞有直接联系。他们认为,在听觉系统未成熟前,这些支撑细胞会本能释放 ATP 能量分子 ( 腺苷三磷酸 ) ,形成电信号输入大脑。这些电信号在发育初期听起来就象是噪声,可用于帮助听觉系统尽早做好准备。从我的感觉来看,这种准备就像听觉系统的自检,和人晚上睡觉偶尔会蹬腿是为了自检人是否还活着一个道理。而到长大以后,这种自检偶尔还会被触发。频率发生过高的则有可能形成持续性耳鸣的疾病。所以,了解耳鸣的形成机理也许有助于理解人听觉系统的早期发育。 除了这种耳鸣外,人甚至可以在不使用听觉系统时,也能感受到声音。比如, 你沉思的时候,那个在你脑袋里说话的声音,是谁发出的呢? 另一种错觉是人对声音美感的感知。它包括说话声和唱歌两种错觉。 在日常生活中,说话人错觉更为常见。人们总是对自己的声音比较满意,直到听到通过录音方式播放出来的声音后,才发现与自己以为听到的还有点差距,有时会觉得录音机里播出来的声音会更难听一些。其原因有两个,一是因为人在听自己声音的时候,声音是通过颅骨传至内耳再进入听觉中枢的。而其他人听到的声音,与录音机通过空气介质传播获得的相同。传播媒介不同,自然会有些差异。另一个原因可能是人类会习惯把自己的声音标定得更美好一些。在 2000 年两位心理学家 Dunning 和 Kruger 提出的、获得了《搞笑诺贝尔心理学奖》的达克效应 (Dunning-Kruger Effect) 可以部分解释这一现象。简单来说,人容易沉静在自我营造的虚幻优势之中,过高估计自己的能力,属于一种认知偏差。因此,人也会在大脑中自动地美化自己的声音。 二、语音识别及相关应用 抛去错觉不提,语音识别本身有许多细分和衍生的应用值得研究。应用面最宽的当数语音转换文字,可以是同一语种,也可以是跨语种。同语种的转换,在深度学习出来后,性能确实有了一个质的飞跃, 在识别性能和用于语音搜索方面都已经不是 90 年代可比拟的了。不过,现阶段的水平也并非完全能替代其它输入设备,仍存在一些无法有效解读的场景。以中文为例,汉字的数量超过 8 万个,常用的约 3500 个,但汉字重音率特别高,只有 1600 多个。两个数量相比,便可以知道中文语音转换文字的难度有多高。极端情况下,可以参考“中国现代语言学之父”赵元任( 1892.11.3 — 1982.2.24 )当年写过的三首诗,《施氏食狮史》、《熙戏犀》和《季姬击鸡记》。其中一首于 1930 年在美国写的《施氏食狮史》如下: 石室诗士施氏,嗜狮,誓食十狮。施氏时时适市视狮。十时,适十狮适市。是时,适施氏适市。施氏视是十狮,恃矢势,使是十狮逝世。氏拾是十狮尸,适石室。石室湿,氏使侍拭石室。石室拭,氏始试食是十狮尸。食时,始识是十狮尸,实十石狮尸。试释是事。 这段几乎完全同音的文字,机器目前仍很难根据语音将其转成有效文字的。如果通过目前正流行的知识图谱来对重音字进行辅助解释,也许可以部分解决这一问题,对于打字不方便的人来说,是比较好的选择。但对于熟悉打字的,引入知识图谱这样的操作会浪费大量不必要的时间。尤其像上例这种情况,知识图谱能做的是每个单字可能都需要做解释,显然还不如打字来得快 。 而跨语种的翻译,国内外都在做,也有一些小型配套硬件被推出,但离同声翻译的距离还很远,因此它不仅仅是语音识别的问题,还涉及到更复杂的自然语言处理,以及广泛的背景知识。 语音也可以用于人身份的识别。尽管不如识别人的外表如人脸那么形象直观,但仍然是重要的生物认证方式之一,在反电话诈骗也有潜在的应用。语音与视频结合还能实现计算机读唇语,这一技术对于听力有障碍且交流困难的人尤其是聋哑人将有所帮助。 三、歌唱识别 人类听觉系统除了用于交流、识别和警示外,还进化了一种可能只有人类才具有的高级智能,就是音乐,如独唱合唱、乐器独奏合奏等。其中,唱歌是最容易又是最难的“乐器”。因为随便谁都能唱,唱得好是“余音绕梁,三日不绝”,反之也可能会“呕哑嘲哳难为听”。与语音识别相比,歌唱的分析有更多的困难要克服,原因可以从两个方面来解释。 1 、与说话的区别 人在说语时多以声带振动来发声,音调、频率都在人最自然的发声区,偶尔有些人会用腹式呼吸来增强声音的厚度和减少声带的疲劳。即使情绪波动会影响发声,但一般变化 也不会太大。 而唱歌则需要比较多的技巧,有着与说话显著不同的特点。首先,唱歌的音域变化范围很宽。比如俄罗斯男歌手维塔斯能从最低音到最高音唱跨四个八度,最高的声音能跟开水壶烧开水发的声音一样高,非常的厉害。不过我也能,多啦米发嗦拉希多,重复五次,也有五个八度。其次,共鸣腔的运用上唱歌和讲话的区别也非常之大。比如唱歌时用的头部共鸣,有从鼻腔和后脑勺位置发声共鸣的区别,这两者导致的音色差别很大。要根据歌曲风格不同来取舍,老百姓常听到的美声唱法喜欢把头腔共鸣置后。如果留意看歌星唱歌,有些人唱高音的时候会挤眉弄眼,鼻子皱了起来,那其实就是在找高音共鸣的位置。为了歌曲表达的厚度,光靠头腔还不够,因为会比较单薄,还得利用胸腔共鸣加强中低音区的共鸣。如果想把音域再提高,还可以学习用咽音技巧来发声。而低音比如呼麦的唱法则要把气运到声带附近振动发声。第三,气息也是造成说话和唱歌区别变大的地方。歌曲中有些歌词特别长,只用平时说话那种比较浅的胸式呼吸往往很难保持旋律的稳定和连续性,所以需要借助胸腹式呼吸以及更复杂的换气技巧;第四,不像说话一般是四平八稳的,歌曲的节奏变化很丰富,一首歌里可能快慢缓急都会出现;第五,对歌词的理解和情感的投入也会使唱歌与说话有显著的差别;第六,连读问题。中文歌词相对好一些,但英文在唱歌中的连读就多得多了。 关于唱歌和说话,人们可能还会有个错觉,以为口吃的人唱歌一定唱不好。但实际上这两者属于不同的发声机制。说话是需要思考要讲的内容,并进行语言组织,再说出来。而唱歌通常是歌曲的语调、语速和语气都已经给定,人需要做的是将这些内容经过反复练习后复述即可。所以,口吃的人可以,试着通过学习唱歌来找到流利发声的自信。 唱歌和说话的这些区别,使得唱歌中的语音识别变得尤其困难,但因此也衍生了更多的与语音和智能相关的应用。 2 、如何评价歌曲的美 唱歌对多数人来说,是缓解心情的方式之一。听到喜欢的歌,学来便唱了。可是唱得好不好呢?很多人并不太清楚,对自己的歌声也比较“自信” ,我也是如此 。另外, 什么样的歌才可以定义为好听的歌曲呢? 音乐里面定义好听与否,有个与频率 f 相关的通用法则。这是日本著名物理学家武者利光于 1965 年在应用物理学会杂志发表的文章“生物信息和 1/f 起伏”中提出的 1/ f 波动原则。波动或起伏指在某个物理量在宏观平均值附近的随机变化,其原则在很多领域都适用。就音乐来说, 1/f 表明旋律在局部可以呈现无序状态,而在宏观上具有某种相关性的,可以让人感到舒适和谐的波动。如邓丽君的《甜蜜蜜》、《小城故事》等就是符合 1/f 波动原则的曲子,所以大家很喜欢听。但这一理论只适用解释比较舒缓的歌曲。对于其它形式的音乐风格,如摇滚、说唱等,则是因为其蕴含的律动能帮助人宣泄和抒发心情有关 。更有甚者,还有完全背离 1/f 波动原则的歌曲,如甲壳虫乐队 (The Beatle) 主唱约翰·列侬老婆小野洋子 (Yoko Ono) 在纽约的现代艺术博物馆演唱的、几乎接近噪声的实验歌曲《 Fireworks 》(原唱 Katy Perry )。当然,国内也有类似的,有兴趣的不妨听听左小祖咒的《六枝花》。 为帮助评估音乐是否好听,科学家们还提出了一些心理声学的定性和定量指标,如基于粗糙度、尖锐度、波动度和音调等声学特征组合构成的“烦恼度”和“感知愉悦度”等复合声学指标。但不管如何约定,声音的感知仍是以个体的主观感受为评价,公众认同的并不见得能用于刻画小众的审美观点 。有人喜欢粗犷低沉的声音,有人喜欢清澈如水的,有人喜欢嘹亮的,有人喜欢委婉的,有人喜欢稀奇古怪的,有人喜欢平铺直叙,有人喜欢口水歌,有人喜欢阳春白雪。音乐风格的多样性和个性化色彩的浓郁,使得人工智能很难真正地形成统一的客观标准来替代这一领域的工作。 3 、歌曲 / 歌唱的相关应用 虽然歌曲 / 歌唱的分析显然比单纯的语音识别复杂、难度高,但在人工智能领域还是有一些相关的应用。这里列举几个比较有应用价值的。一是歌曲哼唱识别,这是目前多数提供音乐的平台有或者正在尝试做的一项功能。其任务是要根据局部片段的旋律,来识别可能的曲子。难点在于,并非每个人都能准确地把旋律哼出来。多数采用这种方式找曲子的,原因可能是不记得歌名,或者只是一段遥远的旋律记忆。其次,人的发音频率、说话的清晰度和原唱都有一定的差异。所以,哼唱识别的任务是要从不精确的哼唱中找到有效的候选集。 除了哼唱,另一个重要的应用是自动调音。一是因为很少有人能具有绝对音高的能力,即使经过专业训练,仍然可能不稳。二是多数人的音准和稳定性是存在问题的。而喜爱唱歌的人又多,所以,自动调音对于专业歌手和业余爱好者都有很大的应用市场。但由于音乐的风格往往千变万化,而且还要学习和增强每个人特有的辨识度和个性化音色,所以,利用人工智能技术构造自动调音师的难度显而易见。 另外,音乐声与人声分离也是一个极其重要的研究方向。人类在这方面的能力非常强,可以在非常嘈杂的环境中轻松选择自己关注的声音来聆听。 1953 年 Cherry 将人类听觉注意引发的这一现象称为鸡尾酒会效应 (Cocktail Party Effect) 。虽然这一问题提出了半个多世纪,人工智能要实现和人相近的辨识能力还很难。因为获取的音频信号一般是经过多个声源混合而成的一维的音频信号,但要分离出原来的多个信号源是一对多的病态问题。在人工智能领域通常会假定这些信息源是相互独立的,且不符合之前提过的高斯分布,输出结果为这些信息源的加权组合。信息源的分离,又称为盲源分离,早先的做法是利用机器学习和模式识别领域的独立分量分析 (Independent Component Analysis) 的技术或其改进版来实现,但这一方法的不足是收敛速度慢,且难以获得唯一解。最近深度学习在这一方向上也有了长足的进步。如“谷歌研究” 2018 年八月在图形学顶级期刊 ACM ToG 上公布的最新成果。作者 Ephrat 等将音 视频结 合起来,分 别对视频和音频采用两个深度学习模型提取各自特征。 融合特征后,再用一个考虑时间变化的长短时记忆深度模型 LSTM 来刻画音视频的时序特性,最后为每个说话者都采用两个不同的解码系统来分离音频和视频。该模型达到了目前的最佳效果,离模拟人类的鸡尾酒会效应又进了一步。但其仍存在一些不足,主要有两点。一是需要借助视频,所以,人脸必须出现在画面里帮助定位声音源,这与人在鸡尾酒会上并不需要视觉的帮助来定位相比还是要弱不少。其次,该研究还没有涉及歌声和乐器声分离这一类更难的问题。 � 图 3 : (a) 输入的视频帧与音频; (b) 处理思路:分别提取视频、音频特征,并执行音视频源分离; (c): 为每个说话者输出干净的音频 当然,基于人工智能的音乐分析还有很多其他有意思的应用,如计算机作曲 / 写歌词、设计像洛天依一样的唱歌机器人等等。但总体来看,人类作者写出的歌词、旋律的意境往往具有更好的整体性和更强的逻辑性,而计算机模拟的目前还只能做到局部逼近,在大局观、整体情绪情感的把握上仍然任重道远,也许现阶段考虑与人的混合智能处理是不错的尝试。 那么,音乐中还有没有其他比较有意思的错觉呢?下回书表! 参考文献: 1. Ariel Ephrat, Inbar Mosseri, Oran Lang, Tali Dekel, Kevin Wilson, Avinatan Hassidim, William T. Freeman, Michael Rubinstein. Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation. ACM Trans. Graph. 37(4): 112:1-112:11, Aug, 2018. arXiv:1804.03619v2 张军平 2018 年 10 月 22 日 延伸阅读: 14. 爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2700余次,ESI高被引一篇,H指数27.
8098 次阅读|4 个评论
爱犯错的智能体 – 视觉篇(十一):主观时间与运动错觉
热度 4 heruspex 2018-10-18 08:30
混沌初开,乾坤始奠。气之轻清上浮者为天,气之重浊下凝者为地。 这是明末的启蒙书《幼学琼林》中的开篇,它揣测了空间和时间的开始状态。其中乾坤意指天地和阴阳,而阴阳的解读是时间。所谓“天干,犹木之干,强而为阳;地支,犹木之枝,弱而为阴”,(十)天干(十二)地支是古代纪年历法的组成,在殷墟的甲骨文就有记载。 我们现在常说的宇宙,和乾坤是同义的。宇指上下四方,是空间。宙指古往今来,是时间,联起来就是空时。不过这么说比较拗口,所以人们一般认为宇宙字面上是对应时空。 空间是客观存在的,人的视觉却是主观的,所以人的能动性在增强对空间感知能力的同时,会产生错觉。时间也是客观存在的,且是单向的,目前一直在向前。不过在爱因斯坦的狭义相对论里,时间并非是完全孤立的变量。按其公式推算,当飞船以近光速的速度进行星际旅行时,飞船上的时间会变慢。所以,才会有 双生子佯谬 ,因为时间并非绝对的,它受运动速度的影响。不仅如此,人也会对时间产生主观的感受。成语中有“度日如年”的描述,这在课堂上听不懂老师讲课内容时尤为常见,我在中学时代对此感受颇深。 图 1 双生子佯谬 时间的主观感受不仅会让时间变“慢”,也可能会产生“逆向”的时间错觉。因为运动与时间的变化相关,时间感受的主观性又直接影响了对运动的感受 , 形成了运动错觉,它直接影响了智能体对世界的某些感知。 一、运动错觉 运动错觉常指“在一定条件下将客观静止的物体看成运动的错觉”,但更广义来看,它包含了时间主观感觉引发的错觉。因此,这类错觉既有源自静止目标的,也有源自运动目标的运动错觉。从文献来看,前者又可细分为四种错觉:动景运动 、自主运动、诱导运动和运动后效 。 动景运动 与人的视觉暂留现象 (Persistence of vision)有关,也称为“余晖效应”,是1824年由英国伦敦大学教授皮特 • 马克 • 罗葛特在《移动物体的视觉暂留现象》中最早提出的。如其它错觉一样,“视觉暂留”的内在机理,是以大脑为中心还是以眼睛为中心产生的,并没有得到统一的结论。但其现象大致可以描述成,人眼在观察物体时,光信号在传入大脑视觉中枢时,需要经过一个短暂的时间。而在光信号结束后,由于视神经的反应速度和惰性,视觉形象并不会马上消失,而是会继续在时间轴上延长存储一段时间。这种残留的视觉称为“后像”,而这个现象则称为“视觉暂留”。 图 2: 走马灯图例(网图) 它在很多场合都有着有意思或重要的应用。最早有记载的是宋代的走马灯。据说当年王安石在科场上对主考官出的联“飞虎旗,旗飞虎,旗卷虎藏身”,便是以其在马员外门口看到的联“走马灯,灯走马,灯熄马停步”来应对的,最终还因此取了马员外的女儿,情场考场双得意。如今我们看的电影和动画,都与视觉暂留现象有关。虽然每张胶片的内容都是固定不变的,但人在观察画或物体后,在 0.1-0.4秒内不会消失。于是通过三十帧每秒的连续播放,视觉暂留现象会让人对电影的内容产生了 动景运动 的错觉,形成连续性变化的感知。 据说,人在谋杀后,眼睛瞳孔会留下凶手的影子。去年日本某公司还基于这一假设对监控录像中的人眼瞳孔图像进行放大、锐化处理,以提取受害人或路人看到的画面,并从中提取犯罪嫌疑人的形象,或车牌号码等信息。 除了动景运动的错觉,人在注视目标过久时,会因为机体无法长期保持同一姿态而产生不由自主的运动,尤其是眼球的细微运动。而这种运动会被反映到视网膜上,让视觉中枢错以为是目标在运动,称为 自主运动 。比如在黑暗的密室玩恐怖解谜游戏的时候,长时间盯着某个带亮光的物体时如蜡烛的烛光,有可能就会产生物体在移动的错觉。因而,无形中增加了游戏的恐惧感。当然,要解决这一恐惧的关键也很简单,换下关注的目标,或增加参照物即可。 既然生活在物理世界,人的视觉也会受运动的相对性影响,而形成 诱导运动 。比如停在车站的两辆高铁。人坐在其中一辆里,明明自己的车开了,却会以为是另一辆仍停着的车开动了。这种相对性是受周边环境的运动诱导而形成的。如果焦点随运动的物体同步变化,另一个静止的就会被误以为在运动。中国古代的禅宗六祖慧能的故事中,更是把对这一现象的理解做了升华: 一天, 风扬起寺庙的旗幡,两个和尚在争论到底是“风动”还是“幡动”?慧能说:“既非风动,亦非幡动,仁者心动耳。” 图 3 风动还是幡动?(网图) 另外,当目标进行高速运动时,人的视觉会对运动的状态产生错误判断,即形成运动停滞甚至反转的 运动后效 错觉。如观察飞行中直升飞机的旋翼,会感觉每片叶子都能看清楚,且在慢慢地反向转动。 现在有些做机器制图的机器臂,高速状态也能达到类似的效果。 不仅会出现运动后效,人的视觉或感知系统有时候还能主导运动的方向。最近网上流行的一个旋转舞者的雕像动图就是这样的例子,如图 4。稍做学习,你就能做到任意控制其旋转的方向。这种 循环错觉 应该是来源于选择关注点前后次序的策略(窍门:盯不同脚会产生不同的旋转方向),也可以理解成主观时间先后顺序选择的结果。 图 4 旋转的跳舞舞者 除了这些错误外,当对具有特殊结构的运动目标进行遮挡时,会形成 遮挡错觉, 导致对运动目标的整体结构或方向产生错误判断。值得指出的是,这种一叶障目的错觉不止是视觉上会出现,在人工智能的很多应用中都可能碰到。比如现在流行的智能城市的交通控制,如果只对一个路口进行交通流量优化,很有可能当前路口的通畅会导致更大范围的拥堵。 还有一个比较有意思的错觉,是关注点集中时产生的 光流错觉 。飞行员在驾驶飞机降落时,需要寻找着陆跑道。当其以着陆点为焦点来调整飞机航向时,着陆点会静止不动,而周围环境则会产生长度不一但有规律的光影。就像拍运动照片时,镜头跟随跑步中的运动员同步拍摄时,运动员会保持清晰成像,而周围影像产生同方向的光影一样。这种光流错觉可以帮助飞行员准确的确定飞机的着陆位置。 当然,可列举的运动错觉还有很多,如图 5中目标边缘形成的边缘运动错觉、据说能测试人的精神状态的“旋转”的圆盘、扭曲的圆点阵列等等,就不一一枚举了。但不管是哪种,错觉都与人视觉中枢理解的“时间和空间”与客观的“时间和空间”存在错位有密切关系,也与每个人先前习得的经验有关。在多数情况,大脑对信息的加工处理都是合理、有效的,但在输入信息出现特殊结构,则可能出现反常感知或被误导,形成运动错觉。 图 5 其他错觉图( www.psychspace.com ) 那么,这些错觉有没有可能让机器学习或进行有效分类了?如果能做到,也许对人工智能和机器视觉模仿和理解人的视觉处理能力上会有巨大的帮助。 2018年10月,位于美国肯塔基的Louisville大学的Robert Williams和Roman Yampolskiy报告了他们的尝试结果 。他们构造了一个超过6000张光学错觉图像的数据集,期望通过深度网络来实现有效分类和生成一些有意思的视觉错觉图。不过很遗憾,在显卡Nvidia Tesla K80训练了7小时的实验并没有带来任何有价值的信息。尽管深度学习要求的硬件算力已经没有问题了,但对这个任务的学习性能远不如现在的上千万级数据规模的人脸识别和图像检索理想。他们推测,一个可能的原因是能找到的光学幻觉/错觉照片少,如果再细分类别就更少了,在小样本意义下的深度学习可能不是太有效。另一个可能的原因是现有的机器还不能完全理解为什么会有这些错觉,因此要通过如生成对抗网生成新的光学幻觉/错觉也很难。这也许是机器视觉还不能征服的人类视觉的堡垒之一 。 二、时空/时频不确定性 时空的主观感受可以引起各种感知上的错觉。事实上,不论是客观还是主观,时空之间都存在某种关联,而对这一关联性的极致解释是海森堡于 1927年提出的不确定性原理(Uncertainty principle)或“测不准原理”。粗略来讲,即粒子的位置与动量不可同时被确定。前者与空间有关,后者与时间有关。在这两个不同域里,一个域的参数越确定,另一个域的参数不确定的程度就越大。 巧合的是,在人工智能领域,有三个重要的理论也能看到这种不确定性的影子。 最早思考这种关联 性的是远在 1807年的数学家傅里 叶。他提出了一个当时匪夷所思的概念,即 任何连续周期信号可以由一组适当的正弦(即三角函数)曲线组合而成, 称为傅里叶变换。这个时频变换的理论,对当时数学界的震憾一点也不亚于对欧几里得第五公设的推翻。不过,后来逐渐揭示的事实让大家都明白了,这种加权组合的傅里叶变换是合理的。该论文经过不少波折,最终收录在 1822年发表的《热的解析理论》中。在傅里叶变换中,不同周期的三角函数可以视为在频率意义的基函数,就象三维空间中的长、宽、高一样。通过傅里叶变换后,样本在时间中的描述就转变成频率空间不同频率分量的幅度大小。 图 6 傅里叶变换: 任何连续周期信号 (如最下方的曲线)可以由一组适当的正弦(即三角函数)曲线(上方的四条曲线)组合而成 尽管在二百年前已被提出,但真正用于人工智能相关领域还是在数字语音、数字图像出现以后。科学家们发现了很多在原来的时间 /空间域下不能很好解决的问题,比如周期噪声的去噪、图像/视频压缩等, 通过傅里叶变换转到空间后,在频率意义下却能轻松处理和实现性能的有效提升。 后来,科学家们又发现只将空间或时间域信号转换至频率空间,而不去深究频率的高度和宽度似乎有些粗糙,于是又对频率域引入了多尺度的变化,便有了小波变换这一理论体系。直观来说,小波变换在频率的取值上,就像音乐中的五线谱,有些频率可以取二分音符,有些能取四分,有些能取十六分音符,如此这般,而傅里叶变换只是简单的给定了音调,但却把所有音调的长度都设为固定不变。小波变换这种多尺度的技术用于刻画自然图像或其他数据时,较傅里叶变换有了更精细的频率表达,这一技术也被用于构成了 JPEG2000的图像压缩标准。 在傅里叶变换和小波变换的发展中,科学家们也发现了一个现象,原时间 /空间域的信号间隔越宽时,对应的频率域信号间隔会越稠密,反之亦然。两者呈现类似于海森堡不确定性原理的对立。 图 7 海森堡不确定原理在傅里叶、小波中的体现 :左:图像的时频特性;中:傅里叶变换的时频特性;右:小波的时频特性。从图中可以看出时间和频率之间的平衡。图像上的每个像素点在吸收全部频率在给定时间上获得的值;傅里叶变换是在给定频率,将全部时间的值累积的结果;而小波则反应了两者的折衷,时间窗口宽,则频率窄,反之亦然。 基于这个观察,科学家们推测如果要提高人工智域很关心的可解释性,最直观的策略是将原空间的数据变换至一个能让特征数量变得极其稀疏的空间。但天下没有免费的午餐,有稀疏必然意味着在某个地方付出稠密的代价。这就是在 2000年左右提出的压缩传感(Compressive Sensing)或稀疏学习理论的主要思想。值得一提的是,完善压缩传感理论的贡献人之一是据说智商高达160、拿过菲尔兹奖的华裔数学家陶哲轩。该理论最有意思的一点就是把基函数变成了一个如高斯分布形成的随机噪声矩阵,在这个矩阵里,每个点的分布是随机、无规律的,因而可以视为稠密的。通过这样的处理,一大批压缩传感或稀疏学习方法被提出,并获得了不错的稀疏解。 不管采用哪种方法,傅里叶、小波还是稀疏学习,都能看出类似于时间换空间、两者不可能同时完美的影子。这种情况可以视为人工智能领域在时空 /时频意义下的“海森堡(Heisenberg)不确定原理”。 最近十年的人工智能研究非常关心预测性能的提升,但也希望能获得好的可解释性,如通过深度网络获得相应任务的学习表示 (Learning Representation)。这也是近几年出现的深度网络主流会议,把会议名字约定为国际学习表示会议ICLR(International Conference on Learning Representation)而非深度学习会议的初衷之一。 但是否能学到有效的学习表示,能否从运动错觉中找到可能的线索或答案,能否在类似于海森堡不确定原理的框架下发展新的理论算法、发现智能体的秘密,是值得思考的。 参考文献: 1、 张天蓉 .读懂相对论,著名的双生子佯谬到底有几个意思. http://chuansong.me/n/1603989 2、 黄希庭.心理学导论.北京:人民教育出版社, 2007:255-259 3、 Robert Max Williams,Roman V.Yampolskiy.Optical Illusions Images Dataset.axiv: 1810.00415,Oct, 2018 4、 Gonzalez R. C., Woods E. R., Digital Image Processing (Third Edition). 2017. 电子工业出版社 张军平 2018年10月18日 延伸阅读: 13. 爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2700余次,ESI高被引一篇,H指数27.
10441 次阅读|8 个评论
爱犯错的智能体 -- 视觉篇(十):自举的视觉与心智
热度 1 heruspex 2018-10-12 09:14
一个鼻子又高又长的小个子干瘦老头,倚着一块石头坐着。他眼睛看着欢腾跳动的火舌,讲起了人们从来没有听到过的奇妙故事。听他讲故事的人,不时笑得前仰后合。   “敏豪生,可真行啊,奇事都让你遇上了!” 但是敏豪生不在乎大家信不信他讲的,等笑声一停,他又接着讲下去。。。 图 1 敏豪生抓着自己的头发把马和自己从泥沼里拔出来 抓着自己的头发从泥沼里拔出来   一次,我们受到凶猛追击。我决定骑马穿过沼泽地。然而,我的马匹跑得太累了,本来可以跳过沼泽泥淖的,这会儿却没能跳过去,噗的一声落入泥淖中,陷在里头,动弹不得了。   身下的马带着我往下沉。我那匹马的肚皮已经陷在污泥里了。不能指望谁来拉我们出去。泥淖把我们越来越深地往下吸、往下拉。危险极了,可怕极了。眼看马整个儿陷进了险恶的泥淖,很快,我的头也开始埋进沼泽的污泥之中。只有我的这顶军官帽还露在泥淖上面。   看来我们是没救了,我们必死无疑。还好,我急中生智,一下想起我的双手有惊人的力量。我一把抓起我自己的头发,用尽全身的力气把自己往上拽。我毫不费力地把自己从泥淖中拔了出来,而且顺带还把我的马也往上拽。我的双腿铁钩一般的强有力,把马肚拨了出来。 这可不是如你们所想象的那样,是一件轻而易举的事哟!要不信,你们倒是自个儿试试,看能不能抓住自己的头发一下就把自己提向空中。 ----摘自《敏豪生奇遇记》 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 《敏豪生奇游记》原为德国民间故事,又名《吹牛大王历险记》,后由德国埃•拉斯伯和戈•毕尔格两位作家再创作而成。这则故事传递了一个概念,叫“自举”,能找到的对应英文名是“ Bootstrap”,意思是 “to pull oneself up by one’s bootstrap”, 白话就是“拨鞋法”。在这个故事里,敏豪通过“自举”逃出了沼泽,安全地进入了下一个吹牛环节。看似挺荒谬的情节,那在智能体和人工智能领域有没有类似的存在呢? 一、自举的视觉 要用到自举,无非是自身的能力受限,才得想办法扩展。人的视觉就是如此,在很多方面不是那么尽如人意的。它不如鹰的眼睛那么敏锐、能在运动状态下从 10公里的高空及时发现草丛里的猎物,也不如蜜蜂能区分紫外线波段白色花的差异,也不能像响尾蛇一样感受红外端的热能。 不过人也有一些奇特的感知能力,比如传说中的“第三只眼”、“背后的眼睛”,有科学家将其称为盲视,即身体上的其它感观系统感受到了周边潜在的变化,却没有经过视皮层的脑区进行加工产生的下意识反应,但人会“以为”自己看到了。尤其是女性,可能冷不盯会觉得背后有人在看她,而且经常发现感觉是对的,这说不定就与“盲视”有关。世界著名的漫画书《丁丁历险记》之《蓝莲花》也描绘过这种“盲视”的情形,见图 1。当然,这些“盲视”的情况也可能是心理作用引起的,目前并无定论。 图 2 杜邦、杜帮和丁丁在1937年左右的上海街头(取自《丁丁历险记》之《蓝莲花》) 不管是否有神奇能力,人的视觉有很多不足。在光的强度上只能感受 10的2次方的变化,而自然界的光强是从10的负4次方到10的6次方,近10的10次方量级的变化。于是,人的视觉多了个“亮度自适应”的自举功能。这是人最常用的能力。比如走进电影院时,开始一片漆黑,过了一段时间,人的眼睛逐渐适应了,便能看清楚周边的环境了。更严格地话,这一能力可用图3来说明。 图 3 亮度自适应:白昼视觉与夜视觉 。横坐标:光强的对数;纵坐标:主观亮度 图中横坐标是光强的对数,即 10个数量级;纵坐标反应了人眼的适应能力以及主观感受的亮度变化。白昼视觉(Photopic)的感光范围从10的负2次方到10的4次方,夜昼视觉从10的负6次方到10的0次方。人的视觉可在给定Ba的强度值时,在Bb的正负区间内形成感光,但可以根据Ba的变化来进行自适应。一旦到了夜视觉(Scotopic)区间时,视力会按夜视觉的曲线来感知环境。 人类亮度自适应的机理是什么呢?它和猫通过自动调节瞳孔的大小来适应不同的光照变化的机理不同,是通过后端的视神经元的分工协作来实现的。白昼视觉主要由光线落在视网膜焦点、即中央凹处的视锥细胞完成,夜视觉则由主要分布在中央凹以外的视杆细胞来实现。 别小看这点自适应,现在的图像处理在处理光强差异大的场景时仍然是一筹莫展。比如白天,各位不妨拿手机从室内拍下室外的场景,看看是否能保证室内室外都能成像清晰,明暗分明?再比如,在地下停车场的外面,摄像头是否能把停车场里外都同时监测? 当然,这种自适应有时候也会带来风险。比如在晚上开车,突然对面过了一辆开着远光灯的车,那么驾驶员在视觉上会直接被误导到白昼视觉,而无法看清黑暗环境里的人或其他目标。这种“瞬间致盲”极易导致交通意外的发生。 除此以外,人的视觉对边缘的反应也有自举的表现。图 4左图是一组光的强度按宽度逐渐变化构成的。将其强度的柱状图画出来,就象一组台阶。然而,有实验表明,人在感知时,会在两个相邻的强度级的连接处产生“感受到”的向上和向下的强度变化,称之为“马赫效应”,可以称其为伪边缘。这种伪边缘的出现,可拉开相邻目标或前景、背景之间的差异,使轮廓会变得更清晰,继而能帮助人类更好地区分目标和背景或其他目标。 图 4 左图:马赫效应 ;右图:牙齿X光片(网图) 然而,马赫效应形成的伪边缘有时候也能产生错觉。比如这张戴着牙套的牙齿 X光片,如果不熟悉牙齿的基本构造,一个刚上岗的X片读片员很容易以为这些牙齿都出现了断裂,因为每颗牙齿上都有两种不同的灰度。而这种断裂就是马赫效应形成的错觉。其真正的原因是牙齿包含牙釉质和牙本质,两者的密度不同,因而X光通过后,会在感光片上形成不同的光强值,相邻、有差异的光强值会诱导出伪边缘现象,导致经验不足的医生产生误判。 不仅相邻黑、白、灰度的差异会形成边缘错觉,相邻亮度、颜色的对比还会形成对亮度和色彩的判断错觉,如图 5所示。图像处理领域将其称为“同时对比”现象,也有些领域将其称为“色彩错觉”。其原因在于人的视觉系统易受周围环境色彩的影响,在色彩对比因素存在的前提下,对关注的色彩或灰度产生深浅不一的错觉。从某种意义来讲,这种错觉可能为了提升人对所关注目标的显著程度而形成的。不过,负面效果就是不容易形成统一的色视觉判定结论,因为人的色彩视觉是主观而非客观的,比如图6中的衣服颜色就曾经引起过很多人的讨论。 图 5 同时对比现象:左:灰度图的同时对比;右:彩色图的同时对比 图 6 衣服是什么条纹的?黑蓝、黄白还是其他? 二、自举的人工智能方法 人类的视觉系统能通过自举来提高感知外部世界的能力,那么人工智能中有没有类似的机制呢? 从现有的理论体系来看,在数据的分布存在自举式模拟,分布加权以及数据不足时也存在自举的办法,但这些都与视觉中的自举大相径庭。具体如下: 1、 数据分布的自举 实现人工智能的一个必要步骤是学习,从数据中学习。但数据的分布是什么样的?并非一开始就明了。所以,一般会假设数据服从某个分布。比如像许愿池中扔的硬币一样,如图7,中间密周边逐渐稀少,这就是传说中的、人工智能领域最常用的高斯分布,因为他能极大方便后面的各种处理。 可是分布是多种多样的,也并非所有情况下,分布都能精确且事先知道。但做数据分析或设计人工智能算法时又需要有分布的形式,于是科学家们就设计了一种自举的技术去逼近真实的分布。粗略来说,就像玩扑克牌一样,每次抽玩牌再放回去。在给定了牌 /数据的前提下,通过对牌/数据进行反复的抽样,每次都有放回的抽一组和原始牌/数据数量相同的数据,获得的数据集称为自举或再抽样样本集。 重复这一自举方式,通过分析其稳定性,就能比较好地逼近数据的真实分布。这是数据分布的自举 ,称为Bootstrap方法,最初由美国斯坦福大学统计学教授Efron在1977年提出,为小样本或小数据量来增广样本提供了好的办法。在此基础上,后来发展了大量的改进型“自举”方法,都是期望能更好地从局部推测总体的分布。 图 7 左:掷硬币掷出的高斯分布;右:《赌侠》剧照 2、基于数据分布加权的自举 另一个自举是针对分类任务的,比如识别张三和李四的人脸图像。传统的方法往往假定每张图像或数据在分布中是等权重的。这种假设的不足在于,不容易区分容易分错的数据。于是1995年Yoav Freund就提出了Boosting算法, 通过同时组合多个较弱分类能力的分类器来改进分类性能 。1996年在此基础上Freund和Schapire提出了当年红遍机器学习及相关领域的Adaboost算法 。基于多个弱分类器的集成,该算法实现了优异的预测性能。在此背后,一个最重要的原因就是他会根据每个弱分类器的预测情况, 对容易分错的样本给予更高的权重,从而确保其在下一轮采样时更容易出现或被采集到 ,直到获得精确的预测结果。这个针对数据错分的自举,最终成为了机器学习最成功且实用的经典算法之一。至于其在分类能力上成功的机理,尽管机器学习的著名期刊JMLR(Journal of Machine Learning Research)曾有一批学者来进行多角度的分析,真实和公认的原因仍未知。但其受到了自举的启发是毋庸置疑的。 3、数据不足的对抗自举 近年来,为了能进一步提高深度网络的性能,Ian Goodfellow2014年提出了生成式对抗网络 。一经提出,很快就成为人工智能领域研究者的主要研发工具之一。如果仔细审视,可以发现,其通过网络内部对抗器和判别器的反复博弈生成大量“虚拟样本”的思路,也能视为是一种自举。 比较好玩的是,在取得异常好的性能的同时,这种自举式的网络和其他深度网络似乎都比较容易被攻击。据报道,对于图像识别任务,一两个像素的改变或引入随机噪声所构成的对抗样本就能导致网络产生错误识别,如图 8。这多少有点像自举的视觉,会存在“同时对比”这种容易误导视觉判断的现象。毕竟没有什么系统可能是十全十美的,总会有例外。只是我们还不太清楚,这是否仅是稀少的例外,还是会变“黑天鹅”的意外。 图 8 易受攻击的深度网络:熊猫上叠加随机噪声,尽管视觉上仍能察觉是熊猫的图像,但深度网络却会高置信度地将其识别为长臂猿 。 三、自举的心智 人工智能的终极目标是期望能模拟人类的智能,所以,自举的心智也是值得研究的,因为它意味着人能在受限的条件下极大地提高自身的能力。这有点像俗话所说的“走出自己的舒适圈”,也像 90年代曾风靡内地的某培训学校的口号“挑战极限”。 关于这一点, 20世纪初期 哲学家怀海德曾在其 1929 年出版的、形而上学或“过程哲学”经典书籍《 Process and Reality 》(过程与实在)中指出, 人的认知、社会的认知最终可以上升到一种自我成长、自我成熟的阶段,正如宇宙和自然的演化,这可以视为更广义的自举。 而经济学家默顿 · 米勒提出的默顿定律 (Merton Laws) 认为,人最理想的状态是自我预言,自我实习。举个不恰当的例子,据说杨振宁约 12 岁时,就看爱物理书。有次他从艾迪顿的《神秘的宇宙》里读到了一些新的物理学现象与理论,便表现了极大的兴趣。回家后就跟父母开玩笑说,将来要拿诺贝尔奖。结果梦想真的实现了。这就是默顿定律的体现,是一种自我预言、自我激励、自我实现, 也是一种自举的表现。 如果把自举的机制理解清楚了,尤其是视觉和心智方面的,也许我们就能找到构造自我发育、自我强化的人工智能体的办法了。 参考文献: 1. Gonzalez R. C., Woods E. R., Digital Image Processing (Third Edition). 2017. 电 子工 业 出版社 2. Freund, Y. (1995). Boosting a weak learning algorithm by majority. Inform. and Comput. 121 256–285. 3. Freund, Y. and Schapire, R. (1996a). Game theory, on-line prediction and boosting. In Proceedings of the Ninth Annual Conference on Computational Learning Theory 325–332. 4. Freund, Y. and Schapire, R. E. (1996b). Experiments with a new boosting algorithm. In Machine Learning: Proceedings of the Thirteenth International Conference 148–156. Morgan Kaufman, San Francisco. 5. Goodfellow I., Pouget-Abadie J., Mirza M., Xu B., Warde-Farley D., Ozair S., Courville A., Bengio Y. Generative adversarial nets. In NIPS 2014. 6. Goodfellow I., Shlens J. Szegedy C. Explaining and Harnessing Adversarial Examples. ArXiv: 1412.6572. 2015. 7. Whitehead, A.N. Process and Reality. An Essay in Cosmology. Gifford Lectures Delivered in the University of Edinburgh During the Session 1927–1928, Macmillan, New York, Cambridge University Press, Cambridge UK,1929. 张军 平 2018 年 10 月 12 日 延伸阅读: 12. 爱犯错的智能体 -- 视觉篇(九): 抽象的颜色 11. 爱犯错的智能体--视觉篇(八):由粗到细、大范围优先的视觉 10. 爱犯错的智能体 -- 视觉篇(七):眼中的黎曼流形 9. 爱犯错的智能体--视觉篇(六):外国的月亮比较圆? 8、 爱犯错的智能体 - 视觉篇(五):火星人脸的阴影 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 4、 爱犯错的智能体 - 视觉篇(一): 视觉倒像 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 2、 童话(同化)世界的人工智能 1、 深度学习,你就是那位116岁的长寿老奶奶! 张军平,复旦大学计算机科学技术学院,教授、博士生导师,中国自动化学会混合智能专委会副主任。主要研究方向包括人工智能、机器学习、图像处理、生物认证及智能交通。至今发表论文近100篇,其中IEEE Transactions系列18篇,包括IEEE TPAMI, TNNLS, ToC, TITS, TAC等。学术谷歌引用2700余次,ESI高被引一篇,H指数27.
10306 次阅读|2 个评论
[转载]语言学与自然语言处理中的机器学习
geneculture 2018-9-26 15:10
Finding a Good Division of Labor: Linguistics and Machine Learning in NLP Dan Flickinger Senior Research Associate Stanford University, USA 15:00-16:30, September 26, 2018 Room 1-312, FIT Building Tsinghua University Linguists developing formal models of language seek to provide detailed accounts of linguistic phenomena, making predictions that can be tested systematically. Part of the challenge in this endeavor comes in making the expressivity of the formal apparatus match the requirements of existing linguistic analyses, and part comes in exploiting the formalism to guide in extending the theory. Computational linguists building broad-coverage grammar implementations must balance several competing demands if the resulting systems are to be both effective and linguistically satisfying. There is an emerging consensus within computational linguistics that hybrid approaches combining rich symbolic resources and powerful machine learning techniques will be necessary to produce NLP applications with a satisfactory balance of robustness and precision. In this talk I will present one approach to this division of labor which we have been exploring at CSLI as part of an international consortium of researchers working on deep linguistic processing (www.delph-in.net). I will argue for the respective roles of a large-scale effort at manual construction of a grammar of English, and the systematic construction of statistical models building on annotated corpora parsed with such a grammar. Illustrations of this approach will come from three applications of NLP: machine translation, English grammar instruction, and teaching of introductory logic. Dr. Dan Flickinger (danf@stanford.edu) is a Senior Research Associate at the Center for the Study of Language and Information (CSLI) at Stanford University. He began working in computational linguistics in 1983 in the NLP group at Hewlett-Packard Laboratories, and received his doctorate from the Linguistics Department at Stanford University in 1987. He continued in project management at HP Labs until 1993, when he moved to CSLI to manage what is now the Linguistic Grammars Online (LinGO) laboratory. From 1994 through 2002 he also served as consultant and then as Chief Technology Officer at YY Technologies, once an NLP software company based in Mountain View, California. He is the principal developer of the English Resource Grammar (ERG), a precise broad-coverage implementation of Head-driven Phrase Structure Grammar (HPSG). Current LinGO research is focused on collaborating with McGraw-Hill Education in developing more advanced methods and technology for digital learning in writing, and with Up366 in Beijing to improve writing skills for learners of English as a second language. Flickinger's primary research interests are in wide-coverage grammar engineering for both parsing and generation, lexical representation, the syntax-semantics interface, methodology for evaluation of semantically precise grammars, and practical applications of deep processing. Web page: http://lingo.stanford.edu/danf
个人分类: Computer Science|0 个评论
从端到端到平行智能 -- 人工智能前瞻
热度 8 heruspex 2018-9-13 06:43
在人工智能第三波热潮中,深度学习的端到端理念被广泛采用,在后续研究中还有什么方向值得去尝试呢? 从端到端到平行智能 ----- 人工智能前瞻 张军平、陈德旺 如果把人工智能的终极目标看成是模仿人类的大脑,那么神经网络研究的兴衰,至少在目前来看,就几乎等同于人工智能的大半个发展史。 一、现在:端到端 从 20 世纪中叶人工智能界的先驱 McColluch 和 Pitts 发现了神经元的“兴奋”、“抑制”算起,到 1956 年 Rosenblatt 提出感知机模型,可称其为盛世,再到 Marvin Minsky ( 马尔文 明斯基 )1969 年出版的 Perceptron 引发的衰败,算是第一次高潮。这轮高潮主要是学术圈的自嗨。 从 1986 年 Remulhart 反向传播 (BP) 的提出,到 1989 年 Hornik 和 Cybenko 等 万能近似定理( universal approximation theorem )的推出,到各种较深层的非线性神经网络的流行,再到 1995 的统计学习理论开始一统江山。 BP 算法被认为只是把大家的视野又重新吸引回神经网络,算是人工智能的第二次高潮。这仍是以学术圈的自娱自乐为主。 从 2006 年 Geoffrey Hinton 首次在《 Science 》杂志上发表深度伯兹曼机模型、研究者对神经网络的十年怕井绳的观望心态,到 2012 年深度模型 AlexNet 首次在 ImageNet 大规模图像识别竞赛中大获全胜,再到各类考虑深度、宽度、多尺度、多模态、对抗、自编码、注意力的深度模型的提出。学术圈和产业界都进入了深度狂欢状态,这是第三波高潮。虽然在技术层面,并没有非常明显的理论上的突破,更多的是由于大数据或数据增广带来的模型描述能力以及硬件 GPU 算力的提升。虽然,因为前二次热潮的教训,相关人员都清楚过度吹嘘人工智能前景可能带来的风险。但是,人在江湖,身不由已。学者、学生、资金都已经前赴后继地投身到人工智能产业化的道路上,希望能抢先一步能形成垄断优势、行业壁垒。最好能成江湖三足鼎立之势,再谋独孤求败之实 。各大人工智能公司开出的诱人高薪真应了那句话“ 21 世纪什么最重要,人才!” 这一波热潮中,人才的背后其实是端到端的概念在支撑着。一如人工智能上一波低潮时,但凡提到自己是做“神经”,就容易发生类似于基金项目直接被枪毙、被鄙视为缺乏统计意义等各种杯具一样。现下如果不提到“端到端 ”,就很难让神经网络占了大半壁江山的科研人员认可你成果的意义了。端到端也成了近几年人工智能最时髦的名词。 一方面,端到端确实解决了一个大的问题,即对领域知识的掌握程度。以往在不同领域的应用,必须有专业的人员参与。而端到端的模式,将这些知识的学习都化归为网络权值的自学习,从而大幅度减少了对专业知识的依赖。直接后果就是产业界和学术界的同化现象。我在之前写的文章中“ 童话 ( 同化 ) 世界的人工智能 ”中分析过这一现象。 可是,端到端的设计理念也引来了不少的吐槽,比如模型的可推广性问题、以及对人类强人工智能的不可企及问题等。 人们也在思考,如果要延续这一拨热潮,得敢问路在何方呢?仍然是迷一般的、人类的思维该如何引入呢?除了端到端,还有什么方向值得去尝试呢?不妨回头看下大约在第二波人工智能热潮时期甚至更早期的一些大家的思考。 二、过去:思维科学 谈到思维,不妨先想想我们认人的习惯。当人在远处时,有多少人是先看人脸的呢?尤其在距离非常远的时候。对于熟悉的人,我们实际上会很自然地可以根据他或她走路的轮廓变化来判断。这与多数深度学习看重非常精细的特征是不同的,是一种整体认知的方式。 图 1 步态轮廓图 研究人类整体认知行为的理论和方法都挺多的,比如格式塔心理学、比如中科院心理所的陈霖院士提到的大范围优先理论,甚至中国的阴阳八卦、易经中多少也包含了这样的思想。据我所知,以阴阳八卦来研究的有香港中文大学的徐雷教授,基于易经研究的有 IEEE Fellow 、澳门大学的讲座教授陈俊龙。不过,整体认知有个比较普通、难以克服的问题,就是如何量化、程序化。 除了整体论的思考外, 90 年代初期钱学森院士曾指出,要研究人的智能,也许可以从逻辑、形象、创造这三个递进的层次去着手研究思维科学 (Noetic Science) 。他认为通过思维科学中的递进性的研究,有可能实现 20 世纪初期哲学家怀海德在与其学生罗素合著书籍《数学原理》中的思想。后来怀海德又将其思想进一步升华,提出了“过程哲学”观点。在 1929 年出版的、著名的形成上学书籍或“过程哲学”经典书籍《 Process and Reality 》(过程与实在)中,怀海德曾指出,人的认知、社会的认知最终可以上升到一种自我成长、自我成熟的阶段,正如现在的宇宙演化。在这一“过程”思想中,他将哲学的考虑转到对科学与技术的考虑上, 提出了虚实共存形成过程的概念。换句话说,就是虚实平行,永恒的不断纠缠、不断演绎的过程,而算法的实现就可以考虑平行智能体系。 图 2 : 左:《过程与实在》 ( 怀海德 ) ; 右:《哥德尔 - 逻辑的生活》 (John L. CASTI, Werner DePauli) 在思维科学的研究中,还有一位西方的智者也必须提一下,那就是哥德尔。他最著名的是打破了早期“怀海德思想”的、为人工智能奠定基础的“哥德尔不完备定理”。简单来说,就是没有一个定理是完备的,不能证明其为真,也不能证明为伪。这个定理写得非常的聪明,因为你说它不完备,那它就是对的;如果你说它是完备的,那也表明了他是对的。和他这个定理类似的还有波普的科学证伪理解。他从另一个侧面说明了,能称之为科学的东西必然是存在解释不了的现象。否则就是伪科学。 除了这不完备定理,哥德尔在晚年一直想证明更为“广义的不完备定理”,即他认为要么人类是能超过所有计算机的、要么数学不可能是由人类创造的,要么两者都成立。后来他将注意力集中到第一条。 他认为在人类思维超越计算机这事上,存在两个可以比较的不等式;最高的是想象智能,这一智能只有部分可以通过语言的形成表达,即想象智能大于语言智能;而在现有的计算机体系结构上,又只有部分的语言智能能够通过算法呈现,即语言智能大于算法智能。比较巧的是,我国哲学家老子写的《道德经》中“道、可道、非常道” 似乎也表达了同样的哲理;“道”是敢干,是创业的基础,是算法智能;“可道”是敢说,是创新的基础,是语言智能;“非常道”是敢想,是革命的基础,也是想象智能。 � 图 3 :左:道德经; 右:钱学森书摘录 钱学森在 1995 年指出,逻辑智能是机器可以完全完成的,比如吴文俊的机器证明便是如此。后两者则需要人或完全只能人来完成。但它们的提升都不开信息网络的支持。不仅如此,爱因斯坦也表达过他对智能观的认识,认为“智能的真正标识不是知识,而而是想象”。 时间飞快,从钱学森提出思维科学已经过了近三十年,从怀海德的过程哲学理念甚至已经提出了一百多年了。在人工智能如此热火的今天,有没有可能基于现在的软硬件条件来部分实现他们的观点呢? 三、未来:平行? 回顾怀海德提出过程哲学的历史,可以发现其主要出发点是来源于 20 世纪初物理学界的两朵乌云所导致的牛顿经典力学的颠覆。那么,在数据世界、在人工智能领域,会不会发生类似的情况呢?我们来做些分析和比较。 在百年前完全没见过大数据的时代,人们分析世界、观察世界往往是基于很少甚至个例的样本集,但却能形成非常重要的普适定律、大定律。比如牛顿被掉下的苹果砸出的万有引力定律。虽然只是科学史上的传奇故事,但多少也反映了数据量并不需要太多。当然以当时的情况,也无法获取多少。 图 4 :牛顿、苹果、万有引力 随着时代的变迁,数据的规模也在不断增加,于是我们发现世界的发展变得不再像牛顿物理学时代那么确定了。再也无法出现阿基米德所说的,给个杠杆,就能把地球撬起来的情况了。世界的不确定性在增加,要模拟真实世界的变化也变得有些代沟了。 到了 21 世纪,随着采集设备的廉价化,数据也因此能相当方便和便宜的获取。丰富的数据也使得模型刻画世界的不确定性,从 certainty 变到 probable ,再变到了现在的 possible 。而在深度学习与大数据的双重推动下,我们可以看到在人工智能及相关研究领域呈现了一个非常明显的特点,就是大数据、小规律。 深度学习的模型在特定问题的预测优异性,较传统学习方面很明显,但往往在参数寻优收敛后,就只适用于模型训练所对应的特定问题,而不具备推广性。究其原因,我在“ 深度学习,你就是 116 岁的长寿老奶奶 ”和“ 童话 ( 同化 ) 世界的人工智能 ”中有过探讨。从某种意义来看,这一现象也正是大数据、小规律的表现。 图 5 :小数据大定律 vs 大数据小定律 另外,现今人工智能的发展趋势与一位经济学家默顿 · 米勒的观点也很契合,即默顿定律 (Merton Laws) 。该定律认为,人最理想的情况是自我预言,自我实习。举个不恰当的例子,据说杨振宁约 12 岁的时候,就喜欢看很多物理学方面的书籍。有次在上学的时候,他从艾迪顿的《神秘的宇宙》里看到了一些新的物理学现象与理论,便表现了极大的兴趣。回家后就跟父母开玩笑说,将来要拿诺贝尔奖。结果梦想真的实现了。这就是默顿定律的体现,是一种自我预言、自我激励、自我实现。另外,默顿定律里还有一个重要的观点,即人必须参与到循环中,机器智能与人类智能协同、混合。 那我们在大数据环境下,其实也可以看到这样一种可能,即大数据背景下的默顿定律,或者说通过大数据来将模型世界封闭,形成对实际世界的逼近,从而可以完成对无穷多小规律的生成演绎。 要实现这样的封闭,最直接的策略就是利用大数据来建立一个与实际社会平行的人工社会,从而填补模型世界与实际世界的代沟。 这样的系统构造模型与两位管理学大家的想法是一致的。一位是 Deming , 他曾说过“非上帝不信,非数据不认”的名言。他认为现今人类的决策有 85% 是不合理的,因为缺乏数据。如果数据充分,那计算对世界的指导将会有三个递进的层次:描述、预测和引导,分别对应于以数据来说话、预测未来、引导未来。而 Drucker 则认为“最好的预测世界的方式就是创造它”。那么,通过生成大量数据来建立平行系统,正吻合了这两位的观点。 不过,要让两者得到有机的混合,实现两位大家的思想,还得再构造三套额外的系统来支撑。一套用于管理和控制虚实之间的差异,一套用于实验与评估虚实之间的差异系统,一套用于学习和训练虚实系统。 这样,就形成了平行系统或平行智能的基本框架。 图 6 : 平行智能的框架 大致来说,这套平行系统可以利用数据驱动来实现描述性的计算,利用预测和分析实现预测式计算,利用引导式计算来引导未来。对应三个子系统,我们可以构造人工社会 (A) 来实现描述性计算,通过计算实验 (C) 来预测分析,并构造平行执行 (P) 来学习和自适应。并在信息化、自动化、智能化的驱动下,形成具有敏捷性、可聚焦特定小规律、易于发现规律能收敛的人在回路的混合系统。最终实现 Deming 所想要达到的目标,即描述智能、预测智能和引导智能,也就可以将钱学森想刻画的递进思维科学、甚至《道德经》中的道、可道、非常道进行完美呈现。 图 7 :描述、预测与引导智能 有没有人想过呢?王飞跃教授在 2004 年就有过这样的思想,并提出了基本的框架。而 LeCun Yan 在 2016 年预测学习 (Predictive Learning) 的报告中,也提到了引入人工环境的想法。另外,关于如何实现构造复杂大世界, Ian GoodFellow2014 年提出的 生成式对抗网 事实上已经是这么处理。它正是在一个封闭的网络中,通过判别器和生成器的反复对抗,来不断地自我预言、自我完善、自我实现中。 图 8 :左: Lecun Yan 的平行观; 右 : Ian GoodFellow 的数据虚拟生成对抗 Lecun Yan 和 Ian GoodFellow 提供了一个可实现的渠道。那还有其他可行的方案吗?基于现在环境,我们推测有几种可能。一是建立虚拟环境,这一环境的建立可以考虑基于现在成熟的游戏引擎来构造,也可以考虑虚拟现实技术;二是混合,目前有的增强现实技术,可以认为是人机混合的一种方式,在此基础上再构造人工社会,那会就可以形成混合的闭环境。数据、平行、混合,在这一平行系统中,有可能过程哲学一样,系统能自我预言,自我成长,自我完美。也就可能实现从最初的牛顿定律向默顿定律的突破,从 UDC(不确定性、多样性、复杂性) 到 AFC(灵活性、聚焦性、收敛性) 的突破,为今后能发现超越深度学习的小规律作更强的准备。 图 9 :左:从 UDC 到 AFC ; 右:实际系统与人工系统 这一方法也不是在分布式系统中常采用的分治,因为它意味着要将复杂数据简单化和分拆。平行智能则不同,是希望在实际系统的基础上引入大量虚拟系统,实现对混合系统的复杂化,这样才有可能在理论上保证默顿定律的有效和可实现。在此基础上,将波普尔 (Karl Popper) 认为的三重世界 --- 物理世界、心理世界、人工世界 --- 通过物理空间和网络空间虚实混合,将人在回路的混合智能有机地体现在社会物理网络系统 (CPSS) 中,并通过 ACP 的平行认知系统来实现。 图 10 :复杂系统的分治 ( 并行 ) vs 平行 图 11 社会物理网络系统与平行认知系统 事实上,我们现在已经在一些系统上能看到这一框架的端倪。比如 AlphaGo 的围棋系统,一方面,他目前的战绩对人类是接近全胜,另一方面,你还能从中看到另一层信息,即他正通过巨量虚拟数据的训练来获得少量的规律。这些规律突破了围棋界近 300 年的既成棋谱,也让很多高段位棋手开始重新思考围棋的下法,甚至开始采用 AlphaGo 、 AllphaZero 归纳出来的少量规律来下棋。而这些策略其实和我们上面提到的大数据小定律的发展是吻合的。 图 12 : Alpha 从大数据中获得的小规律 不过,我们还得自问一句,平行智能能实现吗?我觉得有可能,但一定有山一般的难题在等着解决,比如复杂系统中的协调问题、实验评估问题等。不过鲁迅也说过“世界上本来没有路,走的人多了,也就变成了路”。 张军平 2018 年 9 月 13 日 后记: 2018 年 9 月 7 日到 9 日,中国自动化学会混合增强智能专委会在西安交通大学举办了首届混合增强智能讲习班,主题是“人在回路的混合智能”。讲习班邀请 了 11 位国内在混合智能方面的著名专家。其中王飞跃教授安排在 9 月 9 日上午,做平行智能方面的报告。比较遗憾的是,教授讲习班开班日感冒,嗓子完全不能发声,便委托我来代讲。我虽然听过好几次教授的报告,但毕竟台上台下是不一样的,始终是一知半解。所以,晚上便和王教授以前的博士生、也是我的同学 --- 福州大学的陈德旺教授,一起分析和解读了教授发过来的 PPT 内容。因为怕讲不好,我便结合了我自己的研究方向,改题目为“从端到端到平行”来讲了。本文是根据报告内容整理后的文章。 算下来,好象有很长时间没跟德旺合作写文章了。我记得第一面见他的时候,是在中科院自动化所博士入学考试的时候。他年轻,一幅挺不可一世的样子。不过后来入学后,住同一层久了,大家熟悉了,就玩得开了。有过一次,他跑我寝室,两人一起唱歌,结果他的歌声让走廊对面的同学出离愤怒,过来敲门抗议了。再后来,我发现高维非线性数据降维问题很有意思,而交通方面也没有相关的研究。王教授听说了,便鼓励我和德旺一起合作,最后形成了流形学习(Manifold Learning)在智能交通的第一篇应用文章 (Chen et al., 2004) ,是基于一维流形、即主曲线来分析交通流问题。毕业后,虽然各奔东西,不过合作的文章还是有一些 ( 附于后,算是纪念 ) 。 2010 年的时候,我在北京见过王教授一面,两人一起在北京王府井的一个店吃了顿饭。教授跟我说,数据驱动的智能交通应该是未来的发展方向,建议我写一篇综述。我爽快地答应了,然后花了至少十个月的时间完成了这项工作 (Zhang et al, 2011) 。认真的事呢,总是有好的回报的,这篇文章现在是 ESI 高倍引。后来有回我还跟教授说过,如果当时在“ Data-Driven ”前加个 Big ,说不定会更受重视,因为论文发表后,大数据的热潮就兴起了。 参考文献: 1. Junping Zhang, Fei-Yue Wang, Kunfeng Wang, Wei-Hua Lin, Xin Xu, Cheng Chen, Data-Driven Intelligent Transportation Systems: A Survey, IEEE Transactions on Intelligent Transportation Systems, vol. 12, no. 4, pp. 1624-1639, 2011. 2. Junping Zhang, Xiaodan Wang, Uwe Kruger, Fei-Yue Wang, Principal Curve Algorithms for Partitioning High-Dimensional Data Spaces, IEEE Transactions on Neural Networks, vol. 22, no. 3, pp. 367-380, 2011. 3. Junping Zhang, Uwe Kruger, Xiaodan Wang, Dewang Chen, A Riemannian Distance Approach for Constructing Principal Curves, International Journal of Neural Systems, vol. 20, no. 3, pp. 209-218, 2010. 4. Junping Zhang, Dewang Chen, Uwe Kruger, Adaptive Constraint K-segment Principal Curves For Intelligent Transportation Systems, IEEE Transactions on Intelligent Transportation Systems, vol. 9, no. 4, pp. 666-677, 2008. 5. Dewang Chen, Junping Zhang, Shuming Tang, Jue Wang, Freeway Traffic Stream Modelling based on Principal Curves and its Analysis, IEEE Transactions on Intelligent Transportation Systems, vol. 5, no. 4, pp: 246-258, 2004. 延伸阅读: 1、 深度学习,你就是那位116岁的长寿老奶奶! 2、 童话(同化)世界的人工智能 3、 AI版“双手互搏”有多牛? 浅谈对抗性神经网络 4、 爱犯错的智能体 – 视觉篇(一): 视觉倒像 5、 爱犯错的智能体 - 视觉篇 (二):颠倒的视界 6、 爱犯错的智能体 - 视觉篇 (三):看不见的萨摩耶 7、 爱犯错的智能体 - 视觉篇(四):看得见的斑点狗 8、 爱犯错的智能体 – 视觉篇(五):火星人脸的阴影
12796 次阅读|18 个评论
盛唐 or 中唐? 机器学习帮助揭示莫高窟壁画创作时代之谜
sciencepress 2018-9-12 16:38
SCIENCE CHINA Information Sciences 2018年第9期发表题为 “ Dating ancient paintings of Mogao Grottoes using deeply learnt visual codes ”的论文,报道了 利用深度学习分析绘画风格的一项研究,揭示了敦煌莫高窟205、206窟六幅壁画的创作时代之谜 。 在古丝绸之路河西走廊最西端的敦煌绿洲中,默然矗立着世界上现存规模最大、内容最丰富的佛教艺术宝库:莫高窟。莫高窟开凿于五胡十六国期间(约公元366年),历经北朝、隋、唐、五代、宋、西夏、直至元朝的历代兴建,至今仍保存有洞窟735个,壁画4.5万平方米、泥质彩塑2415尊。 莫高窟九层塔外观。(图源pixabay) 璀璨莫高窟跨越近千年的历史,而 “敦煌学”中的一个重要问题就是“断代”,确定这735窟中的每一座雕像塑于何朝,每一幅壁画绘于何代。 传统的莫高窟壁画断代,主要有3种方法:有些壁画本身配有题记,可以从中确认壁画创作年代;有些壁画虽然没有附带题记,但可以在史料中找到对应描述,这些壁画也易于断代;而对于那些没有对应文字材料的壁画,就只能依据其绘画风格来进行断代了,比如,唐朝壁画中女子丰腴,而隋朝壁画中的女子则相对纤细。 然而,所谓绘画风格毕竟是主观判断,对于某些壁画,即便同为钻研数十年的资深学者,也会做出不同的判断。而敦煌学的学者们也与时俱进,开始求助于计算机视觉技术和机器学习方法,想要找到客观和定量的断代方法。近期发表于《中国科学:信息科学》英文版的这项研究,就是一次有益的尝试。 机器如何看画? 形状、颜色,以及人眼不识的“神秘因素” 用计算机来对图画进行分类(比如划分壁画年代)是计算机视觉技术的一个分支,相关研究从大概二十年前就已经开始。经过多年的发展,人们已经找到了一些有效的方法来对形状和颜色来进行描述,并据此进行分类。 而近年来基于大数据的机器学习方法兴起,又给这一领域带来了新的机遇: 使用深度学习方法,我们可以用已有图像数据库来训练计算机,让它能够在形状、颜色之外找到人眼无法捕捉的特征,并据此提高分类的准确性 。实 际上,目前已有AlexNet、GoogLeNet等深度学习网络模型可以胜任此类工作。 在这项研究中,研究者就同时应用了这几种方法。在形状和颜色特征之外,研究者还使用莫高窟壁画数据库,应用深度卷积神经网络(DCNN)方法训练了专门用于莫高窟壁画断代的深度学习模型DunNet,其断代表现在整体上优于传统方法和其他深度网络。 DunNet深度学习网络包含6个卷积层、3个池化层和2个全连接层,由包含3860幅莫高窟壁画的数据库训练而成,其中,3000幅属于训练集、700幅属于测试集、160幅属于验证集。经过数据增量处理后,训练样本达到5万。这3860幅壁画尺寸一致,来自于194个莫高窟洞窟,创作朝代位于隋、初唐、盛唐、中唐、晚唐和五代这6个连续的时代之间。 DunNet神经网络的结构 对于“形状+颜色+DunNet”的综合方案,研究者进行了两种类型的训练。第一种训练是6选1,在全部6个时代(隋、初唐、盛唐、中唐、晚唐、五代)中判断壁画的创作时期;第二种是2选1,在相邻的两个时代之间做出选择。结果,综合方案的6选1正确率为71.64%;而在2选1测试中,除中唐/晚唐判断(77.25%)外,综合方案的判断准确率均达86%以上。 机器的判断:205窟与206窟之谜 训练好了模型,自然要“拉出来溜溜”。研究者在莫高窟205窟和206窟中选择了7幅年代存疑的壁画,让机器对它们进行判断。判断过程中,这7幅画中的每一幅都被分割整理为100个壁画样品,机器模型分别对这100个样品进行判断后,得票最多(每个样品计1票)的时代便被认为是机器判断出的壁画创作年代。 以下就是这7幅壁画及相应的判断结果,可以看出,除其中第4幅外,机器的判断结果都和敦煌研究院的最新官方判定结果一致。而研究人员认为,针对第4幅壁画(机器判断为中唐或晚唐作品,官方人工判定为五代时期作品),机器判定结果对其真实创作年代提出的质疑,是值得进一步判断和研讨的。 第1幅(205窟) 机器判断:盛唐(6选1);盛唐(盛唐/中唐2选1) 官方判断:盛唐 第2幅(205窟) 机器判断:中唐(6选1);中唐(盛唐/中唐2选1) 官方判断:中唐 第3幅(205窟) 机器判断:中唐(6选1);中唐(盛唐/中唐2选1) 官方判断:中唐 第4幅(205窟) 机器判断:中唐(6选1);晚唐(晚唐/五代2选1) 官方判断:五代 第5幅(205窟) 机器判断:初唐或盛唐(6选1,初唐46票,盛唐47票);初唐(初唐/盛唐2选1) 官方判断:初唐(曾被认定为盛唐) 第6幅(205窟) 机器判断:盛唐(6选1);盛唐(初唐/盛唐2选1) 官方判断:盛唐(曾被认定为初唐) 第7幅(206窟) 机器判断:隋(6选1);隋(隋/初唐2选1) 官方判断:隋 值得指出的是,这项研究是计算机视觉方法第一次被应用于古代绘画作品的断代工作 。对相关方法的进一步发展和完善,将为敦煌,以及更多的古代艺术作品提供更加客观和科学的认定方法。在机器学习名震江湖的今天,这样的应用也是技术最好的价值体现。 文章出版信息: Dating ancient paintings of Mogao Grottoes using deeply learnt visual codes Qingquan LI, Qin ZOU, De MA, Qian WANG Song WANG. Sci China Inf Sci, 2018, 61(9): 092105 http://scis.scichina.com/en/2018/092105.pdf 《中国科学》杂志社 Science China Press 公众微信号:scichina1950
个人分类: 《中国科学》论文|3165 次阅读|0 个评论
感谢中科院科学智慧火花贴出《慎用“机器学习中的数据预处理…
热度 2 zlyang 2018-8-31 16:47
感谢中科院科学智慧火花贴出《慎用“机器学习中的数据预处理:缩放和中心化”》 2018-06-21 提交的《慎用“机器学习中的数据预处理:缩放和中心化”》,今天被中科院科学智慧火花贴出来了。 《慎用“机器学习中的数据预处理:缩放和中心化”》 http://idea.cas.cn/viewdoc.action?docid=63578 核心观点: 其中“( 3 )非线性系统的全局分析,可能会引起明显的偏差。”可能说的重了点。修改为“可能会引起一定的偏差。”或许更合适? 感谢中科院科学智慧火花! 感谢您的指教! 感谢您指正以上任何错误! 感谢您提供更多的相关资料!
3052 次阅读|6 个评论
如何有效沟通你的机器学习结果?
热度 3 wshuyi 2018-8-26 10:00
多问自己一个“那又怎样?”,会很有用。 疑问 7月初,我赴南京参会。 James Hendler 教授的演讲非常精彩。 其中一个片段,让我印象深刻。 他说,许多人跑模型,跑出来一个比别人都高的准确率,于是就觉得任务完成了。他自己做健康信息研究,通过各种特征判定病人是否需要住院治疗。很容易就可以构建一个模型,获得很好的分类效果。 但是,这其实远远不够。因为别人(例如他的医生客户们)非常可能会问出一个问题“so what?” (意即“那又怎样?”) 我听了深以为然。 因为模型准确率再高,有时也免不了会有运气的成分。能否在实际应用中发挥作用,并不能单单靠着一个数字来说明。 医生们都有自己作为专业人士的骄傲。如果计算机模型不能从理据上说服他们,那肯定是不会加以采纳的。同时,他们对于病患的健康和生命安全,也有足够重大的责任,因此无法简单接受机器模型的结果,而不加以自己的理解与思考。 对于机器学习模型研究的这种批评,之前我也听到一些。但是不少人仅仅是批评,却没有给出有效的解决方法。 该怎么办呢?Hendler 教授的解决办法,是给医生展示一些统计图表。例如描述年龄与二次入院关系的散点图。 我听了大为惊诧,提问环节第一个就把话筒抢了过来,问: 这种图形,属于描述统计。难道不应该是正式进行模型训练之前,就做了的吗?如果把它作为沟通模型的结果,那还做什么机器学习呢? 解释 Hendler 教授耐心地给我解答了这个问题。 他说,没错,这个图形确实属于描述统计。然而,数百上千个特征里面,知道该汇报哪几个变量的统计图,就必须是机器学习之后才能做的。 实际上,医生们看了这个简单的统计图之后,非常震撼。 他们的刻板印象认为,老年人身体状况差,因此二次入院几率高;年轻人身体好,自愈能力强,因此不大容易“二进宫”。 就此,他们发现了一直以来决策上的失误——对于年轻病患,他们往往比较放心,因此缺乏足够的留院观察和治疗;反倒是对老年人,照顾得更加精细。造成的结果,是本以为没事儿的年轻人,再次重症发病入院;老年人却不少都治愈后健康回家了。 这种结果的传递沟通,有效地改进了医生的决策和行为方式。 其实,Hendler 教授的研究目的,不是去跟别人比拼一个数字,而是帮助医生更好地帮助病患。看似最为简单,没有技术含量的统计图,反倒比各种黑科技更能起到实际作用。 茶歇的时候,我们又聊了20分钟。 他给我讲,他的博士生,现在正在尝试在深度学习中找寻那些影响最后结果的关键要素,有的时候,甚至会选择跨过层级,来设计最简单明确的变量间关联设定。这样,深度学习的结果,可以最大限度(对别人)进行解释。即便会牺牲一些(当然不会很大)准确率,也在所不惜。 反思 为什么我们一直对准确率的数字,这么着迷,而忽略了模型的沟通解释呢? 其实道理也很简单,机器学习的最初广泛用途,给我们的思维带来了路径依赖。 还记得吗?机器学习逐渐受到世人重视的案例? 我说的不是 AlphaGo。 就是几乎每一本讲机器学习的书,都会用到的那个例子,MNIST。 专家们最初要解决的问题,无非是把原先需要人工分拣的邮件,变成机器自动分拣。关键在于手写数字的识别。 这个具体用例,有它的特点。 首先是任务目标单一,就是追求更高的准确率; 其次是分类数量确定,0-9,一共10个数字,不会更多,不会更少; 最后是犯错成本低,即便准确率达不到100%,也没有什么大问题——寄错了信,在人工分拣时代也是正常。 于是,这样的任务,就适合大家拼结果准确率数字。 但是,人们的思维惯性和路径依赖(包括各种竞赛的规则设置),导致了后面的机器学习任务,也都只关注数字,尤其是准确率。 但这其实是不对的。类似于决策支持,尤其是健康医疗的决策支持,就不适合单单比拼数字。 即便误判 0.1%,背后可能也是许许多多鲜活的生命,因此犯错成本极高。 医生并没有因为模型的准确率提升而被取代,反而在信息浪潮奔涌而来的场景下,充当把关人的角色,责任更加重大了。 一个模型要能说服医生,影响其决策行为,就必须解释清楚判断的依据,而不能递给他一个黑箱,告诉他: 你该这样做。 方法 原理想明白了,怎么实施呢? 如果每一个模型跑完,都只是拿出多张描述性统计图给用户,好像也不大合适。 通过文献阅读,我发现了其他机器学习研究人员为了解释结果所做的努力。 在深度学习领域,现在做得比较好的,是卷积神经网络。 在《 文科生如何理解卷积神经网络? 》一文中,我给你解释过卷积神经网络的概念和使用方法。 但是,我们当时,还只是给你讲解如何用它进行分类等,没有涉及解释方案。 你看这样一幅图,机器模型可以很容易分辨它为“非洲象”。 但是,这到底是机器具有了辨别能力,还是只不过运气使然呢? 单看结果,不好分辨。但是我们可以对卷积神经网络训练的结果参数进行可视化,并且叠加到原图上,你一眼就可以看到,机器做出图像分类的依据,究竟是什么。 显然,在机器重点关注的区域里,象的鼻子和耳朵占了最大的决策比重。 由此可以看出,这不是简单的好运气。 以上例子,来自于 François Chollet 的《Deep Learning with Python》。书中附有详细的代码,供你用 Python 和 Keras 自己实现这种可视化结果。 小结 你训练出的模型表现好,这是成功的基础,但不是全部。 只展示一个数字给别人,在很多特定的应用场景下,是不够的。问题越是重要,犯错代价越高,这种方式就越不能被接受。这时候多问自己一个“那又怎样?”,没有坏处。 你需要明确自己用户的需求。与之有效沟通的关键在于用同理心,尊重对方。作为一个人,特别是一个专业人士,对方进行有效思考的要件,就是足够的理据支撑。 不管是用文中介绍的卷积神经网络可视化方法,还是 Hendler 教授所做的看似基础无比的描述性统计图,都可以根据问题的特点,加以采用。只要能够真正影响对方的决策,帮助他们更好地达成自己的目标,你的机器学习分析,便有了更佳的效果。 喜欢请点赞。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
15786 次阅读|4 个评论
[转载] 神经网络浅讲:从神经元到深度学习!
wxs4ever 2018-8-25 01:30
『题记』因为自己最近在学习一些人工神经网络算法相关的东西,在自己的学习阅读中发现了一篇很不错的博文,在这里和各位想了解人工神经网络的小白们分享下,看完能给人一个更加深刻的印象和有助于加深理解!希望对朋友们能有所帮助! 人工神经网络 ( 英语:Artificial Neural Network ,ANN),简称 神经网络 (Neural Network,NN)或 类神经网络 ,在 机器学习 和 认知科学 领域,是一种模仿 生物神经网络 (动物的 中枢神经系统 ,特别是 大脑 )的结构和功能的 数学模型 或 计算模型 ,用于对 函数 进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种 自适应系统 ,通俗的讲就是具备学习功能。Source:维基百科 博文来源:博客园-『计算机的潜意识』博主 博客原文: 神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向 -- 深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。   本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些 机器学习 基础会更好地帮助理解本文。   神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有 1000 亿个神经元之多。 图1 人脑神经网络   那么机器学习中的神经网络是如何实现这种模拟的,并且达到一个惊人的良好效果的?通过本文,你可以了解到这些问题的答案,同时还能知道神经网络的历史,以及如何较好地学习它。   由于本文较长,为方便读者,以下是本文的目录:   一. 前言   二. 神经元   三. 单层神经网络(感知器)   四. 两层神经网络(多层感知器)   五. 多层神经网络(深度学习)   六. 回顾   七. 展望   八. 总结   九. 后记   十. 备注 一. 前言   让我们来看一个经典的神经网络。这是一个包含三个层次的神经网络。红色的是 输入层 ,绿色的是 输出层 ,紫色的是 中间层 (也叫 隐藏层 )。输入层有 3 个输入 单元,隐藏层有 4 个 单元,输出层有 2 个 单元。后文中,我们统一使用这种颜色来表达神经网络的结构。 图2 神经网络结构图   在开始介绍前,有一些知识可以先记在心里: 设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定; 神经网络结构图中的拓扑与箭头代表着 预测 过程时数据的流向,跟 训练 时的数据流有一定的区别; 结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的 权重 (其值称为 权值 ),这是需要训练得到的 。   除了从左到右的形式表达的结构图,还有一种常见的表达形式是从下到上来表示一个神经网络。这时候,输入层在图的最下方。输出层则在图的最上方,如下图: 图3从下到上的神经网络结构图   从左到右的表达形式以 AndrewNg 和 LeCun 的文献使用较多, Caffe 里使用的则是从下到上的表达。在本文中使用 AndrewNg 代表的从左到右的表达形式。    下面从简单的神经元开始说起,一步一步介绍神经网络复杂结构的形成。 二.神经元    1.引子     对于神经元的研究由来已久,1904年生物学家就已经知晓了神经元的组成结构。   一个神经元通常具有多个 树突 ,主要用来接受传入信息;而 轴突 只有一条,轴突尾端有许多轴突末梢可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号。这个连接的位置在生物学上叫做 “ 突触 ” 。   人脑中的神经元形状可以用下图做简单的说明: 图4 神经元   1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP。在下文中,我们会具体介绍神经元模型。 图5 Warren McCulloch(左)和Walter Pitts(右)   2.结构   神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。   下图是一个典型的神经元模型:包含有3个输入,1个输出,以及2个计算功能。   注意中间 的箭头线。这些线称为“连接”。每个上有一个“权值” 。 图6 神经元模型   连接是神经元中最重要的东西。每一个连接上都有一个权重。   一个神经网络的训练算法就是让权重的值调整到最佳,以使得整个网络的预测效果最好。   我们使用a来表示输入,用w来表示权值。一个表示连接的有向箭头可以这样理解:在初端,传递的信号大小仍然是a,端中间有加权参数w,经过这个加权后的信号会变成a*w,因此在连接的末端,信号的大小就变成了a*w。   在其他绘图模型里,有向箭头可能表示的是值的不变传递。而在神经元模型里,每个有向箭头表示的是值的加权传递。 图7 连接(connection)   如果我们将神经元图中的所有变量用符号表示,并且写出输出的计算公式的话,就是下图。 图8 神经元计算   可见z是在输入和权值的线性加权和叠加了一个 函数g 的值。在MP模型里,函数g是sgn函数,也就是取符号函数。这个函数当输入大于0时,输出1,否则输出0。   下面对神经元模型的图进行一些扩展。首先将sum函数与sgn函数合并到一个圆圈里,代表神经元的内部计算。其次,把输入a与输出z写到连接线的左上方,便于后面画复杂的网络。最后说明,一个神经元可以引出多个代表输出的有向箭头,但值都是一样的。   神经元可以看作一个计算与存储单元。计算是神经元对其的输入进行计算功能。存储是神经元会暂存计算结果,并传递到下一层。 图9 神经元扩展    当我们用“神经元”组成网络以后,描述网络中的某个“神经元”时,我们更多地会用“ 单元 ”( unit )来指代。同时由于神经网络的表现形式是一个有向图,有时也会用“ 节点 ”( node )来表达同样的意思。   3.效果   神经元模型的使用可以这样理解:   我们有一个数据,称之为样本。样本有四个属性,其中三个属性已知,一个属性未知。我们需要做的就是通过三个已知属性 预测 未知属性。   具体办法就是使用神经元的公式进行计算。三个已知属性的值是a 1 ,a 2 ,a 3 ,未知属性的值是z。z可以通过公式计算出来。   这里,已知的属性称之为 特征 ,未知的属性称之为 目标 。假设特征与目标之间确实是线性关系,并且我们已经得到表示这个关系的权值w 1 ,w 2 ,w 3 。那么,我们就可以通过神经元模型预测新样本的目标。   4.影响   1943年发布的MP模型,虽然简单,但已经建立了神经网络大厦的地基。但是,MP模型中,权重的值都是预先设置的,因此不能学习。   1949年心理学家Hebb提出了Hebb学习率,认为人脑神经细胞的 突触 (也就是连接)上的强度上可以变化的。于是计算科学家们开始考虑用调整权值的方法来让机器学习。这为后面的学习算法奠定了基础。 图10 Donald Olding Hebb   尽管神经元模型与Hebb学习律都已诞生,但限于当时的计算机能力,直到接近10年后,第一个真正意义的神经网络才诞生。 三. 单层神经网络(感知器)   1.引子       1958年,计算科学家Rosenblatt提出了由两层神经元组成的神经网络。他给它起了一个名字-- “感知器” (Perceptron)(有的文献翻译成 “感知机”,下文统一用“感知器”来指代 )。   感知器是当时首个可以学习的人工神经网络。Rosenblatt现场演示了其学习识别简单图像的过程,在当时的社会引起了轰动。   人们认为已经发现了智能的奥秘,许多学者和科研机构纷纷投入到神经网络的研究中。美国军方大力资助了神经网络的研究,并认为神经网络比 “原子弹工程” 更重要。这段时间直到1969年才结束,这个时期可以看作神经网络的第一次高潮。 图11 Rosenblat与感知器   2.结构   下面来说明感知器模型。   在原来MP模型的 “输入” 位置添加神经元节点,标志其为 “输入单元” 。其余不变,于是我们就有了下图:从本图开始,我们将权值 w 1 , w 2 , w 3 写到 “连接线”的中间 。 图12 单层神经网络    在“感知器”中 ,有两个层次。分别是输入层和输出层。 输入层里的“输入单元”只负责传输数据, 不做计算。 输出层里的“输出单元”则需要对前面一层的输入进行计算。   我们把需要计算的层次称之为 “计算层” ,并把拥有一个计算层的网络称之为 “单层神经网络” 。有一些文献会按照网络拥有的层数来命名,例如把 “感知器”称为两层神经网络。但在本文里, 我们根据计算层的数量来命名。   假如我们要预测的目标不再是一个值,而是一个向量,例如 。那么可以在输出层再增加一个 “输出单元” 。   下图显示了带有两个输出单元的单层神经网络,其中输出单元z 1 的计算公式如下图。 图13 单层神经网络(Z 1 )   可以看到,z 1 的计算跟原先的z并没有区别。   我们已知一个神经元的输出可以向多个神经元传递,因此z 2 的计算公式如下图。 图14 单层神经网络(Z 2 )   可以看到,z 2 的计算中除了三个新的权值: w 4 ,w 5 ,w 6 以外,其他与z 1 是一样的 。   整个网络的输出如下图。 图15 单层神经网络(Z 1 和Z 2 )    目前的表达公式有一点不让人满意的就是: w 4 ,w 5 ,w 6 是后来加的,很难表现出跟原先的 w 1 ,w 2 ,w 3 的关系。   因此我们改用二维的下标,用 w x,y 来表达一个权值 。下标中的 x 代表后一层神经元的序号,而 y 代表前一层神经元的序号(序号的顺序从上到下)。   例如, w 1,2 代表后一层的第1个神经元与前一层的第2个神经元的连接的权值(这种标记方式参照了 Andrew Ng 的课件)。根据以上方法标记,我们有了下图。 图16 单层神经网络(扩展)   如果我们仔细看输出的计算公式,会发现这两个公式就是线性代数方程组。因此可以用矩阵乘法来表达这两个公式。   例如,输入的变量是 T (代表由 a 1 ,a 2 ,a 3 组成的列向量),用向量 a 来表示。 方程的左边是 T ,用向量 z 来表示。   系数则是矩阵 W (2行3列的矩阵,排列形式与公式中的一样)。   于是,输出公式可以改写成: g( W * a ) = z ;   这个公式就是神经网络中从前一层计算后一层的 矩阵运算。   3.效果   与神经元模型不同,感知器中的权值是通过训练得到的。因此,根据以前的知识我们知道,感知器类似一个 逻辑回归 模型,可以做线性分类任务。   我们可以用 决策分界 来形象的表达分类的效果。决策分界就是在二维的数据平面中划出一条直线,当数据的维度是3维的时候,就是划出一个平面,当数据的维度是n维时,就是划出一个n-1维的超平面。   下图显示了在二维平面中划出决策分界的效果,也就是感知器的分类效果。 图17 单层神经网络(决策分界)      4.影响     感知器只能做简单的线性分类任务。但是当时的人们热情太过于高涨,并没有人清醒的认识到这点。于是,当人工智能领域的巨擘Minsky指出这点时,事态就发生了变化。   Minsky在1969年出版了一本叫《Perceptron》的书,里面用详细的数学证明了感知器的弱点,尤其是感知器对XOR(异或)这样的简单分类任务都无法解决。   Minsky认为,如果将计算层增加到两层,计算量则过大,而且没有有效的学习算法。所以,他认为研究更深层的网络是没有价值的。(本文成文后一个月,即2016年1月, Minsky在美国去世 。谨在本文中纪念这位著名的计算机研究专家与大拿。) 图18 Marvin Minsky      由于Minsky的巨大影响力以及书中呈现的悲观态度,让很多学者和实验室纷纷放弃了神经网络的研究。神经网络的研究陷入了冰河期。这个时期又被称为 “ AI winter ” 。   接近10年以后,对于两层神经网络的研究才带来神经网络的复苏。 四. 两层神经网络(多层感知器)   1.引子   两层神经网络是本文的重点,因为正是在这时候,神经网络开始了大范围的推广与使用。   Minsky说过单层神经网络无法解决异或问题。但是当增加一个计算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分类效果。不过两层神经网络的计算是一个问题,没有一个较好的解法。    1986 年, Rumelhar 和 Hinton 等人提出了反向传播( Backpropagation , BP )算法,解决了两层神经网络所需要的复杂计算量问题,从而带动了业界使用两层神经网络研究的热潮。 目前,大量的教授神经网络的教材,都是重点介绍两层(带一个隐藏层)神经网络的内容。   这时候的Hinton还很年轻,30年以后,正是他重新定义了神经网络,带来了神经网络复苏的又一春。 图19 DavidRumelhart(左)以及Geoffery Hinton(右)   2.结构   两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层。此时,中间层和输出层都是计算层。我们扩展上节的单层神经网络,在右边新加一个层次(只含有一个节点)。   现在,我们的权值矩阵增加到了两个,我们用上标来区分不同层次之间的变量。   例如a x (y) 代表第y层的第x个节点。z 1 ,z 2 变成了a 1 (2) ,a 2 (2) 。下图给出了a 1 (2) ,a 2 (2) 的计算公式。 图20 两层神经网络(中间层计算)   计算最终输出z的方式是利用了中间层的a 1 (2) ,a 2 (2) 和第二个权值矩阵计算得到的,如下图。 图21 两层神经网络(输出层计算)    假设我们的预测目标是一个向量,那么与前面类似,只需要在“输出层”再增加节点即可。   我们使用向量和矩阵来表示层次中的变量。 a (1) , a (2) , z 是网络中传输的向量数据。 W (1) 和 W (2) 是网络的矩阵参数。 如下图。 图22 两层神经网络(向量形式)   使用矩阵运算来表达整个计算公式的话如下: g( W (1) * a (1) ) = a (2) ; g( W (2) * a (2) ) = z ;   由此可见,使用矩阵运算来表达是很简洁的,而且也不会受到节点数增多的影响(无论有多少节点参与运算,乘法两端都只有一个变量)。因此神经网络的教程中大量使用矩阵运算来描述。   需要说明的是,至今为止,我们对神经网络的结构图的讨论中都没有提到偏置节点( bias unit )。事实上,这些节点是默认存在的。它本质上是一个只含有存储功能,且存储值永远为1的单元。 在神经网络的每个层次中,除了输出层以外,都会含有这样一个偏置单元。正如线性回归模型与逻辑回归模型中的一样。   偏置单元与后一层的所有节点都有连接,我们设这些参数值为向量 b ,称之为偏置。如下图。 图23 两层神经网络(考虑偏置节点)   可以看出,偏置节点很好认,因为其没有输入(前一层中没有箭头指向它)。有些神经网络的结构图中会把偏置节点明显画出来,有些不会。一般情况下,我们都不会明确画出偏置节点。   在考虑了偏置以后的一个神经网络的矩阵运算如下: g( W (1) * a (1) + b (1) ) = a (2) ; g( W (2) * a (2) + b (2) ) = z ;   需要说明的是,在两层神经网络中,我们不再使用sgn函数作为函数g,而是使用平滑函数sigmoid作为函数g。我们把函数g也称作激活函数(activefunction)。   事实上,神经网络的本质就是通过参数与激活函数来拟合特征与目标之间的真实函数关系。初学者可能认为画神经网络的结构图是为了在程序中实现这些圆圈与线,但在一个神经网络的程序中,既没有“线”这个对象,也没有“单元”这个对象。实现一个神经网络最需要的是线性代数库。   3.效果   与单层神经网络不同。理论证明,两层神经网络可以无限逼近任意连续函数。   这是什么意思呢?也就是说,面对复杂的非线性分类任务,两层(带一个隐藏层)神经网络可以分类的很好。   下面就是一个例子(此两图来自colah的 博客 ),红色的线与蓝色的线代表数据。而红色区域和蓝色区域代表由神经网络划开的区域,两者的分界线就是决策分界。 图24 两层神经网络(决策分界)      可以看到,这个两层神经网络的决策分界是非常平滑的曲线,而且分类的很好。有趣的是,前面已经学到过,单层网络只能做线性分类任务。而两层神经网络中的后一层也是线性分类层,应该只能做线性分类任务。为什么两个线性分类任务结合就可以做非线性分类任务?   我们可以把输出层的决策分界单独拿出来看一下。就是下图。 图25 两层神经网络(空间变换)   可以看到,输出层的决策分界仍然是直线。关键就是,从输入层到隐藏层时,数据发生了空间变换。也就是说,两层神经网络中,隐藏层对原始的数据进行了一个空间变换,使其可以被线性分类,然后输出层的决策分界划出了一个线性分类分界线,对其进行分类。   这样就导出了两层神经网络可以做非线性分类的关键--隐藏层。联想到我们一开始推导出的矩阵公式,我们知道,矩阵和向量相乘,本质上就是对向量的坐标空间进行一个变换。因此,隐藏层的参数矩阵的作用就是使得数据的原始坐标空间从线性不可分,转换成了线性可分。   两层神经网络通过两层的线性模型模拟了数据内真实的非线性函数。因此,多层的神经网络的本质就是复杂函数拟合。   下面来讨论一下隐藏层的节点数设计。在设计一个神经网络时,输入层的节点数需要与特征的维度匹配,输出层的节点数要与目标的维度匹配。而中间层的节点数,却是由设计者指定的。 因此,“自由”把握在设计者的手中。 但是,节点数设置的多少,却会影响到整个模型的效果。如何决定这个自由层的节点数呢?目前业界没有完善的理论来指导这个决策。一般是根据经验来设置。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。这种方法又叫做 GridSearch (网格搜索)。   了解了两层神经网 络的结构以后,我们就可以看懂其它类似的结构图。例如EasyPR字符识别网络架构(下图)。 图26 EasyPR字符识别网络   EasyPR使用了字符的图像去进行字符文字的识别。输入是120维的向量。输出是要预测的文字类别,共有65类。根据实验,我们测试了一些隐藏层数目,发现当值为40时,整个网络在测试集上的效果较好,因此选择网络的最终结构就是120,40,65。   4.训练   下面简单介绍一下两层神经网络的训练。   在Rosenblat提出的感知器模型中,模型中的参数可以被训练,但是使用的方法较为简单,并没有使用目前机器学习中通用的方法,这导致其扩展性与适用性非常有限。从两层神经网络开始,神经网络的研究人员开始使用机器学习相关的技术进行神经网络的训练。例如用大量的数据(1000-10000左右),使用算法进行优化等等,从而使得模型训练可以获得性能与数据利用上的双重优势。   机器学习模型训练的目的,就是使得参数尽可能的与真实的模型逼近。具体做法是这样的。首先给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为 y p ,真实目标为 y 。那么,定义一个值loss,计算公式如下。 loss = (y p - y) 2   这个值称之为 损失 (loss),我们的目标就是使对所有训练数据的损失和尽可能的小。   如果将先前的神经网络预测的矩阵公式带入到y p 中(因为有z=y p ),那么我们可以把损失写为关于参数(parameter)的函数,这个函数称之为 损失函数 (loss function)。下面的问题就是求:如何优化参数,能够让损失函数的值最小。   此时这个问题就被转化为一个优化问题。一个常用方法就是高等数学中的求导,但是这里的问题由于参数不止一个,求导后计算导数等于0的运算量很大,所以一般来说解决这个优化问题使用的是 梯度下降 算法。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。   在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用 反向传播 算法。反向传播算法是利用了神经网络的结构进行的计算。不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。   反向传播算法可以直观的理解为下图。梯度的计算从后往前,一层层反向传播。前缀E代表着相对导数的意思。 图27 反向传播算法   反向传播算法的启示是数学中的 链式法则 。在此需要说明的是,尽管早期神经网络的研究人员努力从生物学中得到启发,但从BP算法开始,研究者们更多地从数学上寻求问题的最优解。不再盲目模拟人脑网络是神经网络研究走向成熟的标志。正如科学家们可以从鸟类的飞行中得到启发,但没有必要一定要完全模拟鸟类的飞行方式,也能制造可以飞天的飞机。   优化问题只是训练中的一个部分。机器学习问题之所以称为学习问题,而不是优化问题,就是因为它不仅要求数据在训练集上求得一个较小的误差,在测试集上也要表现好。因为模型最终是要部署到没有见过训练数据的真实场景。提升模型在测试集上的预测效果的主题叫做 泛化 (generalization),相关方法被称作正则化(regularization)。 神经网络中常用的泛化技术有 权重衰减 等。   5.影响   两层神经网络在多个地方的应用说明了其效用与价值。10年前困扰神经网络界的异或问题被轻松解决。神经网络在这个时候,已经可以发力于语音识别,图像识别,自动驾驶等多个领域。   历史总是惊人的相似,神经网络的学者们再次登上了《纽约时报》的专访。人们认为神经网络可以解决许多问题。就连娱乐界都开始受到了影响,当年的《终结者》电影中的阿诺都赶时髦地说一句:我的CPU是一个神经网络处理器,一个会学习的计算机。   但是神经网络仍然存在若干的问题:尽管使用了BP算法,一次神经网络的训练仍然耗时太久,而且困扰训练优化的一个问题就是局部最优解问题,这使得神经网络的优化较为困难。同时,隐藏层的节点数需要调参,这使得使用不太方便,工程和研究人员对此多有抱怨。   90年代中期,由Vapnik等人发明的SVM(Support Vector Machines,支持向量机)算法诞生,很快就在若干个方面体现出了对比神经网络的优势:无需调参;高效;全局最优解。基于以上种种理由,SVM迅速打败了神经网络算法成为主流。 图28 Vladimir Vapnik   神经网络的研究再次陷入了冰河期。当时,只要你的论文中包含神经网络相关的字眼,非常容易被会议和期刊拒收,研究界那时对神经网络的不待见可想而知。 五. 多层神经网络(深度学习)   1.引子       在被人摒弃的10年中,有几个学者仍然在坚持研究。这其中的棋手就是加拿大多伦多大学的Geoffery Hinton教授。    2006年,Hinton在《Science》和相关期刊上发表了论文,首次提出了 “深度信念网络”的概念 。 与传统的训练方式不同,“深度信念网络”有一个“ 预训练 ”( pre-training )的过程,这可以方便的让神经网络中的权值找到一个接近最优解的值,之后再使用“ 微调 ”( fine-tuning )技术来对整个网络进行优化训练。这两个技术的运用大幅度减少了训练多层神经网络的时间。他给多层神经网络相关的学习方法赋予了一个新名词--“ 深度学习 ”。   很快,深度学习在语音识别领域暂露头角。接着,2012年,深度学习技术又在图像识别领域大展拳脚。Hinton 与他的学生在 ImageNet 竞赛中,用多层的卷积神经网络成功地对包含一千类别的一百万张图片进行了训练,取得了分类错误率 15 % 的好成绩,这个成绩比第二名高了近 11 个百分点,充分证明了多层神经网络识别效果的优越性 。   在这之后,关于深度神经网络的研究与应用不断涌现。 图29 Geoffery Hinton   由于篇幅原因,本文不介绍CNN(Conventional Neural Network,卷积神经网络)与RNN(Recurrent Neural Network,递归神经网络)的架构,下面我们只讨论普通的多层神经网络。   2.结构   我们延续两层神经网络的方式来设计一个多层神经网络。   在两层神经网络的输出层后面,继续添加层次。原来的输出层变成中间层,新加的层次成为新的输出层。所以可以得到下图。 图30 多层神经网络   依照这样的方式不断添加,我们可以得到更多层的多层神经网络。公式推导的话其实跟两层神经网络类似,使用矩阵运算的话就仅仅是加一个公式而已。   在已知输入 a (1) ,参数 W (1) , W (2) , W (3) 的情况下,输出 z 的推导公式如下: g( W (1) * a (1) ) = a (2) ; g( W (2) * a (2) ) = a (3) ; g( W (3) * a (3) ) = z ;   多层神经网络中,输出也是按照一层一层的方式来计算。从最外面的层开始,算出所有单元的值以后,再继续计算更深一层。只有当前层所有单元的值都计算完毕以后,才会算下一层。有点像计算向前不断推进的感觉。所以这个过程叫做 “正向传播” 。   下面讨论一下多层神经网络中的参数。   首先我们看第一张图,可以看出 W (1) 中有6个参数, W (2) 中有4个参数, W (3) 中有6个参数,所以整个神经网络中的参数有16个(这里我们不考虑偏置节点,下同)。 图31 多层神经网络(较少参数)   假设我们将中间层的节点数做一下调整。第一个中间层改为3个单元,第二个中间层改为4个单元。   经过调整以后,整个网络的参数变成了33个。 图32 多层神经网络(较多参数)   虽然层数保持不变,但是第二个神经网络的参数数量却是第一个神经网络的接近两倍之多,从而带来了更好的表示(represention)能力。表示能力是多层神经网络的一个重要性质,下面会做介绍。   在参数一致的情况下,我们也可以获得一个 “更深” 的网络。 图33 多层神经网络(更深的层次)   上图的网络中,虽然参数数量仍然是33,但却有4个中间层,是原来层数的接近两倍。这意味着一样的参数数量,可以用更深的层次去表达。   3.效果   与两层层神经网络不同。多层神经网络中的层数增加了很多。   增加更多的层次有什么好处?更深入的表示特征,以及更强的函数模拟能力。   更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。在神经网络中,每一层神经元学习到的是前一层神经元值的更抽象的表示。例如第一个隐藏层学习到的是 “边缘” 的特征,第二个隐藏层学习到的是由 “边缘”组成的“形状” 的特征, 第三个隐藏层学习到的是由“形状”组成的“图案”的特征,最后的隐藏层学习到的是由“图案”组成的“目标”的特征 。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。   关于逐层特征学习的例子,可以参考下图。 图34 多层神经网络(特征学习)   更强的函数模拟能力是由于随着层数的增加,整个网络的参数就越多。而神经网络其实本质就是模拟特征与目标之间的真实关系函数的方法,更多的参数意味着其模拟的函数可以更加的复杂,可以有更多的 容量 (capcity)去拟合真正的关系。   通过研究发现,在参数数量一样的情况下,更深的网络往往具有比浅层的网络更好的识别效率。这点也在ImageNet的多次大赛中得到了证实。从2012年起,每年获得ImageNet冠军的深度神经网络的层数逐年增加,2015年最好的方法GoogleNet是一个多达22层的神经网络。   在最新一届的ImageNet大赛上,目前拿到最好成绩的MSRA团队的方法使用的更是一个深达152层的网络!关于这个方法更多的信息有兴趣的可以查阅ImageNet网站。   4.训练   在单层神经网络时,我们使用的激活函数是sgn函数。到了两层神经网络时,我们使用的最多的是sigmoid函数。而到了多层神经网络时,通过一系列的研究发现,ReLU函数在训练多层神经网络时,更容易收敛,并且预测性能更好。因此,目前在深度学习中,最流行的非线性函数是ReLU函数。ReLU函数不是传统的非线性函数,而是分段线性函数。其表达式非常简单,就是y=max(x,0)。简而言之,在x大于0,输出就是输入,而在x小于0时,输出就保持为0。这种函数的设计启发来自于生物神经元对于激励的线性响应,以及当低于某个阈值后就不再响应的模拟。   在多层神经网络中,训练的主题仍然是优化和泛化。当使用足够强的计算芯片(例如GPU图形加速卡)时,梯度下降算法以及反向传播算法在多层神经网络中的训练中仍然工作的很好。目前学术界主要的研究既在于开发新的算法,也在于对这两个算法进行不断的优化,例如,增加了一种带动量因子(momentum)的梯度下降算法。    在深度学习中,泛化技术变的比以往更加的重要。这主要是因为神经网络的层数增加了,参数也增加了,表示能力大幅度增强,很容易出现 过拟合现象 。 因此正则化技术就显得十分重要。目前,Dropout技术,以及数据扩容(Data-Augmentation)技术是目前使用的最多的正则化技术。   5.影响   目前,深度神经网络在人工智能界占据统治地位。但凡有关人工智能的产业报道,必然离不开深度学习。神经网络界当下的四位引领者除了前文所说的Ng,Hinton以外,还有CNN的发明人Yann Lecun,以及《Deep Learning》的作者Bengio。   前段时间一直对人工智能持谨慎态度的马斯克,搞了一个 OpenAI项目 ,邀请Bengio作为高级顾问。马斯克认为,人工智能技术不应该掌握在大公司如Google,Facebook的手里,更应该作为一种开放技术,让所有人都可以参与研究。马斯克的这种精神值得让人敬佩。 图35 Yann LeCun(左)和Yoshua Bengio(右)   多层神经网络的研究仍在进行中。现在最为火热的研究技术包括RNN,LSTM等,研究方向则是图像理解方面。图像理解技术是给计算机一幅图片,让它用语言来表达这幅图片的意思。ImageNet竞赛也在不断召开,有更多的方法涌现出来,刷新以往的正确率。 六. 回顾   1.影响       我们回顾一下神经网络发展的历程。 神经网络的发展历史曲折荡漾,既有被人捧上天的时刻,也有摔落在街头无人问津的时段,中间经历了数次大起大落。   从单层神经网络(感知器)开始,到包含一个隐藏层的两层神经网络,再到多层的深度神经网络,一共有三次兴起过程。详见下图。 图36 三起三落的神经网络   上图中的顶点与谷底可以看作神经网络发展的高峰与低谷。图中的横轴是时间,以年为单位。纵轴是一个神经网络影响力的示意表示。如果把1949年Hebb模型提出到1958年的感知机诞生这个10年视为落下(没有兴起)的话,那么神经网络算是经历了 “三起三落” 这样一个过程,跟 “小平” 同志类似。俗话说,天将降大任于斯人也,必先苦其心志,劳其筋骨。经历过如此多波折的神经网络能够在现阶段取得成功也可以被看做是磨砺的积累吧。   历史最大的好处是可以给现在做参考。科学的研究呈现螺旋形上升的过程,不可能一帆风顺。同时,这也给现在过分热衷深度学习与人工智能的人敲响警钟,因为这不是第一次人们因为神经网络而疯狂了。1958年到1969年,以及1985年到1995,这两个十年间人们对于神经网络以及人工智能的期待并不现在低,可结果如何大家也能看的很清楚。   因此,冷静才是对待目前深度学习热潮的最好办法。如果因为深度学习火热,或者可以有 “钱景” 就一窝蜂的涌入,那么最终的受害人只能是自己。神经网络界已经两次有被人们捧上天了的境况,相信也对于捧得越高,摔得越惨这句话深有体会。因此,神经网络界的学者也必须给这股热潮浇上一盆水,不要让媒体以及投资家们过分的高看这门技术。很有可能,三十年河东,三十年河西,在几年后,神经网络就再次陷入谷底。根据上图的历史曲线图,这是很有可能的。   2.效果       下面说一下神经网络为什么能这么火热?简而言之,就是其学习效果的强大。随着神经网络的发展,其表示性能越来越强。   从单层神经网络,到两层神经网络,再到多层神经网络,下图说明了,随着网络层数的增加,以及激活函数的调整,神经网络所能拟合的决策分界平面的能力。 图37 表示能力不断增强   可以看出,随着层数增加,其非线性分界拟合能力不断增强。图中的分界线并不代表真实训练出的效果,更多的是示意效果。   神经网络的研究与应用之所以能够不断地火热发展下去,与其强大的函数拟合能力是分不开关系的。   3.外因       当然,光有强大的内在能力,并不一定能成功。一个成功的技术与方法,不仅需要内因的作用,还需要时势与环境的配合。神经网络的发展背后的外在原因可以被总结为:更强的计算性能,更多的数据,以及更好的训练方法。只有满足这些条件时,神经网络的函数拟合能力才能得已体现,见下图。 图38 发展的外在原因   之所以在单层神经网络年代,Rosenblat无法制作一个双层分类器,就在于当时的计算性能不足,Minsky也以此来打压神经网络。但是Minsky没有料到,仅仅10年以后,计算机CPU的快速发展已经使得我们可以做两层神经网络的训练,并且还有快速的学习算法BP。   但是在两层神经网络快速流行的年代。更高层的神经网络由于计算性能的问题,以及一些计算方法的问题,其优势无法得到体现。直到2012年,研究人员发现,用于高性能计算的图形加速卡(GPU)可以极佳地匹配神经网络训练所需要的要求:高并行性,高存储,没有太多的控制需求,配合预训练等算法,神经网络才得以大放光彩。   互联网时代,大量的数据被收集整理,更好的训练方法不断被发现。所有这一切都满足了多层神经网络发挥能力的条件。    “ 时势造英雄”,正如 Hinton 在 2006年 的论文里说道的   “ ...providedthatcomputerswerefastenough,datasetswerebigenough,andtheinitialweightswerecloseenoughtoagoodsolution.Allthreeconditionsarenowsatisfied. ” ,   外在条件的满足也是神经网络从神经元得以发展到目前的深度神经网络的重要因素。   除此以外,一门技术的发扬没有 “伯乐” 也是不行的。在神经网络漫长的历史中,正是由于许多研究人员的锲而不舍,不断钻研,才能有了现在的成就。前期的Rosenblat,Rumelhart没有见证到神经网络如今的流行与地位。但是在那个时代,他们为神经网络的发展所打下的基础,却会永远流传下去,不会退色。 七. 展望   1.量子计算   回到我们对神经网络历史的讨论,根据历史趋势图来看,神经网络以及深度学习会不会像以往一样再次陷入谷底?作者认为,这个过程可能取决于量子计算机的发展。   根据一些最近的研究发现,人脑内部进行的计算可能是类似于量子计算形态的东西。而且目前已知的最大神经网络跟人脑的神经元数量相比,仍然显得非常小,仅不及1%左右。所以未来真正想实现人脑神经网络的模拟,可能需要借助量子计算的强大计算能力。   各大研究组也已经认识到了量子计算的重要性。谷歌就在开展量子计算机D-wave的研究,希望用量子计算来进行机器学习,并且在前段时间有了突破性的 进展 。国内方面,阿里和中科院合作成立了 量子计算实验室 ,意图进行量子计算的研究。   如果量子计算发展不力,仍然需要数十年才能使我们的计算能力得以突飞猛进的发展,那么缺少了强大计算能力的神经网络可能会无法一帆风顺的发展下去。这种情况可以类比为80-90年时期神经网络因为计算能力的限制而被低估与忽视。假设量子计算机真的能够与神经网络结合,并且助力真正的人工智能技术的诞生,而且量子计算机发展需要10年的话,那么神经网络可能还有10年的发展期。直到那时期以后,神经网络才能真正接近实现AI这一目标。 图39 量子计算    2.人工智能   最后,作者想简单地谈谈对目前人工智能的看法。虽然现在人工智能非常火热,但是距离真正的人工智能还有很大的距离。就拿计算机视觉方向来说,面对稍微复杂一些的场景,以及易于混淆的图像,计算机就可能难以识别。因此,这个方向还有很多的工作要做。   就普通人看来,这么辛苦的做各种实验,以及投入大量的人力就是为了实现一些不及孩童能力的视觉能力,未免有些不值。但是这只是第一步。虽然计算机需要很大的运算量才能完成一个普通人简单能完成的识图工作,但计算机最大的优势在于并行化与批量推广能力。使用计算机以后,我们可以很轻易地将以前需要人眼去判断的工作交给计算机做,而且几乎没有任何的推广成本。这就具有很大的价值。正如火车刚诞生的时候,有人嘲笑它又笨又重,速度还没有马快。但是很快规模化推广的火车就替代了马车的使用。人工智能也是如此。这也是为什么目前世界上各著名公司以及政府都对此热衷的原因。   目前看来,神经网络要想实现人工智能还有很多的路要走,但方向至少是正确的,下面就要看后来者的不断努力了。 图40 人工智能 八 总结   本文回顾了神经网络的发展历史,从神经元开始,历经单层神经网络,两层神经网络,直到多层神经网络。在历史介绍中穿插讲解神经网络的结构,分类效果以及训练方法等。本文说明了神经网络内部实际上就是矩阵计算, 在程序中的实现没有“点”和“线”的对象 。本文说明了神经网络强大预测能力的根本,就是多层的神经网络可以无限逼近真实的对应函数,从而模拟数据之间的真实关系。除此之外,本文回顾了神经网络发展的历程,分析了神经网络发展的外在原因,包括计算能力的增强,数据的增多,以及方法的创新等。最后,本文对神经网络的未来进行了展望,包括量子计算与神经网络结合的可能性,以及探讨未来人工智能发展的前景与价值。 九.后记   本篇文章可以视为作者一年来对神经网络的理解与总结,包括实验的体会,书籍的阅读,以及思考的火花等。神经网络虽然重要,但学习并不容易。这主要是由于其结构图较为难懂,以及历史发展的原因,导致概念容易混淆,一些介绍的博客与网站内容新旧不齐。本篇文章着眼于这些问题,没有太多的数学推导,意图以一种简单的,直观的方式对神经网络进行讲解。在2015年最后一天终于写完。希望本文可以对各位有所帮助。    作者很感谢能够阅读到这里的读者。如果看完觉得好的话,还请轻轻点一下赞,你们的鼓励就是作者继续行文的动力。本文的备注部分是一些对神经网络学习的建议,供补充阅读与参考。       目前为止, EasyPR 的1.4版已经将神经网络(ANN)训练的模块加以开放,开发者们可以使用这个模块来进行自己的字符模型的训练。有兴趣的可以 下载 。 十. 备注    神经网络虽然很重要,但是对于神经网络的学习,却并不容易。这些学习困难主要来自以下三个方面:概念,类别,教程。下面简单说明这三点。   1.概念   对于一门技术的学习而言,首先最重要的是弄清概念。只有将概念理解清楚,才能顺畅的进行后面的学习。由于神经网络漫长的发展历史,经常会有一些概念容易混淆,让人学习中产生困惑。这里面包括历史的术语,不一致的说法,以及被遗忘的研究等。     历史的术语   这个的代表就是多层感知器(MLP)这个术语。起初看文献时很难理解的一个问题就是,为什么神经网络又有另一个名称:MLP。其实MLP(Multi-Layer Perceptron)的名称起源于50-60年代的感知器(Perceptron)。由于我们在感知器之上又增加了一个计算层,因此称为多层感知器。值得注意的是,虽然叫“多层”,MLP一般都指的是两层(带一个隐藏层的)神经网络。   MLP这个术语属于历史遗留的产物。现在我们一般就说神经网络,以及深度神经网络。前者代表带一个隐藏层的两层神经网络,也是EasyPR目前使用的识别网络,后者指深度学习的网络。    不一致的说法   这个最明显的代表就是损失函数lossfunction,这个还有两个说法是跟它完全一致的意思,分别是残差函数errorfunction,以及代价函数costfunction。lossfunction是目前深度学习里用的较多的一种说法,caffe里也是这么叫的。costfunction则是Ng在coursera教学视频里用到的统一说法。这三者都是同一个意思,都是优化问题所需要求解的方程。虽然在使用的时候不做规定,但是在听到各种讲解时要心里明白。   再来就是权重weight和参数parameter的说法,神经网络界由于以前的惯例,一般会将训练得到的参数称之为权重,而不像其他机器学习方法就称之为参数。这个需要记住就好。不过在目前的使用惯例中,也有这样一种规定。那就是非偏置节点连接上的值称之为权重,而偏置节点上的值称之为偏置,两者统一起来称之为参数。   另外一个同义词就是激活函数active function和转移函数transfer function了。同样,他们代表一个意思,都是叠加的非线性函数的说法。    被遗忘的研究   由于神经网络发展历史已经有70年的漫长历史,因此在研究过程中,必然有一些研究分支属于被遗忘阶段。这里面包括各种不同的网络,例如SOM(Self-Organizing Map,自组织特征映射网络),SNN(Synergetic Neural Network,协同神经网络),ART(Adaptive Resonance Theory,自适应共振理论网络)等等。所以看历史文献时会看到许多没见过的概念与名词。   有些历史网络甚至会重新成为新的研究热点,例如RNN与LSTM就是80年代左右开始的研究,目前已经是深度学习研究中的重要一门技术,在语音与文字识别中有很好的效果。    对于这些易于混淆以及弄错的概念,务必需要多方参考文献,理清上下文,这样才不会在学习与阅读过程中迷糊。    2.类别   下面谈一下关于神经网络中的不同类别。   其实本文的名字“神经网络浅讲”并不合适,因为本文并不是讲的是“神经网络”的内容,而是其中的一个子类,也是目前最常说的 前馈神经网络 。根据下图的分类可以看出。 图41 神经网络的类别   神经网络其实是一个非常宽泛的称呼,它包括两类,一类是用计算机的方式去模拟人脑,这就是我们常说的ANN(人工神经网络),另一类是研究生物学上的神经网络,又叫生物神经网络。对于我们计算机人士而言,肯定是研究前者。   在人工神经网络之中,又分为前馈神经网络和反馈神经网络这两种。那么它们两者的区别是什么呢?这个其实在于它们的结构图。我们可以把结构图看作是一个有向图。其中神经元代表顶点,连接代表有向边。对于前馈神经网络中,这个有向图是没有回路的。你可以仔细观察本文中出现的所有神经网络的结构图,确认一下。而对于反馈神经网络中,结构图的有向图是有回路的。反馈神经网络也是一类重要的神经网络。其中Hopfield网络就是反馈神经网络。深度学习中的RNN也属于一种反馈神经网络。   具体到前馈神经网络中,就有了本文中所分别描述的三个网络:单层神经网络,双层神经网络,以及多层神经网络。深度学习中的CNN属于一种特殊的多层神经网络。另外,在一些Blog中和文献中看到的BP神经网络是什么?其实它们就是使用了反向传播BP算法的两层前馈神经网络。也是最普遍的一种两层神经网络。   通过以上分析可以看出,神经网络这种说法其实是非常广义的,具体在文章中说的是什么网络,需要根据文中的内容加以区分。   3.教程   如何更好的学习神经网络,认真的学习一门课程或者看一本著作都是很有必要的。   说到网络教程的话,这里必须说一下Ng的机器学习课程。对于一个初学者而言,Ng的课程视频是非常有帮助的。Ng一共开设过两门机器学习公开课程:一个是2003年在Standford开设的,面向全球的学生,这个视频现在可以在网易公开课上找到;另一个是2010年专门为Coursera上的用户开设的,需要登陆Coursera上才能学习。   但是,需要注意点是,这两个课程对待神经网络的态度有点不同。早些的课程一共有20节课,Ng花了若干节课去专门讲SVM以及SVM的推导,而当时的神经网络,仅仅放了几段视频,花了大概不到20分钟(一节课60分钟左右)。而到了后来的课程时,总共10节的课程中,Ng给了完整的两节给神经网络,详细介绍了神经网络的反向传播算法。同时给SVM只有一节课,并且没有再讲SVM的推导过程。下面两张图分别是Ng介绍神经网络的开篇,可以大致看出一些端倪。 图42 Ng与神经网络   为什么Ng对待神经网络的反应前后相差那么大?事实上就是深度学习的原因。Ng实践了深度学习的效果,认识到深度学习的基础--神经网络的重要性。这就是他在后面重点介绍神经网络的原因。总之,对于神经网络的学习而言,我更推荐Coursera上的。因为在那个时候,Ng才是真正的把神经网络作为一门重要的机器学习方法去传授。你可以从他上课的态度中感受到他的重视,以及他希望你能学好的期望。 版权说明:   本文中的所有文字,图片,代码的版权都是属于作者-『计算机的潜意识』和博客园共同所有。欢迎转载,但是务必注明作者与出处。任何未经允许的剽窃以及爬虫抓取都属于侵权,作者和博客园保留所有权利。 参考文献:    1. Neural Networks   2. Andrew NgNeural Networks   3. 神经网络简史   4. 中科院 史忠植 神经网络讲义   5. 深度学习 胡晓林
个人分类: 神经网络|3147 次阅读|0 个评论
机器学习的认知模式
热度 4 xying 2018-8-13 08:40
动物依靠本能与经验进行模式识别,这种在意识之外的辨识能力称为直觉。古人认为有着某种神秘机制的直觉联系,在看似随机的占卜中得到卦象,通过综合已知信息,依卦辞可以做出预测。在这过程中,只有解卦的推理是在可理解的意识层次,而核心的直觉环节,则在常人理解之外。这种难以理解的直觉和存在着误差的认知模式,被讲求理性的科学所排斥。 理性时代的辨识和预测,依赖于在意识层次上的逻辑求证。科学方法不外乎归纳和演绎。归纳是从已知的经验中寻找相符的规律,演绎则从确立的原理出发,依靠逻辑推导出涵盖对象的性质。科学的进步,从经验的归纳开始,走向可以进行演绎推理的理论体系,极大地推动了自然规律的发现和科技的进步。几百年来,抽象的概念,如时间、空间、力、粒子、波、场、能量等等,已经用因果关系的思想模式,建造成为不被质疑的真实,变成据以进一步想象推理的基石。归纳与演绎法在人类脑力可及的范围内相辅相成,其前提、过程和结论皆在人的意识监督之下,所得的结果能够想象,自洽而和谐,因此得以信赖。凡是不能在这科学体系中得到解释的机制,都被看作没有根据视为迷信。 人工智能的研究也走过从模仿感性辨识到理性演绎的道路。它在上世纪50年代,研究模拟动物应用经验方式的感知器(Perceptron),对输入数据学习分类实现联想推测。到了70年代,转轨到直接模仿人类的理性思维,以谓词逻辑进行运算和启发式搜索,根据科学知识资料作答。科学用因果关系构造了可以演绎推理的世界模型,几世纪来万众合力的研究已经累积起丰富的知识。人们曾经相信,在严谨的数理逻辑理论下,机器以其精确快捷的逻辑功能,依靠已有的科学知识,会突破人类推理能力的局限,超越人类智能。可惜,这曾经寄予的厚望只停留在实验室中。今日在市场应用中大放异彩的人工智能,依赖的不是规则下演绎的推理,而是用机器学习产生近乎直觉的智能。虽然机器学习的过程清晰,算法明确,结果有据可查,但参数演化如同卦象形成一般地复杂多变,巨量关系的计算犹如解卦似的难以深究。 给予一组样本,从选项中挑出一个最“合理”答案,这个类比判断的能力,作为人的智商来测量。它与拥有的知识无关,而是一种赖以学习知识的功能。学习算法通过计算机,模拟这种根据样本类比判断的功能,赋予了机器的智商。机器利用输入的样本数据,调整表示规律和分类的通用数学模型参数,汲取了样本中的知识,然后以调整好参数拥有了知识的模型作答。通常这些参数是以万计到百亿计的数量。虽然这通用数学模型很简单,却适用于各种辨识模式,足以涵盖复杂的预测和分类问题。这调整模型参数及应用模型的计算机制,在数学上都是精确有效的。但巨大数量的可变参数,难以把这简单结构数学模型的一个具体的辨识判断过程,解析成为像物理规律那样单纯过程的因果性机制,无法用简单逻辑推演的跟踪来获得理解。机器学习直接依赖于样本来寻找规律,类属归纳,但不像通常归纳法得出可供分析理解的结论,而是将训练的结果表示为机器所用的参数,越过可供人理解的中间环节,直接付诸于应用。在无数参数错综复杂相互影响的乱麻中,以直觉般犀利作出综合判断。这种学习机器的人工智能运作在人脑监督之外。 科学研究是否得到理性的辩护? 人类心智渐开,以因果关系想象万物运作的机制,希望在意识的层次能够通过逻辑来理解,这被认为是理性。机器学习的智能却渐渐走离我们理性的监督。这个直觉般的智能可信吗?这从样本得来的知识可靠吗?对此,我们先要了解在科学研究中习以为常,得以信赖的归纳和演绎法是否也得到理性的辩护? 我们从每天太阳从东升起,推测出明天太阳仍然是东方升起。英国哲学家休谟,曾经思考过这种归纳推理的理性根据。他说,理性的根据不外乎先验或经验的,我们不可能用先验的知识证明未知的和已知的会一致,因为只要想出一个(不一致的)事实,就在逻辑上否认了这种的一致性;我们也不能用过去使用归纳推理成功的经验,来证明它的可靠性,因为这是循环论证。已知的样本怎么能够反映未知的可能?你从一万只样本里归纳出天鹅是白色的,一只黑天鹅的出现,就粉碎了这个结论。所以当人们使用归纳法时,总是揣揣不安。 演绎推理貌似不然,被无数论文引用的原理,像真理一样的牢不可破,逻辑推理像钢铁机械般的坚实,基于理论演绎的科学进步提供了无可辩驳的证词,爱因斯坦更作出理论的逻辑推测胜过经验常识的范例。如今的研究,如果不在公认的理论框架里演绎,就上不了档次,就可能被质疑被忽略。然而,这些历史和现状也只是经验式的证据。我们同样无法证明,在逻辑上被引为大前提的原理,是先验的真理,事实上它只可能是经验的归纳;推理应用的条件总是一种忽略细节的近似,细节的差异可能导致完全不同的结论;逻辑在推理中也可能出现人们长期未能意识的错误。就像归纳推理一样,无数成功的经验和两三百年科学的发展不能成为论据,因此演绎推理也缺乏理性的根据! 欧几里德几何是演绎推理方法的奠基经典,它的公设曾被认为是不变的公理,演绎的结论都是唯一正确的真理。后来人们发现,其他的假设也有意义,由此演绎出不同结论的非欧几何也有真实之处。完全基于演绎推理的数学,已从绝对真理宝座退位,而被认为只是研究假设条件下逻辑自洽的理论,它仅仅是科学研究的工具,而不是独立于假设之外的真理。 最成功采用演绎推理认识世界的物理学,其基本原理也经历过几次变迁,并非是永恒不变的。亚里士多德是形式逻辑的创始人,他的万物原理认为运动是变化的过程,力是运动的原因。对自然提供一种直观统一的解释,在他的体系里,时空物体难以分割,位移是物体的变化。牛顿采用了不同解释世界的理论体系,在他那里,时间空间不依物质而独立存在,位移中的物体不再是一种变化,而是在绝对时空中独立不变的物质。他引入几个抽象概念,定义动量正比于位移变化,规定力与动量变化成线性关系,用微积分的数学工具,提供了比亚里士多德更精细的结论。爱因斯坦改变了与物质无关牛顿的绝对时空假定,动量和力也不再符合牛顿力学中的线性关系,以适光速测量实验。量子力学则模糊了我们已经信赖的波与粒子的真实,它进而修改我们已习惯了物理因果性的认知。近几十年来,现代各种新晋的物理理论,除了在数学上符合逻辑外,已经远离常人在几百年在科学熏陶下的想象和理解。用于演绎推理描述世界的基本原理,其实也像经验总结一样,每当新的事实出现随之修正。只不过用于演绎的理论体系,通过定义术语,规定测量,用数学建构规则,形成逻辑上自洽的庞大系统,人们只是不觉察这个缓慢的变化和其中的矛盾。人的信心建立在我们看到什么之上,而理论决定我们能够看到什么。但世界并非如此。科学理论的缺陷往往被人忽略了。 牛顿的微积分,让人们习惯了时空质量体积无限可分,应用微积分计算,在科学研究技术应用中成果斐然,但无限可分其实只是个便于计算的假设。“巴拿赫-塔斯基定理”证明了一个分球悖论,把一个球按特定的方法切成无数的碎片,通过旋转可以组装成一模一样的两个球。经过多年争论,人们确认它在数学上没问题,而是这样无限可分思想实验的推论不反映现实。 科学理论中许多基本假设,更不如经过几百年发展的物理坚实。具有严谨逻辑的博弈理论,是现代经济政治等社会科学的微观理论基础,自私理性人的假设是博弈研究的基石。1982年德国经济系古斯等教授对“最后通牒博弈”做了很多实验,这是一方提议,另一方表决瓜分100块钱的局势,同意按提议则按此分配,不同意则一拍两散,大家都一无所得。按博弈理论得出的结论将是提议方分99块,表决方得1块。实验证明没有这样的二百五,这时理性假设不灵,心理学更管用。 逆推法是很常用的逻辑推理方法。数学家、博弈理论学家、实验经济学先锋肯尼斯·宾默(Kenneth Binmore) 和数学家、博弈界大佬、2005 年诺贝尔经济学奖获得者罗伯特·奥曼(Robert Aumann),从1987年开始对“蜈蚣博弈(Centipede game)”能否采用逆推法展开激烈的争论,至今还没一个定论。这是一个适用于个人之间、公司之间、国家之间的博弈:和,则两利;贪,则两败。按照逆推法,两利的长期合作关系从一开始就无法达成。从理性的角度出发,得到看来很不理性的结果。从正常的心理思考,发现很不正常的心理。 哥德尔定理说:不存在着一个自洽的形式公理系统,能够有效地证明这里面所有的算术定理。这个系统的无矛盾性,也不可能在系统里被证明。波兰逻辑学家塔斯基(Tarski)在1931年送交了《形式化语言中的真理概念》论文,他从理论语义学或逻辑语义学角度研究形式语言,回答了类似哥德尔的问题。图灵的停机不可判定,与哥德尔不完备性定理等价,证明有些问题,机器不可能通过逻辑作出判断。所以不可能用逻辑演绎证明一切,基于规则推理的智能机器具有盲区。世界上众多基本原理相互间是矛盾的,这样才足以覆盖各种情况。人们往往没有意识到,引为推理根据的知识可能是矛盾的。我们信赖的归纳的演绎的据以描述世界的科学知识体系,要么有所局限要么互相矛盾。 我们为何认知世界? 既然归纳法和演绎法同样缺乏理性依据,机器学习更是不如,我们何以认知世界? 问题是认知世界为了什么?科学追求真理源于西方宗教的思想,认为存在着唯一正确的真理,生命的意义在于追求真理。对于宗教这很自然,不容置疑的真理已经记述在圣经中,剩下只是理解、见证和演绎。但对科学而言,理性只有先验和经验知识可凭,逻辑证明可依。既然先验之真不可考,经验归纳不可靠,任何认知模式希望得到追求真理式的理性认可,就是不可能的。休谟认为“如果理性沒有任何的依椐就能夠构成我们的思想、如果思想是从头到尾都是由理性所构成的,那么我们根本不可能会相信任何東西,包括了直覺或演绎得出的任何真相在內。”极致的理性追求只是一种宗教的向往。 为什么我们希望得到理性的认可?因为,在此之前人脑是唯一赖以推测和辨识的工具。推测判断经过因果性的逻辑追踪检查,引用认可的知识和简单的逻辑推理能够减少误判,能准确表达可在交流中纠错,最后因感觉自己想通了而心安。但逻辑追踪只能串行进行,人脑因长考能力的局限,必须借用已有的定式和结论来推理思考。因此科学在几百年间建立起一个庞大供以演绎推理的体系,人为建立了许多被看作是真实的概念,供我们来直观思考。但这科学知识体系只是能以较少错误成功有效地解释世界的一种系统。其他的经验解释,也许不能在这体系上得到很好解读无法直观想象,但也能有效地解决问题。 例如传统的电影推荐系统,将电影依戏剧片、喜剧片、动作片等类别和影星等作为特征属性,统计出各影片对这些属性的评级;然后依顾客对这些属性个人偏好的加权,推荐综合加权评级较高的商品。在这里,特征属性的选取,局限在理性可分析理解的意义上,对此人们感到科学可信的。而近年在KDD Cup和NETFLIX比赛中大出风头的矩阵分解推荐系统,同样基于属性分类的方法,但不再依赖人工选取的属性特征和统计评级,而是通过巨量的顾客购买记录和商品交易数据,用机器学习自动产生出商品的属性分类、赋值评级,以及顾客们的偏好;然后依顾客的购物历史,计算对这些特征属性的偏好加权,向顾客作出推荐。这个系统产生的属性分类,只是作为机器学习模型的参数变量,未必具有可以想象理解的明确含义,却比前者更有效,依赖人力更少。成绩斐然的深度学习与传统模式最大的不同,是学习中所用的特征属性也是由样本数据中自动产生,而非人为设计的。如果你想用逻辑推理追踪具体机器推荐的过程,你会困惑于那些没有科学解读含义的属性,就像见到阴阳五行解读那样难以接受,其实这不过是数学模型里合适的一组参数,与它们该怎么理解无关;如果属性有数以万计,人脑追踪则完全不可想象。虽然机器学习智能的判断,难以进行简单的因果性推演,但它训练和推断的算法,在数学上与其他科学推断一样的可信。 对机器学习的另一质疑是它的可靠性。确实,根据有限的样本,不可能有完美无误地的预测,无论样本的数量有多少,理论上它总是可能有误。尽管数学证明,供给足够多随机的样本数据让机器学习成功,它就有足够大的概率以足够小的误差作判断预测。但什么是足够多,怎么知道它们是足够随机,到底有多大概率多小误差?却是在具体实践中无法确知的,只在经验中可以比较。这与科学理论斩钉截铁的论断对比显得低弱。但是,科学的指导在实践上也经常出错,经济预测社会理论经常不靠谱,健康饮食科学建议年年在变,我们总是很宽容地把这归结为理论的误用。其实它在实践的效用,与机器学习识别的模式并无本质区别。 模式识别认知的智能是在生存竞争进化而来的,并非追求不可企及的绝对真理,而是为在现实中更有效用。从追求真理的角度,样本学习获取知识的机器学习并不可靠,用欧洲所有的天鹅作为样本,也不可能判别澳洲的黑天鹅,但在遇到黑天鹅之前,白天鹅的经验归纳大多是对的,在实践中有用的。机器的图像识别语音识别总有差错,围棋落子未必最优,但与人相比已经胜过,它在科技发展现实生活中带来的进步和便利,与物理和其他科学并无二致。理性是人类在意识层次上,理解因果关系的一种精神需要,而世上的真实与我们能否理解无关。机器学习由大量数据归纳形成由机器直接应用的复杂规律,必将越出我们逻辑思考的分析能力。它的发展倾向于脱离人类干预,更多地依赖硬件速度提高,容量增大,有效算法和数据的丰富。现在的机器学习还依赖于人来选取模型,算法和样本数据,然后交付机器自动运作,只是随着进步,人的参与会越来越少。这个进步就像我们从过去亲力亲为的生产者,上升为不再参与操作的管理者,最后将为自动工厂的拥有者。 面对人工智能,我们只有两种选择:因不能理解而排斥,或接纳这种无法透视但经验上有效的机器认知模式。 *此文曾发表在《中国计算机学会通讯》第13卷第6期(2017.6),文字略有修改。
个人分类: 科普|35906 次阅读|21 个评论
为什么机器能学习
热度 8 xying 2018-8-9 07:01
上一篇 《什么是机器学习》 介绍说,机器学习是一种自动化构建模型的数据分析方法。计算机的算法利用输入的样本数据,迭代调整一个通用数学模型的参数,使得完成这个“训练”过程后,它能对应用对象的输入,返回一个合理的答案。测试人类的智商是被测者参详样本在选项中挑出最“合理”答案,机器学习模仿这种类比判断的能力。 样本蕴含着数据的规律,在数学上是从问题的属性空间映射到答案空间的一个函数。机器学习的基本算法是从一族假设函数中,通过调整参数得到与之误差最小的函数。实践已经证明,这个学习机制非常成功地模仿了人类的智商功能,让机器从样本获得数据的模式,以此预测应用对象。 进一步深思,我们可能会疑惑,学习算法所得是与样本误差最小的数学模型,为什么它能用来判断样本之外的对象?机器学习的算法以取得与样本最小误差为训练目标,如果仅仅是这样,让机器简单记忆这些样本就好了,而包含有这些样本的应用对象,它的数据模式往往多不胜数,有限的样本怎么能用来判别无限的可能? 解答这个问题,先要分析排除一些简单的情况。 如果应用对象的数据值只有有限个。当学习的样本包含了所有这些值,学习当然不成问题。采用通用数学模型来学习,这时和死记硬背并无区别。只要判别输入是同于已知样本,预测等同于数据库的查询。逻辑推理是发现命题等价和蕴含关系的方法,如果能用逻辑推理,把问题输入归结为那些已知的样本,那可以从查询记忆来得出准确的答案。过去专家系统的人工智能 就是 在这意义上如此工作。科学理论和应用的推理本质上也是如此。这依赖于非常强的假设。 在实践中,应用对象的数据值可能有无限或近乎无限多种。在这种情况,传统的科学研究是通过分析简化,在理论上把它归结为简单的几种,应用时约减实际情况的细节,以纳入已知的条件,它可能工作很好,也可能因忽略关键的细节而出错。而专家系统的人工智能拘于形式逻辑难以过滤细节,往往陷入困境。机器学习最适合应用于这种科学分析无能为力的情况。 再看一个简单的数值预测学习问题,来厘清学习问题的关键。对于单一输入求对应数值的预测问题,其数据的规律是个单输入函数,可以用待定参数 w 的多项式数学模型来学习。公式如下: 数值预测的问题如果存在着这样模式:在一个区间里,当两个输入相差很小时,对应值相差也很小,那这函数可以用多项式来逼近。只要这数学模型有足够的参数,在这区间有足够多随机分布的样本,调整参数 w 总可以取得与样本很小的误差。那么它也能以很小的误差,在这区间预测任何输入的对应值。不难想象要取得学习成功必须满足几个条件。 应用对象的数据必须存在着某种规律或模式。 在应用的范围必须有足够多随机分布的样本数据,以覆盖各种情况。 机器学习的数学模型必须足够灵活的表达能力,以能拟合应用对象的数据模式。 机器学习必须能控制数学模型的表达灵活性,以免过度拟合输入的样本。 这些条件同样适用于一般的机器学习。第一条指应用的对象,如果它们是漫无规则,当然谈不上从中探知规律的学习和预测。第二条要求训练的样本必须包含足够多的数据规律信息,学习是从样本里汲取知识,它们必须充分蕴有。下面深入探讨与学习能力相关的后两条。 上述例子应用对象的数据规律是一个单变量函数,样本表现为 x-y 平面上一些点,学习算法调节数学模型的参数,让模型的函数曲线尽可能靠近这些点,如果模型只具有少量的参数,它的函数曲线比较“硬”,例如只能表达直线或二次曲线,它就不能适应一些更杂函数关系的样本点,表现为训练无法收敛,即数学模型不能拟合样本。另一方面,如果模型具有很多参数,表达非常灵活,它的函数曲线很“软”,调节参数很容易拟合这些样本点,也许应用对象的数据确是在一条直线,结果模型的函数曲线蛇形穿过样本点,特别是在样本含有误差的情况,虽然训练结果与样本点是完美吻合,但在样本之外却有很大的误差,这叫过度拟合。学习算法里的通用数学模型,它必须有足够的能力来拟合应用对象众多的样本,又能够防止过度拟合。这是学习功能的关键。我们从研究它的区分能力入手。 每个学习的机器可能有不同带参数的函数族作为通用的数学模型,同一个算法的机器,用不同的样本数据,赋予机器不同的知识和智能。机器的学习能力,只受数学模型对数据模式的表达能力所限,越多的参数具有越强的表达能力。 VC 维度( VC dimension )用来量度这种数学模型的复杂性、灵活性或表达能力,更准确地说是这函数族对数据模式的区分能力。这是上世纪 60-90 年代 Vladimir Vapnik 和 Alexey Chervonenkis 提出统计学习理论中的核心概念。 输出只有 0 和 1 的判断分类是最基本的情况,其他学习问题可以看作它的复合和变化。对于 N 个样本,把它们分为两类一共有 2 N 种不同的模式。学习算法中带有参数的函数族 H ,能够两分这 N 个样本的模式,最多的数量记为 m H (N) ,它是一个随 N 增大的成长函数,以 2 N 为上界。如果 m H (N) = 2 N 则说 N 个样本能被 H “粉碎( shatter )”,这时它能够实现这 N 个样本的任何一种两分模式,即对这里任何一种模式,都有 H 中合适参数的函数来实现这种模式的分类。 VC 维度 D H 定义为能够被函数族 H 粉碎的最大样本数 N 。例如,只有一个参数 w 的域值分类函数 ,有 m H (N) =N+1 , D H =1 ;具有两个参数 w 1 , w 2 在直线上的区间分类函数 ,有 m H (N) =N(N+1)/2+1 , D H =2 ;平面上一条直线,它能够区分 3 个点 2 3 =8 种分布模式,但不能区分 4 个点 16 种分布模式中的两种,示意如下图。 所以 2 维线性分类函数的 VC 维度 D H =3 。对于简单模型 VC 维度大致上等于参数的数目。用数学归纳法可以证明,函数族 H 能够两分样本模式的最多数 m H (N) ,在 N 到达 VC 维度之后,按 N 的多项式速度增长,这多项式的最高幂次是 D H . 如果应用对象的数据存在着某种模式,这意味着,当随机供给的样本数增加到一定程度后,随后的样本终将会落入前面那些样本可能的模式之中,所以只要数学模型的 VC 维度足够大,便能实现这种分类模式,这种情况下无论增添多少样本,都会落入机器能够辨识的模式,表现为训练的误差会收敛。另一方面, VC 维度太大,数学模型能够实现很多更为精细的模式,样本数据能被多种模式所拟合,训练可能选用了其中一种精细的模式,也许样本外的数据不能纳入这适应面较窄的那个精细模式,所以 VC 维度太大,错失的可能性也会越大,这表现为模型过度拟合样本,尤其是在样本含有误差的情况,对样本之外的数据误差会更大。 例如两个输入的感知器( Perceptron )或二维逻辑回归的数学模型 y = sign(w 1 x 1 + w 2 x 2 + w 0 ) ,是平面上的一条直线,它的 VC 维度是 3 ,它能够实现辨识 3 个样本点所有可能 8 种中任一的模式,对于线性可分模式的数据,再多的样本点也必定符合 3 个样本点所能划分的模式,只不过更多的样本点会更精确地调整参数,趋近应用对象数据分布的划分直线位置。如果样本含有误差,在较多的样本训练下也会得到纠正。如果采用 VC 维度更大的模型,如 y = sign(w 1 x 1 + w 2 x 2 + w 0 + w 4 x 1 2 ) ,对于线性可分的数据,经过训练它也能够辨识所有的样本,但因为数学模型是二次曲线,对样本外的判断误差较大,尤其是样本含有误差出现上图右边那种分布模式,它们能被模型更精确地拟合,但表现出更大的样本外判断的误差。 按 VC 维度概念所做的上述直观分析,用概率的语言更精确地表达是:以足够多随机选取的样本来训练,机器学习预测误差率能以足够大的概率收敛于训练样本的误差率。估计这误差的概率上界,有 Vapnik-Chervonenkis bound 公式: P ( |E in (h) – E out (h)| ε | ∃ h ∈ H ) ≤ 4m H (2N) exp( - ε 2 N/8) 这里 P 是概率,ε是任给的一个小数值, H 是数学模型的函数族, h 是训练选出的函数, N 是训练样本的个数, E in (h) 是 h 函数对训练样本预测的失误率, E out (h) 是对样本之外预测的失误率(数学期望), m H (2N) 是 H 能够两分 2N 样本的最多模式。只要函数族的 VC 维度是个有限的数, m H (2N) 对 N 按多项式速度增大远小于指数函数的减小。所以不等式的右边随 N 增大趋于 0. 这意味着只要训练的随机样本足够多,训练的误差足够小,那么对样本外的预测也能够取得很小的误差。这个误差上界的估计有许多研究,下面是其中之一,当ε很小时有很大概率是: E out (h) ≤ E in (h) + (8ln(2N) D H /N - 8ln( ε /4)/N) 1/2 这式子说明数学模型越简单,即参数变量少 VC 维数 D H 小,用非常多 N 的样本训练后,它预测的准确性就越容易接近于在训练样本上检测到的精度。另一方面,我们知道数学模型越复杂,训练的结果对样本集的失误率 E in (h) 就越小,它对样本的适应性就越好。成功的机器学习要求这两者都小,所以机器学习的算法调整模型参数,在追求尽量减小与样本误差的同时,也尽量减少起作用的模型参数,以便让成功辨识的同时,参与辨识数据模式起作用的 VC 维度尽可能的小,这样对样本外的误差就会大大地减少。这样的算法叫“正则化( Regularization )”。 简单数学模型分类器的 VC 维数大致等于函数族中自由变量的数目。复合 T 个 VC 维度为 D 的分类器,可以取得 T(D+1)(3ln(T(D+1))+2) 的 VC 维度,这意味着多层神经网络可以用较少的参数实现较复杂的数据模式,所以同样数目联接参数的深度网络要比浅层网络功能更强大。另一方面,对于一类应用对象,如图像处理,在深度网络中采用预设功能的处理层,如卷积层( CNN )有针对性的限制网络能辨识的模式,减少 VC 维度,可以取得更好的训练效果。所以深度学习要求很多设计技巧,有许多值得探索研究。 数学模型 VC 维度的概念和概率统计的公式说明,只要应用对象的数据存在着模式规律,数学模型具有足够大的 VC 维度,便有可能通过样本的训练辨识这个模式。通过足够多的随机样训练,它很可能精确地对应用对象进行预测。这便是机器学习的理论依据。它解释了机器学习在实践中取得成功的事实。 对于复杂的应用对象,机器学习需要巨量的参数和随机样本数据,它要求数据获取技术和支持这个巨量计算的计算机功能,这就是为什么一直到了大数据时代,人工智能新突破才到来。 数学的理论虽然证明了机器学习可以拥有很小的预测误差,但这是在概率的意义上,而且要求使用足够多的随机无偏样本来训练才能达到。这不但意味着它的预测,不像科学论断那样的确定无疑,而且这概率意义下的准确率,也依赖于训练样本的随机无偏性,这种无偏性事实上是无法确定的。而且要取得训练成功往往也需要多种的尝试。说到底,机器学习只是模拟了人的类比推测的功能,这是一种归纳式的推理,得不到科学理性的认可。我们虽然理解机器的学习机制,却无法用简单逻辑推演的跟踪来探知它所作判断的具体依据。学习的机器在无数参数错综复杂相互影响的乱麻中,得到犹如直觉般的综合判断,其计算直接明了却难以归纳剖析。尽管它显示出令人惊异的智能,无可争辩地带来了科技革命,却把我们的理性监督排除在外,我们能够信赖这种如同占卜似的,带有误差的认知模式吗?下一篇《机器学习的认知模式》将讨论这问题。 * 我这篇文章曾发表在《中国计算机学会通讯》第13卷第5期(2017.5),这里基本是原稿,文字略有不同。
个人分类: 科普|15034 次阅读|19 个评论
什么是机器学习
热度 3 xying 2018-8-6 10:13
2016 年开启了人工智能的时代。 AlphaGo 围棋胜了人类,轰动地冲击了人类的自信;微软 ASR 语音识别结果好过专业速记员;斯坦福大学 ImageNet 的机器已能读出图里的场景; IBM 机器沃森在日本只花 10 分钟完成 41 名病人的诊断,救了医者束手的白血病人,2017年2月还在中国天津给 20 个癌症病人义诊;特斯拉自动驾驶汽车已挤进车流;机器创作歌曲、绘画、诗歌、小说、电影也有了不俗的成绩。现在的人工智能,已经不是几十年前哲学家争论的,影视让大家熟悉的,那种按规则推理的木讷机器。它更像是我们培养的智慧生物,与我们有着同源的智力,其核心是机器学习。我们不告诉它怎么做,而是喂给它样本,让它从中汲取知识,以此自作判断。 这篇文章给学理工的人介绍机器学习。希望只要略懂线性代数和最小二乘法的读者,可以通过数学模型和具体的事例,了解其机制,对涌现在我们身边的人工智能有所认识。 机器学习 什么是机器学习?简单地说,计算机利用输入的样本,调整一个通用数学模型的参数,经过这样调整后,使得这模型能正确地回应新的输入。这个原理在几十年前就用在模式识别,现在计算机能力强了,能使用巨量的模型参数和训练样本,让机器展现出令人惊异的智能,被称为机器学习。 测试人的 IQ ,是让人回答几十道题,每道题列出几张图形,或几组数字,或几个词作为样本,让你从一组可能的选项中挑出一个最“合理”的答案,以此来评估人的智商。这与你拥有的知识无关,测定的是以样本作类比判断的能力。计算机的学习算法,模仿这种类比能力,赋予机器智商。人类具有智商,可以通过学习获得知识。计算机用调整数学模型参数的算法,实现学习的能力。样本的数据潜藏着大量的信息,通过训练给予了机器相关的知识,让机器拥有判断这类数据的智能。 先看一个机器学习的例子。计算机模拟 400 个输入节点 x , 10 个输出节点,具有 25 个隐含层节点的神经网络。 这可以表示成一个 400 维到 10 维实数值向量的函数 F: R 400 → R 10 如下: 神经元联接权重和阈值 w 共有 10285 个,它们是函数的可调参数。式中的 S 是一个 Sigmoid 作用函数 S(z)=1/(1+exp(-z)) ,让函数值饱和在 0 或 1 两端。 机器用它学习识别手写体字时,输入 5000 个各种形态图片的像素矩阵作为样本数据,每个样本是一张 400 个像素的手写数字图片,每个像素对应着一个输入节点,每个输出节点代表输入图片被辨识为的一个类别,输出值表示图片属于这节点类别的相似度。图片中手写表示的数字称为样本的标记,预期对应着具有最大函数值 F i 的那个输出节点 i 的类别。不难想到可以用最小二乘法来计算可调参数 w ,使得机器分类与这些样本标记的误差最小。然后我们可以用这训练好的神经网络,来辨识手写体数字的图片。 机器学习的过程 机器的学习过程是用反向传播误差算法( Backpropagation ),来迭代调整这 10285 个参数,这算法由最小二乘法导出,使得输入样本的标记与对应的输出节点类别判断的平均误差最小。实验通过 50 次迭代取得了 95.26% 的准确率。然后用这个调整好参数的神经网络,来识别新输入的手写体数字,也取得超过 90% 的预测准确率。注意,这个数学模型,即它所描述的这个神经网络功能,是通用的。同一个神经网络的机器,可以用它来学习识别手写体字,也可以用来区分债卷的等级等等,对债卷需要的是描述债卷属性的训练样本,来供给机器学习债卷的知识。同一个算法的机器,用不同的样本数据,赋予机器不同的知识和智能。机器的学习能力,即智商,只受数学模型对数据不同模式的表达能力所限,越多的参数具有越强的表达能力。 通常用多元线性函数和非线性作用函数的简单组合来表示数值规律和划分类别模式,实用中的线性函数参数是以万计到百亿计的数量。这样的数学模型虽然很简单,却因参数数量的巨大能够实现复杂的功能,足以涵盖各种预测和辨识情况。在数学上,这调整模型参数减少误差和应用模型预测的算法,都是精确有效的,但也因变量个数的巨大,难以分析由输入到输出每一步的变化规则,无从归纳成像物理规律那样简单明晰的因果性机制,无法用人脑跟踪逻辑推演的角度来直观理解它的功能。 也许有人认为计算机里的软件是人写的,机器不过实现人给予的功能,怎么算是机器学习? 这混淆了人赋予的功能和机器自己获得的功能。五十年代的感知器( Perceptron )是纯粹用硬件实现的机器学习,那用不上计算机更谈不上软件,那时用了 400 个光学传感器,电动机、滑动电阻和控制电路来实现,它学会辨识猫、狗、鱼的简单图像。这个感知器相当于神经网络中的一个神经元,现代神经网络具有千万个神经元,可以实现非常复杂的辨识问题,计算机和软件只是方便地用来模拟神经网络的硬件功能的手段。现在的训练样本也还是人供给的,但机器通过传感器和网络自己收集样本数据,在原则上并没有什么不可克服的障碍。例如自动汽车驾驶的机器学习,就是机器通过记录车速、油门、刹车、方向盘转角和路况的视频,作为训练机器的样本数据。尽管如此,确实,机器的学习功能是人给予的,但给予的只是学习的能力,机器通过训练的样本自己获得相关的专门知识和由此而来的智能。这就像人类小孩是父母生养的,但知识和能力却是自己通过学习获得的。 机器学习算法 下面介绍几种典型的机器学习基础算法和事例,让大家能够想象它的功能。 无监督学习和监督学习 无监督学习和监督学习是机器学习最基本的两类,其他的类似于它们的综合。最常用的无监督学习是从样本数据分布中,按它们的聚集来分类,例如用一堆新旧不同的人民币硬币尺寸和重量作为样本的数据,它们在 2 维空间的分布聚集在几个地方。人们看了知道它们是分成几类,依此知识可以判断送来的硬币类别。机器也可以这样做,它通过数据点相互距离的计算( K-means ),将相近的数据点的聚集按距离自动分割成几组。得到各组的中心和分布范围后,以此判别新输入硬币所对应的组别。许多事物看来杂乱无章,其实分属不同类别,例如学生潜力,绘画风格,生物分类等等,只要用足够多特征属性来描述,就可以把它们区分,但对于许多的特征属性,人类只能抽取能理解含义的少量特征,很难利用非常多的特征属性来分类,机器却很容易做到。在你现在的工作中,也可能应用现成的 N 维自动分类程序,在已经拥有数据中发现潜藏的分类。 无监督学习就像无师自通的领悟,效率较差,有些情况难以做到。有老师教学就会快得多。监督学习是最成功广泛应用的机器学习,用我们知识来标记样本的正确答案,去“教”机器学会应用。 线性回归 对于数值答案的问题,线性回归是最基础的算法,几百年前人们就用它从实验数据中导出经验公式。采用最小二乘法,求出与这些数据误差最小的直线或超平面。 这里 j 是输入属性的下标, i 是输出向量数值分量的下标, (k) 指第 k 个样本。它有公式解,在线性代数上称为“正规方程( Normal Equation )”的线性方程解。然而,商业应用中的机器学习模型未知参数 的数量巨大,公式解要求非常大的计算机内存和计算量来实现,通常是用梯度法迭代求出近似解。这是被应用最广泛的数值预测的学习方法。 数据关系不能用一个线性式子表示 ​ 怎么办?这可以通过增加一些与输入属性 x 是非线性关系的项,例如令 x 1 =x, x 2 =x 2 , x 3 =x 3 ,… ,有可能把它们表达成一个线性式子 ​ ,即高维空间里这些点可能放在一个超平面上,在样条函数逼近理论上,这已许多有数学研究。在应用上,它相应于选取足够多的输入属性表达。例如房价的估值,所在的地区和房子的面积是基本的属性,当它用线性回归预测误差较大时,加入邻居平均房价,房间卫浴个数,装修等级等等,用这些与已有属性不是线性关系的特征,来扩充属性空间的维数,有可能取得较好的模型精度。 逻辑回归 对于分类模式的判断,逻辑回归是基础的算法。在直观上是用一个超平面把输入属性空间分成两半,逻辑上对应着 0 和 1 。超平面用一个线性函数表示,输出对应于这线性函数值是否大于 0 。多个的超平面将属性空间分成多类。能够这样归类的数据称为是线性可分的。上世纪五十年代 AI 热潮中的感知器( Perceptron ),用一个 Sigmoid 作用函数加在线性函数之后, 让输出结果基本饱和在 0 或 1 ,并且易于用最小二乘法导出减少误差的梯度。它模拟了神经元的功能,它们一列组成的单层神经网络,能很好处理线性可分的模式识别。对于不是线性可分的模式,可以采用上述增加输入特征属性的方法,让它在高维空间上线性可分。 支持向量机 支持向量机( SVM )在单层神经网络基础上,采用非线性变换 φ 将输入的数据向量 x 映射到特征属性空间,让这些 φ (x) 在特征属性空间是线性可分的。它使得线性分类器可以用在非线性分类的问题。这个非线性变换不需要明确给出,它的实现是通过直接构造与特征属性空间中内积相等的“核函数( Kernel function )”来简化计算。支持向量机用分段线性函数代替神经元里的 Sigmoid 作用函数,这样调整间隔分类超平面的参数,就只跟较少的支持点有关了,既可以大大减少计算量,又把计算转化成二次函数在线性约束下求极值的问题。实践中的应用,涉及到巨大稀疏矩阵的计算。 1998 年 Microsoft Research 的 John C. Platt 提出 SMO 算法,可以高效地处理巨量的变量和样本数据,这使得支持向量机获得广泛的应用。支持向量机包含单层感知器作为特例,它有清晰数学理论的支持,能有效地控制训练结果,现在已有许多语言实现的软件包可用,相对于多层神经网络,它所要求的机器资源较少,是非常实用的学习算法。但它要求有应用领域知识的人力合作,来选取合适的核函数。它成功地应用在许多分类领域,如文本、图像、蛋白质、垃圾邮件分类和手写体字识别等等。 神经网络是多层感知器的网络,对每一层输入都用线性来分类,由于 sigmoid 作用函数,每层的输入和输出是个非线性变换,因此不需要人为设计属性变换,便能通用地实现各种数据的分类。文中最初介绍的就是三层神经网络的一个例子。理论上三层神经网络可以实现任何分类问题,但随着复杂程度的增加,要求中间隐藏层的神经元数会急剧地增加。每层神经网络实现一个线性分类函数,多层神经网络则实现了多重的复合函数,能用大大提高学习功能,用较少的神经元解决复杂的问题。但多于三层的神经网络,采用反向传播误差的梯度法来统一训练,较难控制学习的结果,所以兴起深度学习的研究。 深度学习 相对于前面单纯机制的机器学习数学模型,深度学习像是一种综合的工程设计,它基本架构是深层的神经网络,具有处理非常复杂模式的能力。为了提高训练的效果和效率,设计不同层次的网络构造,例如在计算机视觉广泛应用的卷积神经网络( CNN ),便是在低层先采用几个卷积核层和联营层来抽取特征和压缩信息,它们是 “先天”预设功能的神经网络层,具有较少可调的联接参数,能自动获取局部特征,且易于控制训练的效果。在深层网络中有的还采用分层采用无监督的预先学习和随后的监督学习,来提高学习效率。如何构造深度网络和控制训练是深度学习的研究内容。今天深度学习的神经网络已有百亿个神经联接参数,具有极强的智商,它需要巨大的计算机资源和信息数据的支持,多在大公司研究突破性的应用和探索人工智能的未来。 上世纪 80 年代,计算机的功能还不及现在的手机。手写体字识别的研究,应用上述例子中的神经网络来学习,限于计算机的功能和数据的收集能力,用几百个样本逐个迭代更新参数来学习,无论算多少小时,结果都不理想。现在用了 5000 个样本,同一个神经网络模型用批量计算更新参数,经过 50 轮迭代, PC 运行不到 10 分钟就训练好了模型。注意这里用的只是简单 400x25x10 节点的三层网络,已经有了 1 万多个待定的参数,输入样本是 400x5000 的矩阵。这个辨识 10 个数字图像的小项目,过去实现不容易,现在却很轻松。现在机器学习进入了与人类智能相较的时代。斯坦福 ImageNet 的机器学习,用了 1500 万张照片的数据库,涵盖 22000 种物品,对 2400 万个节点, 150 亿个联接的神经网络进行训练,能够让计算机看懂了照片,描述图里的场景。这些成绩证明了在巨量的样本数据和强大的计算能力支持下,凭借着上述非常简单的数学模型的学习机制,便能够使得机器通过训练,从白痴到了具备令人惊异的辨识认知能力。现在深度学习的成就还只是验证概念的破冰式探索,如何构造深度神经网络,怎么更有效地利用数据和利用已有知识更聪明的学习,例如具有长期、短期记忆的神经网络,“一次性的学习( One-shot learning )”等等,正在竞争研究中。 机器学习强大的功能来自巨量的可调参数,它的学习算法并不难理解,基本是向量和矩阵的线性运算,关键之处是巨量的样本数据获取,和支持巨量计算的硬件特别是 GPU 等技术进步。这就是为什么机器学习的突破,一直到了大数据时代才出现。 我们已经用数学模型介绍了机器学习的机制,不难想象它是怎么工作的。实践已经证明,这种学习机制非常成功地让机器获得辨识预测的智能。 但是进一步深思,可能会疑惑,学习算法所得的是与样本误差最小的数学模型,为什么能用它来预测判断样本之外的世界?下一篇《为什么机器能学习》将解答这个问题。 【说明】去年应《中国计算机学会通讯》特邀撰写专栏,我在那里发表些关于AI的系列文章。因为发现有些网站未经同意转载了部分内容,非学会会员不能阅读原版全文,造成一些混淆。所以我将在博客陆续贴出这些文章,以觞有兴趣的读者。这篇文章曾在 2007年4月 《中国计算机学会通讯》上发表,部分文字略有修改。
个人分类: 科普|6229 次阅读|9 个评论
人工智能应用需要高可信性(180806)
热度 8 ymin 2018-8-6 09:27
人工智能应用需要高可信性(180806) 闵应骅 本人搞了大半辈子测试和容错,对这方面消息比较敏感。最近看到新闻,商业巨头亚马逊2016年推出图像识别AI系统“Rekognition”,还积极向美国警方推销以帮助其办案。不过近日,“Rekognition”却闹了一个大乌龙:28名美国国会议员被它识别成了罪犯。 这一错误也让发起这项测试、反对警方使用“Rekognition”的美国公民自由联盟(ACLU)抓到把柄,他们表示,测试结果引起了民众对警方使用该系统的严重担忧。7月26日,ACLU在其网站披露:该组织对“Rekognition”进行了测试,结果系统错误地将28名国会议员识别为曾因犯罪而被捕的人员。 所以,人工智能应用被吹得热热闹闹,场景令人振奋,但是,真要付诸应用,人们对这些系统信任度存在疑问,可能产生严重后果。怎么能提供这些系统的高可信性呢?这就要深入到每一个具体系统,进行科学分析。本月IEEE Spectrum 2018/8发表一篇文章,“MAKING MEDICAL AI TRUSTWORTHY”,很有参考价值。 医药工业领域是人工智能系统应用的理想之地。医学检验、医生的面谈和过程被成文为患者病历,存为电子格式。AI系统可以摘要这些数据,从而决定较好和性价比较高的治疗方案。现在许多研究都在建造这种系统,许多文章描述关于分析纪录、扫描图像、产生患者健康的诊断和预言。譬如下图所示一个低分辨率的反映心脏跳动的心动图,用AI程序分离,取出最相关的部分,然后用解剖学的理解去进行诊断。 这类文章很多,但是,这些系统很少能进入医院里实际应用。 为什么会这样?匹兹堡大学的医学研究专家和物理学家Shinjini Kundu说:问题在于信任方面,你有可行的技术,但你怎么能得到人们的信任而使用之? 许多医用AI系统是个黑盒子,输入数据,得出答案。医生们搞不懂它为什么要这么处理。所以,Kunda研究AI对医学图像的分析与解释。她从对医学图像,譬如核磁共振图像,机器学习开始,从而发现医生感兴趣的模式。 Kunda最近用AI分析膝盖核磁共振图像(MRI),分析三年内会发展为骨关节炎的可能性。她用“生长模型化”技术,用AI产生一个新图像,一个保证会发病的图像。Kunda解释说,他们开发了一个黑盒子分类器,去产生一个图像,显示支持其诊断的模式。 人眼无法根据下图的MRI图像判断患者三年内是否会得关节炎,譬如上左图不会,但上右图就会得关节炎。而AI程序进行统计分析可以得出几倍方差范围内得这种病的概率。 AI产生的图像基于MRI扫描软骨的微妙变化,这些变化可能是医生们没有注意到的。这帮助人们去理解过去治关节炎的过程为什么没注意到。 旧金山加州大学助理教授、心脏病专家Rima Arnaout训练一个神经网络去分类超声波心电图,在分辨微小而低分辨率图像方面比心脏病专家精确多了。下一步将用该图像信息去识别解剖结构和诊断心脏疾病和缺陷。 但是,Arnaout说:“我不会去做自己无法信服的诊断。”她用两个技术去搞懂她的分类器是怎么做出决定的。在封闭试验中,他考察测试图像的部分变化如何改变AI的回答;用显著图,她跟踪神经网络的最后回答返回到原图,去发现什么像素权重最高。这两技术说明图像的那些部分对AI做出结论最重要,正和专家看重的结构相重合。 微软一位骨干研究人员Rich Caruana十年来一直致力于一项研究,就是让机器学习模型不但是智能的,而且是可以理解的。他用AI拿医院的电子病历去预计患者的结果。他发现即使是高度精确的模型也隐藏着严重的缺陷。他引用他对肺癌患者的数据集,训练机器学习模型去区分该入院的高危患者和可在家恢复的低危患者。该模型发现有心脏病的人较少死于肺炎,可以安心地算作低危人群。他解释说,诊断有肺炎的心脏病患者其所以结局较好,不是因为他们低危险,而是如果他们的呼吸困难早就进了急诊,从而得到治疗。模型发现的这种关联性是正确的。但是,假如我们用这种关联性去干预卫生保健,我们可能伤害甚至杀死某些患者。由于这些麻烦的发现,他正在研究清楚显示变量相关的机器学习模型,让它判断模型不但统计意义上精确,而且医学上可用。 所以,人工智能应用需要应用领域专家的深入分析、严格的测试过程、有效的容错技术,才能保证人工智能应用系统的安全可靠,人们才能放心使用。
个人分类: 计算机|19257 次阅读|31 个评论
[转载]图灵奖得主Hennessy、Patterson访谈:未来小学生都能做机器学习
Kara0807 2018-8-3 21:59
杨晓凡 德先生 在 Google Cloud Next 2018 大会上有一个万众期待的环节,就是今年三月获得 2017 年图灵奖的 John L. Hennessy、 David A. Patterson 两人的现场访谈。 谷歌母公司 Alphabet 董事长、斯坦福大学前校长 John Hennessy与谷歌 TPU 团队、UC 伯克利大学退休教授 David Patterson两人因计算机体系架构的设计与评价方法以及对RISC微处理器行业的巨大影响获得图灵奖后,在多个场合进行了演讲。在计算机体系结构顶级学术会议 ISCA 2018上,两人就是受邀嘉宾,面对自己研究领域内的研究人员们进行了一场严肃、详细而富有前瞻性的学术演讲。 而在谷歌 2018Next大会上,谷歌云 CEO Diane Greene作为主持人,与两人展开了一场面向普通大众的、覆盖话题更为广泛的现场访谈。访谈氛围不仅轻松幽默,也展现了两人对整个计算机领域的独到观点。 Diane :我知道大家都很期待这个两位大牛的访谈环节。我先简单介绍一下David和John,我想大家都已经认识他们了,不过还是啰嗦一下,John Hennessy是 Alphabet的董事长,David Patterson现在是谷歌的杰出工程师(distinguished engineer)。两人合著了大多数人学习计算机硬件架构所用的教科书(《计算机体系结构(量化研究方法)》,Computer Architecture: A Quantitative Approach),这本书现在也已经发行了第二版了。他们共同开发了RISC架构,也在今年获得了图灵奖,油管上有一个很棒的主题演讲。图灵奖的颁奖词是二人「 开创了一种系统的、定量的方法来设计和评价计算机体系结构,并对 RISC 微处理器行业产生了持久的影响 」。 1997年的时候John来到斯坦福大学任教授,1981年开始研究MIPS项目。1989到 1993年John 任计算机系统实验室主任 ——其实一般介绍的时候是不用说这一句的,但是很巧的是我的丈夫就是在这个时候被招到斯坦福去的,我在斯坦福跟他认识的。然后 2000年到 2016年的 16年间John担任斯坦福大学校长,对斯坦福大学有非常大的影响。 David 1976年加入UC伯克利大学任计算机科学系的教授,从 1980年开始担任 RISC项目的领导者之一。我就是在这里跟David认识的,是他的计算机架构课上的学生 ——我猜他已经不记得我了( - David:当然记得啊。 - John:那她拿到A了吗? - David:A+,肯定是A+)。David 2016年退休,在UC 伯克利工作了 40年。两个人都培养了许多优秀的学生。我刚刚才发现Wikipedia上写了 David在一个每次 2天的自行车骑行慈善活动里从 2006一直到2012年都是最高贡献者,看来后来没有继续骑了。 两位除了为这个世界作出了很大贡献之外,还有一件很棒的事情是, 两个人都与同一个妻子结婚超过 40年 。(全场哄堂大笑) John :如果换了妻子那就肯定不算了啊! David :澄清一下,我们是各自和各自的妻子结婚,不是娶了同一个人……(全场再次大笑) 谣言就是这么产生的…… Diane :那么,你们两个人都不是在硅谷附近长大的,上大学是在 70年代,拿到博士学位要到 70年代中末了。你们肯定在这之前就对电子电气工程和计算机科学感兴趣了,虽然这是很久以前的事情了,不过当时都是因为什么原因呢? David :我先说吧,我当时在UCLA念数学专业,这时候大学都还没有开设计算机专业。那时候我已经知道世界上有计算机这种东西了,但我从来没有想过要做计算机行业的事情,也没有什么毕业生劝我去做计算机。大三下学期有一门数学课取消了,我就在UCLA旁听了半门计算机的课程,当时讲的是Fortran语言,用的还是打孔纸卡,不过这都不重要,重要的是就是那个时候计算机来到了我的脑海里,我被深深地迷住了。我在大四的商务和工程课的课后自学了各种计算机相关的课程,然后毕业前有人给了我一份实验室的活干,我也就这样跟着读研了。 John :我第一次接触电脑是在上高中的时候,那时候我们有时分共享的计算机和纸带,现在看起来很奇怪的。我参与了一个科学项目,要做一台能玩三连棋(tic-tac-toe)的机器,然后用的都是继电器,现在的人很难想象,但是当时我也就只买得起这个。玩三连棋的人都知道,你稍微聪明点就能赢,但是很多人其实没那么聪明,所以机器还挺经常赢的。不过也就靠这个,我说服了我当时的女朋友她们一家人觉得我做这个也能做得下去,然后她后来成了我的妻子,所以从这个角度来看结果还算不错。 然后到了我上大学的时候,现在的人肯定不会相信 70年代的时候是没法学计算机专业的,有一些计算机的研究生专业,但是没有本科专业。所以我学的是电子电气工程,也决定好了要继续读计算机的研究生,就这样不后悔地一路过来了。 Diane :这几十年过得很快,如果当时有人告诉你们未来的技术发展是怎么样的,你们会觉得惊讶吗? David :应该会吧。你知道 Gordon Moore (英特尔创始人之一,摩尔定律提出者)当时在IEEE的某个期刊发了一篇文章写了他对未来的预测,他画了几张画,画了未来的计算机和小汽车,还有计算机可以在商店里面买卖。实话说我当时是不太相信他的预测的。 John :对的,有一张画里画的就是有人在销售家用的计算机。不过即便 Gordon对未来也有一些犹豫,他说我们能预测未来 10年会发生什么,但是更远的就预测不了了。所以我觉得没有人能想到,谁能想到微处理器最终占据了整个计算机产业,完全代替了大型机和超级计算机,谁又能想到大数据、机器学习会像现在这样爆发呢? David :是这样。机器学习其实一直以来都有,但它的突然爆发、不停登上媒体头条也就是过去四五年的事情。即便只是在 10年前都很难预测到这样的发展。 Diane :确实很惊人。那么,说到摩尔定律,摩尔定律现在怎么样了呢? David : 结束了!摩尔定律结束了! 人们很难相信摩尔定律终结了是因为十年、二十年以前就有人说摩尔定律要终结了,但现在是真的来了。摩尔定律是说,每一到两年晶体管的数量就要翻倍,在我们的演讲里John有一页PPT上就有一张图,这个翻倍的趋势已经结束了。这不代表以后不会有新技术带来新的提升了,不代表我们停滞不前了,但是确实不是每一两年就翻番了,它的速度要慢得多了。 John :对的。最近 5年里这个减速的趋势变得非常明显,这 5年里的发展速度已经比摩尔定律预测的速度要少了 10倍,而这样的缓慢发展的趋势还会继续。另外还有一个大家讨论得不那么多的、但是实际上要更尖锐的问题是 Dennard 缩放定律。Robert Dennard开发的技术大家都在使用,就是把单个晶体管作为DRAM的一个单元,我们每个人每天都在用。 他做了一个预测说,单位平方毫米的晶体管所消耗的能源是保持固定的,也就是说,随着技术的发展,单位计算能力所消耗的能源会下降得非常快。这个预测的依据是电压缩放定律等等,但是 Dennard 缩放定律现在也失效了 。这就是你看到现在的处理器需要降低频率、关闭一些核心来避免过热的原因,就是因为 Dennard 缩放定律失效了。 David :第三代的TPU 已经是水冷的了,就是这个原因。 John :对于大型数据中心来说水冷没什么不好,但是手机总不能也用水冷吧,我还得背一个包,包上都是散热片。那也太滑稽了。 Diane :成了比能源的游戏。 John :对,比的是能源了。 Diane :很有趣。那么继续这个处理器的话题,你们一个人做了RISC,一个人做了MIPS,那你们当时做芯片花了多久,为什么要做呢?这个问题挺大了的了。 David :最早我们在UC伯克利开始了RISC的研究。RISC是指精简指令集计算机。我们不仅讨论这个想法讨论了很久,我们也构建了模拟器和编译器。我们两个人都做了芯片的实物出来。 RISC的想法并不难,它的出发点是,软件要借助一定的词库和硬件沟通,这个词库就被称作「指令集」。大个头的计算机里占据了支配地位的思想是要有一个很大、很丰富的词库,可能有好几千个词,别的软硬件要使用起来都比较方便。John和我的想法与此刚好相反,我们觉得要有一个简化的词库、简单的指令集。那我们面对的问题就是,除此之外你还需要处理多少指令集、你处理它们的速度又有多快。最后我们的研究结果是,比我们一开始的计划增加了 25%的指令集,但我们读取的速度增加到了 5倍快。1984年在旧金山,斯坦福的学生和UC伯克利的学生一起在最顶级的会议上发表了科研成果,我们拿出的芯片无可争议地比工业界现有的芯片好得多。 Diane :从你们产生想法,到做出芯片发表,花了多长时间?现在做类似的事情需要花多久? David :4年。现在花的时间肯定要少很多了。 John :从当时到现在,很多东西都在同时变化。微处理刚刚出现的时候,人们都是用汇编语言写程序,然后随着逐步切换到高级语言,大家开始关注有什么编译器可以用,而不是有哪些汇编语言的好程序可以用。UNIX也就是那个时候出现的,我们开始有用高级语言写的操作系统,整个技术环境都在变化,当时虽然也有位片式的计算机,但是微处理器是一种新的技术,有着新的取舍。所有这些东西都给技术发展带来了新的起点,设计计算机也开始换成新的思路。 Diane :那么你们的想法被接受了吗? David :大家都觉得我们是 满大街扔鸡尾酒燃烧瓶的激进分子 。当时占据统治地位的想法就是,很丰富的指令集对软件来说更有帮助。要回到更简单、更原始的指令集,很多软件都会出问题。别人都觉得我们这是很危险的点子。1980到 1984年间,我们去那些大规模的会议参与讨论的时候,好几次别人直接生气然后开始大叫。我和John两个人在一方,其他嘉宾、会场里所有其他的人都在我们的对面。过了几年以后,他们才逐渐开始接受我们的观点。 John :不过工业界总是很抗拒。我记得当时有一个著名的计算机先驱对我说,你会遇到的麻烦是,你影响到了他们的现有利润了,因为你的技术的性价比要高得多,他们卖 20万美元的小型计算机,就要被你的 2.5万美元的小盒子代替了。对他们来说简直是毁灭性的。很多人都担心这个。也有很多人不相信这会发生,但是最后就是这样发生了。 David :今天都有很多人不认为RISC有什么好处。(笑) Diane :在你们开发 RISC的时候,Intel也发展得很快。 John :Intel做了很多事情。首先他们发现了一种非常聪明的方式实现一种叫做SIS的指令集,它可以把x86的指令集转换成RISC指令集,然后构建出RISC指令集的工作流水线。他们确实这样做了,在Pentium Pro上很高效地实现了它,在效率方面带来了很大的改进。对于芯片来说,缓存占的面积越来越大,其它的东西变得不那么重要了。但是有那么一个问题是你没法克服、也没法绕过的,就是 芯片的设计开销以及设计时间 。对Intel来说没什么问题,他们的开发周期是 2到 3 年,有四百名工程师的开发团队。但是这个世界上还有很多别的企业,比如设计移动设备的企业,你可能需要有 5款不同的芯片,而不是一款芯片用在所有的场景里,那你就需要能够快速设计、快速验证、快速制造出货的人。RISC在这方面的优势就改变了整个芯片生态的发展。 David :RISC有很大优势。John说的设计时间是一方面,能耗也是一方面。既然你用的晶体管更少了,芯片的能耗比也就更高了。 John :当你需要做低价的芯片,比如物联网领域的芯片的时候,你可能需要做每片只要 1美元的处理器。X86这样的有复杂翻译机制的芯片是没办法做到每片 1美元的。 Diane :我想问问,现在苹果、谷歌都在做自己的芯片,以前他们都没这样做。现在发生什么了? David :是的。一开始谷歌所有东西都是买现成的,现在慢慢地谷歌开始设计自己的计算机、自己的网络。John以前也说过,这些以前都是扁平的企业,现在都开始做垂直整合了。 Diane :看到这样的现状你开心吗? David :算是吧。如果你做的工作是卖新的点子,那你就希望能够找到很急切地希望尝试新点子的人。当市场上只有Intel和ARM两家指令集和芯片的承包商的时候,你必须去说服他们,写了论文以后要先去求他们。他们是守门的人。而谷歌这样的以软件为基础的企业就对硬件创新更开放一些,因为只要在他们自己的企业里面起效就可以了。 John :这样现状是因为哪里有创新的机会,哪里就会往前发展。之前很长的时间里我们都关注的是那些通用计算的芯片,它们变得越来越快。那么 随着通用芯片的效率变得越来越低,我们需要另辟蹊径。那么我们找到的方案就是为特定的任务优化芯片设计 ,比如为机器学习设计TPU,它是专用的计算芯片。那么谁有设计专用芯片所需的知识呢?就是这些垂直整合的企业们,它们有软件设计的能力,可以专门为硬件设计语言和翻译系统。这里也是一个有趣的变化,我觉得以后做计算机体系设计的人要变得更像文艺复兴时期的人,他们要对整个技术堆栈都有了解,要能够和最上层的写软件的人沟通,用和现在完全不一样的方式了解他们要的是什么。这对整个领域都很有意思。 Diane :因为太专用了,设计流程仿佛都倒过来了。做云服务的人能看到服务器上都在进行什么样的运算,他们看到的可能反倒比做处理器的人看到的还要多、还要明白。 David :对。这也是另一点有趣的地方。对云服务提供商来说,他们是一个闭环的生态系统,在企业内部它只需要解决一个局部的问题,不需要考虑通用计算市场和各种奇怪的使用状况; 它只需要解决那一个环节的计算就可以了 。所以这也会缩短开发时间。目前来看,这些大企业都很大胆地做出了各自的行动,微软在 FPGA上有很多投入,谷歌在做自定义的芯片,传闻说Amazon等等也在做一些全新的东西。所以这个时代很有趣,可以看到很多创新。 Diane :腾讯和阿里巴巴的情况如何? David :嗯,我觉得他们也在做芯片。 John :我觉得现在这个时候很有趣,是因为有一件我们没有预计到的事情发生了。虽然我们切换到了高级语言和标准的操作系统上来,但是 80和 90年代的时候你的硬件选择反倒变少了。PC的市场占有率太高了,大家都不得不关注PC,很多一开始专门给Mac写软件的企业都变成了专门给PC写软件的企业,就是因为PC几乎占据了整个空间,这限制了这个了领域可以出现的小创意和大创新。那么一旦我们有了很多的创新的量,我们就可以做出很多新的东西。 Diane :它对创新的限制就是因为是它单方面决定了整个过程,别人都要围绕着它来。 David :与x86指令集的二进制兼容性是一件非常有价值的事情。现在让我来看的话,这些垂直整合的企业都是在提升抽象的级别,比如从x86二级制指令到TensorFlow,这是很大的一个跨越。但是到了那个抽象的高度以后,我们就有很多的空间创新、把事情做得更好。 Diane :那语言和框架呢? David :如果抛开硬件架构不谈,现在有这种 让程序员变得更加有生产力 的运动。如果你是刚入门的计算机科学家,你肯定会学Python,这是一种很酷的语言,有很多很强大的功能,也有JupiterNotebooks支持,所以它带来的生产力很高。整个世界都有这样的趋势,我们可以看到 Python这样的脚本语言、TensorFlow这样的特定领域专用的语言等等,它们服务的用户群都更窄,就是为了提高用它们的人的生产力。 John :我觉得这就是正确的方向。如果我们想要有很高的计算性能的同时还要保持软件生产力的话,你知道只是逼程序员们写更高效的程序、发挥更多硬件能力是不行的,硬件本身也要对任务有所优化。那么我们不仅需要对编程语言做创新,还需要对整个编程环境做创新,然后把运行的结果反馈给程序员们。 Diane :这样它就能不断自己改进了。到时候全世界的人、小学生都可以编程了 John :你想象一下, 三年级的小学生在用机器学习,简直是不可思议 。 Diane :你们认为最终大家都会用某一款芯片做机器学习吗? David :以我们的职业经历而言,我觉得这是一批超乎寻常地快速发展的应用领域,由于摩尔定律失效了,它就很需要定制化的计算架构。你知道,典型的计算机架构设计就像是用 打飞盘 ,我们的子弹飞出去要花好几年,但是飞盘飞得太快了,等到子弹过去的时候谁知道飞盘已经飞到哪里了。那么我们现在看到有这么多企业都专门为任务设计优于标准微处理器的硬件,但是谁知道谁的点子最好呢,尤其是这个领域还在继续快速发展。据说现在有四五十家机器学习硬件初创公司,我们期待看到大家尝试各种各样不同的点子,然后看看最终谁能胜出。历史上都是这样,如果你回头看计算机架构的市场占有率,每个人都会做出自己的努力,然后逐渐有人胜出,有人退场了。 Diane :你觉得他们会不会受制于需要配合的那个软件? David :这里的考量是,因为我们提高了编程所在的抽象级别,所以不会受到限制。不然就是经典编程的问题了。 John :世界还有一个重要的变化是,如果你回头看 80年代、90年代甚至是 2000年左右的计算机,台式计算机和小型服务器还是绝对主流的计算模式。然后突然就是云计算、移动设备和IoT了,不再是只有中间那一小块空间了。这就是说,对于能耗比、性价比的取舍,我们现在可以有许多种不同的选择。这边我可以造一个 1美元的处理器用在IoT设备上,那边可以有一个水冷的三代谷歌云TPU,许多不同的运行环境,许多不同的设计考量。它也就提供了很高的灵活程度。 David :我现在觉得,这中间是什么呢,中间的设备需要考虑二进制兼容性。在云服务器上二进制兼容性不重要,在大多数 IoT设备上二进制兼容性也不重要。我们只需要创新就好了。 Diane :嗯,这些限制都不见了,那很棒。未来即将要到来的是量子计算,跟我们讲讲这是什么、讲讲你们的看法吧。 John :量子计算是「 未来的技术 」,唯一的问题是它「永远都会是未来的技术」还是有一天会真的到来。这个问题挺开放的,我自己的思考角度是, 如果大多数研究量子计算的都是物理学家,而不是工程师的话,那离我们就还有至少 10年时间 。 那么现在做量子计算的多数都是物理学家 。 量子计算的真正难度在于能否拓展它的规模。对于某一些问题它有着无可比拟的优势,其中一个它能解决得非常好的问题是因数分解,这其实对我们现在的信息安全提出了挑战,因为RSA算法的关键点就在于难以做大数的因数分解;这会给我们带来一些麻烦。其它很多方面也有优势,比如量子化学可以给出非常精确的化学反应模拟结果。但是如果要做大规模有机分子的模拟之类的真正有趣的事情,你就需要造一台很大的量子计算机。大家不要忘了,量子计算机的运行温度只比绝对零度高几K,那么我实际上就需要保持量子计算机的运行环境非常接近绝对零度。这件事很难做。而且,室内的振动、数据的采集甚至如果量子计算机没有做好电磁防护而你带着手机走进了屋里,量子计算机的状态都会完全改变。为了让它能够计算,就要保持它的量子状态,然后最终再采集它的量子状态。这其中的物理规律很惊人,我们肯定能够在研究中学到很多这个领域的知识,但是未来的通用量子计算机会怎么发展,这个问题就很开放了。 David :我觉得量子计算机和核聚变反应堆差不多,都是非常好的研究课题。如果真的能让它们工作起来的话,对整个世界都是很大的推动作用。但是它离我们起码还有十几年的时间,我们的手机也永远都不会是量子计算的。所以,我挺高兴有这么多人在研究它,我也很敬仰愿意做这种长期研究的人,你知道,以我自己来说,我的职业生涯里很难预测 5年或者 7年之后的事情,所以我做的事情都是关注短期一些的目标,比如花 5年做一个项目,然后希望再过几年它可以改变世界。不过我们也经常会错。你预测的东西离现在越远,想要预测对就越难。 Diane :你们两位都是在学术研究的环境里成长,然后加入了企业。不过学校和企业之间的关系也在不断变化吧,你们是怎么看的? David :计算机领域有一个很大的优点是 学术界和业界之间的关系是协同的、互相促进 的 。其他一些领域,比如生物学,他们是对抗性的关系,如果你在学术界你就只能做研究,到了企业就只能卖东西。我们这边不是这样的。 Diane :现在也没问题吗?现在大公司不是把学校里的教授全都招走了? John :这确实是个问题,如果做机器学习的人全都跑到业界去了,就没人来教育以后新一辈的机器学习人才了。 David :过去的 5年里人们对于机器学习的兴趣一下子爆发了,机器学习也确实有不小的商业意义,所以做机器学习的人的薪水也在上升,这确实有点让人担心。我们两个人职业生涯早期也遇到过类似的情况,也是一样的 怕把种子当粮食吃了 。当时微处理器以及别的一些东西因为太赚钱了,就会把所有大学里的人都吸走,没有人教育未来的人才了。现在机器学习确实有这方面的问题,不过你从全局来看的话,总是源源不断地有聪明的年轻人想要研究学术,所以也不会 100%的全都离开学校的。John还做过校长呢,你也说说。 John :像你刚才说的,我们这个领域的一大优点就是学术界和业界的互哺,企业的人和学校的人做的事情虽然不同但是也有项目的尊重。有许多领域都不是这样的,学术界的人觉得业界的人做的是 无聊 的工作,业界的人觉得学术界的人做的是 没用 的工作。计算机科学领域就不是这样的。其中一个原因可能是因为这个领域一直都发展很快、有很多事情在发生。你做的某项科研成果,10年后就可能改变这个领域。这真的很棒。 Diane :我可不可以这么讲,计算机领域的长期研究主要是在学术界,短期研究主要是在企业? David :差不多吧。 John :对,差不多吧。不过当然也有一些企业在做长期的投资,比如谷歌收购 DeepMind就是一项长期的投资。微软和谷歌也都在量子计算方面有很多投资,这些都是长期的投资。这和当年ATT收购了贝尔实验室的感觉差不多,都是长期的投资,而且这些投资让整个国家受益匪浅。 Diane :工程技术也随着科学技术在发展。最近我听说亚利桑那州有个人,Michael Crowe,创办了一所工程学校。你们怎么看? John :人们当然是在对工程本身做一些创新。计算机科学相比别的学科在工程方面也有很大的优势。我们有很多跨学科的内容,可以说有很多跨学科带着计算机科学向前走,这种趋势非常明显。有一些学科始终都起到核心的作用,比如医学和一些社会科学,那么大数据、机器学习的革命来临之后,社会科学发生了革命,我们对人类自己的了解、对整个社会的了解、如何改进整个社会都有了新的发现,这都很重要。 那么计算机科学呢,当我 2000年当上斯坦福大学校长的时候,我觉得计算机科学已经发展到头了,它就那样了。然后学生物的、学医学的人开始说「二十一世纪是生物学的世纪」,开始搞功能基因组学之类的东西 ——我不是说功能基因组学不重要,不过计算机科学可能是功能基因组学里最重要的东西,有计算机科学才能做出其中的那些发现。 所以我们看到了这一场难以置信的革命,我们看到学生的数目开始增长,以及谢天谢地,这么多年了,终于看到女学生开始变多一点了。这都是非常健康的现象。我们在吸引着他们,全国的、全世界的最聪明最优秀的人才都加入了这个领域,这让我非常激动。这也改变了整个世界。 David :当我和John刚加入这个领域的时候,其实我们自己的亲戚都觉得我们是不是入错行了,「行吧你想做就做吧」,就这样。 John :我爸都说,「做硬件还行,千万别做软件」。 Diane :我们看到科技行业吸引了这么多的资金,你们自己的学生创办了好多企业,John也建立过自己的企业等等。比尔盖茨现在不做了,全职做慈善。你们做老师的时候也像是慈善事业。那么你们怎么看慈善的事情,以及整个科技行业里的人。 David :我觉得,当年我拿到UC伯克利的Offer之后,过了一阵子才去报道。当时我看了一本书,名叫 Working ,里面采访了四十个不同行业的人,让他们谈谈自己的职业。我从书里读到的是,你要么要做一些结果很持久的事情,比如造帝国大厦,或者造金门大桥,要么和别人一起合作,比如做教师或者做牧师。这样的事情能带给你满足感,因为它们能影响到别人的生活。我自己就比较期待这样的工作。其实在美国,大家默认认为等你有钱了你就开心了, 但是其实如果你的目标是开心的话,你就直接向着开心去就好了 ,挣钱在其中不一定有多么重要。我几十年工作的驱动力就差不多是这样的。有的人其实做了研究,研究什么东西会让人快乐,其中一件事就是帮助别人。 影响别人、帮助别人能让你感到开心。所以我觉得如果你想要变得开心,你就应该帮助别人。 John :讨论这个还挺有趣的。我记得我大概 25年前和比尔盖茨有过一次讨论,我问他对慈善的观点是怎么样的。他说,微软的事情太多太忙了,我现在还没有时间考虑这个。不过如果你见过比尔盖茨本人的话,你就知道他是一个非常专注、非常自我驱动的人,从他管理微软的方式上你也能看得出来。后来当他做慈善的时候,那真的是完完全全的慈善家,他可以和斯坦福医学院的人坐下来谈生物学和疾病感染,谈得非常的深入。他和妻子梅琳达是真的非常投入地要让这个世界变得更好。Gordon Moore也是这样,他建立了摩尔基金会,在科学和保护区两件大事上花了很多钱。 比尔盖茨做慈善的时候很开心,他真的很喜欢慈善事业,他和梅琳达也是很棒的搭档。我在阿拉斯加看到了 Gordon Moore做的濒危野生鲑鱼的栖息地保护区,和 Mark Zuckerberg和他妻子 Priscilla讨论他们的慈善想法,讨论如何减轻人类疾病的影响,都非常棒。我觉得其中每一个例子、每一件事,都给他们的生命带来了一些很激动有趣的东西。 之前我做斯坦福大学校长的时候,我经常在想有什么办法激励别人变得更慈善一些。然后我看了 Alexander Hamilton 的作者 Ron Chernow写的另一本书,讲石油大亨洛克菲勒的事,他快 50岁的时候得了心脏病,差点死掉,然后他就退休了,这辈子剩下的时间都在做慈善,他创办了芝加哥大学,他建立了洛克菲勒基金会,一直好好活到快 100 岁,非常美满。所以我觉得回报他人能带来快乐,我们都是聪明的、有创意的人,都能把事情做好。这也是能真正地让世界变得更好的事情。 \0 \0
个人分类: 德先生|837 次阅读|0 个评论
转行人工智能,不得不温习的数学知识点
热度 2 zsfreefly 2018-7-25 09:12
人工智能的浪潮从2012年开始至今,席卷全球,几乎是家喻户晓的词汇。同时,人工智能也是多学科交叉的领域,涵盖了专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等诸多领域。 人工知识体系框架 目前我们所研究和应用的,是专用人工智能(或称为弱人工智能、感知人工智能);与专用人工智能相对的,是通用人工智能。专用人工智能阶段的智能体仅在特定领域有效果,比如AlphaGo在围棋领域战胜人类,但在象棋等其它棋类游戏中,用相同的程序就无法实现比较好的效果。而人类这一通用人工智能的智能体,不仅可以识人辨物,还会下象棋、打扑克或者麻将,不限于特定领域。 机器学习:一种实现人工智能的方法 当下专用人工智能的突破,归功于机器学习。但是,机器学习仅仅是实现人工智能的一种或者一类方法,并不是全部,这一点希望大家有清晰的认识。 机器学习从上个世纪50年代发展至今,衍生出了很多热门的研究子领域,以21世纪为例,先后经历了流形学习、稀疏学习、深度学习、深度强化学习、迁移学习等数个热点。甚至直到现在,学术界对于机器学习都没有完全统一的定义。 机器学习数学基础 总体来看,机器学习涵盖了微积分、概率论与数理统计、线性代数、矩阵论、信息论、优化理论等数学基础。近期,专注于人工智能在线教育的深蓝学院,联合南京大学计算机科学与技术系博士生与中科院自动化所博士,共同推出『机器学习数学基础』在线课程,课程大纲分享给大家,包含了机器学习涉及到的主要数学知识点。 Chaper1:引言 数学之于机器学习的必要性和重要性 Chaper2:函数求导 1. 背景介绍:以误差逆传播(BP)算法为例 2. 函数的极限 3. 偏导数,方向导数,梯度 4. 复合函数求导的链式法则 5. 案例分析:BP算法及其应用(以手写数字识别为例) Chaper3:矩阵论 1. 背景介绍:以线性回归为例 2. 矩阵概念与运算 3. 矩阵范数 3.1 范数定义 3.2 Lp范数 3.3 最小二乘回归误差度量 4. 矩阵的行列式、逆、秩和迹 4.1 求解线性方程组:高斯消去法 4.2 矩阵的逆 4.3 线性空间及其基 4.4 方程组求解的行列式表达 4.5 矩阵伪逆 5. 矩阵的特征值和特征向量 5.1矩阵特征值定义 5.2 矩阵的迹和行列式与特征值的关系 6. 奇异值分解 6.1 矩阵奇异值的定义 6.2 矩阵的奇异值分解 7. 矩阵求导 7.1矩阵导数的定义 7.2 矩阵导数对最小二乘的应用 8. 矩阵二次型与半正定 8.1 矩阵二次型 8.2 矩阵半正定的定义 8.3 最小二乘的半正定视角 9. 案例分析:线性回归及其应用(以前列腺癌发病率预测为例) Chaper4:凸优化 1. 背景介绍:以SVM为例 1.1 优化背景介绍 1.2 SVM应用案例 2. 优化问题与极值 2.1 优化问题及其标准型 2.2 优化问题的极值点 2.3 拉格朗日函数及KKT条件 2.4 SVM的最大间隔的数学表达 3. 凸优化基础 3.1 凸集与凸问题 3.2 凸函数与琴生不等式 3.3 保持凸性的运算 3.4 SVM的凸性分析 4. 对偶理论 4.1 对偶问题 4.2 强对偶 4.3 SVM的对偶求解 5. 案例分析:SVM及其应用(以Iris数据集分类为例) Chaper5:概率论与数理统计 1. 背景介绍:以朴素贝叶斯为例 2. 随机变量,概率分布(离散随机变量,连续随机变量) 3. 联合概率,边缘概率,条件概率,贝叶斯定理 4. 期望、方差/标准差、协方差 5. 不等式(切比雪夫不等式等) 6. 独立性,条件独立性,相关性 7. 常用分布:二项分布/Bernoulli分布分布(特例),多项式分布/Multinoulli分布(特例),均匀分布(离散/连续),高斯分布,指数分布 8. KL散度 9. 极大似然估计 10. 案例分析:朴素贝叶斯及其应用(以乳腺癌诊断和信用风险评级为例) Chaper6:信息论基础 1. 背景介绍:以决策树为例 2. 信息论中的基本概念I:离散随机变量(熵、联合熵、条件熵、互信息、相对熵,以及相互之间的关系) 3. 信息论中的基本概念II:连续随机变量(微分熵、交叉熵、多元高斯分布的熵) 4. 案例分析:决策树及其应用(以乳腺癌诊断和信用风险评级为例) 转行AI的建议 (1)人工智能人才的缺口,更多地在于高端人才,而不是调参工。 这就要求我们在学习机器学习时,不仅要知其然,更要知其所以然,通俗点讲,对于每个机器学习算法,仅仅会调用现成的函数库是不行的,要了解算法背后的原理,亲自推导一遍,亲自写代码实现这个算法,效果最佳。 (2)等学习完数学知识后,再学习机器学习的做法,未必可取。 机器学习涉及的数学知识点很多,在实际学习过程中,如果我们一味地学习数学,很容易枯燥厌烦,进而坚持不下来。 机器学习数学基础 最好的做法是,将数学与机器学习内容高度融合,学习完几个知识点后,接着学习这些知识点对应的机器学习相关算法,会让我们信心倍增。
5312 次阅读|2 个评论
专题讨论班:自然语言处理中的卷积神经网络(周池春)
GrandFT 2018-7-8 14:14
题目:自然语言处理中的卷积神经网络 主讲:周池春 时间:2018年7月8日(星期日)下午14:15 地点:天津大学新校区32教学楼302室 提纲: 1.自然语言处理背景介绍; 2.自然语言处理的传统方法和基于神经网络网络的方法介绍; 3.卷积神经网络介绍以及dcnn具体python实现; 4.其他相关内容介绍与开放问题讨论 参考文献: (ACL2005)SeeingStars:ExploitingClassRelationshipsForSentimentCategorizationWithRespectToRatingScales https://www.cs.cornell.edu/people/pabo/movie-review-data/ (EMNLP2013)RecursiveDeepModelsforSemanticCompositionalityOveraSentimentTreebank https://nlp.stanford.edu/sentiment/ (ACL2004)Asentimentaleducation:Sentimentanalysisusingsubjectivitysummarizationbasedonminimumcuts http://www.cs.cornell.edu/people/pabo/movie-review-data (ACL2002)LearningQuestionClassifiers http://cogcomp.org/Data/QA/QC/ (SIGKDD2004)MiningandSummarizingCustomerReviews http://www.cs.uic.edu/~liub/FBS/sentiment-analysis.html (LanguageResourcesandEvaluation2005)AnnotatingExpressionsOfOpinionsAndEmotionsInLanguage http://mpqa.cs.pitt.edu/ TomasMikolov,KaiChen,GregCorrado,andJeffreyDean.EfficientEstimationofWordRepresentationsinVectorSpace.InProceedingsofWorkshopatICLR,2013. KalchbrennerN,GrefenstetteE,BlunsomP.Aconvolutionalneuralnetworkformodellingsentences .arXivpreprintarXiv:1404.2188,2014. Chen,Y.,Xu,L.,Liu,K.,Zeng,D.,Zhao,J.:Eventextractionviadynamicmulti-poolingconvolutionalneuralnetworks.In:ACL,vol.1,pp.167–176(2015)
个人分类: 专题讨论班|1946 次阅读|0 个评论
如何用机器学习处理二元分类任务?
热度 5 wshuyi 2018-6-27 14:36
图像是猫还是狗?情感是正还是负?贷还是不贷?这些问题,该如何使用合适的机器学习模型来解决呢? 问题 暑假后,又有一批研究生要开题了。这几天陆续收到他们发来的研究计划大纲。 其中好几个,打算使用机器学习做分类。 但是,从他们的文字描述来看,不少人对机器学习进行分类的方法,还是 一知半解 。 考虑到之前分享机器学习处理分类问题的文章,往往针对具体的任务案例。似乎对分类问题的整体步骤与注意事项,还没有详细论述过。于是我决定写这篇文章,帮他们梳理一下。 他们和你一样,也是我专栏的读者。 如果你对机器学习感兴趣,并且实际遇到了分类任务,那我解答他们遇到的一些疑问,可能对于你同样有用。 所以,我把这篇文章也分享给你。希望能有一些帮助。 监督 监督式机器学习任务很常见。主要模型,是分类与回归。 就分类问题而言,二元分类是典型应用。 例如决策辅助,你利用结构化数据,判定可否贷款给某个客户; 例如情感分析,你需要通过一段文字,来区分情感的正负极性; 例如图像识别,你得识别出图片是猫,还是狗。 今天咱们就先介绍一下, 二元分类 ,这个最为简单和常见的机器学习应用场景。 注意要做分类,你首先得有合适的数据。 什么是合适的数据呢? 这得回到我们对机器学习的大类划分。 分类任务,属于 监督式 学习。 监督式学习的特点,是要有标记。 例如给你1000张猫的图片,1000张狗的图片,扔在一起,没有打标记。这样你是 做不了分类 的。 虽然你可以让机器学习不同图片的特征,让它把图片区分开。 但是这叫做 聚类 ,属于 非监督学习 。 天知道,机器是根据什么特征把图片分开的。 你想得到的结果,是猫放在一类,狗放在另一类。 但是机器抓取特征的时候,也许更喜欢按照颜色区分。 结果白猫白狗放在了一个类别,黄猫黄狗放在了另一个类别。跟你想要的结果大相径庭。 如果你对非监督学习感兴趣,可以参考《 如何用Python从海量文本抽取主题? 》一文。 所以,要做分类,就必须有标记才行。 但是标记不是天上掉下来的。 大部分情况下,都是人打上去的。 标记 打标记(Labeling),是个专业化而繁复的劳动。 你可以自己打,可以找人帮忙,也可以利用众包的力量。 例如亚马逊的“土耳其机器人”(Amazon Mechanical Turk) 项目 。 别被名字唬住,这不是什么人工智能项目,而是普通人可以利用业余时间赚外快的机会。 你可以帮别人做任务拿佣金。任务中很重要的一部分,就是人工分类,打标记。 因此如果你有原始数据,但是没有标记,就可以把数据扔上去。 说明需求,花钱找人帮你标记。 类似的服务,国内也有很多。 建议找知名度比较高的平台来做,这样标记的质量会比较靠谱。 如果你还是在校学生,可能会觉得这样的服务价格太贵,个人难以负担。 没关系。假如你的研究是有基金资助项目的一部分,可以正大光明地找导师申请数据采集费用。 但若你的研究属于个人行为,就得另想办法了。 不少学生选择的办法,是依靠团队支持。 例如找低年级的研究生帮忙标记。 人家帮了忙,让你发表了论文,顺利毕业。你总得请大家吃一顿好吃的,是吧? 学习 有了标记以后,你就能够实施监督学习,做分类了。 这里我们顺带说一下,什么叫做“机器学习”。 这个名字很时髦。 其实它做的事情,叫做“基于统计的信息表征”。 先说信息表征(representation)。 你的输入,可能是结构化的数据,例如某个人的各项生理指标;可能是非结构化数据,例如文本、声音甚至是图像,但是最终机器学习模型看到的东西,都是一系列的数字。 这些数字,以某种形式排布。 可能是零维的,叫做标量(scalar); 可能是一维的,叫做向量(vector); 可能是二维的,叫做矩阵(Matrice); 可能是高维的,叫做张量(Tensor)。 但是,不论输入的数据,究竟有多少维度,如果你的目标是做二元分类,那么经过一个或简单、或复杂的模型,最后的输出,一定是个标量数字。 你的模型,会设置一个阈值。例如0.5。 超出这个数字的,被分类到一处。 反之,被分类到另一处。 任务完成。 那么模型究竟在做什么呢? 它的任务,就是把输入的数据,表征成最终的这个标量。 打个不恰当的比方,就如同 高考 。 每一个考生,其实都是独特的。 每个人都有自己的家庭,自己的梦想,自己的经历,自己的故事。 但是高考这个模型,不可能完整准确表征上述全部细节。 它简单地以考生们的试卷答题纸作为输入,以一个最终的总成绩作为输出。 然后,划定一个叫做录取分数线的东西,作为阈值(判定标准)。 达到或超出了,录取。 否则,不录取。 这个分数,就是高考模型对每个考生的 信息表征 。 所谓分类模型的优劣,其实就是看模型是否真的达到了预期的分类效果。 什么是好的分类效果? 大学想招收的人,录取了(True Positive, TP); 大学不想招收的人,没被录取(True Negative, TN)。 什么是不好的分类效果? 大学想招收的人,没能被录取(False Negative, FN); 大学不想招收的人,被录取了(False Positive, FP)。 好的模型,需要尽力增大 TP 和 TN 的比例,降低 FN 和 FP 的比例。 评判的标准,视你的类别数据平衡而定。 数据平衡,例如1000张猫照片,1000张狗照片,可以使用 ROC AUC。 数据不平衡,例如有1000张猫的照片,却只有100张狗的照片,可以使用 Precision 和 Recall ,或者二者相结合的 F1 score。 因为有这样明确的评估标准,所以二元分类模型不能满足于“分了类”,而需要向着“更好的分类结果”前进。 办法就是利用统计结果,不断改进模型的表征方法。 所以,模型的参数需要不断迭代。 恢复高考后的40年,高考的形式、科目、分值、大纲……包括加分政策等,一直都在变化。这也可以看作是一种模型的迭代。 “表征”+“统计”+“迭代”,这基本上就是所谓的“学习”。 结构化 看到这里,希望你的头脑里已经有了机器学习做二元分类问题的技术路线概貌。 下面咱们针对不同的数据类型,说说具体的操作形式和注意事项。 先说最简单的结构化数据。 例如《 贷还是不贷:如何用Python和机器学习帮你决策? 》一文中,我们见到过的客户信息。 处理这样的数据,你首先需要关注数据的规模。 如果数据量大,你可以使用复杂的模型。 如果数据量小,你就得使用简单的模型。 为什么呢? 因为越复杂的模型,表征的信息就越多。 表征的信息多,未必是好事。 因为你抓住的,既有可能是信号,也有可能是噪声。 如果表征信息多,可是学习过的数据不多,它可能就会对不该记住的信息,形成记忆。 在机器学习领域,这是最恐怖的结果——过拟合( overfitting )。 翻译成人话,就是见过的数据,分类效果极好;没见过的数据,表现很糟糕。 举一个我自己的例子。 我上学前班后没多久,我妈就被请了家长。 因为我汉语拼音默写,得了0分。 老师嘴上说,是怀疑我不认真完成功课;心里想的,八成是这孩子智商余额不足。 其实我挺努力的。 每天老师让回家默写的内容,都默了。 但是我默写的时候,是严格按照“a o e i u ……”的顺序默的。 因为每天都这样默写,所以我记住的东西,不是每个读音对应的符号,而是它们出现的顺序。 结果上课的时候,老师是这样念的“a b c d e ……” 我毫无悬念没跟下来。 我的悲剧,源于自己的心智模型,实际上只反复学习了一条数据“a o e i u ……”。每天重复,导致过拟合,符号出现在顺序中,才能辨识和记忆。 因此,见到了新的组合方式,就无能为力了。 看,过拟合很糟糕吧。 确定了模型的复杂度以后,你依然需要根据特征多少,选择合适的分类模型。 上图来自于 Scikit-learn ,我截取了其中“分类”模型部分,你可以做参考。 注意模型的效果,实际上是有等级划分的。 例如根据 Kaggle 数据科学竞赛多年的实践结果来看,Gradient Boosting Machine 优于随机森林,随机森林优于决策树。 这么比有些不厚道,因为三者的出现,也是有时间顺序的。 让爷爷跟孙子一起赛跑,公平性有待商榷。 因此,你不宜在论文中,将不同的分类模型,分别调包跑一遍,然后来个 横向对比大测评 。 许多情况下,这是没有意义的。 虽然显得工作量很大。 但假如你发现在你自己的数据集上面,决策树的效果就是明显优于 Gradient Boosting Machine ,那你倒是很有必要通过论文做出汇报。 尽管大部分审稿人都会认为,一定是 你算错了 。 另一个需要注意的事项,是特征工程(feature engineering)。 什么叫特征工程呢? 就是手动挑选特征,或者对特征(组合)进行转化。 例如《 如何用Python和深度神经网络锁定即将流失的客户? 》一文中,我们就对特征进行了甄别。其中三列数据,我们直接剔除掉了: RowNumber:行号,这个肯定没用,删除 CustomerID:用户编号,这个是顺序发放的,删除 Surname:用户姓名,对流失没有影响,删除 正式学习之前,你需要把手头掌握的全部数据分成3类: 训练集 验证集 测试集 我在给期刊审稿的时候,发现许多使用机器学习模型的作者,无论中外,都似乎不能精确理解这些集合的用途。 训练集让你的模型学习,如何利用当前的超参数(例如神经网络的层数、每一层的神经元个数等)组合,尽可能把表征拟合标记结果。 就像那个笑话说的一样: Machine Learning in a Nutshell: Interviewer: what's you biggest strength? Me: I'm a quick learner. Interviewer: What's 11*11? Me: 65. Interviewer: Not even close. It's 121. Me: It's 121. 而验证集的存在,就是为了让你对比不同的超参数选择,哪一组更适合当前任务。它必须用训练集没有用过的数据。 验证集帮你选择了合适的超参数后,它的历史任务也就结束了。 这时候,你可以把训练集、验证集合并在一起,用最终确定的超参数组合进行训练,获得最优模型。 这个模型表现怎么样? 你当然需要其他的数据来评判。这就是为什么你还要划分出另外的测试集。 图像 François Chollet 在自己的书中举过一个例子,我觉得很有启发,一并分享给你。 假如你看到了这样的原始数据: 你该怎么做分类? 有的同学一看是图像,立刻决定,上 卷积神经网络 ! 别忙,想想看,真的需要“直接上大锤”吗? 别的不说,那一圈的刻度,就对我们的模型毫无意义。 你可以利用特征工程,将其表达为这样的坐标点: 你看,这样处理之后,你立刻就拥有了结构化数据。 注意这个转换过程,并不需要人工完成,完全可以自动化。 但是举一反三的你,估计已经想到了“更好的”解决方案: 对,这样一来,表达钟表时间的数据,就从原先的4个数字,变成了只需要2个。 一个本来需要用复杂模型解决的问题,就是因为简单的特征工程转化,复杂度和难度显著下降。 其实,曾经人们进行图片分类,全都得用特征工程的方法。 那个时候,图片分类问题极其繁琐、成本很高,而且效果还不理想。 手动提取的特征,也往往不具备良好的可扩展性和可迁移性。 于是,深度卷积神经网络就登场了。 如果你的图片数据量足够多的话,你就可以采用“端到端”的学习方式。 所谓“端到端”,是指 不进行任何的 特征工程,构造一个规模合适的神经网络模型,扔图片进去就可以了。 但是,现实往往是残酷的。 你最需要了解的,是图片不够多的时候,怎么办。 这时候,很容易出现过拟合。 因为深度神经网络,属于典型的复杂模型。 这个时候,可以尝试以下几个不同的方法: 首先,如果有可能,搜集 更多的 带标注图片。这是最简单的办法,如果成本可以接受,你应该优先采用。 其次,使用数据增强(Data Augmentation)。名字听起来很强大,其实无非是把原始的数据进行镜像、剪裁、旋转、扭曲等处理。这样“新的”图片与老图片的标注肯定还是一样的。但是图片内容发生的变化,可以有效防止模型记住过多噪声。 第三,使用迁移学习。 所谓迁移学习,就是利用别人训练好的模型,保留其中从输入开始的大多数层次(冻结保留其层次数量、神经元数量等网络结构,以及权重数值),只把最后的几层敲掉,换上自己的几层神经网络,对小规模数据做训练。 上图同样来自于 François Chollet 的著作。 这种做法,用时少,成本低,效果还特别好。如果重新训练,图片数少,就很容易过拟合。但是用了迁移学习,过拟合的可能性就大大降低。 其原理其实很容易理解。 卷积神经网络的层次,越是靠近输入位置,表达的特征就越是细节;越到后面,就越宏观。 识别猫和狗,要从形状边缘开始; 识别哆啦a梦和瓦力 ,也一样要从形状边缘开始。因此模型的底层,可以被 拿来 使用。 你训练的,只是最后几层表征方式。结构简单,当然也就不需要这么多数据了。 第四,引入 Dropout, Regularization 和 Early Stopping 等常规方法。注意这些方法不仅适用于图像数据。 以 Dropout 为例。假如一个模型因为复杂,所以记住了很多噪声,那么训练的时候,每次都随机将一定比例的神经元“扔掉”(设置权重为0),那么模型的复杂度降低。而且因为随机,又比降低层数与神经元个数的固化模型适用性更高。 文本 前面说过了,机器不认得文本,只认得数字。 所以,要对文本做二元分类,你需要把文本转换成为数字。 这个过程,叫做向量化。 向量化的方式,有好几种。大致上可以分成两类: 第一类,是无意义转换。也就是转换的数字,只是个编号而已,本身并不携带其他语义信息。 这一类问题,我们在《 如何用Python和机器学习训练中文文本情感分类模型? 》中,已经非常详细地介绍过了。 你需要做的,包括分词(如果是中文)、向量化、去除停用词,然后丢进一个分类模型(例如朴素贝叶斯,或者神经网络),直接获取结果,加以评估。 但是,这个过程,显然有大量的语义和顺序信息被丢弃了。 第二类,是有意义转换。这时候,每个语言单元(例如单词)转换出来的数字,往往是个高维向量。 这个向量,你可以自己通过训练来产生。 但是这种训练,需要对海量语料进行建模。 建模的过程,成本很高,占用庞大存储空间,运算量极大。 因此更常见的做法,是使用别人通过大规模语料训练后的结果。也就是我们曾经介绍过的词嵌入预训练模型。 具体内容,请参见《 如何用Python处理自然语言?(Spacy与Word Embedding) 》和《 如何用 Python 和 gensim 调用中文词嵌入预训练模型? 》。 注意如果你有多个预训练模型可以选择,那么尽量选择与你要解决任务的文本更为接近的那种。 毕竟预训练模型来自于统计结果。两种差别很大的语料,词语在上下文中的含义也会有显著差异,导致语义的刻画不够准确。 如果你需要在分类的过程中,同时考虑语义和语言单元顺序等信息,那么你可以这样做: 第一步,利用词嵌入预训练模型,把你的输入语句转化为张量,这解决了词语的语义问题; 第二步,采用一维卷积神经网络(Conv1D)模型,或者循环神经网络模型(例如 LSTM),构造分类器。 注意这一步中,虽然两种不同的神经网络结构,都可以应用。但是一般而言,处理二元分类问题,前者(卷积神经网络)表现更好。 因为卷积神经网络实际上已经充分考虑了词语的顺序问题;而循环神经网络用在此处,有些“大炮轰蚊子”。很容易发生过拟合,导致模型效果下降。 实施 如果你了解二元分类问题的整体流程,并且做好了模型的选择,那么实际的机器学习过程,是很简单的。 对于大部分的普通机器学习问题,你都可以用 Scikit-learn 来调用模型。 注意其实每一个模型,都有参数设置的需要。但是对于很多问题来说,默认初始参数,就能带来很不错的运行结果。 Scikit-learn 虽好,可惜一直不能很好支持深度学习任务。 因而不论是图像还是文本分类问题,你都需要挑选一个好用的深度学习框架。 注意,目前主流的深度学习框架,很难说有好坏之分。 毕竟,在深度学习领域如此动荡激烈的竞争环境中,“坏”框架(例如功能不完善、性能低下)会很快被淘汰出局。 然而,从易用性上来说,框架之间确实有很大区别。 易用到了一种极致,便是苹果的 Turi Create 。 从《 如何用Python和深度神经网络识别图像? 》和《 如何用Python和深度神经网络寻找近似图片? 》这两篇文章中,你应该有体会,Turi Create 在图像识别和相似度查询问题上,已经易用到你自己都不知道究竟发生了什么,任务就解决了。 但是,如果你需要对于神经网络的结构进行深度设置,那么 Turi Create 就显得不大够用了。 毕竟,其开发的目标,是给苹果移动设备开发者赋能,让他们更好地使用深度学习技术。 对于更通用的科研和实践深度学习任务,我推荐你用 Keras 。 它已经可以把 Theano, Tensorflow 和 CNTK 作为后端。 对比上面那张深度学习框架全家福,你应该看到,Keras 覆盖了 Google 和 微软自家框架,几乎占领了深度学习框架界的半壁江山。 照这势头发展下去,一统江湖也说不定哦。 为什么 Keras 那么厉害? 因为简单易学。 简单易学到,显著拉低了深度学习的门槛。 就连 Tensorflow 的主力开发人员 Josh Gordon,也已经认为你根本没必要去学习曾经的 Tensorflow 繁复语法了。 直接学 Keras ,用它完成任务,结束。 另外,使用深度学习,你可能需要 GPU 硬件设备的支持。这东西比较贵。建议你采用租用的方式。 《 如何用云端 GPU 为你的 Python 深度学习加速? 》提到的 FloydHub,租赁一个小时,大概需要1美元左右。注册账号就 赠送 你2个小时; 至于《 如何免费云端运行Python深度学习框架? 》中提到的 Google Colab ,就更慷慨了——到目前为止,一直是 免费 试用。 喜欢请点赞。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
9474 次阅读|7 个评论
为什么说人工智能是个坑?
热度 3 iggcas010 2018-6-24 22:13
从“ 高通员工被裁跳楼自杀 ”说起,一个中年的程序员反而不被重用,这是不可思议的事,在国内我不知道是否有这种情况。按理说,越是经验丰富,职位越高,工资也越高,怎么可能出现“被裁员”的情况呢? 或许是国内外文化、思维方式的差异吧。但我想说的是,人工智能本来就是个“坑”,跳之前你是否能承受跳坑后的一切后果呢?你需要想一想。 对外行来说,包括我这个菜鸟,从我学习这么久我发现要学的东西太多了,根本无法应付,毫无还手之力。下面具体说明,这些坑在哪里: 1、机器学习岗位 :通常认为机器学习是人工智能的核心,没有机器学习(包括深度学习)人工智能就无从谈起。 1)编程语言: 一个搞机器学习的人如果不懂两三门编程语言,似乎就Out了?通过某招聘软件的数据调研中,发现第一条要求大多是C/C++,Java,Python,有的甚至仍旧将Python单独作为附加脚本语言!!你可否明白,你必须要会C/C++,Java中的其中之一,而且还要会Python,大公司都是这么要求的。当然你说我就没打算去大公司,创业公司也可以,好,咱看第二条, 2)理论方法: 机器学习不会10来个常用的传统机器学习的方法,你敢说你是搞机器学习的?常见的比如:LR,SVM,gbdt,CART,LSTM,RL,DL等,这些你会吗,深刻理解吗?你会将它用C/C++,Java实现吗?别告诉我你会调包调库调函数?我不能说没有这样的公司,有是有。但大公司要求你必须会自己写,什么意思?就是你要会自己造轮子?!!我想这一条足够屏蔽99%的小白、菜鸟、培训出来的、外行及60%以上的科班生。但仍有公司会要仅会调包调库的,而且很多。下面第三条如你所愿, 3)框架: 机器学习框架tensorflow、caffe、keras、pytorch、mxnet、theano等等熟练掌握一个即可,你会tensorflow吗?别告诉我你就会个sklearn,当然我不会说什么,我又不是招聘者,这是他们的心理,他们只想追热门,tensorflow等框架是机器学习方法都能实现的,仅tf来说吧,打印个Hello World需要5行,简直就是一门新的编程语言了,恭喜你入坑!如果这三条都满足要求,基本可以确定你有公司落脚了,但仍有公司要求第四条。 4)大数据: 熟悉分布式计算(并行计算)平台/工具,包括但不限于Spark/Hive/Hadoop/MPI/MapReduce/Hbase/Storm,以上这些你都满足的话基本可以确定30k没问题的,那么你掌握这些需要多久呢?没有三年时间是达不到要求的哈,而且即便是科班生这些都难以达到要求,但对科班生来说,招聘者的心态不一样的好吧,人家会觉得科班生基础牢固,有前途,对外行会不断要求你证明自己,怎么证明?好,第五条, 5)项目/实习经验 :参加过项目或者有相关实习经验,你要能够讲出来做了哪些事情,有什么收获,不要参加了就是挂个名,这样的球用都没有,自圆其说明白不?另外也不要说不相关的项目、经历,说了也是浪费唾沫星子。 2、数据挖掘岗位 :当你随意拿出两本书,一本机器学习、一本数据挖掘,你会发现它们的内容是有重叠的。因此,数据挖掘的要求类似于机器学习,哈哈,左右都是坑。 1)编程语言 :R、Java、C++、Scala、Python、SPSS、SAS等,你会发现有统计学的软件,因此李航那本书《统计学习方法》讲的机器学习的东西一点也不奇怪。同时也会要求机器学习的理论, 2)理论方法 :掌握常用的分类、回归、聚类、关联、协同过滤等方法,这不就是机器学习的内容吗?因此,有的会增加一个要求,会建模,建模到底是个什么玩意?你百度下数学建模,你会发现那些方法其实就是一些统计学方法、机器学习方法,但建模的过程不容易,这个可能会实际考察你的经历,没有的话真的造不出来。 3)数据库 :掌握关系型数据库SQL,如MySql,Sql Sever、Oracle、MS Sql及NoSql(redis、MongoDB),哈哈,等于又又又又是一个编程语言了,爽歪歪。同样数据挖掘避免不了大数据,也需要掌握大数据的东西。 4)大数据 :略。 5)项目/实习经验 :略。 注 : 在机器学习和数据挖掘中,有些公司有屏蔽小白的要求,例如: 熟练掌握数据结构和算法 。这一条足够将很多外行拒之门外。 3、数据分析岗位 :其实数据分析往大了说就是数据挖掘,往小了说就是业务方面的统计,会个 excel透视表 , 可视化工具Tableau 等,再会个 统计软件 , 数据库 就搞定了,这也不简单好吧。没有3~5个月的专门学习是不行的,有没有更简单的数据分析呢?有,会个加减乘除就能解决的,当然工资也低,你也不愿意干。 这些东西怎么才能学得最快呢?显然是在公司、企业需求中学,当然很多公司不要小白、菜鸟,他们只要熟练工,因此才有了很多人反复跳槽,这就是其中一个原因,你不培养菜鸟,很多飞来的大咖肯定是谁给的钱多给谁干活,当有猎头来挖时,很容易就离职了,这个原因还是怪自己眼界狭隘!!这时候有的公司(招人的Boss)又会说,反正公司有钱,那就涨工资,反正不是自己的钱,培养小白时你咋不这样想?! 如果大家都不要小白,这是在维护科班生的饭碗,当然外行就会去培训,因此才有很多培训机构。如果适当引入小白,科班生会更优秀,道理显而易见。 套用马克思的一句话,当你认为用很少的钱就招到很优秀的员工而沾沾自喜时,你将为此付出十倍的代价。—— 就业择业本来就是个生态圈。
69834 次阅读|6 个评论
机器学习之关联分析——Apriori代码一
iggcas010 2018-6-23 21:41
上次的代码终于调好了,好累啊! 接上次博文: \0 http://blog.sciencenet.cn/home.php?do=blogid=1119829mod=spacequickforward=1uid=1966190bsh_bid=2094879447 \0 《机器学习实战》 这本书里的代码可以用在python27中,我这python365得不到正确结果。 于是本人给代码进行“换血”改成python365可用的程序,费了我好几天时间。 附件竟然不支持这种文件上传,好吧,我传到了百度云。 7天内有效 ,时效过了还想要给我发邮件。邮件地址之前的博文有。 链接: https://pan.baidu.com/s/1hC9Ju9NFY1XIHKQT23dPqA 密码:uqp9 网上所见全部是上面那本书中的,甚至一点都不改,有的还抄人家的书发成博文,无耻!!! 本人仅仅参考思路,将程序进行了修改。 调用方法如下: importmy_apriori2asma data= , , , ] #1包子2油条3豆浆4煎饼5香肠 data2= , , , ] data=data2 min_supp=0.5 C_all,_=ma.ctotal(data,True) #这个函数第二个参数要么是最小支持度,要么是True #最小支持度时计算满足最小支持度的组合,是True时生成所有组合 print('所有的组合情况如下:\\n',C_all) C_length=ma.c_length(C_all) clen=len(C_all ) ##print(C_length==2**clen-1) C,C_supp=ma.ctotal(data,min_supp) print('满足最小支持度的组合如下:\\n',C) 结果为: 所有的组合情况如下: , , , , ], , , , , , , , , , ], , , , , , , , , , ], , , , , ], ]] 满足最小支持度的组合如下: , , , ], , , , ], ]] 这种结果与将字符串换成数字是一样的,自己可以试试哈。 看到这个结果或许你再也不吃路边摊的早点了,老是 包子、油条、豆浆、煎饼、香肠 ,都想吐了 \0 \0 \0 \0 \0 \0 本人的结果和那本书中结果一致。截图如下: 下期预告:发掘关联规则
2065 次阅读|0 个评论
机器学习之关联分析——Apriori算法一
iggcas010 2018-6-19 23:53
千呼万唤始出来,犹抱琵琶半遮面。 本文仍旧进展很慢,因为 纯粹的说教毫无意义,不放代码的博文都是耍流氓。 本文暂时耍个流氓,明天或者后天将代码补上这里。因为这周比较忙,开始慌了。 \0 \0 \0 \0 一、Apriori 到底是什么 ? 学过 反演理论 的童鞋应该对 A priori 不陌生,对,就是‘一个先验信息’,先验信息在优化问题、数值求解中非常重要。如果先验信息找的好,非常省力,求解时间很短,找的不好可能得不到真实解,也可能无解。 1.1 先验信息到是什么? 我们对要求解的问题总会或多或少地知道 ‘一点’答案信息,比如双色球,蓝球肯定是 1~16 之间,红球肯定是在 1~33 之间,并且 6 个球不一样,顺序无要求。有人说,这是废话,知道这些东西还是中不了奖,哈哈,正常!再比如,我可以知道你要么单身,要么有对象,如果有对象,虽然我猜不到你对象是男女,但我能猜到你对象一般应该有两个胳膊、两条腿,不要说就你特殊哈,不耐烦了吧,其实 先验信息就是依据惯例所知道的东西,关键在于怎么用。 在上次的博文中提到路边摊卖的早点,根据先验信息,我们知道五种食品的组合(项集)只有以下几种(不可能出现什么都不买,让老板给你打印个购物单,肯定怼死你, “ 神经病 ”)。若采用暴力算法去算,经繁琐计算知道其项集组合应该有下面 31 种情况,分别是组合 ,其和就是31。采用二项式系数展开定理我们知道,如果有 n 个项,那么所有的项集有?种可能(如果自己推不出,可以发邮件问我) 上图在排列组合过程中很费劲,因为要把所有的情况考虑到,因此暴力算法也称蛮力算法、穷举算法。如果某店铺有 20 种零食,它们的项集有多少种可能呢?来,心算一下,结果是 1048576-1=1048575 ,你把这个数字给老板还不一巴掌啪死你。因此,我们要考虑实际情况,参照实际的售卖情况进行简单的统计, 如果出现某个项集(比如 { 油条,豆浆 } )的概率较大(也就是频繁),那么我们可以确定出现 { 油条 } 或 { 豆浆 } 的概率也很大 ,这就是所谓的 Apriori 原理, R U Clear? 这是什么鬼??它的逆否命题为, 如果子集不频繁,那么该子集的超集也不频繁 。 1.2 超集是什么? 在上一个博文中,支持度的概念里面应该提到超集,支持度是出现的项集只要包含指定项集即可,也可能有其他项。此时,包含项集的集合就是超集,超集的概念与子集相对。咱玩点文字游戏:空集是任何非空集合的真子集,此时的非空集合就是空集的真超集。 任何集合都是它本身的子集,同样也是它本身的超集。( 无聊 ) Apriori原理很强,如果儿子不肖,那么老子也不怎么样!是不是很强?! 咱回到初衷 ——关联分析,那么 关联分析的目的 就是 寻找频繁项集,并发掘关联规则 那么Apriori到底有什么用,是不是还没发现? 回想一下怎么提出 Apriori 的,是不是因为项的组合——项集太多,而不能用暴力算法计算,又因为我们只关注频繁项集,对于那些不频繁的项集就不予考虑,而 Apriori 就是一种发现频繁项集的方法,如果 { 豆浆 , 香肠 } 是不频繁项集,那么它的超集也是不频繁的,其支持度无需再计算了。因此 Apriori 只需知道最小的 支持度( 这是需要知道的参数,需要指定 ) ,将大于该支持度的项集保留,而其他项集去掉。这就是Apriori的具体作用。 1.3 伪代码在这 那么Apriori算法流程是:参考人民邮电出版社《机器学习实战》 1 首先生成所有单个物品的项集列表 2 遍历数据集中所有项集,将不满足最小支持度的项集去掉 3 对剩下的项集组合,生成包含两个元素的项集 4 重新遍历数据集,去掉不满足最小支持度的项集 5 重复上述过程,直到所有项集都被去掉 代码在哪里?欲知后事如何,且听下回分解。 (还在调代码中……)
6160 次阅读|0 个评论
“学习机器”与“机器学习” ——解读图灵思想中的人工智能
热度 3 liuyu2205 2018-6-19 14:00
我们的文章“智能哲学:‘第三问题’与图灵的‘模仿游戏’”一文[1]着重指出了图灵提出的“模仿游戏”的真正意义和价值,揭示人、机之间的复杂层次关系,本文结合我们对当前人工智能中“机器学习”问题的研究,进一步讨论“机器”与“学习”之间所隐含的人、机复杂关系。我们从图灵的一贯思想出发,发微图灵论文“计算机器与智能”[2]中所包含的丰富思想,特别是文章中第7章的内容。很明显,作为当前人工智能主流的“机器学习”与图灵所探讨的“学习机器”,其思考的角度和深刻性完全不同,启迪良多。 一、 “亚临界”状态“和“超临界”状态 在“计算机器与智能”这篇文章的第7章Learning Machines,图灵总结了对机器不能“思考”这种谬论的反驳,但他的论证是有底线的,他真正关注的方面不是机器的“功能”(思考)如何如何,而是机器的“状态”,在他看来,机器的“纯机械”方式,如钢琴演奏或剥洋葱一样:“绝大多数思想都处于‘亚临界’状态,对应于处于亚临界体积的反应堆,一个想法进入这样的思想中,平均下来只会产生少于一个的想法”,但是“有一小部分思想处于‘超临界’状态,进入其中的想法将会产生二级三级越来越多的想法,最终成为一个完整的’理论。动物的头脑显然是处于亚临界状态的。由于这种相似性,我们不得不问:’一个机器能不能做成超临界的?’” 图灵所说的这个“超临界”的状态,在我们看来,就是指现在不同于“机械步骤”(计算机)的“人工智能”的核心理论问题。 图灵认为,“亚临界”状态和“超临界”状态之间的区分和定义是非常困难的,图灵并不以为所有的这些争论已经解决了关于人的思维与机器思维的相同与不同的问题,这里既有公众对这个问题的关心所包含的模糊性(图灵努力地进行了分析),也有这个问题的自身本质上的问题,图灵承认:“These last two paragraphs do not claim to be convincing arguments. They should rather be described as ‘recitations tending to produce belief’”(上面两段并没有宣称是令人信服的论据,更应该被看作是“为了产生信仰的背书 ”,——即对立的观点的争论不过是背颂各自的宗教式的教条)。 实际上,图灵的思考并未过时,人工智能研究中的两条道路始终存在,一方面,以“联接主义”为名,代表了重视物理关系(硬件)的一方,另一方面则是以“符号主义”为名的重视算法(软件)的一方。重要的不是这两方的对立,而是这两方都有无法克服的困难,特别是双方无法沟通所形成的思想上的混乱,令人不安地再次想起“明斯基的咒语”。 尽管今天的“机器学习”取得了巨大的成功,但在这个领域最前沿工作的专家仍然承认,无法理解和解释最基本的人工神经网络模型(ANN)的机理;另一方面,除了模拟神经元-突触的ANN模型,迄今没有产生通用的Agent 硬件,现在人工智能研究大多是在电子计算机中的建模(函数化)进行的,“人工智能”与“计算机”究竟有何不同,成了公众和专家们共同的困惑。 2017NIPS (神经信息处理系统大会 Conference and Workshop on Neural Information Processing Systems,关于机器学习和计算神经科学的国际会议)上,Test of Time(时间检验奖)论文大奖获得者Ali Rahimi 在演讲中[3],把“机器学习”称为“炼金术”(Alchemy),类似的看法或对立性的争议在学术界一直没有中断过。Rahimi 引用吴恩达的话: “Artificial Intelligence is the new electricity”,(机器学习就是新时代的电力),他们的意思是说,现在的AI研究只是纯粹的技术活,整个AI缺泛严格性和一致性的理论基础,未能成为非常稳固、有规律、有系统理论的知识体系。Rahimi以后解释说,炼金术问题和黑箱问题的区别在于,“一个机器学习系统是黑箱”和“整个领域变成了黑箱”。与此对立的观点,如Facebook的首席人工智能科学家Yann LeCun则认为[4],工程技术上创新可以从乱糟糟中带来核心的理解,加州大学伯克利分校Benjamin Recht教授也认为有条不紊的研究和大胆开拓的研究可以达到一个平衡,“我们两者都需要”。 在此之前和之后,许多科学家表达了类似的看法和与此有关的剧烈论争,但所有这些对立的观点都承认,AI研究必须要有坚实的理论基础才能成为完整的科学理论体系,但现在的问题在于,我们不知道解决问题的方向,这种困惑几乎一直伴随着人工智能的发展历史。我们认为,可以从图灵的思想中去寻找启示,把当前作为工程技术的“机器学习”与图灵对“学习机器”的本质性思考结合起来,以获得理论研究方向上的灵感。 二、 “学习机器”与“机器学习” “学习机器”(图灵)与“机器学习”(当前AI的主流工作)这两个概念的不同就在于人(研究者)在人、机关系中的地位,也就是我们一直重视的人、机伦理关系。我们强调,图灵一直是作为机器的创造者角色进行思考的,他主要思考的是机器的“状态”,所以他细致地分析了机器的“亚临界”与“超临界”这两种状态,以我们现在习用的术语来说,这就是“线性的”和“非线性的”(指数的)两者本质的不同。 图灵始终以创造者的身份考虑“学习机器”的可能与不可能。对于他来说,算法与“机械步骤”都是功能性的,即“能行的”、“线性的”,对于专家或普通人这都不成为问题,真正的问题是:一个机器能不能做成超临界的? 而且图灵认识到,这个问题的最大困难在于,从工程学的角度上,无法回答这样的问题,以我们今天的理解,就是说,这是人的问题而不是机器的问题。 但当前人工智能研究的真正核心问题似乎还没有被人意识到,人们关心的只是如何发明、设计更好的算法,“机器学习”大部份研究几乎集中于此,所以称之为“电力”或“炼金术”并不冤枉,“机器学习”并不关心“机器学习”的本质是什么,从来没有像图灵一样反思过:“一个机器能不能做成超临界的?”,在他们意识中,似乎只要不断地“试错”下去,一定能让“猴子打出文章来”。 由此我们可以看到,这两个术语区别的重要性,特别是对这两者不加分析地混同,就隐藏或误导了人工智能研究中的本质性问题,实际上这个问题也是科学哲学的基本问题。 “试错”作为一种工程实践在以客观性和实证性为本质的科学领域内最终能产生突破性的成功,甚至引起“范式革命“ ,最终是以人的基本认知的转变,甚或以人的代际之间的替代为代价的,对于基本理论或概念的缺失,不能由“试错”产生。不能成为纯粹客观性和实证性的对象不是科学能力所及的,“智能”作为一个抽象的概念,不能成为科学研究对象。因此,在不知“智能”为何物,或者不能清楚地定义“人的智能”与“人工智能”这两个概念的情况下,想创造研究“智能”的显微镜、试验仪器、试验室或研究方法之类的想法,实际就是事先肯定了“人可以制造超临界的机器”的能力,这本身就是对科学精神的违背。 由此可以看出,“机器学习”与图灵的“学习机器”这两个概念在本质上有别,如何认识这两者的相同与不同,具有重要的实际意义。科学家习惯以科学思维方式工作,这是科学基本精神的人文价值,但以科学的客观性、实证去顶替人文精神,把“科学”当作一个咒语,用在人类所面临的一切,包括人类自身的价值、意义、命运上,这种以科学之名的狂妄与图灵的自知之明(Entscheidungsproblem)无法相比。 三、 对图灵的文章的直译、意译与释译 图灵的工作和文章的价值远没有得到充份的认识,当然图灵也不可能清楚、充份地回答所有的相关问题,但图灵对人类的能力的自知之明永远不会过时。解读图灵的文章时,理解他的思想、认知更重要。对图灵文章需要专研,在读、释中,如何深入地去理解图灵简短表达后的层次复杂性,不仅是语法语义问题,也是对历史的发掘(“知识考古学”——福柯),这是对历史的负责,更可以成为对现在和未来思考的灵感之源。 我们研读图灵文章时始终重视文章中隐含的多层次的复杂性,比如,对当时图灵写作基本思想的一致性和基本认知的理解,这可以举一段图灵原文的叁种不同的理解和译法作为例子: 原文:As I have explained, the problem is mainly one of programming. Advances in engineering will have to be made too, but it seems unlikely that these will not be for the requirements. 直译法:正如我所解释,问题主要是编程,工程上的进步也是需要的,但这种所需不被满足的可能性似乎不大。 意译法:正如我所解释过的,(现在的)问题主要是编程这一方面,虽然作为(计算机)工程上的问题应当受到(与编程)同样的关注,但这似乎不大可能,因为这些(“编程”和“工程”两者)无法(结合在一起而)胜任这种要求。 释译法:按意译所隐含的对应,one of programming的另一方,是工程(硬件)上的要求,这里的but it seems unlikely中的it 就是指Advances in engineering,it will have to be made too,注意这个Advances不是Advance的复数,Advances是“求爱、热切的要求”的意思,是单数名词,与it对应;后面that 是表达seems unlikely原因的状语子句,因为 these (软件和硬件)will not be adequate for the requirements,即, “工程”(硬件)与“编程”(软件)不能满足同时结合起来讨论的要求(for the requirements)。以现在的方式理解,这是对创造机器能力的人的能力而言,硬件的创造不是机器的能力而是人的能力,图灵始终是作为一个机器创造者(人类身份)而考虑人类的能力问题。编程只是“炼金术”级别,即使在硬件條件简单的情况下,也是可以讨论的。此句以下,图灵分析了当时硬件條件下可以只考虑的“学习机器”问题。 四、 成人的“学习”与儿童的“教育” 图灵区别成人的学习与儿童接受教育,虽然两者都可以名之“学习”,但图灵认为成人大脑所经历的经验不同于儿童大脑接受教育的性质,就是说,这相当于“超临界”状态与“亚临界”状态的不同。因此,“与其试图编程模拟成人大脑,不如模拟儿童大脑”,现在看来很明显,成人的学习是“学而时习之”的个人历史经验过程,儿童的教育具有被动学习的性质,主要依靠记忆和训练。但即使是这样,“儿童机器”的教育仍不同于机械的“学习机器”,儿童在教育过程中的变化是受教育者的责任约束的,人类对儿童的的教育具有类似于“自然选择”的重大责任。 图灵虽然是一个技术理论专家,却充满人文关切的伦理精神:“It will not be possible to apply exactly the same teaching process to the machine as to a normal child. …… The example of Miss Helen Keller shows that education can take place provided that communication in both directions between teacher and pupil can take place by some means or other. ” (对机器不可能应用与正常儿童完全相同的教学过程,……海伦.勒女士的例子表明只要老师和学生能够以某种方式进行双向的直接交流,教育就能进行)。今天,在我们面临AI基本理论问题和受到人、机伦理挑战的困惑的时候,图灵比我们清醒多了。 五、 规则与规则的规则 对于“机器学习”而言,算法、指令、逻辑、规则等具有相同的本质,但图灵对创造“学习机器”,特别是“儿童机器”而言,“规则”与“规则的规则”具有完全不同的意义,图灵认为,这是人工智能的基本性质: The imperatives that can be obeyed by machine that has no limbs are bound to be of a rather intellectual character, as in the example (doing homework) given above. important amongst such imperatives will be ones which regulate the order in which the rules of the logical system concerned are to be applied, For at each stage when one is using a logical system, there is a very large number of alternative steps, any of which one is permitted to apply, so far as obedience to the rules of the logical system is concerned. These choices make the difference between a brilliant and a footling reasoner, not the difference between a sound and a fallacious one. -没有肢体的机器人(AI,Agent)所能执行的指令具有智力性质,……在这些指令中,最重要的是调节逻辑系统规则的执行顺序,因为在使用这个系统的每一步,都会有许多不同选择,在遵守逻辑系统规则的情况下,任意选择一个都是允许的。如何选择将区分聪明推理者还是愚蠢推理者(Agent),而不是区分正确推理者还是谬误推理者(计算机)。 如果我们真正理解了图灵的这种思想,就不会为无法区分作为Agent 的AI 与计算机的能力问题而烦恼。 六、 不确定性与人工智能基本问题 我们的NP理论[5]坚持图灵对希尔伯特第十问题解决的基本意义,理解线性(P定义)与非线性(NP定义)分别是最基本的本质的区别,任何以P等于或不等于NP为目的前提、假设或猜想,都是循环定义或循环论证的错误。人类只能在线性与非线性之间建立最优近似性联系(NP-algorithm),但这不能以牺牲“线性”和“非线性”自身本质为代价。这种基本认知问题上的误导,就会产生以“停机问题”替代“不可判定问题”,以“图灵检验”替代“模仿游戏”。因此可以说,这些都是以“炼金术”取代基本概念和基本理论问题研究。 图灵提问:“一个机器能不能做成超临界的?” 实际就是希尔伯特第十问题在人工智能领域的再版化。正是尊循图灵一致性的思想,我们把算法理论、NP理论自然地延申到人工智能领域,有关这些问题,我们在“智能哲学”中进行深入讨论。 参考资料: [1]http://www.aisixiang.com/zhuanti/495.html [2]A.M. Turing, Computing machinery and intelligence, Mind,59, 433- 460,1950. [3]https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==mid=2650734337idx=2sn=a0482d8899df629a8b1e8c51d302fe2echksm=871b3b7fb06cb2697b4dafe698ef87256d49b72a78a7c3cd10563890edda02adb525d9480471scene=0key=57525b5230b75ef7f8d3197a7a096eee12021e31be3b4e863872af2b768b84f3ca7ad830a9e52d3f6963ad76871fdb6e6f478f02a04a20ea4ab84682bee4e71775e51612857a0d8dab789feb98285baeascene=0uin=MTY1NzgxNjIyMg%3D%3Ddevicetype=iMac+MacBookAir7%2C2+OSX+OSX+10.11.6+build(15G1611)version=12020810nettype=WIFIfontScale=100pass_ticket=FuwY1I1ZwTdtzuygXfj8oQ3sbx2mbbuoMkvag5lwjl55D%2BAbF7fEqVeGWQ1ooFcU [4]https://www.facebook.com/yann.lecun/posts/10154938130592143, [5] http://blog.sciencenet.cn/home.php?mod=spaceuid=2322490do=blogclassid=172041view=mefrom=space (此文已在“人工智能学家”( https://mp.weixin.qq.com/s?__biz=MzIzMzc3MjYyNQ==mid=2247486720idx=1sn=c90c47e5c1f14de2b168b043cea6142achksm=e881ce3edff64728f637330c8203b82cb4fb00798934e7976ee8ea36cb0562b21abcf7e1f220mpshare=1scene=1srcid=06127nGJ5BXgB7Ha3H5W2XEXpass_ticket=ry1iovIMQpfbFs%2BmpCgDrjndsjNbybCnX1e6dRuxG1q840kDTn2OBkPNwVidofkB#rd )和”爱思想”网站( http://www.aisixiang.com/data/110518.html )刊出)
个人分类: 智能哲学|10942 次阅读|5 个评论
人工智能与未来
热度 1 iggcas010 2018-6-18 23:50
今天我没有准备好相应的博文信息,在自己学习中总是遇到这样或那样的问题,不知道问谁,向谁请教。一直在寻找人工智能方向(包括机器学习、深度学习、数据挖掘、大数据等)的老师,然而在意料之中的是不顺利,因而自己建了个QQ群,欢迎对人工智能有极大兴趣的博士、专家、学者加入!希望能够在这个群里讨论热门问题,交流遇到的问题,共同进步,未来让我们一起AI ! QQ群号:156737288 名称:人工智能与未来 加群请填写实际信息,并修改群名片,方便交流!
2659 次阅读|2 个评论
机器学习之关联分析初步——概念
iggcas010 2018-6-17 23:50
本文介绍关联分析相关的基本概念 关联分析 :从大量的数据中寻找事物之间的隐含关系,称为关联分析,有的教材称关联规则学习。 任何事物之间都是有关的,发现它们之间的隐含关系非常重要,本宝宝就不提啤酒和尿不湿的关联了。这种看似没有任何关系的东西其实也是有交集的,发现这种深层的关联关系对于商品定价、销售、促销、存货都有很大的帮助。获得顾客购买物品的信息就可用于类似商品的推荐和销售,以及关联商品的销售。一个顾客、很多顾客都出现的关联商品的销售应该引起管理人员的注意,这种频繁出现的关联信息就是 频繁模式 。 先解释下什么是 频繁模式 : 望文生义也能猜到,频繁模式就是频繁出现的模式,而模式又是事物赖以存在的形式(前面博文提到过),因此,频繁模式可以解释为:在数据集中频繁出现的项集、子序列、子结构等模式。 关联分析的目的是什么?—发现频繁项集,发掘关联规则 频繁项集 :经常出现在一起的事物的集合,例如上面的啤酒和尿不湿,用大括号哈 {啤酒 , 尿不湿 } ,这就是一个集合, Python 的集合也是这么表示的。 有的说项集是项的集合,也就是说,啤酒是 项 ,尿不湿也是 项 。 关联规则 :就是两者之间紧密联系的关系,可用箭头表示,尿不湿— 啤酒,意思就是买了尿不湿可能就会买啤酒。 那么如果有人有疑惑?到底频繁和我们经常说的频繁有没有区别,或区别在哪里? 频繁 到底是怎么定义的呢?一天吃三次饭,跑两次步?这是一种频次表示,不够书面(高大上),总有些学者创造一些新的名词,显得自己逼格高,别人都不懂, 不明觉厉 !听了报告只能说, “厉害”,到底哪里厉害又说不上来,这就是一种屏蔽小白的方法。 在描述频繁的概念中有两个名词经常用到,一个是 支持度 (瞬间恼火,联想一下支持向量,哈哈),一个是 可信度 (有的叫置信度,和统计学里面的置信度概念是差不多的,可简单理解为概率)。 下面解释支持度和可信度 支持度 :数据集中该项集出现的概率,(只要包含该项集即可,含有项集外的项也可以) 可信度 :这个概率是针对关联规则来说的,买了尿不湿又去买啤酒的概率是多大?这个信息很重要,尤其是对老板来说。 下面举例子说明支持度和可信度: 路边摊卖早点的地方,一般都有 包子、油条、豆浆、煎饼、香肠 顾客的购买情况可能是: 序号 清单 1 油条、豆浆、香肠 2 包子、豆浆 3 包子、油条、豆浆、香肠 4 油条、煎饼 5 煎饼、豆浆、香肠 6 油条、煎饼、豆浆 7 包子、油条、煎饼、豆浆、香肠 在上面 7 条交易记录(序号和项集有的称事务)中, { 包子 } 出现 3 次,则支持度为 3/7 , { 油条,豆浆 } 出现 4 次,支持度为 4/7 ,很容易理解吧。 { 油条 } 出现的 5 次,支持度为 5/7 ,那么油条 — 豆浆的可信度为 “在油条事件发生的情况下,发生豆浆事件的概率”也就是{油条,豆浆}的支持度/{油条}的支持度,这里为 (4/7)÷(5/7) =4/5 , 可信度是不是就是条件概率。 当数据量比较大时寻找事物之间的组合比较困难,特别是采用暴力方法(Brute Force)无疑是最笨的,那么如何高效地获得频繁项集呢?好,这是下一个博文的重点—— Apriori 算法
3061 次阅读|0 个评论
机器学习之线性回归附Python代码
热度 1 iggcas010 2018-6-15 23:18
线性回归-Linear Regression 一、线性回归 原理:采用最小平方误差估计自变量和因变量之间的关系,通过建模求解回归因子(自变量系数),这种方法叫做回归分析。如果自变量个数的有多个,称为多元回归分析。 下面以统计模型库 statsmodels 中的解释进行说明: http://www.statsmodels.org/stable/regression.html 统计数据满足 , 其中X可以是多个自变量,而且全是一次项,这里面没有二次项等高阶项哈。 Beta 是 X 的系数,称为回归系数或回归因子,关键就是求 Beta ,求解过程其实就是将数据进行拟合,当拟合的值与实际值误差的平方和最小时就是所求结果。有些网上给的很多分析都是没有必要的扯淡,请以本文为主。 上述表达式和sklearn官方的是统一的:都是采用 OLS 求解的 http://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares 二、statsmodels实现 程序如下: 先来个官方文档:有点应用性不强,毕竟因变量在很多时候是直接给出的,这里造了一个 #多元线性回归 importnumpyasnp importstatsmodels.apiassm nobs=100 X=np.random.random((nobs,2)) X=sm.add_constant(X) #这一步是将截距加进去,初始值为1 beta= e=np.random.random(nobs) y=np.dot(X,beta)+e #解释下这行,等价于下面的 #y4=np.dot(X,np.array(beta).reshape(-1,1)).reshape(nobs)+e #np.all(y==y4) #True results=sm.OLS(y,X).fit() print(results.summary()) 完全和公式对应吧,一般model是 sm.OLS(y, X) ,在 sklearn 中都是 X 在前的,注意。 #来个双色球的线性回归,虽说没有理论依据,这里强行进行回归,数据来源中国福彩网 http://www.cwl.gov.cn/kjxx/ssq/kjgg/ 而且是100期的数据。【顺便说下,谁能给我爬下来这 100 期数据,我跟你学爬虫,菜鸟一般都爬不下来哈,别费劲了】 x1=data.values y1=data .values importstatsmodels.apiassma X=sma.add_constant(x1) model=sma.OLS(y1,X) results=model.fit() print('\\nOLS线性回归结果:\\n',results.summary()) xx=np.tile(range(1,8),(100,1)).reshape(-1,1)#换成一列 yy=data.values.reshape(-1,1) plt.figure(1) plt.scatter(xx,yy,s=1) plt.plot(xx,results.fittedvalues) plt.show() 结果如下: OLS线性回归结果: OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.049 Model: OLS Adj. R-squared: -0.030 Method: Least Squares F-statistic: 0.6220 Date: Fri, 15 Jun 2018 Prob (F-statistic): 0.712 Time: 21:00:23 Log-Likelihood: -233.80 No. Observations: 80 AIC: 481.6 Df Residuals: 73 BIC: 498.3 Df Model: 6 Covariance Type: nonrobust ============================================================================== coef std err t P|t| ----------------------- ------------ ------------------------------------------- const 15.4805 4.067 3.806 0.000 7.375 23.586 x1 0.1197 0.149 0.803 0.425 -0.178 0.417 x2 0.0301 0.199 0.151 0.880 -0.367 0.427 x3 -0.1403 0.239 -0.586 0.560 -0.617 0.337 x4 -0.0353 0.214 -0.165 0.869 -0.461 0.390 x5 0.0422 0.206 0.205 0.838 -0.368 0.452 x6 -0.1744 0.192 -0.910 0.366 -0.556 0.207 ============================================================================== Omnibus: 33.175 Durbin-Watson: 2.218 Prob(Omnibus): 0.000 Jarque-Bera (JB): 5.414 Skew: -0.043 Prob(JB): 0.0667 Kurtosis: 1.728 Cond. No. 368. ================================================= 打印的这是什么鬼??是个人都会完全懵逼的好吧。其实Python的这个结果和其他统计分析的软件是类似的,比如 SPSS ,说到统计,肯定有假设检验啊, t 检验、 F 检验 ,不懂不要紧,这里简单介绍下: 按照度娘百科的解释, t检验 可理解为样本平均数与总体平均数的差异是否显著,如果 P 值小于 5% ,那么可以拒绝 H0 假设, H0 假设是两者的平均值是相等的。 t 检验的结果在这里我却找不到对应的数据,,,懵逼。不过这里默认的是双侧检验。 F检验 是方差齐性检验,当 t 检验数据的方差不同时,应先进行 F 检验。类似于 t 检验, F 检验是看方差是否相等,这个相等不一定是绝对相等。 F 检验的 P 值这里是 0.712 ,不能拒绝假设 H0 。 R2是离差,这么小已经很 ok 了。、 Skew : 表征概率分布密度曲线相对于平均值不对称程度的特征数,也称偏态、偏态系数 正态分布的偏度为 0 ,两侧尾部长度对称。 Skew0 称分布具有 负 偏离,也称左偏态,此时数据位于均值左边的比右边的少,直观表现为左边的尾部相对于右边的尾部要长,因为有少数变量值很小,使得曲线左侧尾部拖得很长, skew0 称分布具有正偏离,也称右偏态。 用偏度检验分布的正态性。 Kurtosis: 分布形态陡缓程度的统计值。峰度为0表示该总体数据分布与正态分布的陡缓程度相同;峰度大于 0 表示该分布与正态分布相比较为陡峭,为尖顶峰;峰度小于 0 表示分布与正态分布相比较为平坦,为平顶峰。 峰度的绝对值越大,表示其分布形态的陡缓程度与正态分布的差异程度越大。 图在这里 重点来啦,图中的‘直线’的表达式到底是什么? 看到上面打印的蓝色部分了吗?Coef就是 beta ,左边就是对应的自变量。 三、sklearn实现 咱们看一下sklearn是怎么玩的? http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html #一元线性回归 importmatplotlib.pyplotasplt importnumpyasnp fromsklearnimportdatasets,linear_model fromsklearn.metricsimportmean_squared_error,r2_score #Loadthediabetesdataset diabetes=datasets.load_diabetes() #Useonlyonefeature diabetes_X=diabetes.data #前面导入数据不重要,关键看怎么用。 #Splitthedataintotraining/testingsets diabetes_X_train=diabetes_X diabetes_X_test=diabetes_X #Splitthetargetsintotraining/testingsets diabetes_y_train=diabetes.target diabetes_y_test=diabetes.target #分割数据也不重要,如果是分类的话,交叉验证里分割数据数随机的,这里是有顺序的 #Createlinearregressionobject regr=linear_model.LinearRegression() #创建模型 #Trainthemodelusingthetrainingsets regr.fit(diabetes_X_train,diabetes_y_train) #给模型喂数据,相当于训练数据 #Makepredictionsusingthetestingset diabetes_y_pred=regr.predict(diabetes_X_test) #预测数据 #Thecoefficients print('Coefficients:\\n',regr.coef_) #Themeansquarederror print(Meansquarederror:%.2f %mean_squared_error(diabetes_y_test,diabetes_y_pred)) #Explainedvariancescore:1isperfectprediction print('Variancescore:%.2f'%r2_score(diabetes_y_test,diabetes_y_pred)) #Plotoutputs plt.scatter(diabetes_X_test,diabetes_y_test,color='black') plt.plot(diabetes_X_test,diabetes_y_pred,color='blue',linewidth=3) ##plt.xticks(()) ##plt.yticks(())#去掉坐标轴 #训练数据集中有测试数据,这种做法不符合一般机器学习的规则,不可取 diabetes_y=diabetes.target model=linear_model.LinearRegression() result=model.fit(diabetes_X,diabetes_y) y_pred=result.predict(diabetes_X) plt.figure() plt.scatter(diabetes_X,diabetes_y,color='black') plt.plot(diabetes_X,y_pred,color='blue',linewidth=3) plt.show() 两个图在这 相对statsmodels中的结果, sklearn 还是人性化的,没有那么多难解释的数据。哈哈 四、总结 其实数据拟合在scipy.opimize中的 curve_fit 可以拟合你想要的任何表达式的数据,它都能够给你得到你的表达式的系数,这个表达式就是数据符合的模型,找对模型很重要。 很多东西其实scipy库也都可以做,但大家总是非要用 sklearn , TensorFlow ,及 keras , caffe , pytorch ,显得自己很牛逼的样子,甚至有的连 sklearn 都鄙视,这种情况不可取。掌握原理很重要,至于哪个工具实现,那也仅仅是工具罢了,你牛逼咋不自己造轮子啊,你要自己造轮子,我就服你,绝对膜拜!!! 五、下期预告 关联分析,很多公司都需要推荐算法,一直没有涉及Apriori、频繁树,这方面需要学习一下。 欢迎持续关注!
9017 次阅读|0 个评论
机器学习之KNN算法及TensorFlow实战
iggcas010 2018-6-13 23:55
K 近邻算法 - 监督学习 - 分类方法 一、分类 要训练的数据已经标记好了,标签的种类是确定的,训练数据与标签是一一对应的。 通过对训练集数据进行学习(训练),这种学习可以称为特征提取(或模式获取),最后得到一个模型或认知或一种映射关系(分类方法中就是分类器),将此模型用于没有标签的测试集,模型能够识别已有特征(模式)的数据,并对其进行分类。这是一种检验模型好坏(或叫泛化能力)的方法。 注意:待分类数据的特征必须是已有数据的特征。 举个反例:训练数据是猫和狗,测试数据是老鼠,你这不是逗比吗?显然测试结果肯定错误 。如果你想把老鼠确定为新的类别还是用无监督学习吧,比如聚类。 二、KNN方法 K 近邻分类方法在于将测试集数据与训练集数据进行比较,通过比较特征的相似程度来进行分类。相似程度是根据测试集数据与训练集数据距离最近的 k 个数据来确定的,这就是 k 近邻的由来。 具体算法为: 1. 先对训练集数据标记,指定其类别;( K 近邻不需训练数据,这是一种懒惰学习 ); 2. 计算待分类数据与训练集数据所有点的距离(采用欧氏距离,也可给距离加权重); 3. 选择最近的 k 个数据(其中 k 最好不要是类别总数的倍数,避免 k 个数据中各个类别数全部相等,尴尬!); 4. 在 k 个近邻中,类别数占优势的类别标签则是待测数据的类别( Easy 吧)。 三、KNN与K-means cluster的区别 对比于 k 均值聚类,其中的 k 是将数据分成 k 个聚类,首先随机生成 k 个质心,并计算所有数据与质心的距离,将数据分配到与质心距离最近的簇中,然后计算簇的均值,将均值作为该簇新的质心,再次计算所有点与新质心的距离,并将距离最近的点分配到该簇中,以此类推,迭代的前提是每次迭代中所有簇中的点与其质心的距离的和都比前一次要小,否则迭代结束,质心可以作为该簇的特征代表,它能够代表该簇的数据。 【 k均值聚类部分可作为上次 K 均值聚类的内容补充: http://blog.sciencenet.cn/blog-1966190-1118655.html 】 四、实战 理论很简单,下面来sklearn实现,参考 sklearn 官方例子: http://scikit-learn.org/stable/auto_examples/neighbors/plot_classification.html#sphx-glr-auto-examples-neighbors-plot-classification-py 不得不说官方文档总有些毛病,你把原理讲清楚就好,搞那些花边有啥球用,无非是增加了初学者的负担,恶心。 把那些没用的去掉了。 importnumpyasnp importmatplotlib.pyplotasplt fromsklearnimportneighbors,datasets n_neighbors=8 #importsomedatatoplaywith iris=datasets.load_iris() #weonlytakethefirsttwofeatures.Wecouldavoidthisugly #slicingbyusingatwo-dimdataset X=iris.data y=iris.target h=.02#stepsizeinthemesh weights='uniform' #wecreateaninstanceofNeighboursClassifierandfitthedata. clf=neighbors.KNeighborsClassifier(n_neighbors,weights=weights) clf.fit(X,y) #Plotthedecisionboundary.Forthat,wewillassignacolortoeach #pointinthemesh x . x_min,x_max=X .min()-1,X .max()+1 y_min,y_max=X .min()-1,X .max()+1 xx,yy=np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h)) Z=clf.predict(np.c_ ) #分类结果,很多数据,你也可以画成散点,这里画成了色图 #Puttheresultintoacolorplot Z=Z.reshape(xx.shape) plt.figure() plt.pcolormesh(xx,yy,Z,)#cmap=cmap_light #Plotalsothetrainingpoints plt.scatter(X ,X ,c=y,edgecolor='r',s=20) #这个是已有数据的类别,散点 plt.xlim(xx.min(),xx.max()) plt.ylim(yy.min(),yy.max()) plt.title(3-Classclassification(k=%i,weights='%s')%(n_neighbors,weights)) plt.show() 图在这里: 注意:上面代码中很多屏蔽小白的部分,clf是根据已有分类数据(散点)进行拟合,创建的分类器。 要预测的数据则是由h步长产生的meshgrid,也是散点,但这里画成了pcolor。 xx.ravel将数据一维化,np.c_各取数据中相同的索引组成的数组。 TensorFlow我都懒得吐槽,没法更垃圾了,打印个Hello World都得5行,这是一种倒退,还是sklearn好用。老子也没发现tf中有KNN的函数或者类,怪我孤陋寡闻了。不过这里给一个链接供参考,小白可以直接忽略了。看起来费劲,抓不住重点。 https://github.com/Mujadded/knn-with-tensorflow/blob/master/k-nearest.py
1152 次阅读|0 个评论
机器学习之K均值聚类附sklearn实战
iggcas010 2018-6-12 21:53
一、聚类:cluster 聚类是一种无监督学习,将相似的对象归到同一个类(簇)中。聚类源于分类,但不等于分类,两者最大的区别在于聚类要划分的类是未知的,也就是没有数据标记,没有标记则不知道最佳结果(训练目标),无需训练数据,这是无监督学习的共性(第二次提到哈)。分类是确定数据类别的,训练数据是有标记的,这是监督学习啊。分类的结果是生成一个函数(或者模型),用于数据分类,而且待分类数据的类别必然是已知的几种类别。 二、k均值聚类:k-means cluster 聚类方法中最简单的一种就是k-means聚类,这种方法是考试 / 面试中不可回避的,如果这个问题回答不正确,基本上可以确定 PASS 了。 由于聚类是根据数据之间的相似程度来确定归属一类,而相似度的计算方法并不唯一,如同测度一样,什么欧氏距离、闵可夫斯基距离、曼哈顿距离,一大堆任君选择。本文拟用欧氏距离来计算数据之间的相似度,对于非数值型数据(类别数据)可以采用数值型表示,并映射到二维空间。 关于这一点sklearn官方文档的定义是,各个群方差最小准则或者群的平方和最小。 http://scikit-learn.org/stable/modules/clustering.html#k-means 当然需要指定种群的个数,也就是要分多少类。对于数据集 X 中的数据,分为 k 个聚类 目标函数为:min 其中, k 是选择的聚类的个数; C 是聚类,共有 k 个; x 是聚类中的点( sample ); u 是聚类中心(均值、 centroids ),注意, u 一般不是 X 中的数据。 由目标函数可知,要使 V 最小,那么必有每个聚类中的点到该聚类中心的距离之和为最小。 三、sklearn实战 这个简单的目标函数实际求的过程中并不容易, 之所以你觉得容易,那是因为有人替你负重前行 ,早就给你编好了函数(这是个类哈)— sklearn.cluster.KMeans ,而你只需要简单的调用函数(创建对象)即可,真是无耻至极。 本宝宝 本来想自己编写一个,无奈精力有限,老是犯困,没能实现。 想到《机器学习实战》这本书里面有造的轮子,结果发现是python2.7的版本,放在我的 python3.6.5 中根本不行,错误改了不少,最后一个实在不知道应该怎么改了,没见过这种用法,可能是个错误吧。网上找了下,也是这样的。真是懒人多。 clusterAssment .A==cent 于是我也偷懒无耻一把 直接看官方给的调用练习吧。造轮子太费劲了。 http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_assumptions.html 修改第一个例子: importnumpyasnp importmatplotlib.pyplotasplt fromsklearn.clusterimportKMeans fromsklearn.datasetsimportmake_blobs plt.figure() n_samples=1500 random_state=170 X,y=make_blobs(n_samples=n_samples,random_state=random_state) #correctnumberofclusters estimator=KMeans(n_clusters=3,random_state=random_state) y_pred=estimator.fit_predict(X) xy=estimator.cluster_centers_ plt.scatter(X ,X ,c=y_pred) plt.plot(xy ,xy ,'r^') plt.title(CorrectNumberofBlobs) 图在这: 对其中的程序稍微修改,并画出了聚类中心,源文档没有这个,供参考。 四、下期预告:KNN 不要以为带NN的都是神经网络,就这个特殊, K-Nearest Neighbors — k 近邻,因为两者类似,易于混淆,所以放在一起,注意, KNN 是分类方法,属于监督学习。
7638 次阅读|0 个评论
用第三种贝叶斯定理求多标签分类——有简单方法何必用复杂的?
lcguang 2018-6-12 12:01
作者以前研究语义信息论,最近研究了多标签分类基本方法,觉得,从语义通信的角度 看, 结合已有的方法,应该能得到更简单更合理的方法。下面是最近研究的一个总结。、 本文使用交叉熵方法,即用样本分布代替样本序列。 参考文献:  Wikipedia 的多标签学习介绍: https://en.wikipedia.org/wiki/Multi-label_classification  张敏灵和周志华的多标签学习文章:A Review on Multi-Label Learning Algorithms http://cse.seu.edu.cn/people/zhangml/files/TKDE%2713.pdf  张敏灵等人关于二元关联的文章: http://cse.seu.edu.cn/people/zhangml/files/FCS%2717.pdf  本文作者的有关研究: http://survivor99.com/lcg/CM/Recent.html 其中有《从贝叶斯 推理到逻辑贝叶斯推理》后面简称《逻辑贝叶斯推理》。 全文见: http://survivor99.com/lcg/CM/Multi-Label_talk.pdf
个人分类: 信息的数学和哲学|2986 次阅读|0 个评论
机器学习之PCA理论及实战练习
iggcas010 2018-6-10 22:30
降维:主成分分析( Principal Component Analysis ,PCA) 通过维基百科可查到有两种方法可以进行PCA,EVD和SVD均可 https://en.wikipedia.org/wiki/Principal_component_analysis 一、本文介绍SVD进行PCA降维,上一篇已经介绍过了SVD,趁热打铁。 附:SVD理论介绍 http://blog.sciencenet.cn/blog-1966190-1118220.html 现有的数据 , 通常先使 X 均值为零(一般是令特征列为零),再进行 SVD 分解可得: , 其中 U 为 m 阶酉矩阵, V 为 n 阶酉矩阵。 构建主成分 , 若选择奇异值前 l 个,则 , 至此已经将X由 n 维数据变成了 l 维数据,降维过程结束。 可对P进行相关分析,即 分析发现P每列(即每个维度)均是不相关的,即正交的。 也可构建主分量 , 这是另一种做法。 若选取主分量,即较大奇异值(k个, kr )和对应的 V 中向量(右奇异向量),因为在 SVD 分解中奇异值已经是从大到小排好的顺序,只需选取主分量即可。构建主分量其实属于对 X 的正交变换,这种变换在信号处理中称为 KL 变换,可参考 KL 变换去噪的文献: Jones,I.F. and Levy,S.1987.Signal to Noise Ratio Enhancement in Multichannel Seismic Data via the Karhunen-Loeve Transform,Geophysical Prospecting,35,12-32 若选取主成分为: , 再进行反变换即 : , 这就是经过变换后的数据,显然有信息丢失,可以用保留的奇异值来计算主成分贡献率,这是去噪的流程。 二、再来看特征值分解EVD如何进行PCA 一般概念 协方差矩阵 :设 X 为 n 维数据,即 X n × n =(x 1 ,x 2 , …… ,x n ) T , X 的自协方差矩阵定义为 上式中 i 和 j 取不同的值,则可得 n × n 的矩阵。 如果求两个数据的协方差矩阵,只需将式中的 X i 换成 Y i 即可。 相关矩阵 :上式中最后一行第一项即是相关矩阵的定义,因而可知,只要将数据均值为0后,其协方差矩阵就是相关矩阵。 这部分内容是信号处理中的基础知识,可自己查看清华大学张贤达《现代信号处理》。 协方差矩阵的性质 (如果数据为复数): 先对 的每列零均值化,计算的协方差矩阵 , 因 ,故C是酉矩阵。 对C进行特征值分解,即求特征值和特征向量。 可化为 ,其中 , V 是特征值对应的特征向量构成的矩阵, V 的每一列是特征向量。将特征向量按照特征值的大小排列(MatLab可能是从小到大排列的,注意调整),并进行模值归一化,取前 k 列特征向量,构建主成分 即可得到降维后的数据。 三、PCA 实战参考链接: https://blog.csdn.net/shizhixin/article/details/51181379 https://blog.csdn.net/google19890102/article/details/27969459
1427 次阅读|0 个评论
基于统计的机器学习之所以效率高就在于它可一劳永逸
geneculture 2018-6-10 17:55
基于统计的机器学习是很厉害的。因为,只需要一次设计好,余下的就几乎都可交给计算机去自动统计并给出分析报告了。-邹晓辉(塞尔科技) 附录: 例如(这仅仅是一个小小的用例):
个人分类: 百科全书|2190 次阅读|0 个评论
机器学习之SVD理论附练习
iggcas010 2018-6-10 00:11
SVD 是奇异值分解 一、一般概念 酉矩阵 :设 A Î C n × n ,C 可以是复矩阵,实矩阵,如果 A*A= I (单位阵), 则称 A 为酉矩阵;当 A 是实矩阵时,就是我们常见的实正交矩阵。 Hermite 矩阵 :如果 A*=A, 那么 A 是 Hermite 矩阵,若 A 是实矩阵,称 A 为对称矩阵。 正规矩阵 :如果 A*A=AA* ,那么称 A 为正规矩阵。酉矩阵和 Hermite 矩阵均属于正规矩阵。 正定 :对于一 Hermite 矩阵 A ,如果对任意非零向量 x Î C n ,都满足 x*Ax0 ,称 A 为正定阵,如果是大于等于 0 ,称 A 为半正定阵。正定矩阵的特征值一定为正。 二、奇异值分解( Singular Value Decomposition , SVD ) 奇异值 :设 A Î C m × n , A*A 的特征值的非负平方根称 A 的奇异值,由此定义可知奇异值必然大于等于 0 。 奇异值分解定理 :设 ,则存在 m 阶酉矩阵 U 和 n 阶酉矩阵 V ,使得 U*AV= 其中 , s 为奇异值, 上面等式两边可以同时乘以 U 、 V* ,由于 U 和 V 都是酉矩阵,那么必然为正规矩阵, ,此为我们常见的 SVD 分解表达式。 关于 SVD 分解的证明,需用到 Schur 分解,可参看北京大学徐树方《矩阵计算的理论与方法》。 三、SVD的意义和用途 由 SVD 分解定理可知,一般矩阵都是可以进行 SVD 分解的,而常见的特征值分解则需用保证矩阵是方阵,前者分解的奇异值都是大于零的,而特征值不一定。 无论是奇异值还是特征值,都是表征矩阵重要特征的具体指标,这里的特征不妨认为是模式,即事物赖以存在的形式。该值越大表示信息的显著特征,值越小可能是噪声特征。(引申与扩展:过拟合) 如果取 A 的奇异值中较大的数值,比如取前 k 个( kr ),那么此时也能恢复 A ,但此时 A 的信息则有缺失。那么此时 U 和 V 的维度也减少了(注意维度默认是列数,也称为数据的特征,而行一般称为观测值),这就是降维的一般概念。 SVD 可用于机器学习中数据噪声的去除,保留数据的主要特征。由于 SVD 的结果多样,也不知道哪个是目标结果,所以无需训练算法,这是无监督学习的共性。 四、SVD 的实战练习可参考链接 : 1. 手写体( MATLAB ) https://blog.csdn.net/google19890102/article/details/27109235 http://www-users.math.umn.edu/~lerman/math5467/svd.pdf 2. 推荐算法提升( SVD 竟然也可以,神奇)( Python ) https://blog.csdn.net/sinat_17451213/article/details/51201682 http://www.sohu.com/a/127149396_464826 3. 图像压缩( MATLAB ) https://blog.csdn.net/bluecol/article/details/45971423
1519 次阅读|0 个评论
为什么机器学习/数据科学的数据探索中要进行数据可视化?
iggcas010 2018-5-31 22:27
不要说数据可视化的优点,以及为了展示给老板看。 本文参考维基百科: https://en.m.wikipedia.org/wiki/Anscombe%27s_quartet 下图是著名的安斯库母四重奏, 它们具有相同的统计值,但不同的x,y,然而结果用简单的线性回归建模却得到同样的结果,事实上,拟合的结果的准确性是值得商榷的,有的效果可以,有的却是错误的。 Property Value Accuracy Mean of x 9 exact Sample variance of x 样本方差 11 exact Mean of y 7.50 to 2 decimal places Sample variance of y 4.125 plus/minus 0.003 Correlation between x and y 0.816 to 3 decimal places Linear regression line y =3.00+0.500 x to 2 and 3 decimal places, respectively Coefficient of determination of the linear regression 线性回归的确定系数 0.67 to 2 decimal places 好好看看,第二个图和第四个图是不是直接错误,第三个图勉强算对,但不准确,有个离群值明显可以舍去。第一个图是正确的。 由此可见,在数据探索中,有必要进行简单的验证,查看数据是否可以用已有的模型,模型重要,但数据质量更重要。
2607 次阅读|0 个评论
机器学习:算法评价指标
热度 1 pinjianlu 2018-5-23 18:44
1. 正确肯定(True Positive,TP):预测为真,实际为真 2. 正确否定(True Negative,TN):预测为假,实际为假 3. 错误肯定(False Positive,FP):预测为真,实际为假 4. 错误否定(False Negative,FN):预测为假,实际为真 则: 正确率( 查准率,Precision )=TP/(TP+FP)。例:在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。 召回率( 查全率,Recall )=TP/(TP+FN)。例:在所有实际上有恶性肿瘤的病人中,成功预测出有恶性肿瘤的病人的百分比,越高越好。 F值: F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值)。
个人分类: 科研随笔|6842 次阅读|2 个评论
关于AI的对话(随园,2018/4/16)
热度 1 liuyu2205 2018-5-3 02:45
在一个朋友群与大家聊AI,我引用了图灵的文章( 图灵的文章“Intelligent machinery, a heretical theory”译文 )来和大家讨论“机器学习”这一基本概念,这正是我们发起“图灵论著专研与精译工作群”的一个初衷。 ****** 柳渝:看到大家又在讨论人工智能,我可否先问个问题: 人工智能的核心是“机器学习(Machine Learning)”,那么,大家认为什么是“机器学习”? 柳渝:@唐女 你认为什么是“机器学习”?你对“机器学习”的直观认识? 唐女: 除了它们的随机学习,背后不都是有程序和指令的吗? 人中 行者: “机器学习”是一个翻译问题,容易引起误导的错译,准确地说是智能机器自我处理信息的能力。 柳渝:@人中 行者  “机器学习”是如今大家认可的概念,方便沟通。 人中 行者:@柳渝 再多的大家,也不能忽视引起误导呀。 柳渝:@人中 行者 什么是“自我处理信息的能力”? 光子:@人中 行者 “学习”在计算机科学中是个专业术语,并不误导大家。 人中 行者:@柳渝 “学习”是什么?机器具备学习能力又是怎样的能力? 柳渝:@光子 你怎么看“机器学习”?@人中 行者 我就来回答你的问题,我想先听听随园高见。 光子:@柳渝 机器学习有别于人类的学习,机器的学习类似于人类的死记硬背,并不会举一反三地思考,更不会创新。 柳渝:@人中 行者 你可以展开说说你认为的“自我处理信息的能力”吗? 光子:“自我处理信息的能力”,这个也会跟“学习”一词一样地会引起歧义。谁让机器人没有自己的词汇呢,只好用人类的词汇了。 吳占忠:@柳渝 机器学习应当就是通过对智能机器的人工的智能程序输入,再以这些编好的程序解译计算机获取的数据来一定程度的代替人工作的一个解码学习处理加机器手工作的过程。 柳渝:@吳占忠 “机器学习应当就是通过对智能机器的人工的智能程序输入”,这句话中有“循环定义”,因为“智能机器”主要指“机器学习”。可否再重新表达一下? 光子:我翻译下吴老师的话,请高手们指正:外来信息→机器解码:转换成机器能识别的二进制数据→机器按人类既定程序(即便机器编程也是按人类制定的规则编程)处理外来信息→机器解码:把二进制数据转换成人类可以识别的词汇(广义了)→输出结果 吳占忠:@柳渝 那就删去智能机器一词,也即 “机器学习应当就是通过人工输入的指令和程序的而实现机器解码和工作的过程。” 柳渝:好,这是大家的表述: -光子:“机器学习”有别于人类的学习,机器的学习类似于人类的死记硬背,并不会举一反三地思考,更不会创新。 -唐女:“机器学习”指,随机学习,背后有程序和指令。 -人中学者: “机器学习”是一个翻译问题,容易引起误导的错译。准确地说是智能机器自我处理信息的能力。 -吳占忠:“机器学习”应当就是通过人工输入的指令和程序的而实现机器解码和工作的过程。 那么,来看看百度例举的几个流行定义: -机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。 -机器学习是对能通过经验自动改进的计算机算法的研究。 -机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。 大家怎么看这几个定义?明白吗?认可吗?满意吗? 光子:@柳渝 这定义比较含糊,不是太专业,不满意。一般应回答:做什么、怎样做、目的。 柳渝:@光子 “机器学习”这样一个基本概念,应该分层次理解,我们或许先从原理上说,然后再进入专业细节。 人中 行者:@光子 汉语翻译永远存在唯一对应性或者完全对应性的问题,而汉语“学习”,大致是指人类对自身不具备或者未知知识技能等问题的“学”和“习”。 柳老师本意指“具备学习能力”的机器,叫“智能机器”。 机器学习,就是指“智能机器”自身基本能力。但是“学习”一词,汉语“学习”特指获得知识技能的能力。学习最大特征是“自主性”。机器“自主学习”,不恐怖吗? 光子:@人中 行者 专业术语就是专业术语,有专门定义,我不知道你为什么一定要另外一种想法? 柳渝:@人中 行者 对,所以需要解读人们现在一天到晚挂在嘴边的“机器学习”到底是什么。 光子:比如在会计中经常用到的“流水”,难道你也要理解为自然界中的流水吗?我们听不习惯专业术语这个很正常,慢慢就习惯了。 柳渝:现在,我们追本溯源到图灵,看看这个“人工智能”之父是怎么说的。 光子:@人中 行者 你们书法界也一定有很多很有意思的行话,说来听听,开眼界。 吳占忠:我认为用什么词汇不重要,重要的是对特定语境下的词汇或概念进行标准界定,这样就明了了。 柳渝:图灵于1951年在BBC的The'51 Society电台节目中为大众做的报告,解释他认为的“机器学习”,或“智能机器”,此报告整理为他的一篇:“智能机器,一种异端理论”(Intelligentmachinery, a heretical theory) 开门见山,图灵说:“你不可能制造出一台可以为你思考的机器”,这似乎是一个已经被普遍接受的不再被质疑的观点。本文的目的就是要质疑这个似乎已经被广为接受的观点。 光子:“你不可能制造出一台可以为你思考的机器”:就是嘛,为啥艺术家总是认为科学家能造出一台可以思考的机器呢?科学家哪有艺术家想的那么威啊! 柳渝:@光子 图灵是反驳“你不可能制造出一台可以为你思考的机器”: “大多数为商业用途开发的机器是被用于完成一些特定领域的特定工作,并且以可观的速度获得确定的结果。通常情况下,机器被用来完成一系列同样且重复的工作。这个基于我们实际所能得到的机器的这个事实,成为了很多持如上标语所示观点的人们的一个强大论据。” 对此,图灵说:“然而,对一个数理学家来说,这个论据是明显站不住脚的。因为有证据表明,存在这样的机器,理论上是可以用非常接近人类思考的方式来完成一些事情。” 比如,数理逻辑中的机器证明系统。 光子:@柳渝 你相信图灵这个理论?一部分思考像人类就能算是跟人类一样地有智慧吗? 柳渝:但是,图灵说:商业的和数理逻辑中的机器,都不是他说的“智能机器”。 吳占忠:@柳渝 人可以感而遂通,机器学习不能,它只能在人工程序的作用下通过有限的算法进行智能化活动,这倒是一定程度的解放了人的劳动。从这个角度看,智能机器人的问世是有其积极的意义与进步的价值的。 雨:@柳渝 现在正在研发并不断发展的仿人脑神经元芯片呢?假定以后成功模拟人类大脑,智能学习这些会不会变成现实? 柳渝:图灵说:“我想争论的观点是,那种能够高真模仿人类行为的机器是可以被造出来的。它们有时会犯错误,有时会得出十分新颖有趣的结果,总的来说,它们的结果输出可以与人类的输出一样,被予以等量齐观的关注。” “如果一台机器能以某种方式“根据经验学习”,那将会给人以深刻的印象。因为如果这是真的,那么看起来我们没有任何理由不从一个相对而言较为简单的机器来开始这一切,通过让其遵循一系列所谓的“经验”,逐步将其转化为一套精巧得多的机器,而且还能够被用来处理更为广泛的各类偶发事件。” 这就是图灵对“机器学习”下的原理性定义:learn by experience(从经验中学习)。 光子:@柳渝 明白,但还需要进一步补充“根据经验”是什么。 柳渝:@光子 百度实际上是引用的AI专家的: 1,Machine learning is a science of the artificial. The field's main objects of study are artifacts, specifically algorithms that improve their performance with experience.' -Langley(1996) 2,Machine Learning is the study of computer algorithms that improve automatically through experience. - Tom Mitchell(1997) 3,Machine learning is programming computers to optimize a performance criterion using example data or past experience. -Alpaydin(2004) 因为是英语,我就没有先说出来。 我想说的是,AI专家的这几条定义,图灵实际上用一句话就表达了:learn by experience(从经验中学习),但是图灵说出了其内涵:从一个相对而言较为简单的机器来开始这一切,通过让其经历一系列所谓的“经验”,逐步将其转化为一套精巧得多的机器,而且还能够被用来处理更为广泛的各类偶发事件。 光子:图灵这些话的意思是,机器的学习还是靠“穷举法” 吳占忠:@柳渝 “经验”一词好!一语破的,也就是说机器学习永远都在人的经验输入之内被动的工作,不用担心它们会统治人类。 柳渝:@吳占忠 正是,核心就是“经验“! 光子:不知道图灵是怎么对比机器与人的学习的不同的,他怎么解释人的举一反三、归纳总结的能力? 柳渝:@光子 听图灵回答你: 图灵说:“但这里我们必须得谨慎从事,因为安排相应的经验自动地使机器的结构形成设定的模式是十分容易做到的。显而易见,这就是一种彻头彻尾的作弊,因为这几乎等同于安排一个人躲在机器里面。这里再重复一下,这里所采用的关于认定何种教育内容是合理的标准是不能够随便套用所谓的数学体系的。” @吳占忠 这段话也间接回答了你,“经验“对于智能机器是主观主义的。 光子:@柳渝 继续,我的问题还没有回答到。 柳渝:@光子 回答了,若用“穷举法”就相当于“安排相应的经验,自动地使机器的结构形成设定的模式,这是十分容易做到的”。 图灵继续强调:“这里再重复一下,这里所采用的关于认定何种教育内容是合理的标准是不能够随便套用所谓的数学体系的。” 图灵说:这个过程有可能以通过对其所需经历的经验进行适当的选择而被加速,这可以被称为“教育”。 光子:@柳渝 上面这几段话,我没有看到图灵关于经验的定义。我也可以理解为机器习得了自己的经验,然后用自己习得的经验进一步学习。阿法狗下围棋就是这样的啊,它的下法都已经不是人类已有的下法了。 图灵说:“这个过程有可能以通过对其所需经历的经验进行适当的选择而被加速,这可以被称为“教育”。”:这话就对了,刚好解释了阿法狗下围棋这事。 柳渝:@光子 确实,图灵无法给出“经验”的确切定义,因为这是与实际问题相联系的,但是图灵给出了识别用于“教育”机器“经验”的标准,就是他前面说的: “从一个相对而言较为简单的机器来开始这一切,通过让其经历一系列所谓的“经验”,逐步将其转化为一套精巧得多的机器,而且还能够被用来处理更为广泛的各类偶发事件。” 所谓的“经验”要使得机器能够被用来处理更为广泛的各类偶发事件。 光子:“它们的结果输出可以与人类的输出一样”:应该还是局限于计算方面,这个图灵有说吗? 我们是解决了“机器学习”的定义问题,但还没有解决能不能”制造出一台可以为你思考的机器“?思考部分问题还是所有的问题? 柳渝:@光子 图灵集中为“机器智能”的功能辩护,因为那个时代人们认为机器只能作一些重复机械的工作,图灵认为若允许机器像人一样“犯错误”,从‘经验“中学习,机器可以作更多具有”智能“性的工作。 光子:机器如果只能解决部分思考的问题(局限于计算),那么跟扳手还是类似的功能。 柳渝:图灵的思想非常深刻,他自己也处在不断思考研究的过程中。 光子:图灵的看法我持保留态度,我认为机器的“智能”性工作需要跟人类的智能性工作加以区分。 人类的智能性工作根本上指的是什么?这个应已有回答的。 柳渝:他认为,在可比的方面(即人可以建模,确切表达出来的);机器可以胜过人,但是在不可表达方面,图灵清清楚楚机器是无能为力的! 光子:我们能不能认为算盘也能做一些“智能性”的工作呢?图灵有没有提到过算盘? 柳渝:@光子 没有,他提到了“围棋”。 光子:@柳渝 太对了!区分在可否建模!图灵伟大。但他居然没提到算盘,太遗憾了!围棋与算盘不同,前者是娱乐物品,后者可是智能工具。 实际上,所谓的“智能机器人”也许就是算盘的加强版吧。 柳渝:图灵最了不起的工作就是,他首先在数学上严格证明了机器的根本局限性,即“不可判定问题”,指有些问题无论机器有多么大的计算速度和内存都没有算法解决,换句话说,一定要让算法求解这样的问题,机器就会进入“死循环”。 然后,图灵为机器“解套”,提出允许让机器犯错,让机器从经验中学习,即“机器智能”。而这样的机器智能是基于“人的学习”的基础上的。 最后图灵小结这段话:“实际上,在我看来,这个教育过程将会成为在合理的较短时间内生产出一台具备合理智能的机器的至关重要的部分,与人类自身所进行的类比也刚好说明这一点。” 光子:还有万花筒,也能组合出千变万化的美丽图案,但这也不能说万花筒就能进行艺术创作。万花筒的组合也只是一种”算法“ 柳渝:@光子 对,还有无穷无尽的“拟人拟物算法”,比如蚂蚁算法,蜜蜂算法,遗传算法等等。 人中 行者:@柳渝 您自己的观点呢? 吳占忠:人永远是智能机器的造物主,上帝。 柳渝:@人中 行者 我的观点是,机器与人本质不同,作为整体,机器永远无法替代人。 光子:@柳渝 是否可以理解”可表达与不可表达“就是你经常说的”N与NP“? 柳渝:@光子 对,正是!“P vs NP”。 从今天我解释的图灵这篇文章看,想必大家多少可以看出所谓的“机器学习”的来龙去脉。 人中 行者:@柳渝  作为个体人类,图灵自身思想认知,知识结构和对未来判断,是否会具有一定的局限性呢?迄今为止,人类大脑思想认知的边界是相对清晰的,有实际边际局限的。以人类为主体参照物,以“智能机器”为人造物,是否存在认知先验或者叫“先入为主”的偏见? 柳渝:为此,我们发起了一个“图灵论著专研与精译工作群”。 人中 行者:@柳渝 只怕对人类自身的高估,而忽视甚至无视“机器学习”的边际,最终还得人类承担后果。 柳渝:@人中 行者 图灵是“人”,所以对“作为个体人类,图灵自身思想认知,知识结构和对未来判断,是否会具有一定的局限性呢?”这个问题,其回答肯定是“yes”。问题是这样简单的“yes”,是没有建设性意义的。首先要能回答:图灵的思想和工作是什么?然后才能回答图灵“局限”在哪里? 光子:@人中 行者 我看渝老师对图灵的介绍,我感觉图灵相当于计算机界的牛顿。图灵的理论是一种基于科学原理的论述,是不会过时的。 人中 行者:@柳渝 更多研究图灵的局限和漏洞,应该也是一种科学精神。而且意义价值恐怕更大。 光子:科学原理本身是客观的,为什么会过时呢? 柳渝:@光子 因为科学的“客观”也是来自人的“认识”。 人中 行者:@光子 在科学上没有永恒的权威。 光子:这个问题就像问牛顿会过时吗一样? 人中 行者:@光子 牛顿的进化论已经过时,科学精神正是大胆假设小心求证呀! 光子:@人中 行者 牛顿的力学定律在传统的力学领域还是真理,只有在量子力学范围内才有局限。 人中 行者:迄今为止,人类对宇宙和自身的认知,非常有限。 常识告诉人们,以有限的认知,来衡量无限未来,小心应了那句名言:人类一思考,上帝就发笑。 任何事物,请不要违背基本常识。 光子:如果认为图灵可以思考无限的未来,那是十分可笑的。但因此认为图灵的理论无法说明一些道理,这又是因噎废食的。 还有一条:所谓科学,不是用来作为金科玉律,而是被后人用来推翻的。金科玉律是个伪问题。 人中 行者:@光子 因噎废食,还是人类吗? 光子:再说了,科学研究是为当下的科学实践提供指导的,这是图灵们的理论存在的最大意义 人中 行者:未必不是挖的坑呢,谁能保证? 光子:历史上很多挖的坑啊,正常啊,人就是那么多的见识爬出来,又往前走,又被挖坑的坑了,再爬出来呗,太多了。比如我们滥用抗生素,太多了,这种坑数不胜数。我们也可以按你说的,研究图灵是为了找出他的缺点和局限啊。
个人分类: 图灵论著专研与精译工作群|7444 次阅读|1 个评论
互联网时代的数据情缘(1)
热度 4 uestc2014xiaoyu 2018-4-3 07:56
前记: 这篇或者即将的这系列博文,主要是缘于我们学院一帮可爱的孩子,在联络一些老师做些关于大数据、人工智能等的科普文章,所以才写,既然写了,也想分享给大家。 其实受邀给大家分享一点儿对于这个时代的标签之一——“大数据“的见解,我是诚惶诚恐的。因为众多的大咖都在布道、躬身实践,唯恐自己的浅薄认知,让人贻笑大方。不过想到知识的包容性,也就释然一些。今天我就以自己这几年对数据的应用认知、基础理论发展脉络的把握,和大家一起聊聊我认为的数据,数据分析与挖掘的核心问题,以及什么是数据价值再造,如有偏颇,欢迎大家批评指正。 2013年9月,我与国外导师Kang L. Wang教授辞行、谈及未来规划的时候,他像孩子般率真微笑道“Yu, do you know the Big Data?”哈哈,说实话当时我有点儿懵圈了~大数据?难道就是直译大数据?还是一个更加专业的术语?“Sorry, I’ve no idea. Professor, is there any story?”随即,王老师给我讲了一个美国FBI的例子,又讲了一个发生在UCLA的故事,这些都是他眼中的大数据。他还说,现在国内big data已经很火了,建议我回去可以好好思考。例子的具体细节不是很清楚了,但是大体明白就是美国也有所谓的大数据,但是他们并没有上升到一个十分夸张的万能概念角度,而是有很多实实在在的应用,更多是为了保护国家的信息安全,等等,诸如此类。这是我生平第一次与大数据有交集。 随后回国,准备博士毕业,申请留校等工作。至次年2014年3月份,留校已经敲定,可以正式留在信软学院嵌入式实时计算团队,去见团队负责人雷航教授的时候,他语重心长对我说“晓瑜,你的博士研究方向量子计算和量子电路综合,很显然工作后将不能继续了,因为团队没有这方面的任何储备。你需要有大局观,站在团队的发展规划上,重新立意自己的研究方向……现在团队有这样几个方向:嵌入式操作系统、大数据、图形图像等,你需要考虑一下选择哪个?”其实这几个都不是我擅长的,第二次听到“大数据”已经不觉得陌生了,至少已经出现过一次了,我当时鬼使神差般回答道“雷老师,我就选大数据吧~”哈哈哈,人生很多时候就是各种戏剧,各种无常,似乎这才符合人生! 就这样我开始真正结缘、走近、认知、熟悉大数据,也开始真正的作为一个参与者而不是旁观者,来审视、建设、推动、批判这个新兴的交叉学科研究方向。一直以来,我都觉得自己有一个很强大的性格特质,那就是“随遇而安”而又适应性极强,最重要是总能活下来,姑且这是自我阿Q的一种精神激励法吧~就像从本科的EE到研究生的CS,再到博士期的Quantum Computing,自己还是自得其乐的。当然,这期间也会遭到质疑,这样会不会不够专注?会不会在哪个阶段就毕不了业呢?其实,我还真的没有想那么多,只是觉得喜欢,或许就是无知才无畏,无畏才有更多的创造力! 从2014年开始,可以称得上是我的大数据元年,我开始穿梭在国内顶级的几个大数据国际会议现场活动中,开始大量快速的阅读和大数据相关的新闻、图书、paper,其实只要你肯花时间,找到关键点,很快就能切入。我用了半年的时间,对于国内大家对大数据的认知程度、大数据的发展现状、大数据在产业界、学术界、政界等的天花板也了解的七七八八。随后,就开始深入建设我们自己的学术科研队伍,我们几位老师和学生给我们的大数据小组取名SunData Group(尚数据工场)。队伍从一开始只有2位老师、2位本科生;到1年后,我们有3位老师、5位研究生、10+位本科生;再到现在的5位老师、5位博士生、30+研究生、100+优秀本科生。这个成长速度和我们自身的努力分不开,但是还远远没有驻足,因为我们只是完成了长胖的过程,还没有完成长高、健美的过程。和大家分享这些经历,主要是想告诉大家,大数据,离你我并不远,也不神秘,只要你愿意,你也可以像我们一样,快速融入,并能深入和升华。 好,我们言归正传。今天主要和大家探讨如下几个问题: 1、什么是数据,什么是大数据 数据某种程度上是对我们周围的物理信息世界的一种符号抽象,所以数据包罗了各种信息,有用的、无用的、有序的、无序的、显式的、隐式的……同时与数据千丝万缕扯不清的两个概念就是:信息与知识,在我个人看来,数据好比原石,信息好比初步磨出的翡翠,而知识则是经过精雕细琢之后的一件翡翠艺术品。 自2003年世界进入大数据元年开始,各种机构、各路学者陆续给出了对大数据的解读,最后大家初步形成共识的是,大数据的4V+O特征,分别对应了:volume(体积,数据尺度大)、velocity(高速的数据in and out)、variety(数据类型的多样化)、veracity(数据的准确性)、online(线上数据实时性等)。其实有些场合我们也会增加一个V,那就是value(价值),因为无论是数据科学处理的终极目标,还是大数据处理的最终结果,如果没有价值体现,这项工作都将毫无意义。 说到大数据的首要条件就是数据量大,那么究竟多少算得上是大数据呢?我们知道不同行业领域的数据,其尺度存在较大的差别,比如社交媒体产生的数据量就远远超过我们高校学生数据。因为社交媒体含有大量的音频、视频、图片等大容量文件,而高校学生服务数据,多以电子表格、交易记录等为主,数据量基本以KB起,而前者动辄几百个GB,甚至达到TB。所以这几年学术界和产业界呼声较高的一个界定,基本上在PB级或PB级以上才算得上大数据尺度。数据的容量尺度为:KB à MB à GB à TB à PB à EB à ZB…… 同样大数据由于其多样性,也决定了大数据处理的时候,面临的数据类型不再是单纯的结构化数据,还有更多的半结构化、非结构化数据,如我们读的报纸、看的视频、听的广播和歌曲、拍的照片等,这些都称为非结构化数据。所以,大数据处理除了面临数据类型的挑战,还有就是关于海量数据存储的问题。其中,云存储与分布式文件存储等技术,有效的解决了这一问题。大数据时代的来临不是偶然,而是其他方方面面的技术发展带来的必然结果。试想二十年前信息高速公路刚刚提出来的时候,没有想到数据爆炸如此迅猛,自然,数据尺度很难达到所谓的“大”;十年前如果没有云计算技术的落地,今日如此海量数据,该如何存放,又该如何快速计算;近些年如果没有深度学习、机器学习、神经网络等核心技术算法的快速发展,如何支撑大数据的应用落地,等等。 2、大数据的核心问题 说到这里,不得不把大数据的核心问题单独拿出来与大家探讨。与传统的概率统计、机器学习相比,大数据处理有这样几点是需要我们初学者明确的: (1)全体数据,而不是样本数据 大数据研究的是全体数据的问题,而不是抽样样本的相关问题。这一点就决定了数据越多越好、数据越全越好,因为只有这样才能更加接近大数据的全体数据,才能更加接近事物的真相和本质。 (2)关联关系,而不是因果关系 大数据研究的是数据间的关联关系,而不是传统的因果关系。因果关系我们很明确,就是有这个结果,一定有导致其产生的原因,这个因果关系在辩证唯物主义上是普适的,是大家认知所接受的。然而,关联关系是完全无关因果的一种逻辑,正如大家耳熟能详的“啤酒与尿布的故事”、“蝴蝶效应”等。我们通过发现凡是购买了尿布的消费者,一般也有很大的概率购买啤酒这一有趣事实,来指导超市的货架展销策略,将尿布和啤酒放在靠近的区域,进而提升了销售额。这里你就很难说,因为他买了尿布,所以他又买了啤酒;我们只能说买了尿布,进而买啤酒的概率很大,二者有一定的关联关系。这就是突破我们传统认知的关联关系,也是我们要开始进行大数据处理必须学习的。 (3)预测而不是断定 当然了大数据是有很强大的功能,帮助我们挖掘很多隐藏在数据背后的真相,但是它也不是万能的!就好像我之前在博客里提到的一本网络小说《当我谈论算命时,我想谈的是大数据》,暂且不论这本书是否严谨,但是大数据的核心问题之一,与之有异曲同工之妙。大数据处理、分析、挖掘,最后的结果都是对下一步,或者之后即将发生事情的一种预测,既然是预测就无法做到百分百准确,总是存在概率问题。这一点就有点儿不同于传统的统计分析,并不能够准确给出事物发生的条件概率。甚至通过某些参数的调优工作,只能无限逼近,却永远无法到达。既无奈,又让人执着! (4)决策支持是价值体现 大数据处理的终极目标是实现对决策者的客观第三方辅助支持,那么这就回到了所谓的人工智能中真正的智能决策问题上,这个open question,至今也是争论不休。何谓真正的智能,何为人工智能?对于这两个问题,我们今天暂且不去过多讨论。 首先看下大数据预测与决策支持的问题,我们知道大数据一定是面向于行业和领域应用的。因为很多时候,抛开数据背后的业务逻辑,我们是无法解读出更多数据隐含的信息的。那对于数据分析师而言,既要理解业务逻辑,同时又要能够将数据分析、挖掘的结果,作为一个有利的辅助支撑材料,提供给决策者,以便综合做出最优的决策。大数据处理的价值体现,就在于提供的这个决策到底能起多大的分量。 由于时间和篇幅的有限,下一篇,我们将一起笑谈数据分析与数据挖掘处理的几类核心问题,同时聊聊大数据与物联网、云计算等的关系。
个人分类: 量子机器学习|22797 次阅读|12 个评论
我捡到大漏了——发现混合模型收敛严格证明方法
热度 1 lcguang 2018-4-2 13:11
我一直说EM算法收敛证明有问题,我把它改进为CM算法。我以前提供的CM算法收敛证明要比EM算法的收敛证明好得多,但是还不严格。 现在发现,采用分析Shannon的信息率失真函数用到的变分和迭代方法,可以严格严格证明CM迭代方法收敛。 EM算法的问题和CM算法收敛证明详见: http://survivor99.com/lcg/CM/EMwayout.pdf 混合模型问题, 对于经典通信来说也是重要的, 因为它是典型的数据压缩问题。 感谢周炯槃先生, 我是在他的《信息论基础》中找到解决办法的: Shannon的那篇文章我也找到了, 没那么详细。不知道周先生书中这些方法是周先生自己研究出来的, 还是介绍别人的。现在国外书籍介绍信息论失真函数都不用参数方法, 也不讲迭代方法, 所以找来找去,只有周先生这本书讲得最详细。可惜周先生不在了。我还真去过他家, 老先生平易近人,要是他在多好!
个人分类: 信息的数学和哲学|4148 次阅读|2 个评论
一个新的数学框架用于机器学习——挑战流行的贝叶斯主义推理...
lcguang 2018-3-14 00:58
我想写一篇《一个新的数学框架用于机器学习——挑战流行的贝叶斯主义推理》, 在人工智能会议上交流。这里是一个提要, 希望赢得知音, 得到知音支持,从而有机会大会发言。 最近两年多, 我一直在努力用语义信息方法改造挑战流行的Bayesian Inference方法。语义信息方法包括: 1)语义信息准则——用真值函数产生似然函数,用log(normalized llikelihood)定义语义信息, 以及Shannon信道和语义信道之间的相互匹配方法; 2)第三种贝叶斯定理——把真值函数或隶属函数带进贝叶斯公式,建立实例,标签和“实例隶属于类别”三者之间的条件概率关系); 3)模糊数学方法, 包括汪培庄教授的因素空间方法(用因素空间表示观察条件,用于不可见实例学习和分类——半监督学习)。 为了有说服力,我陆续研究了半监督学习问题(包括最大似然检核估计,不可见实例的分类),无监督学习问题(典型的是混合模型),和有监督学习问题(如多标签分类)。我以为取得了很好的结果,特别是得到了快速收敛的信道匹配迭代算法。这些都是外围战斗,结果见已经完成或发表的论文: http://survivor99.com/lcg/CM/Recent.html 下面我要做的,就是对新的数学方法做一个总结,同时发起对流行的贝叶斯主义推理(Bayesian Inference) 的总攻。参看: https://en.wikipedia.org/wiki/Bayesian_inference Bayesian Inference的问题是: 1)打着贝叶斯旗号, 实际上并不和传统的贝叶斯方法兼容;比如用Shannon信道P(yj|X),j=1,2,...,可以做传统的贝叶斯预测求P(X|yj),P(X)变化时也可以。但是用Bayesian Inference, 不仅预测极为困难,而且结果也不同。 2)号称使用逻辑概率和主观概率, 实际上从来没有使用逻辑概率——因为逻辑概率不是归一化的(考虑天气预报“明天无雨”,“明天有雨”, “明天有小雨”, “明天有小到中雨”,...),也从来没有使用真值函数——它反映假设或标签的语义。Bayesian Inference 使用的P( θ )是归一化的, 根本不能用作逻辑概率。 3)没有统一的优化准则,和似然度方法不兼容,最大后验或平均后验也和信息论方法不兼容。因为按照Popper理论,先验逻辑概率小,潜在信息才多。 4)Bayesian Inference 中的先验知识P( θ ),即模型参数的概率分布,可以说是很怪异的。人类很少有这样的先验知识。 人类的先验知识用两种:1)事实的先验概率分布P(X), 比如不同年龄的概率分布;2)概念的外延——比如“老人”所指年龄的大概范围。贝叶斯推理举例总用掷骰子(概率的概率),能不能用用别的?比如关于天气预报, 关于GPS, 关于疾病诊断? 5)Baysian Inference的贝叶斯后验P( θ )*normalized-likelihood把标签学习和标签选择捆绑在一起,不利于模型的迁移应用。人类的标签学习(收信人要做的, 得到概念外延)和标签选择(发信人描述和预测)是分开的。 6)用正则化修正误差准则, 其理由是不清楚的。 相比之下,语义信息准则, 包括Popper的小逻辑概率准则要清楚得多! 很多人抱怨人工智能和机器学习方法碎片化严重, 还有很多人抱怨中国人缺少创新思维和批判精神。我在努力改变, 希望有人理解并支持。
个人分类: 信息的数学和哲学|3145 次阅读|0 个评论
从语义信息论看正则化准则
lcguang 2018-3-2 11:05
我在一个群里说, 人工智能碎片化理论多,不构成一个整体, 主要是因为缺少像物理学中“能量”那样”一个贯穿很多公式的概念。我以为人工智能中要有这样的概念, 应该是信息。 信息和似然度(现在知道log似然度就是负的交叉熵)应该可以充当这个概念, 用做优化准则。 可是现在不同准则太多。影响信息准则被广泛接受的最大障碍是贝叶斯主义推理(用最大后验概率准则), 还有误差准则, 以及风头正健的正则化准则。 正则化准则就是在误差准则后面加上正则化项, 我的理解是:它反映模型标准差越小越好,就相当于 GPS 的精确度。这意思是你捕鱼的鱼罩子盖住鱼了,但是覆盖面积越小越好。盖住整个池塘,就等于没盖住。用 Popper 理论解释就是逻辑概率越小越好,因为检验更严厉, 如果经得起检验, 信息就更多。 永真句不提供信息。 我以为正则化准则和信息准则是兼容的。 看到这篇文章: 从贝叶斯角度深入理解正则化 http://blog.csdn.net/zhuxiaodong030/article/details/54408786 初看觉得很有新意。但是仔细思考, 不对啊, 要用样本优化的是似然函数中的参数啊, 怎么能优化先验参数呢?先验参数和样本无关啊! 我的一篇文章讲到这个问题, 摘录如下: 把真值函数或隶属函数带进贝叶斯公式: 图4 语义信息量图解. 偏差越大,信息越少;逻辑概率越小,信息量越大;错误预测提供负的信息. 这个公式就能反映 Popper 的思想 : ( 先验 ) 逻辑概率越小,并能经得起检验 ( 后验逻辑概率越大 ) ,信息量就越大 ; 永真句在逻辑上不能被证伪,因而不含有信息 . 假设yj=X 大约是xj的真值函数是 T ( θ j | X ) =exp (没有系数的高斯分布, 最大值是1)。 把它代入式 (3.8), 就得到 其中熵都是交叉熵。容易证明,在语义贝叶斯预测和样本分布一致时, 即 P(xi|θj)=P(xi|yj) ( 对于所有 i, j) 时,上述语义互信息达到其上限,等于 Shannon 互信息 . 从式 (3.9) 和 (3.11) 可见, 语义互信息准则和流行的误差加正则化准则是类似的 . H(θ|X) 就是误差项, H(θ) 就是正则化项 . I(X; θ) 就是负的损失函数 . 这个正则化项和流行的正则化项可能有些区别,但是这个在理论上更严格, 因为它是构成语义信息或似然度的部件之一。主要差别是, 影响先验熵 H(θ) 的是:1)模型覆盖范围大小,比如高斯分布的标准差小就好, 预测精度就高; 2)覆盖的地方P(X)大小, 小就表示出乎预料, 逻辑概率就小, 信息就多。所以从信息论角度看, 并不是任何一个参数小就好, 要有所选择。 更多讨论见: http://survivor99.com/lcg/books/GIT/
个人分类: 信息的数学和哲学|3745 次阅读|0 个评论
交叉熵是谁最早提出和应用的?
lcguang 2018-3-1 14:31
交叉熵 (cross-entropy, 或 CE) 最简单形式就是 H=-∑P(xi)logP(xi|θ). log 后面是似然度或预测的概率。下面是 wikipedia 介绍: https://en.wikipedia.org/wiki/Cross_entropy 我在一个群里说,人工智能需要一个像物理学中“能量”那样的贯穿很多公式的概念,这个概念应该是信息。我用语义信息方法优化假设检验和统计学习,语义互信息是用 “I= 平均 log ( normalized 似然度 )” 定义的,或者说是用交叉熵定义的。其中似然度是通过隶属函数产生的。 有专家说: “对是对的, 不过不够; AI前言论文中一直都在用, 要往前走,不要停留在N年前的思路上, 那样就落伍了, 这样很危险,... 前沿论文中似然度和交叉熵已经用的很多了,别自恋...” 。 前面几句说得很好,但是后面几句看了不是滋味。好像我只不过学了西方学者,或者是发现“新大陆”。我要说, 我不但不是完全学了别人的,而且我提出和应用交叉熵实际上在西方之前。 西方交叉熵研究历史介绍(可以下载全文): https://research.utwente.nl/en/publications/a-tutorial-on-the-cross-entropy-method 其中有一段: The CE methodwasmotivatedby anadaptivealgorithm for estimating probabilities of rareeventsincomplexstochasticnetworks(Rubinstein, 1997), whichinvolvesvarianceminimization. Itwassoon realized (Rubinstein, 1999, 2001) that a simplecross-entropymodification of Rubinstein (1997) could be used not only for estimating probabilities of rareeventsbutfor solvingdifficultCOPs as well. This is done by translating the “deterministic” optimization problem into a related “stochastic” optimization problem and then using rareeventsimulation techniques similar to Rubinstein (1997).Severalrecent applications demonstrate thepowerof the CE method (Rubinstein, 1999) as a generic and practical tool for solving NP-hard problems. 可见,西方交叉熵最早是 Rubinstein 于 1997 年提出的。 Rubinstein 简介 : https://en.wikipedia.org/wiki/Reuven_Rubinstein 但是我最早提出用交叉熵(我当时的用词是 “ 广义熵 ” , 基本公式就是交叉熵公式)改进香农互信息的文章是 1990 年发表的: Lu C., “Shannon equations reform and applications”, BUSEFAL, 44, 1990 (BUSEFAL 是一个不太正规的模糊数学杂志, 法国人 Didier Dubois and Henri Prade 主编的 ) 我的国内文章最早是 1991 年发表的: 鲁晨光 . Shannon 公式改造 , 通信学报 , 12 , 2(1991),95-96. 我关于交叉互信息(即广义互信息或语义互信息)详细讨论的文章是在 1993-1997 发表的。详见: http://survivor99.com/lcg/books/GIT/ 我将近 15 年没有继续研究交流,所以知道我的研究的人很少。虽然我把交叉熵用于统计学习主要是最近,但是 1993 年我就提出 R(G) 函数 —— 是香农信息率失真函数 R(D) 的更有意义形式 ——R(D) 给定对数标准似然度( G )的最小香农互信息。 这一函数和统计学习密切相关, 看来用它可以更好解决最大似然估计(包括不可见实例分类)和混合模型问题: http://survivor99.com/lcg/CM/Recent.html 两相比较, Rubinstein 结合样本检验比我早, 应用也有所不同。我的交叉熵有两种, 一种是含有似然函数的, 和 Rubinstein 的相同; 另一种是含有一组真值函数或隶属函数的 —— 到现在西方也没有;两种可以通过新的贝叶斯公式相互转换。另外一个不同是我的方法和香农理论关系更紧密(香农互信息是语义互信息的上限)。 争发明权也没有太大意义,都是站在前人肩膀上。但是,一说新方法, 马上就有人否定,认为西方早有了, 这让人感觉不是滋味。 我还发现鸟类华丽羽毛模拟他们喜爱的食物和环境,也有人说西方早发现了。 但是经过考察,可见也是我的发现在先。参看: http://blog.sciencenet.cn/blog-2056-851470.html 我还发现了对称的色觉机制模型,也有人说西方早就有了。 我一查, 也是我在先,西方的还没有我的简洁巧妙。 参看这里: http://blog.sciencenet.cn/blog-2056-677498.html 大多数人见惯不怪, 我相反。所以我的发现比别人多。当然,我也有很多次发现别人早发现的东西, 或者误解前人。所以我也欢迎砸砖。 我最近还发现了第三种贝叶斯定理, 通过它可以用样本求解真值函数或隶属函数(不久推出)。是不是 “ 新大陆 ” 有待读者明鉴。 还有人笑言:苹果砸了很多人, 可是牛顿只有一个。 但是,我要说,没有思考过伽利略的比萨斜塔实验的人被苹果砸了多少次也没用。我至少是最早发现交叉熵用处的两个人中的一个吧?要是交叉熵对于机器学习像能量对于物理学一样重要,朝这个方向走的人(也许是一批人)就会建立机器学习的 “ 牛顿力学 ” 。 总会有人有时候运气好一点 , 捡了大漏吧? ~_~
个人分类: 信息的数学和哲学|10030 次阅读|1 个评论
[转载]揭秘Google量子人工智能实验室
quantumchina 2017-12-31 16:37
早在2013年,Google、NASA就开始共建量子人工智能实验室。 https://baike.baidu.com/item/%E9%87%8F%E5%AD%90%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%AE%9E%E9%AA%8C%E5%AE%A4/4487696?fr=aladdin 从Google到 IBM,从英特尔到微软……诸多重量级公司的投入,让量子计算机被视作是下一代的关键科技。Google的量子人工智能实验室就是大企业重磅布局的代表之一。今天,我们就通过量子计算机界的大神、加州大学圣塔芭芭拉分校教授 John Martinis一睹这个神秘实验室的风采。 加州大学圣塔芭芭拉分校教授 John Martinis 在量子计算机的投入上,Google 堪称积极,2009 年底研究团队就在 NIPS 大会上展示了利用 D-Wave 处理器来训练图像分类器,让计算机探测器通过看2万张照片学习辨认车辆。2013年, Google 与NASA及大学空间研究协会合作,设立 Google quantum A.I. Lab 。隔年,又宣布加州大学圣塔芭芭拉分校教授 John Martinis 及其研究小组加入实验室,负责领导量子计算机的硬件及芯片设计。 Google quantum A.I. Lab隐身在圣塔芭芭拉的平凡办公室内 实验室三大研究主题 Google 之所以对量子计算机深感兴趣,主要有两个层次的需求: 一是 Google 在全球拥有不少数据中心,希望通过高效能的运算处理器或计算方法来提供用户更快速的网络服务; 其次,希望借由布局各种前瞻、突破性的技术,以维持其在商业或技术上的领先优势。 “我们的实验室有三个主要的研究领域,第一个是研 究通用型量子计算机,第二个是连续性模拟器,最后一个则是量子退火,有点类似 D-Wave 做的事。” John Martinis 透露。 目前,量子人工智能实验室的团队大约 20 人。其中,理论研究及硬件设计小组大约各占一半,从研究到电子设计、软件开发、以及打造出直径约一厘米左右的芯片,都是由这群人来完成。 推开实验室的大门,映入眼帘的是测试区域、无尘室、特殊打造的冷却系统,以及上头插着许多条线路、正在运行的 22 quibits 量子计算机。 John Martinis 介绍说:我们现在有四台冰箱(指冷却系统),很快就会增加到七台,这是用来把我们设计的装置冷却到非常低温的状态。此冷却系统是业者针对我们需要的规格打造成,看起来相当复杂,不过,基本原理跟家用冰箱没有什么不同,只是利用氦气(helium)来冷却它。 在量子计算机芯片的制作可分为两个部分,一部分是在实验室做出量子比特芯片,另一部分则是利用现有的商业晶圆代工厂来做。整体的制程使用微影成像(photolithography)制程,并以超导电路(superconducting circuits)取代了制作某些晶体,最后再利用特殊材料,也就是 10 微米左右的铟(indium),以及打线接合(wire bond)制程把将芯片的上下部分整合为一体。 John Martinis 指出, 虽然使用大部份现有的半导体工具就能打造出芯片,但最困难的地方:一是芯片的电子设计,除了要能运作更要稳定,二是必须设计专属的算法, 这两个大问题碰在一起使得难度加大,量子计算机也就如此难以突破。 不过,经过学界 20 多年的努力,逐步取得一些进展, John Martinis 有信心的说: “我们希望做出一些可用的东西,目标在今年底实现量子霸权(quantum supremacy)。” (量子霸权是指当量子比特超过 49 或 50 个左右,该量子计算机的计算能力将大幅超越传统计算机、甚至是超级计算机。而 John Martinis 要挑战在今年底打造出一个 49 或 50 qubits 的量子计算机。) Google 量子人工智能实验室的办公环境 量子计算机应用于量子化学及机器学习 不少人认为,量子计算机适合用来运算大量资料的领域,例如气候变迁、新型药物或疗法的开发等。对此, John Martinis 指出, 现阶段各界对量子计算机的投入是要先证明量子霸权,下一步就会进入到尝试思考有用的算法, 他很直率的说:“因为要找出这些算法非常困难。另外,我不清楚量子计算机适不适合处理气候问题,但我们在思考的应用是量子化学。” 量子化学是应用量子力学的规律和方法来研究化学问题的一门学科。 率先提出量子计算机的物理学家理查德·费曼就曾提出这样的看法:如果你打造量子计算机,量子化学将自然地映射到量子计算机上。当然,目前科学家可以利用超级计算机来观察分子的物理特性,不过量子计算机可以比传统计算机更有效率地解决问题,这就是为什么 John Martinis 很自然地认为这应该是量子计算机第一个该做的事。 除了量子化学之外,另一个他们正在思考的是利用量子计算机来执行机器学习。 “这就是为什么 Google 将实验室取名为量子人工智能实验室。” 机器学习适用于某些计算机模型,而量子计算机的概念就是让你可以找到更适合或更有效的方式。 Google相信,机器学习将带来重要的科技变革,影响的程度将如过去的个人电脑、互联网、智能手机一样改变人类生活,John Martinis透露,虽然目前发展的状况还不及量子化学,但是有一些好的想法可以让机器学习与量子计算机整合。内部已经有相关计划正在打造量子神经元,他们发现量子化学领域有一个算法相当近似量子机器学习,或者是量子神经网络,因此机会是很大的。 所以,量子机器学习会比传统计算机更有效率?“我们希望,但现今还没有人实现”。 不过,他们想要用来解决量子化学问题的方法中有一部分就是利用量子机器学习,最终目的还是希望能用量子机器学习来处理更多一般性的问题。 不过,他也强调,“我们还在起点,这属于研究阶段,需要时间实验及发展。在研究阶段,很多时间会花在处理一些看起来看似很简单的玩具问题。”例如,在量子化学中,他们能够在量子计算机上相当精确地算出了氢分子的基态。“这是一个非常简单、从技术出现以来人类就已经知道的分子,不过,一但证明概念可以运作后,就能处理更复杂的问题。”而且已有不少公司着眼此领域,包括 IBM 、微软、阿里巴巴,因此对于量子机器学习的发展他也持乐观态度。 来源: http://www.sohu.com/a/191288166_796886
个人分类: 量子机器学习|1223 次阅读|0 个评论
机器学习卫星图像(171219)
热度 5 ymin 2017-12-19 09:09
机器学习卫星图像( 171219 ) 闵应骅 在上篇“ 人工智能与智能科学( 171207 ) ”中谈到人工智能本质上是一个工程学科,讲究应用。 AI 下围棋只是为了提高大众对 AI 的认知程度,并没有实际的用处。 IEEE Spectrum 2017/12 号上发表一个新闻,就是用机器学习的方法分析卫星图像。这个用处就大了。先看该文提供的几张图片吧! 这 8 张图片,上排自左至右分别是一块墓地、汽车代理商、水坝、电厂;而下排自左到右则是一个工厂、两个医院、一处加油设备。这些图像清晰度都不错,人基本能分辨出来。但是,这么多卫星,每时每刻都在摄像,得产生多少图像数据,成千上万的人也不可能干得过来,必须自动分析。卫星每天获取几十万亿字节的图像。美国情报机构生怕丢失新的核浓缩机构或导弹移动的信息,用人眼的分析显然是不够的。所以,美国情报官员负责启动一个人工智能项目,对卫星图像自动识别需要监视的对象。 今年美国先进研究计划署( IARPA )举办一个竞赛,看什么样的机器学习算法能更准确、更高速地分析卫星图像数据。自从 7 月以来,竞争者们对全世界最大的卫星数据图像集,包含 100 万标注的目标,像建筑或设施,训练机器学习算法。数据由美国先进研究计划署( IARPA )提供。 10 个优胜者将看到他们的 AI 算法如何对这隐藏的卫星图像数据集而取胜。这个竞争将于 12 月结束。 与 IARPA 合作者,美国地理空间情报局局长 Robert Cardillo 要求自动化目前人分析卫星图像工作量的 75% 。学术界、政府实验室和私人企业有许多团队竞争着这 10 万美元的奖励,开发深度学习算法,识别特定图像,认知地球图像的有趣目标。这些图像一般来自外国卫星、航空器和无人机的远程传感技术。 卫星图像深度学习算法的分类筛选比人脸、地标、对象的在线识别复杂多了。 卫星图像瞬时多角度拍摄,许多对象,例如楼房可能是倒置的,云层的覆盖可能使同一领域这一小时和下一小时不一样。 深度学习算法对于大小固定的图像可以做得很好。但是,卫星图像识别困难得多。譬如它的分辨率变化可能很大,这使深度学习算法复杂化。人类工程师可以有两种选择:一种是重新调整整个图像大小,而丧失某些分辨率;另一种是只收获该图像的某一部分而忽略其他。除此之外,许多卫星可以在远离可见光谱,而在红外或其他波长情况下捕获地球图像。 在 IARPA 竞赛中,原来做卫星图像处理的个人或团队自有自己的优势,但是,他们对实际的卫星图像做深度学习也会碰到大麻烦。专家们相信,即使他们能得到 80-90% 的精度,完全靠深度学习解决不了整个问题。从美国能源部洛斯阿拉莫斯国家实验室分列出来的笛卡尔实验室 CTO Mike Warren 说目前的技术需要人和机器结合才能实际上得到答案。笛卡尔实验室已经为商业目的用深度学习自动分析卫星图像,譬如预报美国玉米和大豆丰收情况。这些应用花 10% 的努力就可以得到 80% 的结果。 许多公司开发了深度学习和卫星图像许多有趣的应用,譬如说密苏里大学的一位数据科学家 Grant Scort 领导另一个团队参加 IARPA 竞赛。比较而言,美国情报局对于他们的努力和计划基本保持沉默。不过, IARPA 竞赛说明这些单位希望为卫星图像分析建造更好的深度学习工具。 IARPA 项目负责人 Hakjac Kim 说:美国情报部门已经部署这样的计划和项目,但是,在速度和方法上总有改进的余地。 Scort 和他的同事开始展示可用的商用卫星图像与开源智能公开结合的强大威力。在 Journal of Applied Remote Sensing 杂志的 10 月号上他们发表的文章说明如何用深度学习算法精确识别中国 9 万平方公里土地上地对空导弹发射场。有些读者可能会质疑:美国怎么分析我们中国土地?卫星是把地球当作一个整体来看的,我们也可以看美国情况。 他们最好的算法产生的结果用人工检验发现有 98% 的精确度。该算法用 42 分钟达到人工分析的精确度,而传统的人工分析平均需要 60 小时。这些对 IARPA 竞赛目的的达成是好消息,能够使深度学习成为一个必要的工具。政府和公司会发射更多的图像卫星,去参与了解和地球一样的星座。 美国商业卫星运营商 DigitalGlobe 提供 IARPA 竞赛图像,他们每天收集 70 兆兆字节的原始图像。目前他们急需 AI 的帮助。 我知道,卫星图像分析牵涉到政治、外交、军事等领域。譬如最近印度媒体拿着卫星图像说“中国或正用秘密隧道将布拉马普特拉河的河水引入沙漠”。这就牵涉到从图像到政治了。技术人员所说的卫星图像分析主要是识别,这是纯粹的技术问题。根据识别,政治家、外交家、军事家可以引申做各种分析,那不是技术问题。如果识别错误,据此来谈政治,那就是无的放矢了。联系到我国的情况,我觉得我们的研究应该更多地根据实际数据,做有实际意义的分析,而不是抽象地空谈一些哲学道理,写几篇 SCI 论文。我们的卫星图像数据也应该适度放开,扩大允许使用的范围,使更多的研究者加入到图像分析的队伍中来。其实这些卫星图像数据,各国安全部门都可以获得,屏蔽老百姓没什么用。国家机密部门收集了太多的数据,库存起来,而不利用,也是一种浪费,尤其是难免遗漏更加重要的信息。军队的研究适度扩大到地方既可以加强研究力量,提高全国的科研水平,又可以减少国家的双重科研支出。这里所说的“适度”是以不会造成政治、外交、军事影响为准。
个人分类: 计算机|11076 次阅读|9 个评论
EM算法是炼金术吗?
热度 1 lcguang 2017-12-17 22:40
人工智能很火, 人工智能大神很火。大神们的神器是什么? 有人说找到了,就是EM算法。 请看这篇: EM 算法的九层境界: Hinton 和 Jordan 理解的 EM 算法 http://mp.weixin.qq.com/s/NbM4sY93kaG5qshzgZzZIQ 但是最近网上引人关注的另一传闻是,一位人工智能论文获奖者在获奖感言中说人工智能方法是炼金术, 从而引起大神家族成员反驳。 报道见: http://baijiahao.baidu.com/s?id=1586237001216079684wfr=spiderfor=pc 看到上面两篇, 使我想到: EM 算法是炼金术码? 我近两年碰巧在研究用以改进 EM 算法的新算法: http://survivor99.com/lcg/CM/Recent.html ,对 EM 算法存在的问题比较清楚。我的初步结论是: EM 算法虽然在理论上有问题, 但是确实炼出金子了。 反过来也可以说, 虽然 EM 算法练出金子了,但是收敛很不可靠,流行的解释 EM 算法的收敛理由更是似是而非。有人使之神秘化,使得它是有炼金术之嫌。论据何在?下面我首先以混合模型为例,简单介绍 EM 算法, 并证明流行的 EM 算法收敛证明是错的 ( 没说算法是错的 ) 。 因为公式太多, 详见PDF文件: http://survivor99.com/lcg/CM/cm-ljs.pdf
个人分类: 信息的数学和哲学|15294 次阅读|3 个评论
如何用Python和深度神经网络发现即将流失的客户?
热度 1 wshuyi 2017-11-19 19:08
想不想了解如何用Python快速搭建深度神经网络,完成数据分类任务?本文一步步为你展示这一过程,让你初步领略深度学习模型的强大和易用。 烦恼 作为一名数据分析师,你来到这家跨国银行工作已经半年了。 今天上午,老板把你叫到办公室,面色凝重。 你心里直打鼓,以为自己捅了什么篓子。幸好老板的话让你很快打消了顾虑。 他发愁,是因为最近欧洲区的客户流失严重,许多客户都跑到了竞争对手那里接受服务了。老板问你该怎么办? 你脱口而出“做好客户关系管理啊!” 老板看了你一眼,缓慢地说“我们想知道哪些客户最可能在近期流失”。 没错,在有鱼的地方钓鱼,才是上策。 你明白了自己的任务——通过数据锁定即将流失的客户。这个工作,确实是你这个数据分析师分内的事儿。 你很庆幸,这半年做了很多的数据动态采集和整理工作,使得你手头就有一个比较完备的客户数据集。 下面你需要做的,就是如何从数据中“沙里淘金”,找到那些最可能流失的客户。 可是,该怎么做呢? 你拿出欧洲区客户的数据,端详起来。 客户主要分布在法国、德国和西班牙。 你手里掌握的信息,包括他们的年龄、性别、信用、办卡信息等。客户是否已流失的信息在最后一列(Exited)。 怎么用这些数据来判断顾客是否会流失呢? 以你的专业素养,很容易就判断出这是一个分类问题,属于机器学习中的监督式学习。但是,你之前并没有做过实际项目,该如何着手呢? 别发愁,我一步步给你演示如何用Python和深度神经网络(或者叫“深度学习”)来完成这个分类任务,帮你锁定那些即将流失的客户。 环境 工欲善其事,必先利其器。我们先来安装和搭建环境。 首先是安装Python。 请到 这个网址 下载Anaconda的最新版本。 请选择左侧的Python 3.6版本下载安装。 其次是新建文件夹,起名为demo-customer-churn-ann,并且从 这个链接 下载数据,放到该文件夹下。 (注:样例数据来自于匿名化处理后的真实数据集,下载自 superdatascience官网 。) 打开终端(或者命令行工具),进入demo-customer-churn-ann目录,执行以下命令: jupyter notebook 浏览器中会显示如下界面: 点击界面右上方的New按钮,新建一个Python 3 Notebook,起名为customer-churn-ann。 准备工作结束,下面我们开始清理数据。 清理 首先,读入数据清理最常用的pandas和numpy包。 import numpy as np import pandas as pd 从 customer_churn.csv 里读入数据: df = pd.read_csv( 'customer_churn.csv' ) 看看读入效果如何: df.head() 这里我们使用了 head() 函数,只显示前5行。 可以看到,数据完整无误读入。但是并非所有的列都对我们预测用户流失有作用。我们一一甄别一下: RowNumber:行号,这个肯定没用,删除 CustomerID:用户编号,这个是顺序发放的,删除 Surname:用户姓名,对流失没有影响,删除 CreditScore:信用分数,这个很重要,保留 Geography:用户所在国家/地区,这个有影响,保留 Gender:用户性别,可能有影响,保留 Age:年龄,影响很大,年轻人更容易切换银行,保留 Tenure:当了本银行多少年用户,很重要,保留 Balance:存贷款情况,很重要,保留 NumOfProducts:使用产品数量,很重要,保留 HasCrCard:是否有本行信用卡,很重要,保留 IsActiveMember:是否活跃用户,很重要,保留 EstimatedSalary:估计收入,很重要,保留 Exited:是否已流失,这将作为我们的标签数据 上述数据列甄别过程,就叫做“特征工程”(Feature Engineering),这是机器学习里面最常用的数据预处理方法。如果我们的数据量足够大,机器学习模型足够复杂,是可以跳过这一步的。但是由于我们的数据只有10000条,还需要手动筛选特征。 选定了特征之后,我们来生成特征矩阵X,把刚才我们决定保留的特征都写进来。 X = df.loc ] 看看特征矩阵的前几行: X.head() 显示结果如下: 特征矩阵构建准确无误,下面我们构建目标数据y,也就是用户是否流失。 y = df.Exited! (http://upload-images.jianshu.io/upload_images/ 64542 -a15e6d0d91c8b28e.jpg?imageMogr2/auto-orient/strip% 7 CimageView2/ 2 /w/ 1240 ) y.head() 0 1 1 0 2 1 3 0 4 0 Name: Exited, dtype: int64 此时我们需要的数据基本上齐全了。但是我们发现其中有几列数据还不符合我们的要求。 要做机器学习,只能给机器提供数值,而不能是字符串。可是看看我们的特征矩阵: X.head() 显然其中的Geography和Gender两项数据都不符合要求。它们都是分类数据。我们需要做转换,把它们变成数值。 在Scikit-learn工具包里面,专门提供了方便的工具 LabelEncoder ,让我们可以方便地将类别信息变成数值。 from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder1 = LabelEncoder() X.Geography= labelencoder1.fit_transform(X.Geography) labelencoder2 = LabelEncoder() X.Gender = labelencoder2.fit_transform(X.Gender) 我们需要转换两列,所以建立了两个不同的labelencoder。转换的函数叫做 fit_transform 。 经过转换,此时我们再来看看特征矩阵的样子: X.head() 显然,Geography和Gender这两列都从原先描述类别的字符串,变成了数字。 这样是不是就完事大吉了呢? 不对,Gender还好说,只有两种取值方式,要么是男,要么是女。我们可以把“是男性”定义为1,那么女性就取值为0。两种取值只是描述类别不同,没有歧义。 而Geography就不同了。因为数据集里面可能的国家地区取值有3种,所以就转换成了0(法国)、1(德国)、2(西班牙)。问题是,这三者之间真的有序列(大小)关系吗? 答案自然是否定的。我们其实还是打算用数值描述分类而已。但是取值有数量的序列差异,就会给机器带来歧义。它并不清楚不同的取值只是某个国家的代码,可能会把这种大小关系带入模型计算,从而产生错误的结果。 解决这个问题,我们就需要引入 OneHotEncoder 。它也是Scikit-learn提供的一个类,可以帮助我们把类别的取值转变为多个变量组合表示。 咱们这个数据集里,可以把3个国家分别用3个数字组合来表示。例如法国从原先的0,变成 (1, 0, 0) ,德国从1变成 (0, 1, 0) ,而西班牙从2变成 (0, 0, 1) 。 这样,再也不会出现0和1之外的数字来描述类别,从而避免机器产生误会,错把类别数字当成大小来计算了。 特征矩阵里面,我们只需要转换国别这一列。因为它在第1列的位置(从0开始计数),因而 categorical_features 只填写它的位置信息。 onehotencoder = OneHotEncoder(categorical_features = ) X = onehotencoder.fit_transform(X).toarray() 这时候,我们的特征矩阵数据框就被转换成了一个数组。注意所有被OneHotEncoder转换的列会排在最前面,然后才是那些保持原样的数据列。 我们只看转换后的第一行: X array ( ) 这样,总算转换完毕了吧? 没有。 因为本例中,OneHotEncoder转换出来的3列数字,实际上是不独立的。给定其中两列的信息,你自己都可以计算出其中的第3列取值。 好比说,某一行的前两列数字是 (0, 0) ,那么第三列肯定是1。因为这是转换规则决定的。3列里只能有1个是1,其余都是0。 如果你做过多元线性回归,应该知道这种情况下,我们是需要去掉其中一列,才能继续分析的。不然会落入 “虚拟变量陷阱” (dummy variable trap)。 我们删掉第0列,避免掉进坑里。 X = np.delete(X, , 1 ) 再次打印第一行: X array ( ) 检查完毕,现在咱们的特征矩阵处理基本完成。 但是监督式学习,最重要的是有标签(label)数据。本例中的标签就是用户是否流失。我们目前的标签数据框,是这个样子的。 y.head() 0 1 1 0 2 1 3 0 4 0 Name: Exited, dtype: int64 它是一个行向量,我们需要把它先转换成为列向量。你可以想象成把它“竖过来”。 y = y y array ( , , , ..., , , ]) 这样在后面训练的时候,他就可以和前面的特征矩阵一一对应来操作计算了。 既然标签代表了类别,我们也把它用OneHotEncoder转换,这样方便我们后面做分类学习。 onehotencoder = OneHotEncoder() y = onehotencoder.fit_transform(y).toarray() 此时的标签变成两列数据,一列代表顾客存留,一列代表顾客流失。 y array ( , , , ..., , , ]) 总体的数据已经齐全了。但是我们 不能 把它们 都用来 训练。 这就好像老师不应该把考试题目拿来给学生做作业和练习一样。只有考学生没见过的题,才能区分学生是掌握了正确的解题方法,还是死记硬背了作业答案。 我们拿出20%的数据,放在一边,等着用来做测试。其余8000条数据用来训练机器学习模型。 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2 , random_state = 0 ) 我们看看训练集的长度: len(X_train) 8000 再看看测试集的长度: len(X_test) 2000 确认无误。 是不是可以开始机器学习了? 可以,但是下面这一步也很关键。我们需要把数据进行标准化处理。因为原先每一列数字的取值范围都各不相同,因此有的列方差要远远大于其他列。这样对机器来说,也是很困扰的。数据的标准化处理,可以在保持列内数据多样性的同时,尽量减少不同类别之间差异的影响,可以让机器公平对待全部特征。 我们调用Scikit-learn的 StandardScaler 类来完成这一过程。 from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) 注意,我们只对特征矩阵做标准化,标签是不能动的。另外训练集和测试集需要按照 统一的标准 变化。所以你看,训练集上,我们用了 fit_transform 函数,先拟合后转换;而在测试集上,我们直接用训练集拟合的结果,只做转换。 X_train array ( , , , ..., , , ]) 你会发现,许多列的方差比原先小得多。机器学习起来,会更加方便。 数据清理和转换工作至此完成。 决策树 如果读过我的《 贷还是不贷:如何用Python和机器学习帮你决策? 》一文,你应该有一种感觉——这个问题和贷款审批决策很像啊!既然在该文中,决策树很好使,我们继续用决策树不就好了? 好的,我们先测试一下经典机器学习算法表现如何。 从Scikit-learn中,读入决策树工具。然后拟合训练集数据。 from sklearn import tree clf = tree.DecisionTreeClassifier() clf = clf.fit(X_train, y_train) 然后,利用我们建立的决策树模型做出预测。 y_pred = clf.predict(X_test) 打印预测结果: y_pred array ( , , , ..., , , ]) 这样看不出来什么。让我们调用Scikit-learn的 classification_report 模块,生成分析报告。 from sklearn.metrics import classification_report print(classification_report(y_test, y_pred)) precision recall f1-score support 0 0 . 89 0 . 86 0 . 87 1595 1 0 . 51 0 . 58 0 . 54 405 avg / total 0 . 81 0 . 80 0 . 81 2000 经检测,决策树在咱们的数据集上,表现得还是不错的。总体的准确率为0.81,召回率为0.80,f1分数为0.81,已经很高了。对10个客户做流失可能性判断,它有8次都能判断正确。 但是,这样是否足够? 我们或许可以调整决策树的参数做优化,尝试改进预测结果。 或者我们可以采用 深度学习 。 深度 深度学习的使用场景,往往是因为原有的模型经典机器学习模型过于简单,无法把握复杂数据特性。 我不准备给你讲一堆数学公式,咱们动手做个实验。 请你打开 这个网址 。 你会看到如下图所示的深度学习游乐场: 右侧的图形,里面是蓝色数据,外圈是黄色数据。你的任务就是要用模型分类两种不同数据。 你说那还不容易?我一眼就看出来了。 你看出来没有用。通过你的设置,让机器也能正确区分,才算数。 图中你看到许多加减号。咱们就通过操纵它们来玩儿一玩儿模型。 首先,点图中部上方的2 HIDDEN LAYERS左侧减号,把中间隐藏层数降低为1。 然后,点击2 neurons上面的减号,把神经元数量减少为1。 把页面上方的Activation函数下拉框打开,选择“Sigmoid”。 现在的模型,其实就是经典的逻辑回归(Logistic Regression)。 点击左上方的运行按钮,我们看看执行效果。 由于模型过于简单,所以机器绞尽脑汁,试图用一条直线切分二维平面上的两类节点。 损失(loss)居高不下。训练集和测试集损失都在0.4左右,显然不符合我们的分类需求。 下面我们试试增加层数和神经元数量。这次点击加号,把隐藏层数加回到2,两层神经元数量都取2。 再次点击运行。 经过一段时间,结果稳定了下来,你发现这次电脑用了两条线,把平面切分成了3部分。 测试集损失下降到了0.25左右,而训练集损失更是降低到了0.2以下。 模型复杂了,效果似乎更好一些。 再接再厉,我们把第一个隐藏层的神经元数量增加为4看看。 点击运行,不一会儿有趣的事情就发生了。 机器用一条近乎完美的曲线把平面分成了内外两个部分。测试集和训练集损失都极速下降,训练集损失甚至接近于0。 这告诉我们,许多时候模型过于简单带来的问题,可以通过加深隐藏层次、增加神经元的方法提升模型复杂度,加以改进。 目前流行的划分方法,是用隐藏层的数量多少来区分是否“深度”。当神经网络中隐藏层数量达到3层以上时,就被称为“深度神经网络”,或者“深度学习”。 久闻大名的深度学习,原来就是这么简单。 如果有时间的话,建议你自己在这个游乐场里多动手玩儿一玩儿。你会很快对神经网络和深度学习有个感性认识。 框架 游乐场背后使用的引擎,就是Google的深度学习框架Tensorflow。 所谓框架,就是别人帮你构造好的基础软件应用。你可以通过调用它们,避免自己重复发明轮子,大幅度节省时间,提升效率。 支持Python语言的深度学习的框架有很多,除了Tensorflow外,还有PyTorch, Theano和MXNet等。 我给你的建议是,找到一个你喜欢的软件包,深入学习使用,不断实践来提升自己的技能。 千万不要 跟别人争论哪个深度学习框架更好。一来萝卜白菜各有所爱,每个人都有自己的偏好;二来深度学习的江湖水很深,言多有失。说错了话,别的门派可能会不高兴哟。 我比较喜欢Tensorflow。但是Tensorflow本身是个底层库。虽然随着版本的更迭,界面越来越易用。但是对初学者来说,许多细节依然有些过于琐碎,不容易掌握。 初学者的耐心有限,挫折过多容易放弃。 幸好,还有几个高度抽象框架,是建立在Tensorflow之上的。如果你的任务是 应用 现成的深度学习模型,那么这些框架会给你带来非常大的便利。 这些框架包括Keras, TensorLayer等。咱们今天将要使用的,叫做TFlearn。 它的特点,就是长得很像Scikit-learn。这样如果你熟悉经典机器学习模型,学起来会特别轻松省力。 实战 闲话就说这么多,下面咱们继续写代码吧。 写代码之前,请回到终端下,运行以下命令,安装几个软件包: pip install tensorflow pip install tflearn 执行完毕后,回到Notebook里。 我们呼叫tflearn框架。 import tflearn 然后,我们开始搭积木一样,搭神经网络层。 首先是输入层。 net = tflearn.input_data(shape= ) 注意这里的写法,因为我们输入的数据,是特征矩阵。而经过我们处理后,特征矩阵现在有11列,因此shape的第二项写11。 shape的第一项,None,指的是我们要输入的特征矩阵行数。因为我们现在是搭建模型,后面特征矩阵有可能一次输入,有可能分成组块输入,长度可大可小,无法事先确定。所以这里填None。tflearn会在我们实际执行训练的时候,自己读入特征矩阵的尺寸,来处理这个数值。 下面我们搭建隐藏层。这里我们要使用深度学习,搭建3层。 net = tflearn.fully_connected(net, 6 , activation= 'relu' ) net = tflearn.fully_connected(net, 6 , activation= 'relu' ) net = tflearn.fully_connected(net, 6 , activation= 'relu' ) activation刚才在深度学习游乐场里面我们遇到过,代表激活函数。如果没有它,所有的输入输出都是线性关系。 Relu函数是激活函数的一种。它大概长这个样子。 如果你想了解激活函数的更多知识,请参考后文的学习资源部分。 隐藏层里,每一层我们都设置了6个神经元。其实至今为之,也不存在最优神经元数量的计算公式。工程界的一种做法,是把输入层的神经元数量,加上输出层神经元数量,除以2取整。咱们这里就是用的这种方法,得出6个。 搭好了3个中间隐藏层,下面我们来搭建输出层。 net = tflearn.fully_connected(net, 2 , activation= 'softmax' ) net = tflearn.regression(net) 这里我们用两个神经元做输出,并且说明使用回归方法。输出层选用的激活函数为softmax。处理分类任务的时候,softmax比较合适。它会告诉我们每一类的可能性,其中数值最高的,可以作为我们的分类结果。 积木搭完了,下面我们告诉TFlearn,以刚刚搭建的结构,生成模型。 model = tflearn.DNN(net) 有了模型,我们就可以使用拟合功能了。你看是不是跟Scikit-learn的使用方法很相似呢? model.fit(X_train, y_train, n_epoch= 30 , batch_size= 32 , show_metric= True ) 注意这里多了几个参数,我们来解释一下。 n_epoch :数据训练几个轮次。 batch_size :每一次输入给模型的数据行数。 show_metric :训练过程中要不要打印结果。 以下就是电脑输出的最终训练结果。其实中间运行过程看着更激动人心,你自己试一下就知道了。 Training Step: 7499 | total loss:  array ( ) 我们就用它来预测一下分类结果。 y_pred = model.predict(X_test) 打印出来看看: y_pred array ( , dtype=float32) 模型判断该客户不流失的可能性为0.70956731。 我们看看实际标签数据: y_test array ( ) 客户果然没有流失。这个预测是对的。 但是一个数据的预测正确与否,是无法说明问题的。我们下面跑整个测试集,并且使用evaluate函数评价模型。 score = model.evaluate(X_test, y_test) print( 'Test accuarcy: %0.4f%%' % (score * 100 )) Test accuarcy : 84 .1500 % 在测试集上,准确性达到84.15%,好样的! 希望在你的努力下,机器做出的准确判断可以帮助银行有效锁定可能流失的客户,降低客户的流失率,继续日进斗金。 说明 你可能觉得,深度学习也没有什么厉害的嘛。原先的决策树算法,那么简单就能实现,也可以达到80%以上的准确度。写了这么多语句,深度学习结果也无非只提升了几个百分点而已。 首先,准确度达到某种高度后,提升是不容易的。这就好像学生考试,从不及格到及格,付出的努力并不需要很高;从95分提升到100,却是许多人一辈子也没有完成的目标。 其次,在某些领域里,1%的提升意味着以百万美元计的利润,或者几千个人的生命因此得到拯救。 第三,深度学习的崛起,是因为大数据的环境。在许多情况下,数据越多,深度学习的优势就越明显。本例中只有10000条记录,与“大数据”的规模还相去甚远。 学习资源 如果你对深度学习感兴趣,推荐以下学习资源。 首先是教材。 第一本是 Deep Learning ,绝对的经典。 第二本是 Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems ,深入浅出,通俗易懂。 其次是MOOC。 推荐吴恩达(Andrew Ng)教授在Coursera上的两门课程。 一门是机器学习。这课推出有年头了,但是非常有趣和实用。具体的介绍请参考拙作《 机器学习哪里有这么玄? 》以及《 如何用MOOC组合掌握机器学习? 》。 一门是深度学习。这是个系列课程,包括5门子课程。今年推出的新课,自成体系,但是最好有前面那门课程作为基础。 讨论 你对深度学习感兴趣吗?之前有没有做过深度学习项目?你掌握了哪些深度学习框架?有没有什么建议给初学者?欢迎留言,把心得分享给大家,我们一起交流讨论。 如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。 如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。 延伸阅读 数据科学相关文章合集(玉树芝兰)
13729 次阅读|1 个评论
Berkeley观点:人工智能系统研究的挑战
热度 5 threewells14 2017-11-14 21:39
想必大家一定知道 UC Berkely 大学在计算机专业领域的地位,计算机 top4 的 MIT , Stanford , Berkeley 和 CMU 为计算机的发展做出了不计其数的贡献,而 Berkely 特别以系统研究见长。 2009 年的时候, Berkeley 的大牛们总结了一篇《 Above the clouds: a berkeley view of cloud computing 》的论文,宣告云计算研究的兴起。 明白人看看这 6000+ 的引用次数就知道它的受欢迎程度了。最近, Berkeley 的大牛们针对目前 AI 的火爆形势,又总结了一篇《 A Berkeley View of Systems Challenges for AI 》,从系统研究的角度考虑支持 AI 的若干有意义的研究课题,可预计的它的影响力也不会低。 在正式介绍这篇论文之前,咱先看下这个作者列表,八卦下这些作者: Ion Stoica , ACM Fellow , P2P Chord 作者, ApacheSpark 作者 DawnSong (宋晓东) , 2010 年麦克阿瑟天才奖( MacArthurFellows )得主,在 top4 高校为数不多的 女 华人教授 RalucaAda Popa , 这个比较年轻,名气还没起来,但是颜值够用,做安全方向 DavidPatterson , RISC (精简指令集计算机)的发明者,美国科学院工程院两院院士,计算机历史博物馆成员, ACM/IEEE/AAAS Fellow , ACM 杰出服务奖得主。 MichaelW. Mahoney , 这个不太了解 RandyKatz , RAID 磁盘阵列发明者之一,《现代逻辑设计》一书作者,美国工程院和美国艺术科学院两院院士, ACM/IEEE Fellow AnthonyD. Joseph ,做安全机器学习,个人主页不更新了,看来比较低调 MichaelJordan , LDA 作者,机器学习泰斗,美国科学院 / 工程院 / 艺术科学院三院院士, ACM/AAAI Fellow ,认知科学最高奖 Rumelhart Prize 得主,美国人工智能协会的艾伦奖得主, 2016 年入选最有影响力的计算机科学家 Joseph M.Hellerstein , Berkeley 计算机系 Jim Gray Professor (数据库首席教授),入选 MITTechnology Review 评选的世界百位杰出青年发明家( TR100 List ), ACM Fellow ,很多研究成果应用到商业和开源数据库中 (因为方向相关,个人喜欢读他的论文,很有见地) Joseph Gonzalez ,新人, GraphLab 作者 Ken Goldberg ,这是个神人,他不光是计算机科学家,还是个艺术家、作家、发明家。他老婆 Tiffany Shlain 是个很有名的电影导演,他和他老婆的电影作品多次获各种电影节的奖项。他还导演芭蕾舞剧,他还发明了一种音响装置 …. Ali Ghodsi ,这是个年轻人,想必很多人读过他的 paper ,是 Databricks 的 CEO 和创始人之一, Apache Spark 和 Apache Mesos 的作者 David Culler ,做网络的大牛, PlanetLab 作者 Pieter Abbeel ,做机器学习的大牛,创办了很多公司,吴恩达的学生, MIT 年度 TR35 创新奖(世界范围内 35 位 35 岁以下创新者)得主,青年科学家总统奖得主,还有各种国际级国家级大奖的得主,各种国际会议 NIPS/ICML/ICRA 最佳论文奖,不一一列举了 正文比较长,我把重点先挑出来: 四大趋势: 关键性任务的人工智能(Mission-critical AI) 个性化人工智能(Personalized AI) 跨多组织机构的人工智能(AI across organizations) 后摩尔定律时期的人工智能(AI demands outpacing the Moore's Law 九大挑战: 持续学习(Continual learning) 鲁棒决策(Robust decisions) 可解读的决策(Explainable decisions) 安全飞地(Secure enclaves) 对抗学习(Adversarial learning) 在保密数据上的共享学习(Shared learning on confidential data) 特定领域定制的硬件(Domain specific hardware) 组件化的AI系统(Composable AI systems) 跨云端和边缘的系统(Cloud-edge systems) 下面开始翻译全文,原文可见 https://www2.eecs.berkeley.edu/Pubs/TechRpts/2017/EECS-2017-159.pdf Berkeley 观点:人工智能系统研究的挑战 Ion Stoica, Dawn Song, Raluca Ada Popa, DavidPatterson, Michael W. Mahoney, Randy Katz, Anthony D. Joseph, Michael Jordan,Joseph M. Hellerstein, Joseph Gonzalez, Ken Goldberg, Ali Ghodsi, David Culler,Pieter Abbeel 摘要: 近年来,随着计算机视觉、语音识别、机器翻译的技术的发展和商业化,及诸如数字广告和智能基础设施等基于机器学习的后台技术的普遍部署,人工智能已经从实验室的研究项目变成了实际生产系统不可或缺的关键技术。正是因为积累的海量数据、计算能力前所未有的发展高度、机器学习方法的不断进展、系统软件和架构的持续创新、及方便这些技术落地的开源项目和云计算平台,促使了人工智能技术的广泛应用。 下一代人工智能系统将更广泛地影响我们的生活,人工智能将会通过与环境交互替人类进行更关键的和更加个性化的决策。若想要人工智能发挥更大的作用,我们将面临诸多极具挑战性的问题:我们需要人工智能系统可以在各种极端情况下及时做出安全的决策,比如在各种恶意攻击情况下具备鲁棒性,在保证隐私的情况下具备处理跨多组织多个人的共享数据的能力。随着摩尔定律的终结,存储和处理数据的能力将受限,这些挑战也将变得更加难以解决。在这篇文章里,我们将总结在系统领域、体系结构领域、安全领域等方面的具体研究方向。 关键词: 人工智能,机器学习,系统,安全 1. 引言 自二十世纪 60 年代最初提出模拟人类智能的构想以来,人工智能已经成为一种被广泛应用的工程技术,它利用算法和数据可以解决包括模式识别、学习、决策等多种问题,被工程和科学中越来越多的学科所使用,同时也需要其他多种学科的研究所支持,成为计算领域一门交叉学科技术。 计算机系统近年来推动了人工智能技术的发展,并行计算设备 和高扩展性软件系统 的进步促进了机器学习框架 和算法 的发展,使人工智能可以处理真实世界的大规模问题;存储设备、众包、移动 APP 、物联网、数据采集成本的迅速降低 促使了数据处理系统和人工智能技术的进一步发展 。在很多实际任务中,人工智能已经接近甚至超过了人类,成熟的人工智能技术不仅大大提高了网络搜索和电子商务等主流产品的服务质量,也促进了物联网、增强现实、生物技术、自动驾驶汽车等新兴产业的发展。 许多应用需要人工智能系统与现实世界的交互来进行决策,例如无人驾驶飞机、机器人手术、医疗诊断治疗、虚拟助手等。由于现实世界是不断变化的,有时甚至是意料之外的变化,这些应用需要持续( continual learning )学习、终身学习( life-long learning ) 和永动学习( never-ending learning ) 。终身学习通过高效地转化和利用已经学过的知识来完成新的任务,并且要最大程度降低突发性遗忘带来的问题 。永动学习每次迭代处理一个任务集合,随着这个任务集合的不断变大,处理结果的质量每次迭代后越来越好。 为了满足以上这些需求,我们要面临诸多艰巨的挑战,比如如何主动探索不断动态变化的环境、如何在恶意攻击和噪音输入情况下做出安全稳定的决策、如何提高决策的可解读能力、如何设计模块化架构以简化应用系统构建等。另外,由于摩尔定律的终结,我们也不能寄希望于计算和存储能力的增强来解决这些下一代人工智能系统的问题。 解决这些难题需要体系结构、软件和算法的协同创新。这篇文章并不是解决人工智能算法和技术上的某些特定问题,而是分析系统方面的研究对人工智能技术发展的重要性,提出若干有意义的系统方面的研究方向。 2. 人工智能成功背后的原因 人工智能在过去二十年飞速发展的原因归结于三点: 1 )大数据, 2 )高扩展性的计算机和软件系统, 3 )开源软件( Spark 、 TensorFlow 、 MXNet 、 Caffe 、 PyTorch 、 BigDL )及公有云服务( Amazon AWS 、 Google Cloud 、 MS Azure )的兴起和流行,这使研究人员可以很容易的租用 GPU 服务器或者 FPGA 服务器来验证他们的算法。 3. 趋势和挑战 虽然人工智能已经应用到了众多应用领域,但是人类希望在更多领域发挥人工智能的作用,包括健康医疗、交通运输、工业制造、国防、娱乐、能源、农业、销售业等等领域。大规模系统和机器学习框架已经帮助人工智能取得了一定程度的成功,我们期待计算机系统能够可以更进一步地促进人工智能的发展。我们需要考虑如下几个人工智能发展的趋势来应对挑战。 3.1 关键性任务的人工智能( Mission-critical AI ) 从银行交易到自动驾驶,再到机器人手术和家居自动化,人工智能开始涉及到一些关键性任务,这些应用往往与人们的生命安全息息相关。如果人工智能要在动态变化的环境中部署,人工智能系统必须能够不断地适应新环境并且学习新技能。例如,自动驾驶汽车应该快速适应各种无法预料的危险路况(如事故或冰面道路),这可以通过观察其它汽车处理这些危险的行为进行实时学习;还有基于人工智能的入侵检测系统必须在入侵行为发生后立刻迅速地检测到新的攻击行为。另外,这些关键性任务也必须能够处理各种噪声数据及防范各种恶意的人为攻击。 挑战: 通过与动态变化的环境不断交互,设计可以不断学习和自适应的人工智能系统,使其可以做出及时、稳定、安全的决策。 3.2 个性化人工智能( Personalized AI ) 从虚拟助理到自动驾驶和政治竞选,考虑用户行为(如虚拟助理要学习用户的口音)和用户偏好(如自动驾驶系统要学习用户的驾驶习惯和偏好)的个性化决策越来越重要。这就需要采集大量敏感的用户个人信息,对这些敏感信息的滥用有可能会反过来泄漏用户的隐私。 挑战: 设计支持个性化服务的系统,同时要保护用户的隐私和保证用户的安全。 3.3 跨多组织机构的人工智能( AI across organizations ) 各大公司利用第三方数据来提升他们自己的人工智能服务的质量 ,许多医院开始共享他们的数据来防止疫情暴发,金融机构也会共享他们的数据来提升各自的欺诈检测能力。以前是一个公司利用自己业务收集的数据进行处理分析并提供服务,而未来将是多个公司共享数据来提供服务,这种趋势将导致数据垄断到数据生态系统的变革。 挑战: 设计多组织机构数据的共享机制,支持跨多组织机构的人工智能系统,同时要保障各组织机构自己数据的保密性,甚至是共享给竞争对手的数据也要保证数据的隐私信息不被泄露。 3.4 后摩尔定律时期的人工智能( AI demands outpacing the Moore’s Law ) 处理和存储大数据的能力是近年来人工智能成功的关键因素,然而匹配人工智能进步需求的大数据处理能力将变得越来越困难,主要有以下两点原因: 第一,数据量持续以指数级规模增长。 2015 年思科白皮书 声称,万物网( Internetof Everything )设备采集的数据量到 2018 年将达到 400ZB ,几乎是 2015 年估计数据量的 50 倍;近期研究 预测,到 2025 年,为了处理人类基因组,我们需要计算机处理能力有 3 到 4 个数量级的增长,这就需要计算机处理能力每年至少以 2 倍的速度增长。 第二,相对于数据爆炸,计算硬件设备处理能力的增长遇到了瓶颈 。 DRAM 内存和磁盘容量预计在未来十年才能翻倍,而 CPU 性能预计在未来二十年才能翻倍,这种不匹配的增长速度意味着,在未来,存储和处理大数据将变得异常困难。 挑战: 开发针对特定用途( domain-specific )的架构和软件系统,以适应后摩尔定律时期人工智能应用的需要,这包括针对特定人工智能应用的定制芯片、以提高数据处理效率为目的的边缘 - 云联合计算系统( edge-cloud systems )、以及数据抽象技术和数据采样技术。 4. 研究方向 这一部分讨论如何利用系统、安全、体系结构领域的创新成果来解决之前提出的若干挑战和问题。我们总结了 9 个研究方向,可以分类为三大主题,包括:动态环境下的处理技术、安全的人工智能、人工智能定制的体系结构。下图总结了人工智能的 4 大趋势和 9 大研究方向的关联关系。 4.1 动态环境下的处理技术( Acting in dynamic environments ) 相对于目前主流的针对静态数据进行学习,未来的人工智能应用将会在动态性更强的环境下进行,这种动态性体现为突发性、不可预期性、不可重复性等方面。例如,一队机器人负责维护一座办公楼的安全,当其中一个机器人坏掉或者一个新机器人加入后,其它机器人能够统一地更新各自的巡逻路径、巡逻目的、协同控制机制。或者由于某机器人自己的异常行为(比如被恶意控制)或者外部环境变化(比如电梯失灵)导致的环境突发性变化,所有机器人必须要重新迅速调整自己的策略。这就要求人工智能系统即使没有相关处理经验情况下也能快速响应的能力。 研究课题 1 :持续学习( Continuallearning )。 目前许多人工智能系统,包括电影推荐、图片识别、自动翻译等,都是通过离线训练和在线预测完成的。也就是说,这些任务不是基于动态数据的持续学习来完成的,而是通过对某个时间段的静态数据进行定期学习来完成的,利用定期学习得到的模型来预测未来。通常这种定期学习每一天进行一次,通过学习前一天的数据来更新模型,最好的情况也是每小时进行一次,但是预测和决策是需要每分每秒都发生的,定期学习有可能是利用过时的数据学习,这就导致了定期学习无法适应持续动态变化的环境,特别是对于关键性任务定期学习就会更加危险了。甚至于某些任务需要人工智能能够持续地学习和适应异步的变化,这就使持续学习变得更加困难了。 适应动态环境的学习在某些方面可以应用在线学习( online learning ) 解决,在线学习基于随时到来的数据更新模型,但是传统在线学习只能简单地应对数据的变化,不能应对环境变化(比如机器人的例子),另外传统在线学习需要对它的动作及时进行收益打分反馈以更新自己的模型,不能适应反馈延迟的复杂情况(比如下棋时的收益反馈只能在整局棋结束才知道,即输或者赢)。 这些情况可以利用增强学习( Reinforcementlearninig )来解决,增强学习的核心任务是学习一个策略函数,它以最大化某长远收益为目标,建立一个观察值到输出行为的映射关系。比如在自动驾驶中以避免碰撞为目标,建立一个汽车摄像头拍摄的图像到减速动作的映射,或者在推荐系统中以增加销售量为目标,建立一个用户访问网页请求到显示某广告动作的映射。增强学习算法根据用户动作对环境的影响变化来更新模型策略,如果由于环境的变化又导致了收益的变化,它也会相应地更新模型策略。增强学习其实在某些领域已经取得了很大的成功,包括在十五子棋 、学习行走 、基本运动技能的学习 等领域都可以达到很好的效果。但是,它需要对每一个应用进行有针对性的调整。近期将深度神经网络和增强学习结合的方法(深度增强学习 Deep RL )可以达到更加稳定学习效果并适用于不同应用领域,包括近期 Google 的 AlphaGo ,另外在医疗诊断 和资源管理 等方面都取得了成功。 支持增强学习的系统( Systems forRL ):现在许多增强学习应用依赖于模拟现实世界的反馈来解决复杂任务,通常需要万亿次的模拟来搜索可行解空间,例如在智能游戏中尝试不同变种的游戏设置,或者在机器人模拟中试验不同的控制策略。每次模拟尝试可能仅需要几毫秒,但是每次模拟需要的时间极不稳定,比如可能仅需要走几步棋就输了,也可能需要走几百步棋赢了。现实世界部署增强学习系统需要处理来自众多不同接收器观察到的环境变化数据,对应不同接收器的处理任务在处理时间、计算量、资源需求方面可能有很大不同,系统也要具有在固定时间内处理这些异构任务的能力。比如大规模集群系统要能够在一秒钟内完成上百万次的模拟,而现有的系统还远不能达到这个需求,流行的数据并行系统 每秒仅能处理几万或几千次的模拟,而高性能计算系统和分布式深度学习系统 并不能处理异构的任务,所以我们需要新的支持高效增强学习应用的系统出现。 模拟现实( Simulatedreality, SR ):与外部环境交互的能力是增强学习成功的关键,然而与现实世界的环境交互可能很久才能得到反馈(甚至几十秒几百秒),另外与现实世界环境的交互也可能会造成不可逆的物理伤害,而我们往往需要上百万次的交互才能学到一个比较好的策略模型,这就使与现实世界的交互变得不太可行。有一些算法可以减少与现实世界交互的次数 ,更通用的方法是利用模拟现实,这样就可以在真正做出交互动作之前,利用模拟现实环境不断进行模拟和预测,执行收益最高代价最小的动作。 模拟现实使学习不但更快而且更安全,想象一个机器人在打扫房间,突然发现一个以前从没见过的新手机,如果机器人在真实世界中进行一系列的尝试来学习如果抓起这个手机的话,它可能需要很长时间的尝试,也可能由于一次用力过猛的尝试直接捏碎手机。而如果机器人能够提取手机的形状信息,并在虚拟现实环境中尝试不同的动作,学习到手机的硬度、质地、重量等信息,然后在真实环境中使用一个合理的姿势和力度抓起手机,就可以避免手机被搞坏了。 模拟现实不同于虚拟现实( virtualreality, VR ),虚拟现实是模拟一个假想的环境(例如《我的世界》这个游戏,玩家可以在一个随机生成的 3D 世界内,以带材质贴图的立方体为基础进行游戏)或者是利用过去的真实世界场景(例如飞行模拟器),而模拟现实是模拟人工智能实体正在交互的那个真实环境。模拟现实也不同于增强现实( augmented reality, AR ),增强现实是在真实世界场景中加入虚拟物体。 模拟现实系统最大的挑战是,为了模拟不断变化的真实世界环境,需要不断更新模拟器的参数,同时,要在做出一个动作之前执行很多次的模拟尝试。因为学习算法与真实世界交互,它可以获得很多知识来提高模拟准确度,在每次与真实环境交互后都要更新模拟器参数,并在做下一个动作之前完成很多很多次类似“如果这么做结果会怎样”的尝试,所以模拟尝试一定要很快很快。 研究内容 :( 1 )构建支持增强学习的系统,它需要充分利用并行能力,支持动态任务图( dynamic task graphs ),达到毫秒级的反应速度,并且能够在异构硬件环境中保持反应速度;( 2 )构建模拟现实系统,可以完全模拟(动态变化的,不可预期的)真实世界环境,并且需要实时的反应速度。 研究课题 2 :鲁棒决策( Robustdecisions ) 。人工智能替人类做出决策,特别是在关键性任务上,它应该能够在获得各种不确定的或者是错误的输入和反馈时,能够做出具有鲁棒性的决策。在统计和机器学习领域,防噪声干扰和鲁棒学习是一个核心问题,增加系统层面的支持将会显著提升传统方法的性能。例如构建可以追踪数据来源的系统,对输出不稳定的数据源特殊照顾,避免不确定性带来的影响,我们也可以利用从其它数据源获得的信息来帮助构建基于每个数据源的噪音模型(例如发现遮挡的摄像头),这些能力要求数据存储系统具有对数据源检查和噪音建模的能力。有两种鲁棒性对于人工智能系统尤为重要:( 1 )在噪音输入的情况下和恶意虚假反馈情况下的鲁棒学习能力;( 2 )在存在意外输入( unforeseen inputs )和对抗输入( adversarial inputs ,对抗输入是扮演攻击角色,试图用来引发模型出错的机器学习模型的输入)的情况下的鲁棒决策能力。 学习系统使用从不可靠的数据源获得的数据,这些数据可能是打了不正确的标签,有些时候可能是故意的。例如微软的 Tay 聊天机器人就过于依赖与人类的交流来提高对话能力了,当被放在 Twitter 上与人交流一段时间后, Tay 就学坏了 。(在 Tay 推出一天之后,因为 Tay 开始有一些种族歧视之类的偏激言论,因此微软暂时关闭了 Tay 的 Twitter 账号,这些言论明显的是和网络上一些有偏激言论的人互动后,被刻意教导而出现的) 除了处理噪声数据,另外一个研究问题是应对与训练数据分布完全不同的输入,我们希望系统能够判断出这些反常数据并做出安全的反应动作,比如在自动驾驶中的安全动作就是减速停车,或者是如果有人在旁边的话,系统能够把控制权交给人类。最好是设计一个模型可以明确拒绝对其不确信的输入进行反应,或者是执行一个默认安全的动作,这样可以大大降低计算开销并且执行准确可靠的动作。 研究内容 :( 1 )构建具有精确追踪数据来源能力的人工智能系统,可以将收益变化与每个数据来源进行联系,能够自动学习基于每个数据源的噪音模型;( 2 )设计可以指定决策置信区间的编程接口和语言,允许用户根据实际应用的安全程度需要指定置信区间,并且能够标识反常的数据输入。 研究课题 3 :可解读的决策( Explainabledecisions ) 。除了黑盒预测和决策,人工智能系统往往需要向人类解释他们的决策,这往往在一些监管性的任务,还有安全和医疗等需要负法律责任的应用上尤为重要。这里的可解读性并不是可理解性( interpretable ),可理解性只是强调人工智能算法的输出对于某领域的专家是可以理解的,而可解读性的意思是能够指出输入数据的那些属性导致了这个输出结果,并且能够回答反事实问题( counterfactual questions ,虽然没有实际发生,但是假设发生了会怎样)或者回答“如果 XX 会怎样?”的问题。例如在医疗诊断中,我想要知道 X 射线检查出来某个器官的哪些指标(如大小、颜色、位置、形式)导致了这个诊断结果,如果那些指标稍微变化一点的话结果会有什么样的变化,或者是我想知道是否有其他指标组合也会导致同样的诊断,哪些指标组合最有可能导致这个诊断。我们不仅想要解释这个输出结果,还要知道哪些其他的输入也会导致这个结果,这种因果推断( causal inference )是未来许多人工智能任务的必备功能。 实际上,支持决策可解读性的关键一点是,记录和重现导致某一决策结果的计算过程的能力,这就需要系统层面的支持,系统根据过去导致某决策输出的输入数据可以重现计算,或者根据随机的或者对抗性的输入,或者根据反事实的输入,如果系统能够具有这些根据不同输入重现计算的能力,就可以帮助人工智能系统分析输入和输出的因果关系,提高决策的可解读能力。例如基于视频的安全警报系统,它想要找出什么原因导致了一个错误警报,可以通过扰动输入视频数据(比如遮挡视频图像的某些区域),或者是通过用近期相似的历史数据来尝试,看这些尝试是否会导致同样的错误警报,或者是看对警报发生概率的影响。这样的系统支持也能帮助提高新模型的统计判断能力和训练测试效果,例如设计一些有解读能力的新模型。 研究内容 :构建具有交互诊断分析能力的 AI 系统,它可以完全重现执行过程,并可以帮助分析那些对结果起关键作用的输入,这可以是通过尝试各种扰动的输入来尝试重现决策结果,甚至是使系统具有因果推断能力。 4.2 安全的人工智能( Secure AI ) 安全是个广泛的课题,人工智能应用普及和发展的关键往往都是安全相关的问题。例如,执行关键性任务的人工智能应用,个性化学习,跨组织结构的学习,这些都需要系统具有很强的安全性。安全问题的涉及面很广,我们这里只关注两大类安全问题。第一类是攻击者影响决策的正确性:攻击者可以通过破坏和控制 AI 系统本身,或者通过特意改变输入来使系统不知不觉地做出攻击者想要的决定。 第二类是攻击者获取 AI 系统训练的保密数据,或者破解加密模型。接下来,我们讨论三个有前途的研究方向来抵御这种攻击。 研究课题 4 :安全飞地( Secureenclaves ) 。(飞地:某国家拥有一块与本国主体分离开来的领土,该领土被其他国家包围,则该领土被称为飞地。比如在西德与东德尚未合并前,原本柏林境内属于美英法占领区所合并的西柏林市,四周皆被苏联控制的东德领土包围,是最出名的一块飞地)公共云的迅速崛起以及软件栈的复杂性日益增加, AI 应用程序受到攻击的风险大大增加。 二十年前,大多数应用程序都运行在商业操作系统(如 Windows 或 SunOS )之上,位于企业防火墙后部署的单个服务器上。今天,各企业公司可能在公共云上的分布式服务器上运行 AI 应用程序,这些租用的服务器是他们无法控制的,很可能与其竞争对手共享的一个复杂的软件栈,操作系统本身运行在虚拟机管理程序之上或在容器内。而且这些应用程序直接或间接地共享着其他系统,如日志摄取系统,存储系统和数据处理框架。如果这些软件组件中的任何一个受到危害, AI 应用程序本身可能会受到影响。 处理这些攻击的一般方法是提供一个“安全飞地”抽象,就是一个安全的硬件执行环境,它保护飞地内运行的应用程序免受在飞地外运行的恶意代码的影响。最近的例子是英特尔的软件防护扩展( SGX ) ,它提供了一个硬件隔离的执行环境。 SGX 内部的代码可以根据输入数据进行计算,即使是受损的操作系统或管理程序(在飞地之外运行)也无法看到这些代码或数据。 SGX 还提供了远程认证 ,一个协议使远程客户端能够验证该飞地是否正在运行预期的代码。 ARM 的 TrustZone 是另一个硬件飞地的例子。另一方面,云服务提供商开始提供物理保护的特殊裸机实例,它们部署在安全的“保险柜”中,只有授权人员通过指纹或虹膜扫描进行身份验证才有权访问。 一般来说,使用任何飞地技术,应用程序开发人员必须信任飞地内运行的所有软件。而事实上,即使在硬件飞地里,如果在飞地内运行的代码受到入侵,也可能泄露解密的数据或影响决策。 由于小型代码库通常更容易保护,所以一个研究的方向是将 AI 系统的代码拆分成在飞地内运行的代码,并且让其尽可能少,然后在不可信环境下通过利用密码技术运行另一部分代码。另一种确保飞地内的代码不会泄露敏感信息的方法是开发静态和动态验证工具以及沙盒方法( sandboxing ) 。 请注意,除了最小化可信计算区域之外,分割应用程序代码还有两个额外好处:增加功能性和降低成本。首先,某些功能可能在飞地内不可用,例如用于运行深度学习( DL )算法的 GPU 处理,或未经审查 / 移植以在安全飞地内运行的服务和应用程序。其次,由云提供商提供的安全实例可能比常规实例贵得多。 研究内容 :建立利用安全飞地的 AI 系统,以确保数据的保密性、用户隐私和决策正确性,将 AI 系统的代码拆分为在飞地内运行的最小代码库和在飞地外运行的代码,保证该飞地不泄露信息和不损害决策的正确性。 研究课题 5 :对抗学习( Adversariallearning ) 。机器学习算法的自适应特性使学习系统面临新型的攻击,比如通过恶意地改变训练数据或决策输入来影响决策的正确性。有两种广泛的攻击类型:闪避攻击( evasion attacks )和药饵攻击( data poisoning attacks )。 闪避攻击发生在推理阶段,攻击者试图制作被学习系统错误分类的数据 。比如略微改变一个停车标志的形象,虽然人类仍然认为它是一个停车标志,但自动驾驶汽车可能视为一个避让标志。 药饵攻击发生在训练阶段,对手将药饵数据(例如,具有错误标签的数据)注入训练数据集中,导致学习系统学习错误的模型,从而使攻击者具有了导致学习器错误分类的输入数据 。如果用于再训练的弱标记数据是从不可信或不可靠的来源收集的,定期进行再训练的学习系统特别容易受到这种攻击。 随着新的 AI 系统不断地与动态环境交互来学习,处理药饵攻击变得越来越重要。 现在还没有什么有效的解决方案来防范闪避攻击,所以有一些研究挑战:解释为什么对抗攻击往往容易发现,发现可以有效地防御攻击者的方法,评估防御措施的防御能力。对于药饵攻击,研究挑战包括如何检测药饵输入数据,以及如何建立适应不同类型药饵攻击的学习系统。另外,因为数据来源被认定为具有欺诈性或因监管原因被明确撤回的数据源,我们可以利用重现技术(参见研究课题 3 :可解读的决策)和增量计算来有效地消除这些来源对学习模型的影响。正如前面所指出的,这种能力是通过在数据存储系统中将建模与数据来源和有效计算结合起来实现的。 研究内容: 构建具有对抗学习能力的 AI 系统,在训练和预测期间,通过设计新的机器学习模型和网络体系结构追踪欺诈数据源,在去掉欺诈数据源后重现或重做计算以获取新的正确的决策。 研究课题 6 :在保密数据上的共享学习( Sharedlearning on confidential data ) 。如今,每家公司通常都会收集数据,分析数据,并使用这些数据来实现新的功能和产品。然而,并不是所有的企业都拥有像 Google , Facebook ,微软和亚马逊这样的大型 AI 公司所拥有的大量数据。展望未来,我们期待越来越多的公司会收集有价值的数据,会出现更多的第三方数据服务公司,并从多个公司组织的数据中获取更多的好处(参见第 3 节)。 事实上,根据我们与工业界的合作经历,我们发现这种情况越来越多。一家大银行为我们提供了一个场景,他们和其他银行希望将他们的数据汇集在一起,并使用共享的学习来改进他们的合作欺诈检测算法。虽然这些银行在金融服务方面是竞争对手,但这种“合作”对于减少由于欺诈活动而造成的损失对他们来说至关重要。另外,一个非常大的医疗保健提供商描述了一个类似的情景,其中有竞争关系的多家医院希望共享数据来训练一个预测流感暴发的共享模型,但是分享的数据不能用作其他目的。这将使他们能够提高对流行病的反应速度并控制疾病暴发,在关键地点迅速部署流动疫苗接种车。同时,每家医院都要保护自己医院数据中病人的隐私信息。 共享学习的关键挑战是如何利用属于不同(可能是竞争关系的)组织的数据学习模型,但同时不会在训练过程中泄漏这些数据的隐私信息。一种可能的解决方案是将所有数据集中在硬件飞地上学习这个模型,但是因为硬件飞地还没有被广泛部署,在某些情况下,由于监管约束或者数据量太大,数据无法复制到硬件飞地上。 另一个比较有前途的方法是使用安全多方计算( MPC ) 。 MPC 允许 n 方(每方都有私人输入)计算输入的联合功能,而没有任何一方知道其他方的输入。但是,虽然 MPC 对于简单的计算是有效的,但是对于复杂的计算,比如模型训练来说,它有一个非常大的开销。一个有趣的研究方向是研究如何将模型训练分成( 1 )局部计算和( 2 ) MPC 计算,这样我们就可以最小化 MPC 的计算复杂度。 虽然在不影响数据保密的情况下训练模型是实现共享学习的重要一步,但是还有其他问题。模型服务,即基于模型的推断,仍然可能泄露数据的隐私信息 。应对这一挑战的一个方法是使用差分隐私( differential privacy )技术 ,这是一种在统计数据库中的流行技术。差分隐私为每个查询增加了噪声,以保护数据隐私 。差分隐私的一个核心概念是隐私预算( privacy budgets ),该隐私预算限制了提供隐私保证的查询数量。 在将差分隐私应用于模型服务时,有三个有趣的研究方向:首先,利用模型和预测的固有统计特性,应用差分隐私处理复杂模型和推理;其次,尽管理论研究很多,但目前实际应用的差异性隐私系统很少,一个重要的研究方向是构建工具和系统,以便为实际的应用程序提供差分隐私的保护能力,包括智能地选择哪个隐私机制用于给定的应用程序,并自动将非差分隐私计算转换为差分隐私计算;最后,在持续学习中数据隐私是时间相关的,即新数据的隐私远比旧数据的隐私更重要。例如股票市场和在线投标,新数据的隐私是最重要的,而历史数据是不重要的甚至有时是公开的,可以开发具有自适应隐私预算的差分隐私系统,只为最新的数据的进行差分隐私保护,另一个研究方向是在数据公开后进一步发展差分隐私 。 即使我们能够在训练和决策过程中保护数据隐私,但是这还不够。事实上,即使数据隐私得到保证,组织和公司也可能拒绝分享其数据,因为这些数据可能改进竞争对手的服务质量。因此,我们需要研究激励机制以鼓励组织和公司共享其数据或其数据的副产品。具体而言,我们需要制定一些方法,让这些组织相信通过共享数据可以得到比不共享数据更好的服务(即更好的决策)。这就要求确定某个组织提供的数据的质量,这个问题可以通过排除法来解决,不论组织的数据是否包含在训练集中,都可以比较其性能,然后提供与组织提供的数据质量成反比的噪声来破坏决策,这可以激励组织提供更高质量的数据。总体而言,这种激励机制需要置于机制设计的框架内,以便组织机构制定个人数据共享策略。 研究内容 :构建具有如下两个功能的人工智能系统( 1 )可以跨多个数据源进行学习,而不会在训练或决策期间泄漏数据的隐私信息;( 2 )提供激励策略,以促使潜在竞争组织共享其数据。 4.3 AI 定制的体系结构( AI-speci!carchitectures ) 对 AI 的需求将会带来系统和硬件架构的双重革新。这些新式架构既可以提升性能,同时也会通过提供易于组合的丰富的模块化库来简化下一代 AI 应用的开发。 研究课题 7 :特定领域定制的硬件( Domainspecific hardware )。 处理和存储巨量的数据的能力是 AI 成功的关键因素之一(见 2.1 节),但是维持这种处理存储能力增长的速度将会越来越具有挑战性。正如第 3 部分所说,数据持续仍然呈指数级地增长,但 40 多年来支撑计算机工业发展的性能、成本、能耗方面的改进速度将放缓: l 摩尔定律的终结导致晶体管不会变得太小, l 登纳德缩放定律( Dennardscaling )的失效使得电能限制了芯片的承载规模, l 我们已经从一个低效的处理器 / 芯片过渡到了一个芯片装载多个高效处理器,但是阿姆达尔定律( Amdahl’s Law )说明了并行处理的极限 . 设计专用领域的处理器是保持处理器消耗能源带来性能上提升的方法之一。这些处理器只会做少量的特定任务但是会将它们做到极致。因此摩尔定律下的处理器性能的快速提升一定是基于计算机架构的革新而不是半导体工艺的改进。未来的服务将会涉及到比过去更加多元化的处理器。一个具有开拓性的专用领域处理器的例子就是谷歌的张量处理单元( Tensor Processing Unit, TPU ),它在 2015 被部署在谷歌的数据中心并由数十亿人使用。相较于同期的 CPU 和 GPU ,它将深度神经网络的前馈阶段的执行速度提升了 15 到 30 倍,而且每瓦特的性能也提升了 30 到 80 倍。此外,微软已宣布在他的 Azure 云平台上部署了 FPGA 。一系列的包括英特尔、 IBM 以及一些例如 Cerebras 和 Graphcore 这种初创公司在内的公司都在开发针对 AI 的特殊硬件,这会保持超越当前主流处理器的巨大性能提升的规律 。 考虑到 DRAM 也显露出了同样的极限,人们正在开发一些新奇的技术成为它的继任者。来自英特尔和镁光的 3D XPoint 旨在保持类 DRAM 访存性能的基础上提供 10 倍的存储能力。 STTMRAM 想要发展有类似于 DRAM 的扩展限制的闪存技术。因此云端可能会有更多级的存储和记忆能力,包含更广泛的技术。有了这些越来越多样化的处理、记忆和存储的设备之后,如何让服务匹配到硬件资源便成为一个挑战性更大的难题。相比于包括一个机柜顶部交换机和数十台服务器每个配备两个 CPU 、 1TB 的 DRAM 和 4TB 的闪存的经典标准机架设计,这些快速的变化要求我们建设更加灵活的云计算平台。 例如, UCBerkeley Firebox 项目 提出了一种多机架的超级计算机,它可以通过光纤将数以千计的处理器芯片与 DRAM 芯片和非易失性的存储介质链接起来,提供低延时、高带宽和长距离的传输能力。像这样的硬件系统可以支撑系统软件基于恰当比例和类型的专用领域的处理器、 DRAM 和 NVRAM 来提供计算服务。这种大规模分离式的资源可以极大提升愈加多样化的任务到与之匹配的多样化资源的分配。这对 AI 的工作负载十分有价值,它可以从大规模存储中获得显著的性能提升,并且适合应对多样化的资源需求。 除了性能提升之外,新的硬件架构也会带来其他额外功能,例如对安全的支持。尽管英特尔的 SGX 和 ARM 的 TrustZone 正在涉足硬件安全环境,但在它们可以完全应用于 AI 应用之前还有很多工作要做。特别是现存的安全环境显示出包括定址存储在内的多种资源极限,它们仅是服务于一般目的的 CPU 。打破这种限制,提供这些包括 GPU 和 TPU 在内的专用处理器之上的通用硬件抽象便是未来的研究方向。此外,像 RISC-V 的开放指令集处理器代表着一种令人激动的开发新安全特性的大环境趋势。 研究内容: ( 1 )设计专用领域的硬件架构来以数量级为单位提升性能降低 AI 应用消耗的能源,或者加强这些应用的安全性。( 2 )设计 AI 软件系统,利用这些专用领域的架构、资源分离式的结构和未来的非易失性存储技术。 研究课题 8 :组件化的 AI 系统( Composable AI systems ) 。模块化和组件化技术在软件系统快速更新中扮演着重要的角色,他们使开发人员能够基于现有组件快速构建产生新的系统。这样的例子包括微内核操作系统, LAMP 栈,微服务架构和网络。与此相反的是,现有的 AI 系统则是一整块的,这便导致系统很难开发测试和更新。 与此类似,模块化和组件化将会成为提升 AI 系统开发速度和应用度的关键,这会使在复杂系统中集成 AI 更加地容易。接下来,我们探讨几个关于模型和动作组合的研究问题。 模型组合( modelcomposition )对于开发更加复杂强大的 AI 系统至关重要。在一个模型服务系统中组合多种模型并以不同模式应用它们可以取得决策精度、延迟和吞吐量之间的折中效果。例如,我们可以序列化的查询模型,每一个模型可以反馈一个高准确度的决策或者说“我不知道”,然后决策会被传递到下一个模型。按照从最高到最低的“我不知道”比率和从最低到最高的延迟度来对模型加以排序,我们就可以同时优化延迟度和精确度了。 要想充分应用模型组合,仍然有很多难题亟待解决。例如( 1 )需要设计一种声明式语言( declarative language )来描述这些组件之间的拓扑结构和应用的性能目标,( 2 )为每个组件提供包括资源需求量、延时和产能在内的精确的性能模型,( 3 )通过调度和优化算法来计算出这些组件执行的计划,以及以最低消耗将组件匹配到相应的资源上来满足延时和吞吐量要求。 动作组合( actioncomposition )是将基本的决策 / 动作序列组织成低级原语,也称为选项( options )。例如对于无人驾驶汽车,某一个选项可以是当在高速公路上行驶时变更车道,执行的动作包括了加速减速,左右转向,打开转向灯等。对于机器人,某一个原语可以是抓取物体,执行的工作包括转动机器人的关节。选项已经在层级学习中被广泛的研究 ,它可以通过让代理选择一系列既存的选项来完成给定的任务而不是从更长的低级动作列表中选择,以此来极大地加速对新环境的学习或适应性。 丰富的选项库会使得新 AI 应用的开发就像当前的 web 开发人员通过调用强大的 web 接口以几行代码开发出应用一样,通过简单的组合恰当的选项来实现。另外,选项可以提升响应能力,因为基于选项来选择下一个动作要比在原始动作空间中选择一个动作简单得多。 研究内容: 设计 AI 系统和接口,使得模型和动作以一种模块化和灵活的方式进行组合,同时应用这些接口来开发丰富的模型和选项库以此极大简化 AI 应用的开发。 研究课题 9 :跨云端和边缘的系统( Cloud-edgesystems ) 。当今很多 AI 应用例如语音识别、自然语言翻译是部署在云上的。接下来我们预计跨边缘设备和云端的 AI 系统将快速增加。一方面,将当前仅在云上部署的 AI 系统例如用户推荐系统,迁移他们的部分功能到边缘设备上,这样可以提高安全性、保护隐私和降低时延(包括解决无法连接网络的问题)。另一方面,当前部署在边缘设备上的 AI 系统例如自动驾驶汽车、无人机和家用机器人都需要与云端共享数据且利用云端的计算资源来更新模型和策略 。 然而由于多种原因,要开发跨云和边缘的系统富有挑战。首先,边缘设备和云端数据中心服务器之间的计算能力相差很大。未来这种差距会更大,因为包括智能手机和输入板在内的边缘设备相较于数据中心的服务器有严格的电量和体积大小的极限。第二,各边缘设备之间在计算资源和能力上存在异构性,从低级的 ARM 或支持物联网设备的 RISC-V CPU 到自动驾驶汽车和软件平台的高性能 GPU 。这种异构性导致应用开发的难度加大。第三,边缘设备的硬件和软件更新周期要远远慢于数据中心。第四,随着存储能力提升速度的放缓而数据产生速度的持续加快,再去存储这些海量数据可能不再可行或者变得低效。 有两种方法可以解决云和边缘设备的融合。一个是通过多目标软件设计和编译技术将代码重定义到多样化的平台上面。为了解决边缘设备多样化的情况和升级运行在这些设备上的应用的困难,我们需要定义新的软件栈来抽象多种设备,将硬件能力以通用 API 的形式暴露给应用。另一个可能的方向是开发编译器和及时编译技术从而有效的编译正在运行的复杂算法,使它们能够在边缘设备上运行。这可以使用近期的代码生成工具,例如 TensorFlow 和 XLA 、 Halide 和 Weld 。 第二个通用方法是设计适应于在云和边缘云上分割执行的 AI 系统。例如,模型组合(见 4.3 )可以是在边缘设备上运行轻量级低精度的模型而在云上运行计算密集型高精度的模型。这种架构可以在不损失精确度的情况下降低延时,而且已经在最近的视频推荐系统中被采用 。再比如,动作组合可以是将对层级选项的学习放在云端,而这些选项的执行放在边缘设备上。 机器人是另一个可以利用边缘云架构的领域。当前很是缺乏机器人应用的开源平台。作为当今广泛使用的这种平台的 ROS 被限制只在本地运行而且缺少实时应用所需要的性能优化。为了利用 AI 研究的新成果,例如共享学习和持续学习,我们需要跨云和边缘云的系统,他可以允许开发者在机器人和云之间无缝地迁移功能,从而优化决策延时和学习收敛。云平台可以通过利用来自实时分布式的机器人收集到的信息运行复杂算法持续更新模型,而机器人可以基于之前下载的模型策略在本地持续地执行动作。 为了解决从边缘设备收集到的大量数据,可以采用适应于学习的压缩方法来减少处理开销,例如通过采样( sampling )和梗概( sketching ),这些方法都已经成功的应用在分析工作负载的任务上了 。一个研究方向就是以系统化的方式利用采样和梗概的方法来支持多种学习算法和预测任务。一个更大的挑战是减小存储消耗,这可能需要删除数据。关键是我们不知道未来数据会如何被使用。这是一个压缩问题,而且是针对于机器学习算法的压缩。此外,基于采样和梗概的分布式方法可以帮助解决该问题,就像机器学习方法在特征选择或模型选择策略上的应用一样。 研究方向 :设计跨云端和边缘的 AI 系统,( 1 )利用边缘设备减小延时、提升安全性并实现智能化的数据记忆技术,( 2 )利用云平台来共享各边缘设备的数据和模型,训练复杂的计算密集型的模型和采取高质量的决策。 5. 结论 人工智能在过去十年中取得的惊人进展,使其从研究实验室的研究项目成功转化为目前可以取代大量人力的商业应用核心技术。 人工智能系统和机器人不但取代了部分人类工作者,而且有挖掘人类潜力和促进新形式合作的作用 。 若想使人工智能更好地服务我们,要克服许多艰巨的挑战,其中许多挑战与系统和基础设施有关。人工智能系统需要做出更快、更安全和更易于解读的决策,确保这些决策在针对多种攻击类型的学习过程中得到准确的结果,在摩尔定律终结的前提下不断提高计算能力,以及构建易于整合到现有应用程序中的可组合系统,并且具有跨越云端和边缘的处理能力。 本文总结了几个系统、体系结构和安全方面的研究课题,我们希望这些问题能够启发新的研究来推动人工智能的发展,使其计算能力更强,具有可解释性、安全性和可靠性。 参考文献: A History of Storage Cost. 2017.http://www.mkomo.com/ cost-per-gigabyte-update. (2017). Martin Abadi, Ashish Agarwal, PaulBarham, Eugene Brevdo, Zhifeng Chen, Craig Citro, Greg S Corrado, Andy Davis,Jerey Dean, and Matthieu Devin. 2015. TensorFlow: Large-scale machinelearning on heterogeneous systems. (2015). Mike Accetta, Robert Baron, WilliamBolosky, David Golub, Richard Rashid, Avadis Tevanian, and Michael Young. 1986.Mach: A New Kernel Foundation for UNIX Development. 93–112. Sameer Agarwal et al. 2013. BlinkDB:queries with bounded errors and bounded response times on very large data. InEuroSys. Ittai Anati, Shay Gueron, SimonJohnson, and Vincent Scarlata. 2013. Innovative technology for CPU basedattestation and sealing. In Proceedings of the 2nd international workshop onhardware and architectural support for security and privacy, Vol. 13. Ittai Anati, Shay Gueron, Simon PJohnson, and Vincent R Scarlata. 2013. Innovative Technology for CPU BasedAttestation and Sealing. (2013). Apache Hadoop. 2017.http://hadoop.apache.org/. (2017). Apache Mahout. 2017.http://mahout.apache.org/. (2017). Sergei Arnautov, Bohdan Trach, FranzGregor, Thomas Knauth, Andre Martin, Christian Priebe, Joshua Lind, DivyaMuthukumaran, Daniel OaĂŹKeee, Mark L Stillwell, et al. 2016. SCONE:Secure linux containers with Intel SGX. In 12th USENIX Symp. Operating SystemsDesign and Implementation. Peter Bailis, Edward Gan, SamuelMadden, Deepak Narayanan, Kexin Rong, and Sahaana Suri. 2017. MacroBase:Prioritizing Attention in Fast Data. In Proceedings of the 2017 ACMInternational Conference on Management of Data (SIGMOD ’17). ACM, New York, NY,USA, 541–556. Luiz Andre Barroso and Urs Hoelzle.2009. The Datacenter As a Computer: An Introduction to the Design ofWarehouse-Scale Machines. Morgan and Claypool. Andrew Baumann, Marcus Peinado, andGalen Hunt. 2015. Shielding applications from an untrusted cloud with haven.ACM Transactions on Computer Systems (TOCS) 33, 3 (2015), 8. Michael Ben-Or, Sha! Goldwasser, andAvi Wigderson. 1988. Completeness theorems for non-cryptographic fault-tolerantdistributed computation. In Proceedings of the 20th ACM symposium on Theory ofComputing. James Bergstra, Olivier Breuleux, FrédéricBastien, Pascal Lamblin, Razvan Pascanu, Guillaume Desjardins, Joseph Turian,David Warde-Farley, and Yoshua Bengio. 2010. Theano: a CPU and GPU mathexpression compiler. In Proceedings of the Python for scientic computingconference (SciPy), Vol. 4. Austin, TX, 3. bigdl. BigDL: Distributed DeepLearning on Apache Spark. https://software.intel.com/en-us/articles/bigdl-distributed-deep-learning-on-apache-spark. (????). Tay (bot). 2017.https://en.wikipedia.org/wiki/Tay_(bot). (2017). Léon Bottou. 1998. On-line Learning inNeural Networks. (1998), 9–42. Léon Bottou. 2010. Large-scale machinelearning with stochastic gradient descent. In Proceedings of COMPSTAT’2010.Springer, 177–186. Cerebras. 2017.https://www.cerebras.net/. (2017). Chainer. 2017. https://chainer.org/.(2017). T.-H. Hubert Chan, Elaine Shi, andDawn Song. 2010. Private and Continual Release of Statistics. In ICALP (2),Vol. 6199. Springer. Tianqi Chen, Mu Li, Yutian Li, MinLin, Naiyan Wang, Minjie Wang, Tianjun Xiao, Bing Xu, Chiyuan Zhang, and ZhengZhang. 2015. MXNet: A Flexible and E#cient Machine Learning Library forHeterogeneous Distributed Systems. arXiv preprint arXiv:1512.01274 (2015). Tianqi Chen, Mu Li, Yutian Li, MinLin, Naiyan Wang, Minjie Wang, Tianjun Xiao, Bing Xu, Chiyuan Zhang, and ZhengZhang. 2015. MXNet: A Flexible and E#cient Machine Learning Library forHeterogeneous Distributed Systems. CoRR abs/1512.01274 (2015). Travers Ching, Daniel S Himmelstein,Brett K Beaulieu-Jones, Alexandr A Kalinin, Brian T Do, Gregory P Way, EnricoFerrero, Paul-Michael Agapow, Wei Xie, Gail L Rosen, et al. 2017. OpportunitiesAnd Obstacles For Deep Learning In Biology And Medicine. bioRxiv (2017),142760. cisco. 2015. Cisco Global Cloud Index:Forecast and Methodology, 2015- 2020.http://www.cisco.com/c/dam/en/us/solutions/collateral/service-provider/global-cloud-index-gci/white-paper-c11-738085.pdf. (2015). D. Clark. 1988. The Design Philosophyof the DARPA Internet Protocols. SIGCOMM Comput. Commun. Rev. 18, 4 (Aug.1988), 106–114. CMS updates rule allowing claims datato be sold. 2016. http://www.modernhealthcare.com/article/20160701/NEWS/160709998. (2016). Graham Cormode, Minos Garofalakis,Peter J Haas, and Chris Jermaine. 2012. Synopses for massive data: Samples,histograms, wavelets, sketches. Foundations and Trends in Databases 4, 1–3(2012), 1–294. Daniel Crankshaw, Xin Wang, GiulioZhou, Michael J. Franklin, Joseph E. Gonzalez, and Ion Stoica. 2017. Clipper: ALow-Latency Online Prediction Serving System. NSDI ’17 (2017). Peter Dayan and Georey E.Hinton. 1992. Feudal Reinforcement Learning. In Advances in Neural InformationProcessing Systems 5, . 271–278. http://papers.nips.cc/paper/714-feudal-reinforcement-learning Jerey Dean, Greg Corrado, RajatMonga, Kai Chen, Matthieu Devin, Mark Mao, Marcaurelio Ranzato, Andrew Senior,Paul Tucker, Ke Yang, Quoc Le, and Andrew Y. Ng. 2012. Large Scale DistributedDeep Networks. In NIPS ’12. http://papers.nips.cc/paper/4687-large-scale-distributed-deep-networks.pdf Jerey Dean and Sanjay Ghemawat.2004. MapReduce: Simpli!ed Data Processing on Large Clusters. In Proceedings ofthe 6th Conference on Symposium on Opearting Systems Design Implementation - Volume 6 (OSDI’04). DeepMind AI Reduces Google Data CentreCooling Bill by 40%. 2017. https://deepmind.com/blog/deepmind-ai-reduces-google-data-centre-cooling-bill-40/.(2017). Thomas G. Dietterich. 1998. The MAXQMethod for Hierarchical Reinforcement Learning. In Proceedings of the FifteenthInternational Conference on Machine Learning (ICML 1998), Madison, Wisconsin,USA, July 24-27, 1998. 118–126. John Duchi, Michael Jordan, and MartinWainwright. to appear. Minimax optimal procedures for locally private estimation.J. Amer. Statist. Assoc. (to appear). Cynthia Dwork. 2006. DierentialPrivacy. In ICALP (2), Vol. 4052. Springer. Cynthia Dwork. 2008. Dierentialprivacy: A survey of results. In International Conference on Theory andApplications of Models of Computation. Cynthia Dwork, Moni Naor, ToniannPitassi, and Guy N Rothblum. 2010. Differential privacy under continualobservation. In Proceedings of the 42nd ACM symposium on Theory of computing. Cynthia Dwork and Aaron Roth. 2014. Thealgorithmic foundations of dierential privacy. Foundations and Trends inTheoretical Computer Science 9 (2014). The Economist. 2017. The world’s mostvaluable resource is no longer oil, but data. (May 2017). FireBox. 2017. https://bar.eecs.berkeley.edu/projects/2015-!rebox.html.(2017). Matt Fredrikson, Somesh Jha, andThomas Ristenpart. 2015. Model inversion attacks that exploit con!denceinformation and basic countermeasures. In Proceedings of the 22nd ACM SIGSACConference on Computer and Communications Security. ACM, 1322–1333. Sanjay Ghemawat, Howard Gobio,and Shun-Tak Leung. 2003. The Google File System. In Proceedings of theNineteenth ACM Symposium on Operating Systems Principles (SOSP ’03). 29–43. Ken Goldberg. 2017. Op-Ed: Call itMultiplicity: Diverse Groups of People and Machines Working Together. WallStreet Journal (2017). Oded Goldreich, Silvio Micali, and AviWigderson. 1987. How to play any mental game. In Proceedings of the 19th ACMsymposium on Theory of computing. Joseph E. Gonzalez, Yucheng Low,Haijie Gu, Danny Bickson, and Carlos Guestrin. 2012. PowerGraph: DistributedGraph-parallel Computation on Natural Graphs (OSDI’12). 17–30. Ian J Goodfellow, Jonathon Shlens, andChristian Szegedy. 2014. Explaining and harnessing adversarial examples. arXivpreprint arXiv:1412.6572 (2014). Graohcore. 2017.https://www.graphcore.ai/. (2017). Alon Halevy, Peter Norvig, , andFernando Pereira. 2009. The Unreasonable Eectiveness of Data. IEEEIntelligent Systems 24, 2 (2009), 8–12. Halide: A Language for ImageProcessing and Computational Photography. 2017. http://halide-lang.org/.(2017). Joseph M. Hellerstein, Peter J. Haas,and Helen J. Wang. 1997. Online Aggregation. In Proceedings of the 1997 ACMSIGMOD International Conference on Management of Data (SIGMOD ’97). ACM, NewYork, NY, USA, 171–182. https://doi.org/10.1145/253260.253291 Joseph M. Hellerstein, Christoper Ré,Florian Schoppmann, Daisy Zhe Wang, Eugene Fratkin, Aleksander Gorajek, KeeSiong Ng, Caleb Welton, Xixuan Feng, Kun Li, and Arun Kumar. 2012. The MADlibAnalytics Library: Or MAD Skills, the SQL. Proc. VLDB Endow. 5, 12 (Aug. 2012),1700–1711. John L. Hennessy and David A.Patterson. to appear. Computer Architecture, Sixth Edition: A QuantitativeApproach. (to appear). Intel Nervana. 2017.https://www.intelnervana.com/intel-nervana-hardware/. (2017). Michael Isard, Mihai Budiu, Yuan Yu,Andrew Birrell, and Dennis Fetterly. 2007. Dryad: Distributed Data-parallelPrograms from Sequential Building Blocks. In Proceedings of the 2nd ACMSIGOPS/EuroSys European Conference on Computer Systems 2007 (EuroSys ’07).59–72. Martin Jaggi, Virginia Smith, MartinTakac, Jonathan Terhorst, Sanjay Krishnan, Thomas Homann, and Michael I.Jordan. 2015. Communication-E#cient Distributed Dual Coordinate Ascent. InNIPS, 27. Yangqing Jia, Evan Shelhamer, JeDonahue, Sergey Karayev, Jonathan Long, Ross Girshick, Sergio Guadarrama, andTrevor Darrell. 2014. Cae: Convolutional architecture for fast featureembedding. In Proceedings of the ACM International Conference on Multimedia.ACM, 675–678. Norman P. Jouppi, Cli Young,Nishant Patil, David Patterson, Gaurav Agrawal, Raminder Bajwa, Sarah Bates,Suresh Bhatia, Nan Boden, Al Borchers, Rick Boyle, Pierre-luc Cantin,Cliord Chao, Chris Clark, Jeremy Coriell, Mike Daley, Matt Dau,Jerey Dean, Ben Gelb, Tara Vazir Ghaemmaghami, Rajendra Gottipati,William Gulland, Robert Hagmann, C. Richard Ho, Doug Hogberg, John Hu, RobertHundt, Dan Hurt, Julian Ibarz, Aaron Jaey, Alek Jaworski, AlexanderKaplan, Harshit Khaitan, Daniel Killebrew, Andy Koch, Naveen Kumar, Steve Lacy,James Laudon, James Law, Diemthu Le, Chris Leary, Zhuyuan Liu, Kyle Lucke, AlanLundin, Gordon MacKean, Adriana Maggiore, Maire Mahony, Kieran Miller, RahulNagarajan, Ravi Narayanaswami, Ray Ni, Kathy Nix, Thomas Norrie, Mark Omernick,Narayana Penukonda, Andy Phelps, Jonathan Ross, Matt Ross, Amir Salek, EmadSamadiani, Chris Severn, Gregory Sizikov, Matthew Snelham, Jed Souter, DanSteinberg, Andy Swing, Mercedes Tan, Gregory Thorson, Bo Tian, Horia Toma,Erick Tuttle, Vijay Vasudevan, Richard Walter, Walter Wang, Eric Wilcox, andDoe Hyun Yoon. 2017. In-Datacenter Performance Analysis of a Tensor ProcessingUnit. In Proceedings of the 44th Annual International Symposium on ComputerArchitecture (ISCA ’17). ACM, New York, NY, USA, 1–12. https://doi.org/10.1145/3079856.3080246 Daniel Kang, John Emmons, FirasAbuzaid, Peter Bailis, and Matei Zaharia. 2017. Optimizing Deep CNN-BasedQueries over Video Streams at Scale. CoRR abs/1703.02529 (2017). Asterios Katsifodimos and SebastianSchelter. 2016. Apache Flink: Stream Analytics at Scale. Ben Kehoe, Sachin Patil, PieterAbbeel, and Ken Goldberg. 2015. A Survey of Research on Cloud Robotics andAutomation. IEEE Trans. Automation Science and Eng. 12, 2 (2015). Diederik P. Kingma and Jimmy Ba. 2014.Adam: A Method for Stochastic Optimization. CoRR abs/1412.6980 (2014). http://arxiv.org/abs/1412.6980 Sanjay Krishnan, Roy Fox, Ion Stoica,and Ken Goldberg. 2017. DDCO: Discovery of Deep Continuous Options for RobotLearning from Demonstrations. In 1st Conference on Robot Learning (CoRL). LAMP (software bundle). 2017.https://en.wikipedia.org/wiki/LAMP_(software_ bundle). (2017). Leo Leung. 2015. How much data does xstore? (March 2015). https://techexpectations.org/tag/how-much-data-does-youtube-store/ Sergey Levine, Chelsea Finn, TrevorDarrell, and Pieter Abbeel. 2016. End-to-end Training of Deep VisuomotorPolicies. J. Mach. Learn. Res. 17, 1 (Jan. 2016), 1334–1373. http://dl.acm.org/citation.cfm?id=2946645.2946684 Mu Li, David G. Andersen, Jun WooPark, Alexander J. Smola, Amr Ahmed, Vanja Josifovski, James Long, Eugene J.Shekita, and Bor-Yiing Su. 2014. Scaling Distributed Machine Learning with theParameter Server. In OSDI ’14. 583–598. J. Liedtke. 1995. On Micro-kernelConstruction. In Proceedings of the Fifteenth ACM Symposium on OperatingSystems Principles (SOSP ’95). ACM, New York, NY, USA, 237–250. https://doi.org/10.1145/224056.224075 M. W. Mahoney and P. Drineas. 2009.CUR Matrix Decompositions for Improved Data Analysis. Proc. Natl. Acad. Sci.USA 106 (2009), 697–702. Dahlia Malkhi, Noam Nisan, BennyPinkas, Yaron Sella, et al. 2004. FairplaySecure Two-Party Computation System..In USENIX Security Symposium, Vol. 4. San Diego, CA, USA. Michael Mccloskey and Neil J. Cohen.1989. Catastrophic Interference in Connectionist Networks: The SequentialLearning Problem. The Psychology of Learning and Motivation 24 (1989), 104–169. H. Brendan McMahan, Eider Moore,Daniel Ramage, Seth Hampson, and Blaise Aguera y Arcas. 2016. Communication-E#cientLearning of Deep Networks from Decentralized Data. In Proceedings of the 20thInternational Conference on Articial Intelligence and Statistics(AISTATS). http://arxiv.org/abs/1602.05629 Shike Mei and Xiaojin Zhu. 2015. TheSecurity of Latent Dirichlet Allocation.. In AISTATS. Shike Mei and Xiaojin Zhu. 2015. UsingMachine Teaching to Identify Optimal Training-Set Attacks on Machine Learners..In AAAI. 2871–2877. Xiangrui Meng, Joseph Bradley, BurakYavuz, Evan Sparks, Shivaram Venkataraman, Davies Liu, Jeremy Freeman, DB Tsai,Manish Amde, Sean Owen, Doris Xin, Reynold Xin, Michael J. Franklin, RezaZadeh, Matei Zaharia, and Ameet Talwalkar. 2016. MLlib: Machine Learning inApache Spark. Journal of Machine Learning Research 17, 34 (2016), 1–7. http://jmlr.org/papers/v17/15-237.html Tom M Mitchell, William W Cohen,Estevam R Hruschka Jr, Partha Pratim Talukdar, Justin Betteridge, AndrewCarlson, Bhavana Dalvi Mishra, Matthew Gardner, Bryan Kisiel, JayantKrishnamurthy, et al. 2015. Never Ending Learning.. In AAAI. 2302–2310. Volodymyr Mnih, Koray Kavukcuoglu,David Silver, Andrei A. Rusu, Joel Veness, Marc G. Bellemare, Alex Graves,Martin Riedmiller, Andreas K. Fidjeland, Georg Ostrovski, Stig Petersen,Charles Beattie, Amir Sadik, Ioannis Antonoglou, Helen King, Dharshan Kumaran,Daan Wierstra, Shane Legg, and Demis Hassabis. 2015. Human-level controlthrough deep reinforcement learning. Nature 518, 7540 (26 02 2015), 529–533. http://dx.doi.org/10.1038/nature14236 Dharmendra Modha. 2016. The brainaĂŹsarchitecture, e#ciencyaĂę on a chip. (Dec. 2016).https://www.ibm.com/blogs/research/2016/12/the-brains-architecture-e#ciency-on-a-chip/ Derek G. Murray, Malte Schwarzkopf,Christopher Smowton, Steven Smith, Anil Madhavapeddy, and Steven Hand. 2011.CIEL: A Universal Execution Engine for Distributed Data-%ow Computing. InProceedings of the 8th USENIX Conference on Networked Systems Design andImplementation (NSDI’11). USENIX Association, Berkeley, CA, USA, 113–126. http://dl.acm.org/citation.cfm?id=1972457.1972470 Average Historic Price of RAM. 2017.http://www.statisticbrain.com/averagehistoric-price-of-ram/. (2017). Frank Olken and Doron Rotem. 1990.Random sampling from database !les: A survey. Statistical and ScienticDatabase Management (1990), 92–111. Open MPI: Open Source High PerformanceComputing. 2017. https://www. open-mpi.org/. (2017). Shoumik Palkar, James J. Thomas, AnilShanbhag, Deepak Narayanan, Holger Pirk, Malte Schwarzkopf, Saman Amarasinghe,and Matei Zaharia. 2017. Weld: A Common Runtime for High Performance DataAnalytics. In CIDR. Ronald Parr and Stuart J. Russell.1997. Reinforcement Learning with Hierarchies of Machines. In Advances inNeural Information Processing Systems 10, . 1043–1049. http://papers.nips.cc/paper/1384-reinforcement-learning-with-hierarchies-of-machines Pattern: Microservice Architecture.2017. http://microservices.io/patterns/ microservices.html. (2017). Jan Peters and Stefan Schaal. 2008.Reinforcement learning of motor skills with policy gradients. Neural networks21, 4 (2008), 682–697. Gil Press. 2016. Forrester PredictsInvestment In Arti!cial Intelligence Will Grow 300% in 2017. Forbes (November2016). Project Catapult. 2017.https://www.microsoft.com/en-us/research/project/ project-catapult/. (2017). PyTorch. 2017. http://pytorch.org/.(2017). Rajat Raina, Anand Madhavan, andAndrew Y. Ng. 2009. Large-scale Deep Unsupervised Learning Using GraphicsProcessors. In Proceedings of the 26th Annual International Conference onMachine Learning (ICML ’09). ACM, New York, NY, USA, 873–880. https://doi.org/10.1145/1553374.1553486 Benjamin Recht, Christopher Re,Stephen Wright, and Feng Niu. 2011. Hogwild: A Lock-Free Approach toParallelizing Stochastic Gradient Descent. In NIPS 24. John Schulman, Sergey Levine, PhilippMoritz, Michael I. Jordan, and Pieter Abbeel. 2015. Trust Region PolicyOptimization. In Proceedings of the 32nd International Conference on MachineLearning (ICML). Felix Schuster, Manuel Costa, CédricFournet, Christos Gkantsidis, Marcus Peinado, Gloria Mainar-Ruiz, and MarkRussinovich. 2015. VC3: Trustworthy data analytics in the cloud using SGX. InSecurity and Privacy (SP), 2015 IEEE Symposium on. IEEE, 38–54. Reza Shokri, Marco Stronati, and VitalyShmatikov. 2016. Membership inference attacks against machine learning models.arXiv preprint arXiv:1610.05820 (2016). David Silver, Aja Huang, Chris JMaddison, Arthur Guez, Laurent Sifre, George Van Den Driessche, JulianSchrittwieser, Ioannis Antonoglou, Veda Panneershelvam, Marc Lanctot, andothers. 2016. Mastering the game of Go with deep neural networks and treesearch. Nature 529, 7587 (2016), 484–489. Daniel L Silver, Qiang Yang, andLianghao Li. 2013. Lifelong Machine Learning Systems: Beyond LearningAlgorithms.. In AAAI Spring Symposium: Lifelong Machine Learning, Vol. 13. 05. Satinder P. Singh. 1992. ReinforcementLearning with a Hierarchy of Abstract Models. In Proceedings of the 10thNational Conference on Articial Intelligence. San Jose, CA, July 12-16,1992. 202–207. http://www.aaai.org/Library/AAAI/1992/ aaai92-032.php Evan R Sparks et al. 2013. MLI: An APIfor distributed machine learning. In ICDM. Stephane Ross. 2013. InteractiveLearning for Sequential Decisions and Predictions.https://en.wikipedia.org/wiki/LAMP_(software_bundle). (2013). Zachary D Stephens, Skylar Y Lee,Faraz Faghri, Roy H Campbell, Chengxiang Zhai, Miles J Efron, Ravishankar Iyer,Michael C Schatz, Saurabh Sinha, and Gene E Robinson. 2015. Big data:Astronomical or genomical? PLoS Biology 13, 7 (2015), e1002195. Richard S. Sutton. Integratedarchitectures for learning, planning, and reacting based on approximatingdynamic programming. In Proceedings of the Seventh International Conference onMachine Learning. Morgan Kaufmann. Richard S. Sutton, Doina Precup, andSatinder P. Singh. 1999. Between MDPs and Semi-MDPs: A Framework for TemporalAbstraction in Reinforcement Learning. Artif. Intell. 112, 1-2 (1999), 181–211.https://doi.org/10.1016/S0004-3702(99) 00052-1 Christian Szegedy, Wojciech Zaremba,Ilya Sutskever, Joan Bruna, Dumitru Erhan, Ian Goodfellow, and Rob Fergus.2013. Intriguing properties of neural networks. arXiv preprint arXiv:1312.6199(2013). Kai-Fu Tang, Hao-Cheng Kao, Chun-NanChou, and Edward Y. Chang. 2016. Inquire and Diagnose: Neural Symptom CheckingEnsemble using Deep Reinforcement Learning.http://infolab.stanford.edu/~echang/NIPS_DeepRL_2016_ Symptom_Checker.pdf.(2016). Russ Tedrake, Teresa Weirui Zhang,and H Sebastian Seung. 2005. Learning to walk in 20 minutes. In Proceedings ofthe Fourteenth Yale Workshop on Adaptive and Learning Systems, Vol. 95585. YaleUniversity New Haven (CT), 1939–1412. TensorFlow Serving. 2017.https://tensor%ow.github.io/serving/. (2017). TensorFlow XLA. 2017.https://www.tensor%ow.org/performance/xla/. (2017). Gerald Tesauro. 1995. Temporaldierence learning and TD-Gammon. Commun. ACM 38, 3 (1995), 58–68. Sebastian Thrun. 1998. Lifelonglearning algorithms. Learning to learn 8 (1998), 181–209. Sebastian Thrun and Anton Schwartz.1994. Finding Structure in Reinforcement Learning. In Advances in NeuralInformation Processing Systems 7, . 385–392. http://papers.nips.cc/paper/887-!nding-structure-in-reinforcement-learning Joshua Tobin, Rachel Fong, Alex Ray,Jonas Schneider, Wojciech Zaremba, and Pieter Abbeel. 2017. DomainRandomization for Transferring Deep Neural Networks from Simulation to the RealWorld. CoRR abs/1703.06907 (2017). http://arxiv.org/abs/1703.06907 Eric Tzeng, Judy Homan, NingZhang, Kate Saenko, and Trevor Darrell. 2014. Deep Domain Confusion: Maximizingfor Domain Invariance. CoRR abs/1412.3474 (2014). http://arxiv.org/abs/1412.3474 Huang Xiao, Battista Biggio, GavinBrown, Giorgio Fumera, Claudia Eckert, and Fabio Roli. 2015. Is featureselection secure against training data poisoning?. In ICML. 1689–1698. Matei Zaharia et al. 2012. Resilientdistributed datasets: A fault-tolerant abstraction for in-memory clustercomputing. In NSDI ’12. Haoyu Zhang, Ganesh Ananthanarayanan,Peter Bodík, Matthai Philipose, Paramvir Bahl, and Michael J. Freedman. 2017.Live Video Analytics at Scale with Approximation and Delay-Tolerance. In NSDI.
个人分类: 论文翻译|27398 次阅读|5 个评论
[转载]图解十大经典的机器学习算法
zsfreefly 2017-10-31 22:15
弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分。以我们的智能手机为例,看看到底温藏着多少人工智能的神奇魔术。 下图是一部典型的智能手机上安装的一些常见应用程序,可能很多人都猜不到,人工智能技术已经是手机上很多应用程序的核心驱动力。 图1 智能手机上的相关应用 传统的机器学习算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。这篇文章将对常用算法做常识性的介绍,没有代码,也没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的。 人工智能领域知识面广泛,推荐专注于人工智能在线教育的平台—深蓝学院。深蓝学院由中科院自动化所毕业博士团队创建,虽成立半年,但在业界已颇具口碑。 决策树 根据一些 feature(特征) 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提问。这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上。 图2 决策树原理示意图 随机森林 在源数据中随机选取数据,组成几个子集: 图3-1 随机森林原理示意图 S矩阵是源数据,有1-N条数据,A、B、C 是feature,最后一列C是类别: 由S随机生成M个子矩阵: 这M个子集得到 M 个决策树:将新数据投入到这M个树中,得到M个分类结果,计数看预测成哪一类的数目最多,就将此类别作为最后的预测结果。 图3-2 随机森林效果展示图 逻辑回归 当预测目标是概率这样的,值域需要满足大于等于0,小于等于1的,这个时候单纯的线性模型是做不到的,因为在定义域不在某个范围之内时,值域也超出了规定区间。 图4-1 线性模型图 所以此时需要这样的形状的模型会比较好: 图4-2 那么怎么得到这样的模型呢? 这个模型需要满足两个条件 “大于等于0”,“小于等于1” 。大于等于0 的模型可以选择绝对值,平方值,这里用指数函数,一定大于0;小于等于1 用除法,分子是自己,分母是自身加上1,那一定是小于1的了。 图4-3 再做一下变形,就得到了 logistic regressions 模型: 图4-4 通过源数据计算可以得到相应的系数了: 图4-5 图4-6 LR模型曲线图 支持向量机 要将两类分开,想要得到一个超平面,最优的超平面是到两类的 margin 达到最大,margin就是超平面与离它最近一点的距离,如下图,Z2Z1,所以绿色的超平面比较好。 图5 分类问题示意图 将这个超平面表示成一个线性方程,在线上方的一类,都大于等于1,另一类小于等于-1: 点到面的距离根据图中的公式计算: 所以得到total margin的表达式如下,目标是最大化这个margin,就需要最小化分母,于是变成了一个优化问题: 举个例子,三个点,找到最优的超平面,定义了 weight vector=(2,3)-(1,1): 得到weight vector为(a,2a),将两个点代入方程,代入(2,3)另其值=1,代入(1,1)另其值=-1,求解出 a 和 截矩 w0 的值,进而得到超平面的表达式。 a求出来后,代入(a,2a)得到的就是support vector,a和w0代入超平面的方程就是support vector machine。 朴素贝叶斯 举个在 NLP 的应用:给一段文字,返回情感分类,这段文字的态度是positive,还是negative: 图6-1 问题案例 为了解决这个问题,可以只看其中的一些单词: 这段文字,将仅由一些单词和它们的计数代表: 原始问题是:给你一句话,它属于哪一类 ?通过bayes rules变成一个比较简单容易求得的问题: 问题变成,这一类中这句话出现的概率是多少,当然,别忘了公式里的另外两个概率。例子:单词“love”在positive的情况下出现的概率是 0.1,在negative的情况下出现的概率是0.001。 图6-2 NB算法结果展示图 K近邻算法 给一个新的数据时,离它最近的 k 个点中,哪个类别多,这个数据就属于哪一类。 例子:要区分“猫”和“狗”,通过“claws”和“sound”两个feature来判断的话,圆形和三角形是已知分类的了,那么这个“star”代表的是哪一类呢? 图7-1 问题案例 k=3时,这三条线链接的点就是最近的三个点,那么圆形多一些,所以这个star就是属于猫。 图7-2 算法步骤展示图 K均值算法 先要将一组数据,分为三类,粉色数值大,黄色数值小 。最开始先初始化,这里面选了最简单的 3,2,1 作为各类的初始值 。剩下的数据里,每个都与三个初始值计算距离,然后归类到离它最近的初始值所在类别。 图8-1 问题案例 分好类后,计算每一类的平均值,作为新一轮的中心点: 图8-2 几轮之后,分组不再变化了,就可以停止了: 图8-3 算法结果展示 Adaboost Adaboost 是 Boosting 的方法之一。Boosting就是把若干个分类效果并不好的分类器综合起来考虑,会得到一个效果比较好的分类器。 下图,左右两个决策树,单个看是效果不怎么好的,但是把同样的数据投入进去,把两个结果加起来考虑,就会增加可信度。 图9-1 算法原理展示 Adaboost 的例子,手写识别中,在画板上可以抓取到很多features(特征),例如始点的方向,始点和终点的距离等等。 图9-2 training的时候,会得到每个feature的weight(权重),例如2和3的开头部分很像,这个feature对分类起到的作用很小,它的权重也就会较小。 图9-3 而这个alpha角就具有很强的识别性,这个feature的权重就会较大,最后的预测结果是综合考虑这些feature的结果。 图9-4 神经网络 Neural Networks适合一个input可能落入至少两个类别里:NN由若干层神经元,和它们之间的联系组成。 第一层是input层,最后一层是output层。在hidden层和output层都有自己的classifier。 图10-1 神经网络结构 input输入到网络中,被激活,计算的分数被传递到下一层,激活后面的神经层,最后output层的节点上的分数代表属于各类的分数,下图例子得到分类结果为class 1;同样的input被传输到不同的节点上,之所以会得到不同的结果是因为各自节点有不同的weights 和bias,这也就是forward propagation。 图10-2 算法结果展示 马尔科夫 Markov Chains由state(状态)和transitions(转移)组成。例子,根据这一句话 ‘the quick brown fox jumps over the lazy dog’,要得到markov chains。 步骤,先给每一个单词设定成一个状态,然后计算状态间转换的概率。 图11-1 马尔科夫原理图 这是一句话计算出来的概率,当你用大量文本去做统计的时候,会得到更大的状态转移矩阵,例如the后面可以连接的单词,及相应的概率。 图11-2 算法结果展示 上述十大类机器学习算法是人工智能发展的践行者,即使在当下,依然在数据挖掘以及小样本的人工智能问题中被广泛使用。
2926 次阅读|0 个评论
读博记语(213)- 机器学习
zjzhaokeqin 2017-10-28 09:55
读博记语( 213)- 机器学习 赵克勤 读 科学网 赵松 博客 《一篇文章讲清楚人工智能、机器学习和深度学习的区别和联系》 (链接地 址 : http://blog.sciencenet.cn/blog-2888249-1082369.html  记语如下: “纵观机器学习发展历程,研究热点可以简单总结为2000-2006年的流形学习、2006年-2011年的稀疏学习、2012年至今的深度学习。未来哪种机器学习算法会成为热点呢?深度学习三大巨头之一吴恩达曾表示,“在继深度学习之后,迁移学习将引领下一波机器学习技术”;但最终机器学习的下一个热点是什么,谁能说得准呢。 ” 评:学习是创新之本。 http://blog.sciencenet.cn/blog-329317-904638.html 
个人分类: 读博记语|1310 次阅读|0 个评论
一篇文章讲清楚人工智能、机器学习和深度学习的区别和联系
热度 12 zsfreefly 2017-10-25 10:39
人工智能的浪潮正在席卷全球,诸多词汇时刻萦绕在我们耳边:人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)。不少人对这些高频词汇的含义及其背后的关系总是似懂非懂、一知半解。 为了帮助大家更好地理解人工智能,这篇文章用最简单的语言解释了这些词汇的含义,理清它们之间的关系,希望对刚入门的同行有所帮助。 图一 人工智能的应用 人工智能:从概念提出到走向繁荣 1956年,几个计算机科学家相聚在达特茅斯会议,提出了“人工智能”的概念,梦想着用当时刚刚出现的计算机来构造复杂的、拥有与人类智慧同样本质特性的机器。其后,人工智能就一直萦绕于人们的脑海之中,并在科研实验室中慢慢孵化。之后的几十年,人工智能一直在两极反转,或被称作人类文明耀眼未来的预言,或被当成技术疯子的狂想扔到垃圾堆里。直到2012年之前,这两种声音还在同时存在。 2012年以后,得益于数据量的上涨、运算力的提升和机器学习新算法(深度学习)的出现,人工智能开始大爆发。据领英近日发布的《全球AI领域人才报告》显示,截至2017年一季度,基于领英平台的全球AI(人工智能)领域技术人才数量超过190万,仅国内人工智能人才缺口达到500多万。 人工智能的研究领域也在不断扩大,图二展示了人工智能研究的各个分支,包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、自然语言处理、推荐系统等。 图二 人工智能研究分支 但目前的科研工作都集中在弱人工智能这部分,并很有希望在近期取得重大突破,电影里的人工智能多半都是在描绘强人工智能,而这部分在目前的现实世界里难以真正实现(通常将人工智能分为弱人工智能和强人工智能,前者让机器具备观察和感知的能力,可以做到一定程度的理解和推理,而强人工智能让机器获得自适应能力,解决一些之前没有遇到过的问题)。 弱人工智能有希望取得突破,是如何实现的,“智能”又从何而来呢?这主要归功于一种实现人工智能的方法——机器学习。 学习人工智能相关技术知识,可了解一下在线教育平台—— 深蓝学院 。深蓝学院是致力于人工智能等前沿科技的在线教育平台。 机器学习:一种实现人工智能的方法 机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。 举个简单的例子,当我们浏览网上商城时,经常会出现商品推荐的信息。这是商城根据你往期的购物记录和冗长的收藏清单,识别出这其中哪些是你真正感兴趣,并且愿意购买的产品。这样的决策模型,可以帮助商城为客户提供建议并鼓励产品消费。 机器学习直接来源于早期的人工智能领域,传统的算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分,机器学习算法可以分为监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。 传统的机器学习算法在指纹识别、基于Haar的人脸检测、基于HoG特征的物体检测等领域的应用基本达到了商业化的要求或者特定场景的商业化水平,但每前进一步都异常艰难,直到深度学习算法的出现。 深度学习:一种实现机器学习的技术 深度学习本来并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络),因此越来越多的人将其单独看作一种学习的方法。 最初的深度学习是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并不是一个全新的概念,可大致理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法和激活函数等方面做出相应的调整。其实有不少想法早年间也曾有过,但由于当时训练数据量不足、计算能力落后,因此最终的效果不尽如人意。 深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。 三者的区别和联系 机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。我们就用最简单的方法——同心圆,可视化地展现出它们三者的关系。 图三 三者关系示意图 目前,业界有一种错误的较为普遍的意识,即“ 深度学习最终可能会淘汰掉其他所有机器学习算法 ”。这种意识的产生主要是因为,当下深度学习在计算机视觉、自然语言处理领域的应用远超过传统的机器学习方法,并且媒体对深度学习进行了大肆夸大的报道。 深度学习,作为目前最热的机器学习方法,但并不意味着是机器学习的终点。起码目前存在以下问题: 1. 深度学习模型需要大量的训练数据,才能展现出神奇的效果,但现实生活中往往会遇到小样本问题,此时深度学习方法无法入手,传统的机器学习方法就可以处理; 2. 有些领域,采用传统的简单的机器学习方法,可以很好地解决了,没必要非得用复杂的深度学习方法; 3. 深度学习的思想,来源于人脑的启发,但绝不是人脑的模拟,举个例子,给一个三四岁的小孩看一辆自行车之后,再见到哪怕外观完全不同的自行车,小孩也十有八九能做出那是一辆自行车的判断,也就是说,人类的学习过程往往不需要大规模的训练数据,而现在的深度学习方法显然不是对人脑的模拟。 深度学习大佬 Yoshua Bengio 在 Quora 上回答一个类似的问题时,有一段话讲得特别好,这里引用一下,以回答上述问题: Science is NOT a battle, it is a collaboration. We all build on each other's ideas. Science is an act of love, not war. Love for the beauty in the world that surrounds us and love to share and build something together. That makes science a highly satisfying activity, emotionally speaking! 这段话的大致意思是,科学不是战争而是合作,任何学科的发展从来都不是一条路走到黑,而是同行之间互相学习、互相借鉴、博采众长、相得益彰,站在巨人的肩膀上不断前行。机器学习的研究也是一样,你死我活那是邪教,开放包容才是正道。 结合机器学习2000年以来的发展,再来看Bengio的这段话,深有感触。进入21世纪,纵观机器学习发展历程,研究热点可以简单总结为2000-2006年的流形学习、2006年-2011年的稀疏学习、2012年至今的深度学习。未来哪种机器学习算法会成为热点呢?深度学习三大巨头之一吴恩达曾表示,“在继深度学习之后,迁移学习将引领下一波机器学习技术”。但最终机器学习的下一个热点是什么,谁用能说得准呢。
24915 次阅读|11 个评论
[转载]自然杂志:通过量子机器学习寻找希格斯玻色子
quantumchina 2017-10-22 13:51
D-Wave系统(量子计算机系统)显示量子计算机可以学会在堆积如山的海量数据中发现粒子的特征,但目前还没有超过常规方法。 物理学家们一直在努力开发能够使用量子力学技巧加速计算的量子计算机。但他们也希望这样的量子计算机能够回报人们的青睐,帮助他们发现新的自然规律。 现在,一个研究团队已经表明量子电路可以通过学习从原子碰撞实验的大量数据中筛选数据以搜寻一个新的粒子。他们 的验证原理的 研究使用D-Wave公司的量子计算机,在处理现在熟悉的希格斯玻色子时,并没有提供比传统技术明显的优势。但是研究者们认为,当数据量增长到更大时,量子机器学习将会在未来的实验中产生影响。他们的研究发表在10月18日的自然杂志上。 原文: DWave system shows quantum computers can learn to detect particle signatures in mountains of data, but doesn’t outpace conventional methods — yet. Physicists have been working hard to develop machines that can use quantum mechanical tricks to speed up computation. But they also hope that such quantum computers can return the favour and help them to discover new laws of nature. Now, a team has shown that a quantum circuit can learn to sift through reams of data from atom-smashing experiments in search of a new particle. Their proof-of-principle study — performed using a machine built by quantum-computing company D-Wave working on the now-familiar case of the Higgs boson — does not yet provide a clear advantage over conventional techniques. But the authors say that quantum machine learning could make a difference in future experiments, when the amounts data will grow even larger. Their research was published on 18 October in Nature. 来源: http://www.nature.com/news/quantum-machine-goes-in-search-of-the-higgs-boson-1.22860?WT.mc_id=Weibo_NatureNews_20171020_CONT Solving a Higgs optimization problem with quantum annealing for machine learning http://www.nature.com/nature/journal/v550/n7676/full/nature24047.html
个人分类: 量子机器学习|1706 次阅读|0 个评论
如何用MOOC组合掌握机器学习?
热度 6 wshuyi 2017-9-10 16:23
今天学习不努力,明天努力找工作 学习 2017年1月,人类在智力领域数万年积攒下来的嚣张气焰遭到了若干次无情的打压。 不提CES 2017上激动人心的自动驾驶产品(估计短短几年之后,你的驾驶证就可以扔掉了),也不细讲《最强大脑》节目里人类精英在图像识别环节被碾压(这曾经是人类可以嘲笑人工智能的典型领域),就说说围棋界的海啸吧。 数十位人类围棋界顶尖高手,用人类围棋对弈的千年智慧结晶,历经艰苦卓绝的奋斗,依然被Master用快棋打了个一塌糊涂——60:0。 别人输棋以后都很茫然,唯独古力九段战后的话最为耐人寻味——“人类与人工智能共同探索围棋世界的大幕即将拉开”。 这话我听着,觉得韵脚极为熟悉。突然想起来王朔的《顽主》中描述过类似情节。 马青兴冲冲地走到了前面,对行人晃着拳头叫唤着:“谁他妈敢惹我?谁他妈敢惹我?”一个五大三粗,穿着工作服的汉子走近他,低声说:“我敢惹你。”马青愣了一下,打量了一下这个铁塔般的小伙子,四顾地说:“那他妈谁敢惹咱俩?” 玩笑归玩笑,不过人类精英终于学会谦逊,并对人工智能表达了合作的诚意,这也是好事儿。人工智能的崛起让很多人自以为认识到了一个现实: 你今天有工作的时候不学习人工智能,明天人工智能会取代你的工作。 你同意吗? 其实这话 错了 ,它 不是 现实。 人和机器不会发生竞争。人挣钱吃饭,机器有电就行。 现实是: 你今天有工作的时候不学习人工智能,明天就 有人 利用人工智能取代你的工作。 人和人永远免不了竞争。这场军备竞赛里面,人工智能已经成为了个体可以掌握的核武器。别人懂了,你不懂,结果会很美妙。 当然,我说的是 别人 的结果。 人工智能领域中,目前最火的技术是机器学习(machine learning),尤其是近年来伴随大数据产生而崛起的深度学习(deep learning)。不论是AlphaGo还是百度大脑,其实都是使用了(深度)机器学习,才变得如此厉害。 想不想学习一下“机器学习”呢? 途径 要了解和掌握机器学习,路径有很多。你可以选课、报班,甚至自己看书。但是我更推荐的,是MOOC。 对于大多数人来说,MOOC资源更容易获得。只要你有一台能上网的电脑,就可以开始学。 因为这几年机器学习很火,因此相关MOOC很多。有好事者就开始进行梳理总结,把数十门课程分成初级、中级、高级,每一部分都有十余门课程。然后罗列出来,供读者按部就班来学习。 我的评价是,他们用非常认真负责的态度干了一件 糟糕透顶 的事儿。 为什么? 因为你一股脑罗列数十门课程,不会丝毫降低学习的门槛,反而迅速减少了“从入门到 放弃 ”的时长。 没错,看完了你的清单,读者就放弃了。他的结论是“机器学习这事儿看来跟我这辈子没关系”。 本文尝试做一件与众不同的事儿——精选少数课程,组合一个易于入门和快速应用的路径。 要达到这个目标,就需要从许许多多的MOOC里选择“最好的”课程。所谓“最好的”课程,需要满足以下条件: 授课教师自身是牛人; 讲授用心; 课程设计符合学习规律。 有了这个标准,许多课程立即被排除掉了。我们精选了数门课程,分别带领初学者完成入门、进阶、应用和补课等过程。组合起来,就是一个完整的机器学习了解和掌握路径。 众口难调,我们不可能找出 所有人都 一致认同的“最好”课程。如果你觉得我列出的课程或者组合方式还不够好,不要立即抱怨。因为这不是一场PK。欢迎你推荐心目中更好的课程给我们大家。 入门 入门课程推荐吴恩达(Andrew Ng)教授Coursera平台上的《机器学习》。 吴恩达教授,就是《最强大脑》里面带着人工智能来砸场子的这位仁兄。 他是斯坦福大学教授,Coursera的联合创始人之一。前任百度首席科学家,曾全面负责百度研究院。 如果你在MOOC论坛上发问,网友们给你推荐的 第一门 机器学习课程八成也是这门。 原因是门槛低,天花板很高。 所谓门槛低,是指不要求你多么熟练掌握某种语言编程技术,也不需要你的数学知识达到做完若干册《吉米多维奇数学分析习题集》的水平。 所谓天花板很高,是指该课程全面介绍了机器学习中的核心知识,并且扩展到若干不同应用领域。这种课程设计方式,非常值得我国大学来学习。在保证覆盖面的同时,只在几个关键知识点着力反复练习,使得学生学起来轻松,却真的掌握到了精髓。 我觉得这才是真正的大师水平。 之前为这门课程专门写过一篇文章《机器学习,你也行》。这里就不再赘述了。欢迎感兴趣的同学查阅该文。 学完这门课,你就可以自豪地宣称自己 了解 机器学习了。 进阶 获得了吴恩达教授课程证书之后,千万要趁热打铁,掌握现今最为热门的深度学习。 所谓深度学习,就是利用 深度 神经网络进行机器学习。如下图就是利用深度社交网络辨别一张图片究竟是车、人,或是动物。 此处推荐的课程是Geoffrey Hinton教授的《神经网络与机器学习》。 为什么推荐这门课? 首先,你会发现这门课使用的软件工具与上一门课程一样,都是易于安装、便于掌握的Octave。你不需要去了解编程环境的各种配置,拿过来直接用就行。框架代码都已经提供,你只需要在重点环节进行修改和补充。 其次,课程默认你学过吴恩达教授的课程作为前导。因此二者没有什么重叠,避免重复劳动。直接高屋建瓴,继续向纵深推进。 第三,Hinton教授是深度学习领域公认的权威。 这位大叔最大的本领就是对事业有自己的思考和见解,不人云亦云。当年人工智能领域遭遇寒冬,资助都没了,实验室都维持不下去了。许多有才华的人都跳到其他领域去了,唯独他老人家总是觉得不断改进与发展中应该有机会,就留了下来。 事实证明这种坚持带来的收获是显著的。他比别人提早深耕了数十年,如今的学者在深度学习领域无论写什么新论文几乎都 绕不开 引他的文献。 听这样泰山北斗级别的人物给你授课,真的是一种幸福。对别人来说一种非常高深莫测的算法,读起来要么如同天书,要么击节赞叹,可在他嘴里无非是“哦,那一年我试了一下这个,不成;后来突然开窍了,在这里改变了一点点,然后就……” 有些人在讨论区留言说他的笑话讲得太有趣了。这是真的。不过你学起来的时候对这个事儿期望不要太高——作为外国人,你的生活环境和文化底蕴不同,笑话就别指望 全部 能听懂了。 学完这门课,别人要是再想拿深度学习的概念来忽悠你,就很困难了。 这话你,真的听懂了吗? 学完这门课,如果你拿深度学习的概念去忽悠别人…… 是不应该的。 实践 通过前面两门课,你理解了什么是机器学习和深度学习。但是你可能不愿意只停留在概念理解上,却很想做出些东西来实践。实践应用一方面可以检验你学习的效果,另一方面可以帮助你积累经验,同时还可以带来成就感。 不好意思,在应用实践环节这里,路径上有个分支。 第一种选择是Udacity上面的课程”Intro to Machine Learning”(ud120)。授课人是Sebastian Thrun,前几年他一直是Google自动驾驶技术的负责人。 这门课采用的函数库是Scikit-learn,构建于Python之上。课程设计得很吸引人,利用一些数据集,让你熟悉如何用别人构造好的功能(函数调用),加上你自己的理解(参数调整)来完成一些小型项目。 我对这门课程总体上很满意,但对免费学习用户,练习缺乏必要辅助,最后的大项目难度陡然提高。一般人难以适应,很容易中途放弃。如果你是付费用户,会有专人带领你一步步前行,并且提供必要的帮助,感觉就好多了。 第二种是选择Coursera平台上华盛顿大学的机器学习课程专项系列(specialization),课程名称为“构建智能应用”(Build Intelligent Applications)。 这门课程,充分体现出资本市场对于学术活动的干扰。 课程系列包含了6门课。但是只陆续推出了前4门。第5门一直在不停跳票。从2016年的9月份被反复推迟,后来干脆取消了。 为什么?因为主讲人两口子的公司Turi被苹果 收购 了。于是他们只好暂缓手头的课程制作,处理收购的各项事宜。 不过从已经推出的4门课来看,水平非常高,而且设计巧妙。 课程采用案例教学,就是每一个模块都依照具体问题给定数据集进行处理。第一门课是总览,让用户体会每一部分的重要内容,并且动手运行尝试,增加趣味和信心。 从第二门课开始,每门课分别介绍一个机器学习类型。每一周的课程由浅入深,逐渐加码。利用Jupyter Notebook保存练习的结果,将来可以直接用到实践中。 两位教授还非常大方地开放自己公司的产品免费给学生使用。他们的产品对于学术界也是相当于免费(每年需要手动免费更新一次证书),很慷慨。不过被收购以后,这个教育优惠政策的事儿就不好说了。 有的章节题目很有一些难度。作为学习者,你得做好远离舒适区,不停在学习区遨游的准备。 上述这两门课程选择一门听完,你应该可以具备自己动手处理一些小型数据集的能力了。对于学习、工作和科研应该会有很大的助益。 你很不满意,想要处理大规模数据?这个事儿需要两个条件支撑: 你需要能得到大规模数据; 你得有相应的硬件条件。 实话实说,目前绝大部分人 不具备 相应的条件。所以这个问题有空咱们再深入聊。 补课 你可能对自己的知识基础没有什么信心——我不是数学或者计算机相关专业的,也能学会机器学习吗? 从刚才的课程介绍,你应该不难看出。现在机器学习的门槛已经很低了。但是为了达成目标,你还是需要掌握一些非常基础的知识,主要包括: 数学(初级微积分、概率论与统计、线性代数); 编程语言(例如Python) 如果你缺乏相应的知识,没关系,补就是了。缺哪里补哪里,反复补充,这样学习劲头和效率都有保障。 Python语言的补课方式我建议采用密歇根大学的Coursera课程系列《人人都能学编程》。 这是目前我见到过的最适合数据科学初学者的Python语言入门方法。学了这门课程,你不仅掌握了一门语言,还可以掌握数据挖掘的基础知识。包括数据库操作、API和爬虫等。跟前面的实践类课程直接可以对接,严丝合缝。 至于数学知识的补充,我推荐的是Bill Gates一直赞不绝口的可汗学院。 可汗学院起家的本领就是帮助学生辅导数学功课。因此在MOOC领域,该平台的数学课程是积累最为丰富的,对学生来说也是最无痛的。 看到可汗学院这么多数学课程类别了吗?别犹豫,抓紧学吧。你不会重温大学一年级(或者高中三年级)初次涉猎微积分时的噩梦,因为Khan学院的讲授方式真的很生动、很有趣。 讨论 你还上过哪些讲解机器学习的好MOOC?它的独特之处在什么地方?能否替换本文列出的部分课程,形成更好的组合?欢迎留言分享,我们一起讨论。 如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。 如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。 延伸阅读 如何用Python做词云? - 简书 如何用Python做中文分词? - 简书 如何用Python做情感分析? - 简书 如何用Python做舆情时间序列可视化? - 简书 贷还是不贷:如何用Python和机器学习帮你决策? - 简书 如何用Python从海量文本抽取主题? - 简书 如何用Python和R对《权力的游戏》故事情节做情绪分析? - 简书
5865 次阅读|6 个评论
当复杂网络遇到机器学习II (附源代码下载)
zico 2017-8-30 14:41
当复杂网络遇到机器学习II (附源代码下载) 当你在豆瓣上听到一首令你心情畅快的歌曲时,是否有种冲动搜索具有类似风格的音乐呢?当你在LinkedIn上浏览某位专业人士的简历时,是否想扩大搜索范围,网络具有类似技能的专家呢?当你通过标签标识自己的兴趣时,是否想过通过自己的标签信息找到志同道合的小伙伴呢?随着越来越多的应用使用标签系统来进行 Web 内容的组织,标签驱动的推荐和检索应用也逐渐成为解决信息过载的有效手段。 早期的时候大多数研究关注如何为用户推荐感兴趣的标签上,而通过用户所搜索或者点击过的标签去推荐商品的研究还比较少。近期Weston提出了协同检索的概念,利用 张量模型 进行表示 用户-Query-商品的三元关系。他们的思路可以理解成以用户为中心的协同关系网络,通过矩阵的映射构建起来商品和Query之间的联系。但通过数据分析和现实的情况,我们可以发现商品之间的信息不对称更为严重,很多商品其实并没有几个标签,如图1所示。这会导致在相同的用户搜索目标情况下,信息匮乏的商品会因为没有充分的标签或者文本信息得到不平等的排序结果。像林肯公园一直以硬摇滚著称的乐队拥有庞大的乐迷团体,在虾米上面的标签也是金属摇滚、说唱摇滚。但实际上他们的歌曲风格其实很多变,有让人感到热血沸腾,又让人感到歇斯底里的嘶吼的,我们是否可以给个“热泪盈眶”的标签呢? 图1:包含不同数量关键词的商品概率分布。 在这个工作中,我们更加关注商品之间的信息互通,通过商品端的协同网络让不同商品之间的信息进行互补。以下图例将 用户-标签(Query)-商品 表示成一张图,图c表达的是商品为中心的关系网络,这里的query通常是某个标签。我们可以看到有些相似商品之间的标签其实是可以互补的,利用这种协同关系,可以解决商品的信息不对称问题。为此,我们提出了基于商品协同网络的张量分解模型,并采用了Pairwise排序学习的方式对模型进行优化,在两个公开的数据集上都获得了不错的效果。 图2: 张量模型 源代码下载: https://github.com/jeppe/TIIREC 参考文献: Jason Weston, Chong Wang, Ron Weiss, AdamBerenzeig, Latent Collaborative Retrieval, ICML 2012. Lu Yu, Junming Huang, Ge Zhou, Chuang Liu,Zi-Ke Zhang, TIIREC:A tensor approach for tag-driven item recommendation with sparse user generatedcontent , Information Sciences, 411 (2017) 122-135.
个人分类: 科研笔记|9765 次阅读|0 个评论
评机器学习:乱花渐欲迷人眼,浅草才能没马蹄
rynn 2017-7-21 14:48
在笔者的关注的材料领域,涌现出越来越多的使用机器学习方法进行材料预测的工作。几年前,美国就提出了“材料基因组”计划,现在的趋势和成果都表明这一计划取得了不小的成就。目前的情况仍然处在方法开发、整合。这些方法逐渐开始成熟,产出一些初步的结果,比如出现许多新的材料结构和性能的计算数据库。这些成果还处于初期阶段,但随着这个领域进入的人才越来越多,发展将会很快。预计几年之内,就会出现成熟的工具的成果。 受到社会广泛关注的人工智能领域也一片繁荣景象。阿尔法狗,自动驾驶,深度学习等等,开始成为资本角逐的新的竞技场。现在资本的速度无限接近于想法的速度,也就是光速。罗马不是一天建成的,目前的状况是:乱花渐欲迷人眼,浅草才能没马蹄。一方面,传统技术的需求是巨大的,新的方法不会一夜变了天。另外,无论资本风口如何热闹,未来究竟在那些领域可以快速取得应用仍然是未知数。技术到最后是工程问题,这个过程在初期可以很粗犷,但可能几个细节就可以堵死一个新技术的应用。
个人分类: 班门弄斧|3155 次阅读|0 个评论
Angel:一种新型分布式机器学习系统|《国家科学评论》
sciencepress 2017-7-7 15:08
Reporting global advances in science 《国家科学评论》( National Science Review ,NSR) 最近发表了由北京大学崔斌(通讯作者)、余乐乐、江佳伟联合腾讯蒋杰、刘煜宏共同撰写的研究论文“ Angel: a new large-scale machine learning system ” ( https://doi.org/10.1093/nsr/nwx01 8 ), 介绍了一种新的支持大数据分析的分布式机器学习系统——Angel。 文章回顾了近期学术界和企业界关注的机器学习系统,着重介绍了Angel系统的设计思想和实现细节,并通过对多个大规模数据集上不同机器学习算法和系统的比较,验证了Angel系统在分布式机器学习方面的有效性。Angel系统的原代码已在GitHub上开源 ( https://github.com/Tencent/angel )。 Angel 是一个基于参数服务器(Parameter Server)理念的分布式机器学习框架,它能让机器学习算法轻松运行于高维度模型之上。Angel围绕模型共享的核心理念,将高维度的大模型合理地切分到多个参数服务器节点,并通过高效的模型更新接口和运算函数以及多变的同步协议,实现各种高效的机器学习算法。得益于其良好的设计,Angel既能独立运行、高效执行多种机器学习算法,亦能作为PS服务,支持Spark和现有的深度学习框架,为其加速。它基于工业界的海量数据进行了反复的实践和调优,具有广泛的适用性和稳定性,模型维度越高,优势越明显。 Angel的系统框架 现有的机器学习系统都是针对不同类型的机器学习任务而搭建的。数据流系统Hadoop和Spark适合通用的数据处理任务和构建机器学习流水线,但缺乏参数共享机制,存在单点瓶颈性能问题;图计算系统GraphLab、GraphX和Tux2等将机器学习计算抽象成图结构,可以利用图结构的特性进行加速,但只适合具有稀疏图结构的算法;深度学习系统TensorFlow、MXNet和Caffe2等利用Parameter Server或者Allreduce方法进行分布式神经网络的训练,其特点是能够利用GPU对神经网络的计算进行加速,但缺乏对稀疏图结构的优化和支持。 Angel在设计中对分布式机器学习的共性进行了抽象和提炼。文章认为分布式机器学习的核心部分在于参数共享,如果可以提供高效的参数共享机制,则能够为各类机器学习任务进行扩展和加速。因此,Angel提供了PS服务的能力,支持两种运行模式。其中一种模式称为PS Service模式,Angel只启动Master和Parameter Server,具体的计算任务交由其他计算平台(如Spark、TensorFlow等)完成,这种模式下Angel只负责提供Parameter Server的功能;在另外一种模式中,Angel还会启动Worker,由Angel负责完成模型的训练。Angel提供PS服务的能力,使其能处理多种类型的机器学习任务,提供更方便的机器学习开发体验。 此外,Angel还能提供:(1)多种参数同步协议,用于在不同的集群环境中进行加速;(2)易用且丰富的接口,用于方便算法的开发;(3)数据并行与模型并行的能力,提高算法的扩展性;(4)高效的容错机制,为任务在复杂环境中的运行提供保障。经过在真实数据集上的对比,Angel在多种机器学习算法上的性能优于XGBoost、Spark、Petuum、TensorFlow等常用机器学习系统。目前Angel已经被应用于腾讯视频点击预测和广告推荐等实际业务中。 Angel的开源系统由北京大学-腾讯协同创新实验室开发,兼顾了工业界的高可用性和学术界的创新性,已经在GitHub全面开源,集成和优化了Logistic Regression、SVM、KMeans、LDA、MF、GBDT 等多种机器学习算法。Angel目前基于Java和Scala开发,未来还会加入Python等多种语言接口,方便使用。将来,Angel的PS Service能力会得到进一步利用,支持图计算和深度学习框架。 文章信息: Jie Jiang, Lele Yu, Jiawei Jiang, Yuhong Liu and Bin Cui . Angel: a new large-scale machine learning system . National Science Review (2017) https://doi.org/10.1093/nsr/nww065 作者介绍 崔斌 北京大学计算机系教授、博士生导师、网络与信息系统研究所所长。研究方向包括数据库系统设计和性能优化、数据挖掘、大数据管理等。已发表学术论文100多篇,其中50余篇发表在一流国际会议和期刊,包括ACM SIGMOD、VLDB、IEEE ICDE、TKDE等。主持和承担多个科研项目,包括国家自然科学基金、核高基项目、863计划等。担任中国计算机学会数据库专委会秘书长,VLDB理事会理事,IEEE TKDE、VLDB Journal、Information Systems、DAPD等国际期刊编委,担任过数十个国际会议的程序委员会委员,包括一流国际会议SIGMOD、VLDB、ICDE、KDD等。2008年获得微软亚洲研究院的“微软青年教授奖”,2009年获得中国计算机学会“CCF青年科学家奖”,2014年获教育部自然科学二等奖,2016年入选教育部长江学者特聘教授。
个人分类: 国家科学评论|5774 次阅读|0 个评论
公布求解最大互信息和最大似然度的信道匹配算法—用以取代EM算法
热度 3 lcguang 2017-6-12 12:25
搜索最大似然度, 可见有33万篇文章: http://www.sciencedirect.com/science?_ob=ArticleListURL_method=list_ArticleListID=-1217372240_sort=r_st=13view=cmd5=32025f8bcf94febd17e33e7009f377cdsearchtype=a 搜索EM算法有8万多篇文章: http://www.sciencedirect.com/science?_ob=ArticleListURL_method=list_ArticleListID=-1217372349_sort=r_st=13view=cmd5=1c0dbe77532804b292213415558828cbsearchtype=a 最大互信息难以求解的, 所以Shannon用失真准则, 而不是互信息准则。 最大似然度——指香农信道没有确定时的最大平均对数似然度——也是难求的。 这两个难题应该说是信息论和统计理论中最顽固的堡垒。 两者只能用迭代方法求解。通常用牛顿法, 梯度法和EM算法。其中EM算法最具神秘性。 本文不是要在么庞大数子上增加一个1, 而是要重新评估以前的做法, 特别是EM算法! 本文提出新的算法是信道匹配算法——多数情况下3-5次就收敛。文中和EM算法做了比较,大多数情况下迭代次数降到1/3。还证明了前人的EM算法收敛证明完全错了。 新的算法是否简洁, 高效,易于理解, 详见最新文章: http://survivor99.com/lcg/CM.html 本来是想先投稿, 争取发表的, 但是一想到那么多人在最大互信息和最大似然度上耗费那么多宝贵时间,想到审稿之漫长, 辩解之麻烦, 我还是先公布算法吧! 语义信息方法历来遭遇主流歧视,因为要权威理解非常困难。这篇文章也是要向主流显示: 语义信息论是怎样powerful, 它可以解决经典方法难以解决的难题! 我有没有做到, 请看完理解再说! 欢迎批评!
个人分类: 信息的数学和哲学|5643 次阅读|7 个评论
想不到有那么多人研究EM算法
lcguang 2017-5-17 13:06
介绍见: https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm https://wizardforcel.gitbooks.io/dm-algo-top10/content/em.html 光是标题中有 EM algorithm 的论文就有3000多篇。 http://www.sciencedirect.com/science?_ob=ArticleListURL_method=list_ArticleListID=-1202695715_sort=r_st=13view=cmd5=a65f3a03da9eeed4a63c602ea9857144searchtype=a 它通常用于混合模型(比如高斯混合模型)。 比如根据两个似然函数不同比例的混合, 求解最为符合的似然函数参数(两个高斯模型有4个参数)和比例(1个参数)。现在大数据热, 研究的人更多。 我碰巧赶上了。实验结果见下图。求出结果不算什么, 简单快速才算好。能证明收敛才算厉害。 我可是用Excel做的喔。证明嘛,我用的是语义信息方法,特别是R(G)函数(上一篇介绍的)。 具体方法和证明正在整理。 迭代收敛过程: 5次迭代后符合程度: 迭代开始: 想不到Excel做研究工具还真不错, 不但计算简单, 画图也方便。通过绘图, 容易发现错误。 补充:假设 Py1= 0.10000 c1= 35 d1= 8.000000 Py2= 0.90000 c2= 65 d2= 12.000000 所有EM算法都面临这个例子挑战! 因为在M-step和E-step之间,有一个巨大裂缝, ElogP(z,y|模型)能大幅下降。如果这样, 那些收敛证明成立? 但是信道匹配算法没有问题。
个人分类: 信息的数学和哲学|4714 次阅读|0 个评论
坚决支持上海交大教授看脸识罪犯
热度 22 gaoshannankai 2017-5-9 18:20
以下内容来自科学网新闻《谷歌研究员质疑上海交大教授看脸识罪犯》 http://news.sciencenet.cn/htmlnews/2017/5/375773.shtm 武筱林和张熙运用计算机视觉和机器学习技术检测1856张中国成年男子面部照片,其中将近一半是已经定罪的罪犯。实验结果显示,通过机器学习,分类器可以以较高概率区分罪犯与非罪犯这两个群体的照片。特别是在内眼角间距、上唇曲率和鼻唇角角度这三个测度上,罪犯和非罪犯存在较为显著的差距。平均来讲,罪犯的内眼角间距要比普通人短5.6%,上唇曲率大23.4%,鼻唇角角度小19.6%。同时,他们发现罪犯间的面部特征差异要比非罪犯大。 鼻子眼这几个特征的设计是受了古代相术的启发的,说明了研究人员 善于综合利用各种知识。 三名美国研究者在网络上撰写洋洋洒洒的万字长文向他隔空喊话,点名批评他的研究为“科学种族主义”。这篇万字长文名为《相面术的新外衣》(Physiognomy’s New Clothes),于当地时间5月6日发表在新媒体网站Medium上。三名作者,Blaise Agüera y Arcas是机器学习领域的著名工程师,2013年从微软跳槽到谷歌;Margaret Mitchell同样是谷歌的人工智能研究员;而Alexander Todorov则是普林斯顿大学的神经科学教授。 坚决支持武筱林教授的创新性工作,这项工作很有意义,他证明了各民族古老的相面之术 有非常重要的依据,而且这些成果完全可以用于我们日常的人际交往。 我本人非常推崇面相,国内国外,军队地方,我也可以说是阅人无数,有些人过一眼, 基本就知道是什么货色,可以说,这么多年,我看面相很少看走眼,这就是功力。 武筱林教授的这项工作,我要继续学习,应用于实战,嘿嘿。 西方社会已经糜烂,其中,从小进行的关于种族,性别等问题不能谈,不能碰的洗脑, 让西方社会自行堕落。其中一个典型例子就是干细胞和人体器官移植,就是因为他们的狗屁 假人权假伦理进展缓慢。相比而言,中国社会更为宽容,希望政府有关部门不要犯傻,一定不要 听信某些狗屁专家,增加狗屁伦理等管理。 西方社会这种政策性失误,给了中国科研千载难逢的历史性发展机遇, 嘿嘿,可惜学霸横行,不然抓住这个机遇,中国依然有机会在很多领域赶超西方社会 郭伯雄和 徐才厚 的 面相 告诉我们什么 http://blog.sciencenet.cn/blog-907017-910754.html 还有一个给花和尚看面相的博文,找不到了 这里从机器学习角度,讲一下这个课题的最大问题,就是阴性样本不好找, 阳性样本罪犯是确定的,你可以找那些重刑犯; 但是阴性样本,只是没有发现犯罪,并不代表不是坏人,而且由于范围大,很难找有代表性的人。 第二个问题就是样本分层问题,由于南北方等差异,这个犯罪特征最好加一些参数予以调整,或者分开做。 犯罪也应该把性犯罪与暴力犯罪(杀人抢劫)和技巧性犯罪(偷骗)等分开处理,这三来罪犯特征肯定有较大差异。 另外,请武教授自己给自己看一下,是不是罪犯 这个看相才是个贝叶斯问题,最后各种特征之间的条件概率一起上, 以确定一个人到底是不是好人
3733 次阅读|36 个评论
机器学习若干工具浅说
xyxiao 2017-4-19 21:10
很长时间没写博客了,花几分钟时间,码几行字,以缓解代码带来的疲劳.......... 本来不知道讲什么,刚刚解决了一个神经网络问题,今天就拿这个写写吧! 不知从何时起,机器学习开始慢慢的渗透进了各个领域,从纯数学,到应用数学,到计算机,甚至扩展到了工业界。 从我刚开始接触机器学习这个概念来说,觉得非常神奇,那个时候,机器学习算法对我来说,非常神秘。后来慢慢的,机器学习的平台越来越低,到目前为止,很多没有算法基础的从业人员,也可以轻松的玩转机器学习的各种功能。 从刚开始基础数据挖掘,到慢慢的深入大数据(GB-TB)处理,再到研究生物特征识别,生物基因序列的探索,以及DNA数据序列预测,到现阶段返璞归真似的研究超大型线性方程组的求解等等,从传统的分类算法,比如K-means,到现在强大的神经网络分类,无一不体现出机器学习的强大的渗透力! 其实,机器学习对很多人来说,就是神经网络,为什么?因为神经网络被应用的最多,最广,为什么?因为神经网络,非常简洁的用我们不要关心的方式解决了例如分类,识别,预测等问题。下面就讲一讲我遇到的几个github上机器学习项目。也是用的比较顺手的。 最先接触的就是TensorFlow : TensorFlow 是谷歌的发布的第二代机器学习系统。据谷歌宣称,在部分基准测试中,TensorFlow的处理速度比第一代的DistBelief加快了2倍之多。谷歌大脑小组发布开源项目,得益于此,机器学习在一定程度上得到了快速。 具体的讲,TensorFlow主要一个利用Data Flow Graphs进行数值计算的,图中的节点( Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。这种架构让使用者方便地部署在各种不同的台式机、服务器或者移动终端上的一个或多个CPU上,最好的是无需重写代码。而且还存在很多有用的,方便的接口,让我们在TensorFlow中表达想法也变得更为简单。 TensorFlow开发目的是用于进行机器学习和深度神经网络的研究。但很多高明的学者将其用于其他计算领域。 据目前Google 宣称,公司使用的 AI 技术,包括 Google App 的语音识别、Gmail 的自动回复功能、Google Photos 的图片搜索等都在使用 TensorFlow。 然后现在正在学习的是MxNet:   就目前学习情况总结,MXNet确实是一个非常实用的机器学习框架,兼具效率以及灵活性。在使用者将符号编程和命令式编程相结合的前提下,动态依赖调度程序,它可以动态自动进行并行化符号和命令的操作。当然可扩展到多个GPU和多台主机上。 不记得是谁总结了MxNet的主要特点,我就根据记忆以及自己的经验大致写一下吧:   首先,就是效率,完美的融合了各种编程方法的优势,最大限度地提高灵活性和效率; 其次,MxNetde 设计说明提供了有用的见解,其他DL项目完全可以重新利用; 支持Python、R、C++ 和 Julia,这点对我来说相当重要,因为我也比较喜欢python和C++,虽然是C出身; 还有,支持多GPU扩展和分布式的自动并行化设置; 个人觉得, MXNet更是一个建立深度学习系统的创意性框架,有很多代码贡献者,其中最主要的贡献者是交大ACM班的几个元老,问问题都乐意回答,人都很nice! 额,先写到这里吧,后期还有很多要学习的,再续!
1377 次阅读|0 个评论
【重磅推荐】MIT Tomaso Poggio关于深度学习机理的研究
Chenfiona 2017-3-16 16:31
上周,在IJAC优先在线发表的几篇论文中,麻省理工美国人文与科学院院士Tomaso Poggio的一篇有关深度学习的综述成为一大亮点。Poggio教授在这篇文章中阐述了有关神经网络深度学习的一个基本问题:为什么深层网络比浅层网络更好? 文章内容延续了Poggio教授在2016年8月在中国人工智能大会(2016CCAI)上的演讲报告《The Science and the Engineering ofIntelligence》。 图1 来源于2016 CCAI 演讲PPT 图2 来源于2016 CCAI 演讲PPT “ 深度学习架构和机器学习模式的搭建,来自于神经学方面的研究进展,换句话说,同样的架构是存在于大脑皮质当中的。 关于深度学习,已经有成千上万的研究者在不同领域进行这方面的研究,比如无人驾驶、语音识别等等。可是我们还不清楚,为什么深度学习在这些工程应用中会起作用,深度学习的机理是什么? 我们对这个问题很感兴趣另外一个原因是:探讨深度学习的机理也将有助于我们理解‘为什么大脑皮质会存在一些不同的层次?’ ” Poggio 教授在这篇文章中,将为您解读深度学习的关键理论、最新成果和开放式研究问题。 同时这篇文章也是IJAC即将发表的 Special Issue on Human Inspired Computing 中的一篇文章。该专题其他热文将陆续优先在线发表,敬请期待。 一点点题外话:小编在去年的CCAI大会上有幸拜访了Poggio教授,教授博学、谦逊而富有亲和力的形象给小编也留下深刻印象。他曾提到:期望能帮助年轻人更好的了解神经科学、理解机器学习。如果要在智能方面走得远,不能只靠计算机,还需要与人类本身的研究相互结合,才能碰撞出更多的东西。 接下来,小编将为您奉上这篇文章的具体信息,以及IJAC近期在线发表的其他文章链接,欢迎下载阅读 【 Title 】 Why and when can deep-but not shallow-networksavoid the curse of dimensionality: A review 【 Author 】 Tomaso Poggio, Hrushikesh Mhaskar, LorenzoRosasco, Brando Miranda, Qianli Liao 【 Abstract 】 The paper reviews and extends an emerging bodyof theoretical results on deep learning including the conditions under which itcan be exponentially better than shallow learning. A class of deepconvolutional networks represent an important special case of these conditions,though weight sharing is not the main reason for their exponential advantage.Implications of a few key theorems are discussed, together with new results,open problems and conjectures. 【 Keywords 】 Machine learning, neural networks, deep andshallow networks, convolutional neural networks, function approximation, deeplearning 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1054-2 【 Publish date 】 Published online March 14, 2017 The other recentlypublished online papers include: 【 Title 】 Improvement of wired drill pipe data qualityvia data validation and reconciliatio 【 Author 】 Dan Sui, Olha Sukhoboka, Bernt Sigve Aadnøy 【 Keywords 】 Data quality, wired drill pipe (WDP), datavalidation and reconciliation (DVR), drilling models 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1068-9 【 Publish date 】 Published online March 4, 2017 【 Title 】 Reaction torque control of redundantfree-floating space robot 【 Author 】 Ming-He Jin, Cheng Zhou, Ye-Chao Liu, Zi-QiLiu, Hong Liu 【 Keywords 】 Redundant space robot, reaction torque,reactionless control, base disturbance minimization, Linux/real timeapplication interface (RTAI) 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1067-x 【 Publish date 】 Published online March 4, 2017 【 Title 】 A piecewise switched linear approach fortraffic flow modeling 【 Author 】 Abdelhafid Zeroual,Nadhir Messai, SihemKechida, Fatiha Hamdi 【 Keywords 】 Switched systems, modeling, macroscopic,traffic flow, data calibration 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1060-4 【 Publish date 】 Published online March 4, 2017 【 Title 】 Navigation of non-holonomic mobile robot usingneuro-fuzzy logic with integrated safe boundary algorithm 【 Author 】 A. Mallikarjuna Rao, K. Ramji, B. S. K.Sundara Siva Rao, V. Vasu, C. Puneeth 【 Keywords 】 Robotics, autonomous mobile robot (AMR),navigation, fuzzy logic, neural networks, adaptive neuro-fuzzy inference system(ANFIS), safe boundary algorithm 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-1042-y 【 Publish date 】 Published online March 4, 2017 【 Title 】 Method for visual localization of oil and gaswellhead based on distance function of projected features 【 Author 】 Ying Xie, Xiang-Dong Yang, Zhi Liu, Shu-NanRen, Ken Chen 【 Keywords 】 Robot vision, visual localization, 3D objectlocalization, model based pose estimation, distance function of projectedfeatures, nonlinear least squares, random sample consensus (RANSAC) 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-017-1063-1 【 Publish date 】 Published online March 4, 2017 【 Title 】 Virtual plate based controlling strategy oftoy play for robots communication development in JA space 【 Author 】 Wei Wang, Xiao-Dan Huang 【 Keywords 】 Human robot cooperation, joint attention (JA)space, reachable space, toy play ability, a virtual plate 【 Full Text 】 https://link.springer.com/article/10.1007/s11633-016-1022-2 【 Publish date 】 Published online February 21, 2017   阅读更多IJAC优先在线出版论文: https://link.springer.com/journal/11633
个人分类: 好文推荐|712 次阅读|0 个评论
[转载]麦肯锡最新报告之120个机器学习商用点子
Kara0807 2017-3-16 08:06
麦肯锡最新报告之120个机器学习商用点子 来源: Medium 作者: Théo Szymkowiak 标题:《 120 Machine Learning business ideas from the latest McKinsey report 》 译者:何英英 编辑:王晓 梁侨 目前机器学习已经初步具备了改革“汽车行业”、“制造业”、“零售业”、“金融行业”、“农业”、“能源产业”、“医疗行业”、“制药行业”、“公共服务行业”、“传媒行业”、“通信行业”、“物流行业”这12个行业的能力。然而这些行业的大多数领导者却认为机器学习还不够稳定和可行。 显然,他们的判断是错误的。而这样的错误也给了其他科技公司打乱行业规则的机会。 机器学习正处于变革这12个行业的 边缘。 这些行业的大多数领导者仅看到了机器学习在短期内的技术不稳定性及不可行性。 但是他们错了。技术企业家将干扰他们这种想法。 机器学习在汽车行业的机遇: 机器学习在制造业的机遇: 机器学习在零售业的机遇: 机器学习在金融行业的机遇: 机器学习在农业的机遇: 机器学习在能源行业的机遇: 机器学习在医疗行业的机遇: 机器学习在制药行业的机遇: 机器学习在公共服务行业的机遇: 机器学习在传媒产业的机遇: 机器学习在通信行业的机遇: 机器学习在物流行业的机遇: 文章来源 :德先生 延伸阅读 诺伯特·维纳奖得主王飞跃 | AI 名人堂,世界人工智能60年60位名人榜 人工智能名人堂第11期 | 过程哲学创始人-怀德海 人工智能名人堂第12期 | “罪人”-伯特兰·罗素 人工智能名人堂第13期 | 控制论之父-诺伯特·维纳 人工智能名人堂第14期 | 可计算性理论奠基者-波斯特 人工智能名人堂第15期 | 诗人科学家-麦卡洛克 人工智能名人堂第16期 | 数理逻辑大师-阿隆佐·邱奇 人工智能名人堂第17期 | 计算机之父-冯·诺依曼
个人分类: 人工智能|2226 次阅读|0 个评论
重修线性代数10——计算
热度 15 xying 2017-3-10 08:32
线性代数源于解线性方程组,这是数学公式逆向的计算。在计算机时代之前,限于手工计算的能力,线性代数多是作为理论研究的基础。到了现代,它已是理工科但凡涉及到统计和数值计算必备的工具了,最近更成为机器学习热门的基础课。 10.1 病态系统 数学的理论无论多么漂亮,应用到实践,总要落实到数值的计算。线性系统是最简单实用的数学模型,理论上解线性方程组有非常确定的结果,但也可能有意外。让我们看一个例子。 解线性方程组0.410x + 0.492y = 0.902,0.492x + 0.590y =1.082;得x=1,y=1. 若第一个方程右边的0.902略有变动成为0.901,解就变成x= 4.5976,y= -2.000; 同样第二个方程右边的1.082的数值变成1.081后,解就变成x= -2.000,y= 3.500. 实践中的数据总有些误差,方程的参数微小的变动,竟让计算结果面目全非,这确实让人始料不及。这样不稳定的计算结果在应用上毫无价值。问题在于,这个差异并非是计算误差造成的,将它们代入方程验证都精确无误 . 这就无从计算上来改善了。这种对参数微小变动敏感的系统称为是病态的( ill-conditioned ),这是数学模型的问题。这个例子,在几何图像上不难看到原因。每个方程在空间确定一条直线,方程的解是这两条直线的交点。这两个方程确定的直线近于平行,所以位置略有变化(红线和绿线),它们的交点(红点和绿点)的位置就差得很远。 在数值分析中,条件数( conditionnumber )用来描述数学模型系统的微扰对计算结果的影响。大致说来,对条件数κ , log 10 κ 是你在计算可能要丢掉的数字位数( log 10 ‖Δ x/x ‖ ≤ log 10 κ+ log 10 ‖Δ b/b ‖), 当然这个数κ是很难确定的,它是作为相对误差上界的估算。对于解线性方程组 Ax=b ,它的意思是‖Δ x/x ‖ ≤κ‖Δ b/b ‖,经过推导有κ (A) = ‖ A ‖ * ‖ A -1 ‖,对通常的 L2 范数κ (A)= | σ max / σ min | ,它是 A 做奇异值分解后最大与最小奇异值之比,在可对角化的矩阵即是最大绝对值的特征值与最小绝对值的特征值之比。正交阵(或酉阵)的条件数是 1 ,这是最小的矩阵条件数值,所以正交阵具有最好的计算稳定性。这说明我们建立线性的数学模型时,要尽量选择近于正交的数据来建立方程组。 在MATLAB或Octave可以用cond(A)指令计算A的条件数。上面例子中κ(A) = 6099.6. 10.2 支点对计算的影响 高斯消去法几乎是线性代数各种计算的基本手段。它不仅用来化简矩阵计算行列式。对线性方程组的求解,把方程右边的列向量拼入左边的矩阵,成为增广矩阵( A , b ),然后对它进行行间的变换,直至左上角部分变成三角阵,然后对照右边最后一列,判断方程是否无解,若有解则用右边三角阵部分迭代求解,多解时则同样可以迭代解出零空间的线性无关向量。 矩阵求逆,则把单位阵拼入左边成为增广矩阵( A , I ),右边部分记录了所有的行变换,与解方程一样,先从上到下,用支点( pivot )即主对角线上的元素,消去对角线下非零元素,把左边部分变成上三角阵。然后从下到上消去对角线上非零元素。如果 A 是满秩的,增广阵终将成为( I , A -1 ),右边即是逆矩阵。在这从上到下,三角阵化的消去过程中,只要支点是非零的,我们不需要交换行来进行,这时增广矩阵的右边的子矩阵是个下三角矩阵 U ,而左边是个上三角的子矩阵 L ,这时的增广矩阵( U , L )实现了 LU 分解。 理论上,只要这个过程中的支点是非零元,用消去法解方程、求逆和做 LU 分解都是可以的。实际上仍然会遇到问题。看下面用第一行消去第二行第一列,做的 LU 分解。 条件数 κ(A)=2.6184尚属于良态,而κ(L) =10 8 ,κ(U) =0.9999*10 8 ,都是非常病态了,用这个分解做计算会带来很大的误差。问题在于计算过程中支点的数值太小,解决的办法是运用支点做消去法前,先搜寻支点所在位置及下面,从中选出最大元,交换这两行使得最大元在支点位置。对这个矩阵A,是先交换上下两行,然后再做消去法,这样有: 这时 κ(L) =1.0001,κ(U) =2.6182,都是良态的。所以在矩阵的计算中,为了减少误差经常需要交换行或列,这个步骤可能隐含在算法中,也可能需要表示在计算机函数的式子里。通常用置换矩阵P来表示这些行或列的交换,如在MATLAB或Octave中指令 =lu(A),指的是 PA = LU的分解。为了减少误差,分解指令 =lu(A),如果需要交换行,则把P吸收在G中,G=P T L,A=GU,这时G不再能保持L的下三角阵的形式了。 10.3 机器学习 人们走向理性,依赖于在意识层次上的逻辑求证。不明因果机理的预测和难以追踪判断过程的结论,都被视为迷信而被科学排斥。算术曾经是解决实际问题计算唯一可靠的途径,在那里应用问题分门别类地归纳成不同的类型,诸如鸡兔同笼、宝塔装灯等等,每个计算步骤和所得的数量,都有直观可以理解的含义。代数的方法偏离了直观推理的途径走向抽象,三个未知数的线性代数方程,已经难以用单向逻辑推理的路径来追踪它解法的含义。我们只能用严格的逻辑,来证明每一步的代数运算都是等价或蕴含原来问题的不同描述。由此,我们可以用简化了问题的计算答案来回答原来的问题。在理性求证的过程中,我们把解方程的代数方法看成可以信赖的中间站,将现实问题的各种关系表示成方程后,放弃了对解法计算的每一步的追踪判断,直接承认它的结果。物理等科学研究沿用这种思想,把实际问题描述成数学模型后,直接依赖于数学的分析和计算。 机器学习将代数方法的启示推向另一个高度。它不再依赖于人力把实践中的预测和判断问题描述成一个数学模型,而是运用一个带有众多可调参数的通用数学模型,直接利用拥有的数据来调节参数自行寻找适用于这一类数据的具体模型,以此应用解答预测和判断问题。 与代数的方法取代算术方法的困惑一样,机器学习的调整模型参数及应用模型的计算机制,在数学上都是精确有效的。但巨大数量的可变参数,难以把这简单数学模型的一个具体的辨识判断过程,解析成为像物理规律那样单纯过程的因果性机制,无法用简单逻辑推演的跟踪来获得理解。机器学习的智能渐渐走离我们理性的监督,却成为未来应用计算的利器。下面简单对此作介绍。 机器学习与人类经验公式和分类的基本计算是一样的,都是用线性的方法计算参数,找出与实验数据匹配最小误差的数学模型,以此用来预测未知。对经验公式,用的是线性回归,找出那个线性函数,它是个与实验数据误差最小的的超平面;对模式识别的分类,用逻辑回归,找出那个判别函数,它是个分隔两类样本的超平面,与实验数据的误差最小。最后它们都归结为确定那个超平面的线性代数计算。(注:这里的超平面,指 n 维几何空间中的 n-1 维平面,它不是指那种过原点作为 n-1 维线性子空间的超平面。) 在 n 维线性空间中,满足内积〈 z , a 〉 = b 的向量 z ,构成 n 维几何空间中的一个 n-1 维平面,将向量扩充到 n+1 维空间,令 x =(1, z T ) T , w =(-b, a T ) T ,这个内积可以表示为〈 x , w 〉 = 0. 线性回归( linear regression ) :在线性回归的数学模型中,假定有足够多描述事物的属性,表示为函数的变量,归纳了经验的数值公式是这些属性变量的线性函数,我们尽可能应用大量的实验数据,来统计出误差最小的模型的系数。具体计算如下。 假设 n 维的属性向量 x i 和公式结果标量 y i ,经验公式有线性的关系〈 x i , w 〉 = y i ,其中 w 是待定的参数向量。我们有 m 组实验数据, m n ,希望对所有的实验数据〈 x i , w 〉都非常靠近 y i . 在上一篇中提到,这是列满秩矩阵解线性方程组的问题,可以用最小二乘法求解。 把 m 个 n 维行向量 x i T 写成 m*n 矩阵 X , m 个 y i 列成向量 y 。设误差函数 J( w ) =1/2 ‖ X w - y ‖ ^2 = ( X w – y ) T ( X w – y )/2 ,计算问题是,求让 J( w )=( X w – y ) T ( X w – y )/2 取最小值的向量 w 0 . J( w ) 是个在 n 维空间中的二阶幂函数的曲面,它有唯一的极小值在梯度为零处,即梯度 X T ( X w – y ) =0 ,这可以表示成正规方程 X T X w =X T y . 它有唯一解 w 0 =(X T X) -1 X T y. 在大数据的情况下,这个公式解的计算量太大,我们可以采用迭代的方式求解,这通常从任何一个 w 的初值开始,沿着这个梯度 X T ( X w – y ) 下降的方向,迭代逼近这个极值点 w 0 . 逻辑回归( logistic regression ):模式识别是进行逻辑分类,它假定在足够多属性为坐标的多维空间中,用一个超平面把空间分成两半,分别对应着不同的逻辑值。逻辑回归用来确定这个将实验样本中分类误差最小的超平面。 在 n 维线性空间中,满足内积〈 z , a 〉 = b 的向量 x ,在 a 方向上投影的长度都是 b/ ‖ a ‖,这些 x 向量的端点构成的 n-1 维的平面,这超平面与原点的距离是 b/ ‖ a ‖。空间上面的点依指向它的向量 z 在 a 上面的投影被这超平面分成两个部分,依内积〈 z , a 〉是否大于 b ,确定它们属于哪一类。这是模式辨识和机器学习中分类最为基本的直观图像。 采用上面扩充向量的符号,这个超平面是由 w 的数值来确定的,所谓的学习是用样本的数据 x i 和对应的 0 或 1 的分类值 y i ,来计算这个 w 。数学模型的预测值是由判断函数 g( 〈 x , w 〉 ) 来确定,理论上 g( 〈 x , w 〉 ) = (sign( 〈 x , w 〉 )+1)/2 ,但为了便于计算梯度,多数取 sigmoid 函数 g(t)=1/(1+exp(-t)). 我们同样用求误差函数 J( w ) =1/2 ‖ g(X w) - y ‖ ^2 = (g( X w) – y ) T (g( X w) – y )/2 最小的方法,来得到极值点 w 0 ,用迭代的方法沿着梯度下降的方向,逼近这个极值点 w 0. 10.4 世界是线性的吗? 上一节说,机器学习的核心算法线性回归和逻辑回归,应用的都是线性模型。这也是经验公式和模式识别的基础。我们的世界都是线性的吗? 开篇时也说,令人感到幸运和疑惑的是,科学研究上凡是用到数学,有着漂亮定性和定量结果的,基本上可以变成一类线性系统,或者用它来逼近。为什么? 世界是线性的吗?其实不是,只是非线性的系统正向计算不难,但难以反向求解,更无法分部综合。我们能用数学工具取得很好结果的,基本上是线性系统。力学是线性动态系统,绝大多数电路是线性系统;描述连续介质,能量和场的波动,传导,稳定状态的数理方程是线性系统。非线性系统可以用两种方法将它应用线性系统的方法来处理。一是可以在足够小误差的邻域看成是线性的;微分几何用曲面上点的邻域,投影到与之相切的线性空间来计算;非线性动态系统控制稳定或跟踪已知轨迹时,可以用线性系统来近似。二是在应用上尽可能把系统处理成线性的,而把非线性部分局限在一小处或作为输入,以便分析和综合。难以照此办理的许多非线性系统即使有精确简单的方程描述,如混沌系统、联结主义模型,无论在定量和定性上,都难以深入。科学和技术与一切在竞争博弈中的发展一样,都是路径依赖的。某一方向取得突破,人们蜂拥而至,用先创的概念作为后建的基石,建构我们理解的世界。科学发展至今,解释事物的理论无所不在,我们似乎已经充分了解了这个世界,其实这不过是看见在科学这条高速公路旁的城镇,公路不可达之处是不可知的荒野。但是无论如何,线性代数已是现代科学知识的基础构件,我们必须能在头脑中想象它。 机器学习的线性模型怎么用在这个并非是线性的世界?线性回归怎么拟合一条曲线上的数据?怎么用一个超平面分划由一个曲面界定的类别?答案在于增加维数。空间中任意的样本点集,都可以看作是高维空间中点集的投影,它们可以在高维空间的一个超平面上,或被一个超平面分类。 例如,实验数据 (1,4), (2, 9), (3, 20), (4, 37), (5, 60) 是二维空间的曲线 y = 3x 2 – 4x + 5 上的点,在实验中增加一个属性 x 2 = x 1 2 的测量,上面的样本点便成为 (1,1, 4), (2, 4, 9), (3, 9, 20), (4, 16, 37), (5, 25, 60) 它们在三维空间 y =3x 2 – 4x 1 + 5 的平面上。增加几个非线性函数作为新的属性,任何曲面都可以用这些具有新属性变量的线性函数来近似。模式识别中的超平面分类也是如此。这样的处理早已在科研和工程上广泛地应用,它类比于将非线性部分局限在一些部件中,在工程上把系统仍然作为一个线性系统来分析和综合。 10.5 结语 现代公理化的数学,要求尽量抽象,从基本定义出发,不借助任何具象,纯粹形式推理来得到结论。这是严谨化确认的要求,但这不是理解、记忆和运用之道。人脑是按联想方式工作的,不能下意识地推及逻辑之远。我们对世界的理解是用象征符号,在头脑中构建的想象。所谓的课程学习是通过语言,将别人的想象串行地传递给自己,在头脑中重构自己的想象。严格数学的训练沿用形式逻辑推理,只能保证这个传递没有形式上的误差,并不能保证能够建构相同的想象。没有想象就难以记忆和应用。所以学数学就像学剑一样,必须首先心中有剑,从概念的定义开始就要有符合这语义的具象,然后沿着定理推论的展开,逐步剔除不合适的想象,构建符合逻辑的图像。学习中的理解是将语言能指的符号串,与所指的想象对应的过程。形式推理永远不能触及所指的内容,所以形式推理的机器没有理解力。能够产生理解和灵感的,是在头脑的想象世界中看到的内容。这需要拥有丰富的具体实例的素材才能构建。因此学习数学只记忆定义、证明和定理不能走远,也没有透视现象的直觉。严谨的数学证明当然很重要,但那只是用来一维地传递信息,和在逻辑上证实想象的真实性的必要手段。把握数学内容的,是能在想象中出现的图像。练习和应用是学好一门课的不二途径。。 (系列终)
个人分类: 科普|16840 次阅读|32 个评论
【2017年学术会议资讯(上)】-人工智能&模式识别&机器学习
热度 1 Chenfiona 2017-3-8 10:11
春天到,花儿笑,17 年的会议来报到!(^U^) 当您骑着小黄车环游大北京时,小编捧着一颗热爱科研的心,也在各大学术网站畅游了一番,真是收获满满!再望望窗外的大好春光,那心情就更美滋儿了~ 于是决定大放福利!本周特奉上 2017 年 IJAC 相关领域国际学术会议资讯(上)(下篇还有更多其他领域会讯,敬请关注 ~ ),没准今年,您的论文就会像往年一样,在某次会议中,出现在 IJAC 展台上,在世界舞台闪亮登场呢! 每年,IJAC 小编们都会在近 10 个国际会议上宣传期刊和发表论文。看!那些年我们一起约过的 “ 会 ”~ 图一: 2013 年 IJAC 在 IJCAI 的展台 图二: IJAC 陈列在 Springer 展台 图三: IJAC 作者姜钟平教授在会场与编辑交流 图四: CCAI 会场读者热心咨询 IJAC 小编 来吧,2017年,继续跟小编一起,欣赏世界美景、邂逅学界上神、徜徉知识海洋,约吗? 国际学术会议参考资讯(上) 人工智能 模式识别 机器学习 ● ICASSP 全称: International Conference on Acoustics, Speech and Signal Processing 举办地点: 美国,新奥尔良 举办时间: 2017年3月5-9日 官方网址: http://www.ieee-icassp2017.org/ 网络评价: 全世界最大的的声学、语音与信号处理及其应用方面的顶级会议,每年一届 ● VALSE 全称: Vision And Learning Seminar 举办地点:中国,厦门 举办时间: 2017年4月21-23日 官方网址: http://valser.org/ 网络评价:计算机视觉、模式识别,机器学习、多媒体技术等相关领域华人青年学者最具影响力的交流平台,每年一届 ● COLT 全称: Annual Conference on Learning Theory 举办地点:荷兰,阿姆斯特丹 举办时间: 2017年7月7-10日 官方网址: http://www.learningtheory.org/colt2017/ 网络评价:机器学习最好的会议之一,每年一届 ● CVPR 全称: IEEE Conference on Computer Vision and Pattern Recognition 举办地点:美国,夏威夷 举办时间: 2017年7月21-26日 官方网址: http://cvpr2017.thecvf.com/ 网络评价:计算机视觉领域三大顶会之一,每年一届 ● SIGGRAPH 全称: Special Interest Group on Computer Graphics 举办地点:美国,洛杉矶 举办时间: 2017年7月30日-8月3日 官方网址: http://s2017.siggraph.org/ 网络评价:计算机图形学领域最权威、影响力最大的国际会议,每年一届 ● ICML 全称: International Conference on Machine Learning 举办地点:澳大利亚,悉尼 举办时间: 2017年8月6-11日 官方网址: https://2017.icml.cc/ 网络评价:机器学习方面最好的会议之一,每年一届 ● KDD 全称: ACM SIGKDD Conference on Knowledge Discovery and Data Mining 举办地点:加拿大,哈利法克斯 举办时间: 2017年8月13-17日 官方网址: http://www.kdd.org/ 网络评价:知识发现与数据挖掘方面最好的会议,每年一届 ● IJCAI 全称: International Joint Conference on Artificial Intelligence 举办地点:澳大利亚,墨尔本 举办时间: 2017年8月19-25日 官方网址: http://ijcai.org/ 网络评价:国际顶级人工智能联合大会,每年一届 ● ICIP 全称: IEEE International Conference on Image Processing 举办地点:中国,北京 举办时间: 2017年9月17-20日 官方网址: http://2017.ieeeicip.org/ 网络评价:计算机应用技术、信号与信息处理方面的大型国际会议,每年一届 ● ECML-PKDD 全称: European Conference on Machine Learning and Principles and Practice of Knowledge Discovery 举办地点:马其顿,斯科普里 举办时间: 2017年9月18-22日 截稿日期: 2017年3月(参见官网) 官方网址: http://ecmlpkdd2017.ijs.si/ 网络评价:知识发现和机器学习方面的重要会议,在欧洲举行,每年一届 ● CCCV 全称: The Chinese Conference on Computer Vision 举办地点:中国,天津 举办时间: 2017年10月12-14日 截稿日期: 2017年5月31日 官方网址: http://ccf-cccv.org/2017/ 网络评价:国内计算机视觉领域最主要的学术活动之一,每年一届 ● ICCV 全称: IEEE International Conference on Computer Vision 举办地点:意大利,威尼斯 举办时间: 2017年10月22-29日 截稿日期: 2017年3月17日 官方网址: http://iccv2017.thecvf.com/ 网络评价:计算机视觉领域三大顶会之一,两年一届 ● ACM MM 全称: ACM International Conference on Multimedia 举办地点:美国,山景城 举办时间: 2017年10月23-27日 截稿日期: 2017年4月7日 官方网址: http://www.acmmm.org/2017/ 网络评价:计算机学会图像图形领域 A类会议,每年一届 ● ICDM 全称:IEEE International Conference on Data Mining 举办地点:美国,新奥尔良 举办时间:2017年11月18-21日 截稿日期:2017年6月5日 官方网址: http://icdm2017.bigke.org/ 网络评价:数据挖掘重要的国际会议之一,每年一届 ●NIPS 全称:Neural Information Processing Systems Conference 举办地点:美国,长滩 举办时间:2017年12月4-9日 官方网址: https://nips.cc/Conferences/2017 网络评价:神经计算方面最好的会议之一,每年一届 ● AAAI 全称: AAAI Conference on Artificial Intelligence 举办地点:美国,新奥尔良 举办时间: 2018年2月4-10日 截稿日期:待发布 官方网址: http://www.aaai.org/Conferences/AAAI/aaai18.php 网络评价:人工智能领域顶级会议,每年一届 ● WCCI 全称: IEEE World Congress on Computational Intelligence 举办地点:巴西,里约热内卢 举办时间: 2018年7月8-13日 截稿日期: 2018年1月15日 官方网址: http://www.ecomp.poli.br/~wcci2018/ 网络评价:智能计算领域顶级技术盛会,两年一届 ●ECCV 全称: Europeon Conference on Computer Vision 举办地点:德国,慕尼黑 举办时间: 2018年 9 月 8-14 日 官方网址: https://eccv2018.org/ 网络评价:计算机视觉领域三大顶会之一,两年一届 ● CCAI 全称: The Chinese Congress on Artificial Intelligence 举办地点:近期发布 举办时间:近期发布 官方网址: http://ccai.caai.cn/ ( 2016会议官网) 网络评价:国内人工智能领域重要学术会议,每年一届 以上内容系 IJAC小编个人整理,供各位读者参考。如有错误 或补充 ,欢迎文末留言。小编期待您的批评指正! 本期会议资讯详细列表下载地址: 中文版: IJAC分享版-国际学术会议参考资讯-上.pdf 英文版: International Academic Conferences List-1-English Version.pdf 下期会讯主要涵盖:自动控制 /机器人 类,记得持续关注喔 ~(^∀^) IJAC的出版服务不会止于论文发表 ,小编还会提供 最新会议资讯、研究成果、科普常识、美图美文! 更多精彩内容,敬请关注: IJAC官方网站: 1) http://www.springer.com/11633 2) http://www.ijac.net 微信公众号: IJAC 新浪微博: IJAC-国际自动化与计算杂志 Twitter: IJAC_Journal Linked in(领英): Int. J. of Automation and Computing 本文编辑:欧梨成
个人分类: 最新资讯|3189 次阅读|1 个评论
我的地盘:Query-Specific Optimal Networks
jingyanwang 2017-2-15 00:40
微信公众号 readpami 求关注,求扩散,求打赏 QUINT: On Query-Specific Optimal Networks Li, Liangyue, Yuan Yao, Jie Tang, Wei Fan, and Hanghang Tong In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 985-994. ACM, 2016. Query-Specific Optimal Networks:我的地盘 RED.pdf
个人分类: RED|3077 次阅读|0 个评论
[转载]Deep Learning学习笔记整理
pukin 2017-2-2 19:02
目录: 一、概述 二、背景 三、人脑视觉机理 四、关于特征 4.1、特征表示的粒度 4.2、初级(浅层)特征表示 4.3、结构性特征表示 4.4、需要有多少个特征? 五、Deep Learning的基本思想 六、浅层学习(Shallow Learning)和深度学习(Deep Learning) 七、Deep learning与Neural Network 八、Deep learning训练过程 8.1、传统神经网络的训练方法 8.2、deep learning训练过程 九、Deep Learning的常用模型或者方法 9.1、AutoEncoder自动编码器 9.2、Sparse Coding稀疏编码 9.3、Restricted Boltzmann Machine(RBM)限制波尔兹曼机 9.4、Deep BeliefNetworks深信度网络 9.5、Convolutional Neural Networks卷积神经网络 十、总结与展望 十一、参考文献和Deep Learning学习资源 一、概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生“自我”的意识。是的,在人类和大量现成数据的帮助下,电脑可以表现的十分强大,但是离开了这两者,它甚至都不能分辨一个喵星人和一个汪星人。 图灵(图灵,大家都知道吧。计算机和人工智能的鼻祖,分别对应于其著名的“图灵机”和“图灵测试”)在 1950 年的论文里,提出图灵试验的设想,即,隔墙对话,你将不知道与你谈话的,是人还是电脑。这无疑给计算机,尤其是人工智能,预设了一个很高的期望值。但是半个世纪过去了,人工智能的进展,远远没有达到图灵试验的标准。这不仅让多年翘首以待的人们,心灰意冷,认为人工智能是忽悠,相关领域是“伪科学”。 但是自 2006 年以来,机器学习领域,取得了突破性的进展。图灵试验,至少不是那么可望而不可及了。至于技术手段,不仅仅依赖于云计算对大数据的并行处理能力,而且依赖于算法。这个算法就是,Deep Learning。借助于 Deep Learning 算法,人类终于找到了如何处理“抽象概念”这个亘古难题的方法。 2012年6月,《纽约时报》披露了Google Brain项目,吸引了公众的广泛关注。这个项目是由著名的斯坦福大学的机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家JeffDean共同主导,用16000个CPU Core的并行计算平台训练一种称为“深度神经网络”(DNN,Deep Neural Networks)的机器学习模型(内部共有10亿个节点。这一网络自然是不能跟人类的神经网络相提并论的。要知道,人脑中可是有150多亿个神经元,互相连接的节点也就是突触数更是如银河沙数。曾经有人估算过,如果将一个人的大脑中所有神经细胞的轴突和树突依次连接起来,并拉成一根直线,可从地球连到月亮,再从月亮返回地球),在语音识别和图像识别等领域获得了巨大的成功。 项目负责人之一Andrew称:“我们没有像通常做的那样自己框定边界,而是直接把海量数据投放到算法中,让数据自己说话,系统会自动从数据中学习。”另外一名负责人Jeff则说:“我们在训练的时候从来不会告诉机器说:‘这是一只猫。’系统其实是自己发明或者领悟了“猫”的概念。” 2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译和中文语音合成,效果非常流畅。据报道,后面支撑的关键技术也是DNN,或者深度学习(DL,DeepLearning)。 2013年1月,在百度年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个成立的就是“深度学习研究所”(IDL,Institue of Deep Learning)。 为什么拥有大数据的互联网公司争相投入大量资源研发深度学习技术。听起来感觉deeplearning很牛那样。那什么是deep learning?为什么有deep learning?它是怎么来的?又能干什么呢?目前存在哪些困难呢?这些问题的简答都需要慢慢来。咱们先来了解下机器学习(人工智能的核心)的背景。 二、背景 机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。机器能否像人类一样能具有学习能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人。又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题(呵呵,人工智能正常的轨道没有很大的发展,这些什么哲学伦理啊倒发展的挺快。什么未来机器越来越像人,人越来越像机器啊。什么机器会反人类啊,ATM是开第一枪的啊等等。人类的思维无穷啊)。 机器学习虽然发展了几十年,但还是存在很多没有良好解决的问题: 例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等等。目前我们通过机器学习去解决这些问题的思路都是这样的(以视觉感知为例子): 从开始的通过传感器(例如CMOS)来获得数据。然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的,也存在很多的paper和研究。 而中间的三部分,概括起来就是特征表达。良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。但,这块实际中一般都是人工完成的。靠人工提取特征。 截止现在,也出现了不少NB的特征(好的特征应具有不变性(大小、尺度和旋转等)和可区分性):例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并且SIFT具有很强的可区分性,的确让很多问题的解决变为可能。但它也不是万能的。 然而,手工地选取特征是一件非常费力、启发式(需要专业知识)的方法,能不能选取好很大程度上靠经验和运气,而且它的调节需要大量的时间。既然手工选取特征不太好,那么能不能自动地学习一些特征呢?答案是能!Deep Learning就是用来干这个事情的,看它的一个别名UnsupervisedFeature Learning,就可以顾名思义了,Unsupervised的意思就是不要人参与特征的选取过程。 那它是怎么学习的呢?怎么知道哪些特征好哪些不好呢?我们说机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为的学科。好,那我们人的视觉系统是怎么工作的呢?为什么在茫茫人海,芸芸众生,滚滚红尘中我们都可以找到另一个她(因为,你存在我深深的脑海里,我的梦里 我的心里 我的歌声里……)。人脑那么NB,我们能不能参考人脑,模拟人脑呢?(好像和人脑扯上点关系的特征啊,算法啊,都不错,但不知道是不是人为强加的,为了使自己的作品变得神圣和高雅。) 近几十年以来,认知神经科学、生物学等等学科的发展,让我们对自己这个神秘的而又神奇的大脑不再那么的陌生。也给人工智能的发展推波助澜。 三、人脑视觉机理 1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”:可视皮层是分级的: 我们看看他们做了什么。1958 年,DavidHubel 和Torsten Wiesel 在 JohnHopkins University,研究瞳孔区域与大脑皮层神经元的对应关系。他们在猫的后脑头骨上,开了一个3 毫米的小洞,向洞里插入电极,测量神经元的活跃程度。 然后,他们在小猫的眼前,展现各种形状、各种亮度的物体。并且,在展现每一件物体时,还改变物体放置的位置和角度。他们期望通过这个办法,让小猫瞳孔感受不同类型、不同强弱的刺激。 之所以做这个试验,目的是去证明一个猜测。位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。经历了很多天反复的枯燥的试验,同时牺牲了若干只可怜的小猫,David Hubel 和Torsten Wiesel 发现了一种被称为“方向选择性细胞(Orientation Selective Cell)”的神经元细胞。当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。 这个发现激发了人们对于神经系统的进一步思考。神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。 这里的关键词有两个,一个是抽象,一个是迭代。从原始信号,做低级抽象,逐渐向高级抽象迭代。人类的逻辑思维,经常使用高度抽象的概念。 例如,从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。 这个生理学的发现,促成了计算机人工智能,在四十年后的突破性发展。 总的来说,人的视觉系统的信息处理是分级的。从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。而抽象层面越高,存在的可能猜测就越少,就越利于分类。例如,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。 敏感的人注意到关键词了:分层。而Deep learning的deep是不是就表示我存在多少层,也就是多深呢?没错。那Deep learning是如何借鉴这个过程的呢?毕竟是归于计算机来处理,面对的一个问题就是怎么对这个过程建模? 因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。 因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。所以在说Deep Learning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。 四、关于特征 特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的。如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度。那对于特征,我们需要考虑什么呢? 4.1、特征表示的粒度 学习算法在一个什么粒度上的特征表示,才有能发挥作用?就一个图片来说,像素级的特征根本没有价值。例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。 4.2、初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表示才有用呢? 1995 年前后,Bruno Olshausen和 David Field 两位学者任职 Cornell University,他们试图同时用生理学和计算机的手段,双管齐下,研究视觉问题。 他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为 16x16 像素,不妨把这400个碎片标记为 S , i = 0,.. 399。接下来,再从这些黑白风景照片中,随机提取另一个碎片,尺寸也是 16x16 像素,不妨把这个碎片标记为 T。 他们提出的问题是,如何从这400个碎片中,选取一组碎片,S , 通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片 T,尽可能相似,同时,S 的数量尽可能少。用数学的语言来描述,就是: Sum_k (a * S ) -- T, 其中 a 是在叠加碎片 S 时的权重系数。 为解决这个问题,Bruno Olshausen和 David Field 发明了一个算法,稀疏编码(Sparse Coding)。 稀疏编码是一个重复迭代的过程,每次迭代分两步: 1)选择一组 S ,然后调整 a ,使得Sum_k (a * S ) 最接近 T。 2)固定住 a ,在 400 个碎片中,选择其它更合适的碎片S’ ,替代原先的 S ,使得Sum_k (a * S’ ) 最接近 T。 经过几次迭代后,最佳的 S 组合,被遴选出来了。令人惊奇的是,被选中的 S ,基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。 Bruno Olshausen和 David Field 的算法结果,与 David Hubel 和Torsten Wiesel 的生理发现,不谋而合! 也就是说,复杂图形,往往由一些基本结构组成。比如下图:一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。而其他基本edge没有贡献,因此均为0 。 另外,大牛们还发现,不仅图像存在这个规律,声音也存在。他们从未标注的声音中发现了20种基本的声音结构,其余的声音可以由这20种基本结构合成。 4.3、结构性特征表示 小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性的图形如何表示呢?这就需要更高层次的特征表示,比如V2,V4。因此V1看像素级是像素级。V2看V1是像素级,这个是层次递进的,高层表达由底层表达的组合而成。专业点说就是基basis。V1取提出的basis是边缘,然后V2层是V1层这些basis的组合,这时候V2区得到的又是高一层的basis。即上一层的basis组合的结果,上上层又是上一层的组合basis……(所以有大牛说Deep learning就是“搞基”,因为难听,所以美其名曰Deep learning或者Unsupervised Feature Learning) 直观上说,就是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature。 在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了(那咱们分辨car或者face是不是容易多了): 从文本来说,一个doc表示什么意思?我们描述一件事情,用什么来表示比较合适?用一个一个字嘛,我看不是,字就是像素级别了,起码应该是term,换句话说每个doc都由term构成,但这样表示概念的能力就够了嘛,可能也不够,需要再上一步,达到topic级,有了topic,再到doc就合理。但每个层次的数量差距很大,比如doc表示的概念-topic(千-万量级)-term(10万量级)-word(百万量级)。 一个人在看一个doc的时候,眼睛看到的是word,由这些word在大脑里自动切词形成term,在按照概念组织的方式,先验的学习,得到topic,然后再进行高层次的learning。 4.4、需要有多少个特征? 我们知道需要层次的特征构建,由浅入深,但每一层该有多少个特征呢? 任何一种方法,特征越多,给出的参考信息就越多,准确性会得到提升。但特征多意味着计算复杂,探索的空间大,可以用来训练的数据在每个特征上就会稀疏,都会带来各种问题,并不一定特征越多越好。 好了,到了这一步,终于可以聊到Deep learning了。上面我们聊到为什么会有Deep learning(让机器自动学习良好的特征,而免去人工选取过程。还有参考人的分层视觉处理系统),我们得到一个结论就是Deep learning需要多层来获得更抽象的特征表达。那么多少层才合适呢?用什么架构来建模呢?怎么进行非监督训练呢? 五、Deep Learning的基本思想 假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =S1=S2=…..=Sn = O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失(呵呵,大牛说,这是不可能的。信息论中有个“信息逐层丢失”的说法(信息处理不等式),设处理a信息得到b,再对b处理得到c,那么可以证明:a和c的互信息不会超过a和b的互信息。这表明信息处理不会增加信息,大部分处理会丢失信息。当然了,如果丢掉的是没用的信息那多好啊),保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。现在回到我们的主题Deep Learning,我们需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设我们设计了一个系统S(有n层),我们通过调整系统中参数,使得它的输出仍然是输入I,那么我们就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。 对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。通过这种方式,就可以实现对输入信息进行分级表达了。 另外,前面是假设输出严格地等于输入,这个限制太严格,我们可以略微地放松这个限制,例如我们只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的Deep Learning方法。上述就是Deep Learning的基本思想。 六、浅层学习(Shallow Learning)和深度学习(Deep Learning) 浅层学习是机器学习的第一次浪潮。 20世纪80年代末期,用于人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。这个热潮一直持续到今天。人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习统计规律,从而对未知事件做预测。这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。这个时候的人工神经网络,虽也被称作多层感知机(Multi-layer Perceptron),但实际是种只含有一层隐层节点的浅层模型。 20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。这些模型无论是在理论分析还是应用中都获得了巨大的成功。相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。 深度学习是机器学习的第二次浪潮。 2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要观点:1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。 当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数) 深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。 七、Deep learning与Neural Network 深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是无监督学习的一种。 深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。 Deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展。大约二三十年前,neural network曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面: 1)比较容易过拟合,参数比较难tune,而且需要不少trick; 2)训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优; 所以中间有大约20多年的时间,神经网络被关注很少,这段时间基本上是SVM和boosting算法的天下。但是,一个痴心的老先生Hinton,他坚持了下来,并最终(和其它人一起Bengio、Yann.lecun等)提成了一个实际可行的deep learning框架。 Deep learning与传统的神经网络之间有相同的地方也有很多不同。 二者的相同在于deep learning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个logistic regression模型;这种分层结构,是比较接近人类大脑的结构的。 而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是back propagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而deep learning整体上是一个layer-wise的训练机制。这样做的原因是因为,如果采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion(梯度扩散)。这个问题我们接下来讨论。 八、Deep learning训练过程 8.1、传统神经网络的训练方法为什么不能用在深度神经网络 BP算法作为传统训练多层网络的典型算法,实际上对仅含几层网络,该训练方法就已经很不理想。深度结构(涉及多个非线性处理单元层)非凸目标代价函数中普遍存在的局部最小是训练困难的主要来源。 BP算法存在的问题: (1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小; (2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生); (3)一般,我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习; 8.2、deep learning训练过程 如果对所有层同时训练,时间复杂度会太高;如果每次训练一层,偏差就会逐层传递。这会面临跟上面监督学习中相反的问题,会严重欠拟合(因为深度网络的神经元和参数太多了)。 2006年,hinton提出了在非监督数据上建立多层神经网络的一个有效方法,简单的说,分为两步,一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是: 1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。 2)当所有层训练完后,Hinton使用wake-sleep算法进行调优。 将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。 1)wake阶段:认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”。 2)sleep阶段:生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。 deep learning训练过程具体如下: 1)使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练): 采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程): 具体的,先用无标定数据训练第一层,训练时先学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数; 2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调): 基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。 九、Deep Learning的常用模型或者方法 9.1、AutoEncoder自动编码器 Deep Learning最简单的一种方法是利用人工神经网络的特点,人工神经网络(ANN)本身就是具有层次结构的系统,如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表原信息的主要成分。 具体过程简单的说明如下: 1)给定无标签数据,用非监督学习学习特征: 在我们之前的神经网络中,如第一个图,我们输入的样本是有标签的,即(input, target),这样我们根据当前输出和target(label)之间的差去改变前面各层的参数,直到收敛。但现在我们只有无标签数据,也就是右边的图。那么这个误差怎么得到呢? 如上图,我们将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示,那么我们怎么知道这个code表示的就是input呢?我们加一个decoder解码器,这时候decoder就会输出一个信息,那么如果输出的这个信息和一开始的输入信号input是很像的(理想情况下就是一样的),那很明显,我们就有理由相信这个code是靠谱的。所以,我们就通过调整encoder和decoder的参数,使得重构误差最小,这时候我们就得到了输入input信号的第一个表示了,也就是编码code了。因为是无标签数据,所以误差的来源就是直接重构后与原输入相比得到。 2)通过编码器产生特征,然后训练下一层。这样逐层训练: 那上面我们就得到第一层的code,我们的重构误差最小让我们相信这个code就是原输入信号的良好表达了,或者牵强点说,它和原信号是一模一样的(表达不一样,反映的是一个东西)。那第二层和第一层的训练方式就没有差别了,我们将第一层输出的code当成第二层的输入信号,同样最小化重构误差,就会得到第二层的参数,并且得到第二层输入的code,也就是原输入信息的第二个表达了。其他层就同样的方法炮制就行了(训练这一层,前面层的参数都是固定的,并且他们的decoder已经没用了,都不需要了)。 3)有监督微调: 经过上面的方法,我们就可以得到很多层了。至于需要多少层(或者深度需要多少,这个目前本身就没有一个科学的评价方法)需要自己试验调了。每一层都会得到原始输入的不同的表达。当然了,我们觉得它是越抽象越好了,就像人的视觉系统一样。 到这里,这个AutoEncoder还不能用来分类数据,因为它还没有学习如何去连结一个输入和一个类。它只是学会了如何去重构或者复现它的输入而已。或者说,它只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。那么,为了实现分类,我们就可以在AutoEncoder的最顶的编码层添加一个分类器(例如罗杰斯特回归、SVM等),然后通过标准的多层神经网络的监督训练方法(梯度下降法)去训练。 也就是说,这时候,我们需要将最后层的特征code输入到最后的分类器,通过有标签样本,通过监督学习进行微调,这也分两种,一个是只调整分类器(黑色部分): 另一种:通过有标签样本,微调整个系统:(如果有足够多的数据,这个是最好的。end-to-end learning端对端学习) 一旦监督训练完成,这个网络就可以用来分类了。神经网络的最顶层可以作为一个线性分类器,然后我们可以用一个更好性能的分类器去取代它。 在研究中可以发现,如果在原有的特征中加入这些自动学习得到的特征可以大大提高精确度,甚至在分类问题中比目前最好的分类算法效果还要好! AutoEncoder存在一些变体,这里简要介绍下两个: Sparse AutoEncoder稀疏自动编码器: 当然,我们还可以继续加上一些约束条件得到新的Deep Learning方法,如:如果在AutoEncoder的基础上加上L1的Regularity限制(L1主要是约束每一层中的节点中大部分都要为0,只有少数不为0,这就是Sparse名字的来源),我们就可以得到Sparse AutoEncoder法。 如上图,其实就是限制每次得到的表达code尽量稀疏。因为稀疏的表达往往比其他的表达要有效(人脑好像也是这样的,某个输入只是刺激某些神经元,其他的大部分的神经元是受到抑制的)。 Denoising AutoEncoders降噪自动编码器: 降噪自动编码器DA是在自动编码器的基础上,训练数据加入噪声,所以自动编码器必须学习去去除这种噪声而获得真正的没有被噪声污染过的输入。因此,这就迫使编码器去学习输入信号的更加鲁棒的表达,这也是它的泛化能力比一般编码器强的原因。DA可以通过梯度下降算法去训练。 9.2、Sparse Coding稀疏编码 如果我们把输出必须和输入相等的限制放松,同时利用线性代数中基的概念,即O = a1*Φ1 + a2*Φ2+….+ an*Φn, Φi是基,ai是系数,我们可以得到这样一个优化问题: Min |I – O|,其中I表示输入,O表示输出。 通过求解这个最优化式子,我们可以求得系数ai和基Φi,这些系数和基就是输入的另外一种近似表达。 因此,它们可以用来表达输入I,这个过程也是自动学习得到的。如果我们在上述式子上加上L1的Regularity限制,得到: Min |I – O| + u*(|a1| + |a2| + … + |an |) 这种方法被称为Sparse Coding。通俗的说,就是将一个信号表示为一组基的线性组合,而且要求只需要较少的几个基就可以将信号表示出来。“稀疏性”定义为:只有很少的几个非零元素或只有很少的几个远大于零的元素。要求系数 ai 是稀疏的意思就是说:对于一组输入向量,我们只想有尽可能少的几个系数远大于零。选择使用具有稀疏性的分量来表示我们的输入数据是有原因的,因为绝大多数的感官数据,比如自然图像,可以被表示成少量基本元素的叠加,在图像中这些基本元素可以是面或者线。同时,比如与初级视觉皮层的类比过程也因此得到了提升(人脑有大量的神经元,但对于某些图像或者边缘只有很少的神经元兴奋,其他都处于抑制状态)。 稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量来更高效地表示样本数据。虽然形如主成分分析技术(PCA)能使我们方便地找到一组“完备”基向量,但是这里我们想要做的是找到一组“超完备”基向量来表示输入向量(也就是说,基向量的个数比输入向量的维数要大)。超完备基的好处是它们能更有效地找出隐含在输入数据内部的结构与模式。然而,对于超完备基来说,系数ai不再由输入向量唯一确定。因此,在稀疏编码算法中,我们另加了一个评判标准“稀疏性”来解决因超完备而导致的退化(degeneracy)问题。( 详细过程请参考:UFLDL Tutorial稀疏编码 ) 比如在图像的Feature Extraction的最底层要做Edge Detector的生成,那么这里的工作就是从Natural Images中randomly选取一些小patch,通过这些patch生成能够描述他们的“基”,也就是右边的8*8=64个basis组成的basis,然后给定一个test patch, 我们可以按照上面的式子通过basis的线性组合得到,而sparse matrix就是a,下图中的a中有64个维度,其中非零项只有3个,故称“sparse”。 这里可能大家会有疑问,为什么把底层作为Edge Detector呢?上层又是什么呢?这里做个简单解释大家就会明白,之所以是Edge Detector是因为不同方向的Edge就能够描述出整幅图像,所以不同方向的Edge自然就是图像的basis了……而上一层的basis组合的结果,上上层又是上一层的组合basis……(就是上面第四部分的时候咱们说的那样) Sparse coding分为两个部分: 1)Training阶段:给定一系列的样本图片 ,我们需要学习得到一组基 ,也就是字典。 稀疏编码是k-means算法的变体,其训练过程也差不多(EM算法的思想:如果要优化的目标函数包含两个变量,如L(W, B),那么我们可以先固定W,调整B使得L最小,然后再固定B,调整W使L最小,这样迭代交替,不断将L推向最小值。EM算法可以见我的博客:“ 从最大似然到EM算法浅解 ”)。 训练过程就是一个重复迭代的过程,按上面所说,我们交替的更改a和Φ使得下面这个目标函数最小。 每次迭代分两步: a)固定字典Φ ,然后调整a ,使得上式,即目标函数最小(即解LASSO问题)。 b)然后固定住a ,调整Φ ,使得上式,即目标函数最小(即解凸QP问题)。 不断迭代,直至收敛。这样就可以得到一组可以良好表示这一系列x的基,也就是字典。 2)Coding阶段:给定一个新的图片x,由上面得到的字典,通过解一个LASSO问题得到稀疏向量a。这个稀疏向量就是这个输入向量x的一个稀疏表达了。 例如: 9.3、Restricted Boltzmann Machine (RBM)限制波尔兹曼机 假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Boltzmann 分布,我们称这个模型是Restricted BoltzmannMachine (RBM)。 下面我们来看看为什么它是Deep Learning方法。首先,这个模型因为是二部图,所以在已知v的情况下,所有的隐藏节点之间是条件独立的(因为节点之间不存在连接),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隐藏层h的情况下,所有的可视节点都是条件独立的。同时又由于所有的v和h满足Boltzmann 分布,因此,当输入v的时候,通过p(h|v) 可以得到隐藏层h,而得到隐藏层h之后,通过p(v|h)又能得到可视层,通过调整参数,我们就是要使得从隐藏层得到的可视层v1与原来的可视层v如果一样,那么得到的隐藏层就是可视层另外一种表达,因此隐藏层可以作为可视层输入数据的特征,所以它就是一种Deep Learning方法。 如何训练呢?也就是可视层节点和隐节点间的权值怎么确定呢?我们需要做一些数学分析。也就是模型了。 联合组态(jointconfiguration)的能量可以表示为: 而某个组态的联合概率分布可以通过Boltzmann 分布(和这个组态的能量)来确定: 因为隐藏节点之间是条件独立的(因为节点之间不存在连接),即: 然后我们可以比较容易(对上式进行因子分解Factorizes)得到在给定可视层v的基础上,隐层第j个节点为1或者为0的概率: 同理,在给定隐层h的基础上,可视层第i个节点为1或者为0的概率也可以容易得到: 给定一个满足独立同分布的样本集:D={v(1), v(2),…, v(N)},我们需要学习参数θ={W,a,b}。 我们最大化以下对数似然函数(最大似然估计:对于某个概率模型,我们需要选择一个参数,让我们当前的观测样本的概率最大): 也就是对最大对数似然函数求导,就可以得到L最大时对应的参数W了。 如果,我们把隐藏层的层数增加,我们可以得到Deep Boltzmann Machine(DBM);如果我们在靠近可视层的部分使用贝叶斯信念网络(即有向图模型,当然这里依然限制层中节点之间没有链接),而在最远离可视层的部分使用Restricted Boltzmann Machine,我们可以得到DeepBelief Net(DBN)。 9.4、Deep Belief Networks深信度网络 DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。对于在深度神经网络应用传统的BP算法的时候,DBNs遇到了以下问题: (1)需要为训练提供一个有标签的样本集; (2)学习过程较慢; (3)不适当的参数选择会导致学习收敛于局部最优解。 DBNs由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图三所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。 首先,先不考虑最顶构成一个联想记忆(associative memory)的两层,一个DBN的连接是通过自顶向下的生成权值来指导确定的,RBMs就像一个建筑块一样,相比传统和深度分层的sigmoid信念网络,它能易于连接权值的学习。 最开始的时候,通过一个非监督贪婪逐层方法去预训练获得生成模型的权值,非监督贪婪逐层方法被Hinton证明是有效的,并被其称为对比分歧(contrastive divergence)。 在这个训练阶段,在可视层会产生一个向量v,通过它将值传递到隐层。反过来,可视层的输入会被随机的选择,以尝试去重构原始的输入信号。最后,这些新的可视的神经元激活单元将前向传递重构隐层激活单元,获得h(在训练过程中,首先将可视向量值映射给隐单元;然后可视单元由隐层单元重建;这些新可视单元再次映射给隐单元,这样就获取新的隐单元。执行这种反复步骤叫做吉布斯采样)。这些后退和前进的步骤就是我们熟悉的Gibbs采样,而隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据。 训练时间会显著的减少,因为只需要单个步骤就可以接近最大似然学习。增加进网络的每一层都会改进训练数据的对数概率,我们可以理解为越来越接近能量的真实表达。这个有意义的拓展,和无标签数据的使用,是任何一个深度学习应用的决定性的因素。 在最高两层,权值被连接到一起,这样更低层的输出将会提供一个参考的线索或者关联给顶层,这样顶层就会将其联系到它的记忆内容。而我们最关心的,最后想得到的就是判别性能,例如分类任务里面。 在预训练后,DBN可以通过利用带标签数据用BP算法去对判别性能做调整。在这里,一个标签集将被附加到顶层(推广联想记忆),通过一个自下向上的,学习到的识别权值获得一个网络的分类面。这个性能会比单纯的BP算法训练的网络好。这可以很直观的解释,DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练是要快的,而且收敛的时间也少。 DBNs的灵活性使得它的拓展比较容易。一个拓展就是卷积DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs并没有考虑到图像的2维结构信息,因为输入是简单的从一个图像矩阵一维向量化的。而CDBNs就是考虑到了这个问题,它利用邻域像素的空域关系,通过一个称为卷积RBMs的模型区达到生成模型的变换不变性,而且可以容易得变换到高维图像。DBNs并没有明确地处理对观察变量的时间联系的学习上,虽然目前已经有这方面的研究,例如堆叠时间RBMs,以此为推广,有序列学习的dubbed temporal convolutionmachines,这种序列学习的应用,给语音信号处理问题带来了一个让人激动的未来研究方向。 目前,和DBNs有关的研究包括堆叠自动编码器,它是通过用堆叠自动编码器来替换传统DBNs里面的RBMs。这就使得可以通过同样的规则来训练产生深度多层神经网络架构,但它缺少层的参数化的严格要求。与DBNs不同,自动编码器使用判别模型,这样这个结构就很难采样输入采样空间,这就使得网络更难捕捉它的内部表达。但是,降噪自动编码器却能很好的避免这个问题,并且比传统的DBNs更优。它通过在训练过程添加随机的污染并堆叠产生场泛化性能。训练单一的降噪自动编码器的过程和RBMs训练生成模型的过程一样。 9.5、Convolutional Neural Networks卷积神经网络 卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。 CNNs是受早期的延时神经网络(TDNN)的影响。延时神经网络通过在时间维度上共享权值降低学习复杂度,适用于语音和时间序列信号的处理。 CNNs是第一个真正成功训练多层网络结构的学习算法。它利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能。CNNs作为一个深度学习架构提出是为了最小化数据的预处理要求。在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著的特征。这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。 1)卷积神经网络的历史 1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念,1984年日本学者Fukushima基于感受野概念提出的神经认知机(neocognitron)可以看作是卷积神经网络的第一个实现网络,也是感受野概念在人工神经网络领域的首次应用。神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其能够在即使物体有位移或轻微变形的时候,也能完成识别。 通常神经认知机包含两类神经元,即承担特征抽取的S-元和抗变形的C-元。S-元中涉及两个重要参数,即感受野与阈值参数,前者确定输入连接的数目,后者则控制对特征子模式的反应程度。许多学者一直致力于提高神经认知机的性能的研究:在传统的神经认知机中,每个S-元的感光区中由C-元带来的视觉模糊量呈正态分布 来源: http://blog.csdn.net/zouxy09
个人分类: 科研笔记|1 次阅读|0 个评论
了解点机器学习
热度 16 xying 2017-1-25 09:14
2016 年开启了人工智能的时代。在这一年里, AlphaGo 围棋胜了人类;微软报告 ASR 语音识别结果好过专业速记员;日本 NHK 电视报道, IBM 机器 Watson 只花 10 分钟完成 41 名病人的诊断,这通常是医生两周的工作;它读取大量资料和病人 DNA 后,救了一位医者束手无策的白血病人;特斯拉自动驾驶汽车已挤进车流,还发生了车祸;机器创作歌曲、绘画、诗歌、小说、电影也有了不俗的成绩。 Google 、 IBM 、 Facebook 、 Amazon 和 Microsoft 组成人工智能联盟,研究 AI 行业的规范标准。美国白宫发布了《准备迎接人工智能未来》和《国家人工智能研究发展战略计划书》。现在的人工智能核心是机器学习,它不是过去那种,依人类知识为规则来作答的专家系统,而是通过样本来获得知识,自己作判断的机器。 这篇简单介绍机器学习的工作原理。希望只要懂的线性代数、最小二乘法和统计概念的读者,便能通过数学原理了解 其 机制,破除神秘给自己解惑,对此有兴趣的人能抓住要点启发应用。 什么是机器学习?简单地说,计算机利用输入的大量样本数据,调整表示规律和分类通用数学模型的参数,然后以调好的模型作答。通常用线性函数的组合来表示数值规律和划分类别模式,实用中的线性函数参数是以万计到百亿计的数量。这样的数学模型虽然很简单,却因参数数量的巨大能够实现复杂的功能,足以涵盖各种预测和辨识情况。在数学上,这调整模型参数及应用模型的计算机制,都是精确有效的,但也因变量个数的巨大,难以分析归纳成像物理规律那样简单明晰的因果性机制,无法从人脑逻辑推演的角度来理解。 测试人的 IQ ,是让人回答几十道题,每道题列出几张图形,或几组数字,或几个词作为样本,让你从一组可能的选项中挑出一个最“合理”的答案,以此来评估人的智商。这与你拥有的知识内容无关,测定的是大脑从样本来类比判断的能力。计算机和学习算法,模仿人脑这种能力,赋予机器智商。人类具有智商,可以通过学习获得知识。样本的数据潜藏着大量的信息,通过训练给予了机器知识,让机器表现出判断和预测的智能。 机器学习基本分成无监督学习和监督学习两类。无监督学习是从样本数据分布中,按它们的聚集来分类,例如用大量的人民币硬币尺寸和重量作为样本的数据,它们在 2 维空间的分布聚集在几个地方。人们看后,知道它们是分成几类,依此知识判断新给的硬币类别。机器可以通过数据点间距离的计算( K-means ),自动将聚类分成几组。得到各组的中心和分布范围后,以此判别新输入硬币所对应的组别。许多事物看来杂乱无章,其实分属不同类别,例如学生潜力,绘画风格,只要用足够多特征属性来描述就可以把它们区分,但对于许多的特征属性,人类需要研究归纳抽取出能理解其含义的少量特征,很难利用非常多的特征属性来分类,机器却很容易做到。在你现在的工作中,也可能应用现成的 N 维自动分类程序,在已经拥有数据中发现潜藏的分类。 无监督学习就像无师自通的领悟,效率较差。有老师教学就会快得多。监督学习是最广泛最成功应用的机器学习,用我们知识来标记样本,去“教”机器学会回答问题。这个问答在数学上,是从问题的属性空间映射到答案空间的一个函数。机器学习的基本算法是从一族候选函数中,比如说线性函数,通过计算选取出与预测样本标记误差最小的函数。这个选取多是通过迭代法,沿着减小误差的梯度方向,不断修正候选函数的参数来实现。这个过程称为训练。 对于数值结果的问题,线性回归几乎是最基本的机器学习,几百年前人们就用它从实验数据中导出经验公式。采用最小二乘法,求出与它们误差最小的直线或超平面。它有公式解,在线性代数上称为“正规方程( Normal Equation )”的线性方程解。然而,商业应用中的机器学习模型未知参数数量巨大,公式解要求非常大的计算机内存和计算量来实现,通常是用梯度法迭代求出近似解。这是被应用最广泛的数值预测的学习方法。 输入属性 x 与答案 y 不能用一个线性式子表示怎么办?通过增加一些与输入 x 是非线性关系的项,例如 x 2 , x 3 ,… ,有可能把它们表达成 一个线性式子 ,这在样条函数逼近理论上,已有很好的数学研究。在应用上,它相应于选取足够多的输入属性表达。例如房价的估值,所在的地区和房子的面积是基本的属性,当它用线性回归误差较大时,加入与已有属性是非线性关系的邻居平均房价,房间卫浴个数,装修等级等来扩充属性空间的维数,便可取得较好模型精度。 对于分类模式的判断,逻辑回归是基本的算法。在直观上是用一个超平面把输入属性空间分成两半,逻辑上对应着 0 和 1 。超平面用一个线性函数表示,输出对应于这线性函数值是否大于 0 。多个的超平面将属性空间分成多类。能够这样归类的数据称为是线性可分的。上世纪五十年代 AI 热潮中的感知器( Perceptron ),用一个 Sigmoid 作用函数 S(z)=1/(1+exp(-z)) 加在线性函数之后,即 y = S ( 〈 w , x 〉 - b) ,让输出结果基本饱和在 0 和 1 ,并且易于导出修正误差的梯度。它模拟了一个神经元的功能,它们组成的单层神经网络,能很好处理线性可分的模式识别。对于不是线性可分的模式,可以采用上述增加输入特征属性的方法,让它在高维空间上线性可分。 机器学习强大的功能来自巨量的可调参数,它的学习算法并不难理解,基本是向量和矩阵的线性运算,关键之处是巨量的样本数据的获得和计算巨量未知数的技术实现。 支持向量机( SVM )采用内积的“核函数( Kernelfunction )”,将输入经过非线性变换映射到高维空间,实现线性可分。用分段线性函数代替神经元里的 Sigmoid 作用函数,这样调整间隔分类超平面的参数就只跟较少的点有关,既可以大大减少计算量,又把计算转化成二次函数在线性约束下求极值的问题。实践中的应用涉及到巨大稀疏矩阵的计算, 1998 年 Microsoft Research 的 John C. Platt 提出 SMO 算法,可以很有效地处理巨量的变量和样本数据,这使得SVM获得广泛的应用。支持向量机有清晰数学理论的支持,能有效地控制训练结果,有着许多语言实现的软件包可用,相对于多层神经网络,它所要求的机器资源较少,但要求有应用领域知识的人力合作来选取合适的核函数。它成功地应用在许多分类领域,如文本、图像、蛋白质、垃圾邮件分类和手写体字识别等等。 人工神经网络对每一层输入都用线性来分类,由于 sigmoid 作用函数,每层的输入和输出是个非线性变换,因此能通用地实现各种数据的分类。多层神经网络具有极大的适应性和潜力解决复杂的问题,但多于三层的神经网络,采用向后传播误差的梯度法来训练,较难控制学习的结果,所以较难简单地应用来处理非常复杂的情况。 相对于前面单纯机制的机器学习数学模型,深度学习像是一种综合的工程设计,它基本架构是深层的神经网络,具有处理非常复杂模式的能力。为了提高训练的效果和效率,设计不同层次网络构造,例如在底层应用“先天”预设功能的卷积网络层,来获取特征,在深层网络中分层采用无监督的预先学习和随后的监督学习,来提高学习效率。今天深度学习的神经网络已有百亿个神经联接参数,具有极强的智商,它需要巨大的计算机资源和信息的支持,在大公司研究突破性的应用和探索人工智能的未来。 机器学习的算法都以取得与样本最小误差为学习的目标,如果仅仅是这样,让机器简单记忆这些样本就行了,而现实的不同往往是无穷多的,有限的样本怎么能用来判别无限的可能? 答案是:严格上说是不能,但在很大概率上是可能的。 输出只有 0 和 1 是最基本的判断学习,机器学习是用样本调整候选函数的参数,以获得合适供作判别的模型。只要候选函数族不会细到足以区分属性空间任何的点,用足够多随机选取的样本来训练,那么它预测误差也以足够大的概率收敛于训练样本的误差率。这个 Vapnik-Chervonenkis bound 公式是: P ( |E in (h) – E out (h)| ε | ∃ h ∈ H ) ≤ 4m H (2N)exp( - ε 2 N/8) 这里 P 是概率,ε是任给的一个小数值, H 是候选函数族, h 是训练后选出的函数, N 是训练样本的个数, E in (h) 是 h 函数训练样本预测失误率, E out (h) 是样本之外预测失误率(数学期望), m H (2N) 是与候选函数族有关的上界估算。 VC 维度的理论说,只要候选函数族不会细到足以区分任何样本,这个上界至多按比 N 小 VC 维数的多项式速度增大。那么不等式的右边随 N 增大趋于 0. VC 维数大致等于函数族中自由变量的数目,例如 2 个输入的感知器 Perceptron ,有3个可调参数,它的 VC 维是 3 ,即是线性函数的参数变量数目。这式子说明数学模型越简单,即参数变量少VC维数小,用非常多的样本训练后,它预测的准确性就越容易接近于在训练样本上检测到的精度。另一方面,数学模型越复杂,训练的结果对样本集的失误率 E in (h) 就越小,它对样本的适应性就越好。成功的机器学习要求这两者都小,机器学习的实践工程是在模型的复杂程度上取得均衡,尽量用简单的模型取得满意的样本训练结果。 由此可以看到,机器学习可行性依赖于两个条件:第一,数据必须有规律模式。无规律随机分布的数据无从预测,表现为学习过程不收敛。第二,拥有巨量的随机样本数据。统计公式的基本假设是样本的随机性,只有足够多随机 无偏 的样本,这个概率估计的式子才成立。越是复杂的辨识问题,概率的样本空间越大,就需要越多数量的样本才足以满足要求。它们不仅用来减小对训练样本的误差,也用以保证有足够大的概率取得精确预测。这要求有巨量的数据,以及支持这个巨量计算的计算机功能,这就是为什么一直到了大数据时代,人工智能的突破才到来。 介绍了一般原理和抽象公式,讲些具体的数据,给大家一个直观的印象。上世纪 80 年代末,我在科学院研究生院讲授“人工神经元网络”时,所里计算机的功能还不及现在的手机。手写体字识别研究,只能用较小的网络和几百个样本串行迭代学习来进行,无论算多少小时,结果都不理想。作为比较, 前几天 我用斯坦福大学 Andrew Ng 公开课里练习项目里的数据,用 PC 训练手写数字的辨识,算法与 20 多年前几乎一样,但样本是 5000 个,用批量计算更新参数,经过 50 轮迭代, PC 运行不到 10 分钟就训练好了模型,取得 95.26% 的判别的准确率。注意这里用的只是简单 400x25x10 节点的三层网络,已经有了 1 万多个待定的参数,输入样本是 400x5000 的矩阵。这只是个辨识 10 个数字图像的小项目;斯坦福大学李菲菲教授的机器学习,用了 1500 万张照片的数据库,涵盖 22000 种物品,对 2400 万个节点, 150 亿个联接的神经网络进行训练,能够让计算机看懂了照片,描述图里的场景。机器学习后的智能来自大数据、算法和有处理这些数据能力的计算机。 计算机犹如蒸汽机的发明,只有工业化才改变了大众的职业,现在各种条件已经成熟,机器学习将智力劳动工业化,我们正在这新时代的开端。 【参考资料】 腾讯科“技盘点 2016 年人工智能的十大创意项目” http://tech.qq.com/a/20161230/030073.htm White House report : PREPARING FOR THE FUTURE OF ARTIFICIAL INTELLIGENCE https://obamawhitehouse.archives.gov/sites/default/files/whitehouse_files/microsites/ostp/NSTC/preparing_for_the_future_of_ai.pdf Stanford University Andrew Ng coursera “Machine Learning” https://www.coursera.org/learn/machine-learning Caltech course Yaser S.Abu-Mostafa “L earning From Data ” http://work.caltech.edu/telecourse.html
个人分类: 科普|14867 次阅读|52 个评论
能学习的机器正盯着你的职位
热度 19 xying 2017-1-21 08:42
2016年 AlphaGO 轰动地冲击人类的自信。鲍勃迪伦得了诺贝尔文学奖, IBM 请他与机器对话,机器花几秒钟通读了他一生的作品,总结一句话:你的歌曲反映了两种情绪,流逝的光阴和枯萎的爱情。同一个机器花 20 分钟,读了 2000 万页文献,给一个医者束手的病患作出建议,救了她的命。经过这段时间科普,爱学习的人对 Master 完胜人类围棋顶尖高手的战绩不再惊讶了。现在的人工智能,不是几十年前哲学家争论的,影视让大家熟悉的,那种按规则推理的机器。人类创造的精灵通过学习,如同吃了智慧果,自己能知善恶,想制定机器人 N 定律来规范它的行为,已是逝去的帝王旧梦。这一波的人工智能已是不同种族那样的动物,与我们有同源的智力,它的核心是机器学习。我们不告诉它怎么做,而是提出问题,让它从过去经验中自己得出答案。这个行为模式,注定它的“思考”与我们一样的独立,不听令行禁止,只受我们提问导向和供它学习经验的影响,它很快便能自行收集数据,将来能否自己设问,具备独立的“人格”,我们将与之如何相处,这些问题留给哲学家去苦恼。普罗大众先要考虑与自己切身相关的问题:在今后十来二十年内,对我们的工作,现在的职位,将来的职场有什么影响? 就像“狼来了”听多了一样,大多数人觉得觉得机器智能离成熟还很遥远。经历过几次激动失望后的 AI 研究者,已经学会谨慎,大多不相信“奇点”之事,只是务实耕耘,低调走出实验室。实际上,早在石破天惊的围棋赛之前,机器学习的人工智能已经无声地渗入我们的生活。当你拿出傻瓜机照相,那聚焦的方块是机器在识别人脸;在信息输入中,机器通过识别手写字、语音或联想的词组帮助你;银行信用卡股市保安情治局,用机器监督流过的巨量数据,对不合常规的模式响起警讯;网上定向弹出各种愈来愈符合你口味的广告,网店不再询问只是根据你购物历史推销产品,旅行、照片或不经意的网上交谈,都成为喂进机器的数据,提供犹如私人定制般的服务。无数的机器围着我们,窥视我们习惯,捕捉偏好模式,发掘私密,更好的服务让我们沉醉其中。你了解后或许承认,它确实影响着我们生活,这是科技进步,很好很喜欢,但这只关商家,工厂和从事 AI 专业人员的事,与我工作何干? 机器学习不仅仅是大学的课程和研究的项目了。 2016 年硅谷几乎所有大公司开发部门,都把重兵压在人工智能上,国内业者也不甘其后。如果你生活在旧金山湾区硅谷,会意识到“ Machine Learning ”,已是职场上的热门词,不是研究所大公司才需要这方面的人才。个性化推荐系统,已是商家必备,这是与机器学习有关的开发项目。过去依靠数据库管理员、统计分析师发掘数据规律只是手工业,要升级到让机器自己去学习去应用,这要懂行的程序员。电器应用程序,只靠固定规则不能学习,现在都不好意思称是具有智能,这要有训练的工程师来开发。机器学习已经到处开课,公司付钱让员工学习。在职工程师上这课不为做研究只为工作要用,会上听得懂。网上搜一下,你会愕然发现不仅工程师在学,也有专门为医生开班设课,用医疗诊断体检数据举例设题。机器图像识别已堪与人匹敌,帮医生看个片,识别病患是现在进行时,综合各种检查报告的数据,判断病症将比专家更胜任。金融管理股市财经保险分析正用机器代替人力。哲学家考虑的全面独立机器人还在远方,专司一智的机器正走近你的身旁,盯着只需要经验判断按规则办事单一技能的脑力职位,不久只需留下一半人辅助補遗,与不知疲倦工作狂的机器偕行。这一波技术进步来的凶猛,改变不是远在下一代人的工作,机器学习正开始冲击医生、律师、管理、教师、科研、工程设计等等几乎所有的工作,不出十年,职场将面目全非。斯坦福教授卡普兰调查说,美国 720 个职业中 47% 的人将被人工智能替代,中国会是 70% 的人。在座的是否想大致了解机器学习能做什么,为什么在这时候爆发,怎么规划自己的定位,在这潮流中如何趋吉避凶? 这一波人工智能技术依靠机器学习,在原理上几乎没有新意,你会发现它们基本还是线性回归、逻辑回归、统计分类、支持向量机( SVM )、神经网络等很早就有东西的新版。它的惊人发展不是在理论上的突破,而是巨量的数据、有效的算法和强大的计算机功能,这些条件的成熟,涌现出巨量的市场应用需求,让它的时代到来。现在实践中被应用的,即使是最新的深度学习,除了一些技术层面的技巧和组合,其原理算法仍然与二三十年前并没多大的不同,基本的算法早已充分研究,通用程序库在各种语言都已开发可供下载。最重要不同点的是,现在较容易拥有巨量的数据和具有能处理这巨量数据的计算机。 人工神经网络研究已有五十多年,计算机视觉研究已有几十年了。我的同学马頌德 1986 年获得法国计算机视觉与图像处理国家博士,回国后任科学院自动化所模式识别实验室主任,早就用神经网络来探索视觉图像识别,那时国家实验室计算机的功能还远不如现在的手机,训练样本至多上千,神经网络节点不过上百,虽然在研究有许多创见,拘于条件使用成效不彰。近年,斯坦福大学人工智能和视觉实验室主任李飞飞教授主持的 ImageNet 项目,建有一个有 1500 万张照片的数据库,涵盖 22000 种物品, 62000 不同表现的猫,用这些巨量的样本对 2400 万个节点, 150 亿个联接的神经网络进行训练,终于能让机器看懂了一张图。这个突破的关键,是巨量的样本数据和能够处理这些数据的计算机能力的具备。这像三岁小孩认识猫,在巨大的信息和硬件力量碾压下,不用太多技巧,简单、粗暴、有效。 2017 年她休假去了 Google 做研究,那里有更多的数据更强的机器。 机器学习的成功由两个方面组成,一是具有瞩目应用成果和巨大潜能的深度学习,复杂多层的神经网络显示出惊人的潜力,但较难被理解和掌控,有许多未知,它需要巨大的计算机和数据资源。主要是研究所和大公司用以彰显成就探索未来,占领高端市场。另一是传统方法在巨量数据和强大计算机运算能力下的应用。在这里,已有较清晰的数学解释和成熟的算法,人与机器协力较多,需要对应用领域的知识和数据表达的选取,以减少对样本和机器资源的需求,作为不断发展中过渡,市场用它大举进入机器学习的时代,开始尝试在各职位上替代人的工作。 最初被网商应用的推荐系统,例如基于内容推荐系统,要先研究对商品特征属性的分类,统计出各商品对这些特征属性的评级;然后 用机器 在线依顾客对这些属性个人偏好的加权,推荐加权评级较高的商品。这需要较多的人力辅助。而机器学习的矩阵分解推荐系统,通过巨量的顾客购后评分,用机器学习自动产生出商品的属性分类、赋值评级,以及顾客们的偏好;然后依顾客偏好,在线计算出前几个具有偏好加权属性综合最高值的商品,向顾客作出推荐。在训练前,商品在这些特征属性上的评级和顾客对这些特征属性的偏好加权,包括特征属性的含义都是未知的。机器学习通过足够多的样本解出这个线性模型中未知的参数,只要特征属性足够多就能取得足够好的预测。什么才是足够多?简单算一下,对 200 部电影,采用 10 个特征属性来描述它们,在顾客购后评分的数据中,至少需要 2000 人每人都看过 10 部以上电影,数据库评分的数据要比这 2 万大得多才行。收集这么多的样本数据,在以前不大可能,在网络时代已经不难,分解这个至少是 200x2000 的稀疏矩阵,以前不行在今日也不成问题了。 各种个性化推荐系统已被广泛应用,例如依个人喜好推荐服装搭配,依学生答题成绩选择难度适中有针对性的练习题,而这些都不是大项目,是学生们都能玩得动的课题,已有现成通用的算法甚至软件包供你应用。 在 2011 年最热的算法是矩阵奇异值分解,在推荐系统是矩阵分解。推动机器学习的主力与其说是科学家,不如说是工程师。网络中巨量数据,机器速度和容量的提高,让这些原来小打小闹的技术,焕发出惊人的能量。商业的需求让研究员走出象牙塔,不再纠结于经验与真理的理性困扰,放下追求极致的科学思维,只求经验上的有效更好,便取得了极大的成果。善长与此华人的论文在这领域中便占了 43%. 人们愈来愈看清这波技术进步的核心,今天看来,热门词“大数据”显得空泛,数据挖掘( Data Mining )像手工业,而着眼于自动和半自动,从数据中抽取知识的数据科学已经成型,它将是计算机系热门的课。学应用数学的,不妨把目光放在数值计算,巨大维数线性代数的算法,尤其是稀疏矩阵的算法。 理解和应用机器学习,大多数理工科毕业生都具有足够的基础,应用最多的数学知识不过是线性代数、最小二乘法和统计理论。懂得一点编码,就可以动手在自己岗位上做点应用。用现成的软件包,在 Mathlib 等 PC 工具上写几行编码就可以计算验证想法。强大的机器已在云中,你只要有数据有项目, Amazon 、 Microsoft 、 Google 、 IBM 等公司都有收费专供机器学习的网上服务( Web services ),让你使用它们的计算机和现成的程序,训练机器学习的模型做应用,它们的生意是提供机器收机时费(例如 Amazon 数据分析和训练建模每小时收 $0.42 ,在线应用每次 $0.0001 )。机器学习时代,机器硬件不是问题,算法软件都已经具备,大公司竞争着提供服务,从只懂得一点概念到想自己设计写算法都能玩机器学习,应用对象领域的知识是关键,数据是王! 作为管理员、质检师、经手大量试验数据的研究人员,也许要日复一日地监测流过物体事件信号或影像。只要你知道什么是正常的,就可以用足够多样本属性的数据给机器学习,你不需要自己归纳研究这些属性值的正常组合,机器学习在属性的空间中自动算出那些正常点和允许的偏差,凡与正常值偏离太多的,都发出警讯供人细究。这个有时在 PC 上都能实现的简单系统,能让你省心提高效率。 理工生大多都知道线性回归,以前限于计算能力和少量数据,只用来得到简单的经验公式。线性回归是机器学习对数值预测问题的基本手段,不难用增加输入的维数来解决非线性问题,现在有了强大的数据收集手段和计算机功能,有没有想过把你的工作或研究的问题,用新的手段来处理? 对于分类模式的判断,逻辑回归是基本的算法,它就是一个神经元的功能。也许你过去玩过模式识别,神经网络,在那计算机功能低下数据不多的时代,不会有什么成果。现在不同了。 工业革命有段时期,代替人力的新机器喷现,发明家灿如晨星,若曾感叹生不逢其时,现在正是再一次机会,各种条件都已具备,不过时势造英雄,只有捷足者先登。如果你工作多年,有着丰富的专业领域知识,你最接近数据,可能已经拥有或者开始收集它们,你最懂得怎么解读这些数据,也许可以想一想,是你动手让机器学习在你手中开始,管理它,还是等别人让机器学习,瞄准你的位置?
个人分类: 科普|13210 次阅读|57 个评论
遗传算法——人工智能笔记7
热度 3 mayaoji 2017-1-13 14:44
根据生物学理论,生物的性状由基因决定,而基因会发生变化,有一些变化使得生物的生存能力变强,而另一些变化效果相反。那些不适应环境的生物会被淘汰,适应的才能生存下来的。而它们后代的基因又会变化。不断重复这个过程,大自然最后选择出具有很强生存能力的生物。 美国的科学家 J.Holland 借鉴了进化论于 1975 年提出遗传算法。这里从机器学习的角度说说遗传算法。机器学习是从已知的样本总结出规律,这个规律既能符合已知的样本数据,又能预测新的样本数据。这个规律一般用函数来表示,所以可把机器学习看作是在函数空间里进行搜索。 遗传算法是这样的。先随机列出一些函数。把每个函数都看成是一个染色体,由若干个基因组成。测试这些函数的适应度。函数在训练数据上的错误率越高,则适应度越低。从这些函数中选择一些保留下来,适应度高的函数被选中的概率越大,没被选中的函数淘汰掉。这些被选中的函数通过基因重组产生后代,其中有一些发生基因突变。然后再测试这些函数的适应度,再淘汰一些函数。……多次重复这个过程,如果某个函数的适应度高于预先设定的阈值,则过程终止,这个函数被选出来。 这里有个关键的问题,函数应该如何怎样表示,才能把它看成是由若干个基因组成的? 不知是不是所有的函数都能这样表示,这里只举一个离散值的例子。假设西瓜是不是好瓜,由它的颜色和敲声这两个属性决定。颜色包括三种可能,浅白、青绿、乌黑,而敲声也有三种可能:清脆、浊响、沉闷。现在考虑颜色,我们用长度为 3 的位串来表示对属性的约束,每位表示一个可能值。若该位为 1 ,则表示该属性可以取对应的值。比如 010 表示颜色是青绿,而 110 表示浅白或青绿都行。 多个属性约束的合取表示成单个属性对应位串的合取。比如“当颜色为浅白或乌绿,而且敲声清脆”,表示成位串 110100 。好瓜用 1 表示,坏瓜用 0 表示,“当颜色为浅白或乌绿而且敲声清脆时,西瓜是好瓜”,用位串表示: 1101001 。类似地,可用位串表示完整的函数。 不同函数的位串重新组合,或位串发生变化,对应于遗传算法里的基因重组和突变。这些变化的规则应该保证得到的函数是合法的,比如颜色的三个值里,最少必须有一个值为 1 ,不能用 000 来表示对颜色的约束。
个人分类: 人工智能|5403 次阅读|3 个评论
K-近邻算法——人工智能笔记6
mayaoji 2017-1-12 15:27
基本思想 通常的学习算法都是从训练样本中学到目标函数,然后把目标函数用到新样例中。 K- 近邻算法不同,它并没学到这样的普遍函数,只是把训练样例存起来,当来了新样例的时候,根据新样例和训练样例的关系,赋给新样例一个函数值。 它的基本思想是这样的:在和新样例最相似的 k 个训练样例中,最多样例属于哪个类别,新样例就属于哪个类别。 可通过下面这个图说明。图中的图形分两类,蓝色正方形和红色三角形,而那个绿色圆点的类别未知,它该属哪一类呢?如果采用 3- 近邻算法,绿色圆被划分到红色三角一类,因为距离它最近的三个图形中,有两个属于三角形,一个属于正方形,三角形更多。而 5- 近邻算法则把绿色圆归到蓝正方形一类,因为离它最近的五个图形中,蓝正方形有 3 个,红三角只有两个。 基本算法 一个样例包含 n 个属性,它对应于 n 维空间 R n 的点。目标函数值可以是离散值,也可以是连续值。 先考虑离散值,目标函数 f 为: R n → V ,其中 V 是有限集合 {v1,v2, ……, vs} 。新新样例为 x q ,从训练样例中找出距离 x q 最近的 k 个点(点间距离可用欧式距离定义)。按 K- 近邻算法: 加权算法 距离不同的点赋予不同的权值,较近的点比较重要,权值大,远的点权值小。类似引力定律,权值与距离平方成反比: 维度灾难 样例间的距离是根据样例的所有属性计算的,但实际上可能有的属性与分类无关。举个例子,每个样例由 20 个属性描述,但这些属性中只有两个与分类有关。这两个属性值一致的样例在 20 维空间中可能距离会很远,用这样的距离进行分类会导致错误结果。这种情况称之为维度灾难。 解决维度灾难的一个方法是,采用近邻算法时先对每个属性乘一个加权因子,然后再对测试样例分类,根据分类误差反复调整加权因子,从而对属性的重要性得到一个合理的估算。 K- 近邻算法的另一个不足是,计算主要发生在新样例进来的时候。它处理每个新样例都需要大量的计算,资源开销比较大。
个人分类: 人工智能|3308 次阅读|0 个评论
决策树算法——人工智能笔记4
mayaoji 2017-1-2 14:08
决策树 这是一颗决策树,根据天气状况来判断某天是否适合打网球。 假设某一天情况是这样的,(天气:晴天;温度:高温;湿度:高,风力:强),那么按照这颗决策树,这一天不适合打网球。 决策树不但能表示属性的合取,而且能表示析取,比如上面的决策树,表示适合打网球的条件为:阴天或者(晴天并且湿度正常)或者(雨天并且风力弱)。实际上决策树能表示自变量和因变量都为有限个离散值的所有函数。 ID3 算法 决策树的每个节点都是一个属性,根据属性测试的不同结果,产生不同的分枝。ID3算法优先选择信息增益高的属性。信息增益的公式: 上面的Ent表示信息熵: 下面举例说明: 整个数据集的信息熵: 计算色泽这个属性的信息增益。色泽包括三个值青绿、乌黑、浅白。分别记为D 1 (色泽=青绿),D 2 (色泽=乌黑),D 3 (色泽=浅白)。 色泽的信息增益为: 同理,可算出其他属性的信息增益: 纹理的信息增益最大,所以决策树选择这个属性作为根节点。根据属性值,把样例分到不同的分支。 然后在各个分支上,再重复上述过程,优先选择增益信息高的节点。最后得到的决策树如下: ID3 算法的归纳偏好: ID3 算法的搜索范围是完整的假设空间(即能表示任何有限的离散值函数的空间),每个假设对应于一棵决策树。但它不彻底地搜索这个空间,它有两个偏好:优先选择较短的树,和那些信息增益高的属性更靠近根节点的树。这样的偏好叫优选偏好。 前面的说的候选消除算法,搜索范围是不完全的假设空间,但它彻底地搜索这个空间。这种偏好叫限定偏好。Find-s算法,既有限定偏好,又有优选偏好。 一般来说,优选偏好比限定偏好更好,因为它保证目标函数在假设空间中。 C4.5 算法: ID3 的信息增益准则,偏爱那些值较多的属性,这有时会带来不利的影响。比如如果在上面的例子里,把编号也作为一个属性,则它的信息增益为0.998。只利用这个属性就可以把样本区分开。但这样的决策树没有泛化能力,不能对新样本进行预测。 为了克服这个问题,C4.5算法用增益率代替信息增益,增益率通过引入IV项来惩罚类似编号这样的属性: 决策树算法的其他问题: 1 、过拟合 机器学习有时出现过拟合现象,即处理训练数据时效果很好,但处理测试数据时效果欠佳。解决这问题的一个方法就是对决策树进行剪枝。剪枝分两种,包括先剪枝和后剪枝。 先剪枝就是在决策树的生成过程中,提前终止决策树的生长。后剪枝是从训练集生成一棵完整的决策树,然后自底向上对非叶节点进行考察。若将该节点对应的子树剪掉,将其变成叶节点,用子树中最频繁的类别来标记。如果这样能提供决策树的泛化能力,则进行剪枝。 2 、连续值 如果属性的值是连续的,可将其分类后再用决策树算法。比如温度给出的是具体的数值,样例的温度数分别为:40,48,60,72,80,90。计算最大值和最小值的平均值:(40+90)/2=65,大于65把它的值设为高,否则设为低。 3 、不同成本的属性 在实际应用中,获取属性的值是需要成本的。比如疾病检测时,用下列属性来描述患者:体温、脉搏、血液化验、切片检查等。获取这些属性在成本方面区别非常大。要权衡信息和成本两个方面,来确定决策树应优先考虑哪些属性。
个人分类: 人工智能|9112 次阅读|0 个评论
机器学习的归纳偏好——人工智能笔记3
热度 1 mayaoji 2017-1-1 15:18
归纳偏好 机器学习本质上是归纳推理。从有限的已知数据得到普遍的知识,不能从逻辑推理得到。比如从犹太人 a 很聪明,犹太人 b 很聪明,犹太人 c 很聪明,推出所有犹太人都很聪明。这个推理不是必然成立的,里面包含了某种偏好它才能成立。 机器学习中把这样的偏好称为归纳偏好。归纳偏好的严格定义:已知数据 + 归纳偏好 T 机器学习的结果。这里的 T 表示演绎推理,归纳偏好是使得上面这个推理式成立的最弱的命题。 如果没有归纳偏好,从数据到学习结果是归纳推理,加上偏好,数据就能通过演绎推理得到结果。任何的机器学习算法,都存在归纳偏好。不同的算法,归纳偏好可能不一样,机器学习的结果也不一样。 作为搜索的概念学习 下面通过具体的例子来说明什么是归纳偏好。 目标概念:适合水上运动 样例 天气 温度 湿度 风力 水温 天气预报 适合水上运动 1 晴 暖 中 强 暖 相同 是 2 晴 暖 高 强 暖 相同 是 3 雨 冷 高 强 暖 变化 否 4 晴 暖 高 强 冷 变化 是 这里一共有六个属性:天气,温度,湿度,风力,水温,天气预报。 天气的取值范围为:晴、阴、雨; 温度的取值:热、冷; 湿度的取值:中、高; 风力的取值:强、弱; 水温取值:热、冷; 天气预报取值:相同、变化。 适合运动这个概念实际上是个六元函数,各个变元的取值范围如上所示,而函数的取值为“是”或“否”,也可看作 1 或 0 。满足这些条件的六元函数数量很多,机器学习就是从这些样本中总结出规律,找到目标函数(亦即学会目标概念),使得对新的样例,亦可以判断出那天是否适合运动。 学习的过程可看作在假设空间搜索(人工智能把这些函数构成的集合称为假设空间),目标是搜到正确的假设。由于假设空间往往包含数量极多的假设,所以需要合适的搜索策略,才能更快地找到目标假设。 包含是概念或假设之间一种很重要的关系。比如动物这个概念包含人这个概念,生物又包含人这个概念。用专业的术语,包含关系定义了假设空间的一个偏序(即这个关系是自反、反对称和传递的)。利用这个偏序关系,能有效地搜索假设空间。 下面介绍两种具体的学习算法。 Find-S 算法 在 Find-S 算法中,假设可这样表示: 晴,冷,中,强,暖,变化 ,这时表示只有当每个属性取这个相应的值,才适合运动。 也可用问号代替某个值,比如, 晴,?,中,?,暖,变化 ,问号表示相应的属性取任意一个值都行。 极端的情况是, ?,?,?,?,?,? ,表示任何情况都适合运动,即每一个样例都是正例。 另一种极端的情况是, Æ , Æ , Æ , Æ , Æ , Æ ,表示任何情况都不适合运动,即每个样例都是反例。 能用上面方式表示的假设构成了假设空间 H 。 Find-S 算法将 h 初始化为最特殊的假设 h ← Æ , Æ , Æ , Æ , Æ , Æ ,即任何一个样例都是反例 第一个样例是正例(晴,暖,中,强,暖,相同),所以将 h 泛化,使它能容纳这个样例。 h ← 晴,暖,中,强,暖,相同 ,即除了这个样例外,其他样例都是反例 第二个样例(晴,暖,高,强,暖,相同)也是正例,所以将 h 进一步泛化,使其能容纳这个例子 h ← 晴,暖,?,强,暖,相同 第三个是反例(雨,冷,高,强,暖,变化),所以 h 无需改变。假设 h 简单地忽略每个反例,看上去有点奇怪。请注意,事实上这时假设仍与这个样例一致,即正确地将其划分为反例。 第四个是正例(晴,暖,高,强,冷,变化),进一步将 h 泛化, h ← 晴,暖,?,强,?,? h= 晴,暖,?,强,?,? ,这就是 Find-S 算法在这些样例上学到的概念,即当天气为晴天、气温为暖和、风力为强风时适合水上运动,水温湿度天气预报等因素没有影响。 Find-S 算法实际上是寻找和训练样例一致的最特殊的假设。 候选消除算法 候选消除算法和 Find-S 算法的假设表示方法相同。 Find-S 算法只是输出和训练样例一致的多个假设中的一个,而候选消除算法输出 H 中所有和训练样例一致的假设。 Find-S 算法从最特殊的假设出发,逐步将其泛化。候选消除算法,则同时从最特殊假设和最一般假设出发,遇到正例则将特殊假设泛化,遇到反例则将一般假设特殊化。最后假设空间 H 剩下的和特殊假设以及一般假设一致的那些假设就是学习的结果。 以上面的适宜运动概念为例。 S0 : Æ , Æ , Æ , Æ , Æ , Æ ↑ G0: ?,?,?,?,?,? 第一个样例为正例:(晴,暖,中,强,暖,相同),所以将 S0 泛化, G0 不变: S1 : 晴,暖,中,强,暖,相同 ↑ G1: ?,?,?,?,?,? 第二个样例为正例:(晴,暖,高,强,暖,相同),将 S1 泛化, G1 不变: S2 : 晴,暖,?,强,暖,相同 ↑ G2: ?,?,?,?,?,? 第三个样例为反例:(雨,冷,高,强,暖,变化), S2 不变,将 G2 特殊化。注意,将 G2 特殊化时,它的假设要比 S2 更一般,否则不能覆盖以前的正例。 S3 : 晴,暖,?,强,暖,相同 ↗ ↑ ↖ G3: 晴, ? , ? , ? , ? , ? , ? ,暖, ? , ? , ? , ? , ? , ? , ? , ? , ? ,相同 第四个样例为正例:(晴,暖,高,强,冷,变化),将 S3 泛化,再将 G3 中和 S4 不一致的假设删掉,得到 S4 : 晴,暖,?,强,?,? ↗ ↖ G4: 晴, ? , ? , ? , ? , ? , ? , ? , ? , ? , ? ,相同 训练完毕,所以 H 空间和 S4 、 G4 同时保持一致的假设有六个: S4 : 晴,暖,?,强,?,? ↗ ↑ ↖ 晴, ? , ? ,强, ? , ? , 晴,暖, ? , ? , ? , ? , ? ,暖, ? ,强, ? , ? ↖ ↗ ↖ ↗ G4: 晴, ? , ? , ? , ? , ? , ? , ? , ? , ? , ? ,相同 这就是使用候选消除算法学习的结果,它包含六个假设,还没学到目标概念。那么如何使用呢?比如,对于下面新的样例,它将如何判断? 样例 天气 温度 湿度 风力 水温 天气预报 适合水上运动 a 晴 暖 中 强 冷 变化 ? b 雨 冷 中 弱 暖 相同 ? c 晴 暖 中 弱 暖 相同 ? d 晴 冷 中 强 暖 相同 ? 所有假设都将样例 a 划成正例,将样例 b 划成反例。有 2 个假设将样例 d 划成正例, 4 个假设将其划成反例,所以我们倾向于将其划成反例。一半假设将样例 c 划成正例,一半将其划成反例,所以无法判断。 两种算法的归纳偏好 上面两种算法中,假设空间 H 都没有包含所有假设,目标概念有可能不在假设空间 H 中。 比如当天气为晴或者气温为暖时,适合水上运动。这个概念就无法用上面的方法表示。因为上面的假设表示方法只能表示属性的合取,无法表示属性的析取。 适合水上运动这概念涉及六个属性,各个属性的取值分别有 3 、 2 、 2 、 2 、 2 、 2 种可能。以这六个属性的取值为变量, 0 和 1 为因变量的六元函数一共有 2^(3x2x2x2x2x2) 个。而按上面的表示法,假设空间 H 一共有 4x3x3x3x3+1 个假设,即只有这么多函数。如果目标概念不在假设空间 H 中,则这两种算法都无法搜索到。 所以目标概念在空间 H 中,是两种算法共同的归纳偏好。除此之外, Find-S 算法包含了更多的偏好,它倾向于将新样例视为反例。
个人分类: 人工智能|7019 次阅读|1 个评论
归纳推理和机器学习——人工智能笔记2
mayaoji 2016-12-31 14:21
归纳推理 推理包括演绎推理和归纳推理。 所有的人都离不开空气,张三是人。从这两句话可推出张三离不开空气。这就是演绎推理,前提包含了结论,前提正确则一定结论正确。 第一天太阳从东边升起,第二天太阳从东边升起,第三天太阳也从东边升起,……。自有地球以来,太阳都从东边升起。因此太阳明天也从东边升起。这个推理就是归纳推理,结论超出前提,前提正确但结论不一定正确。 这看起来有些奇怪,太阳明天不是一定从东边升起吗?从逻辑上说,确实并非如此。不管是根据科学定律还是根据经验,我们都知道太阳明天也从东边升起。但科学定律也不是绝对正确的,存在错误的可能。经验也不可靠,哲学家罗素就讲了一个故事。有一只鸡,从小时候开始,主人每天都九点钟给它食物。每天听到主人的脚步声,就知道主人来喂食了。它得到一个结论,主人永远都在九点钟来喂食。某天,主人又来了,这次不是喂食,而是把它捉去吃了。 机器学习本质上是归纳推理 假设房子的价格由其面积决定。现在知道一些房子的面积和价格,把这些数据输入电脑,让电脑学会面积和价格之间的关系。当输入一个新房子的面积时,电脑能计算出它的价格。 在这里机器学习实际上是进行函数拟合。 图1 图2 上图的的点表示已知的数据,横坐标表示房子面积,纵坐标表示价格。从有限的几个点得出函数曲线, 当输入新的房子的面积时,可以从曲线读出它的价格。 原来已知的只是几个点,而结论是一条曲线,包括无数个点。结论超出了前提,这就是归纳推理。推理的结论有很多种,上面的图1和图2就是两种不同的结论。至于怎样拟合更好,这是很专门的问题。 拟合曲线时,不一定所有的点都要在曲线上,因为这样对新数据的预测效果不一定好。也就是出现过拟合问题。
个人分类: 人工智能|6051 次阅读|0 个评论
计算和机器学习——人工智能笔记1
mayaoji 2016-12-31 11:57
计算 我们知道计算机不会思考,只能做些僵化死板不需要任何灵活性的工作,比如加减乘除的计算。当然它的工作不限于我们通常理解的计算。比如可以将一列数进行排序, 3,7,4,20,6 ,从大到小排序。计算机将这列数扫描一遍,取出最大的数,将其放在首位。再将剩下的数扫描一次,再取出最大的数。重复多次,排序就完成了。这里说的就是一种排序算法。 什么是计算,有严格的定义,这里不展开讨论。总之,大概意思是按照某种明确的程序进行操作,不需要任何灵活性。凡是这样的工作,计算机都可以做。 学习 人工智能自 60 年前提出以来,突飞猛进。机器学习是人工智能中最重要的领域。计算机能学会各种各样的概念,比如什么是猫,什么是狗,什么是奔跑,什么是跳跃。 和小孩子一样,给一些水果它看,告诉它只是梨子,这是香蕉,这是苹果,见多了它就懂了。我们不用告诉它苹果有什么特征,梨子有什么特征,它自己会总结出来。 计算机不会思考,那它是如何学习的呢?它的学习本质上也是一种计算。 学习就是计算 举例子说明。现在让机器学会判断什么是好的西瓜,什么是坏的西瓜。 西瓜有各种不同的颜色,青绿、浅白、乌黑等。根蒂也分不同的情况,有的硬挺,有的蜷缩,有的稍蜷。敲声有的清脆,有的浑浊,有的沉闷。 假设西瓜的好坏完全由色泽、根蒂和敲声这三个属性确定。现在有四个西瓜。 编号 色泽 根蒂 敲声 西瓜 1 青绿 蜷缩 浑浊 是 2 乌黑 蜷缩 浑浊 是 3 青绿 硬挺 清脆 否 4 乌黑 稍蜷 沉闷 否 将这些数据输入电脑,让它自动学会区分好瓜坏瓜。现在来了一个新的西瓜,色泽青绿,根蒂蜷缩,敲声浑浊,计算机马上判断这是一个好瓜,因为它已经见过一模一样的瓜了。如果出现一个没见过的情况呢,比如颜色浅白的瓜敲声浑浊的瓜,这是好瓜还是坏瓜呢? 这里西瓜包括三种属性,色泽、根蒂和敲声。每种属性可以取不同的值。所以可以把好瓜坏瓜这些概念看做一个三元函数 f(x,y,z) 。 x 可以取青绿乌黑浅白三种值的一种, y 取蜷缩稍蜷硬挺三种值的一种, z 也类似。好瓜则函数值是 1 ,坏瓜则函数值为 0 。比如 f( 青绿 , 蜷缩 , 浑浊 )=1 , f( 乌黑 , 稍蜷 , 沉闷 )=0 。这个函数实际上是个分类函数,将不同的数据进行分类。 机器学习的任务就是求出函数 f ,使得它的变量取任意值时,都可以计算出 f 的值。 如何从有限的数据得到一个普遍的函数,使其能应用到各种各样的数据呢?有各种各样不同的算法解决这个问题。当输入数据时,计算机运行某种学习算法,就是机器学习的过程。 不同的算法有时求得的函数是不一样的,所以将学得的概念应用于新情况的时候,有时得到的结论不正确。所以计算机也会出错。
个人分类: 人工智能|3020 次阅读|0 个评论
当肿瘤遭遇“信息泄露”
热度 3 jgu 2016-12-23 10:57
“外”如探测浩瀚的宇宙,“内”如揭示人体细胞的奥秘,海量的信息必将改变人类社会、改变人类自己。 人类已经逐步进入信息爆炸的时代,各种个人信息、网络行为、生活习惯,甚至各种所谓的隐私、银行账号密码等“机密”信息均无法避免遭遇各种泄露门、监控门事件。肿瘤这个邪恶的幽灵隐藏在体内,时刻准备攫取资源来扩张自己的军队。而我们却对之毫无察觉。 但随着以新一代测序技术为代表的高通量生物检测技术的发展,肿瘤的机密信息也无处遁形,遭遇着前所未有的“信息泄露”,肿瘤的DNA、RNA、蛋白质、代谢物等生物信息都暴露于人类的检测之下。这些海量信息被称为组学信息(omics),如:DNA序列信息是基因组(genomics)、染色质结构和各种基因组修饰是表观遗传组(epigenomics),另外还有转录组、蛋白质组、代谢组等等。从这些泄漏的信息,我们该如何来窥探肿瘤的“隐私”?如何推出更好的对付“肿瘤”的办法? 拿到海量的肿瘤组学数据我们能做什么?首要任务是建立肿瘤的信息档案。就像是地理测绘测绘,首先要用测到的数据把地图绘制出来。目前,几个国际癌症基因组计划,如ICGC(International Cancer Genome Consortium)、TCGA(The Cancer Genome Atlas),都致力于推动肿瘤分子图谱的构建。利用TCGA的数据,可以识别在肿瘤细胞中发生的体突变,并从中识别出影响蛋白质结构与功能的突变位点(Niu et al., Nat Genet 2015),另一项类似的研究从超过7000余对肿瘤/癌旁配对样本中识别出超过47000个非同义突变位点,极大的提高了人们对肿瘤突变谱的认识(Shen et al., Am J Human Genet 2016)。基于突变谱,可以更好的估计靶向药物的潜在应用比例,经计算估计约40%的病人可能会受益于靶向药物(Rubio-Perez et al., Cancer Cell 2015)。 但由于肿瘤的高度异质性以及不同中心采样和检测手段的差异,单个项目所纳入的样本量仍然远远不够,以肝癌为例,在TCGA中有约400例样本,已经是目前公开数据集里样本数最多的了。为了更好的绘制“肿瘤的地图”,必须建立跨更多数据源的大规模图谱。比如本课题组构建的肝细胞肝癌(Hepatocellular Carcinoma,HCC)组学图谱 HCCDB ,已经收录了约3500例临床样本的基因/miRNA表达数据、约800例DNA甲基化数据、约600例CNV数据(来源于17组研究),目前可提供表达谱的网页浏览服务。多来源/多中心、大规模的组学数据是建立肿瘤信息档案的基础,基于这些收录的数据,我们已经开展了HCC的DNA甲基化图谱分析(Zheng et al. Brief Bioinform 2016 ),正在进行基于表达谱的HCC分型研究。同时,HCC相关研究人员可以方便的查询分析结果,指导相关的实验设计,提出更加合理的假设。比如某研究人员正在关注HCC肿瘤干细胞的调控机制,他可以用EPCAM、AFP、SPP1等候选基因来查询相关的通路或基因。信息爆炸的时代或者说大数据时代,绘制各种“地图”是实现数据价值的第一步,从多个维度、多个层次构建“肿瘤地图”是以信息技术攻克癌症的基础和关键。类似的,大肠癌也建立了超过4000例样本(来源于18组研究)的大规模数据集,并基于该数据集分析出大肠癌的四个分子亚型,并得到了每个分子亚型所特有的分子和表型特征(Guinney et al. Nat Med 2015)。 有了基础地图之后,我们当然需要将其绘制得更加精细,并利用“先人的知识”对其进行仔细的标注,比如在军事地图上需要标注出关键的制高点、隘口等。这个时候人工智能技术就非常重要了,针对癌症组学数据高维、异质等特性,需要更好机器学习方法对数据进行挖掘和建模,比如聚类(分子分型,如多组学整合聚类方法 LRAcluster )(Wu et al. BMC Genomics 2015)、预测(分子标志物),核心调控网络识别(分子机理)(Gu et al. Mol BioSyst 2014))及其可能的调控策略(药物干预)等。由于生命系统高度复杂,组学数据并不能很好的完成“地图标注”的任务,必须要跟专家知识、文献信息有机的结合起来。这对传统基于采样数据的机器学习方法无疑是新的挑战。可以预见,要更好的解读肿瘤的信息,必须建立可融合采样数据和知识数据的新的人工智能方法。深度学习(deep learing)(LeCun et al. Nature 2015)与层级贝叶斯学习(hierarchical Bayesian learning)(Ghahramani. Nature 2015; Lake et al. Science 2015)的结合是否是可行的路径?这些都还有待进一步的研究。 随着生物医学检测技术与人工智能的发展,肿瘤的“机密信息”将不断的被披露,人们将拥有更多肿瘤诊疗的新手段。 参考文献: Ghahramani. Probabilistic machine learning and artificial intelligence. Nature 2015, 421:452-459. Gu et al. Gene module based regulator inference identifying miR-139 as a tumor suppressor in colorectal cancer. Molecular BioSystems 2014, 10(12):3249-3254. Guinney et al. The consensus molecular subtypes of colorectal cancer. Nat Med 2015, 21(11):1350-1362. Lake et al. Human-level concept learning through probabilistic program induction. Science 2015, 350(6266):1332-1339. LeCun et al. Deep Learning. Nature 2015, 521:436-444. Niu et al. Protein-structure-guided discovery of functional mutations across 19 cancer types. Nat Genet 2016, 48(8):827-837. Rubio-Perez, et al. In Silico Prescription of Anticancer Drugs to Cohorts of 28 Tumor Types Reveals Targeting Opportunities. Cancer Cell 2015, 27:382-396. Shen et al. Proteome-Scale Investigation of Protein Allosteric Regulation Perturbed by Somatic Mutations in 7,000 Cancer Genomes. Am J Hum Genet 2016, EPub. Wu et al. Fast dimension reduction and integrative clustering of large-scale multi-omics data using low-rank approximation: application to cancer molecular classification. BMC Genomics 2015, 16:1022. Zheng et al. Genome-wide DNA methylation analysis identifies candidate epigenetic markers and drivers of hepatocellular carcinoma. Brief Bioinform 2016, Epub. 2016年12月23日
个人分类: 科研笔记|6374 次阅读|4 个评论
招人!想跟老王当同事的看过来,机器学习,数据科学家
热度 1 jingyanwang 2016-12-13 20:54
老王最近去了工业界发财了,干的是当下最高大上的data scientist。想知道老王去的是哪家公司吗?想不想跟老王一起玩机器学习?老王现在的公司招人了,还等啥?请看下面的job description。 X 工作地点在阿联酋和北京都有。老王坐标阿联酋,经常去迪拜爽,你懂的。 X 待遇有多好? 税后 年薪百万不是梦,秒杀所有一线公司。公司超级有钱,阿拉伯土豪撒钱的概念,你懂的。就在昨天,公司请所有员工去迪拜五星级酒店度假村度假了! X 跟谁一起干活?老王你还信不过?老板和骨干都是从美国来的华人,高手如云,大数据练级的最好选择。 X 干啥项目?最有挑战的大数据项目,客户是土豪,有钱! 有数据! 有Vision! 就是缺人告诉他数据的价值。 感兴趣的,马上联系老王,把你的简历发过来。老王邮箱:jywang.ieee@gmail.com We are looking for Data Scientist, who is passionate in applying data science skills to solve real life big data analytic problems, to join our core engineering team to build one of the largest big data analytics system in the world. The system will ingest, enrich, aggregate, generate insights and alert from 100s of billions of records in real time daily The candidate will work in an agile development environment and have the following responsibilities: Perform analysis and gain insight into a broad range of very large data sets Develop data models Process, cleanse, and verify the integrity of data used for analysis Data mining using state-of-the-art methods Develop predictive analytics using Artificial Intelligence and Machine Learning technologies Prototype and demonstrate solutions Work with software engineers to implement analytical models and approaches in mission-critical products Minimum qualifications: BS/MS/PhD in Computer Science, Math, Statistics, Physics, Engineering or related field Strong experience with data analysis, data modeling and statistical analysis Ability to create extensible and scalable data schema that lay the foundation for analysis Strong experience in at least one scripting language (Python, Perl, Scala, etc.) Experience working with very large data sets Strong verbal and written English communication skills Preferred qualifications: Strong experience in data analysis, statistical analysis and predictive analytics Strong experience with Machine Learning and Artificial Intelligence Working experience with statistical analysis tools such as R, SAS, SPSS, etc. Experience with Java Experience with Hadoop and Spark (Spark Core, Spark ML, SparkR, GraphX, GraphFrames) Experience with ElasticSearch/Solr/Lucene
个人分类: SESSION|575 次阅读|2 个评论
1-year Postdoc Position in ETH Zurich
热度 1 renxl 2016-11-24 05:32
我们组( Computational Social Science , ETH Zurich)最近招收两名博士后,详细情况请见: 1-year Postdoc Position: Complex networks/systems and Machine learning We are looking for a highly motivated postdoctoral fellow in the area of of Complex Networks/Systems and Machine Learning. The candidate will collaborate with the group on complex networks research, data-driven modelling of complex sociotechnical and financial systems, machine learning models, modelling dynamical processes on complex networks with analytical and computational methods such as Monte Carlo and agent-based simulation. The successful candidate is required to have: PhD in quantitative field, good publication record, strong analytical and mathematical background, programming skills in Matlab, Mathematica, Python and C. The candidate should also have research experience with machine learning and complex network research. The candidate must also possess excellent English language skills, social skills, team spirit, and international experience, and must be able and willing to work in a highly interdisciplinary environment. Candidates should submit their application materials as a single pdf file (5 MB), including a short motivational letter, their CV and exam documents (A-levels, bachelor, master or diploma, and PhD) with attention to: ETH Zurich, Mr. Olivier Meyrat, Human Resources, CH-8092 Zürich. 2 letters of recommendation should also be sent directly to us by recommenders. Applicants are encouraged to submit their materials as soon as possible via ETH's application system. The reviewing of applications will continue until the position is filled. Contact ================================= 1-year Postdoc Position: Big Data, Social Mining, Data Science We are looking for a highly motivated postdoctoral fellow in the area of Big Data with a particular focus on Social Mining. The ideal candidate shall pursue cutting-edge research in the areas of Big Data, data science, deep learning and their interplay with the Internet of Things for techno-socio-economic application domains such as Smart Cities. Candidates are required to do research on novel data collection and analytics methodologies and therefore advanced skills in relevant programming platforms (Hadoop, Spark, Mahout, real-time data analytics) are required. Experience in developing Internet of Things systems such as Arduino and smart phones apps are a plus. The candidate must also possess excellent English language skills, social skills, team spirit, and international experience, and must be able and willing to work in a highly interdisciplinary environment. Candidates should submit their application materials as a single pdf file (5 MB), including a short motivational letter, their CV and exam documents (A-levels, bachelor, master or diploma, and PhD) with attention to: ETH Zurich, Mr. Olivier Meyrat, Human Resources, CH-8092 Zürich. 2 to 3 letters of recommendation should also be sent directly to us by recommenders. Applicants are encouraged to submit their materials as soon as possible via ETH's application system. The reviewing of applications will continue until the position is filled. Contact
5279 次阅读|2 个评论
[转载]隐马尔科夫模型
wlp8631 2016-11-6 11:45
隐马尔科夫模型   HMM(隐马尔科夫模型)是自然语言处理中的一个基本模型,用途比较广泛,如汉语分词、词性标注及语音识别等,在NLP中占有很重要的地位。网上关于HMM的介绍讲解文档很多,我自己当时开始看的时候也有点稀里糊涂。后来看到wiki上举得一个关于HMM的例子才如醍醐灌顶,忽然间明白HMM的三大问题是怎么回事了。例子我借助中文wiki重新翻译了一下,并对三大基本问题进行说明,希望对读者朋友有所帮助:   Alice 和Bob是好朋友,但是他们离得比较远,每天都是通过电话了解对方那天作了什么.Bob仅仅对三种活动感兴趣:公园散步,购物以及清理房间.他选择做什么事情只凭当天天气.Alice对于Bob所住的地方的天气情况并不了解,但是知道总的趋势.在Bob告诉Alice每天所做的事情基础上,Alice想要猜测Bob所在地的天气情况 .   Alice认为天气的运行就像一个马尔可夫链. 其有两个状态 “雨”和”晴”,但是无法直接观察它们,也就是说,它们对于Alice是隐藏的.每天,Bob有一定的概率进行下列活动:”散步”, “购物”, 或 “清理”. 因为Bob会告诉Alice他的活动,所以这些活动就是Alice的观察数据.这整个系统就是一个 隐马尔可夫模型HMM .   Alice知道这个地区的总的天气趋势,并且平时知道Bob会做的事情.也就是说这个隐马尔可夫模型的参数是已知的.可以用程序语言( Python )写下来 :    // 状态数目,两个状态:雨或晴     states = (‘Rainy’, ‘Sunny’)    // 每个状态下可能的观察值    observations = (‘walk’, ’shop’, ‘clean’)                //初始状态空间的概率分布     start_probability = {‘Rainy’: 0.6, ‘Sunny’: 0.4}    // 与时间无关的状态转移概率矩阵     transition_probability = {     ’Rainy’ : {‘Rainy’: 0.7, ‘Sunny’: 0.3},     ’Sunny’ : {‘Rainy’: 0.4, ‘Sunny’: 0.6},     }    //给定状态下,观察值概率分布,发射概率     emission_probability = {     ’Rainy’ : {‘walk’: 0.1, ’shop’: 0.4, ‘clean’: 0.5},     ’Sunny’ : {‘walk’: 0.6, ’shop’: 0.3, ‘clean’: 0.1},     }   在这些代码中,start_probability代表了Alice对于Bob第一次给她打电话时的天气情况的不确定性(Alice知道的只是那个地方平均起来下雨多些).在这里,这个特定的概率分布并非平衡的,平衡概率应该接近(在给定变迁概率的情况下){‘Rainy’: 0.571, ‘Sunny’: 0.429}。 transition_probability 表示马尔可夫链下的天气变迁情况,在这个例子中,如果今天下雨,那么明天天晴的概率只有30%.代码emission_probability 表示了Bob每天作某件事的概率.如果下雨,有 50% 的概率他在清理房间;如果天晴,则有60%的概率他在外头散步。   Alice和Bob通了三天电话后发现第一天Bob去散步了,第二天他去购物了,第三天他清理房间了。Alice现在有两个问题:这个观察序列“散步、购物、清理”的总的概率是多少?(注:这个问题对应于HMM的基本问题之一:已知HMM模型λ及观察序列O,如何计算P(O|λ)?) 最能解释这个观察序列的状态序列(晴/雨)又是什么?(注:这个问题对应HMM基本问题之二:给定观察序列O=O1,O2,…OT以及模型λ,如何选择一个对应的状态序列S = q1,q2,…qT,使得S能够最为合理的解释观察序列O?)   至于HMM的基本问题之三:如何调整模型参数, 使得P(O|λ)最大?这个问题事实上就是给出很多个观察序列值,来训练以上几个参数的问题。 HMM学习最佳范例与崔晓源的博客 分类 隐马尔科夫模型   “HMM学习最佳范例”与“崔晓源的博客”本来是不搭边的,由于自己花了几乎一个晚上浏览崔师兄的博客,没有时间写文章了,所以最终决定放在这里做成大杂烩,不过我觉得这个大杂烩还是有点价值的。   先说说HMM,通过Google Analytics 发现,读者经常通过与“隐马尔科夫模型、HMM”相关的关键字访问52nlp的,因为这里曾经写了一篇简单的介绍HMM的文章。事实上,对于HMM,由于自己没有直接实践过,仅停留在“纸上得来”的程度,所以心里也虚。某天赶巧遇到了国外这个专门介绍HMM及其相关 算法 的主页: http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html   里面图文并茂还动感十足,写得又通俗易懂,可以说是我见到过的介绍HMM最好的范例了。读完了立即有翻译全文的冲动,这样一方面可以给有需要的读者以帮助,另一方面翻译虽然耗时,但却能仔细把握一下比较细节的地方,这也是我翻译“MIT自然语言处理”的初衷。不过Google了一下,发现已经有人把这件事做了,这个人就是崔晓源,中文译名是“隐马尔科夫模型HMM自学”。   原计划这一篇博客题目为“HMM学习最佳范例”的,准备介绍这个英文主页和崔晓源的翻译,出于尊重译者劳动的缘故,Google“隐马尔科夫模型HMM自学”,可是发现其被转载了很多,除了知道译者是“崔晓源”外,原始出处似乎被丢失了。不过最终还是找到了原始出处:    http://blogcui.spaces.live.com/blog/cns!46BDB23E24219CE9!144.entry?_c=BlogPart   其实就是崔师兄在msn spaces上的博客,仔细对比了一下原文,发现崔师兄的这个翻译是一个简化和缩略版本,有些地方只是概况性的翻译了一下,省去了一些内容,所以这个介绍HMM主页还有再翻译的必要。有可能的话,今后在52nlp上我会慢慢翻译HMM这个系列。   对比完之后,我就浏览开他的博客了,没想到,一发而不可收,主要在于他的博客多数内容都很有价值。博客最集中更新的一段时间,是在05年5月到9月份他在MSRA-NLC组实习的时候,不过可惜的是,现在几乎不更新了,但是技术博客的好处再于其有效期更长,所以许多东西仍很可以参考,读者如果对NLP,IR或者 机器学习 感兴趣,不妨按时间顺序读读他的日志,定会有不小收获的,这里绝非广告。他目前在MSRA工作,以下是他的“About me”:    ”A man full of enthusiasm for advanced technology business, natrual language processing, IR and search engine technology. I’m finding my way. You never do a bad job only if you choose the right time. So keep your pace accordingly.“   我在上面最大的发现是这个关于机器学习的英文博客: 几种不同程序语言的HMM版本 分类 隐马尔科夫模型   “纸上得来终觉浅,绝知此事要躬行”,在继续翻译《 HMM学习最佳范例 》之前,这里先补充几个不同程序语言实现的HMM版本,主要参考了维基百科。读者有兴趣的话可以研究一下代码,这样对于HMM的学习会深刻很多! C语言 版: 1 、 HTK(Hidden Markov Model Toolkit):   HTK是英国剑桥大学开发的一套基于C语言的隐马尔科夫模型工具箱,主要应用于语音识别、语音合成的研究,也被用在其他领域,如字符识别和DNA排序等。HTK是重量级的HMM版本。   HTK主页: http://htk.eng.cam.ac.uk/ 2 、 GHMM Library:    The General Hidden Markov Model library (GHMM) is a freely available LGPL-ed C library implementing efficient data structures and algorithms for basic and extended HMMs.   GHMM主页: http://www.ghmm.org/ 3 、 UMDHMM(Hidden Markov Model Toolkit):    Hidden Markov Model (HMM) Software: Implementation of Forward-Backward, Viterbi, and Baum-Welch algorithms.   这款属于轻量级的HMM版本。   UMDHMM主页: http://www.kanungo.com/software/software.html Java 版: 4 、 Jahmm Java Library (general-purpose Java library):    Jahmm (pronounced “jam”), is a Java implementation of Hidden Markov Model (HMM) related algorithms. It’s been designed to be easy to use (e.g. simple things are simple to program) and general purpose.   Jahmm主页: http://code.google.com/p/jahmm/ Malab版: 5 、 Hidden Markov Model (HMM) Toolbox for Matlab:    This toolbox supports inference and learning for HMMs with discrete outputs (dhmm’s), Gaussian outputs (ghmm’s), or mixtures of Gaussians output (mhmm’s).   Matlab-HMM主页: http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.html Common Lisp版: 6 、CL-HMM Library (HMM Library for Common Lisp):    Simple Hidden Markov Model library for ANSI Common Lisp. Main structures and basic algorithms implemented. Performance speed comparable to C code. It’s licensed under LGPL.   CL-HMM主页: http://www.ashrentum.net/jmcejuela/programs/cl-hmm/ Haskell版: 7 、The hmm package (A Haskell library for working with Hidden Markov Models):    A simple library for working with Hidden Markov Models. Should be usable even by people who are not familiar with HMMs. Includes implementations of Viterbi’s algorithm and the forward algorithm.   Haskell-HMM主页: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmm   注:Haskell是一种纯函数式编程语言,它的命名源自美国数学家Haskell Brooks Curry,他在数学逻辑方面上的工作使得函数式编程语言有了广泛的基础。   是否还有C++版、Perl版或者Python版呢?欢迎补充! HMM学习最佳范例一:介绍   隐马尔科夫模型(HMM)依然是读者访问“我爱自然语言处理”的一个热门相关关键词,我曾在《 HMM学习最佳范例与崔晓源的博客 》中介绍过国外的一个不错的 HMM学习教程 ,并且国内崔晓源师兄有一个相应的 翻译版本 ,不过这个版本比较简化和粗略,有些地方只是概况性的翻译了一下,省去了一些内容,所以从今天开始计划在52nlp上系统的重新翻译这个学习教程,希望对大家有点用。 一、 介绍(Introduction)   我们通常都习惯寻找一个事物在一段时间里的变化模式(规律)。这些模式发生在很多领域,比如计算机中的指令序列,句子中的词语顺序和口语单词中的音素序列等等,事实上任何领域中的一系列事件都有可能产生有用的模式。   考虑一个简单的例子,有人试图通过一片海藻推断天气——民间传说告诉我们‘湿透的’海藻意味着潮湿阴雨,而‘干燥的’海藻则意味着阳光灿烂。如果它处于一个中间状态(‘有湿气’),我们就无法确定天气如何。然而,天气的状态并没有受限于海藻的状态,所以我们可以在观察的基础上预测天气是雨天或晴天的可能性。另一个有用的线索是前一天的天气状态(或者,至少是它的可能状态)——通过综合昨天的天气及相应观察到的海藻状态,我们有可能更好的预测今天的天气。   这是本教程中我们将考虑的一个典型的系统类型。   首先,我们将介绍产生概率模式的系统,如晴天及雨天间的天气波动。   然后,我们将会看到这样一个系统,我们希望预测的状态并不是观察到的——其底层系统是隐藏的。在上面的例子中,观察到的序列将是海藻而隐藏的系统将是实际的天气。   最后,我们会利用已经建立的模型解决一些实际的问题。对于上述例子,我们想知道:   1. 给出一个星期每天的海藻观察状态,之后的天气将会是什么 ?   2. 给定一个海藻的观察状态序列,预测一下此时是冬季还是夏季?直观地,如果一段时间内海藻都是干燥的,那么这段时间很可能是夏季,反之,如果一段时间内海藻都是潮湿的,那么这段时间可能是冬季。 二、生成模式(Generating Patterns) 1、确定性模式(Deterministic Patterns)   考虑一套交通信号灯,灯的颜色变化序列依次是红色-红色/黄色-绿色-黄色-红色。这个序列可以作为一个状态机器,交通信号灯的不同状态都紧跟着上一个状态。        注意每一个状态都是唯一的依赖于前一个状态,所以,如果交通灯为绿色,那么下一个颜色状态将始终是黄色——也就是说,该系统是确定性的。确定性系统相对比较容易理解和分析,因为状态间的转移是完全已知的。 2、非确定性模式(Non-deterministic patterns)   为了使天气那个例子更符合实际,加入第三个状态——多云。与交通信号灯例子不同,我们并不期望这三个天气状态之间的变化是确定性的,但是我们依然希望对这个系统建模以便生成一个天气变化模式(规律)。   一种做法是假设模型的当前状态仅仅依赖于前面的几个状态,这被称为马尔科夫假设,它极大地简化了问题。显然,这可能是一种粗糙的假设,并且因此可能将一些非常重要的信息丢失。   当考虑天气问题时,马尔科夫假设假定今天的天气只能通过过去几天已知的天气情况进行预测——而对于其他因素,譬如风力、气压等则没有考虑。在这个例子以及其他相似的例子中,这样的假设显然是不现实的。然而,由于这样经过简化的系统可以用来分析,我们常常接受这样的知识假设,虽然它产生的某些信息不完全准确。                  一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程。这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态。最简单的马尔科夫过程是一阶模型,它的状态选择仅与前一个状态有关。这里要注意它与确定性系统并不相同,因为下一个状态的选择由相应的概率决定,并不是确定性的。   下图是天气例子中状态间所有可能的一阶状态转移情况:        对于有M个状态的一阶马尔科夫模型,共有 个状态转移,因为任何一个状态都有可能是所有状态的下一个转移状态。每一个状态转移都有一个概率值,称为状态转移概率——这是从一个状态转移到另一个状态的概率。所有的 个概率可以用一个状态转移矩阵表示。注意这些概率并不随时间变化而不同——这是一个非常重要(但常常不符合实际)的假设。   下面的状态转移矩阵显示的是天气例子中可能的状态转移概率:        -也就是说,如果昨天是晴天,那么今天是晴天的概率为0.5,是多云的概率为0.375。注意,每一行的概率之和为1。   要初始化这样一个系统,我们需要确定起始日天气的(或可能的)情况,定义其为一个初始概率向量,称为 向量。              -也就是说,第一天为晴天的概率为1。   现在我们定义一个一阶马尔科夫过程如下:     状态 :三个状态——晴天,多云,雨天。     向量 :定义系统初始化时每一个状态的概率。     状态转移矩阵 :给定前一天天气情况下的当前天气概率。   任何一个可以用这种方式描述的系统都是一个马尔科夫过程。 3、总结   我们尝试识别时间变化中的模式,并且为了达到这个目我们试图对这个过程建模以便产生这样的模式。我们使用了离散时间点、离散状态以及做了马尔科夫假设。在采用了这些假设之后,系统产生了这个被描述为马尔科夫过程的模式,它包含了一个 向量(初始概率)和一个状态转移矩阵。关于假设,重要的一点是状态转移矩阵并不随时间的改变而改变——这个矩阵在整个系统的生命周期中是固定不变的。 三、隐藏模式(Hidden Patterns) 1、马尔科夫过程的局限性   在某些情况下,我们希望找到的模式用马尔科夫过程描述还显得不充分。回顾一下天气那个例子,一个隐士也许不能够直接获取到天气的观察情况,但是他有一些水藻。民间传说告诉我们水藻的状态与天气状态有一定的概率关系——天气和水藻的状态是紧密相关的。在这个例子中我们有两组状态,观察的状态(水藻的状态)和隐藏的状态(天气的状态)。我们希望为隐士设计一种算法,在不能够直接观察天气的情况下,通过水藻和马尔科夫假设来预测天气。   一个更实际的问题是语音识别,我们听到的声音是来自于声带、喉咙大小、舌头位置以及其他一些东西的组合结果。所有这些因素相互作用产生一个单词的声音,一套语音识别系统检测的声音就是来自于个人发音时身体内部物理变化所引起的不断改变的声音。   一些语音识别装置工作的原理是将内部的语音产出看作是隐藏的状态,而将声音结果作为一系列观察的状态,这些由语音过程生成并且最好的近似了实际(隐藏)的状态。在这两个例子中,需要着重指出的是,隐藏状态的数目与观察状态的数目可以是不同的。一个包含三个状态的天气系统(晴天、多云、雨天)中,可以观察到4个等级的海藻湿润情况(干、稍干、潮湿、湿润);纯粹的语音可以由80个音素描述,而身体的发音系统会产生出不同数目的声音,或者比80多,或者比80少。   在这种情况下,观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。 2、隐马尔科夫模型(Hidden Markov Models)   下图显示的是天气例子中的隐藏状态和观察状态。假设隐藏状态(实际的天气)由一个简单的一阶马尔科夫过程描述,那么它们之间都相互连接。      隐藏状态和观察状态之间的连接表示:在给定的马尔科夫过程中,一个特定的隐藏状态生成特定的观察状态的概率。这很清晰的表示了‘进入’一个观察状态的所有概率之和为1,在上面这个例子中就是Pr(Obs|Sun), Pr(Obs|Cloud) 及 Pr(Obs|Rain)之和。(对这句话我有点疑惑?)   除了定义了马尔科夫过程的概率关系,我们还有另一个矩阵,定义为混淆矩阵(confusion matrix),它包含了给定一个隐藏状态后得到的观察状态的概率。对于天气例子,混淆矩阵是:      注意矩阵的每一行之和是1。 3、总结(Summary)   我们已经看到在一些过程中一个观察序列与一个底层马尔科夫过程是概率相关的。在这些例子中,观察状态的数目可以和隐藏状态的数码不同。   我们使用一个隐马尔科夫模型(HMM)对这些例子建模。这个模型包含两组状态集合和三组概率集合:   * 隐藏状态:一个系统的(真实)状态,可以由一个马尔科夫过程进行描述(例如,天气)。   * 观察状态:在这个过程中‘可视’的状态(例如,海藻的湿度)。    * 向量:包含了(隐)模型在时间t=1时一个特殊的隐藏状态的概率(初始概率)。   * 状态转移矩阵:包含了一个隐藏状态到另一个隐藏状态的概率   * 混淆矩阵:包含了给定隐马尔科夫模型的某一个特殊的隐藏状态,观察到的某个观察状态的概率。   因此一个隐马尔科夫模型是在一个标准的马尔科夫过程中引入一组观察状态,以及其与隐藏状态间的一些概率关系。 四、隐马尔科夫模型(Hidden Markov Models) 1、定义(Definition of a hidden Markov model)   一个隐马尔科夫模型是一个三元组( , A, B )。    :初始化概率向量;    :状态转移矩阵;    :混淆矩阵;   在状态转移矩阵及混淆矩阵中的每一个概率都是时间无关的——也就是说,当系统演化时这些矩阵并不随时间改变。实际上,这是马尔科夫模型关于真实世界最不现实的一个假设。 2、应用(Uses associated with HMMs)   一旦一个系统可以作为HMM被描述,就可以用来解决三个基本问题。其中前两个是模式识别的问题:给定HMM求一个观察序列的概率(评估);搜索最有可能生成一个观察序列的隐藏状态训练(解码)。第三个问题是给定观察序列生成一个HMM(学习)。  a) 评估(Evaluation)   考虑这样的问题,我们有一些描述不同系统的隐马尔科夫模型(也就是一些 ( ,A,B) 三元组的集合)及一个观察序列。我们想知道哪一个HMM最有可能产生了这个给定的观察序列。例如,对于海藻来说,我们也许会有一个“夏季”模型和一个“冬季”模型,因为不同季节之间的情况是不同的——我们也许想根据海藻湿度的观察序列来确定当前的季节。   我们使用前向算法(forward algorithm)来计算给定隐马尔科夫模型(HMM)后的一个观察序列的概率,并因此选择最合适的隐马尔科夫模型(HMM)。   在语音识别中这种类型的问题发生在当一大堆数目的马尔科夫模型被使用,并且每一个模型都对一个特殊的单词进行建模时。一个观察序列从一个发音单词中形成,并且通过寻找对于此观察序列最有可能的隐马尔科夫模型(HMM)识别这个单词。  b) 解码( Decoding)    给定观察序列搜索最可能的隐藏状态序列。   另一个相关问题,也是最感兴趣的一个,就是搜索生成输出序列的隐藏状态序列。在许多情况下我们对于模型中的隐藏状态更感兴趣,因为它们代表了一些更有价值的东西,而这些东西通常不能直接观察到。   考虑海藻和天气这个例子,一个盲人隐士只能感觉到海藻的状态,但是他更想知道天气的情况,天气状态在这里就是隐藏状态。   我们使用Viterbi 算法(Viterbi algorithm)确定(搜索)已知观察序列及HMM下最可能的隐藏状态序列。   Viterbi算法(Viterbi algorithm)的另一广泛应用是自然语言处理中的词性标注。在词性标注中,句子中的单词是观察状态,词性(语法类别)是隐藏状态(注意对于许多单词,如wind,fish拥有不止一个词性)。对于每句话中的单词,通过搜索其最可能的隐藏状态,我们就可以在给定的上下文中找到每个单词最可能的词性标注。  C)学习(Learning)    根据观察序列生成隐马尔科夫模型。   第三个问题,也是与HMM相关的问题中最难的,根据一个观察序列(来自于已知的集合),以及与其有关的一个隐藏状态集,估计一个最合适的隐马尔科夫模型(HMM),也就是确定对已知序列描述的最合适的( ,A,B )三元组。   当矩阵A和B不能够直接被(估计)测量时,前向-后向算法(forward-backward algorithm)被用来进行学习(参数估计),这也是实际应用中常见的情况。 3、总结(Summary)   由一个向量和两个矩阵 ( ,A,B) 描述的隐马尔科夫模型对于实际系统有着巨大的价值,虽然经常只是一种近似,但它们却是经得起分析的。隐马尔科夫模型通常解决的问题包括:   1. 对于一个观察序列匹配最可能的系统——评估,使用前向算法(forward algorithm)解决;   2. 对于已生成的一个观察序列,确定最可能的隐藏状态序列——解码,使用Viterbi 算法(Viterbi algorithm)解决;   3. 对于已生成的观察序列,决定最可能的模型参数——学习,使用前向-后向算法(forward-backward algorithm)解决。 五、前向算法(Forward Algorithm) 计算观察序列的概率(Finding the probability of an observed sequence) 1.穷举搜索( Exhaustive search for solution)   给定隐马尔科夫模型,也就是在模型参数( , A, B) 已知的情况下,我们想找到观察序列的概率。还是考虑天气这个例子,我们有一个用来描述天气及与它密切相关的海藻湿度状态的隐马尔科夫模型(HMM),另外我们还有一个海藻的湿度状态观察序列。假设连续3天海藻湿度的观察结果是(干燥、湿润、湿透)——而这三天每一天都可能是晴天、多云或下雨,对于观察序列以及隐藏的状态,可以将其视为网格:   网格中的每一列都显示了可能的的天气状态,并且每一列中的每个状态都与相邻列中的每一个状态相连。而其状态间的转移都由状态转移矩阵提供一个概率。在每一列下面都是某个时间点上的观察状态,给定任一个隐藏状态所得到的观察状态的概率由混淆矩阵提供。   可以看出,一种计算观察序列概率的方法是找到每一个可能的隐藏状态,并且将这些隐藏状态下的观察序列概率相加。对于上面那个(天气)例子,将有3^3 = 27种不同的天气序列可能性,因此,观察序列的概率是:    Pr(dry,damp,soggy | HMM) = Pr(dry,damp,soggy | sunny,sunny,sunny) + Pr(dry,damp,soggy | sunny,sunny ,cloudy) + Pr(dry,damp,soggy | sunny,sunny ,rainy) + . . . . Pr(dry,damp,soggy | rainy,rainy ,rainy)   用这种方式计算观察序列概率极为昂贵,特别对于大的模型或较长的序列,因此我们可以利用这些概率的时间不变性来减少问题的复杂度。 2.使用递归降低问题复杂度   给定一个隐马尔科夫模型(HMM),我们将考虑递归地计算一个观察序列的概率。我们首先定义局部概率(partial probability),它是到达网格中的某个中间状态时的概率。然后,我们将介绍如何在t=1和t=n(1)时计算这些局部概率。   假设一个T-长观察序列是:           2a.局部概率 ( ’s)   考虑下面这个网格,它显示的是天气状态及对于观察序列干燥,湿润及湿透的一阶状态转移情况:       我们可以将计算到达网格中某个中间状态的概率作为所有到达这个状态的可能路径的概率求和问题。   例如,t=2时位于“多云”状态的局部概率通过如下路径计算得出:       我们定义t时刻位于状态j的局部概率为at(j)——这个局部概率计算如下:    t ( j )= Pr( 观察状态 | 隐藏状态j ) x Pr(t时刻所有指向j状态的路径)   对于最后的观察状态,其局部概率包括了通过所有可能的路径到达这些状态的概率——例如,对于上述网格,最终的局部概率通过如下路径计算得出:       由此可见,对于这些最终局部概率求和等价于对于网格中所有可能的路径概率求和,也就求出了给定隐马尔科夫模型(HMM)后的观察序列概率。   第3节给出了一个计算这些概率的动态示例。 2b.计算t=1时的局部概率 ’s   我们按如下公式计算局部概率:    t ( j )= Pr( 观察状态 | 隐藏状态j ) x Pr(t时刻所有指向j状态的路径)   特别当t=1时,没有任何指向当前状态的路径。故t=1时位于当前状态的概率是初始概率,即Pr(state|t=1)=P(state),因此,t=1时的局部概率等于当前状态的初始概率乘以相关的观察概率:             所以初始时刻状态j的局部概率依赖于此状态的初始概率及相应时刻我们所见的观察概率。 2c.计算t1时的局部概率 ’s   我们再次回顾局部概率的计算公式如下:    t ( j )= Pr( 观察状态 | 隐藏状态j ) x Pr(t时刻所有指向j状态的路径)   我们可以假设(递归地),乘号左边项“Pr( 观察状态 | 隐藏状态j )”已经有了,现在考虑其右边项“Pr(t时刻所有指向j状态的路径)”。   为了计算到达某个状态的所有路径的概率,我们可以计算到达此状态的每条路径的概率并对它们求和,例如:          计算 所需要的路径数目随着观察序列的增加而指数级递增,但是t-1时刻 ’s 给出了所有到达此状态的前一路径概率,因此,我们可以通过t-1时刻的局部概率定义t时刻的 ’s ,即:         故我们所计算的这个概率等于相应的观察概率(亦即,t+1时在状态j所观察到的符号的概率)与该时刻到达此状态的概率总和——这来自于上一步每一个局部概率的计算结果与相应的状态转移概率乘积后再相加——的乘积。   注意我们已经有了一个仅利用t时刻局部概率计算t+1时刻局部概率的表达式。   现在我们就可以递归地计算给定隐马尔科夫模型(HMM)后一个观察序列的概率了——即通过t=1时刻的局部概率 ’s 计算t=2时刻的 ’s ,通过t=2时刻的 ’s 计算t=3时刻的 ’s 等等直到t=T。给定隐马尔科夫模型(HMM)的观察序列的概率就等于t=T时刻的局部概率之和。 2d.降低计算复杂度   我们可以比较通过穷举搜索(评估)和通过递归前向算法计算观察序列概率的时间复杂度。   我们有一个长度为T的观察序列O以及一个含有n个隐藏状态的隐马尔科夫模型 l=( ,A,B) 。   穷举搜索将包括计算所有可能的序列:       公式        对我们所观察到的概率求和——注意其复杂度与T成指数级关系。相反的,使用前向算法我们可以利用上一步计算的信息,相应地,其时间复杂度与T成线性关系。 注:穷举搜索的时间复杂度是 ,前向算法的时间复杂度是,其中T指的是观察序列长度,N指的是隐藏状态数目。 3.总结   我们的目标是计算给定隐马尔科夫模型HMM下的观察序列的概率 ——Pr(observations | ) 。   我们首先通过计算局部概率( ’s )降低计算整个概率的复杂度,局部概率表示的是t时刻到达某个状态s的概率。   t=1时,可以利用初始概率(来自于P向量)和观察概率Pr(observation|state)(来自于混淆矩阵)计算局部概率;而t1时的局部概率可以利用t-时的局部概率计算。   因此,这个问题是递归定义的,观察序列的概率就是通过依次计算t=1,2,…,T时的局部概率,并且对于t=T时所有局部概率 ’s 相加得到的。   注意,用这种方式计算观察序列概率的时间复杂度远远小于计算所有序列的概率并对其相加(穷举搜索)的时间复杂度。   我们使用前向算法计算T长观察序列的概率 :         其中y的每一个是观察集合之一。局部(中间)概率 ( ’s) 是递归计算的,首先通过计算t=1时刻所有状态的局部概率 :         然后在每个时间点,t=2,… ,T时,对于每个状态的局部概率,由下式计算局部概率 :         也就是当前状态相应的观察概率与所有到达该状态的路径概率之积,其递归地利用了上一个时间点已经计算好的一些值。   最后,给定 HMM, , 观察序列的概率等于T时刻所有局部概率之和:         再重复说明一下,每一个局部概率(t 2 时)都由前一时刻的结果计算得出。   对于“天气”那个例子,下面的图表显示了t = 2为状态为多云时局部概率 的计算过程。这是相应的观察概率b与前一时刻的局部概率与状态转移概率a相乘后的总和再求积的结果:     总结(Summary)   我们使用前向算法来计算给定隐马尔科夫模型(HMM)后的一个观察序列的概率。它在计算中利用递归避免对网格所有路径进行穷举计算。   给定这种算法,可以直接用来确定对于已知的一个观察序列,在一些隐马尔科夫模型(HMMs)中哪一个HMM最好的描述了它——先用前向算法评估每一个(HMM),再选取其中概率最高的一个。   首先需要说明的是,本节不是这个系列的翻译,而是作为前向算法这一章的补充,希望能从实践的角度来说明前向算法。除了用程序来解读hmm的前向算法外,还希望将原文所举例子的问题拿出来和大家探讨。   文中所举的程序来自于UMDHMM这个C语言版本的HMM工具包,具体见《 几种不同程序语言的HMM版本 》。先说明一下UMDHMM这个包的基本情况,在 Linux 环境下,进入umdhmm-v1.02目录,“make all”之后会产生4个可执行文件,分别是:    genseq : 利用一个给定的隐马尔科夫模型产生一个符号序列(Generates a symbol sequence using the specified model sequence using the specified model)    testfor : 利用前向算法计算log Prob(观察序列| HMM模型)(Computes log Prob(observation|model) using the Forward algorithm.)    testvit : 对于给定的观察符号序列及HMM,利用Viterbi 算法生成最可能的隐藏状态序列(Generates the most like state sequence for a given symbol sequence, given the HMM, using Viterbi)    esthmm : 对于给定的观察符号序列,利用BaumWelch算法学习隐马尔科夫模型HMM(Estimates the HMM from a given symbol sequence using BaumWelch)。   这些可执行文件需要读入有固定格式的HMM文件及观察符号序列文件,格式要求及举例如下:    HMM 文件格式: ——————————————————————–      M= number of symbols      N= number of states      A:      a11 a12 … a1N      a21 a22 … a2N      . . . .      . . . .      . . . .      aN1 aN2 … aNN      B:      b11 b12 … b1M      b21 b22 … b2M      . . . .      . . . .      . . . .      bN1 bN2 … bNM      pi:      pi1 pi2 … piN ——————————————————————–    HMM 文件举例: ——————————————————————–      M= 2      N= 3      A:      0.333 0.333 0.333      0.333 0.333 0.333      0.333 0.333 0.333      B:      0.5 0.5      0.75 0.25      0.25 0.75      pi:      0.333 0.333 0.333 ——————————————————————–    观察序列文件格式: ——————————————————————–      T=seqence length      o1 o2 o3 . . . oT ——————————————————————–    观察序列文件举例: ——————————————————————–      T= 10      1 1 1 1 2 1 2 2 2 2 ——————————————————————–   对于前向算法的测试程序testfor来说,运行:    testfor model.hmm(HMM文件) obs.seq(观察序列文件)   就可以得到观察序列的概率结果的对数值,这里我们在testfor.c的第58行对数结果的输出下再加一行输出:     fprintf(stdout, “prob(O| model) = %fn”, proba);   就可以输出运用前向算法计算观察序列所得到的概率值。至此,所有的准备工作已结束,接下来,我们将进入具体的程序解读。   首先,需要定义HMM的 数据结构 ,也就是HMM的五个基本要素,在UMDHMM中是如下定义的(在hmm.h中): typedef struct { int N; /* 隐藏状态数目 ;Q={1,2,…,N} */ int M; /* 观察符号数目 ; V={1,2,…,M}*/ double **A; /* 状态转移矩阵A . a 是从t时刻状态i到t+1时刻状态j的转移概率 */ double **B; /* 混淆矩阵B . b 在状态j时观察到符合k的概率。 */ double *pi; /* 初始向量pi ,pi 是初始状态概率分布 */ } HMM; 前向算法程序示例如下(在forward.c中): /*  函数参数说明:  *phmm:已知的HMM模型;T:观察符号序列长度;  *O:观察序列;**alpha:局部概率;*pprob:最终的观察概率 */ void Forward(HMM *phmm, int T, int *O, double **alpha, double *pprob) {   int i, j;   /* 状态索引 */   int t;    /* 时间索引 */   double sum; /*求局部概率时的中间值 */   /* 1. 初始化:计算t=1时刻所有状态的局部概率 : */    for (i = 1; i = phmm-N; i++)      alpha = phmm-pi * phmm-B ];      /* 2. 归纳:递归计算每个时间点,t=2,… ,T时的局部概率 */    for (t = 1; t T; t++)    {      for (j = 1; j = phmm-N; j++)      {        sum = 0.0;        for (i = 1; i = phmm-N; i++)          sum += alpha * (phmm-A );        alpha = sum*(phmm-B ]);      }   }   /* 3. 终止:观察序列的概率等于T时刻所有局部概率之和 */    *pprob = 0.0;    for (i = 1; i = phmm-N; i++)      *pprob += alpha ; }   下一节我将用这个程序来验证英文原文中所举前向算法演示例子的问题。   在HMM这个翻译系列的原文中,作者举了一个前向算法的交互例子,这也是这个系列中比较出彩的地方,但是,在具体运行这个例子的时候,却发现其似乎有点问题。   先说一下如何使用这个 交互例子 ,运行时需要浏览器支持java,我用的是firefox。首先在Set按钮前面的对话框里上观察序列,如“Dry,Damp, Soggy” 或“Dry Damp Soggy”,观察符号间用逗号或空格隔开;然后再点击Set按钮,这样就初始化了观察矩阵;如果想得到一个总的结果,即Pr(观察序列|隐马尔科夫模型),就点旁边的Run按钮;如果想一步一步观察计算过程,即每个节点的局部概率,就单击旁边的Step按钮。   原文交互例子(即天气这个例子)中所定义的已知隐马尔科夫模型如下:   1、隐藏状态 (天气):Sunny,Cloudy,Rainy;   2、观察状态(海藻湿度):Dry,Dryish,Damp,Soggy;   3、初始状态概率: Sunny(0.63), Cloudy(0.17), Rainy(0.20);   4、状态转移矩阵:              weather today              Sunny Cloudy Rainy      weather  Sunny 0.500 0.375 0.125      yesterday Cloudy 0.250 0.125 0.625           Rainy  0.250 0.375 0.375   5、混淆矩阵:              observed states             Dry Dryish Damp Soggy           Sunny 0.60 0.20 0.15 0.05     hidden  Cloudy 0.25 0.25 0.25 0.25     states  Rainy 0.05 0.10 0.35 0.50   为了UMDHMM也能运行这个例子,我们将上述天气例子中的隐马尔科夫模型转化为如下的UMDHMM可读的HMM文件weather.hmm: ——————————————————————–      M= 4     N= 3       A:      0.500 0.375 0.125      0.250 0.125 0.625      0.250 0.375 0.375      B:      0.60 0.20 0.15 0.05      0.25 0.25 0.25 0.25      0.05 0.10 0.35 0.50      pi:      0.63 0.17 0.20 ——————————————————————–   在运行例子之前,如果读者也想观察每一步的运算结果,可以将umdhmm-v1.02目录下forward.c中的void Forward(…)函数替换如下: ——————————————————————– void Forward(HMM *phmm, int T, int *O, double **alpha, double *pprob) {    int i, j; /* state indices */    int t; /* time index */    double sum; /* partial sum */       /* 1. Initialization */    for (i = 1; i = phmm-N; i++)    {      alpha = phmm-pi * phmm-B ];      printf( “a = pi * b = %f * %f = %f\n”,i, i, i, O , phmm-pi , phmm-B ], alpha );    }       /* 2. Induction */    for (t = 1; t T; t++)    {      for (j = 1; j = phmm-N; j++)      {        sum = 0.0;        for (i = 1; i = phmm-N; i++)        {          sum += alpha * (phmm-A );          printf( “a * A = %f * %f = %f\n”, t, i, i, j, alpha , phmm-A , alpha * (phmm-A ));          printf( “sum = %f\n”, sum );        }        alpha = sum*(phmm-B ]);        printf( “a = sum * b ] = %f * %f = %f\n”,t+1, j, j, O , sum, phmm-B ], alpha );      }   }    /* 3. Termination */    *pprob = 0.0;    for (i = 1; i = phmm-N; i++)    {      *pprob += alpha ;      printf( “alpha = %f\n”, T, i, alpha );      printf( “pprob = %f\n”, *pprob );    } } ——————————————————————–   替换完毕之后,重新“make clean”,“make all”,这样新的testfor可执行程序就可以输出前向算法每一步的计算结果。   现在我们就用testfor来运行原文中默认给出的观察序列“Dry,Damp,Soggy”,其所对应的UMDHMM可读的观察序列文件test1.seq: ——————————————————————–      T=3      1 3 4 ——————————————————————–   好了,一切准备工作就绪,现在就输入如下命令:      testfor weather.hmm test1.seq result1   result1就包含了所有的结果细节: ——————————————————————– Forward without scaling a = pi * b = 0.630000 * 0.600000 = 0.378000 a = pi * b = 0.170000 * 0.250000 = 0.042500 a = pi * b = 0.200000 * 0.050000 = 0.010000 … pprob = 0.026901 log prob(O| model) = -3.615577E+00 prob(O| model) = 0.026901 … ——————————————————————–   黑体部分是最终的观察序列的概率结果,即本例中的Pr(观察序列|HMM) = 0.026901。   但是,在原文中点Run按钮后,结果却是:Probability of this model = 0.027386915。   这其中的差别到底在哪里?我们来仔细观察一下中间运行过程:   在初始化亦t=1时刻的局部概率计算两个是一致的,没有问题。但是,t=2时,在隐藏状态“Sunny”的局部概率是不一致的。英文原文给出的例子的运行结果是:    Alpha = (((0.37800002*0.5) + (0.0425*0.375) + (0.010000001*0.125)) * 0.15) = 0.03092813   而UMDHMM给出的结果是: ——————————————————————–    a * A = 0.378000 * 0.500000 = 0.189000    sum = 0.189000    a * A = 0.042500 * 0.250000 = 0.010625    sum = 0.199625    a * A = 0.010000 * 0.250000 = 0.002500    sum = 0.202125    a = sum * b ] = 0.202125 * 0.150000 = 0.030319 ——————————————————————–   区别就在于状态转移概率的选择上,原文选择的是状态转移矩阵中的第一行,而UMDHMM选择的则是状态转移矩阵中的第一列。如果从原文给出的状态转移矩阵来看,第一行代表的是从前一时刻的状态“Sunny”分别到当前时刻的状态“Sunny”,“Cloudy”,“Rainy”的概率;而第一列代表的是从前一时刻的状态“Sunny”,“Cloudy”,“Rainy”分别到当前时刻状态“Sunny”的概率。这样看来似乎原文的计算过程有误,读者不妨多试几个例子看看,前向算法这一章就到此为止了。 HMM学习最佳范例六:维特比算法 寻找最可能的隐藏状态序列(Finding most probable sequence of hidden states)   对于一个特殊的隐马尔科夫模型(HMM)及一个相应的观察序列,我们常常希望能找到生成此序列最可能的隐藏状态序列。 1.穷举搜索   我们使用下面这张网格图片来形象化的说明隐藏状态和观察状态之间的关系:   我们可以通过列出所有可能的隐藏状态序列并且计算对于每个组合相应的观察序列的概率来找到最可能的隐藏状态序列。最可能的隐藏状态序列是使下面这个概率最大的组合:       Pr(观察序列|隐藏状态的组合)   例如,对于网格中所显示的观察序列,最可能的隐藏状态序列是下面这些概率中最大概率所对应的那个隐藏状态序列:    Pr(dry,damp,soggy | sunny,sunny,sunny), Pr(dry,damp,soggy | sunny,sunny,cloudy), Pr(dry,damp,soggy | sunny,sunny,rainy), . . . . Pr(dry,damp,soggy | rainy,rainy,rainy)   这种方法是可行的,但是通过穷举计算每一个组合的概率找到最可能的序列是极为昂贵的。与前向算法类似,我们可以利用这些概率的时间不变性来降低计算复杂度。 2.使用递归降低复杂度   给定一个观察序列和一个隐马尔科夫模型(HMM),我们将考虑递归地寻找最有可能的隐藏状态序列。我们首先定义局部概率 , 它是到达网格中的某个特殊的中间状态时的概率。然后,我们将介绍如何在t=1和t=n(1)时计算这些局部概率。   这些局部概率与前向算法中所计算的局部概率是不同的,因为它们表示的是时刻t时到达某个状态最可能的路径的概率,而不是所有路径概率的总和。  2a.局部概率 ’s 和局部最佳途径   考虑下面这个网格,它显示的是天气状态及对于观察序列干燥,湿润及湿透的一阶状态转移情况:       对于网格中的每一个中间及终止状态,都有一个到达该状态的最可能路径。举例来说,在t=3时刻的3个状态中的每一个都有一个到达此状态的最可能路径,或许是这样的:      我们称这些路径局部最佳路径(partial best paths)。其中每个局部最佳路径都有一个相关联的概率,即局部概率或 。与前向算法中的局部概率不同, 是到达该状态(最可能)的一条路径的概率。   因而 (i,t) 是t时刻到达状态i的所有序列概率中最大的概率,而局部最佳路径是得到此最大概率的隐藏状态序列。对于每一个可能的i和t值来说,这一类概率(及局部路径)均存在。   特别地,在t=T时每一个状态都有一个局部概率和一个局部最佳路径。这样我们就可以通过选择此时刻包含最大局部概率的状态及其相应的局部最佳路径来确定全局最佳路径(最佳隐藏状态序列)。 2b.计算t=1时刻的局部概率 ’s   我们计算的局部概率 是作为最可能到达我们当前位置的路径的概率(已知的特殊知识如观察概率及前一个状态的概率)。当t=1的时候,到达某状态的最可能路径明显是不存在的;但是,我们使用t=1时的所处状态的初始概率及相应的观察状态k1的观察概率计算局部概率 ;即              ——与前向算法类似,这个结果是通过初始概率和相应的观察概率相乘得出的。 2c.计算t1时刻的局部概率 ’s   现在我们来展示如何利用t-1时刻的局部概率 计算t时刻的局部概率 。   考虑如下的网格:        我们考虑计算t时刻到达状态X的最可能的路径;这条到达状态X的路径将通过t-1时刻的状态A,B或C中的某一个。   因此,最可能的到达状态X的路径将是下面这些路径的某一个        (状态序列),…,A, X        (状态序列),…,B, X 或      (状态序列),…,C, X   我们想找到路径末端是AX,BX或CX并且拥有最大概率的路径。   回顾一下马尔科夫假设:给定一个状态序列,一个状态发生的概率只依赖于前n个状态。特别地,在一阶马尔可夫假设下,状态X在一个状态序列后发生的概率只取决于之前的一个状态,即     Pr ( 到达状态A最可能的路径) .Pr (X | A) . Pr (观察状态 | X)   与此相同,路径末端是AX的最可能的路径将是到达A的最可能路径再紧跟X。相似地,这条路径的概率将是:     Pr ( 到达状态A最可能的路径) .Pr (X | A) . Pr (观察状态 | X)   因此,到达状态X的最可能路径概率是:   其中第一项是t-1时刻的局部概率,第二项是状态转移概率以及第三项是观察概率。   泛化上述公式,就是在t时刻,观察状态是kt,到达隐藏状态i的最佳局部路径的概率是:         这里,我们假设前一个状态的知识(局部概率)是已知的,同时利用了状态转移概率和相应的观察概率之积。然后,我们就可以在其中选择最大的概率了(局部概率)。 2d.反向指针, ’s   考虑下面这个网格       在每一个中间及终止状态我们都知道了局部概率, (i,t) 。然而我们的目标是在给定一个观察序列的情况下寻找网格中最可能的隐藏状态序列——因此,我们需要一些方法来记住网格中的局部最佳路径。   回顾一下我们是如何计算局部概率的,计算t时刻的 ’s 我们仅仅需要知道t-1时刻的 ’s 。在这个局部概率计算之后,就有可能记录前一时刻哪个状态生成了 (i,t)—— 也就是说,在t-1时刻系统必须处于某个状态,该状态导致了系统在t时刻到达状态i是最优的。这种记录(记忆)是通过对每一个状态赋予一个反向指针 完成的,这个指针指向最优的引发当前状态的前一时刻的某个状态。   形式上,我们可以写成如下的公式        其中argmax运算符是用来计算使括号中表达式的值最大的索引j的。   请注意这个表达式是通过前一个时间步骤的局部概率 ’s 和转移概率计算的,并不包括观察概率(与计算局部概率 ’s 本身不同)。这是因为我们希望这些 ’s 能回答这个问题“如果我在这里,最可能通过哪条路径到达下一个状态?”——这个问题与隐藏状态有关,因此与观察概率有关的混淆(矩阵)因子是可以被忽略的。 2e.维特比算法的优点   使用Viterbi算法对观察序列进行解码有两个重要的优点:   1. 通过使用递归减少计算复杂度——这一点和前向算法使用递归减少计算复杂度是完全类似的。   2.维特比算法有一个非常有用的性质,就是对于观察序列的整个上下文进行了最好的解释(考虑)。事实上,寻找最可能的隐藏状态序列不止这一种方法,其他替代方法也可以,譬如,可以这样确定如下的隐藏状态序列:      其中        这里,采用了“自左向右”的决策方式进行一种近似的判断,其对于每个隐藏状态的判断是建立在前一个步骤的判断的基础之上(而第一步从隐藏状态的初始向量 开始)。   这种做法,如果在整个观察序列的中部发生“噪音干扰”时,其最终的结果将与正确的答案严重偏离。   相反, 维特比算法在确定最可能的终止状态前将考虑整个观察序列,然后通过 指针“回溯”以确定某个隐藏状态是否是最可能的隐藏状态序列中的一员。这是非常有用的,因为这样就可以孤立序列中的“噪音”,而这些“噪音”在实时数据中是很常见的。 3.小结   维特比算法提供了一种有效的计算方法来分析隐马尔科夫模型的观察序列,并捕获最可能的隐藏状态序列。它利用递归减少计算量,并使用整个序列的上下文来做判断,从而对包含“噪音”的序列也能进行良好的分析。   在使用时,维特比算法对于网格中的每一个单元(cell)都计算一个局部概率,同时包括一个反向指针用来指示最可能的到达该单元的路径。当完成整个计算过程后,首先在终止时刻找到最可能的状态,然后通过反向指针回溯到t=1时刻,这样回溯路径上的状态序列就是最可能的隐藏状态序列了。 1、维特比算法的形式化定义   维特比算法可以形式化的概括为:   对于每一个i,i = 1,… ,n,令:         ——这一步是通过隐藏状态的初始概率和相应的观察概率之积计算了t=1时刻的局部概率。   对于t=2,…,T和i=1,…,n,令:         ——这样就确定了到达下一个状态的最可能路径,并对如何到达下一个状态做了记录。具体来说首先通过考察所有的转移概率与上一步获得的最大的局部概率之积,然后记录下其中最大的一个,同时也包含了上一步触发此概率的状态。   令:         ——这样就确定了系统完成时(t=T)最可能的隐藏状态。   对于t=T-1,…, 1   令:         ——这样就可以按最可能的状态路径在整个网格回溯。回溯完成时,对于观察序列来说,序列i1 … iT就是生成此观察序列的最可能的隐藏状态序列。   2.计算单独的 ’s 和 ’s   维特比算法中的局部概率 ’s 的计算与前向算法中的局部概率 ’s 的很相似。下面这幅图表显示了 ’s 和 ’s 的计算细节,可以对比一下 前向算法3 中的计算局部概率 ’s 的那幅图表:      唯一不同的是前向算法中计算局部概率 ’s 时的求和符号( )在维特比算法中计算局部概率 ’s 时被替换为 max ——这一个重要的不同也说明了在维特比算法中我们选择的是到达当前状态的最可能路径,而不是总的概率。我们在维特比算法中维护了一个“反向指针”记录了到达当前状态的最佳路径,即在计算 ’s 时通过 argmax 运算符获得。 总结(Summary)   对于一个特定的隐马尔科夫模型,维特比算法被用来寻找生成一个观察序列的最可能的隐藏状态序列。我们利用概率的时间不变性,通过避免计算网格中每一条路径的概率来降低问题的复杂度。维特比算法对于每一个状态(t1)都保存了一个反向指针 ( ) ,并在每一个状态中存储了一个局部概率 ( ) 。   局部概率 是由反向指针指示的路径到达某个状态的概率。   当t=T时,维特比算法所到达的这些终止状态的局部概率 ’s 是按照最优(最可能)的路径到达该状态的概率。因此,选择其中最大的一个,并回溯找出所隐藏的状态路径,就是这个问题的最好答案。   关于维特比算法,需要着重强调的一点是它不是简单的对于某个给定的时间点选择最可能的隐藏状态,而是基于全局序列做决策——因此,如果在观察序列中有一个“非寻常”的事件发生,对于维特比算法的结果也影响不大。   这在语音处理中是特别有价值的,譬如当某个单词发音的一个中间音素出现失真或丢失的情况时,该单词也可以被识别出来。   仍然需要说明的是,本节不是这个系列的翻译,而是作为维特比算法这一章的补充,将UMDHMM这个C语言版本的HMM工具包中的维特比算法程序展示给大家,并运行包中所附带的例子。关于UMDHMM这个工具包的介绍,大家可以参考 前向算法4 中的介绍。 维特比算法程序示例如下(在viterbi.c中): void Viterbi(HMM *phmm, int T, int *O, double **delta, int **psi,int *q, double *pprob) {    int i, j; /* state indices */   int t; /* time index */    int maxvalind;   double maxval, val;   /* 1. Initialization */    for (i = 1; i = phmm-N; i++)    {      delta = phmm-pi * (phmm-B ]);      psi = 0;   }    /* 2. Recursion */    for (t = 2; t = T; t++)    {      for (j = 1; j = phmm-N; j++)      {        maxval = 0.0;        maxvalind = 1;        for (i = 1; i = phmm-N; i++)        {          val = delta *(phmm-A );          if (val maxval)          {            maxval = val;            maxvalind = i;          }       }        delta = maxval*(phmm-B ]);       psi = maxvalind;      }   }   /* 3. Termination */    *pprob = 0.0;    q = 1;    for (i = 1; i = phmm-N; i++)    {      if (delta *pprob)      {        *pprob = delta ;        q = i;      }   }   /* 4. Path (state sequence) backtracking */    for (t = T – 1; t = 1; t–)     q = psi ]; }   在UMDHMM包中所生成的4个可执行程序中,testvit是用来测试维特比算法的, 对于给定的观察符号序列及HMM,利用Viterbi 算法生成最可能的隐藏状态序列。这里我们利用UMDHMM包中test.hmm和test.seq来测试维特比算法,关于这两个文件,具体如下:    test.hmm : ——————————————————————–      M= 2      N= 3      A:      0.333 0.333 0.333      0.333 0.333 0.333      0.333 0.333 0.333      B:      0.5 0.5      0.75 0.25      0.25 0.75      pi:      0.333 0.333 0.333 ——————————————————————–    test.seq : ——————————————————————–      T= 10      1 1 1 1 2 1 2 2 2 2 ——————————————————————–   对于维特比算法的测试程序testvit来说,运行:     testvit test.hmm test.seq   结果如下:    ————————————    Viterbi using direct probabilities    Viterbi MLE log prob = -1.387295E+01    Optimal state sequence:    T= 10    2 2 2 2 3 2 3 3 3 3    ————————————    Viterbi using log probabilities    Viterbi MLE log prob = -1.387295E+01    Optimal state sequence:    T= 10    2 2 2 2 3 2 3 3 3 3    ————————————    The two log probabilites and optimal state sequences   should identical (within numerical precision).   序列“2 2 2 2 3 2 3 3 3 3”就是最终所找到的隐藏状态序列。好了,维特比算法这一章就到此为止了。 HMM学习最佳范例七:前向-后向算法1 分类 隐马尔科夫模型 七、前向-后向算法(Forward-backward algorithm) 根据观察序列生成隐马尔科夫模型(Generating a HMM from a sequence of obersvations)   与HMM模型相关的“有用”的问题是评估(前向算法)和解码(维特比算法)——它们一个被用来测量一个模型的相对适用性,另一个被用来推测模型隐藏的部分在做什么(“到底发生了”什么)。可以看出它们都依赖于隐马尔科夫模型(HMM)参数这一先验知识——状态转移矩阵,混淆(观察)矩阵,以及 向量(初始化概率向量)。   然而,在许多实际问题的情况下这些参数都不能直接计算的,而要需要进行估计——这就是隐马尔科夫模型中的学习问题。前向-后向算法就可以以一个观察序列为基础来进行这样的估计,而这个观察序列来自于一个给定的集合,它所代表的是一个隐马尔科夫模型中的一个已知的隐藏集合。   一个例子可能是一个庞大的语音处理 数据库 ,其底层的语音可能由一个马尔可夫过程基于已知的音素建模的,而其可以观察的部分可能由可识别的状态(可能通过一些矢量数据表示)建模的,但是没有(直接)的方式来获取隐马尔科夫模型(HMM)参数。   前向-后向算法并非特别难以理解,但自然地比前向算法和维特比算法更复杂。由于这个原因,这里就不详细讲解前向-后向算法了(任何有关HMM模型的参考文献都会提供这方面的资料的)。   总之,前向-后向算法首先对于隐马尔科夫模型的参数进行一个初始的估计(这很可能是完全错误的),然后通过对于给定的数据评估这些参数的的价值并减少它们所引起的错误来重新修订这些HMM参数。从这个意义上讲,它是以一种梯度下降的形式寻找一种错误测度的最小值。   之所以称其为前向-后向算法,主要是因为对于网格中的每一个状态,它既计算到达此状态的“前向”概率(给定当前模型的近似估计),又计算生成此模型最终状态的“后向”概率(给定当前模型的近似估计)。 这些都可以通过利用递归进行有利地计算,就像我们已经看到的。可以通过利用近似的HMM模型参数来提高这些中间概率进行调整,而这些调整又形成了前向-后向算法迭代的基础。 注:关于前向-后向算法,原文只讲了这么多,后继我将按自己的理解补充一些内容。   要理解前向-后向算法,首先需要了解两个算法:后向算法和EM算法。后向算法是必须的,因为前向-后向算法就是利用了前向算法与后向算法中的变量因子,其得名也因于此;而EM算法不是必须的,不过由于前向-后向算法是EM算法的一个特例,因此了解一下EM算法也是有好处的,说实话,对于EM算法,我也是云里雾里的。好了,废话少说,我们先谈谈后向算法。 1、后向算法(Backward algorithm)   其实如果理解了前向算法,后向算法也是比较好理解的,这里首先重新定义一下前向算法中的局部概率at(i),称其为前向变量,这也是为前向-后向算法做点准备:       相似地,我们也可以定义一个后向变量Bt(i)(同样可以理解为一个局部概率):       后向变量(局部概率)表示的是已知隐马尔科夫模型 及t时刻位于隐藏状态Si这一事实,从t+1时刻到终止时刻的局部观察序列的概率。同样与前向算法相似,我们可以从后向前(故称之为后向算法)递归地计算后向变量:   1)初始化,令t=T时刻所有状态的后向变量为1:         2)归纳,递归计算每个时间点,t=T-1,T-2,…,1时的后向变量:      这样就可以计算每个时间点上所有的隐藏状态所对应的后向变量,如果需要利用后向算法计算观察序列的概率,只需将t=1时刻的后向变量(局部概率)相加即可。下图显示的是t+1时刻与t时刻的后向变量之间的关系:       上述主要参考自HMM经典论文《A tutorial on Hidden Markov Models and selected applications in speech recognition》。下面我们给出利用后向算法计算观察序列概率的程序示例,这个程序仍然来自于 UMDHMM 。 后向算法程序示例如下(在backward.c中): void Backward(HMM *phmm, int T, int *O, double **beta, double *pprob) {   int i, j; /* state indices */   int t; /* time index */   double sum;    /* 1. Initialization */    for (i = 1; i = phmm-N; i++)     beta = 1.0;    /* 2. Induction */    for (t = T - 1; t = 1; t--)    {      for (i = 1; i = phmm-N; i++)      {        sum = 0.0;        for (j = 1; j = phmm-N; j++)          sum += phmm-A *                (phmm-B ])*beta ;        beta = sum;      }   }    /* 3. Termination */    *pprob = 0.0;    for (i = 1; i = phmm-N; i++)      *pprob += beta ; }   好了,后向算法就到此为止了,下一节我们粗略的谈谈EM算法。 前向-后向算法是Baum于1972年提出来的,又称之为Baum-Welch算法,虽然它是EM(Expectation-Maximization)算法的一个特例,但EM算法却是于1977年提出的。那么为什么说前向-后向算法是EM算法的一个特例呢?这里有两点需要说明一下。   第一,1977年A. P. Dempster、N. M. Laird、 D. B. Rubin在其论文“Maximum Likelihood from Incomplete Data via the EM Algorithm”中首次提出了EM算法的概念,但是他们也在论文的介绍中提到了在此之前就有一些学者利用了EM算法的思想解决了一些特殊问题,其中就包括了Baum在70年代初期的相关工作,只是这类方法没有被总结而已,他们的工作就是对这类解决问题的方法在更高的层次上定义了一个完整的EM算法框架。   第二,对于前向-后向算法与EM算法的关系,此后在许多与HMM或EM相关的论文里都被提及,其中贾里尼克(Jelinek)老先生在1997所著的书“Statistical Methods for Speech Recognition”中对于前向-后向算法与EM算法的关系进行了完整的描述,读者有兴趣的话可以找来这本书读读。   关于EM算法的讲解,网上有很多,这里我就不献丑了,直接拿目前搜索“EM算法”在Google排名第一的文章做了参考,希望读者不要拍砖:   EM 算法是 Dempster,Laind,Rubin 于 1977 年提出的求参数极大似然估计的一种方法,它可以从非完整数据集中对参数进行 MLE 估计,是一种非常简单实用的学习算法。这种方法可以广泛地应用于处理缺损数据,截尾数据,带有讨厌数据等所谓的不完全数据(incomplete data)。   假定集合Z = (X,Y)由观测数据 X 和未观测数据Y 组成,Z = (X,Y)和 X 分别称为完整数据和不完整数据。假设Z的联合概率密度被参数化地定义为P(X,Y|Θ),其中Θ 表示要被估计的参数。Θ 的最大似然估计是求不完整数据的对数似然函数L(X;Θ)的最大值而得到的:    L(Θ; X )= log p(X |Θ) = ∫log p(X ,Y |Θ)dY ; (1)   EM算法包括两个步骤:由E步和M步组成,它是通过迭代地最大化完整数据的对数似然函数Lc( X;Θ )的期望来最大化不完整数据的对数似然函数,其中:    Lc(X;Θ) =log p(X,Y |Θ) ; (2)   假设在算法第t次迭代后Θ 获得的估计记为Θ(t ) ,则在(t+1)次迭代时,   E-步:计算完整数据的对数似然函数的期望,记为:    Q(Θ |Θ (t) ) = E{Lc(Θ;Z)|X;Θ(t) }; (3)   M-步:通过最大化Q(Θ |Θ(t) ) 来获得新的Θ 。   通过交替使用这两个步骤,EM算法逐步改进模型的参数,使参数和训练样本的似然概率逐渐增大,最后终止于一个极大点。    直观地理解EM算法,它也可被看作为一个逐次逼近算法:事先并不知道模型的参数,可以随机的选择一套参数或者事先粗略地给定某个初始参数λ0 ,确定出对应于这组参数的最可能的状态,计算每个训练样本的可能结果的概率,在当前的状态下再由样本对参数修正,重新估计参数λ ,并在新的参数下重新确定模型的状态,这样,通过多次的迭代,循环直至某个收敛条件满足为止,就可以使得模型的参数逐渐逼近真实参数。   EM算法的主要目的是提供一个简单的迭代算法计算后验密度函数,它的最大优点是简单和稳定,但容易陷入局部最优。   参考原文见: http://49805085.spaces.live.com/Blog/cns!145C40DDDB4C6E5!670.entry   注意上面那段粗体字,读者如果觉得EM算法不好理解的话,就记住这段粗体字的意思吧!   有了 后向算法 和EM算法的预备知识,下一节我们就正式的谈一谈前向-后向算法。  隐马尔科夫模型( HMM )的三个基本问题中,第三个 HMM 参数学习的问题是最难的,因为对于给定的观察序列 O ,没有任何一种方法可以精确地找到一组最优的隐马尔科夫模型参数( A 、 B 、)使 P(O| ) 最大。因而,学者们退而求其次,不能使 P(O| ) 全局最优,就寻求使其局部最优(最大化)的解决方法,而前向 - 后向算法(又称之为 Baum-Welch 算法)就成了隐马尔科夫模型学习问题的一种替代(近似)解决方法。   我们首先定义两个变量。 给定观察序列O及隐马尔科夫模型 ,定义 t 时刻位于隐藏状态 Si 的概率变量为:            回顾一下 第二节 中关于前向变量 at(i) 及后向变量 Bt(i) 的定义,我们可以很容易地将上式用前向、后向变量表示为:       其中分母的作用是确保:    给定观察序列O及隐马尔科夫模型 ,定义 t 时刻位于隐藏状态 Si 及 t+1 时刻位于隐藏状态 Sj 的概率变量为:        该变量在网格中所代表的关系如下图所示:     同样,该变量也可以由前向、后向变量表示:       而上述定义的两个变量间也存在着如下关系:                如果对于时间轴 t 上的所有相加,我们可以得到一个总和,它可以被解释为从其他隐藏状态访问 Si 的期望值(网格中的所有时间的期望),或者,如果我们求和时不包括时间轴上的 t=T 时刻,那么它可以被解释为从隐藏状态 Si 出发的状态转移期望值。相似地,如果对在时间轴 t 上求和(从 t=1 到 t=T-1 ),那么该和可以被解释为从状态 Si 到状态 Sj 的状态转移期望值。即:           上一节我们定义了两个变量及相应的期望值,本节我们利用这两个变量及其期望值来重新估计隐马尔科夫模型(HMM)的参数 ,A及B:   如果我们定义当前的HMM模型为 ,那么可以利用该模型计算上面三个式子的右端;我们再定义重新估计的HMM模型为 ,那么上面三个式子的左端就是重估的HMM模型参数。Baum及他的同事在70年代证明了 因此如果我们迭代地的计算上面三个式子,由此不断地重新估计HMM的参数,那么在多次迭代后可以得到的HMM模型的一个最大似然估计。不过需要注意的是,前向-后向算法所得的这个结果(最大似然估计)是一个局部最优解。   关于前向-后向算法和EM算法的具体关系的解释,大家可以参考HMM经典论文《A tutorial on Hidden Markov Models and selected applications in speech recognition》,这里就不详述了。下面我们给出 UMDHMM 中的前向-后向算法示例,这个算法比较复杂,这里只取主函数,其中所引用的函数大家如果感兴趣的话可以自行参考UMDHMM。 前向-后向算法程序示例如下(在baum.c中): void BaumWelch(HMM *phmm, int T, int *O, double **alpha, double **beta, double **gamma, int *pniter, double *plogprobinit, double *plogprobfinal) {   int i, j, k;   int t, l = 0;    double logprobf, logprobb, threshold;    double numeratorA, denominatorA;   double numeratorB, denominatorB;    double ***xi, *scale;   double delta, deltaprev, logprobprev;   deltaprev = 10e-70;    xi = AllocXi(T, phmm-N);   scale = dvector(1, T);    ForwardWithScale(phmm, T, O, alpha, scale, logprobf);    *plogprobinit = logprobf; /* log P(O |intial model) */    BackwardWithScale(phmm, T, O, beta, scale, logprobb);    ComputeGamma(phmm, T, alpha, beta, gamma);    ComputeXi(phmm, T, O, alpha, beta, xi);   logprobprev = logprobf;    do   {      /* reestimate frequency of state i in time t=1 */      for (i = 1; i = phmm-N; i++)       phmm-pi = .001 + .999*gamma ;      /* reestimate transition matrix and symbol prob in          each state */      for (i = 1; i = phmm-N; i++)      {        denominatorA = 0.0;        for (t = 1; t = T - 1; t++)         denominatorA += gamma ;        for (j = 1; j = phmm-N; j++)        {          numeratorA = 0.0;          for (t = 1; t = T - 1; t++)            numeratorA += xi ;          phmm-A = .001 +                   .999*numeratorA/denominatorA;       }        denominatorB = denominatorA + gamma ;        for (k = 1; k = phmm-M; k++)        {          numeratorB = 0.0;          for (t = 1; t = T; t++)          {            if (O == k)              numeratorB += gamma ;         }          phmm-B = .001 +                   .999*numeratorB/denominatorB;        }     }      ForwardWithScale(phmm, T, O, alpha, scale, logprobf);      BackwardWithScale(phmm, T, O, beta, scale, logprobb);      ComputeGamma(phmm, T, alpha, beta, gamma);     ComputeXi(phmm, T, O, alpha, beta, xi);      /* compute difference between log probability of        two iterations */      delta = logprobf - logprobprev;      logprobprev = logprobf;     l++;    }    while (delta DELTA); /* if log probability does not               change much, exit */    *pniter = l;    *plogprobfinal = logprobf; /* log P(O|estimated model) */    FreeXi(xi, T, phmm-N);    free_dvector(scale, 1, T); }      前向-后向算法就到此为止了。 八、总结(Summary)   通常,模式并不是单独的出现,而是作为时间序列中的一个部分——这个过程有时候可以被辅助用来对它们进行识别。在基于时间的进程中,通常都会使用一些假设——一个最常用的假设是进程的状态只依赖于前面N个状态——这样我们就有了一个N阶马尔科夫模型。最简单的例子是N = 1。   存在很多例子,在这些例子中进程的状态(模式)是不能够被直接观察的,但是可以非直接地,或者概率地被观察为模式的另外一种集合——这样我们就可以定义一类隐马尔科夫模型——这些模型已被证明在当前许多研究领域,尤其是语音识别领域具有非常大的价值。   在实际的过程中这些模型提出了三个问题都可以得到立即有效的解决,分别是:   * 评估:对于一个给定的隐马尔科夫模型其生成一个给定的观察序列的概率是多少。前向算法可以有效的解决此问题。   * 解码:什么样的隐藏(底层)状态序列最有可能生成一个给定的观察序列。维特比算法可以有效的解决此问题。   * 学习:对于一个给定的观察序列样本,什么样的模型最可能生成该序列——也就是说,该模型的参数是什么。这个问题可以通过使用前向-后向算法解决。   隐马尔科夫模型(HMM)在分析实际系统中已被证明有很大的价值;它们通常的缺点是过于简化的假设,这与马尔可夫假设相关——即一个状态只依赖于前一个状态,并且这种依赖关系是独立于时间之外的(与时间无关)。   关于隐马尔科夫模型的完整论述,可参阅:    L R Rabiner and B H Juang, `An introduction to HMMs’, iEEE ASSP Magazine, 3, 4-16.    全文完!   后记:这个翻译系列终于可以告一段落了,从6月2日起至今,历史四个多月,期间断断续续翻译并夹杂些自己个人的理解,希望这个系列对于HMM的学习者能有些用处,我个人也就很满足了。接下来,我会结合HMM在自然语言处理中的一些典型应用,譬如词性标注、中文分词等,从实践的角度讲讲自己的理解,欢迎大家继续关注52nlp。
个人分类: 数据挖掘|2695 次阅读|0 个评论
基于机器学习的专利文本分类算法研究综述
terahertz 2016-9-5 16:48
(本文发表于《图书情报研究》2016年第3期P79-86) 摘要: 总结国内外专利文本分类情况,简要叙述基于机器学习的专利文本分类的一般框架,介绍专利文本分类的文本预处理、特征提取、文本表示、构建分类器及效果评价等过程。将应用于专利文本分类的机器学习算法分为单一分类算法和组合分类算法着重探讨:单一分类算法主要有 NB 算法、 ANN 算法、 Rocchio 算法、 KNN 算法、 SVM 算法等; 组合分类算法主要有两种组合算法,如 NB-KNN 算法、 Rocchio-KNN 算法、 KNN-SVM 算法, SVM- 其它算法,还有多种组合算法。指出 各种机器学习算法应用在专利文本分类上的优势与不足,从专利文本预处理、特征提取、专利文本表示、分类器的构建、新方法的探索等五个方面对专利文本自动分类技术进行展望。 关键词: 专利文本;自动分类;机器学习;朴素贝叶斯;支持向量机
个人分类: 发表论文|4574 次阅读|0 个评论
交叉学科生物信息学的三类研究
热度 3 jgu 2016-9-5 09:01
搞交叉学科研究不易,常在传统学科中间受夹板气。一个“学科”界定清楚自己的内涵和外延是非常重要的,今天秋高气爽,步行到地铁站上班的途中,对生物信息学的研究有一点想法,先记下来,日后再加以完善。 第零类 (新增):基础的数据处理方法与理论。这其实是生物信息学最早的定义之一。如经典的序列比对算法,Smith-Waterman算法,BLAST、ClustalX、BLAT等老的序列分析软件,dChip、RMA、SAM等芯片分析工具,以及新的Bowtie、BWA、DESeq、DEGSeq、EdgeR等新一代测序数据的分析工具。要做到计算性能高、数学模型清楚、结果稳定可靠、易于使用、可视化好。 第二类 :为了解决生物医学问题而提出的新方法(计算或计算实验相结合)。必须与解决同一问题的其他方法进行详细比较,比较结果的异同、计算性能的差异,特别是要思考对解决该问题有什么新的进展、对该问题提供了什么新的认识。明确新方法的适用范围,优势、劣势及其产生的原因。对解决该问题的新进展要明确、可验证。 第一类 :借鉴生命系统的基本原理,或者基于第二类方法的泛化推广,发展出新的方法及其理论。比较典型的案例如神经网络、遗传算法等。这类方法必须有一定的普适性,可用于解决多种应用场景下的问题。生命系统可供借鉴的基本原理还有很多,新的生物医学数据对新的计算模型需求也很大,可以期待新的计算方法和理论从这个领域诞生。 第三类 :为了取得生物医学发现的。这类研究必须问题明确,尽可能采用业内认可、或经过反复检验的方法。结果要简要、直接。要想办法对结果进行实验验证,最好的方式是跟生物医学专家合作。 目前,我们课题组比较关注于癌症分子分型(classification)与风险分层(stratification)、癌症子类型的关键调控网络与干预靶点的研究。希望能以第二类研究立足,与生物医学家合作开展第三类研究,尝试着做到第一类研究。
个人分类: 科研笔记|5467 次阅读|3 个评论
[转载]Google研究总监Peter Norvig:人工智能的另一面
Kara0807 2016-8-19 07:50
Google研究总监Peter Norvig:人工智能的另一面 Peter Norvig 是誉满全球的人工智能专家, Google 研究总监( Director of Research ),他同时也是经典书籍《人工智能编程范式: Common Lisp 案例研究》( Paradigms of AI Programming: Case Studies inCommon Lisp )和《人工智能:一种现代方法》( Artificial Intelligence: A Modern Approach )的作者 / 合著者。在本文中,我们将看到 Peter Norvig 对人工智能目前进展和未来发展的思考,对人工智能技术在 Google 应用的解读,以及对最新软件工程师在人工智能时代的成长的观点。 Peter Norvig 眼中的人工智能 问:人工智能领域在哪些方面发生了您未曾预料的演变? Peter Norvig : 在 1980 年我开始从事人工智能研究时人工智能意味着:一位研究生用说明性语言写下事实,然后拨弄这些事实和推理机制,直到从精心挑选的样本上得到不错的结果,然后写一篇关于它的论文。 虽然我接受并遵循这种工作模式,在我获得博士学位的过程中,我发现了这种方法的三个问题: 写下事实太慢了。 我们没有处理异常情况或模糊状态的良好方法。 这个过程不科学 —— 即使在选定的样本上它能工作,但是在其他样本上工作效果会如何呢? 整个领域的演变回答了这三个问题: 我们依靠机器学习,而不是研究生付出的辛苦努力。 我们使用概率推理,而不是布尔逻辑。 我们希望使用科学严格的方式;我们有训练数据和测试数据的概念,而且我们也有比较不同系统处理标准问题所得到的结果。 1950 年,阿兰图灵写道: “ 我们只能看到未来很短的一段距离,但是我们很清楚还有什么需要完成。 ” 自从 1950 年,我们已经得到许多发展并实现了许多目标,但图灵的话仍然成立。 问:对于机器学习研究,工业界与学术界有何不同呢? Peter Norvig : 我认为,在教育机构、商业机构还是政府机构并不是很重要 —— 我曾经在这三种机构都学到很多东西。 我建议你在有着一群出色同事和有趣问题的环境下工作。可以是工业界、学术界、政府或者非营利企业,甚至开源社区。在这些领域里,工业界往往有更多的资源(人、计算能力和数据),但如今有很多公开可用的数据供你使用,一个小团队,一台笔记本电脑,或者一个小而廉价的 GPU 集群,或者在云计算服务上租赁或捐献时间。 问:您对深度学习有什么看法? Peter Norvig : 我清楚地记得 80 年代初的那一天, Geoff Hinton 来到伯克利进行了关于玻尔兹曼机的讲座。对我来说,这是个了不起的视角 —— 他不赞同符号主义人工智能很强大很有用,而我了解到了一种机制,有三件令人兴奋的新(对我而言)事情:根据大脑模型得出的认知合理性;从经验而不是手工编码中学习的模型;还有表示是连续的,而不是布尔值,因此可以避免传统符号专家系统的一些脆弱问题。 事实证明,玻尔兹曼机在那个时代并没有广泛普及,相反, Hinton 、 LeCun 、 Bengio 、 Olshausen 、 Osindero 、 Sutskever 、 Courville 、 Ng 以及其他人设计的架构得到很好的普及。是什么造成了这种不同呢?是一次一层的训练技术吗?是 ReLU 激活函数?是需要更多的数据?还是使用 GPU 集群可以更快地训练?我不敢肯定,我希望持续的分析可以给我们带来更好的了解。但我可以说,在语音识别、计算机视觉识别物体、围棋和其他领域,这一差距是巨大的:使用深度学习可以降低错误率,这两个领域在过去几年都发生了彻底变化:基本上所有的团队都选择了深度学习,因为它管用。 许多问题依然存在。在计算机视觉里,我们好奇深度网络实际上在做什么:我们可以在一个级别上确定线条识别器,在更高层次确定眼睛和鼻子识别器,然后就是脸部识别器,最终就是整个人的识别器。但在其他领域,一直很难了解网络在做什么。是因为我们没有正确的分析和可视化工具吗?还是因为实际上表示不一致? 在有许多数据的时候,深度学习在各种应用中表现不错,但对于一次性或零次学习,需要将一个领域的知识转移并适应到当前领域又如何呢?深度网络形成了什么样的抽象,我们可以如何解释这些抽象并结合它们?网络会被对抗性输入愚弄;我们如何预防这些,它们代表了根本缺陷还是不相干的把戏? 我们如何处理一个领域中的结构?我们有循环网络( Recurrent Networks )来处理时间,递归网络( Recrsive Networks )来处理嵌套结构,但这些是否已经足够,现在讨论还为时过早。 我对深度学习感到兴奋,因为很多长期存在的领域也是如此。而且我有兴趣了解更多,因为还有许多剩余问题,而且这些问题的答案不仅会告诉我们更多关于深度学习的东西,还可以帮助我们大体理解学习、推理和表示。 问:在深度学习最近取得的成就之后,符号主义人工智能是否还有意义? Peter Norvig : 是的。我们围绕着符号主义人工智能开发了许多强大的原理:逻辑预测、约束满足问题、规划问题、自然语言处理,乃至概率预测。因为这些算法的出色表现,我们处理问题的能力比原来提升了几个数量级。放弃这一切是件可耻的事。我认为其中一个有意识的研究方向是回过头看每一种方法,探索非原子式符号被原子式符号取代的这个过程究竟发生了什么,诸如 Word2Vec 产生的 Word Embedding 之类的原理。 下面是一些例子。假设你有这些逻辑 “ 事实 ” : 1. 人会说话; 2. 除人以外的动物不会说话; 3. 卡通人物角色会说话; 4. 鱼会游泳; 5. 鱼是除人以外的动物; 6. Nemo 是一个卡通人物; 7. Nemo 是一条鱼; 8. 那么我们要问了: 9. Nemo 会说话吗? 10. Nemo 会游泳吗? 用逻辑来表述和解释这个场景的时候遇到了两个大问题。首先,这些事实都有例外,但是用逻辑很难穷举这些例外情况,而且当你逻辑出错的时候预测就会出问题了。其次,在相互矛盾的情况下则逻辑无能为力,就像这里的 Nemo 既会说话又不会说话。也许我们可以用 Word Embedding 技术来解决这些问题。我们还需要 Modus Ponens Embedding (分离规则,一种数学演绎推理规则)吗?不学习 “ 如果 A 且 A 暗示 B ,则 B” 这样一种抽象的规则,我们是否可以学习何时应用这种规则是恰当的?我觉得这是一个重要的研究领域。 再说一点:许多所谓的符号主意人工智能技术实际上还是优秀的计算机科学算法。举个例子,搜索算法,无论 A* 或是蚁群优化,或是其它任何东西,都是一种关键的算法,永远都会非常有用。即使是基于深度学习的 AlphaGo ,也包含了搜索模块。 问:我们哪儿做错了?为什么 Common Lisp 不能治愈世界? Peter Norvig : 我认为 Common Lisp 的思想确实能治愈这个世界。如果你回到 1981 年, Lisp 被视作是另类,因为它所具有的下面这些特性还不被 C 语言程序员所知: 1. 垃圾回收机制; 2. 丰富的容器类型及相应的操作; 3. 强大的对象系统,伴随着各种继承和原生函数; 4. 定义测试例子的亚语言( sublanguage )(并不属于官方版本的一部分,但我自己配置了一套); 5. 有交互式的读入 - 运算 - 打印循环; 6. 敏捷的、增量式的开发模式,而不是一步到位的模式; 7. 运行时对象和函数的自省; 8. 能自定义领域特定语言的宏。 如今,除了宏之外的所有这些特性都在主流编程语言里非常常见。所以说它的思想取胜了,而 Common Lisp 的实现却没有 —— 也许是因为 CL 还遗留了不少 1958 年编程语言的陋习;也许只是因为一些人不喜欢用大括号。 至于说宏,我也希望它能流行起来,但当用到宏的时候,你成为了一名语言设计者,而许多开发团队喜欢保持底层语言的稳定性,尤其是那些大团队。我想最好有一套使用宏的实用指南,而不是把它们全部抛弃(或是在 C 语言里严格限制的宏)。 问:在未来 10 年里,有没有哪些情况下软件工程师不需要学习人工智能或机器学习的,还是每个人都需要学习? Peter Norvig : 机器学习将会是(或许已经是)软件工程的一个重要部分,每个人都必须知道它的运用场景。但就像数据库管理员或用户界面设计一样,并不意味着每个工程师都必须成为机器学习专家 —— 和这个领域的专家共事也是可以的。但是你知道的机器学习知识越多,在构建解决方案方面的能力就越好。 我也认为机器学习专家和软件工程师聚在一起进行机器学习系统软件开发最佳实践将会很重要。目前我们有一套软件测试体制,你可以定义单元测试并在其中调用方法,比如 assertTrue 或者 assertEquals 。我们还需要新的测试过程,包括运行试验、分析结果、对比今天和历史结果来查看偏移、决定这种偏移是随机变化还是数据不平稳等。这是一个伟大的领域,软件工程师和机器学习人员一同协作,创建新的、更好的东西。 问:我想从软件工程师转行成为人工智能研究员,应该如何训练自己呢? Peter Norvig : 我认为这不是转行,而是一种技能上的提升。人工智能的关键点在于搭建系统,这正是你手头上的工作。所以你在处理系统复杂性和选择合适的抽象关系方面都有经验,参与过完整的设计、开发和测试流程;这些对于 AI 研究员和软件工程师来说都是基本要求。有句老话这样说,当一项人工智能技术成功之后,它就不再属于人工智能,而是成为了软件工程的一部分。人工智能工作者抱怨上述观点的意思就是他们的工作永远离成功有一步之遥,但你可以认为这表明你只是需要在已知的基础上再添加一些新概念和新技术。 人工智能在 Google 问: Google“ 没有更好的算法,只是多了点数据而已 ” 这种说法是真的吗? Peter Norvig : 我曾引用微软研究院 Michele Banko 和 Eric Brill 发表的一篇关于分析词性辨析算法的论文,他们发现增加训练数据得到的效果提升比更换算法更明显。我说过有些问题确实如此,而另一些问题则不见得。你可以认为这篇论文是 “ 大数据 ” 的功劳,但要注意,在这个领域十亿个单词规模的训练数据集就能看出效果 —— 在笔记本电脑的处理范围内 —— 还不到数据中心的量级。所以,如果你用不了数据中心,不必担心 —— 你拥有的计算资源和数据量几乎完胜任何一个上一代的人,你可以有更多的新发现。 所以没错,大量与任务相契合的高质量数据必然会有帮助。然而真正有挑战的工作在于发明新学习系统的研究和让其真正落实到产品中的工程实现。这个工作正是大多数机器学习成功案例的驱动力。正如 Pat Winston 所说: “ 人工智能就像葡萄干面包里的葡萄干,葡萄干面包的主要成分还是面包,人工智能软件主体也是常规的软件工程和产品开发。 ” 问:成为一家 “AI-first” 公司对 Google 意味着什么? Peter Norvig : “ 传统 ” 的 Google 是一个信息检索公司:你提供一个查询,我们快速返回 10 个相关网页结果,然后你负责找到与查询词相关的返回结果。 “ 现代 ” 的 Google , CEO Sundar Pichai 设定了愿景,它不仅基于相关信息建议,还基于通知和助理。通知,意味着当你需要时,我们提供你需要的信息。例如, Google Now 告诉你该去赴约了,或者你目前在一家杂货店,之前你设定了提醒要买牛奶。助理意味着帮助你实施行动 —— 如规划行程、预定房间。你在互联网上可以做的任何事情, Google 都应该可以帮你实现。 对于信息检索, 80% 以上的召回率和准确率是非常不错的 —— 不需要所有建议都完美,因为用户可以忽略坏的建议。对于助理,门槛就高了许多,你不会使用 20% 甚至 2% 的情形下都预定错房间的服务。所以助理必须更加精准,从而要求更智能、更了解情况。这就是我们所说的 “AI-first” 。 Peter Nervig 在 Google 问:你的职业生涯如何起步? Peter Nervig : 我很幸运地进入了一所既有计算机编程又有语言课程的高中(在马萨诸塞州牛顿县)。这激发了我将两者结合起来学习的兴趣。在高中阶段无法实现这个想法,但是到了大学我主修应用数学专业,得以研究这方面(当时,我们学校并没有真正的计算机专业。我开始是主修数学,但很快发现自己并不擅长数学证明,反而在编程方面如鱼得水)。 大学毕业后,我当了两年的程序员,不过仍旧一直在思考这些想法,最后还是申请了研究生回来继续从事科研(我过了四年才厌倦大学生活,而两年就厌倦了工作状态,所以我觉得我对学校的热爱是对工作的两倍)。研究生阶段为我学术生涯打下了基础,而我却迷上了今天所谓的 “ 大数据 ” (当时还没有这种叫法),我意识到在工业界更容易获得所需要的资源,因此放弃了高校里的职位。我感到幸运的是每个阶段都有优秀的合作伙伴和新的挑战。 问:你在 Google 具体做什么? Peter Norvig : 在 Google 最棒的事情之一就是总有新鲜事;你不会陷入例行公事之中。在快节奏的世界中每周都是如此,当我角色改变之后,每年更是如此。我管理的人员从两人变成了两百人,这意味着我有时候能深入到所参与项目的技术细节中,有时候因为管理的团队太大,只能提一些高层次的笼统看法,并且我相信我的团队正在做的事情是正确的。在那些项目里,我扮演的角色更多的是沟通者和媒介 —— 试图解释公司的发展方向,一个项目具体如何展开,将项目团队介绍给合适的合作伙伴、制造商和消费者,让团队制定出如何实现目标的细节。我在 Google 不写代码,但是如果我有一个想法,我可以使用内部工具写代码进行实验,看看这个想法是否值得尝试。我同样会进行代码审查,这样我就可以了解团队生产的代码,而且这也必须有人去做。 还有很多的会议、邮件、文档要处理。与其他我工作过的公司相比, Google 的官僚主义更少,但有时候是不可避免的。我也会花一些时间参加会议、去大学演讲、与客户交流,以及参与 Quora 问答。 问:在加入 Google 之前,你曾担任美国宇航局( NASA )计算科学部门的主要负责人,在美国宇航局的工作与 Google 的工作有何不同?有哪些文化的差异? Peter Norvig : 美国宇航局与 Google 有很多共同之处:它们都有一群优秀敬业并且充满激情的员工,这些人相信它们的工作使命。而且两者都在推动各自技术的上限。因此,他们在特定项目中的文化往往是相似的。 同时也存在一些差异。美国宇航局的 Gene Kranz 曾说过一句名言: “ 失败不是种选择( Failure is not an option )。 ” 美国宇航局经常会有几亿美元的使命任务,任何一个错误都有可能毁灭一切。因此,需要极其小心。 Google 的项目范围往往更接近 Adam Savage 的想法(与 Jeff Dean 相互呼应) “ 失败自古至今就是一种选择( Failure is always an option ) ” 。 Google 相信,单台计算机可能会发生故障,而设计网络系统可以从故障中恢复。在 Google ,有时我们可以在用户看到错误之前进行恢复纠正,而有时当一个错误曝光后,我们可以在简短的时间内纠正它,同时向受到影响的用户致歉,而这在美国宇航局是很少见的。 一方面是因为失败的预期成本存在差异,另一方面是由于空间硬件的成本巨大(参见我在那做的东西),再者就是政府与私人机构的差异,基于这一优势, Google 更容易启动新项目,并在已有的项目中迅速推动新项目的进展。 问:你是如何权衡新功能的开发与旧功能的维护呢? Peter Norvig : 尽你所能将任务做得最好,并且不断改进,这样就会得到提高。 我曾一次次地发现:团队的新员工说 “ 我们为什么不使用 X ? ” ,一位老员工回答说: “ 我们三年前就试过了 X ,结果证明它并不管用 ” 。此时的难题是:你是否接受那位老前辈的回答?或者说,现在的情况已经改变了,是时候重新审视 X 了?也许我们有新的数据,或者新的技术,又或者新员工将采取不同的方法,或者说世界改变了, X 将会比以往工作得更好。我无法告诉你该问题的答案,你必须权衡所有证据,并与其他类似问题进行比较。 程序员提升之道 问:《人工智能:一种现代方法》还会有新的版本吗? Peter Norvig : 是的,我正在为此努力。但至少还需要一年的时间。 问:我是一名研究生,我的人工智能课程使用《人工智能:一种现代方法》作为参考教材,我如何才能为人工智能编程项目做贡献? Peter Norvig : 现在正是时候:我正在为《人工智能:一种现代方法》这本书的下一个版本的配套代码工作,在 https://github.com/aimacode 上,你可以找到 Java 、 Python 和 JavaScript 子项目,我们一直在寻找好的贡献者。除了提供书中所有算法的代码实现,我们还希望提供 tutorial 材料和练习。此外, GitHub 上也还有其他好的人工智能项目,都希望有铁杆贡献者。 问:有没有像可汗学院( Khan Academy )和 Udacity 一样的在线资源,可以让人们在不到 “ 十年 ” 就精通一门学科呢? Peter Norvig : 精通可能需要十年,或者是 10000 个小时,这种时间会因任务、个体以及训练方法的不同而有所差异。但真正的精通并非易事。可汗学院和 Udacity 主要是提供了技术培训,让你不断努力地学习直到你真正地掌握它。在传统的学校教学当中,如果你在考试中获得的成绩是 “C” ,你就不会再去花更多的时间去学习并掌握它,你会继而专注于下一个学科,因为班集里每个人都是这样做的。在线资源不是万能的,精通它需要加倍努力地学习,而学习需要动力,动力则可以通过人与人之间的联系逐步提升,这在网上是很难学到的。因此,在一个领域,走上正轨,我们需要在社交、动机方面做更多的工作,我们需要对个人需求有针对性地做更多的定制培训,同时我们还需要做更多使实践审慎和有效的工作。我认为,在线资源主要的最终结果不是缩短精通的时长,而是增加更多学生实现精通的机会。 问:如果请你再次教授《计算机程序设计》( Udacity )这门课程,会做哪些改变呢? Peter Norvig : 我认为这门课程很好,反馈(不管是数量还是质量)大多都是好的。就个人而言,我希望有更多的实例程序和技术。我想修正之前我们犯下的一些错误(主要是因为课程进展太快,没有太多的时间去测试所有的东西)。我希望系统能够更加互动:让学生获得更多的反馈信息,不仅仅是 “ 你的程序不正确 ” ,同时可以让学生看到下一件要做的事情,让他们知道到目前为止已经做了什么。我认为对于学生而言,正则表达式和语言这部分进展速度过快了;另外,我还想添加更多的材料,让学生加快学习速度,同时给他们更多的机会去实践新想法。 备注:本文经CSDN授权转载,特此说明。
1685 次阅读|0 个评论
【主流的傲慢与偏见:规则系统与机器学习】
热度 6 liwei999 2016-8-4 02:58
I. 引言 有回顾NLP(Natural Language Processing)历史的知名学者介绍机器学习(machine learning)取代传统规则系统(rule-based system)成为学界主流的掌故,说20多年前好像经历了一场惊心动魄的宗教战争。必须承认,NLP 这个领域,统计学家的完胜,是有其历史必然性的。机器学习在NLP很多任务上的巨大成果和效益是有目共睹的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,词典习得,专名标注,词性标注等(Church 2007)。 然而,近来浏览几篇 NLP 领域代表人物的综述,见其中不乏主流的傲慢与偏见,依然令人惊诧。细想之下,统计学界的确有很多对传统规则系统根深蒂固的成见和经不起推敲但非常流行的蛮横结论。可怕的不是成见,成见无处不在。真正可怕的是成见的流行无阻。而在NLP这个领域,成见的流行到了让人瞠目结舌的程度。不假思索而认同接受这些成见成为常态。因此想到立此存照一下,并就核心的几条予以详论。下列成见随处可见,流传甚广,为免纷扰,就不列出处了,明白人自然知道这绝不是杜撰和虚立的靶子。这些成见似是而非,经不起推敲,却被很多人视为理所当然的真理。为每一条成见找一个相应的规则系统的案例并不难,但是从一些特定系统的缺陷推广到对整个规则系统的方法学上的批判,乃是其要害所在。 【成见一】规则系统的手工编制(hand-crafted)是其知识瓶颈,而机器学习是自动训练的(言下之意:没有知识瓶颈)。 【成见二】规则系统的手工编制导致其移植性差,转换领域必须重启炉灶,而机器学习因为算法和系统保持不变,转换领域只要改变训练数据即可(言下之意:移植性强)。 【成见三】规则系统很脆弱,遇到没有预测的语言现象系统就会 break(什么叫 break,死机?瘫痪?失效?),开发不了鲁棒(robust)产品。 【成见四】规则系统的结果没有置信度,鱼龙混杂。 【成见五】规则系统的编制越来越庞杂,最终无法改进,只能报废。 【成见六】规则系统的手工编制注定其无法实用,不能 scale up,只能是实验室里的玩具。 【成见七】规则系统只能在极狭窄的领域成事,无法实现跨领域的系统。 【成见八】规则系统只能处理规范的语言(譬如说明书、天气预报、新闻等),无法应对 degraded text,如社会媒体、口语、方言、黑话、OCR 文档。 【成见九】规则系统是上个世纪的技术,早已淘汰(逻辑的结论似乎是:因此不可能做出优质系统)。 【成见十】从结果上看,机器学习总是胜过规则系统。 所列“成见”有两类:一类是“偏”见,如【成见一】至【成见五】。这类偏见主要源于不完全归纳,他们也许看到过或者尝试过规则系统某一个类型, 浅尝辄止,然后遽下结论(jump to conclusions)。盗亦有道,情有可原,虽然还是应该对其一一纠“正”。本文即是拨乱反正的第一篇。成见的另一类是谬见,可以事实证明其荒谬。令人惊诧的是,谬见也可以如此流行。【成见五】以降均属不攻自破的谬见。譬如【成见八】说规则系统只能分析规范性语言。事实胜于雄辩,我们开发的以规则体系为主的舆情挖掘系统处理的就是非规范的社交媒体。这个系统的大规模运行和使用也驳斥了【成见六】,可以让读者评判这样的规则系统够不够资格称为实用系统: 以全球500强企业为主要客户的多语言客户情报挖掘系统由前后两个子系统组成。核心引擎是后台子系统(back-end indexing engine),用于对社交媒体大数据做自动分析和抽取。分析和抽取结果用开源的Apache Lucene文本搜索引擎(lucene.apache.org) 存储。生成后台索引的过程基于Map-Reduce框架,利用计算云(computing cloud) 中200台虚拟服务器进行分布式索引。对于过往一年的社会媒体大数据存档(约300亿文档跨越40多种语言),后台索引系统可以在7天左右完成全部索引。前台子系统(front-end app)是基于 SaaS 的一种类似搜索的应用。用户通过浏览器登录应用服务器,输入一个感兴趣的话题,应用服务器对后台索引进行分布式搜索,搜索的结果在应用服务器经过整合,以用户可以预设(configurable)的方式呈现给用户。这一过程立等可取,响应时间不过三四秒。 II. 规则系统手工性的责难 【成见一】说:规则系统的手工编制(hand-crafted)是其知识瓶颈,而机器学习是自动训练的(言下之意:因此没有知识瓶颈)。 NLP主流对规则系统和语言学家大小偏见积久成堆,这第一条可以算是万偏之源。随便翻开计算语言学会议的论文,无论讨论什么语言现象,为了论证机器学习某算法的优越,在对比批评其他学习算法的同时,规则系统大多是随时抓上来陪斗的攻击对象,而攻击的理由往往只有这么一句话,规则系统的手工性决定了 “其难以开发”(或“其不能 scale up”,“其效率低下”,“其不鲁棒”,不一而足),或者干脆不给具体理由,直接说“文献【1】【2】【3】尝试了这个问题的不同方面,但这些系统都是手工编制的”,一句话判处死刑,甚至不用讨论它们的效果和质量。手工性几乎成了规则系统的“原罪”,编制这些系统的语言学家因此成为学术共同体背负原罪的二等公民。 手工编制(hand-crafted)又如何?在日常消费品领域,这是对艺人特别的嘉奖,是对批量机械化生产和千篇一律的反抗,是独特和匠心的代表,是高价格理直气壮的理由。缘何到了NLP领域,突然就成贬义词了呢?这是因为在NLP领域,代表主流的统计学家由于他们在NLP某些任务上的非凡成功,居功自傲,把成功无限夸大,给这个共同体施行了集体催眠术,有意无意引导人相信机器学习是万能的。换句话说,批判手工编制的劣根性,其隐含的前提是机器学习是万能的,有效的,首选的。而实际情况是,面对自然语言的复杂性,机器学习只是划过了语言学的冰山一角,远远没有到主流们自觉或不自觉吹嘘的万能境界。催眠的结果是,不独不少语言学家以及NLP相关利益方(如投资人和用户)被他们洗脑了,连他们自己也似乎逐渐相信了自己编制的神话。 真实世界中,NLP 是应用学科,最终结果体现在应用软件(applications)上,属于语言软件工程。作为一个产业,软件工程领域吸引了无数软件工程师,虽然他们自嘲为“码工”,社会共同体给予他们的尊重和待遇是很高的(Bill Gates 自封了一个 Chief Engineer,说明了这位软件大王对工匠大师的高度重视)。古有鲁班,现有码师(coding master)。这些码工谁不靠手工编制代码作为立足之本呢?没听说一位明星工程师因为编制代码的手工性质而被贬损。同是软件工程,为什么计算语言学家手工编制NLP代码与其他工程师手工编制软件代码,遭遇如此不同的对待。难道是因为NLP应用比其他应用简单?恰恰相反,自然语言的很多应用比起大多数应用(譬如图形软件、字处理软件等等)更加复杂和艰难。解释这种不同遭遇的唯一理由就是,作为大环境的软件领域没有NLP主流的小环境里面那么多的傲慢和偏见。软件领域的大师们还没有狂妄到以为可以靠自动编程取代手工编程。他们在手工编程的基础建设(编程架构和开发环境等)上下功夫,而不是把希望寄托在自动编程的万能上。也许在未来的某一天,一些简单的应用可以用代码自动化来实现,但是复杂任务的全自动化从目前来看是遥遥无期的。不管从什么标准来看,非浅层的自然语言分析和理解都是复杂任务的一种。因此,机器学习作为自动编程的一个体现是几乎不可能取代手工代码的。规则系统的NLP应用价值会长期存在。 自动是一个动听的词汇。如果一切人工智能都是自动学习的,前景该有多么美妙。机器学习因为与自动连接在一起,显得那么高高在上,让人仰视。它承载着人类对未来世界的幻想。这一切理应激励自动学习专家不断创新,而绝不该成为其傲慢和偏见的理由。 在下面具体论述所谓规则系统的知识瓶颈软肋之前,值得一提的是,本文所谓自动是指系统的开发,不要混淆为系统的应用。在应用层面,无论是机器学习出来的系统,还是手工编制的系统,都是全自动地服务用户的,这是软件应用的性质决定的。虽然这是显而易见的事实,可确实有人被误导,一听说手工编制,就引申为基于规则系统的应用也是手工的,或者半自动的。 手工编制NLP系统是不是规则系统的知识瓶颈?毋庸讳言,确实如此。这个瓶颈体现在系统开发的周期上。但是,这个瓶颈是几乎所有大型软件工程项目所共有的,是理所当然的资源成本,不独为 NLP “专美”。从这个意义上看,以知识瓶颈诟病规则系统是可笑的,除非可以证明对所有NLP项目,用机器学习开发系统比编制规则系统,周期短且质量高(个别的项目可能是这样,但一般而言绝非如此,后面还要详谈)。大体说来,对于NLP的浅层应用(譬如中文切词,专名识别,等等),没有三个月的开发,没有至少一位计算语言学家手工编制和调试规则和至少半个工程师的平台层面的支持,是出不来规则系统的。对于NLP的深层应用(如句法分析,舆情抽取等),没有至少一年的开发,涉及至少一位计算语言学家的手工编制规则,至少半个质量检测员的协助和半个工程师的平台支持,外加软件工程项目普遍具有的应用层面的用户接口开发等投入,也是出不来真正的软件产品的。当然需要多少开发资源在很大程度上决定于开发人员(包括作为知识工程师的计算语言学家)的经验和质量以及系统平台和开发环境的基础(infrastructures)如何。 计算语言学家编制规则系统的主体工作是利用形式化工具编写并调试语言规则、各类词典以及语言分析的流程调控。宏观上看,这个过程与软件工程师编写应用程序没有本质不同,不过是所用的语言、形式框架和开发平台(language,formalism and development platform)不同,系统设计和开发的测重点不同而已。这就好比现代的工程师用所谓高级语言 Java 或者 C,与30年前的工程师使用汇编语言的对比类似,本质是一样的编程,只是层次不同罢了。在为NLP特制的“高级”语言和平台上,计算语言学家可以不用为内存分配等非语言学的工程细节所羁绊,一般也不用为代码的优化和效率而烦扰,他们的注意力更多地放在面对自然语言的种种复杂现象,怎样设计语言处理的架构和流程,怎样平衡语言规则的条件宽窄,怎样与QA(质量检测)协调确保系统开发的健康,怎样保证语言学家团队编制规则的操作规范(unit testing,regression testing,code review,baselines,等等)以确保系统的可持续性,怎样根据语言开发需求对于现有形式框架的限制提出扩展要求,以及怎样保证复杂系统的鲁棒性,以及怎样突破规则系统的框架与其他语言处理包括机器学习进行协调,等等。一个领头的计算语言学家就是规则系统的架构师,系统的成败绝不仅仅在于语言规则的编制及其堆积,更多的决定于系统架构的合理性。明星工程师是软件企业的灵魂,NLP 规则系统的大规模成功也一样召唤着语言工程大师。 关于知识瓶颈的偏见,必须在对比中评估。自然语言处理需要语言学知识,把这些知识形式化是每个NLP系统的题中应有之义,机器学习绝不会自动免疫,无需知识的形式化。规则系统需要语言学家手工开发的资源投入,机器学习也同样需要资源的投入,不过是资源方式不同而已。具体说,机器学习的知识瓶颈在于需要大数量的训练数据集。排除研究性强实用性弱的无监督学习(unsupervised learning),机器学习中可资开发系统的方法是有监督的学习(supervised learning)。有监督的学习能开发知识系统成为应用的前提是必须有大量的手工标注的数据,作为学习的源泉。虽然机器学习的过程是自动的(学习算法的创新、调试和实现当然还是手工的),但是大量的数据标注则是手工的(本来就有现成标注不计,那是例外)。因此,机器学习同样面临知识瓶颈,不过是知识瓶颈的表现从需要少量的语言学家变成需要大量的低端劳动者(懂得语言及其任务的中学生或大学生即可胜任)。马克思说金钱是一般等价物,知识瓶颈的问题于是转化为高级劳动低级劳动的开销和转换问题:雇佣一个计算语言学家的代价大,还是雇佣10个中学生的代价大?虽然这个问题根据不同项目不同地区等因素答案会有不同,但所谓机器学习没有知识瓶颈的神话可以休矣。 另外,知识瓶颈的对比问题不仅仅是针对一个应用而言,而应该放在多应用的可移植性上来考察。我们知道大多数非浅层的NLP应用的技术支持都源于从自然语言做特定的信息抽取:抽取关系、事件、舆情等。由于机器学习把信息抽取看成一个直接对应输入和输出的黑匣子,所以一旦改变信息抽取目标和应用方向,以前的人工标注就废弃了,作为知识瓶颈的标注工作必须完全重来。可是规则系统不同,它通常设计成一个规则层级体系,由独立于领域的语言分析器(parser)来支持针对领域的信息抽取器(extractor)。结果是,在转移应用目标的时候,作为技术基础的语言分析器保持不变,只需重新编写不同的抽取规则而已。实践证明,对于规则系统,真正的知识瓶颈在语言分析器的开发上,而信息抽取本身花费不多。这是因为前者需要应对自然语言变化多端的表达方式,将其逻辑化,后者则是建立在逻辑形式(logical form)上,一条规则等价于底层规则的几百上千条。因此,从多应用的角度看,规则系统的知识成本趋小,而机器学习的知识成本则没有这个便利。 III. 主流的反思 如前所述,NLP领域主流意识中的成见很多,积重难返。世界上还很少有这样的怪现象:号称计算语言学(Computational Linguistics)的领域一直在排挤语言学和语言学家。语言学家所擅长的规则系统,与传统语言学完全不同,是可实现的形式语言学(Formal Linguistics)的体现。对于非浅层的NLP任务,有效的规则系统不可能是计算词典和文法的简单堆积,而是蕴含了对不同语言现象的语言学处理策略(或算法)。然而,这一路研究在NLP讲台发表的空间日渐狭小,资助亦难,使得新一代学人面临技术传承的危险。Church (2007)指出,NLP研究统计一边倒的状况是如此明显,其他的声音已经听不见。在浅层NLP的低垂果实几乎全部采摘完毕以后,当下一代学人面对复杂任务时,语言学营养缺乏症可能导致统计路线捉襟见肘。 可喜的是,近年来主流中有识之士(如,Church 2007, Wintner 2009)开始了反思和呼吁,召唤语言学的归来:“In essence, linguistics is altogether missing in contemporary natural language engineering research. … I want to call for the return of linguistics to computational linguistics.”(Wintner 2009)。相信他们的声音会受到越来越多的人的注意。 参考文献 Church 2007. A Pendulum Swung Too Far. Linguistics issues in Language Technology, Volume 2, Issue 4. Wintner 2009. What Science Underlies Natural Language Engineering? Computational Linguistics, Volume 35, Number 4 原载 《W. Li T. Tang: 主流的傲慢与偏见:规则系统与机器学习》 【计算机学会通讯】2013年第8期(总第90期) Pride and Prejudice in Mainstream: Rule System vs. Machine Learning In the area of Computational Linguistics, there are two basic approaches to natural language processing, the traditional rule system and the mainstream machine learning. They are complementary and there are pros and cons associated with both. However, as machine learning is the dominant mainstream philosophy reflected by the overwhelming ratio of papers published in academia, the area seems to be heavily biased against the rule system methodology. The tremendous success of machine learning as applied to a list of natural language tasks has reinforced the mainstream pride and prejudice in favor of one and against the other. As a result, there are numerous specious views which are often taken for granted without check, including attacks on the rule system's defects based on incomplete induction or misconception. This is not healthy for NLP itself as an applied research area and exerts an inappropriate influence on the young scientists coming to this area. This is the first piece of a series of writings aimed at correcting the prevalent prejudice, focused on the in-depth examination of the so-called hand-crafted defect of the rule system and the associated knowledge bottleneck issue. 【相关】 K. Church: A Pendulum Swung Too Far , Linguistics issues in Language Technology, 2011; 6(5) 【科普随笔:NLP主流的傲慢与偏见】 【 关于NLP方法论以及两条路线之争 】 专栏: NLP方法论 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|4153 次阅读|6 个评论
[转载]SVM——一个大神的倾囊相授
热度 1 xyxiao 2016-7-14 21:06
转载自:http://blog.csdn.net/v_july_v/article/details/7624837 前言 动笔写这个支持向量机( support vector machine )是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了( 见文末参考链接 ),但在描述数学公式的时候还是显得不够。得益于同学白石的数学证明,我还是想尝试写一下,希望本文在兼顾通俗易懂的基础上,真真正正能足以成为一篇完整概括和介绍支持向量机的导论性的文章。 本文在写的过程中, 参考了不少资料,包括 《支持向量机导论》、《统计学习方法》及网友 pluskid 的支持向量机系列等等, 于此,还是一篇 学习笔记 ,只是加入了自己的理解和总结,有任何不妥之处,还望海涵 。全文宏观上整体认识支持向量机的概念和用处,微观上深究部分定理的来龙去脉,证明及原理细节,力保逻辑清晰 通俗易懂。 同时,阅读本文时建议大家尽量使用 chrome 等浏览器,如此公式才能更好的显示,再者,阅读时 可拿张纸和笔出来,把本文所有定理.公式都亲自推导一遍或者直接打印下来(可直接打印网页版或本文文末附的PDF) 在文稿上演算,从而享受随时随地思考、演算的极致快感 。 OK,还是那句话,有任何问题,欢迎任何人随时不吝指正 赐教,感谢。 第一层、了解SVM 支持向量机,因其英文名为 support vector machine ,故一般简称 SVM ,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。 1.1 、分类标准的起源:Logistic回归 理解 SVM ,咱们必须先弄清楚一个概念:线性分类器。 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用 x 表示 数据点,用 y 表示 类别(y可以取 1 或者 -1 ,分别代表两个不同的类 ),一个线性分类器的学习目标便是要在 n 维的数据空间中找到一个 超平面(hyper plane),这个超平面的方程可以表示为( wT中的 T 代表转置 ): 可能有读者对类别取 1 或 -1 有疑问,事实上,这个 1 或 -1 的分类标准起源于 logistic 回归 。 Logistic 回归目的是从特征学习出一个 0/1 分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用 logistic 函数(或称作 sigmoid 函数)将自变量映射到 (0,1) 上,映射后的值被认为是属于 y=1 的概率。 假设函数 其中x是n维特征向量,函数g就是logistic函数。 而 的图像是 可以看到,将无穷映射到了(0,1)。 而假设函数就是特征属于y=1的概率。 从而,当我们要判别一个新来的特征属于哪个类时,只需求 即可,若 大于 0.5 就是 y=1 的类,反之属于 y=0 类。 此外, 只和 有关, 0 ,那么 , 而g(z) 只是用来映射,真实的类别决定权还 是在于 。再者,当 时, =1 ,反之 =0 。如果我们只从 出发,希望模型达到的目标就是让训练数据中 y=1 的特征 ,而是 y=0 的特征 。 Logistic 回归就是要学习得到 ,使得正例的特征远大于 0 ,负例的特征远小于 0 , 而且要在全部训练实例上达到这个目标。 接下来,尝试把logistic 回归 做个变形。首先,将使用的结果标签y = 0 和 y = 1替换为y = -1,y = 1,然后将 ( )中的 替换为 b ,最后将后面的 替换为 (即 )。如此,则有了 。也就是说除了 y 由 y=0 变为 y=-1 外,线性分类函数跟logistic 回归的形式化表示 没区别。 进一步,可以将假设函数 中的g(z) 做一个简化,将其简单映射到 y=-1 和 y=1 上。 映射关系如下: 1.2 、线性分类的一个例子 下面举个简单的例子,如下图 所示,现在有 一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的 y 全是 -1 ,另一边 所对应的 y 全是 1 。 这个超平面可以用分类函数 表示,当f(x) 等于 0 的时候, x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点 ,f(x) 小于 0 的点对应 y=-1 的点,如下图 所示: 注:有的资料上 定义特征到结果的输出函数 , 与这里定义的 实质是一样的。为什么?因为无论是 ,还是 ,不影响最终优化结果。下文你将看到,当我们转化到优化 的时候,为了求解方便,会把yf(x)令为1,即yf(x)是y(w^x + b),还是y(w^x - b),对我们要优化的式子max1/||w||已无影响。 ( 有一朋友飞狗来自Mare_Desiderii,看了上面的定义之后,问道:请教一下SVM functional margin 为 =y(wTx+b)=yf(x)中的Y是只取1和-1 吗?y的唯一作用就是确保functional margin的非负性?真是这样的么?当然不是,详情请见本文评论下第43楼 ) 当然,有些时候,或者说大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在(不过关于如何处理这样的问题我们后面会讲),这里先从最简单的情形开始推导,就假设数据都是线性可分的,亦即这样的超平面是存在的 。 换言之,在进行分类的时候,遇到一个新的数据点 x , 将x代入 f(x) 中,如果 f(x) 小于 0 则 将 x 的 类别赋为-1 ,如果 f(x)大于 0 则 将 x 的类别赋为 1。 接下来的问题是,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。 1.3 、函数间隔 Functional margin与几何间隔Geometrical margin 在超平面 w*x+b=0 确定的情况下, |w*x+b| 能够表示点 x 到距离超平面的远近,而 通过观察w*x+b 的符号与类标记 y 的符号是否一致 可判断 分类是否正确 ,所以,可以用(y*(w*x+b))的正负性来判定或表示分类的正确性。于此,我们便引出了函数间隔(functional margin)的概念。 定义函数间隔(用 表示)为: 而超平面 (w , b) 关于 T 中所有样本点 (xi , yi) 的函数间隔最小值 (其中, x 是特征, y 是结果标签, i 表示第 i 个样本 ),便为超平面(w, b)关于训练数据集 T 的函数间隔 : = min i (i=1,...n) 但这样定义的函数间隔有问题,即如果成比例的改变 w 和 b (如将它们改成2w 和 2b ),则函数间隔的值 f(x) 却变成了原来的 2 倍 (虽然此时超平面没有改变),所以只有函数间隔还远远不够。 事实上,我们可以对法向量 w 加些约束条件, 从而引出真正定义点到超平面的距离 -- 几何 间隔(geometrical margin)的概念。 假定对于一个点 x ,令其垂直投影到超平面上的对应 点为 x0 , w 是垂直于超平面的一个向量, 为样本 x 到超平面的距离,如下图所示: 根据平面几何知识,有 其中 ||w||为w的二阶范数(范数是一个类似于模的表示长度的概念), 是单位向量(一个向量除以它的模称之为单位向量)。 又由于 x 0 是超平面上的点,满足 f ( x 0 ) = 0 ,代入超平面的方程 ,可得 ,即 。 随即让此式 的两边同时乘以 ,再根据 和 ,即可算出 : γ 为了得到 的绝对值,令 乘上对应的类别 y , 即可得出几何间隔(用 表示)的定义 : 从上述函数间隔和几何间隔的定义可以看出:几何间隔就是函数间隔除以||w||,而且函数间隔y*(wx+b) = y*f(x)实际上就是|f(x)|,只是人为定义的一个间隔度量,而几何间隔|f(x)|/||w||才是直观上的点到超平面的距离。 1.4 、最大间隔分类器M aximum Margin Classifier 的定义 对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔就是下图 中的 Gap的一半 。 通过由前面的分析可知:函数间隔不适合用来最大化间隔值,因为在超平面固定以后,可以等比例地缩放 w 的长度和 b 的值,这样可以使得 的值任意大,亦即函数间隔 可以在超平面保持不变的情况下被取得任意大。但几何间隔因为除上了 ,使得在缩放 w 和 b 的时候 几何间隔 的值是不会改变的,它只随着超平面的变动而变动,因此,这是更加合适的一个间隔。 那么, 换言之,这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔。 于是最大间隔分类器(maximum margin classifier)的目标函数可以定义为: 同时需满足一些条件,根据间隔的定义,有 其中, s.t. ,即 subject to 的意思,它导出的是约束条件 。 回顾下几何间隔的定义 可知:如果令函数间隔 等于 1( 之所以令 等于1,是为了方便推导和优化,且这样做 对目标函数的优化没有影响,至于为什么,请见本文评论下 第42楼 回复 ) ,则有 = 1 / ||w||且 ,从而上述目标函数转化成了 这个目标函数便是在相应的约束条件 下,最大化这个 1/||w|| 值 ,而1/||w||便是几何间隔 。 如下图 所示 ,中间的实线便是寻找到的最优超平面( Optimal Hyper Plane ),其到两条虚线边界的距离相等,这个距离便是几何间隔 ,两条虚线间隔边界之间的距离等于 2 ,而虚线 间隔边界上的点则是支持向量 。由于这些支持向量刚好在虚线间隔边界上,所以它们满足 ( 还记得我们把 functional margin 定为 1 了吗?上节中:处于方便推导和优化的目的,我们可以令 = 1 ),而对于所有不是支持向量的点,则显然有 。 OK,到此为止,算是了解到了SVM的第一层,对于那些只关心怎么用SVM的朋友便已足够,不必再更进一层深究其更深的原理。 第二层、深入SVM 2.1 、从线性可分到线性不可分 2.1.1、从原始问题到对偶问题的求解 接着考虑之前得到的目标函数: 由于求 的最大值相当于求 的最小值,所以上述目标函数等价于(w由分母变成分子,从而也有原来的max问题变为min问题,很明显,两者问题等价): 因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用现成的 QP (Quadratic Programming) 优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。 此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性( Lagrange Duality )变换到对偶变量 (dual variable) 的优化问题, 即通过求解与原问题等价的对偶问题( dual problem ) 得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。 那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier) ,定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而 只用一个函数表达式便能清楚的表达出我们的问题 ) : 然后令 容易验证,当某个约束条件不满足时,例如 ,那么显然有 ( 只要令 即可)。而当所有约束条件都满足时,则最优值为 , 亦即最初要最小化的量。 因此,在要求约束条件得到满足的情况下 最小化 , 实际上等价于直接最小化 (当然,这里也有约束条件,就是 ≥ 0 , i = 1 , … , n ) ,因为如果约束条件没有得到满足, 会等于无穷大,自然不会是我们所要求的最小值。 具体写出来,目标函数变成了: 这里用 表示这个问题的最优值,且和最初的问题是等价的。如果直接求解,那么一上来便得面对w和b两个参数,而 又是不等式约束,这个求解过程不好做。不妨把最小和最大的位置交换一下,变成: 交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用 来表示。而且有 ≤ ,在满足某些条件的情况下,这两者相等,这个时候就可以通过求解对偶问题来间接地求解原始问题。 换言之,之所以从 minmax 的原始问题 ,转化为 maxmin 的对偶问题 ,一者因为 是 的近似解,二者,转化为对偶问题后,更容易求解。 下面可以先求 L 对 w 、 b 的极小,再求 L 对 的极大。 2.1.2、KKT条件 上文中提到“ ≤ 在满足某些条件的情况下,两者等价”,这所谓的“满足某些条件”就是要满足 KKT 条件。 一般地,一个最优化数学模型能够表示成下列标准形式: 其中,f(x)是需要最小化的函数,h(x)是等式约束,g(x)是不等式约束,p和q分别为等式约束和不等式约束的数量。 同时,得明白以下两点: 凸优化的概念: 为一凸集, 为一凸函数。 凸优化 就是要找出一点 ,使得每一 满足 。 KKT条件的意义:它是 一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。 而KKT条件就是指上面最优化数学模型的标准形式中的最小点 x* 必须满足下面的条件: 经过论证,我们这里的问题是满足 KKT 条件的 ( 首先已经满足 Slater condition ,再者 f 和 gi 也都是可微的,即 L 对 w 和 b 都可导 ),因此现在我们便转化为求解第二个问题。 也就是说,原始问题通过满足 KKT 条件,已经转化成了对偶问题。而求解这个对偶学习问题,分为 3 个步骤:首先要让 L(w , b , a) 关于 w 和 b 最小化,然后求对 的极大,最后利用 SMO 算法求解对偶问题中的拉格朗日乘子。 2.1.3、对偶问题求解的3个步骤 (1) 、首先固定 , 要让 L 关于 w 和 b 最小化 ,我们分别对w,b求偏导数 ,即令 ∂ L / ∂ w 和 ∂ L / ∂ b 等于零( 对w求导结果的解释请看本文评论下 第45楼 回复 ): 将以上结果代入之前的L : 得到: 提醒:有读者可能会问上述推导过程如何而来?说实话,其具体推导过程是比较复杂的,如下图所示: 最后,得到: 如 jerrylead所说:“倒数第4步”推导到“倒数第3步”使用了线性代数的转置运算,由于ai和yi都是实数,因此转置后与自身一样。“倒数第3步”推导到“倒数第2步”使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…的乘法运算法则。最后一步是上一步的顺序调整。 L ( 从上面的最后一个式子,我们可以看出,此时的拉格朗日函数只包含了一个变量,那就是 ( 求出了 便能求出w,和b,由此可见,上文第1.2节提出来的核心问题:分类函数 也就可以轻而易举的求出来了 )。 (2) 、求对 的极大 , 即是关于对偶问题的最 优化问题。 经过上面第一个步骤的求w和b,得到的拉格朗日函数式子已经没有了变量w,b,只有 。从上面的式子得到: 这样, 求出了 ,根据 , 即可求出w, 然后通过 , 即可求出b, 最终得出分离超平面和分类决策函数。 (3) 在求得 L(w, b, a) 关于 w 和 b 最小化, 以及对 的极大之后,最后一步则可以利用 SMO 算法求解对偶问题中的拉格朗日乘子 。 上述式子要解决的是在参数 上求最大值W的问题,至于 和 都是已知数。要了解这个SMO算法是如何推导的,请跳到下文第3.5节、SMO算法。 到目前为止,我们的 SVM 还比较弱,只能处理线性的情况,下面我们将引入核函数,进而推广到非线性分类问题。 2.1.5、线性不可分的情况 OK,为过渡到下节2.2节所介绍的核函数,让我们再来看看上述推导过程中得到的一些有趣的形式。首先就是关于我们的 hyper plane ,对于一个数据点 x 进行分类,实际上是通过把 x 带入到 算出结果然后根据其正负号来进行类别划分的。而前面的推导中我们得到 因此 分类函数 为: 这里的形式的有趣之处在于,对于新点 x 的预测,只需要计算它与训练数据点的内积即可( 表示向量内积),这一点至关重要,是之后使用 Kernel 进行非线性推广的基本前提。此外,所谓 Supporting Vector 也在这里显示出来——事实上,所有非Supporting Vector 所对应的系数 都是等于零的,因此对于新点的内积计算实际上只要针对少量的“支持向量”而不是所有的训练数据即可。 为什么非支持向量对应的 等于零呢?直观上来理解的话,就是这些“后方”的点——正如我们之前分析过的一样,对超平面是没有影响的,由于分类完全有超平面决定,所以这些无关的点并不会参与分类问题的计算,因而也就不会产生任何影响了。 回忆一下我们2.1.1节中通过 Lagrange multiplier得到的目标函数: 注意到如果 x i 是支持向量的话,上式中红颜色的部分是等于 0 的(因为支持向量的 functional margin 等于 1 ),而对于非支持向量来说,functional margin 会大于 1 ,因此红颜色部分是大于零的,而 又是非负的,为了满足最大化, 必须等于 0 。这也就是这些非Supporting Vector 的点的局限性。 从1.5节到上述所有这些东西,便得到了一个maximum margin hyper plane classifier,这就是所谓的支持向量机(Support Vector Machine)。当然, 到目前为止,我们的 SVM 还比较弱,只能处理线性的情况 ,不过,在得到了对偶dual 形式之后,通过 Kernel 推广到非线性 的情况就变成了一件非常容易的事情了( 相信,你还记得本节开头所说的:“通过求解对偶问题得到最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题” )。 2.2 、核函数 Kernel 2.2.1、 特征空间的隐式映射:核函数 事实上, 大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在。在上文中,我们已经了解到了SVM处理线性可分的情况,那对于非线性的数据SVM咋处理呢? 对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。 更进一步,因为训练样例一般是不会独立出现的,它们总是以成对样例的内积形式出现,而用对偶形式表示学习器的优势在为在该表示中可调参数的个数不依赖输入属性的个数,通过使用恰当的核函数来替代内积,可以隐式得将非线性的训练数据映射到高维空间,而不增加可调参数的个数(当然,前提是核函数能够计算对应着两个输入特征向量的内积) 。 具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。如图 7-7 所示,一堆数据在二维空间无法划分,从而映射到三维空间里划分 : 而在我们遇到核函数之前,如果用原始的方法,那么在用线性学习器学习一个非线性关系,需要选择一个非线性特征集,并且将数据写成新的表达形式,这等价于应用一个固定的非线性映射,将数据映射到特征空间,在特征空间中使用线性学习器,因此,考虑的假设集是这种类型的函数: 这里 ϕ :X-F是从输入空间到某个特征空间的映射,这意味着建立非线性学习器分为两步: 首先使用一个非线性映射将数据变换到一个特征空间F, 然后在特征空间使用线性学习器分类。 而由于对偶形式就是线性学习器的一个重要性质,这意味着假设可以表达为训练点的线性组合,因此决策规则可以用测试点和训练点的内积来表示: 如果有一种方式可以 在特征空间中直接计算内积 〈 φ ( x i · φ ( x ) 〉 ,就像在原始输入点的函数中一样,就有可能将两个步骤融合到一起建立一个非线性的学习器, 这样直接计算法的方法称为核函数方法: 核是一个函数K,对所有x,z(-X,满足 ,这里 φ是从X到内积特征空间F的映射。 2.2.2、核函数:如何处理非线性数据 来看个核函数的例子。如下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分的,此时咱们该如何把这两类数据分开呢( 下文将会有一个相应的三维空间图 )? 事实上,上图所述的这个数据集,是用两个半径不同的圆圈加上了少量的噪音生成得到的,所以,一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用 X 1 和 X 2 来表示这个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式: 注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为 Z 1 = X 1 , Z 2 = X 2 1 , Z 3 = X 2 , Z 4 = X 2 2 , Z 5 = X 1 X 2 ,那么显然,上面的方程在新的坐标系下可以写作: 关于新的坐标 Z ,这正是一个 hyper plane 的方程!也就是说,如果我们做一个映射 ϕ : R 2 → R 5 ,将 X 按照上面的规则映射为 Z ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是 Kernel 方法处理非线性问题的基本思想。 再进一步描述 Kernel 的细节之前,不妨再来看看这个例子映射过后的直观例子。当然,你我可能无法把 5 维空间画出来,不过由于我这里生成数据的时候就是用了特殊的情形,具体来说,我这里的超平面实际的方程是这个样子(圆心在 X 2 轴上的一个正圆): 因此我只需要把它映射到 Z 1 = X 2 1 , Z 2 = X 2 2 , Z 3 = X 2 这样一个三维空间中即可,下图即是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的( pluskid: 下面的gif 动画,先用 Matlab 画出一张张图片,再用 Imagemagick 拼贴成 ): 核函数相当于把原来的分类函数: 映射成: 而其中的 可以通过求解如下 dual 问题而得到的: 这样一来问题就解决了吗?似乎是的:拿到非线性数据,就找一个映射 ,然后一股脑把原来的数据映射到新空间中,再做线性 SVM 即可。不过事实上没有这么简单!其实刚才的方法稍想一下就会发现有问题:在最初的例子里,我们对一个二维空间做映射,选择的新空间是原始空间的所有一阶和二阶的组合,得到了五个维度;如果原始空间是三维,那么我们会得到 19 维的新空间,这个数目是呈爆炸性增长的,这给 的计算带来了非常大的困难,而且如果遇到无穷维的情况,就根本无从计算了。所以就需要 Kernel 出马了。 不妨还是从最开始的简单例子出发,设两个向量 和 ,而 即是到前面说的五维空间的映射,因此映射过后的内积为: (公式说明: 上面的这两个推导过程中,所说的前面的五维空间的映射,这里说的前面便是文中2.2.1节的所述的映射方式,回顾下之前的映射规则,再看那第一个推导,其实就是计算x1,x2各自的内积,然后相乘相加即可,第二个推导则是直接平方,去掉括号,也很容易推出来 ) 另外,我们又注意到: 二者有很多相似的地方,实际上,我们只要把某几个维度线性缩放一下,然后再加上一个常数维度,具体来说,上面这个式子的计算结果实际上和映射 之后的内积 的结果是相等的,那么区别在于什么地方呢? 一个是映射到高维空间中,然后再根据内积的公式进行计算; 而另一个则 直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果 。 (公式说明: 上面之中,最后的两个式子,第一个算式,是带内积的完全平方式,可以拆开,然后,通过凑一个得到,第二个算式,也是根据第一个算式凑出来的 ) 回忆刚才提到的映射的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法却依旧能从容处理,甚至是无穷维度的情况也没有问题。 我们把这里 的计算两个向量在隐式映射过后的空间中的内积的函数叫做核函数 (Kernel Function) ,例如,在刚才的例子中,我们的核函数为: 核函数能 简化映射空间中的内积运算 ——刚好“碰巧”的是,在我们的 SVM 里需要计算的地方数据向量总是以内积的形式出现 的。对比刚才我们上面写出来的式子,现在我们的 分类函数 为: 其中 由如下 dual 问题计算而得: 这样一来计算的问题就算解决了, 避开了直接在高维空间中进行计算 ,而结果却是等价的!当然,因为我们这里的例子非常简单,所以我可以手工构造出对应于 的核函数出来,如果对于任意一个映射,想要构造出对应的核函数就很困难了。 2.2.3、几个核函数 通常人们会从一些常用的核函数中选择(根据问题和数据的不同,选择不同的参数,实际上就是得到了不同的核函数),例如: 多项式核,显然刚才我们举的例子是这里多项式核的一个特例(R = 1,d = 2 ) 。虽然比较麻烦,而且没有必要,不过这个核所对应的映射实际上是可以写出来的,该空间的维度是 ,其中 是原始空间的维度。 高斯核 ,这个核就是最开始提到过的会将原始空间映射为无穷维空间的那个家伙。不过,如果 选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果 选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数 ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。下图所示的例子便是把低维线性不可分的数据通过高斯核函数映射到了高维空间: 线性核 ,这实际上就是原始空间中的内积。这个核存在的主要目的是使得“映射后空间中的问题”和“映射前空间中的问题”两者在形式上统一起来了( 意思是说,咱们有的时候,写代码,或写公式的时候,只要写个模板或通用表达式,然后再代入不同的核,便可以了,于此,便在形式上统一了起来,不用再分别写一个线性的,和一个非线性的 ) 。 2.2.4、核函数的本质 上面说了这么一大堆,读者可能还是没明白核函数到底是个什么东西?我再简要概括下,即以下三点: 实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去(如上文2.2节最开始的那幅图所示,映射到高维空间后,相关特征便被分开了,也就达到了分类的目的); 但进一步,如果凡是遇到线性不可分的样例,一律映射到高维空间,那么这个维度大小是会高到可怕的(如上文中19维乃至无穷维的例子)。那咋办呢? 此时,核函数就隆重登场了,核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。 最后引用 这里 的一个例子举例说明下核函数解决非线性问题的直观效果。 假设现在你是一个农场主,圈养了一批羊群,但为预防狼群袭击羊群,你需要搭建一个篱笆来把羊群围起来。但是篱笆应该建在哪里呢?你很可能需要依据牛群和狼群的位置建立一个“分类器”,比较下图这几种不同的分类器,我们可以看到SVM完成了一个很完美的解决方案。 这个例子从侧面简单说明了SVM使用非线性分类器的优势,而逻辑模式以及决策树模式都是使用了直线方法。 OK, 不再做过多介绍了,对核函数有进一步兴趣的,还可以看看 此文 。 2.3 、使用松弛变量处理 outliers 方法 在本文第一节最开始讨论支持向量机的时候,我们就假定,数据是线性可分的,亦即我们可以找到一个可行的超平面将数据完全分开。后来为了处理非线性数据,在上文2.2节使用 Kernel 方法对原来的线性 SVM 进行了推广,使得非线性的的情况也能处理。虽然通过映射 将原始数据映射到高维空间之后,能够线性分隔的概率大大增加,但是对于某些情况还是很难处理。 例如可能并不是因为数据本身是非线性结构的,而只是因为数据有噪音。对于这种偏离正常位置很远的数据点,我们称之为 outlier ,在我们原来的 SVM 模型里,outlier 的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support vector 里又存在 outlier 的话,其影响就很大了。例如下图: 用黑圈圈起来的那个蓝点是一个 outlier ,它偏离了自己原本所应该在的那个半空间,如果直接忽略掉它的话,原来的分隔超平面还是挺好的,但是由于这个 outlier 的出现,导致分隔超平面不得不被挤歪了,变成途中黑色虚线所示(这只是一个示意图,并没有严格计算精确坐标),同时 margin 也相应变小了。当然,更严重的情况是,如果这个 outlier 再往右上移动一些距离的话,我们将无法构造出能将数据分开的超平面来。 为了处理这种情况,SVM 允许数据点在一定程度上偏离一下超平面。例如上图中,黑色实线所对应的距离,就是该 outlier 偏离的距离,如果把它移动回来,就刚好落在原来的 超平面 蓝色间隔边界上,而不会使得超平面发生变形了。 插播下一位读者@Copper_PKU的理解: “ 换言之,在有松弛的情况下outline点也属于支持向量SV,同时,对于不同的支持向量,拉格朗日参数的值也不同,如此篇论文《Large Scale Machine Learning》中的下图所示: 对于远离分类平面的点值为0;对于边缘上的点值在 之间,其中,L为训练数据集个数,即数据集大小;对于outline数据和内部的数据值为1/L。更多请参看本文文末参考条目第51条。 ” OK,继续回到咱们的问题。我们,原来的约束条件为: 现在考虑到outlier问题,约束条件变成了: 其中 称为松弛变量 (slack variable) ,对应数据点 允许偏离的 functional margin 的量。当然,如果我们运行 任意大的话,那任意的超平面都是符合条件的了。所以,我们在原来的目标函数后面加上一项,使得这些 的总和也要最小: 其中 是一个参数,用于控制目标函数中两项(“寻找 margin 最大的超平面”和“保证数据点偏差量最小”)之间的权重。注意,其中 是需要优化的变量(之一),而 是一个事先确定好的常量。完整地写出来是这个样子: 用之前的方法将限制或约束条件加入到目标函数中,得到新的拉格朗日函数,如下所示: 分析方法和前面一样,转换为另一个问题之后,我们先让 针对 、 和 最小化: 将 带回 并化简,得到和原来一样的目标函数: 不过,由于我们得到 而又有 (作为 Lagrange multiplier 的条件),因此有 ,所以整个 dual 问题现在写作: 把前后的结果对比一下(错误修正 :图中的Dual formulation中的Minimize应为 maxmize ): 可以看到唯一的区别就是现在 dual variable 多了一个上限 。而 Kernel 化的非线性形式也是一样的,只要把 换成 即可。这样一来,一个完整的,可以处理线性和非线性并能容忍噪音和 outliers 的支持向量机才终于介绍完毕了。 行文至此,可以做个小结, 不准确的说 , SVM它本质上即是一个分类方法,用w^T+b定义分类函数,于是求w、b,为寻最大间隔,引出1/2||w||^2,继而引入拉格朗日因子,化为对拉格朗日乘子a的求解(求解过程中会涉及到一系列最优化或凸二次规划等问题),如此,求w.b与求a等价,而a的求解可以用一种快速学习算法SMO,至于核函数,是为处理非线性情况,若直接映射到高维计算恐维度爆炸,故在低维计算,等效高维表现 。 OK,理解到这第二层,已经能满足绝大部分人一窥SVM原理的好奇心,然对于那些想在证明层面理解SVM的则还很不够,但进入第三层理解境界之前,你必须要有比较好的数理基础和逻辑证明能力,不然你会跟我一样,吃不少苦头的。 第三层、证明SVM 说实话,凡是涉及到要证明的东西.理论,便一般不是怎么好惹的东西。绝大部分时候,看懂一个东西不难,但证明一个东西则需要点数学功底,进一步,证明一个东西也不是特别难,难的是从零开始发明创造这个东西的时候,则显艰难( 因为任何时代,大部分人的研究所得都不过是基于前人的研究成果,前人所做的是开创性工作,而这往往是最艰难最有价值的,他们被称为真正的先驱。牛顿也曾说过,他不过是站在巨人的肩上。你,我则更是如此 )。 正如陈希孺院士在他的著作《数理统计学简史》的第4章、最小二乘法中所讲:在科研上诸多观念的革新和突破是有着很多的不易的,或许某个定理在某个时期由某个人点破了,现在的我们看来一切都是理所当然,但在一切没有发现之前,可能许许多多的顶级学者毕其功于一役,耗尽一生,努力了几十年最终也是无功而返。 话休絮烦,要证明一个东西先要弄清楚它的根基在哪,即构成它的基础是哪些理论。OK,以下内容基本是上文中未讲到的一些定理的证明,包括其背后的逻辑、来源背景等东西,还是读书笔记。 本部分导述 3.1节线性学习器中,主要阐述感知机算法; 3.2节非线性学习器中,主要阐述mercer定理; 3.3节、损失函数; 3.4节、最小二乘法; 3.5节、SMO算法; 3.6节、简略谈谈SVM的应用; 3.1 、线性学习器 3.1.1、感知机算法 这个感知机算法是1956年提出的,年代久远,依然影响着当今,当然,可以肯定的是,此算法亦非最优,后续会有更详尽阐述。不过,有一点,你必须清楚,这个算法是为了干嘛的:不断的训练试错以期寻找一个合适的超平面( 是的,就这么简单 )。 下面,举个例子。如下图所示,凭我们的直觉可以看出,图中的红线是最优超平面,蓝线则是根据感知机算法在不断的训练中,最终,若蓝线能通过不断的训练移动到红线位置上,则代表训练成功。 既然需要通过不断的训练以让蓝线最终成为最优分类超平面,那么,到底需要训练多少次呢?Novikoff定理告诉我们当间隔是正的时候感知机算法会在有限次数的迭代中收敛,也就是说Novikoff定理证明了感知机算法的收敛性,即能得到一个界,不至于无穷循环下去。 Novikoff定理:如果分类超平面存在, 仅需在序列 上迭代几次,在界为 的错误次数下就可以找到分类超平面,算法停止。 这里 , 为扩充间隔。根据误分次数公式可知, 迭代次数与对应于扩充(包括偏置)权重的训练集的间隔有关。 顺便再解释下这个所谓的扩充间隔 , 即为样本到分类间隔的距离,即从 引出的最大分类间隔。OK,还记得上文第1.3.2节开头的内容么?如下: “ 在给出几何间隔的定义之前,咱们首先来看下,如上图所示,对于一个点 x ,令其垂直投影到超平面上的对应的为 x 0 ,由于 w 是垂直于超平面的一个向量, 为样本x到分类间隔的距离,我们有 ” 然后后续怎么推导出最大分类间隔请回到本文第一、二部分,此处不重复板书。 同时有一点得注意:感知机算法虽然可以通过简单迭代对线性可分数据生成正确分类的超平面,但不是最优效果,那怎样才能得到最优效果呢,就是上文中第一部分所讲的寻找最大分类间隔超平面。此外,Novikoff定理的证明请见 这里 。 3.2 、非线性学习器 3.2.1、Mercer定理 Mercer定理 :如果函数K是 上的映射(也就是从两个n维向量映射到实数域)。那么如果K是一个有效核函数(也称为Mercer核函数),那么当且仅当对于训练样例 ,其相应的核函数矩阵是对称半正定的。 要理解这个 Mercer 定理,先要了解什么是半正定矩阵,要了解什么是半正定矩阵,先得知道什么是 正定矩阵 ( 矩阵理论“博大精深”,我自己也未能彻底理清,等我理清了再续写此节,顺便推荐我正在看的一本《矩阵分析与应用》 ) 。然后 这里 有一个此定理的证明 ,可以看下。 正如@Copper_PKU所说:核函数在SVM的分类效果中起了重要的作用,最后 这里 有个tutorial可以看看。 3.3 、损失函数 在本文1.0节有这么一句话“ 支持向量机(SVM)是90年代中期发展起来的基于统计学习理论的一种 机器学习 方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的 。”但初次看到的读者可能并不了解什么是结构化风险,什么又是经验风险。要了解这两个所谓的“风险”,还得又从监督学习说起。 监督学习实际上就是一个经验风险或者结构风险函数的最优化问题。风险函数度量平均意义下模型预测的好坏,模型每一次预测的好坏用损失函数来度量。它从假设空间F中选择模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数来度量预测错误的程度。损失函数记为L(Y, f(X))。 常用的损失函数有以下几种(基本引用自《统计学习方法》): 如此,SVM有第二种理解,即最优化+损失最小,或如@夏粉_百度所说“可从损失函数和优化算法角度看SVM,boosting,LR等算法,可能会有不同收获”。 OK,关于更多统计学习方法的问题,请参看 此文 。 关于损失函数,如下文读者评论中所述:可以看看张潼的这篇《Statistical behavior and consistency of classification methods based on convex risk minimization》。各种算法中常用的损失函数基本都具有fisher一致性,优化这些损失函数得到的分类器可以看作是后验概率的“代理”。此外,张潼还有另外一篇论文《Statistical analysis of some multi-category large margin classification methods》,在多分类情况下margin loss的分析,这两篇对Boosting和SVM使用的损失函数分析的很透彻。 3.4 、最小二乘法 3.4.1、什么是最小二乘法? 既然本节开始之前提到了最小二乘法,那么下面引用《正态分布的前世今生》里的内容稍微简单阐述下。 我们口头中经常说:一般来说,平均来说。如平均来说,不吸烟的健康优于吸烟者,之所以要加“平均”二字,是因为凡事皆有例外,总存在某个特别的人他吸烟但由于经常锻炼所以他的健康状况可能会优于他身边不吸烟的朋友。而最小二乘法的一个最简单的例子便是算术平均。 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。用函数表示为: 使误差「 所谓误差,当然是观察值与实际真实值的差量 」平方和达到最小以寻求估计值的方法,就叫做最小二乘法,用最小二乘法得到的估计,叫做最小二乘估计。当然,取平方和作为目标函数只是众多可取的方法之一。 最小二乘法的一般形式可表示为: 有效的最小二乘法是勒让德在 1805 年发表的,基本思想就是认为测量中有误差,所以所有方程的累积误差为 我们求解出导致累积误差最小的参数即可: 勒让德在论文中对最小二乘法的优良性做了几点说明: 最小二乘使得误差平方和最小,并在各个方程的误差之间建立了一种平衡,从而防止某一个极端误差取得支配地位 计算中只要求偏导后求解线性方程组,计算过程明确便捷 最小二乘可以导出算术平均值作为估计值 对于最后一点,从统计学的角度来看是很重要的一个性质。推理如下:假设真值为 θ , x 1 , ⋯ , x n 为n次测量值, 每次测量的误差为 e i = x i − θ ,按最小二乘法,误差累积为 求解 使 达到最小,正好是算术平均 。 由于算术平均是一个历经考验的方法,而以上的推理说明,算术平均是最小二乘的一个特例,所以从另一个角度说明了最小二乘方法的优良性,使我们对最小二乘法更加有信心。 最小二乘法发表之后很快得到了大家的认可接受,并迅速的在数据分析实践中被广泛使用。不过历史上又有人把最小二乘法的发明归功于高斯,这又是怎么一回事呢。高斯在1809年也发表了最小二乘法,并且声称自己已经使用这个方法多年。高斯发明了小行星定位的数学方法,并在数据分析中使用最小二乘方法进行计算,准确的预测了谷神星的位置。 说了这么多,貌似跟本文的主题SVM没啥关系呀,别急,请让我继续阐述。本质上说,最小二乘法即是一种参数估计方法,说到参数估计,咱们得从一元线性模型说起。 3.4.2、最小二乘法的解法 什么是一元线性模型呢? 请允许我引用 这 里 的内容,先来梳理下几个基本概念: 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。 回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。 如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。 对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面... 对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择: 用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。 用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。 最小二乘法的原则是以“残差平方和最小”确定直线位置。 用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。  最常用的是普通最小二乘法( Ordinary Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小,即采用平方损失函数。   我们定义样本回归模型为: 其中ei为样本(Xi, Yi)的误差。 接着,定义平方损失函数Q: 则通过Q最小确定这条直线,即确定 ,以 为变量,把它们看作是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。 求Q对两个待估参数的偏导数: 根据数学知识我们知道,函数的极值点为偏导为0的点。 解得: 这就是最小二乘法的解法,就是求得平方损失函数的极值点。自此,你看到求解最小二乘法与求解SVM问题何等相似,尤其是定义损失函数,而后通过偏导求得极值。 OK,更多请参看陈希孺院士的《数理统计学简史》的第4章、最小二乘法。 3.5 、SMO算法 在上文中,我们提到了求解对偶问题的序列最小最优化SMO算法,但并未提到其具体解法。首先看下最后悬而未决的问题: 等价于求解: 1998年,Microsoft Research的John C. Platt在 论文 《Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines》中提出针对上述问题的解法:SMO算法,它很快便成为最快的二次规划优化算法,特别是在针对线性SVM和数据稀疏时性能更优。 接下来,咱们便参考John C. Platt的 这篇 文章来看看SMO的解法是怎样的。 3.5.1、SMO算法的推导 咱们首先来定义特征到结果的输出函数: 注:这个u与我们之前定义的 实质是一样的。 接着,重新定义下咱们原始的优化问题,权当重新回顾,如下: 求导得到: 代入 中,可得 。 通过引入拉格朗日乘子转换为对偶问题后,得: s.t: 且 注:这里得到的min函数与我们之前的max函数实质也是一样,因为把符号变下,即由min转化为max的问题,且yi也与之前的 等价,yj亦如此。 经过加入松弛变量后,模型修改为: 从而最终我们的问题变为: 下面要解决的问题是:在 上求上述目标函数的最小值。为了求解这些乘子,每次从中任意抽取两个乘子 和 ,然后固定 和 以外的其它乘子 ,使得目标函数只是关于 和 的函数。这样,不断的从一堆乘子中任意抽取两个求解,不断的迭代求解子问题,最终达到求解原问题的目的。 而原对偶问题的子问题的目标函数可以表达为: 其中 为了解决这个子问题,首要问题便是每次如何选取 和 。实际上,其中一个乘子是违法KKT条件最严重的,另外一个乘子则由另一个约束条件选取。 根据KKT条件可以得出目标函数中 取值的意义: 这里的 还是拉格朗日乘子: 对于第1种情况,表明 是正常分类,在间隔边界内部(我们知道正确分类的点 ); 对于第2种情况,表明了 是支持向量,在间隔边界上; 对于第3种情况,表明了 是在两条间隔边界之间; 而最优解需要满足KKT条件,即上述3个条件都得满足,以下几种情况出现将会出现不满足: =1但是 C则是不满足的,而原本 =C =1但是 0则是不满足的,而原本 =0 =1但是 =0或者 =C则表明不满足的,而原本应该是0 C 也就是说,如果存在不满足KKT条件的 ,那么需要更新这些 ,这是第一个约束条件。此外,更新的同时还要受到第二个约束条件的限制,即。 因此,如果假设选择的两个乘子 和 ,它们在更新之前分别是 、 ,更新之后分别是 、 ,那么更新前后的值需要满足以下等式才能保证和为0的约束: 其中, 是常数。 两个因子不好同时求解,所以可先求第二个乘子 的解( ),得到 的解( )之后,再用 的解( )表示 的解( )。 为了求解 ,得先确定 的取值范围。假设它的上下边界分别为H 和 L ,那么有: 接下来,综合 和 这两个约束条件,求取 的取值范围。 当 y1 != y2 时,根据 可得 ,所以有 , ,如下图 所示: 当y1 = y2时,同样根据 可得: ,所以有 , ,如下图 所示: 如此,根据y1和y2异号或同号,可得出 的上下界分别为: 回顾下第二个约束条件 ,令上式两边乘以y1,可得 其中, 。 因此 可以用 表示, ,从而把子问题的目标函数转换为只含 的问题: 对 求导,可得 化简下: 然后将 、 、和 代入上式可得: 令 (表示预测值与真实值之差), ,然后上式两边同时除以 ,得到一个关于单变量 的解: 这个解没有考虑其约束条件 ,即是未经剪辑时的解。 然后考虑约束 可得到经过剪辑后的 的解析解为: 求出了后 ,便可以求出 ,得 。 那么如何选择乘子 和 呢? 对于 ,即第一个乘子,可以通过刚刚说的那3种不满足KKT的条件来找; 而对于第二个乘子 可以寻找满足条件 : 的乘子。 而b在满足下述条件: 下更新b: 且每次更新完两个乘子的优化后,都需要再重新计算b,及对应的Ei值。 最后更新所有 ,y和b,这样模型就出来了,从而即可求出咱们开头提出的分类函数: 此外, 这里 也有一篇类似的文章,大家可以参考下。 3.5.2、SMO算法的步骤 综上,总结下SMO的主要步骤,如下: 意思是, 第一步选取一对 和 ,选取方法使用启发式方法; 第二步,固定除 和 之外的其他参数,确定W极值条件下的 , 由 表示。 假定在某一次迭代中,需要更新 , 对应的拉格朗日乘子 , ,那么这个小规模的二次规划问题写为: 那么在每次迭代中,如何更新乘子呢?引用 这里 的两张PPT说明下: 知道了如何更新乘子,那么选取哪些乘子进行更新呢?具体选择方法有以下两个步骤: 步骤1:先“扫描”所有乘子,把第一个违反KKT条件的作为更新对象,令为a1; 步骤2:在所有不违反KKT条件的乘子中,选择使|E1 −E2|最大的a2进行更新,使得能最大限度增大目标函数的值(类似于梯度下降. 此外 ,而 ,求出来的E代表函数ui对输入xi的预测值与真实输出类标记yi之差)。 最后,每次更新完两个乘子的优化后,都需要再重新计算b,及对应的Ei值。 综上,SMO算法的基本思想是将Vapnik在1982年提出的Chunking方法推到极致, SMO算法每次迭代只选出两个分量ai和aj进行调整,其它分量则保持固定不变,在得到解ai和aj之后,再用ai和aj改进其它分量。与通常的分解算法比较,尽管它可能需要更多的迭代次数,但每次迭代的计算量比较小,所以该算法表现出较好的快速收敛性,且不需要存储核矩阵,也没有矩阵运算。 3.5.3、SMO算法的实现 行文至此,我相信,SVM理解到了一定程度后,是的确能在脑海里从头至尾推导出相关公式的,最初分类函数,最大化分类间隔,max1/||w||,min1/2||w||^2,凸二次规划,拉格朗日函数,转化为对偶问题,SMO算法,都为寻找一个最优解,一个最优分类平面。一步步梳理下来,为什么这样那样,太多东西可以追究,最后实现。如下图所示: 至于下文中将阐述的核函数则为是为了更好的处理非线性可分的情况,而松弛变量则是为了纠正或约束少量“不安分”或脱离集体不好归类的因子。 台湾的林智仁教授写了一个封装SVM算法的 libsvm库 ,大家可以看看,此外 这里 还有一份libsvm的注释文档 。 除了在这篇论文《fast training of support vector machines using sequential minimal optimization》中platt给出了SMO算法的逻辑代码之外, 这里 也有一份SMO的实现代码,大家可以看下。 3.6 、SVM 的应用 或许我们已经听到过,SVM在很多诸如文本分类,图像分类,生物序列分析和生物数据挖掘,手写字符识别等领域有很多的应用,但或许你并没强烈的意识到,SVM可以成功应用的领域远远超出现在已经在开发应用了的领域。 3.6.1、文本分类 一个文本分类系统不仅是一个自然语言处理系统,也是一个典型的模式识别系统,系统的输入是需要进行分类处理的文本,系统的输出则是与文本关联的类别。由于篇幅所限,其它更具体内容本文将不再详述。 OK,本节虽取标题为证明SVM,但聪明的读者们想必早已看出,其实本部分并无多少证明部分(特此致歉),怎么办呢?可以参阅《支持向量机导论》一书,此书精简而有趣。本节完。 读者评论 本文发表后, 微博 上的很多朋友给了不少意见,以下是节选的一些精彩评论: “压力”陡增的评论→//@藏了个锋:我是看着July大神的博文长大的啊//@zlkysl:就是看了最后那一篇才决定自己的研究方向为SVM的。-- http://weibo.com/1580904460/zraWk0u6u?mod=weibotime 。 @张金辉: “ SVM的三重境界,不得不转的一篇。其实Coursera的课堂上Andrew Ng讲过支持向量机,但显然他没有把这作为重点,加上Ng讲支持向量机的方法我一时半会难以完全消化,所以听的也是一知半解。真正开始了解支持向量机就是看的这篇“三重境界”,之后才对这个算法有了大概的概念,以至如何去使用,再到其中的原理为何,再到支持向量机的证明等。总之, 这篇文章开启了我长达数月的研究支持向量机阶段,直到今日 。 ” -- http://zhan.renren.com/profile/249335584?from=template#!//tag/三重境界 。 @孤独之守望者:最后,推出svm的cost function 是hinge loss,然后对比其他的方法的cost function,说明其实他们的目标函数很像,那么问题是svm为什么这么popular呢?您可以再加些VC dimension跟一些error bound的数学,点一下,提供一个思路和方向。-- http://weibo.com/1580904460/AiohoyDwq?mod=weibotime 。 @夏粉_百度: “ 在面试时,考察SVM可考察机器学习各方面能力:目标函数,优化过程,并行方法,算法收敛性,样本复杂度,适用场景,调参经验,不过个人认为考察boosting和LR也还不错啊。此外,随着统计机器学习不断进步,SVM只被当成使用了一个替代01损失hinge研究,更通用的方法被提出,损失函数研究替代损失与贝叶斯损失关系,算法稳定性研究替代损失与推广性能关系,凸优化研究如何求解凸目标函数,SVM,boosting等算法只是这些通用方法的一个具体组建而已。 ” @居里猴姐:关于SVM损失函数的问题,可以看看张潼老师的这篇《Statistical behavior and consistency of classification methods based on convex risk minimization》。各种算法中常用的损失函数基本都具有fisher一致性,优化这些损失函数得到的分类器可以看作是后验概率的“代理”。此外,张潼老师还有另外一篇论文《Statistical analysis of some multi-category large margin classification methods》,在多分类情况下margin loss的分析,这两篇对Boosting和SVM使用的损失函数分析的很透彻。 @夏粉_百度:SVM用了hinge损失,hinge损失不可导,不如其它替代损失方便优化并且转换概率麻烦。核函数也不太用,现在是大数据时代,样本非常大,无法想象一个n^2的核矩阵如何存储和计算。 而且,现在现在非线性一般靠深度学习了。//@Copper_PKU:请教svm在工业界的应用典型的有哪些?工业界如何选取核函数,经验的方法?svm的训练过程如何优化? @Copper_PKU:July的svm tutorial 我个人觉得还可以加入和修改如下部分:(1) 对于支持向量解释,可以结合图和拉格朗日参数来表达,松弛中sv没有写出来. (2) SMO算法部分,加入Joachims论文中提到的算法,以及SMO算法选取workset的方法,包括SMO算法的收敛判断,还有之前共轭梯度求解方法,虽然是较早的算法,但是对于理解SMO算法有很好的效果。模型的优化和求解都是迭代的过程,加入历史算法增强立体感。-- http://weibo.com/1580904460/Akw6dl3Yk#_rnd1385474436177 。 //@廖临川: 之所以sgd对大训练集的效果更好,1.因为SGD优化每次迭代使用样本子集,比使用训练全集(尤其是百万数量级)要快得多;2.如果目标函数是凸的或者伪凸的,SGD几乎必然可以收敛到全局最优;否则,则收敛到局部最优;3.SGD一般不需要收敛到全局最优,只要得到足够好的解,就可以立即停止。//@Copper_PKU:sgd的核心思想:是迭代训练,每拿到一个样本就算出基于当前w(t) 的loss function,t代表训练第t次,然后进行下一w(t+1)的更新,w(t+1)=w(t)-(learning rate) * loss function的梯度,这个类比神经网络中bp中的参数训练方法。 sample by sample就是每次仅处理一个样本 而不是一个batch。 //@Copper_PKU:从损失函数角度说:primal问题可以理解为正则化项+lossfunction,求解目标是在两个中间取平衡 如果强调loss function最小则会overfitting,所以有C参数。 //@研究者July:SVM还真就是在一定限定条件下,即约束条件下求目标函数的最优值问题,同时,为减少误判率,尽量让损失最小。 ... 非常享受这种全民大讨论的年代,没有谁一定就对或一定就错,而是各自发表各自的理解见解,真棒! 参考文献及推荐阅读 《 支持向量机导论 》, Nello Cristianini / John Shawe-Taylor 著 ; 支持向量机导论一书的支持网站: http://www.support-vector.net/ ; 《数据挖掘导论》, Pang-Ning Tan / Michael Steinbach / Vipin Kumar 著 ; 《数据挖掘:概念与技术》,(加)Jiawei Han;Micheline Kamber 著; 《数据挖掘中的新方法:支持向量机》,邓乃扬 田英杰 著; 《 支持向量机--理论、算法和扩展 》,邓乃扬 田英杰 著; 支持向量机系列 , pluskid : http://blog.pluskid.org/?page_id=683 ; http://www.360doc.com/content/07/0716/23/11966_615252.shtml ; 数据挖掘十大经典算法初探 ; 《模式识别支持向量机指南》,C.J.C Burges 著; 《 统计学习方法 》,李航著; 《统计自然语言处理》,宗成庆编著,第十二章、文本分类; SVM入门系列,Jasper: http://www.blogjava.net/zhenandaci/category/31868.html ; 最近邻决策和SVM数字识别的实现和比较,作者不详; 斯坦福大学机器学习课程原始讲义: http://www.cnblogs.com/jerrylead/archive/2012/05/08/2489725.html ; 斯坦福机器学习课程笔记 : http://www.cnblogs.com/jerrylead/tag/Machine%20Learning/ ; http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982639.html ; SMO算法的数学推导: http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html ; 数据挖掘掘中所需的概率论与数理统计知识 、上 ; 关于机器学习方面的文章,可以读读: http://www.cnblogs.com/vivounicorn/category/289453.html ; 数学系教材推荐: http://blog.sina.com.cn/s/blog_5e638d950100dswh.html ; 《神经网络与机器学习(原书第三版)》, Simon Haykin 著; 正态分布的前世今生: http://t.cn/zlH3Ygc ; 《 数理统计学简史 》,陈希孺院士著; 《最优化理论与算法(第2版)》,陈宝林编著; A Gentle Introduction to Support Vector Machines in Biomedicine : http://www.nyuinformatics.org/downloads/supplements/SVM_Tutorial_2010/Final_WB.pdf ,此PPT很赞,除了对引入拉格朗日对偶变量后的凸二次规划问题的深入度不够之外,其它都挺好,配图很精彩,本文有几张图便引自此PPT中; 来自卡内基梅隆大学carnegie mellon university(CMU)的讲解SVM的PPT: http://www.autonlab.org/tutorials/svm15.pdf ; 发明libsvm的台湾林智仁教授06年的机器学习讲义SVM: http://wenku.baidu.com/link?url=PWTGMYNb4HGUrUQUZwTH2B4r8pIMgLMiWIK1ymVORrds_11VOkHwp-JWab7IALDiors64JW_6mD93dtuWHwFWxsAk6p0rzchR8Qh5_4jWHC ; http://staff.ustc.edu.cn/~ketang/PPT/PRLec5.pdf ; Introduction to Support Vector Machines (SVM),By Debprakash Patnai M.E (SSA), https://www.google.com.hk/url?sa=trct=jq=esrc=ssource=webcd=1ved=0CCwQFjAAurl=http%3a%2f%2fwww%2epws%2estu%2eedu%2etw%2fccfang%2findex%2efiles%2fAI%2fAI%26ML-Support%2520Vector%2520Machine-1%2epptei=JRR6UqT5C-iyiQfWyIDgCgusg=AFQjCNGw1fTbpH4ltQjjmx1d25ZqbCN9nA ; 多人推荐过的 libsvm : http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ; 《machine learning in action》,中文版为《机器学习实战》; SMO算法的提出:Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines : http://research.microsoft.com/en-us/um/people/jplatt/smoTR.pdf ; 《统计学习理论的本质》, Vladimir N. Vapnik著,非常晦涩,不做过多推荐; 张兆翔,机器学习第五讲之支持向量机 http://irip.buaa.edu.cn/~zxzhang/courses/MachineLearning/5.pdf ; VC维的理论解释: http://www.svms.org/vc-dimension/ ,中文VC维解释 http://xiaoxia001.iteye.com/blog/1163338 ; 来自NEC Labs America的Jason Weston关于SVM的讲义 http://www.cs.columbia.edu/~kathy/cs4701/documents/jason_svm_tutorial.pdf ; 来自MIT的SVM讲义: http://www.mit.edu/~9.520/spring11/slides/class06-svm.pdf ; PAC问题: http://www.cs.huji.ac.il/~shashua/papers/class11-PAC2.pdf ; 百度张潼老师的两篇论文 :《Statistical behavior and consistency of classification methods based on convex risk minimization》 http://home.olemiss.edu/~xdang/676/Consistency_of_Classification_Convex_Risk_Minimization.pdf ,《Statistical analysis of some multi-category large margin classification methods》; http://jacoxu.com/?p=39 ; 《矩阵分析与应用》,清华张贤达著; SMO算法的实现: http://blog.csdn.net/techq/article/details/6171688 ; 常见面试之机器学习算法思想简单梳理: http://www.cnblogs.com/tornadomeet/p/3395593.html ; 矩阵的wikipedia页面: http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%98%B5 ; 最小二乘法及其实现: http://blog.csdn.net/qll125596718/article/details/8248249 ; 统计学习方法概论: http://blog.csdn.net/qll125596718/article/details/8351337 ; http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine ; A Tutorial on Support Vector Regression: http://alex.smola.org/papers/2003/SmoSch03b.pdf ;SVR简明版: http://www.cmlab.csie.ntu.edu.tw/~cyy/learning/tutorials/SVR.pdf 。 SVM Org : http://www.support-vector-machines.org/ ; R. Collobert. Large Scale Machine Learning. Université Paris VI phd thesis. 2004 : http://ronan.collobert.com/pub/matos/2004_phdthesis_lip6.pdf ; Making Large-Scale SVM Learning Practical : http://www.cs.cornell.edu/people/tj/publications/joachims_99a.pdf ; 文本分类与SVM: http://blog.csdn.net/zhzhl202/article/details/8197109 ; Working Set Selection Using Second Order Information for Training Support Vector Machines : http://www.csie.ntu.edu.tw/~cjlin/papers/quadworkset.pdf ; SVM Optimization: Inverse Dependence on Training Set Size : http://icml2008.cs.helsinki.fi/papers/266.pdf ; Large-Scale Support Vector Machines: Algorithms and Theory: http://cseweb.ucsd.edu/~akmenon/ResearchExam.pdf ; 凸优化的概念: http://cs229.stanford.edu/section/cs229-cvxopt.pdf ; 《凸优化》,作者: Stephen Boyd / Lieven Vandenberghe,原作名: Convex Optimization; Large-scale Non-linear Classification: Algorithms and Evaluations,Zhuang Wang,讲了很多SVM算法的新进展: http://ijcai13.org/files/tutorial_slides/te2.pdf ; 基于SMO算法实现SVM: http://www.cs.iastate.edu/~honavar/smo-svm.pdf ; copper推荐的一些SVM相关的论文(当然,其中不少论文在上面的条目中都已经提到): http://c.blog.sina.com.cn/profile.php?blogid=68d0b92d89000h35 ; 在线编辑Latex 公式: http://www.codecogs.com/latex/eqneditor.php?lang=zh-cn 。 后记 OK,此文从最初2012年5月开始动笔,到后续不断的修改,创造了三个之最,即所写时间最长,所花心血最大,所改次数最多,因为我的目标是让没有任何机器学习基础的都能看懂此文,所以总是不停的改,不停的改,不想放过任何一个小的细节。再者,引用侯捷的一句话是:天下大作,必作于细。 最后,非常感谢pluskid及诸多朋友们的文章及著作,让我有机会在其基础上总结、深入。有任何问题,敬请广大读者随时不吝批评指正,感谢。
5743 次阅读|1 个评论
[转载]Google研究总监Peter Norvig:人工智能的另一面
王飞跃 2016-6-24 11:27
Google研究总监Peter Norvig:人工智能的另一面 Peter Norvig 是誉满全球的人工智能专家, Google 研究总监( Director of Research ),他同时也是经典书籍《人工智能编程范式: Common Lisp 案例研究》( Paradigms of AI Programming: Case Studies inCommon Lisp )和《人工智能:一种现代方法》( Artificial Intelligence: A Modern Approach )的作者 / 合著者。在本文中,我们将看到 Peter Norvig 对人工智能目前进展和未来发展的思考,对人工智能技术在 Google 应用的解读,以及对最新软件工程师在人工智能时代的成长的观点。 Peter Norvig 眼中的人工智能 问:人工智能领域在哪些方面发生了您未曾预料的演变? Peter Norvig : 在 1980 年我开始从事人工智能研究时人工智能意味着:一位研究生用说明性语言写下事实,然后拨弄这些事实和推理机制,直到从精心挑选的样本上得到不错的结果,然后写一篇关于它的论文。 虽然我接受并遵循这种工作模式,在我获得博士学位的过程中,我发现了这种方法的三个问题: 写下事实太慢了。 我们没有处理异常情况或模糊状态的良好方法。 这个过程不科学 —— 即使在选定的样本上它能工作,但是在其他样本上工作效果会如何呢? 整个领域的演变回答了这三个问题: 我们依靠机器学习,而不是研究生付出的辛苦努力。 我们使用概率推理,而不是布尔逻辑。 我们希望使用科学严格的方式;我们有训练数据和测试数据的概念,而且我们也有比较不同系统处理标准问题所得到的结果。 1950 年,阿兰图灵写道: “ 我们只能看到未来很短的一段距离,但是我们很清楚还有什么需要完成。 ” 自从 1950 年,我们已经得到许多发展并实现了许多目标,但图灵的话仍然成立。 问:对于机器学习研究,工业界与学术界有何不同呢? Peter Norvig : 我认为,在教育机构、商业机构还是政府机构并不是很重要 —— 我曾经在这三种机构都学到很多东西。 我建议你在有着一群出色同事和有趣问题的环境下工作。可以是工业界、学术界、政府或者非营利企业,甚至开源社区。在这些领域里,工业界往往有更多的资源(人、计算能力和数据),但如今有很多公开可用的数据供你使用,一个小团队,一台笔记本电脑,或者一个小而廉价的 GPU 集群,或者在云计算服务上租赁或捐献时间。 问:您对深度学习有什么看法? Peter Norvig : 我清楚地记得 80 年代初的那一天, Geoff Hinton 来到伯克利进行了关于玻尔兹曼机的讲座。对我来说,这是个了不起的视角 —— 他不赞同符号主义人工智能很强大很有用,而我了解到了一种机制,有三件令人兴奋的新(对我而言)事情:根据大脑模型得出的认知合理性;从经验而不是手工编码中学习的模型;还有表示是连续的,而不是布尔值,因此可以避免传统符号专家系统的一些脆弱问题。 事实证明,玻尔兹曼机在那个时代并没有广泛普及,相反, Hinton 、 LeCun 、 Bengio 、 Olshausen 、 Osindero 、 Sutskever 、 Courville 、 Ng 以及其他人设计的架构得到很好的普及。是什么造成了这种不同呢?是一次一层的训练技术吗?是 ReLU 激活函数?是需要更多的数据?还是使用 GPU 集群可以更快地训练?我不敢肯定,我希望持续的分析可以给我们带来更好的了解。但我可以说,在语音识别、计算机视觉识别物体、围棋和其他领域,这一差距是巨大的:使用深度学习可以降低错误率,这两个领域在过去几年都发生了彻底变化:基本上所有的团队都选择了深度学习,因为它管用。 许多问题依然存在。在计算机视觉里,我们好奇深度网络实际上在做什么:我们可以在一个级别上确定线条识别器,在更高层次确定眼睛和鼻子识别器,然后就是脸部识别器,最终就是整个人的识别器。但在其他领域,一直很难了解网络在做什么。是因为我们没有正确的分析和可视化工具吗?还是因为实际上表示不一致? 在有许多数据的时候,深度学习在各种应用中表现不错,但对于一次性或零次学习,需要将一个领域的知识转移并适应到当前领域又如何呢?深度网络形成了什么样的抽象,我们可以如何解释这些抽象并结合它们?网络会被对抗性输入愚弄;我们如何预防这些,它们代表了根本缺陷还是不相干的把戏? 我们如何处理一个领域中的结构?我们有循环网络( Recurrent Networks )来处理时间,递归网络( Recrsive Networks )来处理嵌套结构,但这些是否已经足够,现在讨论还为时过早。 我对深度学习感到兴奋,因为很多长期存在的领域也是如此。而且我有兴趣了解更多,因为还有许多剩余问题,而且这些问题的答案不仅会告诉我们更多关于深度学习的东西,还可以帮助我们大体理解学习、推理和表示。 问:在深度学习最近取得的成就之后,符号主义人工智能是否还有意义? Peter Norvig : 是的。我们围绕着符号主义人工智能开发了许多强大的原理:逻辑预测、约束满足问题、规划问题、自然语言处理,乃至概率预测。因为这些算法的出色表现,我们处理问题的能力比原来提升了几个数量级。放弃这一切是件可耻的事。我认为其中一个有意识的研究方向是回过头看每一种方法,探索非原子式符号被原子式符号取代的这个过程究竟发生了什么,诸如 Word2Vec 产生的 Word Embedding 之类的原理。 下面是一些例子。假设你有这些逻辑 “ 事实 ” : 1. 人会说话; 2. 除人以外的动物不会说话; 3. 卡通人物角色会说话; 4. 鱼会游泳; 5. 鱼是除人以外的动物; 6. Nemo 是一个卡通人物; 7. Nemo 是一条鱼; 8. 那么我们要问了: 9. Nemo 会说话吗? 10. Nemo 会游泳吗? 用逻辑来表述和解释这个场景的时候遇到了两个大问题。首先,这些事实都有例外,但是用逻辑很难穷举这些例外情况,而且当你逻辑出错的时候预测就会出问题了。其次,在相互矛盾的情况下则逻辑无能为力,就像这里的 Nemo 既会说话又不会说话。也许我们可以用 Word Embedding 技术来解决这些问题。我们还需要 Modus Ponens Embedding (分离规则,一种数学演绎推理规则)吗?不学习 “ 如果 A 且 A 暗示 B ,则 B” 这样一种抽象的规则,我们是否可以学习何时应用这种规则是恰当的?我觉得这是一个重要的研究领域。 再说一点:许多所谓的符号主意人工智能技术实际上还是优秀的计算机科学算法。举个例子,搜索算法,无论 A* 或是蚁群优化,或是其它任何东西,都是一种关键的算法,永远都会非常有用。即使是基于深度学习的 AlphaGo ,也包含了搜索模块。 问:我们哪儿做错了?为什么 Common Lisp 不能治愈世界? Peter Norvig : 我认为 Common Lisp 的思想确实能治愈这个世界。如果你回到 1981 年, Lisp 被视作是另类,因为它所具有的下面这些特性还不被 C 语言程序员所知: 1. 垃圾回收机制; 2. 丰富的容器类型及相应的操作; 3. 强大的对象系统,伴随着各种继承和原生函数; 4. 定义测试例子的亚语言( sublanguage )(并不属于官方版本的一部分,但我自己配置了一套); 5. 有交互式的读入 - 运算 - 打印循环; 6. 敏捷的、增量式的开发模式,而不是一步到位的模式; 7. 运行时对象和函数的自省; 8. 能自定义领域特定语言的宏。 如今,除了宏之外的所有这些特性都在主流编程语言里非常常见。所以说它的思想取胜了,而 Common Lisp 的实现却没有 —— 也许是因为 CL 还遗留了不少 1958 年编程语言的陋习;也许只是因为一些人不喜欢用大括号。 至于说宏,我也希望它能流行起来,但当用到宏的时候,你成为了一名语言设计者,而许多开发团队喜欢保持底层语言的稳定性,尤其是那些大团队。我想最好有一套使用宏的实用指南,而不是把它们全部抛弃(或是在 C 语言里严格限制的宏)。 问:在未来 10 年里,有没有哪些情况下软件工程师不需要学习人工智能或机器学习的,还是每个人都需要学习? Peter Norvig : 机器学习将会是(或许已经是)软件工程的一个重要部分,每个人都必须知道它的运用场景。但就像数据库管理员或用户界面设计一样,并不意味着每个工程师都必须成为机器学习专家 —— 和这个领域的专家共事也是可以的。但是你知道的机器学习知识越多,在构建解决方案方面的能力就越好。 我也认为机器学习专家和软件工程师聚在一起进行机器学习系统软件开发最佳实践将会很重要。目前我们有一套软件测试体制,你可以定义单元测试并在其中调用方法,比如 assertTrue 或者 assertEquals 。我们还需要新的测试过程,包括运行试验、分析结果、对比今天和历史结果来查看偏移、决定这种偏移是随机变化还是数据不平稳等。这是一个伟大的领域,软件工程师和机器学习人员一同协作,创建新的、更好的东西。 问:我想从软件工程师转行成为人工智能研究员,应该如何训练自己呢? Peter Norvig : 我认为这不是转行,而是一种技能上的提升。人工智能的关键点在于搭建系统,这正是你手头上的工作。所以你在处理系统复杂性和选择合适的抽象关系方面都有经验,参与过完整的设计、开发和测试流程;这些对于 AI 研究员和软件工程师来说都是基本要求。有句老话这样说,当一项人工智能技术成功之后,它就不再属于人工智能,而是成为了软件工程的一部分。人工智能工作者抱怨上述观点的意思就是他们的工作永远离成功有一步之遥,但你可以认为这表明你只是需要在已知的基础上再添加一些新概念和新技术。 人工智能在 Google 问: Google“ 没有更好的算法,只是多了点数据而已 ” 这种说法是真的吗? Peter Norvig : 我曾引用微软研究院 Michele Banko 和 Eric Brill 发表的一篇关于分析词性辨析算法的论文,他们发现增加训练数据得到的效果提升比更换算法更明显。我说过有些问题确实如此,而另一些问题则不见得。你可以认为这篇论文是 “ 大数据 ” 的功劳,但要注意,在这个领域十亿个单词规模的训练数据集就能看出效果 —— 在笔记本电脑的处理范围内 —— 还不到数据中心的量级。所以,如果你用不了数据中心,不必担心 —— 你拥有的计算资源和数据量几乎完胜任何一个上一代的人,你可以有更多的新发现。 所以没错,大量与任务相契合的高质量数据必然会有帮助。然而真正有挑战的工作在于发明新学习系统的研究和让其真正落实到产品中的工程实现。这个工作正是大多数机器学习成功案例的驱动力。正如 Pat Winston 所说: “ 人工智能就像葡萄干面包里的葡萄干,葡萄干面包的主要成分还是面包,人工智能软件主体也是常规的软件工程和产品开发。 ” 问:成为一家 “AI-first” 公司对 Google 意味着什么? Peter Norvig : “ 传统 ” 的 Google 是一个信息检索公司:你提供一个查询,我们快速返回 10 个相关网页结果,然后你负责找到与查询词相关的返回结果。 “ 现代 ” 的 Google , CEO Sundar Pichai 设定了愿景,它不仅基于相关信息建议,还基于通知和助理。通知,意味着当你需要时,我们提供你需要的信息。例如, Google Now 告诉你该去赴约了,或者你目前在一家杂货店,之前你设定了提醒要买牛奶。助理意味着帮助你实施行动 —— 如规划行程、预定房间。你在互联网上可以做的任何事情, Google 都应该可以帮你实现。 对于信息检索, 80% 以上的召回率和准确率是非常不错的 —— 不需要所有建议都完美,因为用户可以忽略坏的建议。对于助理,门槛就高了许多,你不会使用 20% 甚至 2% 的情形下都预定错房间的服务。所以助理必须更加精准,从而要求更智能、更了解情况。这就是我们所说的 “AI-first” 。 Peter Nervig 在 Google 问:你的职业生涯如何起步? Peter Nervig : 我很幸运地进入了一所既有计算机编程又有语言课程的高中(在马萨诸塞州牛顿县)。这激发了我将两者结合起来学习的兴趣。在高中阶段无法实现这个想法,但是到了大学我主修应用数学专业,得以研究这方面(当时,我们学校并没有真正的计算机专业。我开始是主修数学,但很快发现自己并不擅长数学证明,反而在编程方面如鱼得水)。 大学毕业后,我当了两年的程序员,不过仍旧一直在思考这些想法,最后还是申请了研究生回来继续从事科研(我过了四年才厌倦大学生活,而两年就厌倦了工作状态,所以我觉得我对学校的热爱是对工作的两倍)。研究生阶段为我学术生涯打下了基础,而我却迷上了今天所谓的 “ 大数据 ” (当时还没有这种叫法),我意识到在工业界更容易获得所需要的资源,因此放弃了高校里的职位。我感到幸运的是每个阶段都有优秀的合作伙伴和新的挑战。 问:你在 Google 具体做什么? Peter Norvig : 在 Google 最棒的事情之一就是总有新鲜事;你不会陷入例行公事之中。在快节奏的世界中每周都是如此,当我角色改变之后,每年更是如此。我管理的人员从两人变成了两百人,这意味着我有时候能深入到所参与项目的技术细节中,有时候因为管理的团队太大,只能提一些高层次的笼统看法,并且我相信我的团队正在做的事情是正确的。在那些项目里,我扮演的角色更多的是沟通者和媒介 —— 试图解释公司的发展方向,一个项目具体如何展开,将项目团队介绍给合适的合作伙伴、制造商和消费者,让团队制定出如何实现目标的细节。我在 Google 不写代码,但是如果我有一个想法,我可以使用内部工具写代码进行实验,看看这个想法是否值得尝试。我同样会进行代码审查,这样我就可以了解团队生产的代码,而且这也必须有人去做。 还有很多的会议、邮件、文档要处理。与其他我工作过的公司相比, Google 的官僚主义更少,但有时候是不可避免的。我也会花一些时间参加会议、去大学演讲、与客户交流,以及参与 Quora 问答。 问:在加入 Google 之前,你曾担任美国宇航局( NASA )计算科学部门的主要负责人,在美国宇航局的工作与 Google 的工作有何不同?有哪些文化的差异? Peter Norvig : 美国宇航局与 Google 有很多共同之处:它们都有一群优秀敬业并且充满激情的员工,这些人相信它们的工作使命。而且两者都在推动各自技术的上限。因此,他们在特定项目中的文化往往是相似的。 同时也存在一些差异。美国宇航局的 Gene Kranz 曾说过一句名言: “ 失败不是种选择( Failure is not an option )。 ” 美国宇航局经常会有几亿美元的使命任务,任何一个错误都有可能毁灭一切。因此,需要极其小心。 Google 的项目范围往往更接近 Adam Savage 的想法(与 Jeff Dean 相互呼应) “ 失败自古至今就是一种选择( Failure is always an option ) ” 。 Google 相信,单台计算机可能会发生故障,而设计网络系统可以从故障中恢复。在 Google ,有时我们可以在用户看到错误之前进行恢复纠正,而有时当一个错误曝光后,我们可以在简短的时间内纠正它,同时向受到影响的用户致歉,而这在美国宇航局是很少见的。 一方面是因为失败的预期成本存在差异,另一方面是由于空间硬件的成本巨大(参见我在那做的东西),再者就是政府与私人机构的差异,基于这一优势, Google 更容易启动新项目,并在已有的项目中迅速推动新项目的进展。 问:你是如何权衡新功能的开发与旧功能的维护呢? Peter Norvig : 尽你所能将任务做得最好,并且不断改进,这样就会得到提高。 我曾一次次地发现:团队的新员工说 “ 我们为什么不使用 X ? ” ,一位老员工回答说: “ 我们三年前就试过了 X ,结果证明它并不管用 ” 。此时的难题是:你是否接受那位老前辈的回答?或者说,现在的情况已经改变了,是时候重新审视 X 了?也许我们有新的数据,或者新的技术,又或者新员工将采取不同的方法,或者说世界改变了, X 将会比以往工作得更好。我无法告诉你该问题的答案,你必须权衡所有证据,并与其他类似问题进行比较。 程序员提升之道 问:《人工智能:一种现代方法》还会有新的版本吗? Peter Norvig : 是的,我正在为此努力。但至少还需要一年的时间。 问:我是一名研究生,我的人工智能课程使用《人工智能:一种现代方法》作为参考教材,我如何才能为人工智能编程项目做贡献? Peter Norvig : 现在正是时候:我正在为《人工智能:一种现代方法》这本书的下一个版本的配套代码工作,在 https://github.com/aimacode 上,你可以找到 Java 、 Python 和 JavaScript 子项目,我们一直在寻找好的贡献者。除了提供书中所有算法的代码实现,我们还希望提供 tutorial 材料和练习。此外, GitHub 上也还有其他好的人工智能项目,都希望有铁杆贡献者。 问:有没有像可汗学院( Khan Academy )和 Udacity 一样的在线资源,可以让人们在不到 “ 十年 ” 就精通一门学科呢? Peter Norvig : 精通可能需要十年,或者是 10000 个小时,这种时间会因任务、个体以及训练方法的不同而有所差异。但真正的精通并非易事。可汗学院和 Udacity 主要是提供了技术培训,让你不断努力地学习直到你真正地掌握它。在传统的学校教学当中,如果你在考试中获得的成绩是 “C” ,你就不会再去花更多的时间去学习并掌握它,你会继而专注于下一个学科,因为班集里每个人都是这样做的。在线资源不是万能的,精通它需要加倍努力地学习,而学习需要动力,动力则可以通过人与人之间的联系逐步提升,这在网上是很难学到的。因此,在一个领域,走上正轨,我们需要在社交、动机方面做更多的工作,我们需要对个人需求有针对性地做更多的定制培训,同时我们还需要做更多使实践审慎和有效的工作。我认为,在线资源主要的最终结果不是缩短精通的时长,而是增加更多学生实现精通的机会。 问:如果请你再次教授《计算机程序设计》( Udacity )这门课程,会做哪些改变呢? Peter Norvig : 我认为这门课程很好,反馈(不管是数量还是质量)大多都是好的。就个人而言,我希望有更多的实例程序和技术。我想修正之前我们犯下的一些错误(主要是因为课程进展太快,没有太多的时间去测试所有的东西)。我希望系统能够更加互动:让学生获得更多的反馈信息,不仅仅是 “ 你的程序不正确 ” ,同时可以让学生看到下一件要做的事情,让他们知道到目前为止已经做了什么。我认为对于学生而言,正则表达式和语言这部分进展速度过快了;另外,我还想添加更多的材料,让学生加快学习速度,同时给他们更多的机会去实践新想法。 备注:本文经CSDN授权转载,特此说明。
个人分类: 行业观察|4557 次阅读|0 个评论
【科普小品:NLP 的锤子和斧头】
liwei999 2016-6-7 00:41
与老友又谈到了deep 还是 shallow NLP 的事儿。 老友说,你必须承认,工业界的 NLP 绝大多数成规模的应用都是 shallow NLP 在支撑的,背后的基础技术是学习(ML),如今是深度学习(DL) (规则派NLP一直也在不同的 产品中有见 ,但规模和影响力无法与学习比 ) 。 我说,我又不是瞎子,怎能不知道。 没用 deep,是因为学习那边20多年来一直都是局限在浅层,把NLP应用的浅层做到了极致,只是最近才开始试图规模化的深入的尝试(如 SyntaxNet),离具体运用还远。不是不想 deep,而是ML一直没能做到而已(斯坦福parser这类不是一直存在吗,但那基本是局限在教授实验室的东西,从来没有落地为应用)。而规则这边的传承,从一开始就是 deep 起家,不过是很多规则派不太懂得鲁棒和scale,所以也大多不能做 real life 大系统。 规则一派一度红火的 unification grammars 最后证明是理论上漂亮,实践中不给力,因为这些个 Gs 都基于 CFG 的机制(白老师 所谓“毛毛虫 ),决定了不仅速度不行,而且也难以应对错综复杂的层次纠缠。如今不同了,多层的深度NLP的路子蹚出来了,规则派解放了。结果并不是要取代工业界的学习或深度学习,也取代不了,这是全世界的潮流,但是作为补充,现在的工业界已经有足够的空间让规则派发挥了。说到底,最后总有人会明白两条腿走路比一条腿走要快很多,且不说还有合流的可能性,只要双方有诚意,采一种相互欣赏的心态,而不是宗教派别一样的对立心态。这种开放心态的可贵尤其在其中一个教派奉为“国教”的时候。 我们大多数人无论多天才,都难免偏见或狭窄,高明的人懂得这是人性所限,会有意识地注意到自己的局限,自大的人就假设对方不存在或不屑为伍。 我有一把锤子,世界就变成了我的钉子,这种视角无可厚非,甚至还帮助了我们把锤子发挥到极致。但世界上不是只有锤子,不管那把锤子被捧得多高,也可能还有、也需要斧头。世界也并非都是钉子,也可能是块木头,需要斧头去劈。 【相关】 【泥沙龙笔记:关于语法工程派与统计学习派的总结】 【新智元笔记:工程语法与深度神经】 《立委随笔:语言自动分析的两个路子》 钩沉:Early arguments for a hybrid model for NLP and IE 【白硕 - 穿越乔家大院寻找“毛毛虫”】 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|4525 次阅读|0 个评论
【泥沙龙笔记:关于语法工程派与统计学习派的总结】
liwei999 2016-6-3 08:29
再谈一哈语法工程派与统计学习派。 总结一下要点: 【1】 规则系统模拟人的语言理解,着重结构分析,深度上是关键词(ngram)系统无法达到的 【2】 规则系统以前多局限于实验室,做的是玩具,速度也不能 scale up,AI 的玩具如此,NLU 最常用的乔姆斯基的 CFG 为底的 parser 也是没有线速算法的。 【3】 我们做的是多层的有限状态为机制的深度分析,线速,已经多次 scale up 到大数据和社交媒体,真实世界的 apps 【4】 多层有限状态系统的关键是必须有经验的架构师才能玩转,没有多年的积累无法构建多层模块,协调好接口和通讯 【5】 深度句法分析是语言理解的核武器,是因为语言是由词汇和结构叠加而成,而统计派的NLP落地为产品迄今一直缺乏结构支持 【6】 任何 NLU 的产品,要想做得细致,必须有深度结构的支持;没有结构的关键词技术只能支持粗线条的NLP产品,靠的是分类聚类等统计算法。 【7】 一定要深度分析与当前正火的深度学习结合的话,深度分析的结构结果可以考虑作为新的 features 来帮助深度学习系统 【8】 深度句法分析离语义理解只有一步之遥 语义理解最终决定于应用(语用)层面的语义落地, 而从深度句法到语义落地,这一步可以很容易扩展,因为苦活脏活都在 deep parser 里面做掉了。 【9】 deep parser 是核武器,很繁难,但是是领域独立的,一旦做了,就可以支持各种应用。这样一来,语义落地模块面对的是逻辑化的句法结构,使得一条逻辑结构的语义规则等价于千百条(毫不夸张)语言表层规则的能量。 【10】 deep parser 的繁难和手工性在工业界不是缺点, 而是竞争优势,因为它把竞争对手抛在后面,提高了门槛。而 学习方法,不管怎样花样翻新,对手赶上来的机会和速度还是大多了。 譬如 语音识别的突破,首先是在一两个小组,譬如 Nuance 和 讯飞等, 但很快整个行业全面提升。因为方法是通用的 自动的 迟早会被赶上来。 规则系统的设计和实现则不然,因人而异。 何况过去20多年,规则一派严重的断层,学问的传承只有极少数幸存的人得道。 Nick: 对不同语言,parser需要改很多吗?是不是要很多修修补补的if then else? 我: 那是语言学家的工作,语言不同,词汇和文法当然不同。 但是 (1) 架构不变;(2) 有限状态FSA++机制和算法不变;(3)有血缘关系的语言之间的规则可以平移,稍加改造可用;(4)反映全世界的语言的共性(乔姆斯基的所谓 UG)的语言学算法,融合在 pipieline 的过程设计中,也是不变。 这样一来,多语开发虽然仍旧繁难,但比起从头只做一门语言,要省力很多。 【后记】 我: 这一阵子笔记爆炸,backlog 太长,根本就整理不过来。整多少算多少吧,至少不是白开水. 几乎赶超洪爷打油了。 到退休的时候,怎么也得整个桂冠NLP鼓吹手的称号啥的。 洪: 你的笔记是超越沈括的梦溪笔谈啊 我: 据说毛泽东思想是我党集体智慧的结晶。As long as 这个群和白老师群继续存在,立委NLP笔记也是二群集体智慧的结晶,在下就是主编而已。 Guo: 学朱德熙写语法问答吧。 我: 不是已经开办大学了吗? 等到桃李满天下了,看那个教授有我的学生多? 华人子弟学NLP的,很少有错过我的网上 NLP University 的吧?据说有些教授也在推荐。 【相关】 【新智元笔记:工程语法与深度神经】 【科普小品:NLP 的锤子和斧头】 【新智元笔记:两条路线上的NLP数据制导】 《立委随笔:语言自动分析的两个路子》 Comparison of Pros and Cons of Two NLP Approaches 【 why hybrid? on machine learning vs. hand-coded rules in NLP 】 Why Hybrid? 钩沉:Early arguments for a hybrid model for NLP and IE 【李白对话录:你波你的波,我粒我的粒】 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|5169 次阅读|0 个评论
智能哲学:人、机之间的“战争”与“学习”
热度 1 liuyu2205 2016-5-7 05:44
人工智能的进步一方面给人类带来了科技文明的新进步,另一方面促进了对人的智能更深刻的理解。我们一直认为只有基于对人的智能的深刻理解,才能清楚地区分人工智能与人的智能之间的复杂关系,而不能以人工智能的观点去定义人的智能,正像在算法理论中,不能以“多项式时间”(Polynomial time)的计算能力去定义“不确定性问题”(NP,Nondeterministic Problem)一样。 人工智能基本理论不仅牵涉到大量相关的应用技术科学,更深刻地与数学、逻辑学、哲学、中西比较文化等领域中基本理论问题相关联,我们与对此有兴趣的学者一样,希望把中国文化中最有价值的中国思想与前沿科学基本理论相联系,作些探索性的工作,。。。 我们的文章(智能哲学:人、机之间的“战争”与“学习”,http://www.aisixiang.com/data/99245-2.html),集中在讨论“机器学习”与“人的学习”的关系上。人、机的围棋对弈不等同于人、机之战,人的“学习”与机器的“学习”具有完全不同的性质和层次性。AlphaGo中基于人工神经网络ANN和“深度学习”等技术对围棋棋局的判断使算法有效搜索空间成为可能。一方面,AlphaGo确实是学习了弈棋高手的经验才胜过了人;但另一方面,更应该看到,人模仿了大脑神经系统制造了可以“学习”的机器,然后才是机器“学习”人的经验,这两方面才是对AlphaGo和“人工智能”的智能性的正确理解。 人、机之间最大的区别就在于人是天生的主体学习者,而机器则是在人造的“先天性”上才得到自己的“学习”能力。 ****** 智能哲学:人、机之间的“战争”与“学习” 周剑铭 柳渝 ( yu.li@u-picardie.fr )   摘要:人、机的围棋对弈不等同于人、机之战。人的“学习”与机器的“学习”具有完全不同的性质和层次性。AlphaGo中基于人工神经网络ANN和“深度学习”等技术对围棋棋局的判断使算法有效搜索空间成为可能。一方面,AlphaGo确实是学习了弈棋高手的经验才胜过了人;但另一方面,更应该看到,人模仿了大脑神经系统制造了可以“学习”的机器,然后才是机器“学习”人的经验,这两方面才是对AlphaGo和“人工智能”的智能性的正确理解。人、机之间最大的区别就在于人是天生的主体学习者,机器则是在人造的“先天性”上才得到自己的“学习”能力。   目录:   一、“一石激起千层浪”   二、“围棋之战”不等于“人、机之战”   三、“模仿”与“学习”   四、围棋的全局性与AlphaGo 一、 “一石激起千层浪” 3月12日,韩国著名围棋棋手李世石对战谷歌AlphaGo的人机围棋大战在韩国首尔举行,AlphaGo(谷歌首席程序员Aja Huang执子)与李世石对弈。在去年战胜了欧洲围棋冠军樊麾后,AlphaGo与九段高手李世石之间的对弈,成了科学技术领域和新闻界的重大事件。 阿尔法围棋(AlphaGo)是一款围棋人工智能机器,由位于英国伦敦的谷歌(Google)旗下DeepMind公司的戴维·西尔弗、艾佳·黄和戴密斯·哈萨比斯等团队开发。AlphaGo这次与李世石的比赛五盘三胜,胜者可获得奖金100万美元。此前李世石曾表示,自己看过AlphaGo的对局,也会做一些针对性的准备,认为机器人AlphaGo的棋力相当于三段棋手的水平。如果人工智能技术继续发展的话,再过一至两年,比赛的结果将很难预料,但AlphaGo表现出乎所有人意料。 在首尔四季宾馆,经过4个多小时的对弈,到第176手AlphaGo在围棋棋盘上落下了最后一“石”,曾获多项世界冠军的九段棋手李世石向谷歌AlphaGo认输,AlphaGo以3比0率先获胜,“石破天惊”,全球哗然!  科幻电影迷和“强人工智能”追求者把这次“人机大战”看成是人类社会“奇点来临”(Ray Kurzweil:“The Singularity Is Near”)的一个信号,既然机器的智能可以胜过人的智能,机器反过来控制人类和统治世界就是可能的,一些大科学家、企业家都对人工智能的强大远景感到忧虑,比如英国“独立报”网站(http://www.independent.co.uk/news/science/stephen-hawking-ai-could-be-the-end-of-humanity-9898320.html )就刊登有关资讯,引用霍金的话:人工智能将是人类的终结吗?像这些并非笑谈的认真思考与人工智能发展的新高峰形成了当前全世界关注的大浪潮;虽然有很多业内人士认为真正能达到人的智能的机器的出现在时间上仍很遥远,但这并不能抹去这种笼罩在人类头顶上的阴影。另一方面,仍然有很多人相信,机器与人具有本质的区别,机器不会具有真正的感情、自我意识、良心、社会责任等人类独具的能力,遗憾的是现在并没有看到在理论、逻辑上可以对这种信心做出的有力支持,哲学家、人类学家、社会学家、文化理论家们似乎尴尬,因为对“智能”、“知识”、“情感”、“自我意识”等等最基本的概念几千年来几无定论,人工智能几乎把由概念和逻辑构成的晦涩、复杂、精致的庞大哲学和抽象理论轻松地推到一边去了,在人工智能发展的速度难以预测的情况下,所有的人都是哲学家,都直接面对我们人类和世界的命运:十年或五十年? 二、 “围棋之战”不等于“人、机之战” AlphaGo与樊麾、李世石的对弈是“围棋的人、机之战”,不是也不等同于一般意义上的“人、机之战”。AlphaGo是一台学习了历史上所有围棋高手经验的机器,AlphaGo对弈樊、李实际是所有过去的围棋高手(经验)对弈一个围棋高手,所以无论谁胜,都是人棋游戏,在“胜、负”的意义上,都是人与人之间的对弈游戏,不是一般意义上的“人、机之战”。   把人机对弈看成是“人、机大战”是层次上的严重混淆,这种混淆误导人们对人工智能的认识,认为所有人设计的机器具有“天生”的与人的对立性,就是把机器的“自主”能力等同于人的自主能力,认为机器能“学习”,就是一种自主性,也就是把机器“学习”等同于人的自主性学习。   迄今为止的“计算机”都是“算法计算机”,即由“机器”执行“算法”进行“计算”,所以计算机需人编制程序才能工作。计算机的硬件和软件是分离的,一台元器件组装的“祼机”首先要装入操作系统才能开机(“点亮”),然后装入如“看图”、“办公”等应用软件才能工作,所以计算机的工作能力是由人灌装进机器里面去的。   “机器学习”就是不需要人事先灌装程序得到工作能力的人工智能,“机器学习”与“算法计算”的本质区别不在于“计算”而在于“判断”,比如图形识别、语音辨析等,这实际上是人在日常生活中遇到的最多的也是最基本的问题,所以也是人的一种基本能力,这种能力是无法事先学习的,“只能在游泳中学会游泳”,这只是一种个人性的经验。   “机器学习”的这种不同于“算法计算”的判断能力确实是一种经验的学习途径,“机器学习”的能力源于“人工神经网络”(ANN),ANN是模仿大脑中的神经元、突触的联接而得到的对数据特征提取和判断的能力,“机器学习”就是通过大量的样本训练使机器“记住”了某些特征,这样就可以用这种特征去甄别要处理的对象。   AlphaGo就是通过大量的围棋实战棋谱训练而得到对棋局整体性的把握能力,人也可以通过棋谱的学习而提高棋术,但人一定是参与实战而得到下棋能力,机器则恰恰是“先学好游泳”,这才是人、机之间的根本区别。但机器为什么可以在棋盘上战胜人呢?这是因为在对经验的记忆能力、反应的速度上人不如机器,所以机器是以记忆量与敏捷性的优势上战胜人的,但是机器的看盘“直觉”和走子的策略上却是学习了人的经验的结果。   由于人、机围棋对弈限定了人的能力只能在棋盘上,人、机之间的围棋对弈最多只是体现了人机复杂关系中在“人工智能”这个问题上的局部关系,以“围棋之战”等同于“人、机之战”是造成对人工智能本质的误解的一个基本原因。   机器能与人对弈只是表明机器成功地“学习”了人下围棋的方法,AlphaGo对人获胜也只是证明“机器学习”这种“人工智能”的学习能力得到了肯定。机器在一种人、机的游戏中战胜了人,这与“机器战胜了人”这个大题目是层次上非常不同的事情。   人与人的智能的关系本身就是一个不确定性的问题,在能做出“人的智能”与“人工智能”谁比谁更强大这种判断之前,我们现在还不知道人的“智能”究竟是什么?   三、 “模仿”与“学习”   朱光潜说“‘模仿’和‘学习’本来不是两件事。姑且拿‘学习’来说。小儿学写字,最初是描红,其次是写印本,再其次是临帖。这些方法都是在借旁人所写的字做榜样,逐渐养成手腕筋肉的习惯。……推广一点说,一切艺术上的模仿都可以作如是观。比如说作诗作文,似乎没有什么筋肉的技巧,其实也是一理。诗文都要有情感和思想。情感都见于筋肉的活动,我们在前面已经说过。思想离不开语言,语言离不开喉舌的动作。比如想到“虎”字时,喉舌间都不免起若干说出“虎”字的筋肉动作。这是行为派心理学的创见,现在已逐渐为一般心理学家所公认。诗人和文人常欢喜说‘思路’,所谓‘思路’并无若何玄妙,也不过是筋肉活动所走的特殊方向而已。……”   “学”,繁体字写作“學”,会意字,本义教塾中的孩子模仿。“习”,繁体字写作“習”,会意字,从羽,与鸟飞有关,本义小鸟反复地试飞。学习,先模仿别人的经验,然后反复练习,慢慢掌握技巧,变成自己的技能,养成习惯,“习以为常”,就是说通过“习”使之变为“常”。大意就是说,身体力行的“模仿”是最根本的“学习”。王阳明就特别强调“知行合一”,表达了后期儒家对日益增长的“知识”与个人心、性之间的关系以及个人身、心关系的一致性。 按中国传统文化,“学而时习之”,强调个人的在“学习”中的主体性,“学”之于人。“习”之于己,谓之“习得”,“习”就是个人的主体过程,“学”只是一种被动的模仿行为,自身的主动性才是真正的动力,人的主体性也是学习的最终归宿。“子曰:不愤不启,不悱不发。举一隅不以三隅反,则不复也。” (论语·述而) 孟子曰:“君子深造之以道,欲其自得之也。自得之,则居之安;居之安,则资之深;资之深,则取之左右逢其源,故君子欲其自得之也。”(孟子·离娄下)现代的皮亚杰(Jean Piaget 1896-1980)也认为,儿童的心理(智力)既不是起源于先天的成熟,也不是起源于后天的经验,而是起源于主体的动作。克拉申(Stephen D. Krashen 1941-) 提出“习得--学习差异” 假设,认为语言的习得就是一种无意识地、自然而然地学习,学习者通常意识不到自己在习得语言;而语言“学习”则是通过设定的教学计划和教材并有意识的练习、记忆,达到对所学语言、语法的掌握。习得的结果是潜意识的语言能力;而学习的结果是对语言结构有意识的掌握,语言的“学习”只起对语言的检测、编辑的作用。 西方文化传统重在知识,“学”在致“知”,从苏格拉底的“知识就是美德”到培根的“知识就是力量”,学习(learning)主要是指知识的学习,虽然知识的学习于人是不可或缺的,知识的积累和进化是人类文明最主要的组成部份和动力,但片面强调这种知识性的学习也会产生对人自身主体性的困惑。似乎是在“机器学习”这个概念中,人们才领悟到机器是由人“模仿”人的神经系统而使机器得到“学习”能力的,这里的“模仿”是指人在计算机中“建模(modeling)”方式的模仿,这种强调区分了人与机器在层次上的不同。实际上这里就隐含了模仿的三个层次,首先是人对神经网络的模仿(imitating)而得到ANN这种“机器代理”(Agent),然后是在“算法计算”的通用计算机中建模(modeling)ANN,然后才是机器的学习训练(“有监督”或“无监督的”机器学习)以得到机器的人工智能性。现在广泛使用的“机器学习”大抵上只是理解为将人类的既有经验纳入机器中,比如数据库式的专家系统和ANN式的“机器代理”(Agent)都是这种意义上的“学习”。 人、机之间最大的区别就在于,人主要是天生的主体学习者,机器则是在人造的“先天性”上才得到自己的“学习”能力的。 由于人工智能的出现而引发了我们对人的智能更深刻的理解,也带来了很多相关观念和概念的更新,并正在引发人 对 自我和世界的重新认识,对“模仿”和“学习”的意义和之间关系的分析能够帮助我们更加认识到,区别图灵或冯·诺依曼构型的计算机的“算法计算”与“机器代理”(Agent)的Matrix的重要(可参见 )。我们一直认为只有基于对人的智能的深刻理解,才能清楚地区分机器的人工智能与人的智能之间的复杂关系,而不能以人工智能的观点去理解人的智能,正像在算法理论中,不能以“多项式时间”(Polynomial time)的计算能力去定义“不确定性问题”(NP,Nondeterministic Problem)一样 。 总的来说,一方面,AlphaGo确实是学习了弈棋高手的经验才胜过了人,但另一方面,应更应该看到,人模仿了大脑神经系统制造了可以“学习”的机器,然后才是这个机器去“学习”人的经验,这两方面才是对AlphaGo与人之间的“围棋之战”和一般意义上所谓的“人机之战”完全不同的层次的真正分别,这也是对“人工智能”的智能性的正确理解。   四、 围棋的全局性与AlphaGo   在“深度学习”这个概念下,AlphaGo虽然不能说全是基于人工神经网络(ANN)的基础,但AlphaGo的确把对决游戏的人工智能发挥到了极致,各种强大的搜索算法无法应对的巨大搜索空间就是由对棋局的“直觉”判断的ANN而被转化为可能搜索的。从“计算”基本原理上看,ANN确实是把以往的基于“算法计算”的人工智能推进到基于“代理计算”的人工智能的道路上,ANN所表现的这种全局性的判断能力,就是人类常引以为傲的“直觉”,但迄今为止,人们仍然不了解人的直觉的秘密,因此,即使是ANN研究的专家也都承认对ANN的基本原理仍然不了解。 围棋的“局面”是一种具有全局意义的对决游戏,围棋中的盘面局势不是由棋子与棋盘上的位置关系决定的,而是由每一个棋子与其它所有的棋子组成的“局面”决定的,而且每一棋局的局部与全局具有同样的关系,这也正是现在常见的“深度”这个术语的隐含意义,所谓“卷积神经网络”(Convolutional Neural Network,CNN)也正是在这个意义上发展起来的。 国际象棋的棋子具有个别性,棋子的等级与其在盘面上的位置大体决定了棋子的价值,能下国际象棋的“深兰”就是建立了所有棋子与棋盘上的位置组成的“空间”,然后用传统的算法搜索方法和技巧对所有可能的走子行为进行整个可能空间的搜索,从而可以找出最佳走法,但这种方法对围棋棋子和棋盘位置组成的巨大的空间无能为力,DeepMind团队在人工神经网络ANN的基础上,研制了对围棋的“局面”判断方法,这就是AlphaGo中的“价值网络”与“策略网络”能够对围棋局面做出优劣判断,像高手对盘面的直觉印象一样,全局性判断虽然不能直接产生具体的走法,但可以提供局面优、劣判断以缩减搜索空间提供给算法搜索。这种价值判断与算法搜索相结合的方法就类似于人的左、右大脑的工作。 虽然无法得知AlphaGo的组成细节,但DeepMind是这样透露大体情况的:“First, the depth of the search may be reduced by position evaluation: truncating the search tree at states and replacing the subtree belows by an approximate value function v(s) ≈ v*(s) that predicts the outcome from states. This approach has led to superhuman performance in chess, checkers and othello, but it was believed to be intractable in Go due to the complexity of the game. Second, the breadth of the search may be reduced by sampling actions from a policy p(a|s) that is a probability distribution over possible moves a in positions. Recently, deep convolutional neural networks have achieved unprecedented performance in visual domains: for example, image classification, face recognition, and playing Atari games. They use many layers of neurons, each arranged in overlapping tiles, to construct increasingly abstract, localized representations of an image. We employ a similar architecture for the game of Go. We pass in the board position as a 19 × 19 image and use convolutional layers to construct a representation of the position. We use these neural networks to reduce the effective depth and breadth of the search tree: evaluating positions using a valu和e network, and sampling actions using a policy network.”——首先,搜索深度可以由棋局评价缩减:在(价值网络对)棋局(评价中)截短搜索树,并重置(可以搜索的)近似最优v(s) ≈ v*(s)的子枝层,这是(价值网络对)局面评价产生的结果。这个方法导致在棋子、棋格和局部棋块中超常人的策略,但在复杂的围棋游戏中(这下一步的走子策略)仍然是难(搜索)的;因此第二步,(此层中)搜索广度可以由(策略网络)在样本行为中对可能走子在棋局上几率分布p(a|s)进行缩减。现在,深度卷积神经网络在视像领域取得了出人意料的效果,比如图像分类、面孔辨识和ATARI游戏中。他们使用了很多神经层,每个都置于重叠的层次中,以对一个构建不断增长的抽象、局部表达。我们在围棋游戏中采用了相同的结构,我们放弃了对19 × 19盘面位置(的算法)而使用了卷积层构建棋局的表达。我们使用了这些神经网络缩减了搜索树的有效深度和广度:局面评价采用了价值网络,而走子步骤采用了策略网络。 结语:从人与机器的“学习”性质和关系上,我们可以看出, 人工智能中的人、机关系既是人与客观世界的关系,也是人与社会、人与自己的关系,这种多层次之间的缠绕关系的复杂性超过一般的多元、交互关系,人工智能给我们带来的不仅是物质和社会文明上的进步和提高,也给人和世界带来了更多的不确定性。 主要参考资料    Mastering the game of Go with deep neural networks and tree search, Nature 529 (7587): 484–489    朱光潜,“不似则失其所以为诗,似则失其所以为我”,《谈美》系列之十三。    周剑铭,智能哲学:人与人工智能 网文    周剑铭 柳渝,机器与“学习”——寻找人工智能的幽灵,网文    柳渝,不确定性的困惑与NP理论,http://blog.sciencenet.cn/home.php?mod=spaceuid=2322490
个人分类: 智能哲学|3166 次阅读|2 个评论
新买一本关于机器学习的中文书:《机器学习》
yyzzy123 2016-5-2 14:19
最近突然对机器学习比较感兴趣,再加上要写关于机器学习的中文文章,就试着去看一些相关的中文书。一看才发现,能入门的大部分都是外文原版翻译的书,毕竟不是国人所写,也许是自己读书的水平不行吧,所以读着总感觉怪怪的,特别是一些术语的翻译更是晕晕的。于是就上网搜索期望找到一本入门的国人所写的书,可是很失望,大部分都是很深奥的。有朋友告诉我最近南京大学的周志华教授出了一本入门的书,可以看看,于是 上网查看,一看价格88元,仔细阅读了样书,感觉比较适合自己,于是就买了这本书。。。。。。 希望自己能真的读懂。。。。
2380 次阅读|0 个评论
[转载]木遥:关于 AlphaGo 论文的阅读笔记
kasolo 2016-3-10 21:42
2016 年 1 月 28 日,Deepmind 公司在 Nature 杂志发表论文 Mastering the game of Go with deep neural networks and tree search,介绍了 AlphaGo 程序的细节。本文是对这篇论文的阅读笔记,以及关于人工智能和围棋进一步的一些想法。 声明:我是数学 PhD 和软件工程师,但不是人工智能领域的专家。我也不会下围棋。 一、 AlphaGo 总体上由两个神经网络构成,以下我把它们简单称为「两个大脑」,这并非原文中的提法,只是我的一个比喻。 第一个大脑(Policy Network)的作用是在当前局面下判断下一步可以在哪里走子。它有两种学习模式: 一个是简单模式,它通过观察 KGS(一个围棋对弈服务器)上的对局数据来训练。粗略地说:这可以理解为让大脑学习「定式」,也就是在一个给定的局面下人类一般会怎么走,这种学习不涉及对优劣的判断。 另一个是自我强化学习模式,它通过自己和自己的海量对局的最终胜负来学习评价每一步走子的优劣。因为是自我对局,数据量可以无限增长。 第二个大脑(Value Network)的作用是学习评估整体盘面的优劣。它也是通过海量自我对局来训练的(因为采用人类对局会因为数据太少而失败)。 在对弈时,这两个大脑是这样协同工作的: 第一个大脑的简单模式会判断出在当前局面下有哪些走法值得考虑。 第一个大脑的复杂模式通过蒙特卡洛树来展开各种走法,即所谓的「算棋」,以判断每种走法的优劣。在这个计算过程中,第二个大脑会协助第一个大脑通过判断局面来砍掉大量不值得深入考虑的分岔树,从而大大提高计算效率。 与此同时,第二个大脑本身通过下一步棋导致的新局面的优劣本身也能给出关于下一步棋的建议。 最终,两个大脑的建议被平均加权,做出最终的决定。 在论文中一个有趣的结论是:两个大脑取平均的结果比依赖两者各自得出的结果都要好很多。这应当是让 AlphaGo 表现出和人类相似性的关键所在。 二、 如果我是这篇论文的审稿人,我会对论文提出下面这些问题和评论: 首先,这些神经网络训练在很大程度上是通过自我对局来实现的。这既是某种优势(按照 Facebook 人工智能研究员田渊栋的说法,几千万自我对局这种规模是相当惊人的数据量),某种程度上来说也是不得已而为之,因为人类对局的总数实在太少,会导致机器学习中常见的过度拟合问题。 但是这样是否有可能造成自我设限乃至画地为牢的后果?这同时牵涉到人们对神经网络学习过程的理解和对围棋本身的理解。一方面,神经网络本身是否包容一定程度的「think out of the box」的能力,这固然取决于具体的神经网络算法,但也确实是人们对神经网络方法的一个本质困惑。另一方面,因为 AlphaGo 最基础的定式仍然是来源于人类对局,因此,这个问题依赖于人类棋手本身是否已经穷尽了围棋中所有有意义的基本定式。 (作为一个案例,在 AlphaGo 和樊麾的第二盘对局中,很多人都注意到 AlphaGo 走了一个不标准的大雪崩定式,这是说明 AI 学错了呢,还是它发现这是更好的走法?) 其次,这两个大脑的工作方式确实和人类很相似,一个判断细部,一个纵览全局。但 AlphaGo 最终的结合两者的方式相当简单粗暴:让两者各自评估一下每种可能的优劣,然后取一个平均数。这可绝不是人类的思维方式。 对人类来说,这两种思考问题的方式的结合要复杂的多(不仅仅是在围棋中是这样)。人们并不是总是同时对事态做出宏观和微观的判断,而是有时候侧重于大局,有时候侧重于细部。具体的精力分配取决于事态本身,也取决于人在当时的情绪、心理和潜意识应激反应。这当然是人类不完美之处,但也是人类行为丰富性的源泉。 而 AlphaGo 固然体现出一定的大局观,但从具体算法看来,它在为了宏观优势做出局部牺牲这方面的能力和人类完全不能相提并论。AlphaGo 引入整体盘面评估确实是它胜于许多别的围棋 AI 的地方,但从根本上来说,这只是人们让 AI 具有「战略思维」的尝试的第一步,还有太多可以改进的可能性。 最后,和很多别的围棋 AI 一样,当 AlphaGo 学习盘面判断的时候,采用的是图像处理的技术,也就是把围棋棋盘当做一张照片来对待。这当然在技术上是很自然的选择,但是围棋棋局究竟不是一般意义上的图案,它是否具有某些特质是常见的图像处理方法本身并不擅长处理的呢? 三、 为什么要让人工智能去下围棋?有很多理由。但在我看来最重要的一个,是能够让我们更深入地理解智能这件事的本质。 神经网络和机器学习在过去十年里跃进式的发展,确实让 AI 做到了许多之前只有人脑才能做到的事。但这并不意味着 AI 的思维方式接近了人类。而且吊诡的是,AI 在计算能力上的巨大进步,反而掩盖了它在学习人类思维方式上的短板。 以 AlphaGo 为例。和国际象棋中的深蓝系统相比,AlphaGo 已经和人类接近了许多。深蓝仍然依赖于人类外部定义的价值函数,所以本质上只是个高效计算器,但 AlphaGo 的价值判断是自我习得的,这就有了人的影子。然而如前所述,AlphaGo 的进步依赖于海量的自我对局数目,这当然是它的长处,但也恰好说明它并未真正掌握人类的学习能力。一个人类棋手一生至多下几千局棋,就能掌握 AlphaGo 在几百万局棋中所训练出的判断力,这足以说明,人类学习过程中还有某种本质是暂时还无法用当前的神经网络程序来刻画的。 (顺便提一句,很多评论认为 AlphaGo 能够通过观察一个特定棋手的对局来了解他的棋风以做出相应的对策。至少从论文来看,这几乎确定是不可能的事。一个棋手的对局数对 AlphaGo 来说实在太少,无从对神经网络构成有效的训练。观察和总结一个人的「棋风」这件事仍然是人类具有完全优势的能力,对电脑来说,这恐怕比赢棋本身还更难一些。) 这当然不是说,AlphaGo 应该试图去复刻一个人类棋手的大脑。但是 AlphaGo 的意义当然也不应该仅仅反映在它最终的棋力上。它是如何成长的?成长曲线具有什么规律?它的不同参数设置如何影响它的综合能力?这些不同参数是否就对应了不同的棋风和性格?如果有另一个不同但水平相当的 AI 和它反复对弈,它能否从对方身上「学到」和自我对弈不同的能力?对这些问题的研究和回答,恐怕比单纯观察它是否有朝一日能够超越人类要告诉我们多得多的知识。 因此,即使 AlphaGo 在三月份战胜了李世乭,在我看来也是另一扇大门的开启而非关闭。事实上,即使就围棋发展本身而论,如果把 AlphaGo 的两个大脑以如此简单的方式线性耦合起来就能胜过人类,那只能说明人们对围棋的规律还有太多值得探索的空间。 而对人工智能领域来说,AlphaGo 和一切神经网络一样,本质上还只是个大黑盒,我们能观察到它表现出的巨大能力,但对它究竟是如何「思考」的这件事依然所知甚少。在工程上,这是个伟大的胜利。在科学上,这只是万里长征的第一步而已。 参考资料 AlphaGo 项目主页:http://www.deepmind.com/alpha-go.html Nature 论文:http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html Nature 报道:http://www.nature.com/news/google-ai-algorithm-masters-ancient-game-of-go-1.19234 Dan Maas 对论文的浅显总结:http://www.dcine.com/2016/01/28/alphago/
个人分类: TechNow|168 次阅读|0 个评论
【李白对话录:RNN 与语言学算法】
热度 2 liwei999 2016-2-27 21:11
立委按: 本次《李白对话》涉及NLP两条道路融合的大议题。这个问题在NLP历史上从来就没有协调解决好过,其结果是以一方的无条件投降或隐身在学界拉下帷幕。这个议题的重要性和这次讨论带来的启发性,学术史将会留下印记。在我假想的NLP大学里,学生如果能独立消化理解这个对话的80%,至少可以授予一个硕士学位。其实,真实生活中新毕业的博士也不妨自己测一下能不能看懂在说什么。看懂了,可以自己奖励自己一碗正宗牛肉面。如果看不懂,呵呵。 李: 说机器学习的本质是自动编程,很多人不大认可,主要是觉得把一个热门甚至universal的东西等价于一个听上去就不靠谱的东西,多少有些抹黑的味道,至少是别有用心。抹黑犯不着,别有用心是有的。 白: 不是自动编程。 李: 有人可能argue,说机器学习学出来的系统,不是真正意义的自动编程,而只是学出来一个 modal,这个modal不过是一个资源,一种数据。可以是symbolic rule 的形式,更多的是统计概率模型 stochastic modal 。前者等价于手工的规则集或文法,而后者 stochastic modal 类似专家词典一样的资源,虽然人肉眼不大能看懂它。总之,这些类似词典文法的models不是程序,程序是在调用这些model的时候体现的。那个调用的东西,所谓 model 的 runner (decoder, 刘老师老老年把内含语言学过程性算法的runner叫控制器),那个才是程序,那个里面有算法,可那玩意儿不是机器学习培训model的过程中 “学习” 出来的,而是每一类机器学习算法预先给定的。从这个意义上,机器学习学习的不是程序,而是“知识”。 其实这正是我诘问机器学习在领域深度任务上有效性的关键所在,那个 runner 是预定的,通用的(可以用于NLP,也可以用于AI的任何领域,股票预测、蛋白质分子结构等),里面所隐含的算法和过程,没有领域算法的因素,因此凡是超出 model (知识资源的某种形式)表达能力以外的语言学算法,统统被认为是不必要的,或者被认为是可以被通用算法完全取代的。这怎么能做好深度 NLP 呢? 白: 这个过程需要澄清一下: 1、模型(如RNN)是一个formalism的一般形态。 2、这个formalism中含有大量未定的参数(权值)。 3、合适的权值可较好地解决填坑的任务。 4、权值可通过DL获得,也可通过编译显性语言学知识获得。 李: 我的困惑是,机器学习在哪里留下了接口,可以让语言学算法,特别是“过程性”的算法(先做什么,后做什么)进来? 如果没有这个接口,那就是认为语言学算法是儿戏,不值得吸收,语言学家可以轻易取代。 白: 过去的BP做不到“过程性”,RNN恰恰能做到。所以,编译到RNN,真的是编译,不是隐喻。 李: 关于 4,那些显性的语言学知识包括过程性的语言学算法么?还是只包括静态或平面的语言规则?多层的语言规则系统怎么进入 RNN 去帮助调控权值? 白: 语言规则都有对应的自动机,自动机都是过程性的。你也多层RNN好了。所以,要RNN,不要DL,是可行的。 李: 我一直就卡在这里。所有对机器学习无视语言学算法的怀疑均出于此( 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 )。 在 Prolog 和 constraint-based grammars (也叫合一文法) 流行的时候,很多人看轻了过程性,以为语言的文法资源可以是没有过程的,没有层次的。一个外在的算法决定这个资源怎么用,分析还是生成。但这个观点站不住 站不住 站不住 啊。重要的观点至少说三遍。语言学的过程性的算法是深度parsing绕不过去的,这就是我的结论。因此无论是 HPSG,GPSG 等以前流行的文法派也好,还是更传统的 CFG 的单层文法派也好(其实二者是同质的formalism,涉及到的decoding算法是直接从形式语言formalism派生出来的),还是机器学习把语言分析当成黑箱子去训练一个model也好,统统地有一个共同的缺陷,致命的,就是里面假设了,通用的算法,或基于某个乔氏形式语言formalism的单层算法,可以包打一切,可以代替语言学过程性的算法。 白: 机器学习不假定乔氏,不排斥分层。 李: 传统的机器学习为什么都那么浅、那么平、那么地单层为主,至少层次极为限制?这里面可能的确有其苦衷。 白: 机器学习的结果可以有过程性。 李: 机器学习本身自然是可以有层次的,有过程性,但是那是它内部的事情。如果一旦开了一个口子,让领域的过程性算法参合进来,容易乱套,这个接口不好定义和协调。猜想这就是苦衷。算法是命令问责制,不可能服从两个司令。所以不能轻易开口子,让语言学进来告诉机器该怎么做。语言学家做资料员可以,但不能当经理去指挥程序的走向,否则不是祸起萧墙,凌驾于党。 白: 不是formalism的问题,是学习本身的问题。绕开学习就不是问题了。 李: 怎么绕开学习?具体一点说说看。 白: 先说过程性。这里有三个层面的问题。一、分层,这相当于模型的级联,并不颠覆模型;二、非确定规则系统的确定化,比如regex到fsa,重写规则到图灵机,都在转换的过程当中忠实地引入了过程性,向RNN转换也是如此,理论上不存在法外之地;三、通常的规则系统里,各规则是平权的,但为规则引入优先级并不是新的idea,早就有,具体条件下按优先级选择同时适用的规则,程序可以做,RNN们也一样可以做。一是宏观控制,二是微观控制,三是中观控制。 李: 这个语言学算法与RNN接口的议题很有意思,以后可以细细讨论,也许是两条道路的汇聚点。 白: 当分层和分优先级管住了大的逻辑,具体规则的不确定变确定管住了每一根毛细血管,就剩不下什么法外的过程性了。 李: 有点意思。 你的第二点不是问题。那个过程性是天然的。第一点最重要,这里面有经验因素,也有原则,但正如所说,不改变“毛毛虫”(i.e. formalism)的性质,不过是一个过程的config而已。需要注意的是,分层的接口。这个接口很微妙,可以假定是数据结构搞定它。 白: 分层和滑动窗口结合会带来新问题。 李: 在你那里就是 RNN 的representation。只要这个数据结构是约定好的 protocol,分层本身就是一个 config 而已。 至于第三点,其实我的“毛毛虫”里面,早就有规则权重机制了。没有这个优先级的区分,还怎么玩 hierarchy 的规则系统,怎么应对语言的个性与共性? 个性共性的矛盾,一个是可以通过外部过程性控制,譬如先调个性,再做共性;或者先做共性,再用个性去 override,但是外部过程控制不能解决 hierarchy 的全部要求。因此规则集内部还是需要有适度的优先级控制。这些优先级多是经验性的或实验性的调控。靠的是语言学家对语言现象的感觉,到底是个性还是共性,多大程度上是个性等等。这个地方,有语料现象的统计来帮助的空间,因为人的语感不一定可靠,而且人见到的现象永远是局部的。 白: 假如,下面一层走很多步,上面一层才走一步,下面一层有可能先突破滑动窗口的限制,必须“武断”了,而上面一层其实等得起。这就导致不协调。如果用休眠唤醒,就可以在层级间更好地协调。所以,休眠唤醒这种非常典型的过程性机制,也是formalism的应有之义。 李: 听上去蛮有道理。 你这个滑动窗口,可以解释,用例子illustrate一下么? 白: 就是当前已经看到但没搞定的token不能超过多少个。要么停下来,要么搞定,不能在没搞定的情况下还往前走。其实我举的把字句辖域的例子(“把总统杀死的刺客埋了吧”),就是这么引起的。 李: 哦 那个滑动窗口是动态的,但对于某一层是基本定的。拿 regex 来说,理论上,有了 * 和 +, 窗口可以无限长,但是实际上,开发者心里有数,这个 * 不能超过一个 n,否则就无法预期后果了。 白: 类似 李: 因此,大体上,每一个层是有一个相对固定的窗口的。到了下一层,因为句素的数据结构更新了,句素动态加长,滑动窗口就自然变大。到了句法建树阶段,long distance 也不过就是个三级跳而已,看上去很远的物理距离也够得着了,树结构上成为了邻居,远距离由此而 bigram or trigram 了。这就是句素分层处理的奥妙和威力。 白: 我刚才说的,就是下层紧张上层空闲的情况,这时休眠是有帮助的。 李: 受教了。 白: 彼此。 李: 休眠唤醒保不定哪一天会成为领域的热门术语呢。高兴的是,至少 “难过” 的休眠唤醒,我已经放到系统了,部分实践了这个机制。恰好 “难过”的歧义关涉情感分析,我舆情挖掘可以用到,在雷达上。 白: 分层、优先级、滑动窗口、休眠唤醒,这四个东西,把语言学家可感的主要过程性要素朝着落地的方向推进了一大截。 李: 诺。 白: 它们融入RNN框架的前景,借用早上讨论的热词,叫“有希望”而不仅仅是“有/希望”。 李: 今次的隔空对话很有意思,感觉是在两个频道,但这两个频道并不是隔绝的,互相可以听见,有交叉,但又不总是 可以 unify,所以不时需要澄清或 illustrate 来让频道兼容。白老师晚安,这个话题以后肯定还会回顾的,这是一个以前不怎么 touch 也没有条件 touch 的地带。 【相关博文】 【李白对话录系列】 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 《新智元笔记:再谈语言学手工编程与机器学习的自动编程》 《立委随笔:机器学习和自然语言处理》 《立委随笔:语言自动分析的两个路子》 《新智元笔记:NLP 系统的分层挑战》 【立委科普:歧义parsing的休眠唤醒机制初探】 【李白对话录 - 从“把手”谈起】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|7177 次阅读|3 个评论
《新智元笔记:再谈语言学手工编程与机器学习的自动编程》
热度 2 liwei999 2016-2-26 01:03
宋: We believe the contents of your iPhone are none of our business. 我们确信你手机里存了什么,跟我们没有半毛钱的关系。 我们确信,你手机里存了什么跟我们没有半毛钱的关系。 标点的问题。 @wei 能不能再看一下英文的结果? 我: 可以。 宋: 英语的分析很好,汉语还有点问题,关键是英语的NP(Subj) 到了汉语译文中成了主谓结构。 我: 这句英语比较简单。今天CNN头条的一个新闻,随机测试两句较长一些的句子,看里面的结构parse成什么: 英语开发时间长,早就成熟了,好久不动它了,没多少油水可榨了。 基本达到人的分析水平了。 张: 威武 我: 常有人问我看过这个parser,那个parser 没有,我老实说一般都懒得看。都琢磨了一辈子了,曾经沧海难为水。 关键是,在用 parser 做事儿的时候,就会发现,凡是 offshelf 的,都不好用。不仅仅是树的问题,树上只看到了 arcs,看不到的是 nodes。没有对nodes的语义接口和掌控,句法树也就是一道风景,也做不了事儿。 我: @白硕 谈辖域,离不开并列结构和省略现象。 并列结构被公认是 parsing 的拦路虎,痛点之一。它打破了依存关系的日常秩序, 是个难缠的东西。 梁: 白老师说的“辖域”是指什么呢,能具体点儿吗?在这句话里: “这顿饭的吃与不吃,都左右不了选举的结局。” 梁: 挺好的,很多细节都处理得好。只是大结构没有抓住,中心词应是“改变”,A 改变不了B.核心动词应是“左右不了”。 我: 加上了,这下你该满意了? 白: “吃饭”搭配呢? 我: 白老师真心眼毒。搭配与并列还没协调好,你容我喘口气儿 我: binggo!原来只是一个很小的词典问题。 哈哈,“仰天大笑闭门编,我辈岂止码农民”。工具顺手了,调系统就是个玩儿。 与大学生玩游戏上瘾类似,调试系统很 addictive 的。 据说机器学习可以代替语言学码农,剥夺我们的乐趣, 第一我们语言码农是不会答应的,第二它也代替不了。 能代替的都是低级劳动,高级劳动的自动编码还有日子吧,或者根本就是科学幻想。 梁: 不是说机器学习是根据输入输出学习规则吗? 也就是学习自动编码,对吧? 我: 机器学习的本质是自动编程,属于自动编程的一个分支。但在AI和NLP历史上, 它被视为理所当然高于领域码农的高级算法。这个观点本身没有问题,这是高一阶的算法,自然是高级的。但是这一切成立的基础是,领域算法和formalism已经清晰,可模拟。领域指的是语言学,of course。但实际情形完全不是这样,这个 assumption 只在浅层、单一语言学现象上, 是成立的。 白: 自动编程和基于示例的编程不是一个概念。自动编程是以spec为输入,以相应程序为输出。基于示例编程是以输入输出pairs为输入,以相应程序为输出。 我: 白老师说的不错,(有监督)机器学习的根基是示例, 语言处理本身是黑箱子,一切被认为完全可以用输入输出完善表达。在错综复杂的自然语言问题领域,这个思路有问题。譬如,并列现象与依存现象的错综复杂的纠缠,本来是需要精细周到的语言学算法去应对的(参见: 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 )。但是现在被认为是,只要请语言学家标注出一大批树,这些领域算法, 就可以绕过去,然后机器自动学习出一种合适的处置来。我始终不信服。无法信服。里面饶了那么多弯儿呢,怎么可能全部自动学出来?语言学家也是专门家,他们就那么容易被机器复制、取代? 梁: “自动编程是以spec为输入,以相应程序为输出” 是 Specification ? 我: specs 本身的定义,其实不排除用案例,或 labeled data。我们产品经理找我提供NLP支持的时候,他给我的 specs 就是以案例为主:说只要是这样的 input,你给我抽取出这样的 insights,就ok了。软件中的不少 specs 是难以精确逻辑定义的,只好辅以 labeled data,这就与NLP中的机器学习面对的“specs”同质了。 我: 重要的话说n遍,QUOTE: 手工编制(hand-crafted)怎么了, 怎么到了NLP领域, 突然就成了带有原罪的贬义词了呢。这是因为在NLP领域, 代表主流的精算师们由于他们在NLP某些任务上的非凡成功, 使得他们居功自傲,把成功无限推广和夸大, 给这个community 施行了集体催眠术,让人相信机器学习是万能的。换句话说, 批判手工编制的劣根性,其隐含的前提是机器学习是万能的, 有效的,首选的。而实际情况是,面对自然语言的复杂性, 机器学习只是划过了语言学的冰山一角, 远远没有到主流们自觉和不自觉吹嘘的如入无人之地的万能境界。 催眠的结果是不独不少语言学家以及NLP相关利益方(stake holders,如投资人和用户)被他们洗脑了, 连他们自己也逐渐相信了自己编制的神话。 古有鲁班,现有码师(coding master)。这些码工谁不靠手工编制代码作为立足之本呢? 没听说一位明星工程师因为编制代码的手工性质而被贬损。 同是软件工程, 为什么计算语言学家手工编制NLP代码与其他工程师手工编制软件 代码遭遇如此不同的对待。难道NLP应用比其他应用简单? 恰恰相反,自然语言的很多应用比起大多数应用 更加复杂和艰难。 解释这种不同遭遇的唯一理由就是, 作为大环境的软件领域没有NLP主流的小环境里面那么多的傲慢和 偏见。 软件领域的大牛们还没有狂妄到以为可以靠自动编程取代手工编程。 他们在手工编程的基础建设(编程语言、架构和开发环境)上下功夫, 而不是把希望寄托在自动编程的万能上。也许在未来的某一天, 一些简单的应用可以用代码自动化来实现, 但是复杂任务的全自动化从目前来看是遥遥无期的。 不管从什么标准来看, 非浅层的自然语言分析和理解都是复杂任务的一种。因此, 机器学习作为自动编程的一个体现是几乎不可能取代手工代码的。 规则系统的NLP应用价值会长期存在。 自动是一个动听的词汇。如果一切人工智能都是自动学习的,前景该有多么美妙。机器学习因为与自动连接在一起,显得那么高高在上,让人仰视。它承载着人类对未来世界的幻想。这一切理应激励自动学习专家不断创新,而绝不该成为其傲慢和偏见的理由 。 (摘自: 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 ) 【相关博文】 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 《立委随笔:语言自动分析的两个路子》 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 再谈机器学习和手工系统:人和机器谁更聪明能干? 《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|6127 次阅读|6 个评论
机器学习-deep learning reading 网上链接
lhj701 2016-2-23 15:19
机器学习-deep learning reading 网上链接 Deep learning Reading List Following is a growing list of some of the materials i found on the web for Deep Learning beginners. Free Online Books Deep Learning by Yoshua Bengio, Ian Goodfellow and Aaron Courville Neural Networks and Deep Learning by Michael Nielsen Deep Learning by Microsoft Research Deep Learning Tutorial by LISA lab, University of Montreal Courses Machine Learning by Andrew Ng in Coursera Neural Networks for Machine Learning by Geoffrey Hinton in Coursera Neural networks class by Hugo Larochelle from Université de Sherbrooke Deep Learning Course by CILVR lab @ NYU CS231n: Convolutional Neural Networks for Visual Recognition On-Going CS224d: Deep Learning for Natural Language Processing Going to start Video and Lectures How To Create A Mind By Ray Kurzweil - Is a inspiring talk Deep Learning, Self-Taught Learning and Unsupervised Feature Learning By Andrew Ng Recent Developments in Deep Learning By Geoff Hinton The Unreasonable Effectiveness of Deep Learning by Yann LeCun Deep Learning of Representations by Yoshua bengio Principles of Hierarchical Temporal Memory by Jeff Hawkins Machine Learning Discussion Group - Deep Learning w/ Stanford AI Lab by Adam Coates Making Sense of the World with Deep Learning By Adam Coates Demystifying Unsupervised Feature Learning By Adam Coates Visual Perception with Deep Learning By Yann LeCun Papers ImageNet Classification with Deep Convolutional Neural Networks Using Very Deep Autoencoders for Content Based Image Retrieval Learning Deep Architectures for AI CMU’s list of papers Tutorials UFLDL Tutorial 1 UFLDL Tutorial 2 Deep Learning for NLP (without Magic) A Deep Learning Tutorial: From Perceptrons to Deep Networks WebSites deeplearning.net deeplearning.stanford.edu Datasets MNIST Handwritten digits Google House Numbers from street view CIFAR-10 and CIFAR-100 IMAGENET Tiny Images 80 Million tiny images Flickr Data 100 Million Yahoo dataset Berkeley Segmentation Dataset 500 Frameworks Caffe Torch7 Theano cuda-convnet Ccv NuPIC DeepLearning4J Miscellaneous Google Plus - Deep Learning Community Caffe Webinar 100 Best Github Resources in Github for DL Word2Vec Caffe DockerFile TorontoDeepLEarning convnet Vision data sets Fantastic Torch Tutorial My personal favourite. Also check out gfx.js Torch7 Cheat sheet 原文链接:http://jmozah.github.io/links/#rd
个人分类: 大数据|4070 次阅读|0 个评论
[转载]机器学习的盛宴:NIPS 2015
热度 1 alaclp 2016-1-16 16:14
机器学习的盛宴:NIPS 2015 作者 jopen 2016-01-15 19:17:36 阅读目录 冰雪王国的浪漫 机器学习的盛宴 智慧激荡的论文 引人深思的讨论 触手可及的未来 博采众长的前行 推荐阅读 欢迎关注 作者:微软亚洲研究院实习生:林添 冰雪王国的浪漫 机器学习的盛宴 NIPS ( Advances in Neural Information Processing Systems ,神经信息处理系统进展大会)是每年 12 月由 NIPS 基金会主办的机器学习和神经计算领域的顶级会议,它由连接学派( connectionist )神经网络的学者于 1987 年在加拿大创办,后来随着影响力逐步扩大,也曾移师美洲、欧洲等地举办。每年大会都吸引了机器学习、人工智能、统计等领域的众多国际专家地参与。近年来,在工业界和科学界,神经网络构建的深度学习方法取得了很多突破性的进展,在计算机视觉、语音识别、自然语言处理等领域也出现了大量的创新应用, NIPS 在机器学习领域的学术影响力变得举足轻重。 本次 NIPS 大会在加拿大魁北克省的蒙特利尔举行。蒙特利尔位于五大湖和圣劳伦斯河河口,是加拿大仅次于多伦多的第二大城市,同时也是加拿大的经济之都,拥有发达的金融、电影、设计、航空产业。加拿大是是冰雪的王国,得益于此,蒙特利尔最受欢迎的运动便是冰球。这里还有很多繁华的地下城,即便是外面大雪纷飞,里面依然灯火通明。蒙特利尔更有众多欧洲与北美风格融合的建筑,吸引了众多好莱坞大片来这里取景。下图便是蒙特利尔神圣、典雅的圣母院大教堂,加拿大著名歌手席琳·迪翁的婚礼就是在此举行。 2015 年的 NIPS 大会于 12 月 7 日至 12 月 12 日在蒙特利尔的国会会展中心举行。大会获得了包括微软在内的多家知名 IT 企业的大力赞助。今年共有 3755 名来自世界各地的研究人员注册并参加了会议,相比去年参会人数几乎翻倍。此次大会覆盖的内容除了机器学习和神经科学领域,还包括认知科学、心理学、计算机视觉、统计语言学和信息论等多个领域。 大会日程包括教程( tutorials )、大会会议( conference sessions) 、专题座谈会( symposia )和研讨会( workshops )四个部分。本次大会一共收到 1838 篇投稿,录用论文 403 篇,录取率为 21.9% ,论文淘汰的数量十分庞大。在这四百多篇论文中,论文方向极其多样化,其中占比最大为深度学习相关论文,占 403 篇录取论文中的 11% ,其次凸优化方向占了 5% 、统计学习理论占了 3% 。此次大会的论文展示环节主要包括口头报告( oral )、聚光灯( spotlight )和海报( poster )三种展示形式。 NIPS 是计算机领域少数坚持单轨制( singletrack )的会议,这一制度这能让参会人员更加专注于会议报告本身,但也使得录取论文的展示时间相对有限。因此,仅有 15 篇论文获得了宝贵的 20 分钟口头报告的机会。同时,少量论文获得了 5 分钟时间的聚光灯展示,而剩余绝大部分的论文展示都是海报为主。 智慧激荡的论文 引人深思的讨论 本次会议由大会主席 Terrence Sejnowski 致开幕词,常任主席 CorinnaCortes 和 NeilLawrence 介绍了本次会议的投稿、审议标准和论文录用等情况,这也揭开了 NIPS2015 的帷幕。本次大会的最佳论文奖颁给了“ CompetitiveDistribution Estimation: Why is Good-Turing Good ”( http://papers.nips.cc/paper/5762-competitive-distribution-estimation-why-is-good-turing-good.pdf )和“ FastConvergence of Regularized Learning in Games ”( http://papers.nips.cc/paper/5763-fast-convergence-of-regularized-learning-in-games.pdf )两篇论文。 “ Competitive Distribution Estimation: Why is Good-TuringGood ”这篇论文属于统计学习的理论研究范畴,它对估计离散变量的分布律这一普遍问题,提出了基于 Good-Turing 估计量的两种改进方法,借助对先验的最优估计量,给出了针对任意分布律的近似最优的高效估计。论文不仅指出这两种方法可以快速收敛,同时还给出相应的理论分析。 “ Fast Convergence of Regularized Learning in Games ”这篇论文属于博弈学习研究方向。博弈学习被广泛研究,而该文章中指出一类正则化的学习算法可以大大改进带问题本身有近期偏差(更倾向于近期的回报)的结果,它甚至可以被拓展到多玩家博弈的均衡问题。论文扩展了之前工作研究的二人零和博弈问题,指出在一类问题中如果每个玩家各自使用最优算法将达到更快收敛速度,大大拓展了原有理论对博弈的理解。 “ InteractiveIncremental Question Answering ”则获得了本届大会的突出展示奖。类似于微软亚洲研究院几年前推出的人立方系统,该展示系统能够根据用户给出的人物事实性描述和背景,去猜测出用户希望知道的人名。在展示系统中,用户可以给出几句英文的描述,而系统基于依赖树的递归神经网络,学习用户意图,在语料库中能够找到答案,给出精准的回答。这一系统在大会上大受好评。 除了获奖论文,大会上还有很多令人印象深刻的报告。“ Interactive Control of DiverseComplex Characters With Neural Networks ”( http://papers.nips.cc/paper/5764-interactive-control-of-diverse-complex-characters-with-neural-networks.pdf )文章则研究了如何借助递归神经网络作为运动控制器的问题。在不进行运动捕捉以及任务相关的特征设计的前提下,实现了让不同形态和动力系统机器人做出像游泳,飞行,双足、四足行走等运动。 “ Sampling from Probabilistic Submodular Models ”( http://papers.nips.cc/paper/5744-sampling-from-probabilistic-submodular-models.pdf ),这篇文章研究了一个有趣的采样方法。次模函数是经常出现在经济或计算机领域选址、覆盖、图像背景分割等问题中常见的函数,它描述了边际效益递减的一类特性。作者针对采样概率是次模函数的函数值问题,提出了基于吉布斯采样的方法,不仅保证多项式时间的复杂度,且具有很好的混合时间。 此外,在专题座谈会上,众多专家、学者们还在分会场中开展了有趣而深刻的对话和讨论。“我们周边的算法:机器学习的社会影响力”专题中关于机器人伦理的话题就很有意思。例如自动驾驶技术上就有一个两难问题( TunnelProblem )亟待解决:设想你坐在一辆自动驾驶的汽车上,沿着山路的单行线行驶,此时突然有个小孩闯入道路,来不及刹车的情况下,就会面临两难选择:是径直向前,可能直接撞死小孩;还是撞向山崖,可能掉下悬崖?换句话说,自动驾驶的汽车应如何反应?又由谁来决定汽车的决策方式?这一类问题的核心其实是,对于机器学习算法中存在的决策失败概率(风险),或者人类和机器的决策存在冲突时,我们该如何从法律、技术、道德等角度进行约束。 图片来自互联网 触手可及的未来 博采众长的前行 NIPS 大会在展示了相关领域最新研究成果的同时,也预示了机器学习的未来的发展趋势。首先是神经网络架构进一步复杂化。在图像、机器翻译等领域,越来越多的研究人员开始选择 LSTM ,利用不同的感知机、目标函数,卷积或者递归架构神经网络,在实际项目中实现更多有意思的应用。通过随机方法近似 (stochasticapproximation) 的算法也受到不少关注。其次是自动推断和黑盒学习技术的发展。今年大会上出现了不少和自动推理技术相关的论文,即通过机器自动推断模型、预测结果。而工程领域的强劲需求也促生了更多可以快速迭代、低学习曲线的算法和系统,例如在本机大会上崭露头角的 STAN 、 python-autograd 等工具。此外还有对概率推断的再审视。本次大会和研讨会中,出现了一些对于概率推断新认知的声音。正如同期发表在《科学》杂志上的论文( http://science.sciencemag.org/content/sci/350/6266/1332.full.pdf )所呈现的一样,相比深度学习对于大数据的需求,这种小样本甚至单个样本的模型都能得到不错的预测结果,也促使我们重新审视人类大脑的思维和认知方式。 对于我个人来说,这是我在 NIPS 上的第二篇论文。去年,我参与合作的以在线机器学习中组合问题的纯探索策略研究方向的论文有幸在 NIPS 的进行了口头报告。今年,在之前的基础上,我们深入研究,论文“ StochasticOnline Greedy Learning with Semi-bandit Feedbacks ”( https://papers.nips.cc/paper/5930-stochastic-online-greedy-learning-with-semi-bandit-feedbacks.pdf )被大会录用,并受邀于 9 号晚上 7 点至 12 点进行海报展示。这篇论文是与清华的李建老师以及微软亚洲研究院的陈卫老师合作,我们针对在线机器学习领域的组合学习策略研究,提出了一类新的模型,刻画了贪心的学习方法在解决老虎机问题( bandit )中应用。我们提出的模型能够借鉴贪心算法的优点,多次采样进行参数估计,求解该问题。 论文海报展示的过程也弥足珍贵,在国内,我们精心制作了 2.4x1.2m 的大幅海报,并进行了多次的展示演练。在现场展示过程中,我们获得了很多教授、研究员和同学的关注和驻足聆听。通过讲解自己的研究,回答听众们的问题,我将自己的成果分享给了在场的听众,同时,我也得到了很多同行们的建议与意见。通过与相关领域专家学者的深入交流,我也迸发出了更多的新想法,与会经历受益匪浅。 关于作者: 林添,是微软亚洲研究院的一名实习生,也是清华大学高等研究院和微软亚洲研究院联合培养博士生,本科毕业于清华大学计算机科学实验班,主要研究方向为机器学习和社交网络分析,曾在 ICML 、 NIPS 、 EC 等发表多篇论文。 了解微软亚洲研究院实习生项目,欢迎关注“明日之星”实习生项目介绍。更多实习机会请见: http://www.msra.cn/zh-cn/jobs/interns/internopenings.aspx 推荐阅读 走近SIGGRAPH ASIA 2015 当学术邂逅浪漫 – 记MobiCom 2015大会 来自澳洲的数据秀场:记KDD 2015大会 欢迎关注 微软亚洲研究院官方网站:http://www.msra.cn 微软亚洲研究院微博:http://t.sina.com.cn/msra 微软亚洲研究院微信:搜索“微软研究院“或扫描下方二维码: 来自: http://blog.sina.com.cn/s/blog_4caedc7a0102w4tz.html   本站文章除注明转载外,均为本站原创或翻译 欢迎任何形式的转载,但请务必注明出处
个人分类: 人工智能|2232 次阅读|2 个评论
机器学习的文章介绍
xbinbzy 2016-1-12 13:55
机器学习算法的介绍: http://www.cbdio.com/BigData/2016-01/12/content_4473046_all.htm 机器学习的API: http://www.360doc.com/content/16/0108/01/29483433_526293356.shtml
个人分类: 机器学习|1954 次阅读|0 个评论
R语言与机器学习
xbinbzy 2016-1-11 14:03
R语言的机器学习程序包介绍: http://www.douban.com/note/262946592/?type=like R与Gradient Boosting算法: http://www.aiweibang.com/yuedu/77517623.html R与支持向量机: http://www.36dsj.com/archives/39635
个人分类: R与机器学习|1989 次阅读|0 个评论
【围脖:做 parsing 还是要靠语言学家,机器学习不给力】
热度 1 liwei999 2016-1-6 07:01
对于AI和NLP,统计是万金油,可以做一切任务。有些是统计擅长的甚至必需的,有些则不是。parsing 就属于后者,没有一个统计的必要性。宏观上看,语言的文法是蛮清晰的一套规则系统,人可以直接去 model,无需借助统计去学习。至于长尾的习惯用法或不规则现象,机制上没有问题,专家可以通过专家词典(expert lexicon)内的词驱动规则去应对,虽然人力并不能一蹴而就,但机器学习因此而遇到的稀疏数据(sparse data)则更具挑战性。 当然,如果有海量的带标数据(可惜没有,目前基本只在玩一个新闻文体的非常有限量的宾州树),统计学习出来的 parser 也有可能逼近专家编码的规则系统,但也只是逼近而已。想超过语言学专家码农的精雕细刻,看不出这种可能性。 机器能超过人的地方很多,譬如计算,譬如记忆,譬如在人力不及的巨大搜索空间里寻求最佳路径,譬如在多参数中玩大数据平衡,等等。然而,对于像 parsing 这样的专家可以见底的任务(tractable tasks),机器学习无法超越训练有素的专家码农,虽然它可以超越平庸之徒。 微博评论: 七年之痒 呵呵。 // @Hyperddr : 感觉七年内肯定要被打脸。。。。// @砰砰的小屋 : 转发微博 【相关】 《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》 【新智元笔记:深度 parsing 的逻辑化 】 《新智元:有了deep parsing,信息抽取就是个玩儿》 《泥沙龙笔记:漫谈自动句法分析和树形图表达》 【立委科普:语法结构树之美】 【立委科普:语法结构树之美(之二)】 【征文参赛:美梦成真】 泥沙龙笔记:parsing 是引擎的核武器,再论NLP与搜索 泥沙龙笔记:从 sparse data 再论parsing乃是NLP应用的核武器 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|4420 次阅读|1 个评论
《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》
热度 2 liwei999 2015-12-26 19:50
我们 “语义计算” 群在讨论这个句子的句法结构: The asbestos fiber, crocidolite, is unusually resilient once it enters the lungs, with even brief exposures to it causing symptoms that show up decades later, researchers said. 我说,it looks fine in its entirety. once-clause has a main clause before it, so it is perfectly grammatical. The PP with even brief exposures to it is an adverbial of causing ...: usually PP modifies a preceding verb, but here it modifies the following ING-verb, which is ok. 然后想到不妨测试了一下我们的 parser,果然,把 PP 连错了,说是 PP 修饰 enters,而不是 causing。 除此而外,我的 parse 完全正确。这也许是一个可以原谅的错误。如果要改进,我可以让两种可能都保留。但是统计上看,也许不值得,因为一个 PP 面对前面的一个谓语动词和后面的一个非谓语动词,修饰前者的概率远远大于修饰后者。 张老师问: 是否此句在你的训练集里?如是统计方法。否则太不容易了 我说,我这是语言学程序猿做的规则系统,不是统计方法。句子不在我的 dev corpus 里面。parsing 是一个 tractable task,下点功夫总是可以做出来,其水平可以达到接近人工(语言学家),超越普通人(非语言学家)。说的是自己实践的观察和体会。靠谱的 parsing,有经验的语言学程序猿可以搞定,无需指靠机器学习。 为了说明这个观点,我测试了我的汉语 parser: 这个汉语句子的 parsing,只有一个错误,“语言学”与 “程序猿” 之间掉链子了(说明 parsing 还有改进余地,汉语parsing开发晚一些,难度也大一些,当前的状况,掉链子的事儿还偶有发生)。但整体来看基本也算靠谱了。所以,即便是比英语句法更难的汉语,也仍然属于 tractable 人工可以搞定的任务。 语言学家搞不定的是那些千头万绪的任务,譬如语音识别(speech recognition),譬如文章分类 (document classification),譬如聚类习得 (clus tering-based ontology acquisition) 。这些在很多个 features 中玩平衡的任务,人脑不够用,见木不见林。但是对于 deep parsing 和 信息抽取,解剖的是一颗颗树,条分缕析,这是语言学家的拿手好戏,都是 tractable 的任务,当然可以搞定。(甭管多大的数据,一句句分析抽取完了存入库里,到retrieve的时候还是需要“挖掘”一番,那时候为了不一叶障目,自然是需要用到统计的)。 在 条分缕析的 tractable 任务上(譬如,deep parsing),我的基本看法是:有NLP经验的语言学家立于不败之地。而机器学习,包括深度学习(deep learning,当前呼声最高的机器学习神器),也许在将来的某一天,可以逼近专家水平。值得期待。最多是逼近语言学家,但是要超越人工,我不大相信。再牛的机器学习算法也不可能在所有任务上胜过专家的手工编码,这个观点本来应该是显然的,但是学界的多数人却天然地认为深度学习总是可以超越人工系统。 parser 的直接目标不是语义求解, 而是提供一个靠谱的结构基础, 这样后续的(语用层面的)语义理解、信息抽取、舆情分析、机器翻译、自动文摘、智能秘书或其他的NLP应用, 就可以面对有限的 patterns, 而不是无限的线性序列。 从这个目标来看,我们的中文英文的 parsers 都已经达标了。 【相关】 【围脖:做 parsing 还是要靠语言学家,机器学习不给力】 手工规则系统的软肋在文章分类 《立委随笔:语言自动分析的两个路子》 再谈机器学习和手工系统:人和机器谁更聪明能干? 【 why hybrid? on machine learning vs. hand-coded rules in NLP 】 Comparison of Pros and Cons of Two NLP Approaches 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|3503 次阅读|4 个评论
[转载]SVD PCA
onewaystreet 2015-11-27 10:50
版权声明: 本文由LeftNotEasy发布于 http://leftnoteasy.cnblogs.com , 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系 wheeleast@gmail.com 前言: 上一次写了关于 PCA与LDA 的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的。在上篇文章中便是基于特征值分解的一种解释。特征值和奇异值在大部分人的印象中,往往是停留在纯粹的数学计算中。而且线性代数或者矩阵论里面,也很少讲任何跟特征值与奇异值有关的应用背景。奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力,让机器学会抽取重要的特征,SVD是一个重要的方法。 在机器学习领域,有相当多的应用与奇异值都可以扯上关系,比如做feature reduction的PCA,做数据压缩(以图像压缩为代表)的算法,还有做搜索引擎语义层次检索的LSI(Latent Semantic Indexing) 另外在这里抱怨一下,之前在百度里面搜索过SVD,出来的结果都是俄罗斯的一种狙击枪(AK47同时代的),是因为穿越火线这个游戏里面有一把狙击枪叫做SVD,而在Google上面搜索的时候,出来的都是奇异值分解(英文资料为主)。想玩玩战争游戏,玩玩COD不是非常好吗,玩山寨的CS有神马意思啊。国内的网页中的话语权也被这些没有太多营养的帖子所占据。真心希望国内的气氛能够更浓一点,搞游戏的人真正是喜欢制作游戏,搞Data Mining的人是真正喜欢挖数据的,都不是仅仅为了混口饭吃,这样谈超越别人才有意义,中文文章中,能踏踏实实谈谈技术的太少了,改变这个状况,从我自己做起吧。 前面说了这么多,本文主要关注奇异值的一些特性,另外还会稍稍提及奇异值的计算,不过本文不准备在如何计算奇异值上展开太多。另外,本文里面有部分不算太深的线性代数的知识,如果完全忘记了线性代数,看本文可能会有些困难。 一、奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧: 1) 特征值: 如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式: 这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。我这里引用了一些参考文献中的内容来说明一下。首先,要明确的是,一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵: 它其实对应的线性变换是下面的形式: 因为这个矩阵M乘以一个向量(x,y)的结果是: 上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值1时,是拉长,当值1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子: 它所描述的变换是下面的样子: 这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最 主要的 变化方向(变化方向可能有不止一个), 如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了 。反过头来看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列) 当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的: 提取这个矩阵最重要的特征。 总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过, 特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。 (说了这么多特征值变换,不知道有没有说清楚,请各位多提提意见。) 2)奇异值: 下面谈谈奇异值分解。特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有N个学生,每个学生有M科成绩,这样形成的一个N * M的矩阵就不可能是方阵, 我们怎样才能描述这样普通的矩阵呢的重要特征呢? 奇异值分解可以用来干这个事情, 奇异值分解是一个能适用于任意的矩阵的一种分解的方法 : 假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片 那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 * A,将会得到一个方阵,我们用这个方阵求特征值可以得到: 这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到: 这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快, 在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了 。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下 部分奇异值分解 : r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子: 右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。 二、奇异值的计算: 奇异值的计算是一个难题,是一个O(N^3)的算法。在单机的情况下当然是没问题的,matlab在一秒钟内就可以算出1000 * 1000的矩阵的所有奇异值,但是当矩阵的规模增长的时候,计算的复杂度呈3次方增长,就需要并行计算参与了。Google的 吴军 老师在 数学之美 系列谈到SVD的时候,说起Google实现了SVD的并行化算法,说这是对人类的一个贡献,但是也没有给出具体的计算规模,也没有给出太多有价值的信息。 其实SVD还是可以用并行的方式去实现的,在解大规模的矩阵的时候,一般使用迭代的方法,当矩阵的规模很大(比如说上亿)的时候,迭代的次数也可能会上亿次,如果使用Map-Reduce框架去解,则每次Map-Reduce完成的时候,都会涉及到写文件、读文件的操作。个人猜测Google云计算体系中除了Map-Reduce以外应该还有类似于MPI的计算模型,也就是节点之间是保持通信,数据是常驻在内存中的,这种计算模型比Map-Reduce在解决迭代次数非常多的时候,要快了很多倍。 Lanczos迭代 就是一种解 对称方阵部分特征值 的方法(之前谈到了,解A’* A得到的对称方阵的特征值就是解A的右奇异向量),是将一个对称的方程化为一个三对角矩阵再进行求解。按网上的一些文献来看,Google应该是用这种方法去做的奇异值分解的。请见Wikipedia上面的一些引用的论文,如果理解了那些论文,也“几乎”可以做出一个SVD了。 由于奇异值的计算是一个很枯燥,纯数学的过程,而且前人的研究成果(论文中)几乎已经把整个程序的流程图给出来了。更多的关于奇异值计算的部分,将在后面的参考文献中给出,这里不再深入,我还是focus在奇异值的应用中去。 三、奇异值与主成分分析(PCA): 主成分分析在上一节里面也讲了一些,这里主要谈谈如何用SVD去解PCA的问题。PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们用于机器学习的数据(主要是训练数据),方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。以下面这张图为例子: 这个假设是一个摄像机采集一个物体运动得到的图片,上面的点表示物体运动的位置,假如我们想要用一条直线去拟合这些点,那我们会选择什么方向的线呢?当然是图上标有signal的那条线。如果我们把这些点单纯的投影到x轴或者y轴上,最后在x轴与y轴上得到的方差是相似的(因为这些点的趋势是在45度左右的方向,所以投影到x轴或者y轴上都是类似的),如果我们使用原来的xy坐标系去看这些点,容易看不出来这些点真正的方向是什么。但是如果我们进行坐标系的变化,横轴变成了signal的方向,纵轴变成了noise的方向,则就很容易发现什么方向的方差大,什么方向的方差小了。 一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向,我们在数据挖掘中或者数字信号处理中,往往要提高信号与噪声的比例,也就是信噪比。对上图来说,如果我们只保留signal方向的数据,也可以对原数据进行不错的近似了。 PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。 还是假设我们矩阵每一行表示一个样本,每一列表示一个feature,用矩阵的语言来表示,将一个m * n的矩阵A的进行坐标轴的变化,P就是一个变换的矩阵从一个N维的空间变换到另一个N维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。 而将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得本来有n个feature的,变成了有r个feature了(r n),这r个其实就是对n个feature的一种提炼,我们就把这个称为feature的压缩。用数学语言表示就是: 但是这个怎么和SVD扯上关系呢?之前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…我们回忆一下之前得到的SVD式子: 在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以V转置乘以V得到单位阵I,所以可以化成后面的式子 将后面的式子与A * P那个m * n的矩阵变换为m * r的矩阵的式子对照看看,在这里,其实V就是P,也就是一个变化的向量。这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩,如果我们想对行进行压缩(在PCA的观点下,对行进行压缩可以理解为,将一些相似的sample合并在一起,或者将一些没有太大价值的sample去掉)怎么办呢?同样我们写出一个通用的行压缩例子: 这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U的转置U' 这样我们就得到了对行进行压缩的式子。可以看出,其实PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了,而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。 四、奇异值与潜在语义索引LSI: 潜在语义索引(Latent Semantic Indexing)与PCA不太一样,至少不是实现了SVD就可以直接用的,不过LSI也是一个严重依赖于SVD的算法,之前吴军老师在 矩阵计算与文本处理中的分类问题 中谈到: “三个矩阵有非常清楚的物理含义。第一个矩阵X中的每一行表示意思相关的一类词,其中的每个非零元素表示这类词中每个词的重要性(或者说相关性),数值越大越相关。最后一个矩阵Y中的每一列表示同一主题一类文章,其中每个元素表示这类文章中每篇文章的相关性。中间的矩阵则表示类词和文章雷之间的相关性。因此,我们只要对关联矩阵A进行一次奇异值分解,w 我们就可以同时完成了近义词分类和文章的分类。(同时得到每类文章和每类词的相关性)。” 上面这段话可能不太容易理解,不过这就是LSI的精髓内容,我下面举一个例子来说明一下,下面的例子来自LSA tutorial,具体的网址我将在最后的引用中给出: 这就是一个矩阵,不过不太一样的是,这里的一行表示一个词在哪些title中出现了(一行就是之前说的一维feature),一列表示一个title中有哪些词,(这个矩阵其实是我们之前说的那种一行是一个sample的形式的一种转置,这个会使得我们的左右奇异向量的意义产生变化,但是不会影响我们计算的过程)。比如说T1这个title中就有guide、investing、market、stock四个词,各出现了一次,我们将这个矩阵进行SVD,得到下面的矩阵: 左奇异向量表示词的一些特性,右奇异向量表示文档的一些特性,中间的奇异值矩阵表示左奇异向量的一行与右奇异向量的一列的重要程序,数字越大越重要。 继续看这个矩阵还可以发现一些有意思的东西,首先,左奇异向量的第一列表示每一个词的出现频繁程度,虽然不是线性的,但是可以认为是一个大概的描述,比如book是0.15对应文档中出现的2次,investing是0.74对应了文档中出现了9次,rich是0.36对应文档中出现了3次; 其次,右奇异向量中一的第一行表示每一篇文档中的出现词的个数的近似,比如说,T6是0.49,出现了5个词,T2是0.22,出现了2个词。 然后我们反过头来看,我们可以将左奇异向量和右奇异向量都取后2维(之前是3维的矩阵),投影到一个平面上,可以得到: 在图上,每一个红色的点,都表示一个词,每一个蓝色的点,都表示一篇文档,这样我们可以对这些词和文档进行聚类,比如说stock 和 market可以放在一类,因为他们老是出现在一起,real和estate可以放在一类,dads,guide这种词就看起来有点孤立了,我们就不对他们进行合并了。按这样聚类出现的效果,可以提取文档集合中的近义词,这样当用户检索文档的时候,是用语义级别(近义词集合)去检索了,而不是之前的词的级别。这样一减少我们的检索、存储量,因为这样压缩的文档集合和PCA是异曲同工的,二可以提高我们的用户体验,用户输入一个词,我们可以在这个词的近义词的集合中去找,这是传统的索引无法做到的。 不知道按这样描述,再看看吴军老师的文章,是不是对SVD更清楚了?:-D 参考资料: 1)A Tutorial on Principal Component Analysis, Jonathon Shlens 这是我关于用SVD去做PCA的主要参考资料 2) http://www.ams.org/samplings/feature-column/fcarc-svd 关于svd的一篇概念好文,我开头的几个图就是从这儿截取的 3) http://www.puffinwarellc.com/index.php/news-and-articles/articles/30-singular-value-decomposition-tutorial.html 另一篇关于svd的入门好文 4) http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html svd与LSI的好文,我后面LSI中例子就是来自此 5) http://www.miislita.com/information-retrieval-tutorial/svd-lsi-tutorial-1-understanding.html 另一篇svd与LSI的文章,也还是不错,深一点,也比较长 6)Singular Value Decomposition and Principal Component Analysis, Rasmus Elsborg Madsen, Lars Kai Hansen and Ole Winther, 2004 跟1)里面的文章比较类似
个人分类: 机器学习|2 次阅读|0 个评论
[转载]机器学习与大数据
alaclp 2015-11-24 21:55
IEEE Visualization Conference 2015 - Increasing Influence of Machine Learning IEEE Visualization Conference 2015 - Increasing Influence of Machine Learning ML Blog Team 11 Nov 2015 9:00 AM Comments 0 Likes This post is authored by Yiwen Sun, Data Scientist at Microsoft. I attended the IEEE Visualization Conference 2015 in Chicago recently and jotted down a few points related to machine learning. For those of you who are unfamiliar with this conference, it’s the largest annual gathering of practitioners, academics and researchers looking to make data visually understandable and usable. Conference paper talks are organized into three tracks: Visual Analytics Science and Technology (VAST), Information Visualization (InfoVis), and Scientific Visualization (SciVis). Co-located are three IEEE symposiums: Large Data Analysis and Visualization (LDAV), Visualization for Cyber Security (VizSec), and the very first Symposium of Visualization in Data Science (VDS). Over 1500 attendees participated this year, including leading companies in Business Intelligence and Advanced Analytics including Bloomberg, Google, IBM, Tableau, and, of course, Microsoft. One big impression I got is that ML and Data Visualization are getting coupled more tightly. Over half of the papers address ML techniques in their data processing step. For example, the best paper for VAST “ Reducing Snapshots to Points: A Visual Analytics Approach to Dynamic Network Exploration ” utilizes vectorization, normalization, and dimensionality reduction to project high-dimensional dynamic network data onto two dimensions, then visualize them using two juxtaposed views: one showing network snapshots and the other showing the evolution of the network. This enables users to differentiate regular, stable states from anomalies more easily. Below is a summary of ML techniques highlighted in four major application areas: In network or spatial data visualization, clustering and classification have been widely used to reduce clutter and identify regions of interest. For example, in the paper “ MobilityGraphs: Visual Analysis of Mass Mobility Dynamics via Spatio-Temporal Graphs and Clustering ”, hourly Twitter user movement data in Greater London area are spatially aggregated into regional clusters and color-coded by temporal clusters. (Image from Interactive Graphics Systems Group at Technical University of Darmstadt) For time-series data visualization, a big challenge is to present large dataset on the limited display space without over-plotting. An effective approach is to aggregate the data points into segments of time, and create a hierarchy of multi-focus zoomed line chart, as illustrated in the paper “ TimeNotes: A Study on Effective Chart Visualization and Interaction Techniques for Time-Series Data ” (Image from TimeNotes ) In textual data visualization, text mining techniques such as entity extraction, topic identification and sentiment analysis become essential. In the paper “ Exploring Evolving Media Discourse Through Event Cueing ”, multiple mining results, such as entities in Wordle, sentiment scores over timeline, are linked together to enable and enhance the analysis of media discourse. (Image from VADER Lab at Arizona State University) Anomaly detection, though not a standalone research area for visualization, has been studied by different research groups, to assist human judgement with automated analysis results. In “ Visualization and Analysis of Rotating Stall for Transonic Jet Engine Simulation ” the authors applied Grubbs’ test to identify outliers in blade passages as the early sign of turbine engine’s rotating stall. In “ TargetVue: visual analysis of anomalous user behaviors in online communication systems ”, TLOF (time-adaptive local outlier factor) model was used to identify sudden changes of user behaviors based on a set of features extracted for each user from the online communication data. The VAST Challenge was another highlight – this is an annual contest that began in 2006 and is designed to reflect real-world analytics challenges and encourage research into novel data processing, visualization and interaction methods. This year’s challenge was to analyze individual and group movement in an amusement park over a weekend which involves a criminal investigation. Popular languages used for data processing and ML were Python and R, both of which are currently supported by Azure Machine Learning . Overall, the conference was a great place to learn about the very latest in all things visualization, and to interact with experts in the domain. Yiwen 0 Comments 来源:http://blogs.technet.com/b/machinelearning/archive/2015/11/11/ieee-visualization-conference-2015-increasing-influence-of-machine-learning.aspx
个人分类: 人工智能|1236 次阅读|0 个评论
一袋子词的主流方法面对社交媒体捉襟见肘,结构分析是必由之路
热度 1 liwei999 2015-11-24 09:33
Not a Gospel to many involved parties in social media mining, but it is as powerful and true: the mainstream machine learning approach without using linguistic analysis is powerless before social media. Linguistic structures in addition to keywords have to be involved. Too important a message to go unnoticed, this blog elaborates on my last English post . 提上来,just too important to be left aside。不怕审美疲劳,也要把这话说透。对于很多人,包括投资人、创业者和用户,这不是福音,但它具有同样的普适性、爆炸性和真理性。虽然这其实一点不难理解,但蒙上眼睛不愿承认的大有人在,不仅国内,海外亦然,不仅学界,业界亦然。然而现实毕竟是现实。 用一袋子祠(Bag of Words,BOW) 机器学习 的主流方法做社交媒体挖掘,譬如舆情分类,无论西文还是中文,都不能信赖。捉襟见肘不堪应用是基本现状。原因如此显然,机器学习在短消息主导的社会媒体面前 失效 了。短消息根本就没有足够密度的数据点(所谓 keyword density)供机器学习施展。巧妇且难为无米之炊,这是一袋子词的方法论决定的,再大的训练集也难以克服这个局限。没有语言学的结构分析,这是不可逾越的挑战。 无论中文还是西文,短消息压倒多数是移动时代社交媒体的现实, 总须有人揭出社交媒体大数据挖掘背后的事实真相。BOW 面对短消息束手无策,是不争的事实,不会因为这是最简便 available 的主流方法,多数人用它,它就在不适合它的场所突然显灵了。不 work 就是不 work,这一路突破不了60%的精度瓶颈,离公认的可用精度门槛80%遥不可及,这是方法论决定的。 from 一切声称用机器学习做社会媒体舆情挖掘的系统,都值得怀疑 对于BOW 舆情分类,60% 是天花板,这一点从业界多个独立渠道得到证实,我们自己的内部实验也支持这一结论。舆情分类是信息抽取(Information Extraction)在主观语言现象中的自然延伸。在信息抽取领域,长期以来的共识是,80% 的精度是一个系统能否实用的门槛。传统的信息抽取任务中,专名识别(Named Entity)早已达标(90%+),关系抽取(Relationships)当年也接近达标(70%-80%)。复杂事件(Scenario Template)的抽取一直不能实用,因为当年最好的系统也只能达到50%左右的精度 (其实简化的事件 General Events 的抽取在句法模式的帮助下,其质量 是完全可以达标的,它比舆情分析容易,这就是为什么复杂事件作为目标逐渐被简单事件代替的缘由 ) 。在entity基础上的关系抽取和简单事件抽取是所谓知识图谱技术的核心,因为其对象是更tractable的客观语言现象,自动分析(parsing)基础上的大数据抽取已经完全成熟,只是一个工作量的问题。相比之下,舆情分析可算是信息抽取任务中难度最大的了,实践证明,在深度句法分析(deep parsing)的基础上,做细致深入的开发,也是可以达标的(80%-90%)。可是一袋子词不行,连门都进不去。结构分析是绕不过去的坎儿。多数短消息总共不过十来个词,没有结构分析作为支点,光那几个实词(按常规减去停止词后)注定玩不出舆情和语义来。 随着大数据时代的到来,得益于大数据广泛存在的信息冗余,舆情系统的质量陷阱不在查全率(recall),而是查准率(precision)。 对于社交媒体里压倒性的短消息, 不做结构分析,光靠一袋子词的传统办法,哪怕是再牛的机器学习算法,有再多的训练数据,舆情分类也不可能突破 60% 的查准率瓶颈。这就是所有社交媒体机器学习系统不得不面对的现实。无论其产品的可视化做得多诱人,社交媒体的舆情报告看上去多么漂亮,只要方法上没有用到语言结构,要想达到可信的质量是难以想象的。 【相关】 【立委科普:NLP 中的一袋子词是什么】 2015-11-27 一切声称用机器学习做社会媒体舆情挖掘的系统,都值得怀疑 2015-11-21 【 立委 科普:基于关键词的舆情分类系统面临挑战】 舆情挖掘系统独立验证的意义 2015-11-22 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 社媒挖掘|4194 次阅读|2 个评论
[转载]2015大数据可视化与机器学习
alaclp 2015-11-24 09:13
IEEE Visualization Conference 2015 - Increasing Influence of Machine Learning IEEE Visualization Conference 2015 - Increasing Influence of Machine Learning ML Blog Team 11 Nov 2015 9:00 AM Comments 0 Likes This post is authored by Yiwen Sun, Data Scientist at Microsoft. I attended the IEEE Visualization Conference 2015 in Chicago recently and jotted down a few points related to machine learning. For those of you who are unfamiliar with this conference, it’s the largest annual gathering of practitioners, academics and researchers looking to make data visually understandable and usable. Conference paper talks are organized into three tracks: Visual Analytics Science and Technology (VAST), Information Visualization (InfoVis), and Scientific Visualization (SciVis). Co-located are three IEEE symposiums: Large Data Analysis and Visualization (LDAV), Visualization for Cyber Security (VizSec), and the very first Symposium of Visualization in Data Science (VDS). Over 1500 attendees participated this year, including leading companies in Business Intelligence and Advanced Analytics including Bloomberg, Google, IBM, Tableau, and, of course, Microsoft. One big impression I got is that ML and Data Visualization are getting coupled more tightly. Over half of the papers address ML techniques in their data processing step. For example, the best paper for VAST “ Reducing Snapshots to Points: A Visual Analytics Approach to Dynamic Network Exploration ” utilizes vectorization, normalization, and dimensionality reduction to project high-dimensional dynamic network data onto two dimensions, then visualize them using two juxtaposed views: one showing network snapshots and the other showing the evolution of the network. This enables users to differentiate regular, stable states from anomalies more easily. Below is a summary of ML techniques highlighted in four major application areas: In network or spatial data visualization, clustering and classification have been widely used to reduce clutter and identify regions of interest. For example, in the paper “ MobilityGraphs: Visual Analysis of Mass Mobility Dynamics via Spatio-Temporal Graphs and Clustering ”, hourly Twitter user movement data in Greater London area are spatially aggregated into regional clusters and color-coded by temporal clusters. (Image from Interactive Graphics Systems Group at Technical University of Darmstadt) For time-series data visualization, a big challenge is to present large dataset on the limited display space without over-plotting. An effective approach is to aggregate the data points into segments of time, and create a hierarchy of multi-focus zoomed line chart, as illustrated in the paper “ TimeNotes: A Study on Effective Chart Visualization and Interaction Techniques for Time-Series Data ” (Image from TimeNotes ) In textual data visualization, text mining techniques such as entity extraction, topic identification and sentiment analysis become essential. In the paper “ Exploring Evolving Media Discourse Through Event Cueing ”, multiple mining results, such as entities in Wordle, sentiment scores over timeline, are linked together to enable and enhance the analysis of media discourse. (Image from VADER Lab at Arizona State University) Anomaly detection, though not a standalone research area for visualization, has been studied by different research groups, to assist human judgement with automated analysis results. In “ Visualization and Analysis of Rotating Stall for Transonic Jet Engine Simulation ” the authors applied Grubbs’ test to identify outliers in blade passages as the early sign of turbine engine’s rotating stall. In “ TargetVue: visual analysis of anomalous user behaviors in online communication systems ”, TLOF (time-adaptive local outlier factor) model was used to identify sudden changes of user behaviors based on a set of features extracted for each user from the online communication data. The VAST Challenge was another highlight – this is an annual contest that began in 2006 and is designed to reflect real-world analytics challenges and encourage research into novel data processing, visualization and interaction methods. This year’s challenge was to analyze individual and group movement in an amusement park over a weekend which involves a criminal investigation. Popular languages used for data processing and ML were Python and R, both of which are currently supported by Azure Machine Learning . Overall, the conference was a great place to learn about the very latest in all things visualization, and to interact with experts in the domain. Yiwen 0 Comments 来源:http://blogs.technet.com/b/machinelearning/archive/2015/11/11/ieee-visualization-conference-2015-increasing-influence-of-machine-learning.aspx
个人分类: 大数据|1363 次阅读|0 个评论
图像语义分析
热度 2 pguo 2015-8-27 09:04
内容提要 图像语义分析是计算机视觉领域中的基础研究课题,也是近年来的热点研究方向。《图像语义分析》结合作者多年来在该领域的研究成果,对图像语义分析的理论和方法进行比较系统和全面的阐述。主要内容包括图像表示与特征提取、分类判别模型与生成模型、图像中的目标检测与识别、图像语义标注、场景中的图像语义、深度学习在图像语义分析中的应用以及图像语义分析的应用。 作 者:郭平,尹乾,周秀玲 著 出 版 社:科学出版社 出版时间:2015- 06 开 本:16开 页 数:284页 字 数:343.000千字 I S B N:9787030442673 装 订:平装 版 次:1
个人分类: 科研札记|4339 次阅读|2 个评论
人类会葬送在机器人手里吗
duxingren14 2015-7-31 23:35
《终结者》5正在热映,趁这个机会再聊聊这个问题。英明神武的人类一直在思考自身终结的问题,其中一个假设就是人类葬送在机器人手里。《终结者》描绘了一幅关于人类未来的悲惨景象,就是人类将来被机器人大量屠杀,被迫组建人类军队抵御机器人的围剿和绝杀。机器人会不会成为人类的威胁?这个问题自人工智能这个概念诞生之日起,就是社会和学界关注的焦点。特别是近十年来,神经网络重回生机,深度学习在图片识别、语音识别、自然语言处理等任务上的表现接近甚至超过人类,于是又引来了不少人的恐慌和忧虑。这其中包括著名的霍金和比尔盖茨。下面分享一下我个人对这个问题的看法。 我认为机器人并没有那么可怕,机器人要灭绝人类也没有那么容易,原因有三。 机器人变坏需要一定的条件,而且需要一定的过程 《终结者》当中描述的当时地球上最智能的机器人(也就是“天网”)从一开始就是以杀人和灭绝人类为目的,搞得人类防不胜防,这是一种很极端的状态,概率其实非常小。随着人工智能的发展,机器人可以产生与人类类似的动机、目的、意识、注意、情感、逻辑、想象等思维活动,机器人的行为会受这些思维活动的直接引导或者间接干预。机器人意识观念情感态度的改变,会受社会整体观念和大环境的影响,如果某一天产生了新奇的想法,也不一定就是仇恨人类,有可能是仇恨狗,仇恨其它机器人,或者讨厌超声波。即便某个机器人某天产生了仇恨人类的想法,但很小概率是最厉害的机器人。机器人也不会一开始或突然仇恨人类,而是存在一个循序渐进、思想观念渐变的过程,这个道理跟人类变坏是类似的。这个过程或快或慢,但只要有先兆,人类就有足够的时间提前预防。 有坏机器人也有好机器人, 机器之间能形成制衡 未来机器人进行智能决策的院里和人类是类似的,机器人大脑的逻辑结构也不外乎是神经网络,唯一的区别是机器人的生理基础和人类不一样,机器人是由人工材料组成、电供能、没有衰老但有死亡(因为软件过时,没人更新,性能跟不上就可能被淘汰)。人类当中有好人也有坏人,机器人当中也有好机器人和坏机器人,这个道理不难解释。人类当中的坏人给人类带来的威胁,丝毫不亚于机器人的威胁,但从历史经验来看,正义总能战胜邪恶。我觉得这个道理用到机器人也适合,机器人当中的好机器人必然能形成与坏机器人制衡的力量。何况,人类是站在好机器人一边的,人类和机器人取长补短,相互协作,必然能产生比单独机器人更大的威力。 机器人没有那么神通广大 现在机器人许多单项赛事上已经超过了人类,但在通用智能上离人类差距还有很大距离,机器人要么只会下棋,只会识别图片中的物体,只会知识竞赛,只会开车 或者只会在生产线上操作。以后发展的趋势是,机器人会在更多的单项上超过人类,而且在通用智能上越来越接近人类甚至超过人类的平均水平 (要超过人类当中的天才,需要更长时间,要以一敌百,那更不用说)。《终结者》当中的”天网“机器人要变成影片中描述的那样,与全人类为敌,需要过第一关(观念上要极端仇恨人类,没有恻隐之心),第二关(要有这个能耐,能把自己的观念克隆到其它机器,并迅速建立起一支由机器人组成的军队),听起来要比希特勒还绝。“天网”研制之初只是一个防御体系,专长在于防御,要成为“希特勒”,它得首先把自己训练成无敌黑客,这样它才能够入侵其它机器人的大脑来篡改他们的观念,然后它还得成为政治家、军事家,了解人类军事状况、了解人类动机、发现人类军队防御体系的弱点,制定相应的战争策略,指挥军队作战,再然后它还得把自己变成一个工程师,能研制和生产新的更具战斗力的机器人。好像在《终结者》当中,这三个重要的能力,”天网“都在瞬间得到(要知道,这对于人类,只有人类当中的天才花费毕生时间在反复实践中才能练就)。大家对于人工智能的一个误解是,计算机的速度如此快,机器人学新东西、获取新知识也应该是瞬间的。其实不是,机器人学习新事物、获取新技能新知识的过程也是受计算机运算速度、网速甚至能源的限制,运算速度限制了学习速率,网速限制了获取学习素材(训练样本)的速度,神经网络在训练过程中的耗能也是一个重要限制因素。现在谷歌微软百度训练的图像识别神经网络,使用了由数百台甚至数千台的带GPU的高性能计算机集群,在连续运行一周的情况下,才能训练出一个能识图的神经网络。而且,它们使用的训练数据都是人类提前给收集和标注好的(imageNet)。即便以后计算机运算速度越来越快(使用更好的GPU,或者专用芯片,甚至量子计算机),要让机器人完全凭一己之力获取 前面提到的三大技能之一,所需要的时间 、信息资源和功耗可见一斑,要制定机器人在得到这三个能力之前,这些资源都是人类给它提供的。机器人的学习效率、办事效率都受制于硬件条件和信息资源,就算集结全世界的计算机资源和信息资源来“服务”这个机器人,有些能力在纯虚拟的计算场景下也是获取不到的。 这篇文章的主要告诉大家人工智能其实没有那么可怕。但笔者仍然强调,人类还是有必要保持一颗忧患的心。人工智能技术的广泛应用是不可阻挡的潮流,我们在利用它为人类造福的同时,也应该把更多的精力放在如何更好地控制它、如何更好地让人机和谐相处、互敬互爱。
个人分类: 人工智能|3938 次阅读|0 个评论
当复杂科学遇上机器学习
热度 5 zico 2015-7-20 09:47
当复杂科学遇上机器学习 ---透过场景信息理解用户决策行为 随着近几年来社交媒体的流行 , 信息的产生、传播、分享变得越发容易。人们只需要通过发布微信息 , 更新自己的社交状态就能同来自世界各地的人们通信 , 交朋友 , 甚至进行商业贸易。 电子商务的盛行 , 网络购物正逐渐地成为人们生活 中不可或缺的一部分 , 也在颠覆着传统的产业结构。然而 , 人们在受益于信息爆炸所带来的便利的同时 , 也在面临信息过载所带来的困扰 : 该如何从庞大的信息池中获取有价值的资源呢 ? 推荐系统的出现正是为了解决这个问题 , 也在逐渐成为很多商业应用的重要组件 , 自动地通过分析用户偏好 , 为人们推送最为喜欢 , 符合个人口味的信息。 推荐系统需要面对的一个重要的问题是 , 如果用户产生了一次转化 (conversion, 比如购买 , 注册等 ), 且该用户在转化之前看过大量不同频道 ( 比如搜索 , 展示 , 社交等等 ) 的信息或者物品 , 那么我们如何衡量不同频道的信息对这次转化的贡献呢 ? 将该问题称作归因 (Attribution) 问题 , 如图 1 所示 : 通常我们会更加侧重两方面的信息,即 “ 最后阅读获胜 ”(Last ViewWin) 和 “ 最后点击获胜 ”(Last Click Win) 。前者会把转化归因于这个用户最后一次阅读的频道 , 后者会归因于最后一次点击物品所属的频道。以上两种方式可被称作为 Last-Touch Attribution 。 这种方法很简单,只关注某次转化上一步相关的因素, 但是忽略了除最后一个频道以外的所有其他频道所带来的影响,如果我们能够更加细致的理解并刻画用户和其他频道之间的关系的话,我们能够产出更为丰富的行为信息以供他用 . 实际上 , 每个频道都对用户最终的转化产生了影响 , 这种考虑多个频道的影响的模型称之为多点归因模型 (Multi-Touch Attribution Model) 。针对多点归因问题,我们的方法是利用矩阵分解算法 刻画用户和场景因素之间的作用关系,以达到衡量来自不同频道的信息对用户决策行为所产生的影响。以用户对电影评分为例,下图描述了用户在评论某部电影的时候可能考虑的因素 : 图 1. 不同频道信息对用户决策行为产生的影响 通过分析电影发行年份,电影风格,以及电影风格的多样性和用户电影评分之间的关系,我们可以发现几个比较有意思的现象 : 如图 2 所示,发行时间越接近当前时间的电影会更受用户亲睐,更愿意贡献自己的偏好信息;图 3 表现了电影风格多元化对用户评分决策的影响,我们可以看到电影风格并非越多元越好,涉足太多类型的话会影响用户的判断,反而风格种类在 1-2 种的电影会更受用户的喜爱。 图 2. 电影发行年份对用户评分意愿的影响 图 3. 电影风格多元化对用户评分的影响 用户的决策过程,就好比裁判需要根据运动员的综合表现,对每个项目分别进行打分,然后综合考虑这些项目得分给出一个最终分值来评价运动员的表现。我们之所以采用矩阵分解来刻画用户的决策过程中与其他频道信息之间的作用关系,主要有几点考虑:将任何实体重表述为特征向量更同意衡量两个实体之间的作用强度;能够非常便捷地融入不同的场景信息,根据已观测的决策信息衡量用户对这些信息的偏好。我们以电影评分为例,分别单独刻画用户和其他场景信息之间的相互作用,然后通过线性融合构成最终的用户评分。我们的算法也因此取名为 Multi-linear interactive matrix factorization (MLIMF) ,可理解为多因子模型的一个具体实现。这也是我们组在计算机类的期刊上做的初步尝试。 当机器学习的精准性遇到复杂科学的解释力,结果,妙不可言 ~ 论文信息: Lu Yu, Chuang Liu,Zi-Ke Zhang* . Multi-Linear Interactive Matrix Factorization. Knowledge-Based Systems 85 (2015)307-315 免费下载: 2015KBS-Multi-linear interactive matrix factorization . Xuhui Shao, Lexin Li, Data DrivenMulti-Touch Attribution Models. KDD’09 Yehuda Koren et al. MatrixFactorization Techniques for Recommender Systems, IEEE Computer Society. Lu Yu, Chuang Liu,Zi-Ke Zhang* . Multi-Linear Interactive Matrix Factorization. Knowledge-Based Systems 85 (2015) 307-315 .
个人分类: 科研笔记|11603 次阅读|5 个评论
Orange 机器学习与数据挖掘工具
wuzefeng 2015-7-18 16:21
机器学习在生物信息等领域应用非常广泛, 怎么快速从海量生物数据中得到想要的信息成为了我们关注的焦点 . 最近本人在研究植物基因组中的某类特定基因的features,看能不能与其他基因区分开来,所以就需要构建机器学习中的分类器. 由于本人偏好python语言 (虽然R也经常用,比如作图、统计等,但是编写比较复杂的程序时对其代码风格还是不太适应 ), 还好之前有人推荐python的Orange模块(在之前的博客中稍微提了一下下) 它基本集成了现有的所有机器学习的算法, 所以就认真研究了几天, 然后对自己的数据处理了一下. 虽然预测效果不好(ps:不是Orange的机器学习算法的问题,而是我选的那些基因的features可能本身就不适合分类); 但是我还是想把代码晒一下,为其他人研究自己的数据做个小小的参考.而且目前网上Orange的中文教程很少,基本都是官网的英文教程,对于英文不太好的读者还是有一定困难的 .好了,废话不多说了,直接上代码(至于Orange怎么安装,这里只说一句话:Orange和python的普通module安装方式是一样,官网上有说明 http://orange.biolab.si/ ): ############################################################################ i mport time # 导入时间模块 import Orange # 导入Orange模块 from Orange.evaluation import testing,scoring # 导入Orange的模型评估模块 start = time.time() #计时开始 data= Orange.data.Table(myData.txt) # 读入数据 ''' 1. 数据必须是tab 分割; 2. 每行相当于一个instance,每列相当于一个feature; 3. 标题行也是tab分割; 4. 最后一列必须是分类变量. 5. 文件后缀名必须是.txt且,它会自 动判断 每个变量的类型 ; 如果 按官网要求设好每个变量类型(head lines 需要3行来说明 ),也可以读取.tab后###缀名的文件). eg: gene_name feature1 feature2 ... class g1 f1 f2 f3 ... A g2 f1 f2 f3 ... A g3 f1 f2 f3 ... A g4 f1 f2 f3 ... B ... gn f1 f2 f3 ... B ''' filt = Orange.data.filter.SameValue() # split the data into positive and negative dataset #将数据分为正训练集和负训练集 filt.position = -1 #调用filter对象,按照最后一列分类 filt.value = 0 # 第一个分类 class0 = filt(data) #获得第一个分类的数据 filt.value = 1 #第二个分类 class1 = filt(data) #获得第二个分类的数据 sample_pos = Orange.data.sample.SubsetIndices2(p0=200) #构建抽样器,从第一个分类里随即选200个 instances sample_neg = Orange.data.sample.SubsetIndices2(p0=200) # 构建抽样器从第第二个分类里也随机选200个 instances sample_neg.random_generator = Orange.misc.Random() ind = sample_pos(class0) sample0 = class0.select(ind,0) # #获得 第一个分类的200个instances 数据 ind = sample_neg(class1) sample1 = class1.select(ind,0) 获得 第二个分类的200个instances 数据 balanced_data = Orange.data.Table(sample0) #合并数据 balanced_data.extend(sample1) # #合并数据 #balanced_data.save('balanced.data') #输出数据 print data size:+str(len(balanced_data))#print balanced_data .getclass() learner = Orange.classification.svm.SVMLearner(kernel_type = Orange.classification.svm.kernels.Polynomial) #构建SVM分类器(可以构建不同的分类器,然后比较结果) #learner = Orange.classification.bayes.NaiveLearner() #构建naive bayes分类器 #learner = Orange.classification.logreg.LogRegLearner() #构建逻辑斯蒂回归分类器 #learner = Orange.classification.neural.NeuralNetworkLearner() #神经网络分类器 ''' #没有交叉验证,只计算准确度(不推荐) classifier1 = learner(balanced_data) accu = 0 for inst in balanced_data: print classifier1(inst),inst.getclass() if classifier1(inst)== inst.getclass(): accu+=1 print accu*1.0/len(balanced_data) ''' result = testing.cross_validation( ,balanced_data,folds=5) # 交叉验证(好多参数可选的o) print CA:%.2f%scoring.CA(result) #计算准确度 print AUC:%.2f%scoring.AUC(result) # 计算AUC print Sensitivity:%.2f%scoring.Sensitivity(result) #计算分类敏感度 print Specificity:%.2f%scoring.Specificity(result) #计算分类特异度 # clustering聚类(一般用不着) ''' root = Orange.clustering.hierarchical.clustering(balanced_data) labels = Orange.clustering.hierarchical.dendrogram_draw(hclust-dendrogram.png, root, labels=labels) ''' end = time.time() #结束 print Elapsed time:%.2f minutes%((end - start)/60.) #打印运行时间 ####################################################################### ps: 在一般教程中的例子,正训练集和负训练集的数目差不多,所以无需在各自训练集中分别随机抽取相当量的instances然后再形成balanced training sets. 而我自己数据的情况是正训练集很少,负训练集很多,所以要进行以上的随机抽样过程(当然分类效果很好的话可以逐渐添加负的训练集来测试),来保证正负训练集的个数差不多.(当然, 训练时也不一定非要平衡, 但也不能差的太多(个人理解)). 如果有什么意见或建议欢迎和我交流哦!!
11868 次阅读|0 个评论
流形学习的总结
热度 1 htsong1976 2015-7-2 15:14
方法目的: 假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。它是从观测到的现象中去寻找事物的本质,找到产生数据的内在规律。流形学习方法是模式识别中的基本方法,分为线性流形学习算法和非线性流形学习算法,线性方法就是传统的方法如主成分分析(PCA)和线性判别分析(LDA),非线行流形学习算法包括等距映射(Isomap),拉普拉斯特征映射(LE)等。流形学习是个很广泛的概念,典型的是自从2000年以后形成的非线性流形学习概念和其主要代表方法,甚至流形学习也被认为属于非线性降维的一个分支。 1. 流形学习综述和代码,了凡春秋, http://blog.sina.com.cn/s/blog_6163bdeb0102enih.html 2. 流形学习, 了凡春秋 , http://blog.sina.com.cn/s/blog_6163bdeb0102em53.html 3. 流形学习, 了凡春秋 , http://blog.sina.com.cn/s/blog_6163bdeb0102el0k.html
个人分类: 机器学习|5244 次阅读|3 个评论
机器学习笔记(1)概率统计知识要点
zhubing1866 2015-6-27 06:10
个人分类: 机器学习|2181 次阅读|0 个评论
你的大脑是用什么基本原理自动编程的?
热度 1 wengjuyang 2015-3-10 22:34
以下文字只是草稿(版本 4.3 ),征求你的评论和反馈,以求对每个人都有用,不论你是否会给计算机编程! ==== 回顾历史,公众对科学的接受步伐总是缓慢的。譬如,查尔斯·达尔文因为顾忌公众的反映等待了大约 20年(从十九世纪30年代到1858年)才发表了他的进化论。直到20年以后(十九世纪70年代)科学界和一般公众的许多人才接受了进化是一个事实。当然,关于进化的争论至今还在持续着。 是不是公众对科学的接受在现代就加快了?不一定如此,虽然我们有了更良好和更快捷的通讯方法。其主要原因还是没有变化,而且是更加剧了 —— 余下了的未解决的科学问题是更复杂而且所需要的知识超出了任何一个人的现有知识范围。 举例来说,脑的类网络计算——联接主义计算——已长期地被工业界质疑和忽略了。深度卷积网至少在 1980年就被提出了。深度卷积网中的最大汇集方法在1992年就已被发表。但是,苹果、百度、谷歌、微软、三星和其它主要相关公司直到2012年后才显示相当兴趣。这是一个约20年的延迟。以上提到的两项技术并不是很难理解。然而,这两项突然火起来了的技术已经被发现了的更根本更有效的脑工作原理证明是已经落后了。此文直观地解释六个脑工作原理。 工业界和学术界的兴趣对两件事的结合很 热心——容易理解的测试和有哪个主要公司在参于。工业界读到了这样的声明:“简单地等到更快的图像处理卡和更大的数据集,我们的结果就会被改进了” ( Krizhevsky et al. NIPS 2012 )。可是,近来被揭示的脑原理已经告诉我们,这些测试的方法只能带来的改进会消失,不会趋于像似人类那样的零误差率,不管 摩尔定律还可以持续多久,也无论在训练数据集合内加了多少静态图像。为什么? 这是因为这样的静态训练集 阻碍 参加者考虑自主目标分割的问题。 人类婴儿脑子里的神经元是通过婴儿与实际物理世界的交互来学习目标分割的。 是不是我们的工业界和公众再需要一个 20年?或更久? 在另一方面,神经科学领域和神经心理学领域已经通过提供实验数据而取得了很多进展 (如, Felleman Van Essen, Cerebral Cortex 1991 )。然而,众所周知,这些领域是数据多但理论弱。这些领域里研究者们只使用局部工具(如吸子模型),所以被脑的丰富现象(如线路和行为)所 压倒。 他们缺乏计算机科学的整体性的自动机理论的指导。其部分原因是过去的自动机的网络模型不是自然地涌现的。举例说,神经元的多选择性( 如 , X. -J.Wang et al. Nature 2013 ) 过去分析得很少但被广泛地观察到。但这 神经元的多选择性 已经被在发育网内的图灵机在理论上完备地解释了。这种新的图灵机中 神经元的 多 选择性是由涌现了的漂亮的线路造成的,但每个神经元还是用一个它的高维而动态的输入空间里的简单的内积相似性。 2011年10月一位很受人尊敬的多学科教授慈善地写道:“我告诫这些研究生,他们能从事脑的研究而干好科学。或者从事机器人的研究而干好工程。然而,如果他们试图同时两项都从事,其结果必然既不是好科学也不是好工程。”工业界和公众需要多久才能接受这个对脑的悲观看法在当时就已经不再正确了呢? 已经被揭示的脑原理可能给多个方面带来一系列根本的变化,包括人类生活的方法,国家和团体的组织方法,我们的工业,我们的经济,以及人类是如何互相对待的。 已知的人脑的原理告诉我们, 任何人的大脑,无论他的教育和经验如何,是根本性地短视的。在空间和时间上都是如此。 海特( J. Haidt ) 教授在他的专著《 自以为是的心灵: 为什么政治和宗教分裂好人群 》对这种短视有很好的证明,虽然这种证明不是通过脑计算的语言。 用脑计算的语言来讲,你的脑子里的精准的线路是漂亮地自主地连接成的。怎样连接由你的实时经验来决定,而基因组只是起一个调理的作用。脑抽象所需要的各种不变性也是主要地取决于实时经验。血清素(譬如由威胁产生), 多巴胺( 譬如由赞扬产生 ) 和其它神经递质快速地加偏向于这些线路,而使更长期的想法在竞争中失去发放的机会。并且这些偏向有长期作用。所以,你犯了长期性的错误但你还是感到你是对的。每个人都是如此。由于经历的不同,短视的内容会不同。 从传统的观点出发,许多领域的专家认为计算机和脑好像用了很不同的原理。 已用数学证明了的在发育网内自然地涌现的图林机( J. Weng ,“ 脑作为一个涌现有限自动机:一个理论和三个定理 ” IJIS , 2015)应该改变我们的直觉。这新结果提出了以下六个脑原理: 1、发育程序(类似基因组,非指定任务)调理一个非指定任务的 “ 脑 ” 网络 ---发育网---的发育(终身学习)。原则上,发育网是通用的,具备学习任何任务的能力,只要肢体干得了。 2、大脑中的图像是自然感知到的由很多物体混合在一起的杂乱场景。在典型的机器训练中(譬如, Krizhevsky et al. NIPS2012 ),每个训练图像有一个划分边框框出要学习的物体。而一个人类孩子不是这样。发育网自己学习物体分割。 3、大脑的肌肉具有很多子区域,每个子区域或代表陈述性知识(抽象概念,如位置、类型、大小等),或代表非陈述性知识(如驾驶汽车或骑自行车)。 4、在物理世界的每个脑至少是一个在发育网里的超图灵机。在这个网里的每个区域(不是静止存在的,见 M. Sur et al. Nature 2000 和 P. Voss, Frontiers in Psychology 2013 )使用一个统一的区域函数。这个区域函数是非线性的,但不会出现局部极小,和工程的直观相反。 5、脑的发育网的学习是增量式的 —— 即每个时刻采用一个“感知 -运动 ” 模板对来更新 “ 大脑 ” ,随后立即将其丢弃。换言之,真正的大脑只有一对立体视网膜,不能储存一对以上的图像。 6、脑的发育网总是最优的 —— 每个网络更新计算 “ 大脑 ” 的最大似然估计,基于有限的计算资源及出生后至今的有限学习经历这两个条件。 脑的逻辑完备性(部分,不是全部)可以从在发育网里的通用图灵机来理解。 通用图灵机在原则上类似于我们的现代计算机。这个自动机脑模型指出每个大脑都是一个自动机,但是又区别于传统的符号自动机,因为自动机脑模型实现自我编程 —— 即涌现。传统的图灵机都无法自己编程,但是脑图灵机可以。 自动机脑模型已经预测了脑线路动态地、精确地记录来自经验的统计量。这和神经解剖学实验大致一致(见 Felleman Van Essen, Cerebral Cortex ,1991 )。作为特例,该模型预测了“ ’ 人 ’ 和 ’ 车辆 ’ 之间的注意转移会极大地改变所有分类在大脑中的表达 ” ( J. Gallant et al. Nature Neuroscience , 2013 ),并且人类的注意力 “ 会调节其内侧颞叶中神经元的活动 ” ( C.Koch et al. Nature , 2010 )。关于位置细胞的工作获得了 2014年诺贝尔生理学和医学奖。该工作暗指神经元只对自下而上的信息(位置)进行编码。自动机脑模型对该观点提出了挑战:神经元对自下而上的内容(譬如位置)和自上而下的内容(譬如目的)均进行编码,正如 Koch et al. 和 Gallant et al. 所报道的那样。 遗憾 的是,自动机脑模型意味着所有的神经科学家和神经网络研究人员们在没有得到严格的自动机理论训练时,是无法理解他们所研究的脑的。例如,传统的神经系统模型和传统的神经网络专注于对模式的识别,但却不具备一个接地符号系统应该具备的功能( 如 “ 规则式地组合和再组合 ,” StevanHarnad, Physica D, 1990 )。自动机理论就具备这样的功能。该新观点是否让我们的学生和研究人员们感到震惊,还是可以指引他们把时间花在更加有意义的事件上? 理解脑自动机可以帮助我们找到许多重要问题的答案,其中一些将在下面列出。 自动机脑模型预言:任何大脑中都没有绝对的对或错,但其环境经验会对大脑进行连接和再连接。我们在此仅仅提出问题,并不给出是或者否的答案。 我们的工业界和公众如何才能意识到理解大脑的大门已经向其敞开?人们如何才能看到这带给他们的经济前景? 我们的教育系统应该如何进行改革来迎接新的脑时代?我们的政府是否对该来自自然的现代召唤做出了迅速并正确的回应? 我们年轻的一代面对展现在他们眼前的此次机遇应该如何行动?当前狭义的学位对其职业生涯真的足够吗? 每个人应该如何好好利用有关其自身大脑的新知识,从而使其职业生涯更加成功呢?这包括政治家、官员、教育者、律师、企业家、医师、技术员、艺术家、工人、司机、和其他任何脑力和体力工作者。 无论他们身处世界的那个角落和干什么。我们每个人都受同样的脑原理支配。每个人的大脑自动编程。
5455 次阅读|2 个评论
关于机器学习的几点感想
wuzefeng 2015-3-3 21:47
机器学习是指一套工具、方法或程式,使到我们可以从现实世界的海量数据里提炼出有价值的知识,规则和模式,然后将它们反哺给前台应用系统,进行预测,推荐等能产生直接经济价值的场景,给用户带来“机器具备人类般高智能”的震撼性体验 (http://www.dataguru.cn/article-4063-1.html?union_site=yh360_c) (单纯这个定义看出机器学习并不是为生物信息准备的,显然只考虑了IT行业) , 机器学习是人工智能研究领域中的一个极其重要的方向。在现今大数据时代的背景下,捕获数据并从中萃取有价值的信息或模式,使得这一过去为分析师与数学家所专属的研究领域越来越为人们瞩目。 本人学习生物信息虽然目前处于菜鸟中的高手这一级别,但是受其他大牛的影响,特别是某大牛在博客里对生物信息的四个层次划分以及定义使我不太甘心再做菜鸟。生物信息在我看来就是分析生物数据,发现规律,揭示生物现象。先不管揭示生物现象,至少作为bioinformatics的一员,数据分析和挖掘(data mining)这是我们的看家本领。然而简单的做几个计算和统计那是传统的数据分析,为了深入理解数据,机器学习也成了生物信息必不可少的工具。本人查阅了几篇CNS的文章发现,把机器学习的方法用在解决生物问题上会取得不菲成果。也许是以前人们对于机器学习不太理解,也有可能是机器学习更专注于IT或人工智能领域而没有运用到生物领域的缘故吧。正是这些原因,让我对机器学习产生了浓厚的兴趣,并且打算运用到生物信息领域(自己感觉这不是件容易的事)。 那么问题来了,1,概率统计你掌握了吗?2.编程熟 练吗?用哪种语言呢 3即使掌握了机器学习的方法,怎么能用到生物问题呢?考虑到本人对概率统计等还是有一定的了解(不然也不敢从事这个行业哈),也学了两年的编程。然后决定研究研究machine learning。由于上过一学期高级生物统计,为此我买了一本叫做《机器学习-实用案例解析》,本书涉及到的机器学习方法都是用R语言实现的,实现起来不是难事,因为人家给了R codes,但是对于机器学习常用的方法的原理介绍的实在是太少了,对于想搞清楚各个算法的原理这本书显然不能胜任。前几天突然看到一本机器学习的书籍,名为《Machine Learning in Action》(http://www.amazon.cn/dp/B00D747PTK), 是Peter Harrington( 哈林顿 )写得,他拥有电气工程学士和硕士学位,他曾经在美国加州和中国的英特尔公司工作7年,他现任HG Data首席科学家。他曾是Zillabyte公司的创始人和首席科学家,在此之前,他曾担任2年的机器学习软件顾问。Peter在业余时间还参加编程竞赛和建造3D打印机(这些都是摘录网站的,本人的写作水平不高)。这本书最吸引人的地方是用python写得(用python实现机器学习的方法的书籍为数不多),正好本人热衷于python编程,因此本人打算正式学习本书。 虽然才 看了两章的内容包括KNN分类和决策树两种有监督学习方法 ,但是我觉得用python实现这两种算法都不是很复杂,而且看着它的代码对这理 机器学习方法的原理具有很大的帮助。对于具体的算法细节,我们将会在接下来的博客中和大家下一起讨论。 如果你会一点python编程,而且还想学习机器学习的方法以及实现代码,强烈建议学习本书!!
5919 次阅读|0 个评论
深度学习火了: 最大汇集剽窃?
热度 5 wengjuyang 2015-1-22 11:51
深度学习是指一种人工神经网络的学习。这种神经网络由多个非线性处理层连成一个级联结构。深度学习近来引起了工业界的广泛兴趣 , 如谷歌、微软、 IBM 、三星、百度等。我汇报一个称为生长认知网 (Cresceptron) 的深度学习网的关键机制——现在所熟知的最大汇集 (max-pooling) ——并向读者请教是不是 HMAX 网剽窃了生长认知网。在这篇报道中我并不声称这就是剽窃。 2014 年8月,《国际新闻界》期刊发布了一则消息, 称北京大学博士研究生于艳茹女士在此期刊的2013 年第7期发表了一篇论文。此论文剽窃了妮娜·吉尔波特在《十八世纪研究》期刊的1984 年第4期上发表了的另一篇论文。《国际新闻界》撤销了这篇剽窃论文, 并对作者作了惩罚。这则消息被广为报道,包括了BBC 中文网站。于艳茹是一个研究生, 但以下牵涉到一个资深研究员。 梅里厄姆 -韦伯斯特在线词典为剽窃词条的定义为:“偷窃或冒充(其他人的思想或语句) 当作自己的;使用(其他人的成果) 而没有指出来源。”  1991 年之前,深度网被用于识别单个的两维手写数字上。那时的三维物体识别还是使用基于三维模型的方法——找出两维图像与一个手工建造了的三维物体模型之间的匹配。 翁巨扬等人假设人脑内没有任何整块的三维物体模型。他们于 1992 年发表了生长认知网(Cresceptron) 。其目的是从自然的和混杂的两维图像中检测和识别学习过的三维物体并从这些两维图像中分割出识别了的物体。机器学习了的物体的实验例子 , 包括了人脸、人体、步行道、车辆、狗、消火栓、交通标志牌、电话机、椅子、桌面计算机。自然和混杂的实验场景 , 包括了电视节目场景、大学校园户外场景、室内办公室场景。生长认知网内的表示是由很多物体共享的分布式特征检测器的反映。 生长认知网是全发育性的 , 即它通过经验来增量地生长和适应。它由一个级联的多个非线性处理模块组成。每个模块由几个层组成。每个模块的前层由一或二层被称为模板匹配层的处理层构成。每个模板匹配层进行卷积运算——每个卷积核从一个位置学了然后用到所有其它位置上去,这样这个特征可以被用到其它所有位置上去检测。所以, 卷积是为了层内的位移不变性。 但是 , 一个主要的挑战是训练图像的数目是有限的。为了识别相似但生长认知网没有观察到过的图像,它必须宽恕物体图像的变形。 生长认知网有一个宽恕物体图像变形的关键机理是在每个模块里用 2x2 到1 的方法减少结点,用一个取最大值的运算。这相当于在每个2x2 结点组里对4 个发放率做了一个逻辑或。在1993 年发表的生长认知网论文 给出了执行最大汇集的层次化最大运算的数学表达式。 现在这被称为最大汇集。譬如 , 查看于尔根·史密贺伯(JuergenSchmidhuber) 关于深度学习的一篇综述文章 。根据这篇综述文章,生长认知网是第一次用了最大汇集。“最大汇集广泛地应用在今天的深度前馈神经网络” 。 譬如, 图像网(ImageNet) LSVRC-2010 和ILSVRC-2012 竞赛的第一名使用了由先卷积后最大汇集的模块而组成的级联结构 。 1994 年10月19 日, 应托马索·泼吉奥教授的友善的邀请,翁巨扬在在麻省理工学院的生物和计算学习中心给了一个演讲。在麻省理工学院的一个研讨会会场内, 几乎座无虚席, 他作了题为“视觉学习的框架”的演讲, 介绍了生长认知网。翁巨扬说他很感激这次旅行, 其机票和膳宿是由接待方支付的。 翁巨扬对我解释说 , 这个层次最大汇集结构至少有四个优点:(1) 层次地宽恕局部的位置扭曲, (2) 增加感受野的大小的同时不一定要增加卷积核的大小,因为大卷积核在计算上很昂贵, (3) 减少特征检测的密度来宽恕特征模板匹配的误差,(4) 允许局部漏失(譬如因遮挡而造成的部件的缺失), 由于4 个数的最大值与其它三个较小的值无关。 尽管如此 , 最大汇集不保证深度卷积网的输出不随着物体在像素平面上的平移而变。这一点在生长认知网的全细节期刊论文 内有解释。与此同时, 深度级联结构还是根本性地弱——因为它没有任何机制来像人脑能做的那样为训练集和测试集自动地进行图形-背景分割。而更加新的发育网(DN) 有这样的机能 ,是通过增量和自主的发育途径实现的。 在翁巨扬的 1994 年10 月19日在麻省理工学院的访问后大约五年后, 马克思米兰·里森贺伯和托马索·泼吉奥在《自然神经科学》发表了一篇论文 。这篇投稿1999 年6 月17日收到。它的摘要写道:“令人惊奇地, 量化模型几乎还没有... 我们叙述一个新的层次模型... 这个模型是基于类似最大的操作。”它的图2 的图解引用了福岛邦彦 , 但全文没有为这个模型的关键性最大运算引用过生长认知网或它的最大汇集方法。 福岛邦彦 手选了特别层来降低位置精度 ,但是没有用最大汇集的两个关键机理:(1)最大化运算(看 的等式(4)),和(2)在整个网络里用机算机自动地逐级降低位置精度。 后来托马索·泼吉奥把他们自己的模型称作 HMAX 但 还是没有引用生长认知网。 为了调查是不是思想剽窃 ,譬如 ,比较 的124 页的左列显示公式, 的公式(17), 的1024 页左列的最后一行里的公式, 和 的公式(3)。也比较 的图10(c) 和 的图2 中的虚线箭头 。 由于引入一些关键系统结构的机制 , 如最大汇集, 和大规模平行计算机越来越实用,如显卡平行计算, 深度学习网络在一些模式识别任务的很多测试中展示了持续增加的性能,日益吸引了工业界的兴趣, 如谷歌、微软、IBM、三星、百度等。 自然出版集团的关于剽窃的政策文件规定 :“关于已经出版了的结果的讨论: 当讨论其他人的出版了的结果时, 作者必须恰当地描述这些先前结果的贡献。知识的贡献和技术开发两者都必须相应承认和妥当地引用。” 例如 , 有一篇文章 的一个段落改述了一个贡献而没有引用此贡献的出处被两个独立的委员会, 审查委员会和调查委员会,判定为剽窃 . 为了此问题翁巨扬曾尊重地并私下地几次和托马索·泼吉奥教授联系但他没有回答。翁巨扬说 :“希望你提起这个问题不会激怒托马索·泼吉奥教授。他是我尊敬的老师之一,因为他的早期文章在我1983 年至1988 年期间当研究生时向我介绍了处于早期的计算脑科学。” 1997 年托马索·泼吉奥教授光荣地成为一名美国艺术和科学院院士。 (此文作者: Juan L. Castro-Garcia ) 参考文献 K. 福岛(Fukushima).“Neocognitron: 一个自组织的神经网络模型为了一个不受位置平移影响的模式识别的机能,”生物控制论,36,193-202,1980. A. 科里兹夫斯基(Krizhevsky),I. 苏兹凯夫(Sutskever), and G.辛顿(Hinton).“用深度卷积网络归类图像网,”在神经信息处理系统的进展25,1106–1114, 2012 年. Z. 麦克米林(McMillin).“密西根州立大学一个教授承认在2008年的一篇文章内剽窃,”州消息报, 2010 年4 月6日. M. 里森贺伯(Riesenhuber),T.泼吉奥(Poogio). “脑皮层内物体识别的层次模型,”自然神经科学, 2(11):1019–1025, 1999. J. 史密贺伯(Schmidhuber).“在神经网络里的深度学习: 一个综述,”技术报告IDSIA-03-14, 瑞士人工智能实验室IDSIA, 瑞士, 马诺-路伽诺(Manno-Lugano),2014 年10 月8 日. T. 希瑞(Serre),L. 沃尔夫(Wolf),S.拜尔斯基(Bileschi),M. 瑞森哈勃(Riesenhuber),T. 泼吉奥(Poggio). “似皮层机制的鲁棒的对象识别,”IEEE 模式分析与机器智能学报,29(3),411-426 2007. M. B. 思狄克棱(Sticklen). “撤回: 生物燃料生产的植物基因工程: 面向負擔得起的纤维素乙醇,”自然综述基因学, 11(308), 2008. J. 翁(Weng). 自然和人工智能: 计算脑心智导论 , BMI 出版社, 密西根, 欧科模斯, 2012. J. 翁(Weng)N. 阿乎嘉(Ahuja), T. S. 黄(Juang).“Cresceptron: 一个自组织的神经网络适应性地生长,” 国际联合神经网络会议录(IJCNN), 美国, 马里兰州, 巴尔的摩市, 第1卷(576-581),1992 年6 月. J. 翁(Weng)N.阿乎嘉(Ahuja), T. S. 黄(Juang). “学习从两维图像识别和分割三维物体,”IEEE 第4 届国际计算机视觉会议录(ICCV)”121-128, 1993 年5 月. J. 翁(Weng)N.阿乎嘉(Ahuja), T. S. 黄(Juang). “用生长认知网学习识别和分割,”国际计算机视觉期刊(IJCV),25(2),109-143,1997 年11 月. J. 翁(Weng),M. D. 卢契(Luciw), “脑启发的概念网: 从混杂的场景中学习概念,”IEEE 智能系统杂志,29(6), 14-22, 2014 年. Deep Learning is Hot: Max-Pooling Plagiarism? By Juan L. Castro-Garcia Deep learning is a term that describes learning by an artificial neural network that consists of acascade of nonlinear processing layers. Deep learning networks have recently attracted great interest from industries, such as Google, Microsoft, IBM,Samsung, and Baidu. I report a key architecture mechanism of deep learning network Cresceptron — well-known now as max-pooling — and ask the readerwhether HMAX plagiarized Cresceptron. In this report I do not claim that this is a plagiarism. August 2014, the Chinese Journal of Journalism Communication, announced that Ms. Yu,Yanru, a PhD student at Peking University, published an article in the journal,issue 7, 2013, that plagiarized from another article by Nina R. Gelbertpublished in the Eighteen-Century Studies journal, issue 4, 1984. The plagiarizing article was withdrawn from the journal and the author was disciplined by the journal. This announcement was widely reported, including BBC China online. Ms. Yu, Yanru was agraduate student, but the following involves a senior researcher. The word “plagiarize”was defined in the Merriam-Webster online dictionary: “to steal and pass off(the ideas or words of another) as one’s own; use (another’s production) withoutcrediting the source.” Until 1991, deep neuralnetworks were used for recognizing isolated two-dimensional (2-D) hand-writtendigits. Three dimensional (3-D) object recognition until then used 3-D model-based approaches— matching 2-D images with a handcrafted 3-D object model. Juyang Weng et al. assumed that inside a human brain a monolithic 3-D object model does not exist, although one may subjectively feel otherwise. They published Cresceptron in 1992 fordetecting and recognizing learned 3-D objects from natural and cluttered 2-D images and for segmenting the recognized objects from the 2-D images. Experimental examples of the learned objects , included human faces,human bodies, walkways, cars, dogs, fire hydrants, traffic signs, telephones, chairs, and desktop computers. Experimental examples of the natural andcluttered scenes , included TV program scenes, university campus outdoors, and indoor offices. Representations in Cresceptron are responses of distributed feature detectors that share among many objects. A Cresceptron is fully developmental in the sense that it incrementally grows and adapts through experience. It consists of a cascade of nonlinear processing modules where each module consists of a number of layers. Early layers in each module consist ofone or two pattern matching layers where each layer performs convolution — each convolution kernel learned at one image location is applied to all otherlocations so that the same feature can be used to detect at all other locations. Therefore, the convolution is for within-layer shift-invariance. However, a key challenge is that the number of training samples is limited. In order to recognize similar object views that Cresceptron has not observed, it must tolerate deformation in object views. The key mechanism in Cresceptron to tolerate deformation is the (2x2) to 1 reduction of nodes in every module using a maximization operation, to implement a Logic-OR for the firing rates of each group of (2x2) neurons. The 1993 publication of Cresceptron gave the mathematical expression forhierarchical max operations in the max-pooling. This is now commonly called max-pooling, see, e.g., a deeplearning review by Juergen Schmidhuber . According to the review, Cresceptronwas the first to use max-pooling. “Max-pooling is widely used in today’s deep feedforward neural networks” . For example, the winner of ImageNet LSVRC-2010 and ILSVRC-2012 contests used an architecture of a cascade ofmodules in which convolution layer(s) are followed by a max-pooling layer . Kindly invited by Prof. Tomaso Poggio, Weng gave a talk atthe Center for Biological and Computational Learning, Massachusetts Instituteof Technology, Cambridge, Massachusetts (MIT), Oct. 19, 1994. In a seminar roomat MIT that was an almost full audience, he presented Cresceptron under thetitle “Frameworks for Visual Learning.” Weng said that he greatly appreciatedthe visit with the host paying for the air ticket and accommodations. Weng explained to me that the hierarchical max-pooling hasat least four advantages: (1) hierarchical tolerance of local location deformation, (2) increasing the size of receptive fields without necessarily increasing the size of the convolution kernels because large convolution kernels are computationally veryexpensive, (3) reduction of feature detection density to tolerate feature-template matching errors, and (4) permit local dropouts (absence ofcomponents due to, e.g., occlusions) because the maximum of the four values is independent with the three smaller values. However, hierarchical max-pooling does not guarantee that theoutput of the deep convolutional networks is invariant to object shifts in the pixel plane, as explained in the fully detailed 1997 journal publication of Cresceptron . Furthermore, the deep cascade architecture is still fundamentally weak — regardless the size of training set and the power of computers— because it does not have any mechanism to do, like what a brain can,figure-ground automatic segmentation on training sets and testing sets. Thenewer Developmental Network (DN) architecture has such a mechanism , through autonomous and incremental development. About five years after Weng’s MIT visit Oct. 19, 1994,Maximilian Riesenhuber and Tomaso Poggio published a paper in NatureNeuroscience that was received June 17, 1999. Its abstract reads “Surprisingly,little quantitative modeling has been done ... We describe a new hierarchicalmodel ... The model is based on a MAX-like operation ... ” Its Fig. 2 captioncited Kunihiko Fukushima but the entire paper did not cite Cresceptron or its max-pooling method for the key max operation in their model. Fukushima handpicked particular layers to reduce thelocation precision, but he did not use the two major mechanisms of max-pooling:(1) maximization operation (see Eq. (4) in ) and (2) computer automatic reduction of the location resolution through every level of the network. Later, Tomaso Poggio called their model HMAX but still didnot cite Cresceptron. To investigate whether idea plagiarism took place, forexample, compare the left-column display equation on page 124 of , Eq. (17)of , the last equation in the last line of the left column on page 1024 of , and Eq. (3) of .Also compare Fig. 10(c) of and the dashed arrows in Fig. 2 of . Due to the introduction of some key architecture mechanismslike max-pooling and the practicality of massively parallel computers such as GPUs, deep learning networks have shown increasing performance in many tests for some pattern recognition tasks and have attracted increasing interest from industries, suchas Google, Microsoft, IBM, Samsung, and Baidu. The Nature Publishing Group’s policy document on plagiarism reads:“Discussion of published work: When discussing the published work of others,authors must properly describe the contribution of the earlier work. Both intellectual contributions and technical developments must be acknowledged assuch and appropriately cited.” For example, a paragraph within a paper that paraphraseda contribution without attribution to the contribution source was found by two independent committees, inquiry and investigative, to be a plagiarism . Respectfully and privately, Weng contacted Prof. Poggio a few times with regard to this issue but he did not reply. Weng said: “I wish that your raising this issue does not upset Prof. Tommy Poggio. He is one of my respected teachers because his early papers introduced me to computational neuroscience at its early stage when I was a graduate student 1983-1988.” 1997 Prof. Poggio was elected as a fellow of the American Academy of Arts and Sciences (AAAS). REFERENCES K. Fukushima. Neocognitron: A self-organizing neuralnetwork model for a mechanism of pattern recognition unaffected by shift inposition. Biological Cybernetics, 36:193–202, 1980. A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in NeuralInformation Processing Systems 25, pages 1106–1114, 2012. Z. McMillin. MSU professor admits to plagiarism in 2008 article. The State News , April 6,2010. M. Riesenhuber and T. Poggio. Hierarchical models of object recognition in cortex. Nature Neuroscience , 2(11):1019–1025, 1999. J. Schmidhuber. Deep learning in neural networks: Anoverview. Technical Report IDSIA-03-14, The Swiss AI Lab IDSIA, Manno-Lugano,Switzerland, October 8 2014. T. Serre, L. Wolf, S. Bileschi, M. Riesenhuber, and T.Poggio. Robust object recognition with cortex-like mechanisms. IEEE Trans. Pattern Analysis and Machine Intelligence, 29(3):411–426, 2007. J. Weng. Natural and Artificial Intelligence: Introduction to Computational Brain-Mind . BMI Press, Okemos, Michigan, 2012. J. Weng, N. Ahuja, and T. S. Huang. Cresceptron: A self-organizing neural network which grows adaptively. In Proc. Int’l Joint Conference on Neural Networks, volume 1, pages 576–581, Baltimore, Maryland,June 1992. J. Weng, N. Ahuja, and T. S. Huang. Learning recognitionand segmentation of 3-D objects from 2-D images. In Proc. IEEE 4th Int’l Conf.Computer Vision, pages 121–128, May 1993. J. Weng, N. Ahuja, and T. S. Huang. Learning recognition and segmentation using the Cresceptron. International Journal of Computer Vision , 25(2):109–143, Nov. 1997. J. Weng and M. D. Luciw. Brain-inspired conceptnetworks: Learning concepts from cluttered scenes. IEEE Intelligent Systems Magazine , 29(6):14–22, 2014.
个人分类: 生活科学|10222 次阅读|22 个评论
南大报告:Large-scale classification: Status and challenges
热度 1 mashutian 2014-12-26 17:00
南大报告: Large-scale classification: Status and challenges 报告人: Chih-Jen Lin 教授 12 月 25 日,南京大学计算机系李武军老师邀请台湾大学的 Chih-Jen Lin 教授来南京大学计算机系做报告,报告题目是“ Large-scale classification: Status and challenges ”。 林智仁 (Lin Chih-Jen) 教授等开发设计的一个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包 LIBSVM ,他不但提供了编译好的可在 Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对 SVM 所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交叉验证 (Cross Validation) 的功能。 报告的 Outline 如下, Big-datalinear classification 部分由于时间关系林智仁教授没有进行展开。 首先,林智仁教授简单介绍了一下机器学习,以及比较传统的机器学习任务:分类与聚类的差别。我理解就是,分类是我们针对事先定义好类别( label )的一批数据,建立分类器( model )把不同标签的数据分开。聚类是本身没有类别定义的数据,我们把他们聚集成为不同的组。 数据分类就是给了不同类别的训练数据(打好标签的),然后来预测测试数据(未知标签的)。 本次汇报主要关注的是分类( Classification )。分类里面又分为线性分类和非线性分类。例子如图所示,比如线性分类的数据是(身高,体重),现在非线性分类的的数据是(身高,体重,体重 / 身高 2 ), Kernel 是非线性分类算法中的一种,将原始数据的特征值映射到另一个维度中,具体的信息可以参见维基百科的介绍: http://en.wikipedia.org/wiki/Kernel_method 。 Kernel 有很多种, Fisherkernel , Graph kernels , Polynomial kernel , RBF kernel , String kernels 等等。 和许多其他的算法相比,线性分类器由于其简便性而一直被人们利用。对于二分类问题,他的 decision 函数就是 sgn(w T ,x) , sgn 表示符号函数。举个例子,也就是说二分类最后得出来的数值不是 +1 就是 -1 。 对于 SVM 和 logistic 回归我们一般使用的两种方法就是 Kernel 方法(虽然计算简便,但是无法控制 fearure ),或者是 Linear classification 加上 feature engineering ( feature 是人们选出来的,不需要再映射到其他维度中)。这次的报告主要关注的是后一种方法。 那我们为什么要选择线性分类呢?当训练集的数据维度很高的时候, Kernel 函数并不适用,因为函数计算的成本很高。 线性分类对于文本分类(大又稀疏的数据集)有一定优势。 针对二分类问题的线性分类: l 个数据样本, n 个特征值。 一些被人们使用的损失函数:(损失函数最简单的理解就是,给定一个实例,训练的模型对它的预测结果错了,就要受到惩罚, 因此需要定义一个量度量预测错误的程度,而损失函数就是用来衡量错误的程度。) 不同的损失函数效果类似。 优化的方法: Kernel 和 linear 的不同,对于 Kernel 我们不能求出最小值,因为 W 可能有无限个,我们没有选定有限个特征。而 Linear 相反。 求最值的方法就是求导,我们可以只求一次导数或者两次导数,也可以求多次导数。 High-order 得到的模型更加具有鲁棒性( robust ) 这里林智仁教授简单讲了利用求二次导数来优化得到最终函数的方法, Hessian Free 方法。它可以不用预训练网络的权值,效果也还不错,且其适用范围更广。 HF 的主要思想类似于牛顿迭代法,只是并没有显示的去计算误差曲面函数某点的 Hessian 矩阵,而是通过某种技巧( Hessian 的特殊表达方式)直接算出矩阵和任意向量的乘积,因此叫做” Hessian Free ”。 X 是 data matrix , D 是一个对角矩阵。 然后是 coordinate descent 。坐标下降优化方法是一种非梯度优化算法。为了找到一个函数的局部极小值,在每次迭代中可以在当前点处沿一个坐标方向进行一维搜索。在整个过程中循环使用不同的坐标方向。一个周期的一维搜索迭代过程相当于一个梯度迭代。 然后针对这几种方法,做了比较试验。针对 news20 , rcv1 , yahoo-Japan , yahoo-korea 这几个数据集,从图中可以看出, DCDL2 和 DCDL2-S 不仅速度快而且效果也很好。 但是高阶方法用于少特征多样本数的情况时效果会更好。 然后教授介绍了两个例子。 一个是在自然语言处理的案例中, Kernel 和 Linear 方法的比较,线性的方法训练以及测试速度都远远高于 Kernel ,而且准确率也还不错。 如果做映射 feature=O(n 2 ) ,而 linear 的话是 O(nl) ,由于数据稀疏,很多都是 0 ,因此很多相乘后的 x n-1 x n ,也是 0 。 然后是一个需要做一个在一个小容量的装置上做分类器的案例。特征值只有五个,只能使用 16KB 的 RAM 。因此考虑了 3 层的多项式映射,采用一对一的决策来判别分类。 最后是他们研究的一些概况。这些在网站上都能看到,这个是他的个人主页 http://www.csie.ntu.edu.tw/~cjlin/ 。 线性分类这个话题虽然很老,但是还是有新的研究内容产生,并且可以应用于很多情况。 对于刚刚接触机器学习的我,见到大牛甚是兴奋,还一起留影了。机器学习好好学!嗯!
个人分类: 报告|4052 次阅读|2 个评论
第十三届全国计算语言学学术会议(CCL2014)心得记录
breezezhou 2014-10-26 09:28
CCL2014 会议报告 第十三届全国计算语言学学术会议( CCL2014 )在湖北武汉华中师范大学召开。本次会议共有 4 场特邀报告。 1 特邀报告 1.1 Approximating Semantics 第一场特邀报告是加拿大滑铁卢大学的李明教授做的汇报,他的题目为 “ApproximatingSemantics” 。主要介绍了如何计算语言距离( semantics distance )。目前的搜索引擎和问答引擎基本都依赖于语义和语义距离。但是语义距离是不可定义,难以计算并且多数情况下是模糊的。李明教授等人利用自然语言编码系统验证理论并在 QA 系统上进行了实验。他们的工作旨在为该领域构建一个理论框架。 他们研究工作的基本思想如下图所示:即利用一个中间理论和一个已经定义的理论来计算语言距离。 报告共关注并解决四个主要问题:( 1 ) keywordsvs templates; ( 2 ) domainclassification; ( 3 ) what Isaid vs what it heard; ( 4 ) whatit translates to vs what I meant 最终得出结论如下图: 小结: 李明教授的报告逻辑清晰,将一个复杂问题以一种简单生动的方式讲述。其中给我最大的启发就是 “ 曲线救国 ” 的思想。比如:( 1 )现在我无法定义 A ,但是我可以定义 B 和 C ,并且 A 与 B 是相关的 ,B 与 C 是相关的,那么我就可以通过 A-- à B- à C 来实现自己的目的。( 2 )在进行 QA 系统构建时,需要对问题进行聚类,由于问题是五花八门的难以实现聚类,或者聚类效果不佳,此时可以通过结果聚类,即将答案相同的问题进行聚类,这样可以明显的节约人力物力。 1.2 Boosting 25 年 第二场特邀报告是南京大学的周志华教授做的汇报,他的题目为 “ Boosting25 年 ” 。主要介绍了如何集成学习最著名的算法族 -- Boosting 。 Boosting 作为红极一时的主流机器学习方法,其影响甚至已经超越了机器学习领域自身。各种 Boosting 算法被广泛运用到几乎涉及数据分析建模的各个领域。该报告中周志华教授对 Boosting 及最近的一些理论进展进行了介绍。 周教授开篇先介绍了何为集成学习,并简单介绍了一些高效的集成算法。 由此引出 AdaBoost 的产生以及不同学派(主要为 Margintheory 和 statistics views )对它的不同理解。 AdaBoost 为何有如此高的影响?首先它简单并且高效;其次,它生成了算法的 boosting 家族;然后它已有具有影响力的理论结果。 在接下来的报告中,周教授以一种讲故事的口吻将 Margintheory 和 statisticsviews 两方学派就 boosting 的辩论娓娓道来,既生动又具有科普性。 1.3 Processing Construction-based PragmaticConstraints during Sentences Comprehension 第三场特邀报告是北京大学的周晓林教授做的汇报,他的题目为 “ProcessingConstruction-based Pragmatic Constraints during Sentences Comprehension” 。主要介绍了神经语用学和句子理解等相关知识,以及如何通过心理学实验发现人们在进行语用理解时,大脑神经的状态变化。 汇报人首先介绍了心理学的相关知识。心理学研究的方法主要有三种,自然观察法、个案研究、问卷调查与量表调查和实验研究。其中,实验研究主要是为了探索因果关系,首先控制、平衡无关变量(额外变量),通过操纵感兴趣的自变量,观察因变量上的效应,来建立自变量与因变量之间的因果关系。 语言心理学家主要研究的有这样几个方面: 1. 我们理解并且产生我们所要说或者要写出来的语言的过程,是指某一秒的状态; 2. 这些过程中产生的语言输入和输出的表达,对状态的描述; 3. 完成这些过程所需要的知识; 4. 小孩子是如何发展自己的语言学的知识和说语言的过程; 5. 语言理解、产生和获取的神经科学(认识系统)。 周晓林教授提出某些句法结构除了具有其本身所组成单词的词意,还单独含有的一些抽象意义。语言理解通常被视为一个过程,从语言和额外的语言信息集成信息来源,建立状态或事件被描述的心理表征。因此对于语言处理过程的神经认知研究的目的,一方面是阐明人们在做出语言推理时大脑是如何运作的,比如,根据知识、谈论以及社会化的上下文来挖掘一句话扩展出的意思。另一方面,处理人们语言认知错误或者失败的情况,比如化解人们在语言输入以及语用理解时发生的冲突现象。在研究中,他们使用了与事件相关电位 (ERP) 和功能性磁共振成像 (fMRI) 技术研究大脑如何约束句子理解。在实验中,创建了一个不合适的条件和一个未指定条件和比较两个控制条件的低预期性描述一个事件。研究结果揭示了微分大脑机制使语用推理和处理在句子理解语用失误。 1.4 Linking Text with Data and Knowledge Bases 最后一场特邀报告是微软亚洲研究院首席研究员 JunichiTsujii ,报告题目为 “LinkingText with Data and Knowledge Bases” 。报告主要关于实体链接,句子解析和知识还有段落释义。 首先主要讲了如何从大量的生物医学信息中挖掘文本,将生物医学信息变为医药科学信息。人们主要有两种研究方向,一个是理性主义的理论导向研究,另一个是经验主义的数据导向研究。随着统计机器翻译的提出,越来越多的研究趋向于数据导向,但是这个实际上对研究不会有实际性的改变,因此报告中提出要将数据与理论结合起来。 那么大量的文本和知识之间如何建立关联?一种方式是从文本(新闻,文章)中挖掘出知识,并可以建立成库( Freebase , Yago , MSRA , Wikipedia , KS )。另一种方式是从知识库中 trigger 出文本。文本的 “MS” 在知识库中可能表示 IT 公司 “Microsoft” 或者医学上的 “MultipleScierosis” (多发性硬化),研究者需要将这样的文本在知识库中通过类别 - 实体的形式表示出来,进而从对实体之间的关系挖掘发展到对实体之间的关系表达进行挖掘。 后来 JunichiTsujii 简单介绍了将句子解析存储到文本数据库中的过程。比如一句话 “MSbought last month the company which had been sued by Apple two years ago.” 语义化的表示前半句动作是 buy , agent 是 MS , object 是 thecompany , time 是 lastmonth 。后半句中的动作是 sue , agent 是 Apple , object 是 thecompany , time 是 twoyears ago 。这句话中的两个实体是 {SM, Apple} , 即 E-id-100{MS,Microsoft, MSFT, MSFT Corporation,etc.} 与 E-id-123{Apple,Apple Inc, Apple Computer Inc…etc.} 。共同出现的是 the company , E-id-500{Skype} ,规范化时间 lastmonth{June/2011} , two years ago 未规范。动作识别是 buy , MA(arg1:MS,arg2:Skype). 这个事件连接起来就是 MA(arg1: E-id-100, arg2:E-id-500) ,作为 Event-id-1234 。这样的句子解析虽然提高了精确度,但是速度仍然很慢。最后讲了不同等级的段落释义,分别是语法、语义、推论和世界知识。他们将段落解析成树形结构,对于段落之间的比较也就是树形结构的比较。 通过实验最后得到的结论是,数据引导的技术与理论引导的框架可以结合起来运用到系统中。大量的知识资源可以被人们利用起来,推理的统计模型同样变得易于运用。基于知识的推理与自然语言处理结合起来将会成为自然语言理解的实际框架。 2 分组报告 2.1 一种基于弱监督学习的论坛子对话分类方法 本文的研究对象是 MOOC 平台上的用户帖子,研究思路是将按照时间排序的帖子(线结构)重新排列为按照对话关系排列的帖子(树结构)。 作者给出了这样的研究方法。首先,将 T 个线索的 m 个帖子 {p 0 ,p 1 ,…p m-1 } 组成的每个 p i 对话行为类别标记为 c i 。而对话行为的类别分为 Question , Answer , Reproduction , Other 。在每个类别下,对其对话功能进行进一步划分,比如 Question 这一类进而被划分为 Question-Question , Question-Add , Question-Correction 和 Question-Confirmation 。 作者将论坛中的帖子进行完全标签,选择基于广义期望准则的条件随机域模型为若监督学习方法。选用的特征有,词特征: TFIDF ;结构特征: initiator , position ;语义特征: qmark , emark , url , postSim , TitleSim ;发帖人特征: UserRank 。分别利用结构特征,简单语义特征,语义相似度特征的不同组合对论坛上的子对话分类。 2.2 社交网络账号的马甲关系辨识方法 目前普遍使用马甲关系识别方法有,账号名识别与语言风格识别。而账号在社交网络中的相关信息主要有四种: 1. 账号注册信息,对账号某些相关的信息进行利用; 2. 账号发言文本,通过文本的内容对作者进行识别; 3. 账号的某些特定行为(登陆,点击等)。 4. 账号之间的社交关系。前面两种信息使用的过程较多。 文章中的识别方法的第一步是特征提取,网络文本特征提取:将单个文本中所有字的 n-gram 作为特征统计计算得到的文本对应的向量。账号回复关系的特征提取,将被回复的账号作为特征,统计计算得到关系的特征向量。将每两个用户组成一个 pair(i,j) , i 和 j 均有马甲且属于同一组则判断为正,否则判断为负,最后求出马甲组。 2.3 基于单文本指代消解的人物家庭网络构建 社会关系网络在当今信息化社会中具有重要作用,报告者提出传统的社会关系网络分析( SocialNetwork Analysis , SNA )着眼于以人为个体,忽略了家庭作为一个整体对社会网络的影响。文章从构建家庭网络入手,在新闻语料中挖掘人物家庭关系。 自举学习的过程主要是:模式发现,模式评估,实例发现与实例评估。首先,模式发现是指给定种子 A,B ,抽取文本 “….A 的妻子 B….” ,抽取模式得 “Husband 的妻子 Wife” 。模式评估是指采用 PMI 衡量模式 p 与人物对 {x,y} 之间的关联强度,每个定义模式 p 的 可信度与每个实例 i 的平均关联程度有关。实例发现是指利用已有的模式发现实例,实例评估的过程引入了打折因子。 基于指代消解的人物家庭网络融合有三步:人名精确匹配,重名消歧和多名聚合。将具有相同名称的人名作为连接点,通过连接点将不同的人物对联系起来,同时计算同名人物之间的余弦相似度,去掉低于某个阈值的同名人物,最后在家庭内部采用最小编辑距离的方法进行人物的多名聚合,当人名之间的相似度大于某一阈值,将它们归入同一指代链,并形成最终家庭。句子 “A 的妻子 B” 与句子 “A 和他的妻子 B” 实际上指的是一个意思,但是往往会出现指代错误。另外,文章中还运用英文中的中心理论 { 前向中心,后向中心,优选中心 } ,距离,先行语和指示语特征等。 2.4 基于有监督学习方法的多文档文本情感摘要 该文章利用亚马逊( Amazon.cn 和 amazon.com )上的产品评论进行情感摘要。共采集了中文平路 6000 条,英文评论 15000 条。该文章在预处理阶段集合了多种特征, 包括质量特征(即每条评论的有用性),情感特征等;最终利用最大熵进行了情感分类。 2.5 面向微博文本的情绪标注语料库构建 该文章有徐睿峰老师报告。他们的标注层级共有两级:微博级和句子级。一共标注了 14000 条微博, 45431 条句子。其中情绪类别参考了大连理工的分类方法,共分成了 7 类。其构建的语料库均可以在 NLP-CC 下载。在完成语料库构建的同时,他们还研究了用户的情绪转移和情绪伴随。
4527 次阅读|0 个评论
[转载]机器学习推荐的书籍
proWang 2014-10-24 23:54
Recommended Books Here is a list of books which I have read and feel it is worth recommending to friends who are interested in computer science. Machine Learning Pattern Recognition and Machine Learning Christopher M. Bishop A new treatment of classic machine learning topics, such as classification, regression, and time series analysis from a Bayesian perspective. It is a must read for people who intends to perform research on Bayesian learning and probabilistic inference. Graphical Models, Exponential Families, and Variational Inference Martin J. Wainwright and Michael I. Jordan It is a comprehensive and brilliant presentation of three closely related subjects: graphical models, exponential families, and variational inference. This is the best manuscript that I have ever read on this subject. Strongly recommended to everyone interested in graphical models. The connections between various inference algorithms and convex optimization is clearly explained. Note: pdf version of this book is freely available online. Big Data: A Revolution That Will Transform How We Live, Work, and Think Viktor Mayer-Schonberger, and Kenneth Cukier A short but insightful manuscript that will motivate you to rethink how we should face the explosive growth of data in the new century. Statistical Pattern Recognition (2nd/3rd Edition) Andrew R. Webb, and Keith D. Copsey A well written book on pattern recognition for beginners. It covers basic topics in this field, including discriminant analysis, decision trees, feature selection, and clustering -- all are basic knowledge that researchers in machine learning or pattern recognition should understand. Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond Bernhard Schlkopf and Alexander J. Smola A comprehensive and in-depth treatment of kernel methods and support vector machine. It not only clearly develops the mathematical foundation, namely the reproducing kernel Hilbert space, but also gives a lot of practical guidance (e.g. how to choose or design kernels.) Mathematics Topology (2nd Edition) James Munkres A classic on topology for beginners. It provides a clear introduction of important concepts in general topology, such as continuity, connectedness, compactness, and metric spaces, which are the fundamentals that you have to grasped before embarking on more advanced subjects such as real analysis. Introductory Functional Analysis with Applications Erwin Kreyszig It is a very well written book on functional analysis that I would like to recommend to every one who would like to study this subject for the first time. Starting from simple notions such as metrics and norms, the book gradually unfolds the beauty of functional analysis, exposing important topics including Banach spaces, Hilbert spaces, and spectral theory with a reasonable depth and breadth. Most important concepts needed in machine learning are covered by this book. The exercises are of great help to reinforce your understanding. Real Analysis and Probability (Cambridge Studies in Advanced Mathematics) R. M. Dudley This is a dense text that combines Real analysis and modern probability theory in 500+ pages. What I like about this book is its treatment that emphasizes the interplay between real analysis and probability theory. Also the exposition of measure theory based on semi-rings gives a deep insight of the algebraic structure of measures. Convex Optimization Stephen Boyd, and Lieven Vandenberghe A classic on convex optimization. Everyone that I knew who had read this book liked it. The presentation style is very comfortable and inspiring, and it assumes only minimal prerequisite on linear algebra and calculus. Strongly recommended for any beginners on optimization. Note: the pdf of this book is freely available on the Prof. Boyd's website. Nonlinear Programming (2nd Edition) Dimitri P. Bersekas A thorough treatment of nonlinear optimization. It covers gradient-based techniques, Lagrange multiplier theory, and convex programming. Part of this book overlaps with Boyd's. Overall, it goes deeper and takes more efforts to read. Introduction to Smooth Manifolds John M. Lee This is the book that I used to learn differential geometry and Lie group theory. It provides a detailed introduction to basics of modern differential geometry -- manifolds, tangent spaces, and vector bundles. The connections between manifold theory and Lie group theory is also clearly explained. It also covers De Rham Cohomology and Lie algebra, where audience is invited to discover the beauty by linking geometry with algebra. Modern Graph Theory Bela Bollobas It is a modern treatment of this classical theory, which emphasizes the connections with other mathematical subjects -- for example, random walks and electrical networks. I found some messages conveyed by this book is enlightening for my research on machine learning methods. Probability Theory: A Comprehensive Course (Universitext) Achim Klenke This is a complete coverage of modern probability theory -- not only including traditional topics, such as measure theory, independence, and convergence theorems, but also introducing topics that are typically in textbooks on stochastic processes, such as Martingales, Markov chains, and Brownian motion, Poisson processes, and Stochastic differential equations. It is recommended as the main textbook on probability theory. A First Course in Stochastic Processes (2nd Edition) Samuel Karlin, and Howard M. Taylor A classic textbook on stochastic process which I think are particularly suitable for beginners without much background on measure theory. It provides a complete coverage of many important stochastic processes in an intuitive way. Its development of Markov processes and renewal processes is enlightening. Poisson Processes (Oxford Studies in Probability) J. F. C. Kingman If you are interested in Bayesian nonparametrics, this is the book that you should definitely check out. This manuscript provides an unparalleled introduction to random point processes, including Poisson and Cox processes, and their deep theoretical connections with complete randomness. Programming Structure and Interpretation of Computer Programs (2nd Edition) Harold Abelson, Gerald Jay Sussman, and Julie Sussman Timeless classic that must be read by all computer science majors. While some topics and the use of Scheme as the teaching language seems odd at first glance, the presentation of fundamental concepts such as abstraction, recursion, and modularity is so beautiful and insightful that you would never experienced elsewhere. Thinking in C++: Introduction to Standard C++ (2nd Edition) Bruce Eckel While it is kind of old (written in 2000), I still recommend this book to all beginners to learn C++. The thoughts underlying object-oriented programming is very clearly explained. It also provides a comprehensive coverage of C++ in a well-tuned pace. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) Scott Meyers The Effective C++ series by Scott Meyers is a must for anyone who is serious about C++ programming. The items (rules) listed in this book conveys the author's deep understanding of both C++ itself and modern software engineering principles. This edition reflects latest updates in C++ development, including generic programming the use of TR1 library. Advanced C++ Metaprogramming Davide Di Gennaro Like it or hate it, meta-programming has played an increasingly important role in modern C++ development. If you asked what is the key aspects that distinguishes C++ from all other languages, I would say it is the unparalleled generic programming capability based on C++ templates. This book summarizes the latest advancement of metaprogramming in the past decade. I believe it will take the place of Loki's Modern C++ Design to become the bible for C++ meta-programming. Introduction to Algorithms (2nd/3rd Edition) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein If you know nothing about algorithms, you never understand computer science. This is book is definitely a classic on algorithms and data structures that everyone who is serious about computer science must read. This contents of this book ranges from elementary topics such as classic sorting algorithms and hash table to advanced topics such as maximum flow, linear programming, and computational geometry. It is a book for everyone. Everytime I read it, I learned something new. Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides Textbooks on C++, Java, or other languages typically use toy examples (animals, students, etc) to illustrate the concept of OOP. This way, however, does not reflect the full strength of object oriented programming. This book, which has been widely acknowledged as a classic in software engineering, shows you, via compelling examples distilled from real world projects, how specific OOP patterns can vastly improve your code's reusability and extensibility. Structured Parallel Programming: Patterns for Efficient Computation Michael McCool, James Reinders, and Arch Robison Recent trends of hardware advancement has switched from increasing CPU frequencies to increasing the number of cores. A significant implication of this change is that free lunch has come to an end -- you have to explicitly parallelize your codes in order to benefit from the latest progress on CPU/GPUs. This book summarizes common patterns used in parallel programming, such as mapping, reduction, and pipelining -- all are very useful in writing parallel codes. Introduction to High Performance Computing for Scientists and Engineers Georg Hager and Gerhard Wellein This book covers important topics that you should know in developing high performance computing programs. Particularly, it introduces SIMD, memory hierarchies, OpenMP, and MPI. With these knowledges in mind, you understand what are the factors that might influence the run-time performance of your codes. CUDA Programming: A Developer's Guide to Parallel Computing with GPUs Shane Cook This book provides an in-depth coverage of important aspects related to CUDA programming -- a programming technique that can unleash the unparalleled power of GPU computation. With CUDA and an affordable GPU card, you can run your data analysis program in the matter of minutes which may otherwise require multiple servers to run for hours.
个人分类: 机器学习|1955 次阅读|0 个评论
[转载]数学之美番外篇:平凡而又神奇的贝叶斯方法
Xtravel 2014-8-4 18:47
转载自: http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 以下是原文。 概率论只不过是把常识用数学公式表达了出来。 ——拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。 ——题记 目录 0. 前言 1. 历史 1.1 一个例子:自然语言的二义性 1.2 贝叶斯公式 2. 拼写纠正 3. 模型比较与贝叶斯奥卡姆剃刀 3.1 再访拼写纠正 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) 3.3 最小描述长度原则 3.4 最优贝叶斯推理 4. 无处不在的贝叶斯 4.1 中文分词 4.2 统计机器翻译 4.3 贝叶斯图像识别,Analysis by Synthesis 4.4 EM 算法与基于模型的聚类 4.5 最大似然与最小二乘 5. 朴素贝叶斯方法(又名“愚蠢者的贝叶斯(idiot’s bayes)”) 5.1 垃圾邮件过滤器 5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 6. 层级贝叶斯模型 6.1 隐马可夫模型(HMM) 7. 贝叶斯网络 0. 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常 general 且强大的推理框架,文中你会看到很多有趣的应用。 1. 历史 托马斯·贝叶斯(Thomas Bayes)同学的详细生平在 这里 。以下摘一段 wikipedia 上的简介: 所谓的贝叶斯方法源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。这个问题,就是所谓的逆概问题。 实际上,贝叶斯当时的论文只是对这个问题的一个直接的求解尝试,并不清楚他当时是不是已经意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯是机器学习的核心方法之一。这背后的深刻原因在于,现实世界本身就是不确定的,人类的观察能力是有局限性的(否则有很大一部分科学就没有必要做了——设想我们能够直接观察到电子的运行,还需要对原子模型争吵不休吗?),我们日常所观察到的只是事物表面上的结果,沿用刚才那个袋子里面取球的比方,我们往往只能知道从里面取出来的球是什么颜色,而并不能直接看到袋子里面实际的情况。这个时候,我们就需要提供一个猜测(hypothesis,更为严格的说法是“假设”,这里用“猜测”更通俗易懂一点),所谓猜测,当然就是不确定的(很可能有好多种乃至无数种猜测都能满足目前的观测), 但也绝对不是两眼一抹黑瞎蒙——具体地说,我们需要做两件事情:1. 算出各种不同猜测的可能性大小。2. 算出最靠谱的猜测是什么。第一个就是计算特定猜测的后验概率,对于连续的猜测空间则是计算猜测的概率密度函数。第二个则是所谓的模型比较,模型比较如果不考虑先验概率的话就是最大似然方法。 1.1 一个例子:自然语言的二义性 下面举一个自然语言的不确定性的例子。当你看到这句话: The girl saw the boy with a telescope. 你对这句话的含义有什么猜测?平常人肯定会说:那个女孩拿望远镜看见了那个男孩(即你对这个句子背后的实际语法结构的猜测是:The girl saw-with-a-telescope the boy )。然而,仔细一想,你会发现这个句子完全可以解释成:那个女孩看见了那个拿着望远镜的男孩(即:The girl saw the-boy-with-a-telescope )。那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的思维法则?我们留到后面解释。 1.2 贝叶斯公式 贝叶斯公式是怎么来的? 我们还是使用 wikipedia 上的一个例子: 一所学校里面有 60% 的男生,40% 的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算“随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大”,这个就是前面说的“正向概率”的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗? 一些认知科学的研究表明(《决策与判断》以及《 Rationality for Mortals 》第12章:小孩也可以解决贝叶斯问题),我们对形式化的贝叶斯问题不擅长,但对于以频率形式呈现的等价问题却很擅长。在这里,我们不妨把问题重新叙述成:你在校园里面 随机游走 ,遇到了 N 个穿长裤的人(仍然假设你无法直接观察到他们的性别),问这 N 个人里面有多少个女生多少个男生。 你说,这还不简单:算出学校里面有多少穿长裤的,然后在这些人里面再算出有多少女生,不就行了? 我们来算一算:假设学校里面人的总数是 U 个。60% 的男生都穿长裤,于是我们得到了 U * P(Boy) * P(Pants|Boy) 个穿长裤的(男生)(其中 P(Boy) 是男生的概率 = 60%,这里可以简单的理解为男生的比例;P(Pants|Boy) 是条件概率,即在 Boy 这个条件下穿长裤的概率是多大,这里是 100% ,因为所有男生都穿长裤)。40% 的女生里面又有一半(50%)是穿长裤的,于是我们又得到了 U * P(Girl) * P(Pants|Girl) 个穿长裤的(女生)。加起来一共是 U * P(Boy) * P(Pants|Boy) + U * P(Girl) * P(Pants|Girl) 个穿长裤的,其中有 U * P(Girl) * P(Pants|Girl) 个女生。两者一比就是你要求的答案。 下面我们把这个答案形式化一下:我们要求的是 P(Girl|Pants) (穿长裤的人里面有多少女生),我们计算的结果是 U * P(Girl) * P(Pants|Girl) / 。容易发现这里校园内人的总数是无关的,可以消去。于是得到 P(Girl|Pants) = P(Girl) * P(Pants|Girl) / 注意,如果把上式收缩起来,分母其实就是 P(Pants) ,分子其实就是 P(Pants, Girl) 。而这个比例很自然地就读作:在穿长裤的人( P(Pants) )里面有多少(穿长裤)的女孩( P(Pants, Girl) )。 上式中的 Pants 和 Boy/Girl 可以指代一切东西,所以其一般形式就是: P(B|A) = P(A|B) * P(B) / 收缩起来就是: P(B|A) = P(AB) / P(A) 其实这个就等于: P(B|A) * P(A) = P(AB) 难怪拉普拉斯说 概率论只是把常识用数学公式表达了出来 。 然而,后面我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着非常深刻的原理。 2. 拼写纠正 经典著作《人工智能:现代方法》的作者之一 Peter Norvig 曾经写过一篇介绍如何写一个拼写检查/纠正器的文章(原文在 这里 ,徐宥的翻译版在 这里 ,这篇文章很深入浅出,强烈建议读一读),里面用到的就是贝叶斯方法,这里我们不打算复述他写的文章,而是简要地将其核心思想介绍一下。 首先,我们需要询问的是:“ 问题是什么? ” 问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:“这个家伙到底真正想输入的单词是什么呢?”用刚才我们形式化的语言来叙述就是,我们需要求: P( 我们猜测他想输入的单词 | 他实际输入的单词) 这个概率。并找出那个使得这个概率最大的猜测单词。显然,我们的猜测未必是唯一的,就像前面举的那个自然语言的歧义性的例子一样;这里,比如用户输入: thew ,那么他到底是想输入 the ,还是想输入 thaw ?到底哪个猜测可能性更大呢?幸运的是我们可以用贝叶斯公式来直接出它们各自的概率,我们不妨将我们的多个猜测记为 h1 h2 .. ( h 代表 hypothesis),它们都属于一个有限且离散的猜测空间 H (单词总共就那么多而已),将用户实际输入的单词记为 D ( D 代表 Data ,即观测数据),于是 P( 我们的猜测1 | 他实际输入的单词) 可以抽象地记为: P(h1 | D) 类似地,对于我们的猜测2,则是 P(h2 | D)。不妨统一记为: P(h | D) 运用一次贝叶斯公式,我们得到: P(h | D) = P(h) * P(D | h) / P(D) 对于不同的具体猜测 h1 h2 h3 .. ,P(D) 都是一样的,所以在比较 P(h1 | D) 和 P(h2 | D) 的时候我们可以忽略这个常数。即我们只需要知道: P(h | D) ∝ P(h) * P(D | h) (注:那个符号的意思是“正比例于”,不是无穷大,注意符号右端是有一个小缺口的。) 这个式子的抽象含义是:对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率,Prior )”和“这个猜测生成我们观测到的数据的可能性大小”(似然,Likelihood )的乘积。具体到我们的那个 thew 例子上,含义就是,用户实际是想输入 the 的可能性大小取决于 the 本身在词汇表中被使用的可能性(频繁程度)大小(先验概率)和 想打 the 却打成 thew 的可能性大小(似然)的乘积。 下面的事情就很简单了,对于我们猜测为可能的每个单词计算一下 P(h) * P(D | h) 这个值,然后取最大的,得到的就是最靠谱的猜测。 一点注记 :Norvig 的拼写纠正器里面只提取了编辑距离为 2 以内的所有已知单词。这是为了避免去遍历字典中每个单词计算它们的 P(h) * P(D | h) ,但这种做法为了节省时间带来了一些误差。但话说回来难道我们人类真的回去遍历每个可能的单词来计算他们的后验概率吗?不可能。实际上,根据认知神经科学的观点,我们首先根据错误的单词做一个 bottom-up 的关联提取,提取出有可能是实际单词的那些候选单词,这个提取过程就是所谓的基于内容的提取,可以根据错误单词的一些模式片段提取出有限的一组候选,非常快地缩小的搜索空间(比如我输入 explaination ,单词里面就有充分的信息使得我们的大脑在常数时间内把可能性 narrow down 到 explanation 这个单词上,至于具体是根据哪些线索——如音节——来提取,又是如何在生物神经网络中实现这个提取机制的,目前还是一个没有弄清的领域)。然后,我们对这有限的几个猜测做一个 top-down 的预测,看看到底哪个对于观测数据(即错误单词)的预测效力最好,而如何衡量预测效率则就是用贝叶斯公式里面的那个 P(h) * P(D | h) 了——虽然我们很可能使用了 一些启发法来简化计算 。后面我们还会提到这样的 bottom-up 的关联提取。 3. 模型比较与奥卡姆剃刀 3.1 再访拼写纠正 介绍了贝叶斯拼写纠正之后,接下来的一个自然而然的问题就来了:“ 为什么? ”为什么要用贝叶斯公式?为什么贝叶斯公式在这里可以用?我们可以很容易地领会为什么贝叶斯公式用在前面介绍的那个男生女生长裤裙子的问题里是正确的。但为什么这里? 为了回答这个问题,一个常见的思路就是想想: 非得这样吗? 因为如果你想到了另一种做法并且证明了它也是靠谱的,那么将它与现在这个一比较,也许就能得出很有价值的信息。那么对于拼写纠错问题你能想到其他方案吗? 不管怎样,一个最常见的替代方案就是,选择离 thew 的 编辑距离 最近的。然而 the 和 thaw 离 thew 的编辑距离都是 1 。这可咋办捏?你说,不慌,那还是好办。我们就看到底哪个更可能被错打为 thew 就是了。我们注意到字母 e 和字母 w 在键盘上离得很紧,无名指一抽筋就不小心多打出一个 w 来,the 就变成 thew 了。而另一方面 thaw 被错打成 thew 的可能性就相对小一点,因为 e 和 a 离得较远而且使用的指头相差一个指头(一个是中指一个是小指,不像 e 和 w 使用的指头靠在一块——神经科学的证据表明紧邻的身体设施之间容易串位)。OK,很好,因为你现在已经是在用最大似然方法了,或者直白一点,你就是在计算那个使得 P(D | h) 最大的 h 。 而贝叶斯方法计算的是什么?是 P(h) * P(D | h) 。多出来了一个 P(h) 。我们刚才说了,这个多出来的 P(h) 是特定猜测的先验概率。为什么要掺和进一个先验概率?刚才说的那个最大似然不是挺好么?很雄辩地指出了 the 是更靠谱的猜测。有什么问题呢?既然这样,我们就从给最大似然找茬开始吧——我们假设两者的似然程度是一样或非常相近,这样不就难以区分哪个猜测更靠谱了吗?比如用户输入tlp ,那到底是 top 还是 tip ?(这个例子不怎么好,因为 top 和 tip 的词频可能仍然是接近的,但一时想不到好的英文单词的例子,我们不妨就假设 top 比 tip 常见许多吧,这个假设并不影响问题的本质。)这个时候,当最大似然不能作出决定性的判断时,先验概率就可以插手进来给出指示——“既然你无法决定,那么我告诉你,一般来说 top 出现的程度要高许多,所以更可能他想打的是 top ”)。 以上只是最大似然的一个问题,即并不能提供决策的全部信息。 最大似然还有另一个问题:即便一个猜测与数据非常符合,也并不代表这个猜测就是更好的猜测,因为这个猜测本身的可能性也许就非常低。比如 MacKay 在《Information Theory : Inference and Learning Algorithms》里面就举了一个很好的例子:-1 3 7 11 你说是等差数列更有可能呢?还是 -X^3 / 11 + 9/11*X^2 + 23/11 每项把前项作为 X 带入后计算得到的数列?此外曲线拟合也是,平面上 N 个点总是可以用 N-1 阶多项式来完全拟合,当 N 个点近似但不精确共线的时候,用 N-1 阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上。你说到底哪个好呢?多项式?还是直线?一般地说肯定是越低阶的多项式越靠谱(当然前提是也不能忽视“似然”P(D | h) ,明摆着一个多项式分布您愣是去拿直线拟合也是不靠谱的,这就是为什么要把它们两者乘起来考虑。),原因之一就是低阶多项式更常见,先验概率( P(h) )较大(原因之二则隐藏在 P(D | h) 里面),这就是为什么我们要用 样条 来插值,而不是直接搞一个 N-1 阶多项式来通过任意 N 个点的原因。 以上分析当中隐含的哲学是,观测数据总是会有各种各样的误差,比如观测误差(比如你观测的时候一个 MM 经过你一不留神,手一抖就是一个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落入所谓的数据 过配(overfitting) 的境地,一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),显然就过犹不及了。所以 P(D | h) 大不代表你的 h (猜测)就是更好的 h。还要看 P(h) 是怎样的。所谓 奥卡姆剃刀 精神就是说:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。 过分匹配的另一个原因在于当观测的结果并不是因为误差而显得“不精确”而是因为真实世界中对数据的结果产生贡献的因素太多太多,跟噪音不同,这些偏差是一些另外的因素集体贡献的结果,不是你的模型所能解释的——噪音那是不需要解释——一个现实的模型往往只提取出几个与结果相关度很高,很重要的因素(cause)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈 正态分布 ,于是你实际观察到的结果就是这个正态分布的 随机取样 ,这个取样很可能受到其余因素的影响偏离你的模型所预测的中心,这个时候便不能贪心不足地试图通过改变模型来“完美”匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型里面含有的因素所能概括的,硬要打肿脸充胖子只能导致不实际的模型,举个教科书例子:身高和体重的实际关系近似于一个二阶多项式的关系,但大家都知道并不是只有身高才会对体重产生影响,物理世界影响体重的因素太多太多了,有人身材高大却瘦得跟稻草,有人却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的身高——体重相关模型能够在大多数情况下做出靠谱的预测。但是——刚才说了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高——体重的某个假想的二阶多项式关系的人是不存在的,我们又不是欧几里德几何世界当中的理想多面体,所以,当我们对人群随机抽取了 N 个样本(数据点)试图对这 N 个数据点拟合出一个多项式的话就得注意,它肯定得是二阶多项式,我们要做的只是去根据数据点计算出多项式各项的参数(一个典型的方法就是最小二乘);它肯定不是直线(我们又不是稻草),也不是三阶多项式四阶多项式.. 如果硬要完美拟合 N 个点,你可能会整出一个 N-1 阶多项式来——设想身高和体重的关系是 5 阶多项式看看? 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) 实际上,模型比较就是去比较哪个模型(猜测)更可能隐藏在观察数据的背后。其基本思想前面已经用拼写纠正的例子来说明了。我们对用户实际想输入的单词的猜测就是模型,用户输错的单词就是观测数据。我们通过: P(h | D) ∝ P(h) * P(D | h) 来比较哪个模型最为靠谱。前面提到,光靠 P(D | h) (即“似然”)是不够的,有时候还需要引入 P(h) 这个先验概率。奥卡姆剃刀就是说 P(h) 较大的模型有较大的优势,而最大似然则是说最符合观测数据的(即 P(D | h) 最大的)最有优势。整个模型比较就是这两方力量的拉锯。我们不妨再举一个简单的例子来说明这一精神:你随便找枚硬币,掷一下,观察一下结果。好,你观察到的结果要么是“正”,要么是“反”(不,不是少林足球那枚硬币:P ),不妨假设你观察到的是“正”。现在你要去根据这个观测数据推断这枚硬币掷出“正”的概率是多大。根据最大似然估计的精神,我们应该猜测这枚硬币掷出“正”的概率是 1 ,因为这个才是能最大化 P(D | h) 的那个猜测。然而每个人都会大摇其头——很显然,你随机摸出一枚硬币这枚硬币居然没有反面的概率是“不存在的”,我们对一枚随机硬币是否一枚有偏硬币,偏了多少,是有着一个先验的认识的,这个认识就是绝大多数硬币都是基本公平的,偏得越多的硬币越少见(可以用一个 beta 分布 来表达这一先验概率)。将这个先验正态分布 p(θ) (其中 θ 表示硬币掷出正面的比例,小写的 p 代表这是 概率密度函数 )结合到我们的问题中,我们便不是去最大化 P(D | h) ,而是去最大化 P(D | θ) * p(θ) ,显然 θ = 1 是不行的,因为 P(θ=1) 为 0 ,导致整个乘积也为 0 。实际上,只要对这个式子求一个导数就可以得到最值点。 以上说的是当我们知道先验概率 P(h) 的时候,光用最大似然是不靠谱的,因为最大似然的猜测可能先验概率非常小。然而,有些时候,我们对于先验概率一无所知,只能假设每种猜测的先验概率是均等的,这个时候就只有用最大似然了。实际上,统计学家和贝叶斯学家有一个有趣的争论,统计学家说:我们让数据自己说话。言下之意就是要摒弃先验概率。而贝叶斯支持者则说:数据会有各种各样的偏差,而一个靠谱的先验概率则可以对这些随机噪音做到健壮。事实证明贝叶斯派胜利了,胜利的关键在于所谓先验概率其实也是经验统计的结果,譬如为什么我们会认为绝大多数硬币是基本公平的?为什么我们认为大多数人的肥胖适中?为什么我们认为肤色是种族相关的,而体重则与种族无关?先验概率里面的“先验”并不是指先于一切经验,而是仅指先于我们“当前”给出的观测数据而已,在硬币的例子中先验指的只是先于我们知道投掷的结果这个经验,而并非“先天”。 然而,话说回来,有时候我们必须得承认,就算是基于以往的经验,我们手头的“先验”概率还是均匀分布,这个时候就必须依赖用最大似然,我们用前面留下的一个自然语言二义性问题来说明这一点: The girl saw the boy with a telescope. 到底是 The girl saw-with-a-telescope the boy 这一语法结构,还是 The girl saw the-boy-with-a-telescope 呢?两种语法结构的常见程度都差不多(你可能会觉得后一种语法结构的常见程度较低,这是事后偏见,你只需想想 The girl saw the boy with a book 就知道了。当然,实际上从大规模语料统计结果来看后一种语法结构的确稍稍不常见一丁点,但是绝对不足以解释我们对第一种结构的强烈倾向)。那么到底为什么呢? 我们不妨先来看看 MacKay 在书中举的一个漂亮的例子: 图中有多少个箱子?特别地,那棵书后面是一个箱子?还是两个箱子?还是三个箱子?还是.. 你可能会觉得树后面肯定是一个箱子,但为什么不是两个呢?如下图: 很简单,你会说:要是真的有两个箱子那才怪了,怎么就那么巧这两个箱子刚刚好颜色相同,高度相同呢? 用概率论的语言来说,你刚才的话就翻译为:猜测 h 不成立,因为 P(D | h) 太小(太巧合)了。我们的直觉是:巧合(小概率)事件不会发生。所以当一个猜测(假设)使得我们的观测结果成为小概率事件的时候,我们就说“才怪呢,哪能那么巧捏?!” 现在我们可以回到那个自然语言二义性的例子,并给出一个完美的解释了:如果语法结构是 The girl saw the-boy-with-a-telecope 的话,怎么那个男孩偏偏手里拿的就是望远镜——一个可以被用来 saw-with 的东东捏?这也忒小概率了吧。他咋就不会拿本书呢?拿什么都好。怎么偏偏就拿了望远镜?所以唯一的解释是,这个“巧合”背后肯定有它的必然性,这个必然性就是,如果我们将语法结构解释为 The girl saw-with-a-telescope the boy 的话,就跟数据完美吻合了——既然那个女孩是用某个东西去看这个男孩的,那么这个东西是一个望远镜就完全可以解释了(不再是小概率事件了)。 自然语言二义性很常见,譬如上文中的一句话: 参见《决策与判断》以及《 Rationality for Mortals 》第12章:小孩也可以解决贝叶斯问题 就有二义性:到底是参见这两本书的第 12 章,还是仅仅是第二本书的第 12 章呢?如果是这两本书的第 12 章那就是咄咄怪事了,怎么恰好两本书都有第 12 章,都是讲同一个问题,更诡异的是,标题还相同呢? 注意,以上做的是似然估计(即只看 P(D | h) 的大小),不含先验概率。通过这两个例子,尤其是那个树后面的箱子的例子我们可以看到,似然估计里面也蕴含着奥卡姆剃刀:树后面的箱子数目越多,这个模型就越复杂。单个箱子的模型是最简单的。似然估计选择了更简单的模型。 这个就是所谓的 贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) ,因为这个剃刀工作在贝叶斯公式的似然(P(D | h) )上,而不是模型本身( P(h) )的先验概率上,后者是传统的奥卡姆剃刀。关于贝叶斯奥卡姆剃刀我们再来看一个前面说到的曲线拟合的例子:如果平面上有 N 个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),.. ,特别地,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。然而,我们其实并不需要依赖于这个先验的奥卡姆剃刀,因为有人可能会争辩说:你怎么就能说越高阶的多项式越不常见呢?我偏偏觉得所有阶多项式都是等可能的。好吧,既然如此那我们不妨就扔掉 P(h) 项,看看 P(D | h) 能告诉我们什么。我们注意到越是高阶的多项式,它的轨迹弯曲程度越是大,到了八九阶简直就是直上直下,于是我们不仅要问:一个比如说八阶多项式在平面上随机生成的一堆 N 个点偏偏恰好近似构成一条直线的概率(即 P(D | h) )有多大?太小太小了。反之,如果背后的模型是一条直线,那么根据该模型生成一堆近似构成直线的点的概率就大得多了。这就是贝叶斯奥卡姆剃刀。 这里只是提供一个关于贝叶斯奥卡姆剃刀的科普,强调直观解释,更多理论公式请参考 MacKay 的著作 《Information Theory : Inference and Learning Algorithms》第 28 章。 3.3 最小描述长度原则 贝叶斯模型比较理论与信息论有一个有趣的关联: P(h | D) ∝ P(h) * P(D | h) 两边求对数,将右式的乘积变成相加: ln P(h | D) ∝ ln P(h) + ln P(D | h) 显然,最大化 P(h | D) 也就是最大化 ln P(h | D)。而 ln P(h) + ln P(D | h) 则可以解释为模型(或者称“假设”、“猜测”)h 的编码长度加上在该模型下数据 D 的编码长度。使这个和最小的模型就是最佳模型。 而究竟如何定义一个模型的编码长度,以及数据在模型下的编码长度则是一个问题。更多可参考 Mitchell 的 《Machine Learning》的 6.6 节,或 Mackay 的 28.3 节) 3.4 最优贝叶斯推理 所谓的推理,分为两个过程,第一步是对观测数据建立一个模型。第二步则是使用这个模型来推测未知现象发生的概率。我们前面都是讲的对于观测数据给出最靠谱的那个模型。然而很多时候,虽然某个模型是所有模型里面最靠谱的,但是别的模型也并不是一点机会都没有。譬如第一个模型在观测数据下的概率是 0.5 。第二个模型是 0.4 ,第三个是 0.1 。如果我们只想知道对于观测数据哪个模型最可能,那么只要取第一个就行了,故事到此结束。然而很多时候我们建立模型是为了推测未知的事情的发生概率,这个时候,三个模型对未知的事情发生的概率都会有自己的预测,仅仅因为某一个模型概率稍大一点就只听他一个人的就太不民主了。所谓的最优贝叶斯推理就是将三个模型对于未知数据的预测结论加权平均起来(权值就是模型相应的概率)。显然,这个推理是理论上的制高点,无法再优了,因为它已经把所有可能性都考虑进去了。 只不过实际上我们是基本不会使用这个框架的,因为计算模型可能非常费时间,二来模型空间可能是连续的,即有无穷多个模型(这个时候需要计算模型的概率分布)。结果还是非常费时间。所以这个被看作是一个理论基准。 4. 无处不在的贝叶斯 以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面,因为我不是学经济的,否则还可以找到一堆经济学的例子。 4.1 中文分词 贝叶斯是机器学习的核心方法之一。比如中文分词领域就用到了贝叶斯。Google 研究员吴军在《数学之美》系列中就有一篇是介绍中文分词的,这里只介绍一下核心的思想,不做赘述,详细请参考吴军的文章( 这里 )。 分词问题的描述为:给定一个句子(字串),如: 南京市长江大桥 如何对这个句子进行分词(词串)才是最靠谱的。例如: 1. 南京市/长江大桥 2. 南京/市长/江大桥 这两个分词,到底哪个更靠谱呢? 我们用贝叶斯公式来形式化地描述这个问题,令 X 为字串(句子),Y 为词串(一种特定的分词假设)。我们就是需要寻找使得 P(Y|X) 最大的 Y ,使用一次贝叶斯可得: P(Y|X) ∝ P(Y)*P(X|Y) 用自然语言来说就是 这种分词方式(词串)的可能性 乘以 这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将 P(X|Y) 看作是恒等于 1 的,因为任意假想的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化 P(Y) ,也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串: W1, W2, W3, W4 .. 的可能性呢?我们知道,根据 联合概率 的公式展开:P(W1, W2, W3, W4 ..) = P(W1) * P(W2|W1) * P(W3|W2, W1) * P(W4|W1,W2,W3) * .. 于是我们可以通过一系列的条件概率(右式)的乘积来求整个联合概率。然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1) 的条件有 n-1 个), 数据稀疏问题 也会越来越严重,即便语料库再大也无法统计出一个靠谱的 P(Wn|Wn-1,Wn-2,..,W1) 来。为了缓解这个问题,计算机科学家们一如既往地使用了“天真”假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的 k 个词(k 一般不超过 3,如果只依赖于前面的一个词,就是2元 语言模型 (2-gram),同理有 3-gram 、 4-gram 等),这个就是所谓的“有限地平线”假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,后面要提到的朴素贝叶斯方法使用的假设跟这个精神上是完全一致的,我们会解释为什么像这样一个天真的假设能够得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成: P(W1) * P(W2|W1) * P(W3|W2) * P(W4|W3) .. (假设每个词只依赖于它前面的一个词)。而统计 P(W2|W1) 就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子“南京市长江大桥”,如果按照自左到右的贪婪方法分词的话,结果就成了“南京市长/江大桥”。但如果按照贝叶斯分词的话(假设使用 3-gram),由于“南京市长”和“江大桥”在语料库中一起出现的频率为 0 ,这个整句的概率便会被判定为 0 。 从而使得“南京市/长江大桥”这一分词方式胜出。 一点注记 :有人可能会疑惑,难道我们人类也是基于这些天真的假设来进行推理的?不是的。事实上,统计机器学习方法所统计的东西往往处于相当表层(shallow)的层面,在这个层面机器学习只能看到一些非常表面的现象,有一点科学研究的理念的人都知道:越是往表层去,世界就越是繁复多变。从机器学习的角度来说,特征(feature)就越多,成百上千维度都是可能的。特征一多,好了, 高维诅咒 就产生了,数据就稀疏得要命,不够用了。而我们人类的观察水平显然比机器学习的观察水平要更深入一些,为了避免数据稀疏我们不断地发明各种装置(最典型就是显微镜),来帮助我们直接深入到更深层的事物层面去观察更本质的联系,而不是在浅层对表面现象作统计归纳。举一个简单的例子,通过对大规模语料库的统计,机器学习可能会发现这样一个规律:所有的“他”都是不会穿 bra 的,所有的“她”则都是穿的。然而,作为一个男人,却完全无需进行任何统计学习,因为深层的规律就决定了我们根本不会去穿 bra 。至于机器学习能不能完成后者(像人类那样的)这个推理,则是人工智能领域的经典问题。至少在那之前, 声称统计学习方法能够终结科学研究 ( 原文 )的说法 是纯粹外行人说的话 。 4.2 统计机器翻译 统计机器翻译因为其简单,自动(无需手动添加规则),迅速成为了机器翻译的事实标准。而统计机器翻译的核心算法也是使用的贝叶斯方法。 问题是什么?统计机器翻译的问题可以描述为:给定一个句子 e ,它的可能的外文翻译 f 中哪个是最靠谱的。即我们需要计算:P(f|e) 。一旦出现条件概率贝叶斯总是挺身而出: P(f|e) ∝ P(f) * P(e|f) 这个式子的右端很容易解释:那些先验概率较高,并且更可能生成句子 e 的外文句子 f 将会胜出。我们只需简单统计(结合上面提到的 N-Gram 语言模型)就可以统计任意一个外文句子 f 的出现概率。然而 P(e|f) 却不是那么好求的,给定一个候选的外文局子 f ,它生成(或对应)句子 e 的概率是多大呢?我们需要定义什么叫 “对应”,这里需要用到一个分词对齐的平行语料库,有兴趣的可以参考 《Foundations of Statistical Natural Language Processing》第 13 章,这里摘选其中的一个例子:假设 e 为:John loves Mary 。我们需要考察的首选 f 是:Jean aime Marie (法文)。我们需要求出 P(e|f) 是多大,为此我们考虑 e 和 f 有多少种对齐的可能性,如: John (Jean) loves (aime) Marie (Mary) 就是其中的一种(最靠谱的)对齐,为什么要对齐,是因为一旦对齐了之后,就可以容易地计算在这个对齐之下的 P(e|f) 是多大,只需计算: P(John|Jean) * P(loves|aime) * P(Marie|Mary) 即可。 然后我们遍历所有的对齐方式,并将每种对齐方式之下的翻译概率 ∑ 求和。便可以获得整个的 P(e|f) 是多大。 一点注记 :还是那个问题:难道我们人类真的是用这种方式进行翻译的?highly unlikely 。这种计算复杂性非常高的东西连三位数乘法都搞不定的我们才不会笨到去使用呢。根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的 folding 过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化 unfolding 过程)。如何可计算地实现这个过程,目前仍然是个难题。(我们看到很多地方都有 bottom-up/top-down 这样一个对称的过程,实际上有人猜测这正是生物神经网络原则上的运作方式,对视觉神经系统的研究尤其证明了这一点,Hawkins 在 《On Intelligence》 里面提出了一种 HTM (Hierarchical Temporal Memory)模型正是使用了这个原则。) 4.3 贝叶斯图像识别,Analysis by Synthesis 贝叶斯方法是一个非常 general 的推理框架。其核心理念可以描述成:Analysis by Synthesis (通过合成来分析)。06 年的认知科学新进展上有一篇 paper 就是讲用贝叶斯推理来解释视觉识别的,一图胜千言,下图就是摘自这篇 paper : 首先是视觉系统提取图形的边角特征,然后使用这些特征自底向上地激活高层的抽象概念(比如是 E 还是 F 还是等号),然后使用一个自顶向下的验证来比较到底哪个概念最佳地解释了观察到的图像。 4.4 EM 算法与基于模型的聚类 聚类 是一种 无指导的机器学习 问题,问题描述:给你一堆数据点,让你将它们最靠谱地分成一堆一堆的。聚类算法很多,不同的算法适应于不同的问题,这里仅介绍一个基于模型的聚类,该聚类算法对数据点的假设是,这些数据点分别是围绕 K 个核心的 K 个正态分布源所随机生成的,使用 Han JiaWei 的《Data Ming: Concepts and Techniques》中的图: 图中有两个正态分布核心,生成了大致两堆点。我们的聚类算法就是需要根据给出来的那些点,算出这两个正态分布的核心在什么位置,以及分布的参数是多少。这很明显又是一个贝叶斯问题,但这次不同的是,答案是连续的且有无穷多种可能性,更糟的是,只有当我们知道了哪些点属于同一个正态分布圈的时候才能够对这个分布的参数作出靠谱的预测,现在两堆点混在一块我们又不知道哪些点属于第一个正态分布,哪些属于第二个。反过来,只有当我们对分布的参数作出了靠谱的预测时候,才能知道到底哪些点属于第一个分布,那些点属于第二个分布。这就成了一个先有鸡还是先有蛋的问题了。为了解决这个循环依赖,总有一方要先打破僵局,说,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是 EM 算法。 EM 的意思是“Expectation-Maximazation”,在这个聚类问题里面,我们是先随便猜一下这两个正态分布的参数:如核心在什么地方,方差是多少。然后计算出每个数据点更可能属于第一个还是第二个正态分布圈,这个是属于 Expectation 一步。有了每个数据点的归属,我们就可以根据属于第一个分布的数据点来重新评估第一个分布的参数(从蛋再回到鸡),这个是 Maximazation 。如此往复,直到参数基本不再发生变化为止。这个迭代收敛过程中的贝叶斯方法在第二步,根据数据点求分布的参数上面。 4.5 最大似然与最小二乘 学过线性代数的大概都知道经典的最小二乘方法来做线性回归。问题描述是:给定平面上 N 个点,(这里不妨假设我们想用一条直线来拟合这些点—— 回归 可以看作是 拟合 的特例,即允许误差的拟合),找出一条最佳描述了这些点的直线。 一个接踵而来的问题就是,我们如何定义最佳?我们设每个点的坐标为 (Xi, Yi) 。如果直线为 y = f(x) 。那么 (Xi, Yi) 跟直线对这个点的“预测”:(Xi, f(Xi)) 就相差了一个 ΔYi = |Yi – f(Xi)| 。最小二乘就是说寻找直线使得 (ΔY1)^2 + (ΔY2)^2 + .. (即误差的平方和)最小,至于为什么是误差的平方和而不是误差的绝对值和,统计学上也没有什么好的解释。然而贝叶斯方法却能对此提供一个完美的解释。 我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP 。(EXP(..) 代表以常数 e 为底的多少次方)。 现在我们回到问题的贝叶斯方面,我们要想最大化的后验概率是: P(h|D) ∝ P(h) * P(D|h) 又见贝叶斯!这里 h 就是指一条特定的直线,D 就是指这 N 个数据点。我们需要寻找一条直线 h 使得 P(h) * P(D|h) 最大。很显然,P(h) 这个先验概率是均匀的,因为哪条直线也不比另一条更优越。所以我们只需要看 P(D|h) 这一项,这一项是指这条直线生成这些数据点的概率,刚才说过了,生成数据点 (Xi, Yi) 的概率为 EXP 乘以一个常数。而 P(D|h) = P(d1|h) * P(d2|h) * .. 即假设各个数据点是独立生成的,所以可以把每个概率乘起来。于是生成 N 个数据点的概率为 EXP * EXP * EXP * .. = EXP {- } 最大化这个概率就是要最小化 (ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + .. 。 熟悉这个式子吗? 5. 朴素贝叶斯方法 朴素贝叶斯方法是一个很特别的方法,所以值得介绍一下。我们用朴素贝叶斯在垃圾邮件过滤中的应用来举例说明。 5.1 贝叶斯垃圾邮件过滤器 问题是什么?问题是,给定一封邮件,判定它是否属于垃圾邮件。按照先例,我们还是用 D 来表示这封邮件,注意 D 由 N 个单词组成。我们用 h+ 来表示垃圾邮件,h- 表示正常邮件。问题可以形式化地描述为求: P(h+|D) = P(h+) * P(D|h+) / P(D) P(h-|D) = P(h-) * P(D|h-) / P(D) 其中 P(h+) 和 P(h-) 这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。然而 P(D|h+) 却不容易求,因为 D 里面含有 N 个单词 d1, d2, d3, .. ,所以P(D|h+) = P(d1,d2,..,dn|h+) 。我们又一次遇到了数据稀疏性,为什么这么说呢?P(d1,d2,..,dn|h+) 就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!开玩笑,每封邮件都是不同的,世界上有无穷多封邮件。瞧,这就是数据稀疏性,因为可以肯定地说,你收集的训练数据库不管里面含了多少封邮件,也不可能找出一封跟目前这封一模一样的。结果呢?我们又该如何来计算 P(d1,d2,..,dn|h+) 呢? 我们将 P(d1,d2,..,dn|h+) 扩展为: P(d1|h+) * P(d2|d1, h+) * P(d3|d2,d1, h+) * .. 。熟悉这个式子吗?这里我们会使用一个更激进的假设,我们假设 di 与 di-1 是完全条件无关的,于是式子就简化为 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 。这个就是所谓的 条件独立假设 ,也正是朴素贝叶斯方法的朴素之处。而计算 P(d1|h+) * P(d2|h+) * P(d3|h+) * .. 就太简单了,只要统计 di 这个单词在垃圾邮件中出现的频率即可。关于贝叶斯垃圾邮件过滤更多的内容可以参考 这个条目 ,注意其中提到的其他资料。 一点注记 :这里,为什么有这个数据稀疏问题,还是因为统计学习方法工作在浅层面,世界上的单词就算不再变多也是非常之多的,单词之间组成的句子也是变化多端,更不用说一篇文章了,文章数目则是无穷的,所以在这个层面作统计,肯定要被数据稀疏性困扰。我们要注意,虽然句子和文章的数目是无限的,然而就拿邮件来说,如果我们只关心邮件中句子的语义(进而更高抽象层面的“意图”(语义,意图如何可计算地定义出来是一个人工智能问题),在这个层面上可能性便大大缩减了,我们关心的抽象层面越高,可能性越小。单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。神经科学的发现也表明大脑的皮层大致有一种层级结构,对应着越来越抽象的各个层面,至于如何具体实现一个可放在计算机内的大脑皮层,仍然是一个未解决问题,以上只是一个原则(principle)上的认识,只有当 computational 的 cortex 模型被建立起来了之后才可能将其放入电脑。 5.2 为什么朴素贝叶斯方法令人诧异地好——一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?就拿一个句子来说,我们怎么能鲁莽地声称其中任意一个单词出现的概率只受到它前面的 3 个或 4 个单词的影响呢?别说 3 个,有时候一个单词的概率受到上一句话的影响都是绝对可能的。那么为什么这个假设在实际中的表现却不比决策树差呢?有人对此提出了一个理论解释,并且建立了什么时候朴素贝叶斯的效果能够等价于非朴素贝叶斯的充要条件,这个解释的核心就是:有些独立假设在各个分类之间的分布都是均匀的所以对于似然的相对大小不产生影响;即便不是如此,也有很大的可能性各个独立假设所产生的消极影响或积极影响互相抵消,最终导致结果受到的影响不大。具体的数学公式请参考 这篇 paper 。 6. 层级贝叶斯模型 层级贝叶斯模型 是现代贝叶斯方法的标志性建筑之一。前面讲的贝叶斯,都是在同一个事物层次上的各个因素之间进行统计推理,然而层次贝叶斯模型在哲学上更深入了一层,将这些因素背后的因素(原因的原因,原因的原因,以此类推)囊括进来。一个教科书例子是:如果你手头有 N 枚硬币,它们是同一个工厂铸出来的,你把每一枚硬币掷出一个结果,然后基于这 N 个结果对这 N 个硬币的 θ (出现正面的比例)进行推理。如果根据最大似然,每个硬币的 θ 不是 1 就是 0 (这个前面提到过的),然而我们又知道每个硬币的 p(θ) 是有一个先验概率的,也许是一个 beta 分布。也就是说,每个硬币的实际投掷结果 Xi 服从以 θ 为中心的正态分布,而 θ 又服从另一个以 Ψ 为中心的 beta 分布。层层因果关系就体现出来了。进而 Ψ 还可能依赖于因果链上更上层的因素,以此类推。 6.1 隐马可夫模型(HMM) 吴军在数学之美系列里面介绍的 隐马可夫模型 (HMM)就是一个简单的层级贝叶斯模型: 那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题。以语音识别为例,当我们观测到语音信号 o1,o2,o3 时,我们要根据这组信号推测出发送的句子 s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知 o1,o2,o3,…的情况下,求使得条件概率 P (s1,s2,s3,…|o1,o2,o3….) 达到最大值的那个句子 s1,s2,s3,… 吴军的文章中这里省掉没说的是,s1, s2, s3, .. 这个句子的生成概率同时又取决于一组参数,这组参数决定了 s1, s2, s3, .. 这个马可夫链的先验生成概率。如果我们将这组参数记为 λ ,我们实际上要求的是:P(S|O, λ) (其中 O 表示 o1,o2,o3,.. ,S表示 s1,s2,s3,..) 当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成 P(o1,o2,o3,…|s1,s2,s3….) * P(s1,s2,s3,…) 其中 P(o1,o2,o3,…|s1,s2,s3….) 表示某句话 s1,s2,s3…被读成 o1,o2,o3,…的可能性, 而 P(s1,s2,s3,…) 表示字串 s1,s2,s3,…本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为 s1,s2,s3…这个数列的可能性乘以 s1,s2,s3.. 本身可以一个句子的可能性,得出概率。 这里,s1,s2,s3…本身可以一个句子的可能性其实就取决于参数 λ ,也就是语言模型。所以简而言之就是发出的语音信号取决于背后实际想发出的句子,而背后实际想发出的句子本身的独立先验概率又取决于语言模型。 7. 贝叶斯网络 吴军已经对贝叶斯网络作了科普,请直接跳转到 这里 。更详细的理论参考所有机器学习的书上都有。 参考资料 一堆机器学习,一堆概率统计,一堆 Google ,和一堆 Wikipedia 条目,一堆 paper 。 部分书籍参考 《机器学习与人工智能资源导引》 。
1475 次阅读|0 个评论
[转载]【研究动态】机器学习五步走
zhuwei3014 2014-7-26 16:01
经常会有人问“我该如何在机器学习方面更进一步,我不知道我接下来要学什么了。” 一般我都会给出继续钻研教科书的答案。 每当这时候我都会收到一种大惑不解的表情。但是进步确实就是持续的练习,保持较强的求知欲,并尽你可能的完成具有挑战性的工作。其实这些你都懂的,是吧! 但是为什么偏偏是教科书呢?因为他是为数不多的几种可以让你真真让你获取坚实知识的媒介。是的,你可以选择选一门课,注册MOOC,参加一些讨论班。但是只有教材才是会让你持续进步的。教材的每一页都会留下你的印记。你会不知不觉的就记住了章节标题,例子和练习题。你会在边页处写写画画做点笔记,你会把常用的章节折起来,并且还会根据学习内容去寻找一些相关程序来学习。其实你的教科处已经成为了知识的一部分。成功的学习不仅仅只是看看教科书。通过这样的方式来用教科书,你能掌握任何一门学科——当然也包括机器学习。 在下面的内容中,我会循序渐进的列举一些优秀的教科书供你参考。我结合我自己经历并咨询了UC Berkeley的研究生,博士后和教授们后给出了这份参考教科书。当然我是故意少列了的,因为列再多反而是你选择烦恼。 当然,如果你想更换一些学习资料, Metacademy 是个不错的选择。 Level 0: Neophyte 我妹妹是贸易方面的写作者。曾经她问我怎样去简单的了解一些数据科学的基础知识。在阅读了基本这方面的介绍性的书籍后,我推荐了这本Data Smart.通过这本书我妹妹可以基本解决其工作问题,甚至又一次我和她关于逻辑回归还进行了一次比较深入的探讨。 Expectations :你能了解一些基本的机器学习算法,你能够通过Excel完成一些基本的算法编写。(在完成整本书后你还能会点R语言)。 Necessary Background :熟悉Excel操作——假如你有点计算机/数学背景的话你应该能够很好的掌握。另外,它不像典型的教科书那么枯燥。 Key Chapters :书很短,而且每章都通熟易懂,而且我认为你可以跳过工作表相关的内容。第8和10章是一些基本的概述。 Capstone Project :用 this dataset 来试一下你是否能够在给出一些属性条件的情况下预测汽车的MPG。这将考验你是否能用机器学习的方式来解读数据,并且能用机器学习的技术解决问题。 Level 1: Apprentice 这是一本例子导向的书,但是同时你可以学习到很多有用的机器学习知识和R编程语言。我是Scipy的忠实用户,但是当我看了几章这本书后,我现在大部分的问题都会选择用R去解决了。 Expectations :你能够判断出哪些机器学习的算法适合哪些问题,并且能够用R语言来完成代码的编写。 必要的背景:没有真正的先决条件,但以下将帮助(这些可以学到/审查时):一些编程经验(R)一些代数概率论的基本微积分一点 Necessary Background :没有特别的要求,但是如果你有以下的知识将会很有帮助: R的基本的编程能力 基本的代数知识 基本的微积分知识 一点概率论知识 Key Chapters :这是一本很短的书,因此我推荐大家阅读全文,尤其是好好思考那些例子,并用R语言去完成。如果你时间有限,你也可以略过第8和12章。 Capstone Project :用 this dataset 试试你是否能够在给定相关属性值的情况下预测出食品等级。用三个不同的机器学习方法去解决这个问题,并且选出最合适的一个。建立一个分类器,并能预测评估是“good”还是“bad”,过程中你一定要选好“good”和“bad”之间的阀值。这能测试你的数据滤除能力,处理大数据来那个的能力,机器学习的基本知识还有你编写R代码的能力。 Level 2: Journeyman 这个阶段,再也不是学习一些表面的浅层知识了,我们将逐渐的深入,并且更加的严谨的推导。在一阶段将会有许多数学问题去处理,但是如果你想把机器学习当成你终生的事业来做,那么你必须过掉这关。PRML这本书是一座很好的桥梁,可以让你做的更顺些。你要不断的使用它,阅读他并且爱上他。但是你要时刻保持注意,并不知只有贝叶斯方法是机器学习方法。(译者注,这本书很多都是以贝叶斯方法为基础进行阐述的。) Expectations:能够识别,完成,调试和解释大部分现有的机器学习方法。当然,对于一些特定问题,你应该有一些自己的想法去研究更高级的机器学习算法。而数据科学家则应该必须至少处于这一步。 Necessary Background : 你应该熟悉大部分的聚类和分类算法; 线性代数:理解矩阵代数和行列式运算; 一些多变量和向量微积分运算能力——比如知道什么是Jacobian 能够用R,Matlab,Scipy或者是Julia完成一些机器学习算法的编写。 Key Chapters:详细阅读1——12.1章。至于12.2 – 14章你可以在需要的时候再去阅读。 Capstone Project :完成 Online Variational Bayes Algorithm for Latent Dirichlet Allocation 并且分析一个你选择的数据。证明你写的LDA是正确的。这能测试你是否能够理解并解释前沿的机器学习算法,并且能否进行在线的推理和近似。当然这也测试了你的编写代码能力,数据预处理能力和实际的解决问题的能力。 注意:PRML花了很多的时间在Bayesian机器学习方面。因此如果你对Bayesian统计不熟,我强烈建议你先看看Doing Bayesian Data Analysis 的前五章。 Level 3: Master 这一阶段你有大量的知识需要去钻研:凸优化理论,测度理论,概率论,离散优化,线性代数,微分几何甚至是计算神经学。但是当你真正在这一阶段的时候,你也许也已经知道该去学哪些了。这里我仅仅推荐一本书: Probabilistic Graphical Models: Principles and Techniques 是一本机器学习研究者都应该去钻研的神书。PGMs是一本机器学习进阶的书,如果你熟读了此书,不管你学习哪一个机器学习方向你都能轻松驾驭了。 Expectations :对于新问题你应该能够构造概率模型,确定合理的推理技术并且能评估你的方法。对于模型之间的关系你也有了更深入的理解,比如深度信念网络也可以看成是因素图模型。 Necessary Background : 你应该熟悉大部分的机器学习算法 线性代数——知道怎样解释特征值 多变量和向量的微积分求解 能够用R,Matlab,Scipy或者是Julia完成一些机器学习算法的编写。 Key Chapters :1-8章内容类似于Bishop’s Pattern Recognition and Machine learning的2-8张的内容,但是更深入一些。9-13章是本书的精华部分。第19章对于预处理数据是非常有用的。14和15章当你要用时,你再去读他把。 Capstone Project :这一阶段了,你应该自己去定义和探索自己的机器学习项目了。也许还会知道一点当前最火热的“big data” Level 4: Grandmaster 如果你获得主人地位,你就会拥有一个足够强大的ML背景小说追求任何ML-related专业化水平:例如:也许你感兴趣深度学习应用程序或刻画小说?也许你应该成为Metacademy贡献者? 当你过了master阶段,你已经有了很强的机器学习背景去探索任何机器学习相关的更专业的领域:比如你想去做深度学习(deep learning)相关的应用或者研究。当然或许你也许会变成一位Metacademy的贡献者。 翻译自: http://metacademy.org
个人分类: 科技资讯|1740 次阅读|0 个评论
[转载]转:科研不是比赛,而是一种对未知和完美的自我追求!
BillyLiuZJU 2014-7-9 19:11
转载自微软亚洲研究院新浪博客: http://blog.sina.com.cn/s/blog_4caedc7a0102uwvu.html 科研不是比赛,而是一种对未知和完美的自我追求——跟邢波(Eric Xing)面对面聊科研 编者按:6月26日,2014年国际机器学习大会(ICML)在北京国际会议中心完美落幕。作为机器学习领域两大顶尖年会之一,这是 ICML大会30多年来首次来到中国和远东,在国内的机器学习界震动不小。身为本次大会主席的卡耐基梅隆大学计算机系教授邢波(Eric Xing)为此做了诸多努力。作为在美国机器学习领域前沿为数不多的华人学者,许多国内计算机专业学生渴望投身其门下。借着此次大会的举办,我们也有幸和Eric坐下来,面对面的聊一聊他对科研的态度以及对后辈们的建议。 问:从生物学博士到计算机科学博士,再到机器学习领域的佼佼者,这样的转变是如何发生的? Eric:“为什么会选择进入一个新的专业?因为兴趣。当时对手头做的研究项目兴趣不够,而同时又有其他的东西让自己很着迷,所以在完成前项工作后就选择了转变。现在回头看,这样的转变在我的生活中并不少见,比如,我最近开始在做计算机系统相关的研究。操作系统跟机器学习是很不一样的领域,这种转变的距离和我之前的转变一样远,但兴趣使然。15年前,人工智能和机器学习在美国学术圈很冷门,中国人不多、美国人也不多,当时基于兴趣选择转专业,现在也一样。当选择改变时,不要把它当个大事,要把生理和心理障碍压到最低。” 问:不少人认为,做科研极为枯燥。你认为这里面有误解吗? Eric:“确实有人觉得科研枯燥、与产品的结合不够紧密,像是对未来的虚幻想象。这其中有一些误解。很多人基于片面的理解或有限的经验,简单的把理论研究和应用研究对立起来,并由此产生一种肤浅的排他思想;比如有些“基础研究”学者瞧不起“应用研究”学者,认为后者不严格正统,或者有些业界的工程师程序员也鄙视大学里的研究者,认为后者不实用。抱有这种想法的人很难成为领先的学者和工程师。其实计算机科研是最不枯燥的研究,优秀的计算机研究往往体现着理论和现实问题的紧密结合。它不是纯粹推导公式、设计模型,证明定理;也不是埋头编程,调参,试错。严谨的计算机科研需要跟数学打交道,这可能对于某些人来说,有些枯燥;但对于另一些人来说,这仍然很有趣并令人兴奋。事实上,谷歌的搜索引擎、微软的Kinect等都是由基础研究衍生出来的产品——当你把研究跟实际应用结合起来,兴趣是很容易产生的。或许研究过程中会比较理论,但我们是基于现实应用问题来提出研究问题。当你希望用一个漂亮的方法(正规、严密,普适,可独立重复的方法)解决问题时,你自然会使用数学手段;但是最后的实现、评估、证明等是从理论和实际应用两个方面来出发,这样就会很有意思。 问:有传闻说您每天只睡4-5个小时,做科研这么忙吗? Eric:“我不是为了忙而忙,而是顺其自然。就好像弹琴有的地方弹得快了后,慢了自己都不好意思,快反而是一种自然的节奏。有时候会更慢一些、有时候会更快一些,也没有刻意去保持。当然,其实从生活质量来说,也没有那么可怕。我也有进行规律的健身锻炼,业余爱好,跟家人一起玩,等等,我不提倡把自己弄得很憔悴、不顾家庭或不跟朋友交往。如何做到呢?不要浪费时间。睡几个小时是个人生理特征,但是在不睡觉的时间里,要怎么用?大部分人在大部分时间处于什么都没做的状态,他们既没有做公事,也没有做私事,但我基本上不存在这样的时间,我要不就做一些跟工作有关的事,要不就抽空锻炼、弹琴,听音乐,看书,,或跟家人一起活动。虽然没有一个明显的工作到生活的某个切换点,但找准了工作和生活的节奏,还是很自然。对于我来说,研究、健身等事情不是要‘坚持’才能做到的事儿,而是我迫不及待要去做,这些都不是很难受的事儿。” 问:国内不少学生都想当您的学生,那您是如何挑选学生的呢? Eric:“首先我要通过你向同学们对我们工作的兴趣表示感谢!我很希望能满足同学们的愿望。有时候,这不仅仅是学生的问题,也是我自己的精力和资金的问题。在美国,招学生是一个相当昂贵的事情,每人每年要资助近十万美元。我的组现在有将近20个学生,再大的话,钱也不够,我的精力也不够。我带学生还是比较认真的,比如每星期至少有一次讨论,20个学生就有20次,一星期排下来也差不多了。在挑选学生的时候,我比较注重文化,风格,兴趣的多样性和平衡,而非单纯的高产,不会偏重某个国家人特别多,也力求性别的平衡。 除了这些原因,还需要一些研究兴趣的匹配,以及研究之外的东西。我招学生的时候,可能会注重一个人的个人修养或人品——就是他/她作为一个普通人的价值,而不仅仅是作为研究者所拥有的能力。研究方面的能力是可以培养的,无论是跟着我还是其他老师,学生的能力都一定会有提高。研究的起点不见得非要高,但是对学生的个人性格或修养有要求,我个人比较喜欢学生在我的组里产生正能量。更细致地话,我比较看重这四点: 一、有独立精神以及独立思考的能力。不是说我师兄师姐在做什么选题、最近最热是什么选题,我都去问问然后听从。敢于卓尔不群,坚持自己的观点;但同时也谦虚理性,而非顽固不化。 二、要有一些理想主义。不是做每一件事都有一个精准的投资回报率,要有一些纯粹为了兴趣和爱好而努力、为了尽善尽美而下功夫的追求。享受过程,而不是苛求结果,把结果当成过程的副产品,有了很好、没有也不沮丧,这样才能真正享受过程。 三、诚实而豁达。有一种简单、率真的性格,不能工于心计。 四、知书达理,有良好教养,礼貌,易于也乐于和别人共事。 我相信拥有以上四点的同学可以成为我组里很好的团队成员。 问:每次您来微软亚洲研究院做讲座,总是座无虚席,人特多。您和微软亚洲研究院有什么渊源? Eric:“微软研究院一直以来都和CMU(卡耐基梅隆大学)有众多的交流与合作。对于我个人而言,微软亚洲研究院至今都是国内为数不多的顶级计算机研究机构,培养的学生大都非常优秀。加上我在这里有很多的朋友,他们也经常邀请我过来和同事学生们交流交流,我也都十分乐意,也学到很多东西。 问:最近在线教育(MOOC)比较火,不知道您有没有打算在网上开机器学习相关课程? Eric:“现在MOOC很火,也颇具争议。从普及知识的角度,Coursera做了一件大好事。但作为想对某个领域有深度了解的同学来说,也必须对自己有一个清楚的定位。如果你的终极目标是对某个话题有一定了解,通过MOOC来学习是个还不错的选择。但如果你要以学习的某个方向为职业的话,就需要更多考量。现在的年轻人比较容易从众,可能会出现的一种情况是,从极度自卑到极度膨胀的距离可能会变得非常短。我个人认为,MOOC更重要的一个作用是普及教育,是扫盲用的。 然而作为一个博士研究生,你是需要普及知识,还是更高级的知识?我现在还没有加入在线教育,未来可能会,具体视CMU的政策而定。MOOC在普及知识的方面已经做得非常好了,但不见得是我最需要做的事情了。我尝试提供一些更高端、更适合专业研究需要,听众少一点、技术含量更高一点的课,所以我最近把概率图模型这门课录像、并通过CMU放到网上。Daphne Koller教授也开过这门课,在MOOC上有,但我的课教得比较前沿、更难,内容更多些,进度也可能也快些,提供给已经有扎实基础,需要深入研究机器学习的学生。今后我还会公开一门高级机器学习课。“ 问:机器学习、人工智能,现在火得不行。您觉得是因为它到时候该火起来了,还是炒作的成分居多? Eric:“二者兼有吧。现在的确是到了机器学习的时代——计算机应用的需求超过了原来普通的编程、普通的数据库所能提供的解决方案。数据很大,人肯定处理不过来,数据库不懂得提供一个足够智能的处理服务。机器学习虽然也没能提供解决方法,但它提供了一个大的思路、有意思的思路。有些人可能对机器学习存在一些比较庸俗的想法见解。比如说停留在‘机器学习到底是不是经典意义的人工智能的问题上,贬低一些现在在机器学习、深度学习领域的工作,认为这些不是真正的人工智能,哲学或物理意义上不深刻。还有一种观点认定机器学习,甚至只是深度学习已经可以解决一切的问题,只不过是缺乏一步一步去实现。这两种观点都不够成熟客观。我们需要更冷静一些,平台是对的、大方向是对的,但是还是有很多空白需要去填补、很多突破还没有实现。不要急着去摘一些果子,或者闪开就算过了,其实可以扎进去做一些有深度、有分量的东西。” 问:作为华人,在美国做科研,会有民族的包袱吗? Eric:“我个人在文化上是非常东西兼容的,对东西方文化都有认真学习和较广泛的了解和心得。在文化层面,我可能较很多国内朋友更接近中国传统知识份子——对中国传统文化非常了解和欣赏,爱古文,诗词,历史;欣赏秦汉,魏晋之风。但说到学术研究,我不希望它被包装成民族之间的比赛。做科研,不能做成比赛,而是一种对未知和完美的自我追求。当成比赛本质上是功利性的,是做不出来一流成果的,更需要对问题有一种本质性的好奇,希望去理解、解决这个问题。比别人快、击败别人只是副产品。我老跟我的学生说一个例子,写论文与做研究就像花样滑冰、体操比赛一样,如果老想着我的动作能得10分、满分、对手怎么样,你的动作肯定走形、做不好。如果你想着——我要在舞台上享受表演,你肯定会做得很好。” 问:在您的研究领域中,数学重要吗?扮演着怎样的角色? Eric:“重要!数学从方法论上提供解决方法,从思维上来讲它可以培养一种严谨的态度,从而为问题寻找一个比较严格的、普适的、甚至更好的解决方法。但是我不太建议单独强调数学或物理某一个学科知识的作用。就像在战场上,我身边有武器,什么合适我就抓起来用,而不是说我一定要从始到终用某一种武器。在研究的时候,我需要寻求一个经得起考验的解决方案,它是从数学来、从工程来、从物理来都不重要。只是,当你在寻求解决方案时,你会发现数学是一个避不开的因素,它自然而然地影响你的选择。 问:最后,能否给有志于从事计算机科学研究的学生提些您的个人建议? Eric:其实之前了分享过很多次了,但都是以英文的方式。今天借着这个机会,希望也能让更多的中国学生们看到: 一、清楚地认识到什么是你的目标以及什么是你在技术能力和心智上的优势和不足,这两点对于你的成功同等重要。根据这些分析,再来设定自己的目标,规划自己的行动。 二、当你发觉有必要做出改变时不要犹豫。改变自己的职业方向永远不嫌太晚,只要这个改变是严肃的,且你能够保证在新的方向上全力以赴。那些浪费在犹豫、等待上的时间经常会比你去适应新生活的时间更长。我曾经处于自己新职业方向的谷底,因为在我更换专业的时候,我对机器学习(machine learning)一无所知。但我知道,我会爱上它,因为这个领域的美与力量。从机器学习方向的入门者到成为CMU的教授,我花了五年时间。 三、你需要非常努力地工作。在我的研究生和之后的职业生涯中,一周7天,我每天平均工作12小时,并保持着高度集中的注意力和高效率。(当然,我其实并不把我做的这些看做工作,我觉得它们和娱乐活动同样甚至更为有趣。) 四、你努力工作的动力不应该来自你的上司给予的压力,而是因为你受到工作的启发与触动,并爱上了工作。我经常告诉我的学生和朋友,我的研究就是我的生活,而不是仅仅把它看做工作。相比于看电视和玩纸牌,我更享受从事研究。 五、与此同时,你仍然可以拥有一个多彩的、充满活力的生活。我是体育迷和音乐迷,也喜欢做其他许多事情,享受和家人、朋友在一起的时光。所以我从不消磨时间。当我不在工作时,我尽情地娱乐或锻炼身体(比如去健身房,弹钢琴……),并花时间和家人、朋友们相处。 六、你需要让自己变得非常有创造力,非常独立。实话说,我研究生阶段的很多研究点子并不来自于我的导师,而是我自己想出来的。我从Berkeley的导师那里获得的,更多的是研究上的精神和资金支持、研究方式和研究品味上的启发、诚实的品质和自豪感,以及他们的友谊。 七、要了解你研究领域中最新的进展。每年读一千篇论文并不是一件耸人听闻的事。事实上如果想成为领域内的顶尖学者,你要了解一切,不仅在本领域,还有许多的相关领域。 八、当你做出突破性成果的同时,你也应该尊重领域内权威们的成果。不要认为他们愚蠢而自己更聪明,并且要去问自己为什么多年以前他们没有像你这样做。另一方面,当你确信你确实获得了权威们没有的洞见时,你也要有超越他们的勇气。 九、要变得学识广博而灵活。许多问题和技术都是相关的,不要在一棵树上吊死。 十、在研究中做一个完美主义者或理想主义者从来不是一件坏事。拥有一个乐观的性格和强健的体魄是非常重要的。不要愚蠢地假设自己因为比别人更聪明,所以能不那么努力。事实上,大多数我认识的顶尖科学家都是既绝顶聪明,又会长时间工作并保持高效。所以你需要健康的身体来与他们竞争。我自己在大学时代就是一个半专业的运动员。比起那些比我年轻10-20岁以上的学生们,我至今仍能更高强度、更长时间地连续工作和娱乐。 十一、学会沟通的艺术。乐意去与同事和竞争者讨论、分享你的观点。不仅向同事学习,也要向竞争者学习。 十二、最重要的是,请保持诚实、开放、耐心、快乐和富于远见,而不是变得卑鄙、封闭、急躁、苦涩和短视。 人物简介 邢波(Eric Xing)博士现任卡耐基梅隆大学计算机科学系教授。他的主要研究兴趣集中在机器学习和统计方法论的发展及大规模计算系统和架构,希望能够解决在复杂系统中的高维、多峰和动态的潜在世界中的自动化学习、推理以及决策问题。邢波教授拥有美国罗格斯大学分子生物学博士学位和美国加州大学伯克利分校计算机科学博士学位。 邢波教授目前正在进行的研究工作包括:1. 统计学习基础,包括针对估测时间或空间变化系数模型的理论和算法,稀疏的结构化输入/输出模型和非参数贝叶斯模型的理论和算法;2.在分布式系统或云端,搭建基于大模型和大数据规模的并行机器学习的框架;3. 针对基因调节、遗传变异和疾病相关性的计算和统计分析;4. 将统计学习应用到社交网络,数据挖掘和计算机视觉中。 邢波教授至今已发表了超过200篇受同行审议的论文。他是美国统计协会杂志(JASA)、应用统计年鉴(AOAS)、IEEE模式分析与机器智能学报(PAMI)和PLoS计算生物学杂志(the PLoS Journal of Computational Biology)的副主编,机器学习杂志(MLJ)和机器学习研究杂志(JMLR)的执行主编。他是美国国防部高级研究计划局(DARPA)信息科学与技术顾问组的成员,美国国家科学基金会(NSF)事业奖、Alfred P. Sloan学者奖、美国空军青年学者奖、 以及IBM开放协作研究学者奖获得者。 原文请见:http://blog.sina.com.cn/s/blog_4caedc7a0102uwvu.html
个人分类: 研究心得|1970 次阅读|0 个评论
中国教育最大的问题:Overfitting
热度 66 dwchen 2014-6-22 16:27
最近北京在召开ICML大会,即机器学习国际大会,是该领域最大规模最高水平的大会。据说,美国加州大学伯克利分校的Jordan教授也要亲自来做大会报告。Jordan 是该领域的顶级大牛,是美国的三院院士(科学院、工程院和艺术科学院),尤其培养的弟子遍布世界名校,也都各有建树。我在2009年访问伯克利的时候,每周几乎都参加Jordan 组织的Machine Learning Tea的茶会。我的学术水平提高不多,世界各地的茶和茶点倒是品尝了不少。机器学习的一些概念、方法和技术,在Jordan 教授及其学生的闲聊和争论中,不知不觉地偷学了一些。至于ICML大会的具体细节就不多做广告了,有兴趣可以去北京国际会议中心亲身体验。 机器学习现在已经成为计算机科学中的一个重要分支,包括内容甚多。其核心思想之一,是通过大量训练数据学习出一个模型;有了新的输入,通过训练的模型获得新的输出。以前的研究,要求模型在训练集上的误差越小越好,即训练误差最小为优化目标优化模型及其参数。 但是,最近这些年的研究发现,不是训练误差越小越好,而是要适可而止。如果训练误差太小,将会导致模型出现overfitting(过度拟合)现象,使得模型在面对新的输入(训练集中没有的输入)情况下,输出误差很大。由此,发展出了很多的相关技术和方法,比如正则化、模型选择、Lasso 等,有关技术细节,本文不做深入探讨。在机器学习领域,目前已经是一个理论基石:Overfitting将导致generilization(泛化)能力下降。泛化能力就是就是在新的数据出现的情况下,模型获得正确输出的能力,类似于解决新问题的能力,也就是我们今天不停呼唤的创新能力。 Overfitting现象正如中国中小学教育广泛存在的题海现象,通过大量反复的讲解、习题和模拟训练,使得学生获得这些题目(很类似的题目)的解题能力,得分越来越高,类似于训练误差趋于0。有的学生,尤其是高考状元,通过大量反复训练,甚至可以达到,对于试卷上的所有试题都有一种似曾相识的感觉,凭经验、记忆就可以快速自动求解,而不需要再花费时间去思考。显然,我国教育广泛存在overfitting,导致了我国学生的创新能力(泛化能力)明显下降。 机器学习理论告诉我们,不能过度训练、不能过度教育,不能追求误差最小 (考分最高), 只有泛化能力(创新能力)最为重要。希望我们广大的家长朋友,不能再让孩子去上各种辅导班,过犹不及!辅导班上得越多,考分越高,表面上看获益了,其实是Overfitting, 严重损害了孩子的创新能力。
个人分类: 教育|27855 次阅读|144 个评论
再谈机器学习和手工系统:人和机器谁更聪明能干?
热度 1 liwei999 2014-6-19 14:49
这个话题已经谈过多次了,散见在我以前的博客里,今天兴起,随口再聊几句。这是一个非常重要的话题,会不断被人翻出来议论,似乎莫衷一是。最近的由头源于 有关谷歌搜索排序算法为什么依赖手工多于机器学习的议论 。此前,很多人想当然以为世界上最牛、服务亿万人的谷歌搜索必然是基于机器学习的,而不可能是被学界轻视漠视的(利用规则或heuristics调控的)手工系统。而事实正好相反,奇怪么?其实一点也不奇怪。 虽然我只是个语言学家,擅长的是开发和调控规则系统,但幸运的是,曾经有机会在相当长的时间里作为PI主持研发过一系列机器学习的科研项目,对两类系统做过很多观测比较和思考。我的经验是, 机器学习和手工系统确实各有所长所短,有互补性 ,具体用谁更好要看应用现场,真地不能一概而论。 面对谷歌搜索仍然主要依赖手工调控,有人说,对于具体的问题,手工调控虽然很直接有效,立竿见影,但其结果是排序算法里面掺杂了太多的琐碎规则,使得系统变得越来越 fragile(不 robust),长远看来值得忧虑。其实,这种担忧是 assume 手工系统里面的规则或 heuristics 是相互联系的网状设计,相互牵连。在那种情形下,短期的好处(立竿见影的解决了来自 field 的具体问题)确实可能导致长期的隐患,甚至最终导致系统越来越复杂,超出人可调控的程度而报废。但是,有经验的手工系统设计大师绝不会陷入那个怪圈,他一定会把问题切割,把功能模块化,把规则尽可能相互独立开来,同时配备各种防止 regressions 的自动和半自动的质量控制流程,以保证每一步调控走在总体优化的轨道上,保证副作用趋于最小。这里面有很多 know-how,魔鬼在细节中,暂时按下不表。 回到搜索这个具体的应用领域,是不是规则琐碎了,系统就脆弱了呢?其实完全可以避开这个后果。如果把系统设计为针对不同的 query 的类型,配备不同的规则模块(模块化),同一个规则模块中,把少数的共性规则与多数的个性(例外)规则分开(个性规则之间很容易做到相互独立,允许一些冗余而已;以此防止网状规则系统),那么系统就不会变得脆弱,debug 调控起来也容易。譬如,query 分类可以包括,查询天气预报、交通状况、人物、事件、时间、地点等等,然后针对一个类别,或者一个子类,再开发调控相应的规则系统,假以时间,这样的开发怎么会因为规则的琐碎和繁多而脆弱呢? 机器学习和手工系统的优劣,说到底是机器和人谁更聪明能干的问题。简单的回答有两点:1. 当然“人”更聪明(这里的人指专家精英;事实上,甚至蹩脚的人工智能在专项任务上也往往高于资质平平的人,这不是玩笑);但是 2. 人并不总比机器能干。 由于上述第一点,可以说,假设没有人力资源的限制,多数的智能系统是手工强过机器学习。注意,那个假设在现实世界往往不成立,多数项目都有人力和时间的限制因素在。当然,有些项目(譬如互联网搜索)太过重要而且长期存在,有些公司(譬如谷歌)太强大,其人力的投入可以很大,时间上可以很多年一直做下去不断提升,相对来说就较少受到资源和时间的限制。 上述第二点并不鲜见,有些事情人就是很笨(或者反过来说,机器就是很灵),无法与机器比。最极端的例子是计算,神算师也算不过电脑。还有记忆,再博学的语言学家也记不住电脑可以轻易存取的海量词汇表。比较技术性的例子是文本分类(document classification)。对于这种见林不见木的粗线条任务,人是相当低能的,即便编制出有限的规则,也往往挂一漏万,而机器就很擅长,可以从统计的角度综合“琐细”的蛛丝马迹来做出总体合理的分类。 累了,今天就聊到这儿。 【相关篇什】 Comparison of Pros and Cons of Two NLP Approaches 《立委随笔:语言自动分析的两个路子》 why hybrid? on machine learning vs. hand-coded rules in NLP 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? 提上来:手工规则系统的软肋在文章分类 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流的傲慢与偏见】 【科研笔记:系统不能太精巧,正如人不能太聪明】 【NLP主流的反思:Church - 钟摆摆得太远(1):历史回顾】 《立委随笔:机器学习和自然语言处理》 与老前辈谈 NLP 及其趋势 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|8147 次阅读|5 个评论
[转载]转载留存 Google 搜索涉及ML的相关文字
liwei999 2014-6-19 12:35
Datawocky On Teasing Patterns from Data, with Applications to Search, Social Media, and Advertising 【立委按】讨论中提到,即便机器学习已经达到手工系统的水平,谷歌搜索的研发人员也不愿意转用机器学习。说担心机器学出来的模型在训练集未见的现象上铸成大错。而他们相信,手工系统对付未见现象不至于走偏太大。这个论点,不好置评。不过,我觉得,更主要的原因不在这里,而在遇到具体质量问题时,机器学习系统是一锅粥,很难 debug(除非不怕麻烦,重新训练去再煮一锅粥,但也常常是隔靴搔痒,很难保证这锅新粥对要解决的具体问题会奏效)。而手工系统只要设计合理(比如模块化设计,减少牵一发动全身的后果),具体问题具体对待,可直接针对性调控,debug 就容易多了。因此,即便质量相近的系统,机器学习也不占优势,因为不好维护调控以逐步提高质量(incremental enhancement)。 A couple of days ago I had coffee with Peter Norvig . Peter is currently Director of Research at Google. For several years until recently, he was the Director of Search Quality -- the key man at Google responsible for the quality of their search results. Peter also is an ACM Fellow and co-author of the best-selling AI textbook Artificial Intelligence: A Modern Approach . As such, Peter's insights into search are truly extraordinary. I have known Peter since 1996, when he joined a startup called Junglee , which I had started together with some friends from Stanford. Peter was Chief Scientist at Junglee until 1998, when Junglee was acquired by Amazon.com. I've always been a great admirer of Peter and have kept in touch with him through his short stint at NASA and then at Google. He's now taking a short leave of absence from Google to update his AI textbook. We had a fascinating discussion, and I'll be writing a couple of posts on topics we covered. It has long been known that Google's search algorithm actually works at 2 levels: An offline phase that extracts signals from a massive web crawl and usage data. An example of such a signal is page rank. These computations need to be done offline because they analyze massive amounts of data and are time-consuming. Because these signals are extracted offline, and not in response to user queries, these signals are necessarily query-independent. You can think of them tags on the documents in the index. There are about 200 such signals. An online phase, in response to a user query. A subset of documents is identified based on the presence of the user's keywords. Then, these documents are ranked by a very fast algorithm that combines the 200 signals in-memory using a proprietary formula. The online, query-dependent phase appears to be made-to-order for machine learning algorithms. Tons of training data (both from usage and from the armies of raters employed by Google), and a manageable number of signals (200) -- these fit the supervised learning paradigm well, bringing into play an array of ML algorithms from simple regression methods to Support Vector Machines . And indeed, Google has tried methods such as these. Peter tells me that their best machine-learned model is now as good as, and sometimes better than, the hand-tuned formula on the results quality metrics that Google uses. The big surprise is that Google still uses the manually-crafted formula for its search results. They haven't cut over to the machine learned model yet. Peter suggests two reasons for this. The first is hubris: the human experts who created the algorithm believe they can do better than a machine-learned model. The second reason is more interesting. Google's search team worries that machine-learned models may be susceptible to catastrophic errors on searches that look very different from the training data. They believe the manually crafted model is less susceptible to such catastrophic errors on unforeseen query types. This raises a fundamental philosophical question. If Google is unwilling to trust machine-learned models for ranking search results, can we ever trust such models for more critical things, such as flying an airplane, driving a car, or algorithmic stock market trading? All machine learning models assume that the situations they encounter in use will be similar to their training data. This, however, exposes them to the well-known problem of induction in logic. The classic example is the Black Swan , popularized by Nassim Taleb's eponymous book . Before the 17th century, the only swans encountered in the Western world were white. Thus, it was reasonable to conclude that all swans are white. Of course, when Australia was discovered, so were the black swans living there. Thus, a black swan is a shorthand for something unexpected that is outside the model. Taleb argues that black swans are more common than commonly assumed in the modern world. He divides phenomena into two classes: Mediocristan, consisting of phenomena that fit the bell curve model, such as games of chance, height and weight in humans, and so on. Here future observations can be predicted by extrapolating from variations in statistics based on past observation (for example, sample means and standard deviations). Extremistan, consisting of phenomena that don't fit the bell curve model, such as the search queries, the stock market, the length of wars, and so on. Sometimes such phenomena can sometimes be modeled using power laws or fractal distributions, and sometimes not. In many cases, the very notion of a standard deviation is meaningless. Taleb makes a convincing case that most real-world phenomena we care about actually inhabit Extremistan rather than Mediocristan. In these cases, you can make quite a fool of yourself by assuming that the future looks like the past. The current generation of machine learning algorithms can work well in Mediocristan but not in Extremistan. The very metrics these algorithms use, such as precision, recall, and root-mean square error (RMSE), make sense only in Mediocristan. It's easy to fit the observed data and fail catastrophically on unseen data. My hunch is that humans have evolved to use decision-making methods that are less likely blow up on unforeseen events (although not always, as the mortgage crisis shows). I'll leave it as an exercise to the interested graduate student to figure out whether new machine learning algorithms can be devised that work well in Extremistan, or prove that it cannot be done. May 24, 2008 in Data Mining , Search | Permalink TRACKBACK TrackBack URL for this entry: http://www.typepad.com/services/trackback/6a00d83471bc3153ef00e5527c00a38833 Listed below are links to weblogs that reference Are Machine-Learned Models Prone to Catastrophic Errors? : COMMENTS You can follow this conversation by subscribing to the comment feed for this post. from http://anand.typepad.com/datawocky/2008/05/are-human-experts-less-prone-to-catastrophic-errors-than-machine-learned-models.html 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|8488 次阅读|0 个评论
[转载]为什么谷歌搜索并不像广泛相信的那样主要采用机器学习?
liwei999 2014-6-18 17:28
@王小科Victor 《为什么机器学习广泛的用在谷歌的广告系统中,而很少用在搜索排序中?》 其中涉及到机器学习的优劣与局限性,分析了检索排序系统与广告系统的种种不同,希望对大家有所参照。地址: | 为什么机器学习广泛的用在谷歌的广告系统中,而很少用在搜索排序中? 原文地址: http://t.cn/RvpAmsl 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|3315 次阅读|0 个评论
[转载]和机器学习和计算机视觉相关的数学 (转载)
xjtuchy 2014-6-8 22:25
1. 线性代数 (Linear Algebra) : 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于 Learning 是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是 Introduction to Linear Algebra (3rd Ed.) by Gilbert Strang. 这本书是 MIT 的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法 —— 这些在实际工作中 MATLAB 可以代劳,关键的是要深入理解几个基础而又重要的概念: 子空间 (Subspace) ,正交 (Orthogonality) ,特征值和特征向量 (Eigenvalues and eigenvectors) ,和线性变换 (Linear transform) 。 从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。 Strang 的这本书在这方面是做得很好的。 而且,这本书有个得天独厚的优势。书的作者长期在 MIT 讲授线性代数课 (18.06) ,课程的 video 在 MIT 的 Open courseware 网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。 http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/CourseHome/index.htm 2. 概率和统计 (Probability and Statistics): 概率论和统计的入门教科书很多,我目前也没有特别的推荐。我在这里想介绍的是一本关于 多元统计 的基础教科书: Applied Multivariate Statistical Analysis (5th Ed.) by Richard A. Johnson and Dean W. Wichern 这本书是我在刚接触向量统计的时候用于学习的,我在香港时做研究的基础就是从此打下了。实验室的一些同学也借用这本书学习 向量统计 。这本书没有特别追求数学上的深度,而是以通俗易懂的方式讲述主要的基本概念,读起来很舒服,内容也很实用。对于 Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA ) 这些 Learning 中的基本方法也展开了初步的论述。 之后就可以进一步深入学习 贝叶斯统计和 Graphical models 。一本理想的书是 Introduction to Graphical Models (draft version). by M. Jordan and C. Bishop. 我不知道这本书是不是已经出版了(不要和 Learning in Graphical Models 混淆,那是个论文集,不适合初学)。这本书从基本的贝叶斯统计模型出发一直深入到复杂的统计网络的估计和推断,深入浅出, statistical learning 的许多重要方面都在此书有清楚论述和详细讲解。 MIT 内部可以 access ,至于外面,好像也是有电子版的。 3. 分析 (Analysis) : 我想大家基本都在大学就学过 微积分或者数学分析,深度和广度 则随各个学校而异了。这个领域是很多学科的基础,值得推荐的教科书莫过于 Principles of Mathematical Analysis, by Walter Rudin 有点老,但是绝对经典,深入透彻。缺点就是比较艰深 —— 这是 Rudin 的书的一贯风格,适合于有一定基础后回头去看。 在分析这个方向,接下来就是 泛函分析 (Functional Analysis) 。 Introductory Functional Analysis with Applications, by Erwin Kreyszig. 适合作为泛函的基础教材,容易切入而不失全面。我特别喜欢它对于 谱论和算子理论 的特别关注,这对于做 learning 的研究是特别重要的。 Rudin 也有一本关于 functional analysis 的书,那本书在数学上可能更为深刻,但是不易于上手,所讲内容和 learning 的切合度不如此书。 在分析这个方向,还有一个重要的学科是 测度理论 (Measure theory) ,但是我看过的书里面目前还没有感觉有特别值得介绍的。 4. 拓扑 (Topology) : 在我读过的基本拓扑书各有特色,但是综合而言,我最推崇: Topology (2nd Ed.) by James Munkres 这本书是 Munkres 教授长期执教 MIT 拓扑课的心血所凝。对于一般拓扑学 (General topology) 有全面介绍,而对于 代数拓扑 (Algebraic topology) 也有适度的探讨。此书不需要特别的数学知识就可以开始学习,由浅入深,从最基本的 集合论概念 (很多书不屑讲这个)到 Nagata-Smirnov Theorem 和 Tychonoff theorem 等较深的定理(很多书避开了这个)都覆盖了。讲述方式 思想性很强 ,对于很多定理,除了给出证明过程和引导你思考其背后的原理脉络,很多令人赞叹的亮点 —— 我常读得忘却饥饿,不愿释手。很多习题很有水平。 5. 流形理论 (Manifold theory) : 对于 拓扑和分析 有 一定把握 时,方可开始学习流形理论,否则所学只能流于浮浅 。我所使用的书是 Introduction to Smooth Manifolds. by John M. Lee 虽然书名有 introduction 这个单词,但是实际上此书涉入很深,除了讲授了基本的 manifold , tangent space , bundle , sub-manifold 等,还探讨了诸如 纲理论 (Category theory) , 德拉姆上同调 (De Rham cohomology) 和 积分流形 等一些比较高级的专题。对于 李群和李代数 也有相当多的讨论。行文通俗而又不失严谨,不过对某些记号方式需要熟悉一下。 虽然 李群论是建基于平滑流形的概念之 上,不过,也可能从 矩阵出发 直接学习 李群和李代数 —— 这种方法对于急需使用李群论解决问题的朋友可能更加实用。而且,对于一个问题从不同角度看待也利于加深理解。下面一本书就是这个方向的典范: Lie Groups, Lie Algebras, and Representations: An Elementary Introduction. by Brian C. Hall 此书从开始即从 矩阵切入 ,从代数而非几何角度引入矩阵李群的概念。并通过 定义运算的方式 建立 exponential mapping ,并就此引入李代数 。这种方式比起传统的通过 “ 左不变向量场 (Left-invariant vector field) “ 的方式定义李代数更容易为人所接受,也更容易揭示 李代数的意义 。最后,也有专门的论述把这种新的定义方式和传统方式联系起来。 ———————————————————————————— 无论是研究 Vision, Learning 还是其它别的学科, 数学终究是根基所在 。 学好数学是做好研究的基石 。 学好数学的关键归根结底是 自己的努力 ,但是选择一本好的书还是大有益处的。不同的人有不同的知识背景,思维习惯和研究方向,因此书的选择也因人而异, 只求适合自己,不必强求一致 。上面的书仅仅是从我个人角度的出发介绍的,我的阅读经历实在非常有限,很可能还有比它们更好的书(不妨也告知我一声,先说声谢谢了)。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Learning 中的 代数结构 的建立 Learning 是一个融会多种数学于一体的领域。说起与此有关的数学学科,我们可能会迅速联想到线性代数以及建立在向量空间基础上的统计模型 —— 事实上,主流的论文中确实在很大程度上基于它们。 R^n (n- 维实向量空间 ) 是我们在 paper 中见到最多的空间,它确实非常重要和实用,但是,仅仅依靠它来描述我们的世界并不足够。事实上,数学家们给我们提供了丰富得多的工具。 “ 空间 ”(space) ,这是一个很有意思的名词,几乎出现在所有的数学分支的基础定义之中。归纳起来,所谓空间就是指一个集合以及在上面定义的某种数学结构。关于这个数学结构的定义或者公理,就成为这个数学分支的基础,一切由此而展开。 还是从我们最熟悉的空间 ——R^n 说起吧。大家平常使用这个空间的时候,除了线性运算,其实还用到了别的数学结构,包括度量结构和内积结构。 · 第一,它是一个 拓扑空间 (Topological space) 。而且从拓扑学的角度看,具有 非常优良的性质 : Normal (implying Hausdorff and Regular) , Locally Compact , Paracompact , with Countable basis , Simply connected (implying connected and path connected) , Metrizable . · 第二,它是一个 度量空间 (Metric space) 。我们可以 计算上面任意两点的距离 。 · 第三,它是一个 有限维向量空间 (Finite dimensional space) 。因此,我们可以对里面的元素进行代数运算(加法和数乘),我们还可以赋予它一组有限的基,从而可以用有限维坐标表达每个元素。 · 第四,基于度量结构和线性运算结构,可以建立起 分析 (Analysis) 体系 。我们可以对连续函数进行微分,积分,建立和求解微分方程,以及进行傅立叶变换和小波分析。 · 第五,它是一个 希尔伯特空间 (也就是 完备的内积空间 ) ( Hilbert space, Complete inner product space ) 。它有一套很方便计算的内积 (inner product) 结构 —— 这个空间的度量结构其实就是从其内积结构诱导出来。更重要的,它是完备的 (Complete)—— 代表任何一个柯西序列 (Cauchy sequence) 都有极限 —— 很多人有意无意中其实用到了这个特性,不过习惯性地认为是理所当然了。 · 第六,它上面的 线性映射构成的算子空间 仍旧是 有限维 的 —— 一个非常重要的好处就是, 所有的线性映射都可以用矩阵唯一表示 。特别的,因为它是有限维完备空间,它的泛函空间和它本身是同构的,也是 R^n 。因而,它们的 谱结构 ,也就可以通过 矩阵的特征值和特征向量获得 。 · 第七,它是一个 测度空间 —— 可以计算 子集的大小(面积 / 体积) 。正因为此,我们才可能在上面建立 概率分布 (distribution) —— 这是我们接触的 绝大多数连续统计模型 的基础。 我们可以看到,这是一个非常完美的空间,为我们的应用在数学上提供了一切的方便,在上面,我们可以理所当然地认为它具有我们希望的各种良好性质,而无须特 别的证明;我们可以直接使用它的各种运算结构,而不需要从头建立;而且很多本来不一样的概念在这里变成等价的了,我们因此不再需要辨明它们的区别。 以此为界, Learning 的主要工作分成两个大的范畴: 1. 建立一种表达形式,让它处于上面讨论的 R^n 空间里面。 2. 获得了有限维向量表达后,建立各种代数算法或者统计模型进行分析和处理。 这里只讨论第一个范畴。先看看,目前用得比较广泛的一些方法: 1. 直接基于原始数据建立表达 。 我们关心的最终目标是一个个现实世界中的对象:一幅图片,一段语音,一篇文章,一条交易记录,等等。这些东西大部分本身没有附着一个数值向量的。为了构造 一个向量表达,我们可以把传感器中记录的数值,或者别的什么方式收集的数值数据按照一定的顺序罗列出来,就形成一个向量了。如果有 n 个数字,就认为它们在 R^n 里面。 不过,这在数学上有一点小问题,在大部分情况下,根据数据产生的物理原理,这些向量的值域并不能充满整个空间。比如图像的像素值一般是正值,而且在一个有界闭集之中。这带来的问题是,对它们进行线性运算很可能得到的结果会溢出正常的范围 —— 在大部分 paper 中,可能只是采用某些 heuristics 的手段进行简单处理,或者根本不管,很少见到在数学上对此进行深入探讨的 —— 不过如果能解决实际问题,这也是无可厚非的,毕竟不是所有的工作都需要像纯数学那样追求严谨。 2. 量化 (quantization) 。这是在处理连续信号时被广泛采用的方式。只是习以为常,一般不提名字而已。比如一个空间信号( Vision 中的 image )或者时间信号,它们的 domain 中的值是不可数无限大的 (uncountably infinite) ,不要说表示为有限维向量,即使表达为无限序列也是不可能的。在这种情况下,一般在有限域内,按照一定顺序每隔一定距离取一个点来代表其周围的点,从而形成有限维的表达。这就是信号在时域或空域的量化。 这样做不可避免要丢失信息。但是,由于小邻域内信号的高度相关,信息丢失的程度往往并不显著。而且,从理论上说,这相当于在频域中的低通过率。对于有限能量的连续信号,不可能在无限高的频域中依然保持足够的强度,只要采样密度足够,丢失的东西可以任意的少。 除了表示信号,对于几何形体的表达也经常使用量化,比如表示 curve 和 surface 。 3. 找出有限个数充分表达一个对象也许不是最困难的 。不过 , 在 其上面建立数学结构却未必了。一般来说,我们要对其进行处理,首先需要一个拓扑结构用以描述空间上的点是如何联系在一起。直接建立拓扑结构在数学上往往非 常困难,也未必实用。因此,绝大部分工作采取的方式是首先建立度量结构。一个度量空间,其度量会自然地诱导出一个拓扑结构 —— 不过,很多情况下我们似乎会无视它的存在。 最简单的情况,就是使用原始向量表达的欧氏距离 (Euclidean distance) 作为 metric 。 不过,由于原始表达数值的不同特性,这种方式效果一般不是特别好,未必能有效表达实际对象的相似性(或者不相似性)。因此,很多工作会有再此基础上进行度 量的二次建立。方式是多种多样的,一种是寻求一个映射,把原空间的元素变换到一个新的空间,在那里欧氏距离变得更加合适。这个映射发挥的作用包括对信息进 行筛选,整合,对某些部分进行加强或者抑制。这就是大部分关于 feature selection , feature extraction ,或者 subspace learning 的文章所要做的。另外一种方式,就是直接调节距离的计算方式(有些文章称之为 metric learning )。 这两种方式未必是不同的。如果映射是单射,那么它相当于在原空间建立了一个不同的度量。反过来,通过改变距离计算方式建立的度量在特定的条件下对应于某种映射。 4. 大家可能注意到,上面提到的 度量建立方法,比如欧氏距离,它需要对元素进行代数运算 。对于普通的向量空间,线性运算是天然赋予的,我们无须专门建立,所以可以直接进行度量的构造 —— 这也是大部分工作的基础。可是,有些事物其原始表达不是一个 n-tuple ,它可能是一个 set ,一个 graph ,或者别的什么特别的 object 。怎么建立代数运算呢? 一种方法是直接建立。就是给这些东西定义自己的加法和数乘。这往往不是那么直接(能很容易建立的线性运算结构早已经被建立好并广泛应用了),可能需要涉及 很深的数学知识,并且要有对问题本身的深入了解和数学上的洞察力。不过,一个新的代数结构一旦建立起来,其它的数学结构,包括拓扑,度量,分析,以及内积 结构也随之能被自然地诱导出来,我们也就具有了对这个对象空间进行各种数学运算和操作的基础。加法和数乘看上去简单,但是如果我们对于本来不知道如何进行 加法和数乘的空间建立了这两样东西,其理论上的贡献是非常大的。 (一个小问题:大家常用各种 graphical model ,但是,每次这些 model 都是分别 formulate ,然后推导出 estimation 和 evaluation 的步骤方法。是否可能对 the space of graphical model 或者它的某个特定子集建立某种代数结构呢?(不一定是线性空间,比如群,环,广群, etc )从而使得它们在代数意义上统一起来,而相应的 estimation 或者 evaluation 也可以用过代数运算 derive 。这不是我的研究范围,也超出了我目前的能力和知识水平,只是我相信它在理论上的重要意义,留作一个远景的问题。事实上,数学中确实有一个分支叫做 Algebraic statistics 可能在探讨类似的问题,不过我现在对此了解非常有限。) 5. 回到我们的正题,除了 直接建立运算定义 ,另外一种方式就是 嵌入 (embedding) 到某个向量空间 ,从而继承其运算结构为我所用。当然这种 嵌入 也不是乱来,它 需要保持原来这些对象的某种关系 。最常见的就是 保距嵌入 (isometric embedding) ,我们 首先 建立 度量结构 ( 绕过向量表达,直接对两个对象的距离通过某种方法进行计算 ), 然后 把这个 空间嵌入到目标空间 ,通常是 有限维向量空间,要求保持度量不变。 “ 嵌入 ” 是一种在数学上应用广泛的手段,其 主要目标 就是 通过嵌入到一个属性良好,结构丰富的空间,从而利用其某种结构或者运算体系 。在拓扑学中, 嵌入到 metric space 是 对某个拓扑空间建立度量的重要手段 。而在这里,我们是已有度量的情况下,通过嵌入获取线性运算的结构。除此以来,还有一种就是前些年比较热的 manifold embedding ,这个是通过保持局部结构的嵌入,获取全局结构,后面还会提到。 6. 接下来的一个重要的代数结构,就是 内积 (inner product) 结构 。内积结构一旦建立,会直接诱导出一种性质良好的度量,就是范数 (norm) ,并且进而诱导出拓扑结构。一般来说,内积需要建立在线性空间的基础上,否则连一个二元运算是否是内积都无法验证。不过, kernel 理论指出,对于一个空间,只要定义一个正定核 (positive kernel)—— 一个符合正定条件的二元运算,就必然存在一个希尔伯特空间,其内积运算等效于核运算。这个结论的重要意义在于,我们可以绕开线性空间,通过首先定义 kernel 的方式,诱导出一个线性空间 ( 叫做再生核希尔伯特空间 Reproducing Kernel Hilbert Space) ,从而我们就自然获得我们所需要的度量结构和线性运算结构。这是 kernel theory 的基础。 在很多教科书中,以二次核为例子,把二维空间变成三维,然后告诉大家 kernel 用于升维。对于这种说法,我一直认为在一定程度上是误导的。事实上, kernel 的最首要意义是内积的建立(或者改造),从而诱导出更利于表达的度量和运算结构。对于一个问题而言,选择一个切合问题的 kernel 比起关注 “ 升维 ” 来得更为重要。 kernel 被视为非线性化的重要手段,用于处理非高斯的数据分布。这是有道理的。通过 nonlinear kernel 改造的内积空间,其结构和原空间的结构确实不是线性关联,从这个意义上说,它实施了非线性化。不过,我们还应该明白,它的最终目标还是要回到线性空间,新的内积空间仍旧是一个线性空间,它一旦建立,其后的运算都是线性的,因此, kernel 的使用就是为了寻求一个新的线性空间,使得线性运算更加合理 —— 非线性化的改造最终仍旧是要为线性运算服务。 值得一提的是, kernelization 本质上说还是一种嵌入过程:对于一个空间先建立内积结构,并且以保持内积结构不变的方式嵌入到一个高维的线性空间,从而继承其线性运算体系。 7. 上面说到的都是从全局的方式建立代数结构的过程,但是那必须以某种全局结构为基础(无论预先定义的是运算,度量还是内积,都必须适用于全空间。)但是,全局结构未必存在或者适合,而局部结构往往简单方便得多。这里就形成一种策略, 以局部而达全局 —— 这就是 流形 (manifold) 的思想 ,而其则根源于拓扑学。 从拓扑学的角度说,流形就是一个非常优良的拓扑空间:符合 Hausdorff 分离公理 ( 任何不同的两点都可以通过不相交的邻域分离 ), 符合第二可数公理( 具有可数的拓扑基 ) ,并且更重要的是,局部同胚于 R^n 。因此,一个正则 (Regular) 流形基本就具有了各种最良好的拓扑特性。而局部同胚于 R^n ,代表了它至少在局部上可以继承 R^n 的各种结构,比如线性运算和内积,从而建立分析体系。事实上,拓扑流形继承这些结构后形成的体系,正是现代流形理论研究的重点。继承了分析体系的流形,就形成了微分流形 (Differential manifold) ,这是现代微分几何的核心。而微分流形各点上的切空间 (Tangent Space) ,则获得了线性运算的体系。而进一步继承了局部内积结构的流形,则形成黎曼流形 (Riemann manifold) ,而流形的全局度量体系 —— 测地距离 (geodesics) 正是通过对局部度量的延伸来获得。进一步的,当流行本身的拓扑结构和切空间上的线性结构发生关系 —— 也就获得一簇拓扑关联的线性空间 —— 向量丛 (Vector bundle) 。 虽然 manifold theory 作为现代几何学的核心,是一个博大精深的领域,但是它在 learning 中的应用则显得非常狭窄。事实上,对于 manifold ,很多做 learning 的朋友首先反应的是 ISOMAP, LLE, eigenmap 之类的算法 。这些都属于 embedding 。当然,这确实是流形理论的一个重要方面。严格来说,这要求是 从原空间到其映像的微分同胚映射 ,因此,嵌入后的空间在局部上具有相同的分析结构,同时也获得了各种好处 —— 全局的线性运算和度量。不过,这个概念在 learning 的应用中被相当程度的放宽了 —— 微分同胚并不能被完全保证,而整个分析结构也不能被完全保持。大家更关注的是保持局部结构中的某个方面 —— 不过这在实际应用中的折衷方案也是可以理解的。事实表明,当原空间中的数据足够密集的情况下,这些算法工作良好。 Learning 中流形应用的真正问题在于它被过滥地运用于 稀疏空间 (Sparse space) ,事实上在高维空间中撒进去几千乃至几十万点,即使最相邻的几点也难称为局部了,局部的范围和全局的范围其实已经没有了根本差别,连局部的概念都立不住脚的时候,后面基于其展开的一切工作也都没有太大的意义。事实上, 稀疏空间有其本身的规律和法则 , 通过局部形成全局的流形思想 从本质上是不适合于此的。虽然,流形是一种非常美的理论,但是再漂亮的理论也需要用得其所 —— 它 应该用于解决具有密集数据分布的低维空间 。至于,一些 paper 所报告的在高维空间(比如人脸)运用流形方法获得性能提升,其实未必是因为 “ 流形 ” 本身所起的作用,而很可能是其它方面的因素。 8. 流形在实际应用中起重要作用的还有两个方面:一个是 研究几何形体的性质 (我们暂且不谈这个),还有就是 它和代数结构的结合形成的李群 (Lie group) 和李代数 (Lie algebra) 。 当我们研究的对象是变换本身的时候,它们构成的空间是有其 特殊性 的,比如 所有子空间投影形成了 Grassmann 流形,所有的可逆线性算子,或者仿射算子,也形成各自的流形 。对他们的 最重要操作是变换的结合 ,而不是加法数乘,因此,它们上面定义的更合适的代数结构应该是 群 和不是线性空间。而 群和微分流形的结合体 —— 李群 则成为它们最合适的描述体系 —— 而 其切空间 则构成了 一种加强的线性空间 : 李代数,用于描述其局部变化特性。 李代数和李群的关系是非常漂亮的。它 把 变换的微变化 转换成了 线性空间的代数运算 ,使得移植传统的基于 线性空间的模型和算法到李空间变得可能 。而且李代数中的矩阵比起变换本身的矩阵甚至更能反映变换的特性。 几何变换的李代数矩阵的谱结构 就能非常方便地用于 分析变换的几何特性 。 最后,回头总结一下关于嵌入这个应用广泛的策略,在 learning 中的 isometry, kernel 和 manifold embedding 都属于此范畴,它们分别 通过保持原空间的 度量结构,内积结构和局部结构 来获得到目标(通常是向量空间)的嵌入,从而获得全局的坐标表达,线性运算和度量,进而能被各种线性算法和模型所应用。 在获得这一系列好处的同时,也有值得我们注意的地方。 首先 , 嵌入只是一种数学手段 ,并不能取代 对问题本身的研究和分析 。一种不恰当的原始结构或者嵌入策略,很多时候甚至适得其反 —— 比如稀疏空间的流形嵌入,或者选取不恰当的 kernel 。另外, 嵌入适合于分析,而未必适合于重建或者合成 。这是因为 嵌入是一个 单射 (injection) ,目标空间不是每一个点都和原空间能有效对应的。嵌入之后的运算往往就打破了原空间施加的限制。比如 两个元素即使都是从原空间映射过来,它们的和却未必有原像,这时就不能直接地回到原空间了 。当然可以考虑在原空间找一个点它的映射与之最近,不过这在实际中的有效性是值得商榷的。 和 Learning 有关的数学世界是非常广博的,我随着学习和研究的深入,越来越发现在一些我平常不注意的数学分支中有着适合于问题的结构和方法。比如, 广群 (groupoid) 和广代数 (algebroid) 能克服李群和李代数在 表示连续变换过程 中的一些困难 —— 这些困难困扰了我很长时间。 解决问题和建立数学模型是相辅相成的 ,一方面,一个 清晰的问题将使我们有明确的目标去寻求合适的数学结构 ,另一方面, 对数学结构的深入理解对于指导问题的解决也是有重要作用的。 对于解决一个问题来说, 数学工具的选择 最重要的是 适合 ,而不是高深,但是如果在现有数学方法陷入困难的时候, 寻求更高级别的数学的帮助,往往能柳暗花明 。数学家长时间的努力解决的很多问题,并不都是理论游戏,他们的解决方案中很多时候蕴含着我们需要的东西,而且可能导致对更多问题的解决 —— 但是我们需要时间去学习和发现它们。 拓扑:游走于直观与抽象之间 近日来,抽空再读了一遍 点集拓扑 (Point Set Topology) ,这是我第三次重新学习这个理论了。我看电视剧和小说,极少能有兴致看第二遍,但是, 对于数学,每看一次都有新的启发和收获 。 代数,分析,和拓扑 ,被称为是 现代数学的 三大柱石 。最初读拓扑,是在两三年前,由于学习流形理论的需要。可是,随着知识的积累,发现它是很多理论的根基。可以说,没有拓扑,就没有现代意义的分析与几何。我们在各种数学分支中接触到的最基本的概念,比如, 极限,连续,距离(度量),边界,路径 ,在现代数学中,都 源于拓扑 。 拓扑学是一门非常奇妙的学科,它把最直观的现象和最抽象的概念联系在一起了。 拓扑描述的 是普遍使用的概念(比如 开集,闭集,连续 ),我们对这些概念习以为常,理所当然地使用着,可是,真要定义它,则需要对它们 本质的最深刻的洞察 。数学家们经过长时间的努力,得到了这些概念的现代定义。这里面很多第一眼看上去,会感觉惊奇 —— 怎么会定义成这个样子。 首先是开集 。在学习初等数学时,我们都学习开区间 (a, b) 。可是,这只是在一条线上的,怎么推广到二维空间,或者更高维空间,或者别的形体上呢?最直观的想法,就是 “ 一个不包含边界的集合 ” 。可是,问题来了,给一个集合,何谓 “ 边界 ” ?在拓扑学里面,开集 (Open Set) 是最根本的概念,它是定义在集合运算的基础上的。它要求开集符合这样的条件: 开集 的 任意并集和有限交集 仍为 开集 。 我最初的时候,对于这样的定义方式,确实百思不解。不过,读下去,看了和做了很多证明后,发现,这样的定义一个 很重要的意义 在于:它 保证了开集中每个点都有一个邻域包含在这个集合内 —— 所有点都和外界(补集)保持距离 。这样的理解应该比使用集合运算的定义有更明晰的几何意义。但是,直观的东西不容易直接形成严谨的定义,使用集合运算则更为严格。而集合运算定义中, 任意并集的封闭性 是对这个 几何特点的内在保证 。 另外一个例子就是 “ 连续函数 ”(Continuous Function) 。在学微积分时,一个耳熟能详的定义是 “ 对任意的 epsilon 0 ,存在 delta 0 ,使得 。。。。 ” ,背后最直观的意思就是 “ 足够近的点保证映射到任意小的范围内 ” 。可是, epsilon, delta 都依赖于实空间,不在实空间的映射又怎么办呢?拓扑的定义是 “ 如果一个映射的值域中任何开集的原象都是开集,那么它连续 。 ” 这里就没有 epsilon 什么事了。 “开集的原象是开集” 这里的关键在于,在拓扑学中,开集的最重要意义就是要传递 “ 邻域 ” 的意思 —— 开集本身就是所含点的邻域 。这样连续定义成这样就顺理成章了。稍微把说法调节一下,上面的定义就变成了 “ 对于 f(x) 的任意邻域 U ,都有 x 的一个邻域 V ,使得 V 里面的点都映射到 U 中 。 ” 这里面,我们可以感受到为什么开集在拓扑学中有根本性的意义。既然开 集传达 “ 邻域 ” 的意思 ,那么,它 最重要的作用 就是 要表达哪些点靠得比较近 。 给出一个拓扑结构,就是要指出哪些是开集,从而指出哪些点靠得比较近,这样就形成了一个聚集结构 —— 这就是拓扑 。 可是这也可以通过距离来描述,为什么要用开集呢,反而不直观了。 某种意义上说, 拓扑是 “ 定性 ” 的, 距离度量是 “ 定量 ” 的。随着连续变形,距离会不断变化,但是靠近的点还是靠近,因此本身固有的拓扑特性不会改变 。拓扑学研究的就是这种本质特性 —— 连续变化中的不变性。 在拓扑的基本概念中,最令人费解的,莫过于 “ 紧性 ”(Compactness) 。它 描述一个空间或者一个集合 “ 紧不紧 ” 。正式的定义是 “ 如果一个集合的任意开覆盖都有有限子覆盖,那么它是紧的 ” 。乍一看,实在有点莫名其妙。它究竟想描述一个什么东西呢?和 “ 紧 ” 这个形容词又怎么扯上关系呢? 一个 直观 一点的理解, 几个集合是 “ 紧 ” 的,就是说,无限个点撒进去,不可能充分散开 。无论邻域多么小,必然有一些邻域里面有无限个点。上面关于 compactness 的这个定义的玄机就在有限和无限的转换中。一个紧的集合,被无限多的小邻域覆盖着,但是,总能找到其中的有限个就能盖全。那么,后果是什么呢? 无限个点撒进去,总有一个邻域包着无数个点。 邻域们再怎么小都是这样 —— 这就保证了无限序列中存在极限点。 Compac t 这个概念虽然有点不那么直观,可是 在分析中有着无比重要的作用 。因为它 关系到极限的存在性 —— 这是数学分析的基础。了解泛函分析的朋友都知道, 序列是否收敛 ,很多时候就看它了。微积分中,一个重要的定理 —— 有界数列必然包含收敛子列 ,就是根源于此。 在学习拓扑,或者其它现代数学理论之前,我们的数学一直都在 有限维欧氏空间 之中,那是一个完美的世界,具有一切良好的属性, Hausdorff, Locally compact, Simply connected , Completed ,还有一 套线性代数结构 ,还有良好定义的 度量,范数,与内积 。可是,随着研究的加深,终究还是要走出这个圈子。这个时候,本来理所当然的东西,变得不那么必然了。 · 两个点必然能分开?你要证明空间是 Hausdorff 的。 · 有界数列必然存在极限点?这只在 locally compact 的空间如此。 · 一个连续体内任意两点必然有路径连接?这可未必。 一切看上去有悖常理,而又确实存在。从 线性代数 到 一般的群 ,从 有限维 到 无限维 ,从 度量空间 到 拓扑空间 ,整个认识都需要重新清理。而且,这些绝非仅是数学家的概念游戏,因为我们的世界不是有限维向量能充分表达的。当我们研究一些不是向量能表达的东西的时候,度量,代数,以及分析的概念,都要重新建立,而 起点就在 拓扑 。 和机器学习和计算机视觉相关的数学(转载) (以下转自一位 MIT 牛人的空间文章,写得很实际:) 作者: Dahua 感觉数学似乎总是不够的。这些日子为了解决 research 中的一些问题,又在图书馆捧起了数学的教科书。从大学到现在,课堂上学的和自学的数学其实不算少了,可是在研究的过程中总是发现需要补充新的数学知识。 Learning 和 Vision 都是很多种数学的交汇场。看着不同的理论体系的交汇,对于一个 researcher 来说,往往是非常 exciting 的 enjoyable 的事情。不过,这也代表着要充分了解这个领域并且取得有意义的进展是很艰苦的。 记得在两年前的一次 blog 里面,提到过和 learning 有关的数学。今天看来,我对于数学在这个领域的作用有了新的思考。 对于 Learning 的研究, 1 、 Linear Algebra ( 线性代数 ) 和 Statistics ( 统计学 ) 是最重要和不可缺少的。 这代表了 Machine Learning 中最主流的两大类方法的基础。一种是以 研究函数和变换 为重点的 代数方法 ,比如 Dimension reduction , feature extraction , Kernel 等,一种是以 研究统计模型和样本分布 为重点的 统计方法 ,比如 Graphical model, Information theoretical models 等。它们侧重虽有不同,但是常常是共同使用的, 对于 代数方法 ,往往需要 统计上的解释 ,对于 统计模型 ,其 具体计算则需要代数的帮助 。 以代数和统计为出发点,继续往深处走,我们会发现需要更多的数学。 2 、 Calculus ( 微积分 ) ,只是数学分析体系的基础。 其基础性作用不言而喻。 Learning 研究的大部分问题是在连续的度量空间进行的,无论代数还是统计,在研究优化问题的时候,对一个 映射的微分或者梯度的分析 总是不可避免。而在统计学中, Marginalization 和积分 更是密不可分 —— 不过,以解析形式把积分导出来的情况则不多见。 3 、 Partial Differential Equation (偏微分方程 ) , 这主要用于 描述动态过程 ,或者 仿动态过程 。这个学科在 Vision 中用得比 Learning 多,主要用于 描述连续场的运动或者扩散过程 。比如 Level set, Optical flow 都是这方面的典型例子。 4 、 Functional Analysis ( 泛函分析 ) , 通俗地,可以理解为 微积分 从 有限维 空间到 无限维 空间的 拓展 —— 当然了,它实际上远不止于此。在这个地方,函数以及其所作用的对象之间存在的对偶关系扮演了非常重要的角色。 Learning 发展至今,也在向无限维延伸 —— 从研究 有限维向量 的问题到 以无限维的函数 为 研究对象 。 Kernel Learning 和 Gaussian Process 是其中典型的例子 —— 其中的核心概念都是 Kernel 。很多做 Learning 的人把 Kernel 简单理解为 Kernel trick 的运用,这就把 kernel 的意义严重弱化了。在 泛函 里面, Kernel (Inner Product) 是 建立整个博大的代数体系的根本 ,从 metric, transform 到 spectrum 都根源于此。 5 、 Measure Theory ( 测度理论 ) , 这是和实分析关系非常密切的学科。但是测度理论并不限于此。从某种意义上说, Real Analysis 可以从 Lebesgue Measure (勒贝格测度) 推演,不过其实还有很多别的测度体系 —— 概率 本身就是一种 测度 。测度理论对于 Learning 的意义是根本的, 现代统计学 整个就是建立在 测度理论的基础之上 —— 虽然初级的概率论教科书一般不这样引入。在看一些统计方面的文章的时候,你可能会发现,它们会把统计的公式改用测度来表达,这样做有两个好处:所有的推导和结论不用分别给连续分布和离散分布各自写一遍了,这两种东西都可以用同一的测度形式表达: 连续分布的积分 基于 Lebesgue 测度 , 离散分布的求和 基于 计数测度 ,而且还能推广到那种既不连续又不离散的分布中去(这种东西不是数学家的游戏,而是已经在实用的东西,在 Dirchlet Process 或者 Pitman-Yor Process 里面会经常看到 ) 。而且,即使是连续积分,如果不是在欧氏空间进行,而是在更一般的拓扑空间(比如微分流形或者变换群),那么传统的黎曼积分(就是大学一年级在微积分课学的那种)就不 work 了,你可能需要它们的一些推广,比如 Haar Measure 或者 Lebesgue-Stieltjes 积分 。 6 、 Topology (拓扑学 ) , 这是学术中很基础的学科。它一般不直接提供方法,但是它的很多概念和定理是其它数学分支的基石。看很多别的数学的时候,你会经常接触这样一些概念: Open set / Closed set , set basis , Hausdauf, continuous function , metric space, Cauchy sequence, neighborhood, compactness, connectivity 。很多这些也许在大学一年级就学习过一些,当时是基于极限的概念获得的。如果,看过拓扑学之后,对这些概念的认识会有根本性的拓展。比如,连续函数,当时是由 epison 法定义的,就是无论取多小的正数 epsilon ,都存在 xxx ,使得 xxx 。这是需要一种 metric 去度量距离的,在 general topology 里面,对于连续函数的定义连坐标和距离都不需要 —— 如果 一个映射使得开集的原像是开集 ,它就是 连续 的 —— 至于开集是基于集合论定义的,不是通常的 开区间 的意思。这只是最简单的例子。当然,我们研究 learning 也许不需要深究这些数学概念背后的公理体系,但是,打破原来定义的概念的局限在很多问题上是必须的 —— 尤其是当你研究的东西它不是在欧氏空间里面的时候 —— 正交矩阵,变换群,流形,概率分布的空间 ,都属于此。 7 、 Differential Manifold ( 微分流形 ) , 通俗地说它研究的是平滑的曲面。一个直接的印象是它是不是可以用来 fitting 一个 surface 什么的 —— 当然这算是一种应用,但是这是非常初步的。 本质上说 , 微分流形研究的是 平滑的拓扑结构 。一个 空间构成微分流形 的基本要素是 局部平滑 :从 拓扑学 来理解,就是它的 任意局部都同胚于欧氏空间 ,从 解析 的角度来看,就是 相容的局部坐标系统 。当然,在全局上,它不要求和欧氏空间同胚。它除了可以用于刻画集合上的平滑曲面外,更重要的意义在于,它可以用于研究很多重要的集合。一个 n- 维线性空间的全部 k- 维子空间 (k 8 、 Lie Group Theory ( 李群论 ) , 一般意义的群论在 Learning 中被运用的不是很多,群论在 Learning 中用得较多的是它的一个重要方向 Lie group 。定义在平滑流形上的群,并且其群运算是平滑的话,那么这就叫李群。因为 Learning 和编码不同,更多关注的是连续空间,因为 Lie group 在各种群中对于 Learning 特别重要。各种子空间,线性变换,非奇异矩阵都基于通常意义的矩阵乘法构成李群。在李群中的映射,变换,度量,划分等等都对于 Learning 中代数方法的研究有重要指导意义。 9 、 Graph Theory (图论 ) , 图,由于它在表述各种关系的强大能力以及优雅的理论,高效的算法,越来越受到 Learning 领域的欢迎。经典图论,在 Learning 中的一个最重要应用就是 graphical models 了,它被成功运用于分析统计网络的结构和规划统计推断的流程。 Graphical model 所取得的成功,图论可谓功不可没。在 Vision 里面, maxflow (graphcut) 算法在图像分割, Stereo 还有各种能量优化中也广受应用。另外一个重要的图论分支就是 Algebraic graph theory ( 代数图论 ) ,主要运用于图的谱分析,著名的应用包括 Normalized Cut 和 Spectral Clustering 。近年来在 semi-supervised learning 中受到特别关注。 这是大牛们做的很好的综述啊! 据说,是 MIT 一牛人对数学在机器学习中的作用给的评述 !
个人分类: 科研学习|2580 次阅读|0 个评论
[转载]情感分析简述
zhaiyujia2013 2014-6-5 22:37
情感分析,我研究了也有半年有余了,ACL Anthology上关于情感分析的论文也基本看过了一遍,但是到目前还没有什么成就的。以下是我为一位同学毕业设计写的情感分析方面的综述,引用的论文基本上是ACL和COLING还有EMNLP上历年关于情感分析的论文,本文应该学术性比较强一点,本文虽不打算发表,但由于将来可能还有用,以及关于学术上的原因,请大家如果要引用请务必标明出处( http://blog.sina.com.cn/s/blog_48f3f8b10100irhl.html )。 概述 情感分析自从2002年由Bo Pang提出之后,获得了很大程度的研究的,特别是在在线评论的情感倾向性分析上获得了很大的发展,目前基于在线评论文本的情感倾向性分析的准确率最高能达到90%以上,但是由于深层情感分析必然涉及到语义的分析,以及文本中情感转移现象的经常出现,所以基于深层语义的情感分析以及篇章级的情感分析进展一直不是很大。情感分析还存在的一个问题是尚未存在一个标准的情感测试语料库,虽然Bo Pang实验用的电影评论数据集(http://www.cs.cornell.edu/people/pabo/movie-review-data/)以及Theresa Wilson等建立的MPQA(http://www.cs.pitt.edu/mpqa/)是目前广泛使用的两类情感分析数据集,但是并没有公认的标准加以确认。 目前情感分析的研究基本借鉴文本分类等机器学习的方法,还没有根据自身的特点形成一套独立的研究方法,当然在某种程度上也可以把情感分析看出一种特殊的文本分类。比较成熟的方法是基于监督学习的机器学习方法,半监督学习和无监督学习目前的研究不是很多,单纯的基于规则的情感分析这两年已很少研究了。既然目前很多情感分析的研究基于机器学习,那么特征选择就是一个很重要的问题,N元语法等句法特征是使用最多的一类特征,而语义特征(语义计算)和结构特征(树核函数)从文本分类的角度看效果远没有句法特征效果好,所以目前的研究不是很多的。 由于基于监督学习情感分析的研究已经很成熟了,而且在真实世界中由于测试集的数量要远远多于训练集的数量,并且测试集的领域也不像在监督学习中被限制为和训练集一致,也就是说目前情感分析所应用的归纳偏置假设在真实世界中显得太强的,为了和真实世界相一致,基于半监督学习或弱指导学习的情感分析和跨领域的情感分析势必是将来的研究趋势之一。 在情感分析的最初阶段基于语义和基于规则的情感分析曾获得了比较大的重视,但是由于本身实现的复杂性以及文本分类和机器学习方法在情感分析应用上获得的成功,目前关于这方面的研究以及很少了,但是事实上,语义的相关性和上下文的相关性正是情感分析和文本分类最大的不同之处,所以将基于语义和规则的情感分析与基于机器学习的情感分析相结合也将是未来的研究趋势之一。 以下将分别对情感分析的起源,目前基于监督学习,无监督学习,基于规则和跨领域的情感分析的一些研究工作进行简单的介绍。 起源 虽然之前也有一些相关工作,但目前公认的情感分析比较系统的研究工作开始于(Pang et al., 2002)基于监督学习(supervised learning)方法对电影评论文本进行情感倾向性分类和(Turney,2002)基于无监督学习(unsupervised learning)对文本情感情感倾向性分类的研究。(Pang et al., 2002)基于文本的N元语法(ngram)和词类(POS)等特征分别使用朴素贝叶斯(Naive Bayes),最大熵(Maximum Entropy)和支持向量机(Support Vector Machine,SVM)将文本情感倾向性分为正向和负向两类,将文本的情感进行二元划分的做法也一直沿用至今。同时他们在实验中使用电影评论数据集目前已成为广泛使用的情感分析的测试集。(Turney ,2002)基于点互信息(Pointwise Mutual Information,PMI)计算文本中抽取的关键词和种子词(excellent,poor)的相似度来对文本的情感倾向性进行判别(SO-PMI算法)。 在此之后的大部分都是基于(Pang et al., 2002)的研究。而相对来说,(Turney et al.,2002)提出的无监督学习的方法虽然在实现上更加简单,但是由于单词之间的情感相似度难以准确的计算和种子词的难以确定,继续在无监督学习方向的研究并不是很多的,但是利用SO-PMI算法计算文本情感倾向性的思想却被很多研究者所继承了。 监督学习 目前,基于监督学习的情感分析仍然是主流,除了(Li et al.,2009)基于非负矩阵三分解(Non-negative Matrix Tri-factorization),(Abbasi et al.,2008)基于遗传算法(Genetic Algorithm)的情感分析之外,使用的最多的监督学习算法是朴素贝叶斯,k最近邻(k-Nearest Neighbor, k -NN),最大熵和支持向量机的。而对于算法的改进主要在对文本的预处理阶段。 一个和文本分类不同地方就是情感分析有时需要提取文本的真正表达情感的句子。(Pang et al., 2004)基于文本中的主观句的选择和(Wilson el al.,2009)基于文本中的中性实例(neutral instances)的分析,都是为了能够尽量获得文本中真正表达情感的句子。(Abbasi et al.,2008)提出通过信息增益(Information Gain,IG)的方法来选择大量特征集中对于情感分析有益的特征。 而对于特征选择,除了N元语法和词类特征之外,(Wilson el al.,2009)提出混合单词特征,否定词特征,情感修饰特征,情感转移特征等各类句法特征的情感分析,(Abbasi et al.,2008)提出混合句子的句法(N元语法,词类,标点)和结构特征(单词的长度,词类中单词的个数,文本的结构特征等)的情感分析。 除了对于文本的预处理,对于监督学习中情感分析还进行了以下方面的研究的。(Melville et al., 2009)和(Li et al.,2009)提出结合情感词的先验的基于词典的情感倾向性和训练文本中后验的基于上下文的情感情感倾向性共同判断文本的情感倾向性。(Taboada et al.,2009)提出结合文本的题材(描述,评论,背景,解释等)和文本本身的特征共同判断文本的情感倾向性。(Tsutsumi et al.,2007)提出利用多分类器融合技术来对文本情感分类。(Wan, 2008)和(Wan, 2009)提出结合英文中丰富的情感分析资源来提高中文情感分析的效果。 基于规则 / 无监督学习 和基于监督学习的情感分析相比,基于规则和无监督学习方面的研究不是很多。除了(Turney,2002)之外,(朱嫣岚 et al.,2002)利用HowNet对中文词语语义的进行了情感倾向计算。(娄德成 et al.,2006)利用句法结构和依存关系对中文句子语义进行了情感分析,(Hiroshi et al.,2004)通过改造一个基于规则的机器翻译器实现日文短语级情感分析,(Zagibalov et al.,2008)在(Turney,2002)的SO-PMI算法的基础上通过对于中文文本特征的深入分析以及引入迭代机制从而在很大程度上提高了无监督学习情感分析的准确率。 跨领域情感分析 跨领域情感分析在情感分析中是一个新兴的领域,目前在这方面的研究不是很多,主要原因是目前的研究还没有很好的解决如何寻找两个领域之间的一种映射关系,或者说如何寻找两个领域之间特征权值之间的平衡关系。对于跨领域情感分析的研究开始于(Blitzer et al.,2007)将结构对应学习(Structural Correspondence Learning,SCL)引入跨领域情感分析,SCL是一种应用范围很广的跨领域文本分析算法,SCL的目的是将训练集上的特征尽量对应到测试集中。(Tan et al.,2009)将SCL引入了中文跨领域情感分析中。(Tan 2 et al.,2009)提出将朴素贝叶斯和EM算法的一种半监督学习方法应用到了跨领域的情感分析中。(Wu et al.,2009)将基于EM的思想将图排序(Graph Ranking)算法应用到跨领域的情感分析中,图排序算法可以认为是一种迭代的 k -NN算法。 从目前的研究可以看出,跨领域的情感分析主要问题在于寻找两个领域之间的一种映射关系,但是这样的映射关系或者很难寻找,或者需要相当强的数学证明。所以很多研究借用半监督学习的方法,通过逐次迭代逐渐减少训练集和测试集之间的差异。 参考文献: Xiaojun Wan.Using Bilingual Knowledge and Ensemble Techniques for Unsupervised Chinese Sentiment Analysis.Proceedings of EMNLP-08,553-561 Xiaoun Wan.Co-Training for Cross-Lingual Sentiment Classification.Proceedings of ACL-09,234-243 Theresa Wilson,Janyce Wiebe,Paul Hoffmann. Recognizing Contextual Polarity: An Exploration of Features for Phrase-Level. Computer Linguistics,25(3),399-433 Ahmed Abbasi,Hsinchun Chen,Arab,Salem.Sentiment Analysis in Multiple Languages:Feature Selection for Opinion Classification in Web Forums.ACM Transaction on Information Systems,26(3),12:1-12:34 Prem Melville,Wojciech Gryc,Richard D.Larence.Sentiment Analysis Of Blogs by Combining Lexical Knowledge with Text Classification.Proceedings of KDD-09,1275-1283 KANAYAMA Hiroshi,NASUKAWA Tetsuya,WATANBE Hideo.Deep Sentiment Analysis Using Machine Translation Technology.Proceedings of Coling -04 Maite Taboada,Julian Brooke,Manfred Stede.Genre-Based Paragraph Classification for Sentiment Analysis.Proceedings of SIGDIAL-09,62-70 Taras Zagibalov,John Carroll.Automatic Seed Word Selection for Unsupervised Sentiment Classification of Chinese Text.Proceedings of Coling-08,1073-1080 Bo Pang,Lillian Lee.A Sentimental Education:Sentiment Analysis Using Subjectivity Summarization Based on Minimum Cuts.Proceedings of ACL-04 Bo Pang,Lillian Lee,Shivakumar Vaithyanathan.Thumbs up?Sentiment Classification using Machine Learning Techniques.Proceedings of EMNLP-02,79-86 Peter D. Turney.Thumbs Up or Thumbs Down?Senmantic Orientition Applied to Unsupervised Classification of Reviews.Proceedings of ACL-02,417-424 Kimitaka Tsutsumi, Kazutaka Shimada,Tsutomu Endo. Movie Review Classification Based on a Multiple Classifier. Proceedings of the 21st Pacific Asia Conference on Language, Information and Computation (PACLIC21), 481-488 John Blitzer,Mark Dredze, Fernando Pereira. Biographies, Bollywood, Boom-boxes and Blenders:Domain Adaptation for Sentiment Classification. Proceedings of the 45th Annual Meeting of the Association of Computational Linguistics, 440–447 Songbo Tan,Xueqi Cheng. Improving SCL Model for Sentiment-Transfer Learning. Proceedings of NAACL HLT 2009: Short Papers, 181–184 Songbo Tan, Xueqi Cheng, Yuefen Wang, Hongbo Xu. Adapting Naive Bayes to Domain Adaptation for Sentiment Analysis. ECIR 2009,337–349 Qiong Wu,Songbo Tan,Xueqi Cheng. Graph Ranking for Sentiment Transfer. Proceedings of the ACL-IJCNLP 2009 Conference Short Papers, 317–320 Tao Li Ti Zhang,Vikas Sindhwani.A Non-negative Matrix Tri-factorization Approach to Sentiment Classification with Lexical Prior Knowledge.Proceeding of ACL-09,244-252 娄德成,姚天妨.汉语与子语义极性分析和观点抽取方法的研究.计算机应用,2006,26(11),2622-2625 朱嫣岚,闵锦,周雅倩,黄萱菁,吴立德. 基于HowNet的词汇语义倾向计算. 中文信息学 报,2006,20(1),14-20
个人分类: 情感分析|3064 次阅读|0 个评论
图像处理与模式识别讨论班
热度 1 mordekai 2014-4-21 12:13
如果你不能简单说清,那就是你还没有完全明白。 某个新的理论,若不是建立在连儿童都能理解的物理图景之上,那么它极有可能毫无价值。(附: 爱因斯坦的宇宙.pdf ) —— 阿尔伯特 · 爱因斯坦 关于讨论班的若干要求: 文字尽量用英文( 课本中的原话 ),不要翻译; PPT用统一的模板( ppt模板 ); PPT中如果引用了课本上的公式,尽量给出公式编号; 在讲书本上的每个图时,一定要进行分析、比较,而不是单纯地告诉听众这个是\beta分布,那个是高斯分布。 本学期要学习的教材 Christopher M. Bishop , Pattern recognition and machine learning (PRML) . 2006, New York:Springer. ( .pdf , errata.pdf , Solutions to theExercises.pdf , PRML 笔记.pdf , chp01.ppt , chp02.ppt , chp03.ppt , chp08.ppt ) Dougherty, G. , Pattern Recognition andClassification: An Introduction . 2013, New York: Springer.( .pdf , data.rar , code.rar) Kevin P Murphy , Machine Learning: a Probabilistic Perspective (MLaPP) . 2012, MIT Press. ( MLapp.pdf , code.rar ) 讨论班报告记录 2014/03/08 ,Sat. ,广C-616 ,讨论班,报告人:石丽( 验证码识别.ppt ) 、蔡逸飞( 图像修复.pptx ) 、梁浩然( 深度学习.pptx ) 。 2014/03/15 ,Sat. ,广C-616 ,讨论班,报告人:吴烨( 人脑神经纤维成像及三维重构研究.pptx ) 、蔡逸飞( 图像修复(2).pptx , Criminisi.pdf , MinimumErrorBoundaryCut.pdf , PSO_Inpainting.pdf ) 。 2014/04/09,Wed., 广C-515 ,大组讨论班,报告: 模式识别的非参数方法.ppt 2014/04/16,Wed., 广C-515,大组讨论班,报告人:李泽界, 讲: Sparse Subspace Clustering: Algorithm, Theory, and Applications (Elhamifar et al., 2013, TPAMI). The main idea is actually motivated by the famous paper: Robust face recognition via sparse representation (J.Wright et al. , 2009, TPAMI), where the lables of the training data are assumed to beknown beforehand, and the priori information that the test sample y can be sparsely represented by the training ones from the same subspace of y are utilized for classification.For the clustering problem, the case is contrary. The lables of the training data are unkown. The sparse prior, again, is used to derive the lables. In this paper, Elhamifar et al. just used the sparse coefficient matrix C of the data Y to calculate the weights W between data points (corresponding to the weights W on the edges of the similarity graph), and then apply spectral clustering to the similarity graph . Therefore, sparse representation and spectral clustering are two key points of this paper. Unfortunately, none of them are clarified on the seminar. 2014/04/19,Sat., 广C-515 ,讨论班:石丽(Bayes决策论)和Mordekai( 分布)。 2014/05/04,Sun.,阴雨, 广C-515 , 蔡逸飞介绍高斯分布(Sec.2.3.1 ~ Sec.2 .3.4),沈闻佳(Chp.1, 关于曲线拟合的总结),Mordekai(Chp.1, Sec.1.5 Decision Theroy ). 2014/05/11,Sun., 雨, 广C-616,再次讨论: Sec. 2.3 The Gaussian Distribution 【主讲人】 :高晨晖( Sec. 2.3, 引言部分)、史金专(Sec. 2.3.1~2.3.2)、姜海军(Sec. 2.3.3)、沈闻佳(Sec. 2.3.4, ppt )、李小薪(Sec. 2.3.5~2.3.7) 【报告评论】:大家都下了很多功夫准备,但沈闻佳的报告是最精彩的:清晰而严格地给出了高斯分布的均值和协方差的最大似然估计的计算过程,并对估计结果的有偏和无偏进行了严格地证明。第一次在讨论班上听到了同学如此严谨、如此清晰的报告,十分开心。《红与黑》的作者司汤达尔说: 绝对清晰,是风格上的唯一的美 。这 难道 不应该是我们要努力学习的吗? 【Review】:2.3.1~2.3.3,条件高斯分布和边缘高斯分布;2.3.4~2.3.6,高斯分布的参数估计:最大似然估计、最大似然的序贯(sequential)估计、Bayesian估计(inference);2.3.7,由高斯-Gamma分布(在对一元高斯分布的精度\lambda进行估计时产生的分布)衍生出了学生t-分布;2.3.8 周期变量的高斯分布;2.3.9 混合高斯模型。 Introduction: 高斯分布 极其重要。因为 它“arises in many different contexts and can be motivated from a variety of different perspectives”,例如:最大化熵的分布就是高斯分布,中心极限定理和二项分布等都与高斯分布有关); 证明多元高斯分布(2.43)是规范化的(从到的积分为1)。从高斯分布的几何形式(马氏距离)出发,重点讨论了协方差矩阵(马氏距离与欧式距离最大的差别就在协方差阵上),根据 协方差矩阵关于其特征向量的展开式 ,把高斯分布的表达式从原始空间变换到了 以协方差矩阵的特征向量为坐标轴的变换空间 ,从而,在此变化空间中,很容易地证明了多元高斯分布(2.43)的确是规范化的; 再来证明多元高斯分布的均值为\mu,协方差为\Sigma。这部分的证明用了重要的 变换技巧z=x-\mu ,使得证明过程看起来十分简单、清晰; 最后,讨论了多元高斯分布的局限性,从而引出了latent/hidden variables、mixture of Gaussians、hierarchical models、probabilistic graphical models等概念。 Conditional Gaussian distributions. 总体服从高斯分布,那么条件局部服从什么分布?也就是:已知 ~ ,那么 服从什么分布?作者用一句话就证明了 是服从高斯分布的: From the product rule of probability, we see that this conditional distribution can be evaluated from the joint distribution simply by fixing x_b to the observed value and normalizing the resulting expression to obtain a valid probability distribution over x_a . 因为,由乘法准则: ,分母上的p(x_b)可以看做是为了规范化p(x_a|x_b)才需要的,因此,求解p(x_a|x_b)就相当于把p(x_a,x_b)视作关于x_a的函数(把x_b看做常数),然后再做个规范化。 由于p(x_a,x_b)是高斯分布,那么,把p(x_a,x_b)看做关于x_a的函数时,也应该是高斯分布(这句话说的可能不大正确),因此,p(x_a|x_b)也是高斯分布 。然后,基于这一结论,作者用了一个简单的技巧“ complete the quare ”,很容易就给出了 ( 也 服从高斯分布)的均值和方差与 和 之间的关系 。 Marginal Gaussian distributions. 总体服从高斯分布,那么局部服从什么分布?也就是:已知 ~ ,那么 服从什么分布?由于 ,因此,只要把x_b积掉(integrate out)就可以得到p(x_a)了;再由 p(x_a)的形式确定其均值和协方差 。先看如何 积掉 x_b。这个积分看起来挺复杂的,但作者再一次向我们展示了如何化繁为简,思路是:先把联合分布式(2.70)中与x_b相关的式子拿出来,再用“complete the quare”的技术将其转换为类似于 的高斯分布的二次式(2.84),然后利用高斯分布的积分为1,就很容易算得这部分积分。这里需要说明(2.84)式是如何得到的: Bayes’Theorem for Gaussian Variables. 已知p(x)和p(y|x)都服从高斯分布,且 p(y|x)的均值是x的线性函数(linear Gaussian model),求p(y)和p(x|y)。其思路是:先利用p(x,y) = p(x)p(y|x)算得联合PDF,再利用边缘高斯分布的结论由p(x,y)计算p(y),用条件高斯分布的结论 由p(x,y)计算p(y|x)。 Maximum likelihood for the Gaussian. 详见沈闻佳的 PPT 。 Sequential estimation. 当样本数非常多时,高斯分布的最大似然估计是困难的,可以采用序贯方法。最大似然估计即:令似然函数 的导数为0,求得的解。Robbins-Monro算法给出了求解的一般公式: ,该算法将使 以概率1收敛于0. Bayesian inference for the Gaussian. 最大似然估计没有为参数的先验分布施加任何约束,本节阐述如何利用共轭先验,为高斯分布均值的估计、协方差的估计、均值和协方差的估计施加先验。均值的共轭先验,仍然是高斯分布;精度(协方差的逆)的共轭 先验,是gamma分布(一元高斯)/Wishart分布;均值和精度的共轭先验是高斯-gamma分布。对于一元高斯分布,式(2.140)利用 complete the square 技术,给出了均值和方差的估计(对应于 Exercise 2.38 ),下面给出具体的推导过程: 首先,在似然函数中,关于 的exp指数部分的标准的二次形式是: , (7.1) 的最大似然估计是 ,对应于二次形式中的一次项;精度对应于二次形式的系数: 。 对于施加了先验约束 的 ,其指数部分可化为: , 下面给出如何将其化为标准的 二次形式(这里需注意:是关于 的二次式,不关心常数项): 对照(7.1),可得: 及 . Student’s t-distribution. 主要学习t-分布的鲁棒性,见p.104的Fig. 2.16,其代码实现见MLaPP的p.40的Fig. 2.8的实现代码: robustDemo.m , MLaPP的代码从 这里 下载 。 2014/05/17,Sat., 小 雨 , 广 C-616, 讨论: Sec. 2.4 The Exponetial Family 姜海军主讲: The Exponetial Family;蔡逸飞讲: Fig. 2.16( robustDemo.m)。 讨论班安排 时间 章节 主讲人 2014/05/17 星期 6 Fig. 2.16 , robustDemo.m 代码从 这里 下载, MLapp.pdf 蔡逸飞 Sec. 2.3.8~2.3.9 姜晓睿 Sec. 2.4 Exponential Family 姜海军 Sec. 3.1 Linear Basis Function Models 朱娅妮 2014/05/24 星期6 Sec. 2.3.8~2.3.9 姜晓睿 Sec. 3.2 The Bias-Variance Decomposition 高晨晖 Sec. 3.3 Bayesian Linear Regression 史金专 Sec. 3.4 Bayesian Model Comparison 石丽
个人分类: 教学与研究|6167 次阅读|2 个评论
[转载]【OpenCV】高斯混合背景建模
liuna198507 2014-4-16 10:28
原文链接:http://blog.csdn.net/xiaowei_cqu/article/details/23689189 OpenCV中实现了两个版本的高斯混合背景/前景分割方法(Gaussian Mixture-based Background/Foreground Segmentation Algorithm) ,调用接口很明朗,效果也很好。 BackgroundSubtractorMOG 使用示例 view plain copy int main(){ VideoCapture video( 1.avi ); Mat frame,mask,thresholdImage, output; videoframe; BackgroundSubtractorMOG bgSubtractor(20,10,0.5, false ); while ( true ){ videoframe; ++frameNum; bgSubtractor(frame,mask,0.001); imshow( mask ,mask); waitKey(10); } return 0; } 构造函数可以使用默认构造函数或带形参的构造函数: view plain copy BackgroundSubtractorMOG::BackgroundSubtractorMOG() BackgroundSubtractorMOG::BackgroundSubtractorMOG( int history, int nmixtures, double backgroundRatio, double noiseSigma=0) 其中history为使用历史帧的数目,nmixtures为混合高斯数量,backgroundRatio为背景比例,noiseSigma为噪声权重。 而调用的接口只有重载操作符(): view plain copy void BackgroundSubtractorMOG::operator()(InputArray image, OutputArray fgmask, double learningRate=0) 其中image为当前帧图像,fgmask为输出的前景mask,learningRate为背景学习速率。 以下是使用BackgroundSubtractorMOG进行前景/背景检测的一个截图。 BackgroundSubtractorMOG2 使用示例 view plain copy int main(){ VideoCapture video( 1.avi ); Mat frame,mask,thresholdImage, output; //videoframe; BackgroundSubtractorMOG2 bgSubtractor(20,16, true ); while ( true ){ videoframe; ++frameNum; bgSubtractor(frame,mask,0.001); coutframeNumendl; //imshow(mask,mask); //waitKey(10); } return 0; } 同样的,构造函数可以使用默认构造函数和带形参的构造函数 view plain copy BackgroundSubtractorMOG2::BackgroundSubtractorMOG2() BackgroundSubtractorMOG2::BackgroundSubtractorMOG2( int history, float varThreshold, bool bShadowDetection= true ) history同上,varThreshold表示马氏平方距离上使用的来判断是否为背景的阈值(此值不影响背景更新速率),bShadowDetection表示是否使用阴影检测(如果开启阴影检测,则mask中使用127表示阴影)。 使用重载操作符()调用每帧检测函数: view plain copy void BackgroundSubtractorMOG2::operator()(InputArray image, OutputArray fgmask, double learningRate=-1) 参数意义同BackgroundSubtractorMOG中的operator()函数。 同时BackgroundSubtractorMOG2提供了getBackgroundImage()函数用以返回背景图像: view plain copy void BackgroundSubtractorMOG2::getBackgroundImage(OutputArray backgroundImage) 另外OpenCV的refman中说新建对象以后还有其他和模型油有关的参数可以修改,不过比较坑的是opencv把这个这些函数参数声明为protected,同时没有提供访问接口,所以要修改的话还是要自己修改源文件提供访问接口。 view plain copy protected : Size frameSize; int frameType; Mat bgmodel; Mat bgmodelUsedModes; //keep track of number of modes per pixel int nframes; int history; int nmixtures; //! here it is the maximum allowed number of mixture components. //! Actual number is determined dynamically per pixel double varThreshold; // threshold on the squared Mahalanobis distance to decide if it is well described // by the background model or not. Related to Cthr from the paper. // This does not influence the update of the background. A typical value could be 4 sigma // and that is varThreshold=4*4=16; Corresponds to Tb in the paper. ///////////////////////// // less important parameters - things you might change but be carefull //////////////////////// float backgroundRatio; // corresponds to fTB=1-cf from the paper // TB - threshold when the component becomes significant enough to be included into // the background model. It is the TB=1-cf from the paper. So I use cf=0.1 = TB=0. // For alpha=0.001 it means that the mode should exist for approximately 105 frames before // it is considered foreground // float noiseSigma; float varThresholdGen; //correspondts to Tg - threshold on the squared Mahalan. dist. to decide //when a sample is close to the existing components. If it is not close //to any a new component will be generated. I use 3 sigma = Tg=3*3=9. //Smaller Tg leads to more generated components and higher Tg might make //lead to small number of components but they can grow too large float fVarInit; float fVarMin; float fVarMax; //initial variance for the newly generated components. //It will will influence the speed of adaptation. A good guess should be made. //A simple way is to estimate the typical standard deviation from the images. //I used here 10 as a reasonable value // min and max can be used to further control the variance float fCT; //CT - complexity reduction prior //this is related to the number of samples needed to accept that a component //actually exists. We use CT=0.05 of all the samples. By setting CT=0 you get //the standard StaufferGrimson algorithm (maybe not exact but very similar) //shadow detection parameters bool bShadowDetection; //default 1 - do shadow detection unsigned char nShadowDetection; //do shadow detection - insert this value as the detection result - 127 default value float fTau; // Tau - shadow threshold. The shadow is detected if the pixel is darker //version of the background. Tau is a threshold on how much darker the shadow can be. //Tau= 0.5 means that if pixel is more than 2 times darker then it is not shadow //See: Prati,Mikic,Trivedi,Cucchiarra,Detecting Moving Shadows...,IEEE PAMI,2003. 以下是使用BackgroundSubtractorMOG2检测的前景和背景: 参考文献: KaewTraKulPong, Pakorn, and Richard Bowden. An improved adaptive background mixture model for real-time tracking with shadow detection. Video-Based Surveillance Systems. Springer US, 2002. 135-144. Zivkovic, Zoran. Improved adaptive Gaussian mixture model for background subtraction. Pattern Recognition, 2004. ICPR 2004. Proceedings of the 17th International Conference on. Vol. 2. IEEE, 2004.
个人分类: 机器学习|5057 次阅读|0 个评论
[转载]深度学习与人工智能
jiaqiangzheng 2014-2-19 12:28
使用海量数据来识别照片和语音并实时翻译讲话,深度学习计算机朝着真正的人工迈进了一大步。如果我们能在理论、建模和工程方面,突破深度学习技术面临的一系列难题,人工智能的梦想将不再遥远。 深度学习:而今迈步从头越 ——计算机逐步朝人工智能靠近 科技日报2014-02-16(2),记者 刘 霞 综合外电 使用海量数据来识别照片和语音并实时翻译讲话,深度学习计算机朝着真正的人工迈进了一大步。英国《自然》杂志网站近日就此进行了报道。 深度学习东山再起 2012年,位于美国加州山景城的神秘莫测的Google X实验室的研究人员用1000台计算机(共有1.6万个处理器)构建出了全球最大的电子模拟神经网络——拥有10亿个连接的人工神经网络“谷歌大脑”,并通过向其展示自YouTube视频中提取出的约1000万张静止的图像,考察其能学到什么。结果显示,在无外界指令的自发条件下,该人工神经网络自主学会了识别人脸、人体甚至猫等类别的事物。 也许这看起来只是琐碎的成就,除了表明猫的主人们热衷于上传宠物视频,导致互联网上猫的视频随处可见之外,说明不了更多问题,因此,这一发现也让记者们讪笑不已。但实际上,该成果是深度学习东山再起的一个里程碑。 这一进步也意味着,谷歌在人工智能领域(AI)又达到了一个新的高度,在业界引发广泛关注。对电脑用户而言,人工智能研究一直前景广阔,但迄今成果寥寥,不过情况慢慢发生了变化。在过去几年内,包括谷歌、苹果和IBM等在内的互联网巨擘们一直在积极争夺在深度学习方面拥有专业技术的初创公司和研究人员。 对每个消费者来说,深度学习计算机的显著进步所带来的好处包括:软件能更好地对照片进行筛查、理解语音指令并将对文本进行翻译。而对科学家和医学界人士而言,深度学习计算机能用来筛查药物,标示出大脑内真实的神经网络并预测蛋白质的功能。 “人工智能研究领域遇到的挫败可谓不可胜数,但也取得了稍许进步,或许,未来的研究会一马平川。”深度学习专家、美国纽约大学数据科学中心的主任杨乐康(音译)表示。 “接下来的几年内,很多人会投入深度学习的洪流当中。”美国加州大学伯克利分校的计算机图像识别专家吉腾德拉·马利克也认同这一观点。 不过,从长远来看,深度学习不一定会大获全胜,研究人员目前正在研究的其他技术也显示出了巨大的潜能。马利克说:“随着时间的推移,人们会知道,什么技术在何种领域表现最好。” 深度学习:让机器学会思考和做决定 在解释深度学习之前,我们需要了解什么是机器学习。机器学习是人工智能的一个分支,而在很多时候,几乎成为人工智能的代名词。简单来说,机器学习就是通过算法,使得机器能从大量历史数据中学习规律,从而对新的样本做智能识别或对未来做预测。机器学习的发展大致经历了两次浪潮:浅层学习和深度学习。 深度学习这一技术已有30年的历史了。深度学习旨在模仿人脑的神经网络,其作用就如人类大脑里掌管知觉、运动指令、意识、语言的“新皮层”,它能自己学习辨识声音、图像和其他数据,从而帮助计算机破解一些人类几乎完全依靠直觉来解决的琐碎问题,从识别人脸到理解语言等。 深度学习本身也源于一个更古老的计算理念:神经网络。这些神经网络系统模拟的是人脑内神经细胞之间的紧密关联。这些神经细胞可以彼此沟通,互相施加影响,当把这样一个神经网络暴露在数据面前,不同神经细胞之间的关系会发生改变。这样,网络就会发展出对某个类别的输入数据作出特定反应的能力。通过这种方式,网络就拥有了学习能力,“学”到了一些东西。 “谷歌大脑”大约有100万个模拟神经细胞,模拟了10亿个连接,比此前的任何深度神经网络都要大10多倍。“谷歌大脑”项目的创办人安德鲁·恩格现在是美国斯坦福大学人工智能实验室的主任,致力于使深度学习系统再扩大10倍。 发展历程缓慢艰辛 在上世纪50年代,计算机还是新兴事物,那时,第一代人工智能研究人员就满怀期望地预测,完全成熟的人工智能很快就会到来。但随着人们慢慢认识到客观世界的极端复杂性,尤其是当人们开始接触到诸如人脸为什么是人脸而非一张面具或猴脸这样的知觉或感性问题时,这种过于乐观的想法才逐渐偃旗息鼓。 标准的机器学习以及图像识别技术依靠数以千计带标签的图片,对电脑进行初始“训练”,使电脑从一开始就对猫脸长什么样有一个概念。但图片加标签需要耗费大量人力,成千上万名研究人员耗费了数十年时间来为与计算机需要识别物体的不同特征有关的规则进行手工编码。“找出这些特征非常困难,耗费时间而且需要专业知识。”恩格说,“你不得不问自己,是否还有更好的办法,可以让人解脱出来。” 在上世纪80年代,这种更好的方式似乎是神经网络内的深度学习。这样的系统可以从头开始学习规则,而且具有令人愉悦的对称性——使用受到大脑启发的机制来完成类似大脑的功能。在这一系统中,模拟的神经细胞被组织成不同的层,当向这样的系统展示一副人脸的图片时,第一层只是注意所有黑像素和亮像素;接下来的一层可能可以意识到这些像素会形成边角;再下一层或许可以识别出横线和竖线;最后一层或许可以认出眼睛,能够意识到两只眼睛实际上出现在同一张脸上。 马利克说,与更简单的系统相比,第一个深度学习软件的表现可谓差强人意,而且使用起来还需要技巧。他说:“一直以来,神经网络都需要精细管理,而且其中充满了各种窍门和技巧。”在学习过程中,这样的系统需要被“喂食”大量的实例,就像婴儿贪婪地从周围世界中汲取大量信息一样。在上世纪80年代到90年代,还没有如现在一样多的数字信息可用,而且,计算机的运行速度也很慢,因此,深度学习软件本身非常罕见,其应用更是屈指可数。其中的一套软件由杨乐康研发,目前被银行用来阅读手写的支票。 然而,到2000年左右,情况发生了巨大的变化,似乎是“一夜之间春风来,千树万树梨花开”。2000年以来互联网的高速发展,对大数据的智能化分析和预测提出了巨大需求。包括杨乐康和加拿大多伦多大学机器学习领域的泰斗杰弗里·希顿在内的科学家确信,计算能力的增加和数字数据的大规模爆发意味着,深度学习复兴的时刻到了。希顿的一名研究生乔治·德哈尔表示:“我们想向全世界证明,这些深度学习神经网络真的有用。” 2006年,希顿和学生在顶尖学术刊物《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要信息:一、很多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;二、深度神经网络在训练上的难度,可以通过“逐层初始化”来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。 最初,希顿、德哈尔和其他人利用深度学习解决了一个非常困难但从经济角度而言非常重要的语音识别任务。2009年,研究人员报告称,他们利用一组经典的数据对一套深度学习软件进行训练——3个小时的录音和语音翻译,这套深度学习软件能够精确地理解语音的内容,并将其转化为文字,精确度创下了纪录。德哈尔表示,这一进步引起了智能手机市场巨头们的极大关注,他在微软实习期间,将这套技术带到了微软。德哈尔说:“几年后,这些巨头们都开始研究深度学习。”例如,苹果手机上的声控数字助手(Siri)就是建立在深度学习的基础上。 今天,谷歌、微软等知名的拥有大数据的高科技公司争相投入资源,占领深度学习的技术制高点,正是因为它们都看到了在大数据时代,更加复杂且更加强大的深度模型能深刻揭示海量数据里所承载的复杂而丰富的信息,并对未来或未知事件作出更精准的预测。 在语音和图像识别领域取得巨大飞跃 当谷歌公司在其安卓智能手机操作系统上采用基于深度学习的语音识别技术后,其单词拼写的错误率下降了25%,这是语音识别领域10多年来最大的突破性进展。“我们耗费10年时间才能做到这一点。”希顿表示,这也反映了要想在这一领域取得突破是多么困难。 与此同时,恩格也说服谷歌,让他使用该公司与“谷歌大脑”有关的数据和计算机。“谷歌大脑”能从互联网视频中识别出猫的图像,这极准确而恰当地展示了无人监督学习的潜力。无人监督学习是最困难的学习任务,因为输入的信息没有附着任何解释性信息,比如姓名、标签或类别等。但恩格很快遇到了麻烦,因为很少有谷歌以外的研究人员拥有如此丰富而有力工具来开展与深度学习有关的研究。“我和很多人谈过话,很多学生沮丧地跑过来告诉我说,我又没有1000台计算机来用,我如何进行这类研究呢?” 因此,恩格回到斯坦福大学,开始利用图形处理单元(GPU,这种运行速度超快的芯片主要为游戏而研发)来研制更大、成本更低的深度学习网络,也有很多人在这么做。恩格说:“使用大约价值10万美元的硬件,我们能利用64个GPU,建造出一个拥有110亿个连接的网络。” 但这样的系统要想赢得机器视觉科学家的青睐,可能还需要“百尺竿头,更进一步”。这些机器视觉科学家希望能在标准化测试方面看到其优异的表现。马利克记得,希顿曾经问过他:“你是一个怀疑论者,什么使你如此确信深度学习系统的潜力呢?”马利克回答说:“深度学习系统在国际闻名的数据池(ImageNet)竞赛中取胜或许让我看到了其巨大的潜能。” 在该比赛中,研究团队需要训练计算机程序识别与100万张图像有关的一套数据,这些图像已被人工贴上了各类标签。经过训练后,通过让这些程序从以前未曾见过的图像中找出同样的标签来测试这些程序的性能。每一幅测试图像,程序都会给出5个答案,如果正确的答案并非其中之一,那么,这一测试就被认为是错误的。以前,获胜者们一般的出错率为25%。2012年,希顿的实验室使用深度学习获得了冠军,错误率仅为15%。 杨乐康并非这个团队的一员,不过,他说:“深度学习影响了很多方面。”这次获胜让希顿在谷歌获得了一份兼职工作,该公司2013年也使用该程序来对其谷歌+图像搜索软件进行了升级。 马利克说:“在科学领域,你经常会受到经验证据的摆弄,而这是扎扎实实的证据。”后来,他携这项技术参与另一项视觉识别竞赛,并破了纪录。很多人开始效尤这一做法:2013年,所有参加ImageNet竞赛的团队都开始使用深度学习技术。 随着深度学习技术在图像和语音识别领域不断取得突破,科学家们对用其来处理自然语言的兴趣也与日俱增,包括用其来理解人类的演说以进行转述或回答相关问题,将一种语言翻译成另一种语言等。现在,科学家们使用手写的规则和对已知的文本进行统计分析来做上述事情。深度学习在自然语言方面的最好表现在“谷歌翻译”这样的软件上得到了彰显,尽管谷歌翻译能提供可理解的结果,但是,与人类的翻译比起来,还要差很多。 总的来说,深度学习在自然语言处理方面取得的进展没有在语音图像上那么令人印象深刻。一个很有意思的悖论是:相比于声音和图像,语言是唯一的非自然信号,是完全由人类大脑产生和处理的符号系统,但模仿人脑结构的人工神经网络却似乎在处理自然语言上没有显现明显优势。 语言学习翻译服务网站Duolingo的创办者、卡内基梅隆大学教授路易斯·冯·安表示:“在这一方面,深度学习还有很大的探索空间,从2006年图像深度学习成为学术界热门课题到2012年10月希顿在ImageNet上取得重大突破,经历了6年时间。我们需要有足够的耐心。我们也相信,深度学习在自然语言处理方面的表现会越来越好。” 在其他领域拥有巨大运用潜力 与此同时,科学家们也不断证明,深度学习在完成很多科研任务方面非常管用。希顿说:“深度网络真的很擅长在数据组中发现模式。” 2012年10月份,希顿领导的研究团队赢得了美国化学与制药公司默克公司举办的一场竞赛,竞赛的主旨是鉴别出可导致新药的分子,该团队正是采用深度学习的方法,将目标对准那些最有可能与靶标绑定的分子,从而取得成功赢得了2.2万美元的奖金。希顿说:“我们将默克公司的基准提高了15%。”美国《纽约时报》也对这一重要成果进行了详细报道。 包括美国麻省理工学院的塞巴斯蒂安·程在内的生物学家和计算研究人员目前正利用深度学习技术来帮助他们分析大脑切片的三维图像。这样的图像包含有很多揉成一团的线条,这些线条代表了神经细胞之间的连接,需要将这些线条鉴别出来,以便于对其进行标示和计数。以前,他们的做法是,招募本科生来追踪和勾勒这些线条,但让这一过程自动化是处理数十亿计连接的唯一方式。深度学习似乎是自动化的最好方式。塞巴斯蒂安·程目前正使用深度学习程序来标示视网膜内的神经细胞,接着会将得到的结果提交给志愿者进行校对。 美国华盛顿大学的计算机专家威廉姆·斯塔福-诺贝尔则使用深度学习来教导程序检查一串氨基酸并对得到的蛋白质结构进行预测。例如,不同的氨基酸序列会形成螺旋还是环;某个溶剂是否能很容易地渗入结构内的缝隙中等等。迄今为止,诺贝尔已经训练这一程序能识别小的数据组,在接下来的几个月内,他将使用包含有10万个结构的蛋白质数据库来检验这套深度学习软件的性能。 对计算机专家们而言,深度学习可能会让他们获益颇丰:德哈尔正在考虑创办深度学习公司;而杨乐康上个月被“脸谱”网站雇佣,成为该网站新成立的人工智能部门的负责人。恩格说:“深度学习不再是养在深闺无人时,目前正生逢其时,你填入的数据越多,它的表现也就越好。”不过,他也强调说:“尽管很多时候,深度学习算法都非唯一的解决办法,但它是最好的,当然也是最容易的。这也是为什么其未来拥有巨大潜力的原因。” 其他竞争性的想法 当然,也并非所有科学家都看好深度学习,他们正在尝试使用其他方法来解决问题。比如,美国华盛顿大学计算机科学与工程系教授、艾伦人工智能研究所的负责人奥伦·埃齐奥尼的目标是发明一台计算机——当给其“喂食”一堆经过扫描的教科书后,其能通过标准化的小学科学测试(如果其不断加强,最终能通过大学入学考试)。为了通过这些测试,这台计算机必须能阅读并理解图表和文本。不过,艾伦人工智能研究所如何实现这一目标还是一个未知数。但对埃齐奥尼来说,神经网络和深度学习并非他们的首选。 一个竞争性的想法是,让计算机能在基本输入事实上的基础上进行推理,而非从头开始学习事实。因此,科学家们或许会为这种计算机编写程序,让其识别“所有的女孩都是人”这样的论断。接着,当一篇提到一个女孩的文本被提交给这台计算机时,计算机能推导出这个女孩是人。但这样的计算机也有自己的问题,因为我们周围的世界太纷繁复杂,即使没有数百万个,也有数十万个这样的事实。 目前,在这方面表现最好的就是IBM公司的计算机沃森(Watson)。Watson运算更快,记忆力更好,它也懂一些人类语言中的暗喻和双关。2011年,Watson在美国最受欢迎的智力竞赛节目Jeopardy中战胜人类,获得冠军,从而声名大噪。尽管如此,IBM公司沃森解决方案实验室的科学家们对深度学习在改进模式识别方面的优异表现也产生了兴趣。 谷歌也是如此,尽管其图像标记方面的最新进展主要得益于辛顿的深度学习网络,但其他研发部门也得到了足够多的关注。2012年12月,谷歌雇佣未来学家雷·库兹韦尔做其工程部主管,库兹韦尔的主要任务是使用但不局限于深度学习的技术,来为计算机寻找不同的方式,让其能从日常经验中学习。 去年5月份,谷歌购买了一台由加拿大D-Wave公司研制而成的量子计算机。尽管从理论上而言,这台计算机能用于深度学习领域,但科学家们目前主要用其来处理非人工智能方面的任务,比如困难的数学计算等。 深度学习带来了机器学习的一个新浪潮,受到从学术界到工业界的广泛重视,也导致了“大数据+深度模型”时代的来临。在应用方面,深度学习使得语音图像的智能识别和理解取得惊人进展,从而推动人工智能和人机交互大踏步前进。尽管如此,深度学习仍然还处于襁褓阶段。“它是未来的一部分。”德哈尔说,我们才刚刚开始。如果我们能在理论、建模和工程方面,突破深度学习技术面临的一系列难题,人工智能的梦想将不再遥远。 本篇文章来源于: 中国科技网 www.wokeji.com 原文链接:http://www.wokeji.com/jbsj/eb/201402/t20140216_646254.shtml
个人分类: 揽胜|4342 次阅读|0 个评论
生物学研究人员开始进军媒体行业
热度 3 chuangma2006 2014-2-14 02:59
标题有点哗众取宠。 最近The New York Times 聘请 哥伦比亚大学的生物学研究人员(Chris Wiggins) 作为其“首席数据科学家 (chief data scientist)”. 具体报道见: WHY THE NEW YORK TIMES HIRED A BIOLOGY RESEARCHER AS ITS CHIEF DATA SCIENTIST Chris要做的事情说起来很容易,就是要“预测哪些用户将退订The New York Times ( Unsubscribing? The New York Times Wants to Predict That . )”, 但是做起来可不容易。看看 Chris的个人简历 就明白了,不仅要有很强的统计学背景,还需要很深厚的机器学习(machine learning,ML)的功底。 统计学已经是一门妇孺皆知的学科,机器学习对一部分研究人员来说可能会有些陌生。 ML是人工智能这个领域的一个分支,在多个领域已经有了广泛地应用。掌握这门技术,您将会像Chris一样开启一条新的职业发展道路。这里还有更多让人振奋的消息: Google this year spent $400 million to acquire a single machine-learning startup (see Is Google Conrnering the Market on Deep Learning ? Amazon is currently advertising positions for 40 machine-learning scientistis-in addtion to scores it already employs. 除此之外,诸多国际知名公司(像Microsoft, IBM)都对ML很是重视, see Microsoft research- machine learning department . 在如今的大数据时代,ML更是变得不可或缺。 当然,如果您不想像进军其他行业,在生物学领域也可以大有作为。 ML已经成为生物信息学和系统生物学研究的一门核心技术,基于ML已经开展了诸多理论和应用方面的研究。大家熟知的Human ENCODE project, ML已在其中大展身手( Machine learning approaches to genomics: ENCODE has applied machine learning approaches to enable integration and exploration of large and diverse data )。用machine learning关键词搜索Pubmed,您将获得5000多篇ML相关的研究文章。如果感兴趣,先看看其中的review吧。 最后,夹点私货,我们最近用ML技术开展了拟南芥胁迫应答基因的挖掘研究。对6种非生物胁迫的分析结果表明,ML较传统的差异表达分析方法能够更准确地预测出胁迫应答基因, 还可以预测出一批表达水平变化不大的胁迫应答候选基因。有兴趣的可以进一步挖掘一下这些预测结果。具体内容见: Machine Learning–Based Differential Network Analysis: A Study of Stress-Responsive Transcriptomes in Arabidopsis
个人分类: NGS|5634 次阅读|5 个评论
[转载]机器学习数据挖掘等经典书籍小结
chuangma2006 2014-1-28 03:02
机器学习经典书籍小结 博客第一篇文章 是转载的,也算是开始写博客不经意的表露了自己对机器学习的兴趣吧!那篇文章总结了机器学习的一些经典算法的论文与数学基础理论的一些书籍,对于开始学习机器学习的话恐怕太过深入,正好最近在买书,看了很多经典书籍的总结与评论,我再拾人牙慧,稍稍总结一下吧。 先说一下我看过的和正在看的一些书吧! 《数学之美》;作者吴军大家都很熟悉。这本书主要的作用是引起了我对机器学习和自然语言处理的兴趣。里面以极为通俗的语言讲述了数学在这两个领域的应用。 《Programming Collective Intelligence》(中译本《集体智慧编程》);作者Toby Segaran也是《Beautiful Data : The Stories Behind Elegant Data Solutions》(《数据之美:解密优雅数据解决方案背后的故事》)的作者。这本书最大的优势就是里面没有理论推导和复杂的数学公式,是很不错的入门书。目前中文版已经脱销,对于有志于这个领域的人来说,英文的pdf是个不错的选择,因为后面有很多经典书的翻译都较差,只能看英文版,不如从这个入手。还有,这本书适合于快速看完,因为据评论,看完一些经典的带有数学推导的书后会发现这本书什么都没讲,只是举了很多例子而已。 《Algorithms of the Intelligent Web》(中译本《智能web算法》);作者Haralambos Marmanis、Dmitry Babenko。这本书中的公式比《集体智慧编程》要略多一点,里面的例子多是互联网上的应用,看名字就知道。不足的地方在于里面的配套代码是BeanShell而不是python或其他。总起来说,这本书还是适合初学者,与上一本一样需要快速读完,如果读完上一本的话,这一本可以不必细看代码,了解算法主要思想就行了。 《统计学习方法》;作者李航,是国内机器学习领域的几个大家之一,曾在MSRA任高级研究员,现在华为诺亚方舟实验室。书中写了十个算法,每个算法的介绍都很干脆,直接上公式,是彻头彻尾的“干货书”。每章末尾的参考文献也方便了想深入理解算法的童鞋直接查到经典论文;本书可以与上面两本书互为辅助阅读。 《Machine Learning》(《机器学习》);作者TomMitchell 是CMU的大师,有机器学习和半监督学习的网络课程视频。这本书是领域内翻译的较好的书籍,讲述的算法也比《统计学习方法》的范围要大很多。据评论这本书主要在于启发,讲述公式为什么成立而不是推导;不足的地方在于出版年限较早,时效性不如PRML。但有些基础的经典还是不会过时的,所以这本书现在几乎是机器学习的必读书目。 《Mining of Massive Datasets》(《大数据》);作者 Anand Rajaraman 、Jeffrey David Ullman,Anand是Stanford的PhD。这本书介绍了很多算法,也介绍了这些算法在数据规模比较大的时候的变形。但是限于篇幅,每种算法都没有展开讲的感觉,如果想深入了解需要查其他的资料,不过这样的话对算法进行了解也足够了。还有一点不足的地方就是本书原文和翻译都有许多错误,勘误表比较长,读者要用心了。 《Data Mining: Practical Machine Learning Tools and Techniques》(《数据挖掘:实用机器学习技术》);作者Ian H. Witten 、Eibe Frank是weka的作者、新西兰怀卡托大学教授。他们的《ManagingGigabytes》 也是信息检索方面的经典书籍。这本书最大的特点是对weka的使用进行了介绍,但是其理论部分太单薄,作为入门书籍还可,但是,经典的入门书籍如《集体智慧编程》、《智能web算法》已经很经典,学习的话不宜读太多的入门书籍,建议只看一些上述两本书没讲到的算法。 《机器学习及其应用2011》,周志华、杨强主编。来源于“机器学习及其应用研讨会”的文集。该研讨会由复旦大学智能信息处理实验室发起,目前已举办了十届,国内的大牛如李航、项亮、王海峰、刘铁岩、余凯等都曾在该会议上做过讲座。这本书讲了很多机器学习前沿的具体的应用,需要有基础的才能看懂。如果想了解机器学习研究趋势的可以浏览一下这本书。关注领域内的学术会议是发现研究趋势的方法嘛。 上面大多都是一些入门级的书籍,想要在这个领域深入下去,还需要深入的阅读一些经典书籍。看了很多推荐大牛推荐的书单,这里总结一下吧。 《Pattern Classification》(《模式分类》第二版);作者 Richard O. Duda 、Peter E. Hart、David。模式识别的奠基之作,但对最近呈主导地位的较好的方法SVM、Boosting方法没有介绍,被评“挂一漏万之嫌”。 《Pattern Recognition And Machine Learning》;作者Christopher M. Bishop ;简称PRML,侧重于概率模型,是贝叶斯方法的扛鼎之作,据评“具有强烈的工程气息,可以配合stanford 大学 Andrew Ng 教授的 Machine Learning 视频教程一起来学,效果翻倍。” 《The Elements of Statistical Learning : Data Mining, Inference, andPrediction》,(《统计学习基础:数据挖掘、推理与预测》第二版);作者RobertTibshirani、Trevor Hastie、Jerome Friedman。“这本书的作者是Boosting方法最活跃的几个研究人员,发明的Gradient Boosting提出了理解Boosting方法的新角度,极大扩展了Boosting方法的应用范围。这本书对当前最为流行的方法有比较全面深入的介绍,对工程人员参考价值也许要更大一点。另一方面,它不仅总结了已经成熟了的一些技术,而且对尚在发展中的一些议题也有简明扼要的论述。让读者充分体会到机器学习是一个仍然非常活跃的研究领域,应该会让学术研究人员也有常读常新的感受。” 《Data Mining:Concepts andTechniques》,(《数据挖掘:概念与技术》第三版);作者(美)Jiawei Han 、(加)Micheline Kamber、(加)Jian Pei,其中第一作者是华裔。本书毫无疑问是数据挖掘方面的的经典之作,不过翻译版总是被喷,没办法,大部分翻译过来的书籍都被喷,想要不吃别人嚼过的东西,就好好学习英文吧。 一些引申链接: http://blog.csdn.net/pongba/article/details/2915005 http://blog.csdn.net/caikehe/article/details/8496721 http://blog.chinaunix.net/uid-10314004-id-3594337.html http://weibo.com/1657470871/zpZ87mhND?sudaref=www.zhizhihu.com http://www.zhizhihu.com/html/y2012/4019.html http://zinkov.com/posts/2012-10-04-ml-book-reviews/ 几乎所有引申链接中都提到了上面我所提到的经典书籍。另外还有一些其他方面比如信息检索、人工智能还有数学基础方面的书籍。 有人推荐,学习机器学习的话可以先读《统计学习方法》和《统计学习基础》打底,这样就包含了大部分的算法,然后再深入研究某个算法。我觉得,我在上面列出的四本经典书籍都应该通读一遍。孔子云“学而不思则罔,思而不学则殆”,我认为,学习、思考、实践不可缺一,学习的同时要加强算法代码的实现和其他方面比如并行化、使用场景等的思考。 http://blog.csdn.net/xinzhangyanxiang/article/details/7799997 http://www.cs.cmu.edu/~tom/ http://en.wikipedia.org/wiki/Anand_Rajaraman http://book.douban.com/subject/1511568/ http://en.wikipedia.org/wiki/Richard_O._Duda http://en.wikipedia.org/wiki/Christopher_Bishop http://book.douban.com/subject/3578359/ http://en.wikipedia.org/wiki/Jiawei_Han ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 人工智能、机器学习、模式识别、计算机视觉、数据挖掘、信息检索、自然语言处理等作为计算机科学重要的研究分支,不论是学术界还是工业界,有关这方面的研究都在如火如荼地进行着,学习这些方面的内容有一些经典书籍,现总结如下,方便自己和大家以后学习研究: 人工智能: 《Artificial Intelligence: A Modern Approach》,第三版,Russell著,权威、经典的人工智能教材,阐述了人工智能的核心内容,反映了人工智能最近10年来的新进展。 《ProgrammingCollective Intelligence》,Toby Segaran著,本书将带你进入机器学习和统计学的世界,对算法的描述简明清晰,很对代码都可以直接拿去实际应用。 数据挖掘: 《DataMining, Concepts and Techniques》 ,第三版, Han 著,数据挖掘领域最具里程碑意义的经典著作。 《DataMining: Practical Machine Learning Tools and Techniques》,第二版,Witten著,介绍了机器学习的基本理论和实践方法,并提供了一个公开的数据挖掘工作平台Weka,算法部分介绍得很详细。 信息检索: 《An Introductionto Information Retrieval》,Manning著,这是一本介绍信息检索的入门书籍,书中对信息检索的基本概念和基本算法做了介绍,适合初学者。 《Search Engines Information Retrieval in Practice》,Croft著,这本书讲述了搜索引擎的构造方法,通过实际代码展示了搜索引擎的工作原理,对于学生和从事相关领域的工程师,本书都值得一看。 《Managing Gigabytes》 ,《 Mining the Web -Discovering Knowledge from Hypertext Data》 《Information Theory:Inference and Learning Algorithms》 。 模式识别和机器学习: 《Pattern Classification 》,第二版,Duda著,模式识别的奠基之作,但对SVM、Boosting几乎没提,有挂一漏万之嫌。 《Pattern Recognition and Machine Learning》,Bishop著,侧重概率模型,详细介绍了Bayesian方法、有向图、无向图理论等,体系完备。 《Kernel Methods for Pattern Analysis》,John Shawe-Taylor著,SVM等统计学的诸多工具里都用到了核方法,可以将将低维非线性空间映射到高维的线性空间中,但同时会引入高维数据的难题。 计算机视觉: 《Computer Vision: A Modern Approach》,第二版,Forsyth著,一本不错的计算机视觉教材,全书理论联系实际,并加入了计算机视觉领域的最新研究成果。 《Computer Vision: Algorithms and Applications》,Richard Szeliski的大作,《数字图像处理》课程老师推荐的一本书籍,这本书我还没有看完,书中对计算机视觉领域最新的一些算法进行了汇编,包括图像分割,特征检测和匹配,运动检测,图像缝合,3D重建,对象识别等图像处理的诸多方面,借助本书我们可以对最新主流图像处理算法有个全局把握。 线性代数: 《Linear Algebra and Its Applications》Fourth Edition, Gilbert Strang的著作,本书详细介绍了向量空间、线性变换、本征值和本征向量等线性代数的重要基本概念,把抽象的线性空间形象地表达出来,适合初学者。 《Introduction to Probability Models》第10版,Ross著,一本书能够发行到第十版,你说是不是很经典呢? 离散数学: 《Discrete Mathematics and Its Applications》,第六版,Rosen著,本书囊括了离散数学推导、组合分析、算法及其应用、计算理论等多方面的内容,适合初学者。 矩阵数学: 《Matrix Analysis》,Horn著,本书无疑是矩阵论领域的经典著作了,风行几十年了。 概率论与数理统计: 《All Of Statistics》,Wasserman著,一本数理统计的简介读本。 《Introductionto Mathematical Statistics》,第六版,Hogg著,本书介绍了概率统计的基本概念以及各种分布,以及ML,Bayesian方法等内容。 《Statistical Learning Theory》Vapnik的大作,统计学界的权威,本书将理论上升到了哲学层面,他的另一本书《The Nature ofStatistical Learning Theory》也是统计学习研究不可多得的好书,但是这两本书都比较深入,适合有一定基础的读者。 《统计学习方法》,李航著,国内很多大学都在用这本书,本书从具体问题入手,由浅入深,简明地介绍了统计学习的主要方法,适合初学者而又想对统计学习理论有一个全局理解的学生。 《The Elements of Statistical Learning-Data Mining, Inference, and Prediction》,第二版,Trevor Hastie著,机器学习方面非常优秀的一本书,较PC和PRML,此书更加深入,对工程人员的价值也许更大一点。 《AnIntroduction to Probabilistic Graphical Models》,Jordan著,本书介绍了条件独立、分解、混合、条件混合等图模型中的基本概念,对隐变量(潜在变量)也做了详细介绍,相信大家在隐马尔科夫链和用Gaussian混合模型来实现EM算法时遇到过这个概念。 《Probabilistic Graphical Models-Principles and Techniques》,Koller著,一本很厚很全面的书,理论性很强,可以作为参考书使用。 最优化方法: 《Convex Optimization》,Boyd的经典书籍,被引用次数超过14000次,面向实际应用,并且有配套代码,是一本不可多得的好书,网址http://www.stanford.edu/~boyd/cvxbook/。 《Numerical Optimization》,第二版,Nocedal著,非常适合非数值专业的学生和工程师参考,算法流程清晰详细,原理清楚。 另外推荐几个博客和网站: https://www.coursera.org/ ,这是一个由世界顶级大学联合创办的网上在线视频公开课网站,里面有 stanford, MIT,CMU 等计算机科学一流大学提供的免费教学视频,内容全面,计算机科学方面的资源较网易视频公开课网站( http://open.163.com/ )内容要新、要全。 http://blog.csdn.net/pongba/article/details/2915005 ,本文的部分内容就是借鉴刘未鹏大神的博客而来的,也正是看过他的那个书单后,我才决定写一个总结归纳性的文章,这样可以方便大家学习,更可以勉励自己多看些有益的经典书籍。 http://blog.pluskid.org/ ,这是浙大学生张驰原的博客网站,现在他去了 MIT ,博客里面的很多资源都值得一看,博文的很大一部分都是关于机器学习的,加入了作者自己的理解,深入浅出。 http://blog.csdn.net/ffeng271/article/details/7164498 ,林达华推荐的基本数学书,转自 MIT 大牛博客。 转自: http://blog.csdn.net/lch614730/article/details/17230759
个人分类: Research|9686 次阅读|0 个评论
第三讲 Types of Learning
hustliaohh 2014-1-10 17:16
这一讲,林老师从4个不同的角度对机器学习算法做分类。 1、Learning with Different Output Space $\mathcal{Y}$ binary classification: $y = \{+1, -1\}$; multiclass classification: $y = \{1, 2,\cdots ,K \}$; regression: $y = \mathcal{R}$; structured learning: $y = $ structures; ......and a lot more!! 2、Learning with Different Data Label $y_n$ supervised: known all labels $y_n$; unsupervised: unknown labels; semi-supervised: some labels known; reinforcement: implicit yn by goodness ($\tilde{y_n}$); ......and more!! 3、Learning with Different Protocol $f \Rightarrow (x_n; y_n)$ Protocol $\Leftrightarrow$ Learning Philosophy batch: duck feeding (learn everything at the same time); online: passive sequential (每次学习一个样本); active: question asking (sequentially) —query the $y_n$ of the chosen $x_n$. Active : improve hypothesis with fewer labels (hopefully) by asking questions strategically . 除此之外,还有min-batch,即介于batch和online之间,每次选取一小部分数据进行学习。 4、Learning with Different Input Space $\mathcal{X}$ concrete: sophisticated (and related) physical meaning; raw: simple physical meaning; abstract: no (or little) physical meaning; ......and more!! concrete features: each dimension of $X\in  R^d$ represents sophisticated physical meaning. concrete features 是指能够反映当前机器学习任务间最本质区别或联系的特征。
个人分类: 科研道路|2796 次阅读|0 个评论
听倪明选和余凯教授报告有感
skybirdhua 2013-12-27 16:46
感谢陈院长请来两位大牛,听过报告后,思维、视野和观念上都慢慢的,收获颇丰。 倪教授从斯诺登事件讲起,引出了NSA基于大数据做的事情。现在已然正激烈上演大数据之战,凡具备雄厚的财力、计算能力和数据能力的公司和组织都要为此战役贡献一幕。倪教授从idea/data/technology分析了大数据方向可以有作为的三个领地。(未完,待续,收获太多,需要好好整理。)
个人分类: 学习交流|1 次阅读|0 个评论
[转载]机器学习新方向 Submodularity machine learning
hestendelin 2013-11-14 09:12
原址: http://submodularity.org/ Overview This page collects some material and references related to submodular optimization, with applications in particular in machine learning and AI. Convex optimization has become a main workhorse for many machine learning algorithms during the past ten years. When minimizing a convex loss function for, e.g., training a Support Vector Machine, we can rest assured to efficiently find an optimal solution, even for large problems. In recent years, another fundamental problem structure, which has similar beneficial properties, has emerged as very useful in a variety of machine learning applications: Submodularity is an intuitive diminishing returns property, stating that adding an element to a smaller set helps more than adding it to a larger set. Similarly to convexity, submodularity allows one to efficiently find provably (near-)optimal solutions. Tutorials Tutorial on Submodularity in Machine Learning -- New Directions at ICML 2013 by Stefanie Jegelka and Andreas Krause . Tutorials on Submodularity in Machine Learning and Computer Vision at DAGM 2012 and ECAI 2012 by Stefanie Jegelka and Andreas Krause . Invited tutorial Intellgent Optimization with Submodular Functions at LION 2012 by Andreas Krause. Slides: Intelligent Information Gathering and Submodular Function Optimization at IJCAI 2009 by Andreas Krause and Carlos Guestrin. Slides: Beyond Convexity: Submodularity in Machine Learning at ICML 2008 by Andreas Krause and Carlos Guestrin. Video (recorded Oct 17 2008 at Carnegie Mellon University) Part I: Minimizing submodular functions Part II: Maximizing submodular functions Extended tutorial slides, updated July 6 2008 Software, Materials and References High-performance implementation of the minimum norm point algorithm for submodular function minimization with several applications MATLAB Toolbox for submodular function optimization maintained by Andreas Krause. Journal of Machine Learning Research Open Source Software paper Survey on Submodular Function Maximization by Daniel Golovin and Andreas Krause. To appear as chapter in Tractability: Practical Approaches to Hard Problems (This draft is for personal use only. No further distribution without permission). Class on Submodular Functions by Jeff Bilmes Annotated bibliography . Related Meetings and Workshops Cargese Workshop on Combinatorial Optimization, Topic: Submodular Functions organized by Samuel Fiorini, Gianpaolo Oriolo, Gautier Stauffer and Paolo Ventura. NIPS 2012 Workshop on Discrete Optimization in Machine Learning: Structure and Scalability organized by Stefanie Jegelka, Andreas Krause, Pradeep Ravikumar, Jeff Bilmes. Modern Aspects of Submodularity workshop at GeorgiaTech organized by Shabbir Ahmed, Nina Balcan, Satoru Iwata and Prasad Tetali NIPS 2011 Workshop on Discrete Optimization in Machine Learning: Uncertainty, Generalization and Feedback organized by Andreas Krause, Pradeep Ravikumar, Jeff Bilmes and Stefanie Jegelka. NIPS 2010 Workshop on Discrete Optimization in Machine Learning: Structures, Algorithms and Applications organized by Andreas Krause, Pradeep Ravikumar, Jeff Bilmes and Stefanie Jegelka. NIPS 2009 Workshop on Discrete Optimization in Machine Learning: Submodularity, Sparsity and Polyhedra organized by Andreas Krause, Pradeep Ravikumar and Jeff Bilmes This page is maintained by Andreas Krause and Carlos Guestrin . Please send suggested additions or corrections by email.
个人分类: 转载|5152 次阅读|0 个评论
核方法笔记
murongxixi 2013-11-12 23:10
在许许多多的分类模型中,线性模型$f(\boldsymbol{x}) = \boldsymbol{w}^\top \boldsymbol{x}$是最为简单高效的一种,它最后可以得到一个线性分界面,如下图左图所示,但是在数据集 \begin{align*} S = \{ \boldsymbol{x}_1, \dots, \boldsymbol{x}_m \}, \ \ \ \boldsymbol{x}_i \in \mathcal{X} \end{align*}非线性可分时,线性模型的分类精度不高。为了得到非线性分界面,提高分类精度,下图右图所示,一个直观的想法就是构造一个映射$\phi: \mathcal{X} \mapsto \mathcal{H}$,其中$\mathcal{H}$为Hilbert空间,将原始特征空间的样本映射到一个新的特征空间,之后在新的特征空间用线性模型$f(\boldsymbol{x}) = \boldsymbol{w}^\top \phi(\boldsymbol{x})$进行分类。注意,新的特征空间$\mathcal{H}$的维度一般都比原始特征空间维度高很多,有时甚至是无穷,因此再假定它为Euclidean空间已经不合理了,因为这时计算内积$\boldsymbol{w}^\top \phi(\boldsymbol{x})$可能会出现无穷大的情况(也即此时有限维Euclidean空间下定义的内积运算无法推广到无限维)。那么一个自然的选择就是Euclidean空间的无限维推广:Hilbert 空间。 虽然通过非线性映射可以得到非线性分界面,但是当$\mathcal{H}$的维度过高时,又引入了一个新问题,就是计算开销太大,一个避免此问题的方法是使用核函数(kernel functions)。下面看一个简单的例子,设原始特征空间为$\mathbb{R}^2$,映射$\phi: \mathbb{R}^2 \mapsto \mathbb{R}^6$(任意有限维的Euclidean空间都是Hilbert空间)定义为: \begin{align*} \phi(\boldsymbol{x}) = \phi(x_1, x_2) = ^\top \end{align*}于是对于任意样本$\boldsymbol{x} = ^\top$,$\boldsymbol{x}' = ^\top$有 \begin{align*} \langle \phi(\boldsymbol{x}), \phi(\boldsymbol{x}') \rangle = ^\top \\ = x_1^2 {x'_1}^2 + x_2^2 {x'_2}^2 + c^2 + 2 x_1 x_2 x'_1 x'_2 + 2c x_1 x'_1 + 2c x_2 x'_2 \\ = (x_1 x'_1 + x_2 x'_2 + c)^2 \\ = (\boldsymbol{x}^\top \boldsymbol{x}' + c)^2 \end{align*}从这个例子可以看出,在新特征空间中计算内积并不需要显式地给出$\phi(\boldsymbol{x})$,有原始特征空间的内积就够了,至此,核函数的定义也就呼之欲出了。 定义1 :对于函数$k: \mathcal{X} \times \mathcal{X} \mapsto \mathbb{R} $,若存在Hilbert空间$\mathcal{H}$和映射$\phi: \mathcal{X} \mapsto \mathcal{H}$满足 \begin{align*} k(\boldsymbol{x}, \boldsymbol{x}') = \langle \phi(\boldsymbol{x}), \phi(\boldsymbol{x}') \rangle_{\mathcal{H}}, \ \ \ \forall \boldsymbol{x}, \boldsymbol{x}' \in \mathcal{X} \end{align*} 则称$k$为核函数,对应的映射$\phi$为核映射,$\mathcal{H}$为$k$的一个特征空间。 由内积的对称性知核函数必然是对称的,此外,核函数还有一个重要的性质:正定性。即对于任意样本集合$S = \{ \boldsymbol{x}_1, \dots, \boldsymbol{x}_m \}$,定义一个叫核矩阵(kernel matrix)的矩阵$\boldsymbol{K}$,它的第$i$行第$j$列元素为$k(\boldsymbol{x}_i, \boldsymbol{x}_j)$,则由 \begin{align*} \boldsymbol{\alpha}^\top \boldsymbol{K} \boldsymbol{\alpha} = \sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j k(\boldsymbol{x}_i, \boldsymbol{x}_j) = \left\langle \sum_{i=1}^m \alpha_i \phi(\boldsymbol{x}_i), \sum_{j=1}^m \alpha_j \phi(\boldsymbol{x}_j) \right\rangle_{\mathcal{H}} \geq 0 \end{align*}知$\boldsymbol{K}$是半正定矩阵。这也是核方法的一个优点,它诱导出的优化问题基本都是有良好性质的凸优化问题,例如核支持向量机。此外,由$k$是正定核函数知核矩阵$\boldsymbol{K}$是半正定矩阵,于是$\boldsymbol{K}$对应的行列式的值非负,展开行列式即可得如下的Cauchy-Schwarz不等式 \begin{align*} k(\boldsymbol{x}, \boldsymbol{x}')^2 \leq k(\boldsymbol{x}, \boldsymbol{x}) k(\boldsymbol{x}', \boldsymbol{x}'), \ \ \ \forall \boldsymbol{x} ,\boldsymbol{x}' \in \mathcal{X} \end{align*}该式也可等价地写作 \begin{align*} |\langle \phi(\boldsymbol{x}), \phi(\boldsymbol{x}') \rangle| \leq ||\phi(\boldsymbol{x})||_{\mathcal{H}} ||\phi(\boldsymbol{x}')||_{\mathcal{H}}, \ \ \ \forall \boldsymbol{x} ,\boldsymbol{x}' \in \mathcal{X} \end{align*} 下面再来看一个和核函数息息相关的概念:再生核Hilbert空间(reproducing kernel Hilbert space, RKHS),在此先给出相关定义。 定义2:设$\mathcal{H}$是由函数$f: \mathcal{X} \mapsto \mathbb{R}$构成的Hilbert空间,若函数$k: \mathcal{X} \times \mathcal{X} \mapsto \mathbb{R}$满足对于任意$\boldsymbol{x} \in \mathcal{X}$有$k(\cdot, \boldsymbol{x}) \in \mathcal{H}$,且对于任意$f \in \mathcal{H}$有如下再生性质 \begin{align*} f(\boldsymbol{x}) = \langle f, k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}} \end{align*} 成立,则称$k$为$\mathcal{H}$的再生核。进一步,若Dirac泛函 \begin{align*} \delta_{\boldsymbol{x}}(f) = f(\boldsymbol{x}), \ \ \ \forall f \in \mathcal{H}, \boldsymbol{x} \in \mathcal{X} \end{align*} 连续,则称$\mathcal{H}$为$\mathcal{X}$上的RKHS。 关于这个定义,有两点要说明一下。一是给定$\boldsymbol{x}' \in \mathcal{X}$,设$f = k(\cdot, \boldsymbol{x}')$,于是对于任意$\boldsymbol{x} \in \mathcal{X}$,由再生性质有 \begin{align*} k(\boldsymbol{x}, \boldsymbol{x}') = f(\boldsymbol{x}) = \langle f, k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}} = \langle k(\cdot, \boldsymbol{x}'), k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}} \end{align*}于是定义函数$\phi(\boldsymbol{x}) = k(\cdot, \boldsymbol{x})$可知$k$是核函数,这就说明了再生核也是一种核函数。二是RKHS上依范数收敛蕴含逐点收敛,注意若函数序列$\{f_n\}$收敛于$f$,则对于任意$\boldsymbol{x} \in \mathcal{X}$由Dirac泛函连续有 \begin{align*} \lim_{n \rightarrow \infty} f_n(\boldsymbol{x}) = \lim_{n \rightarrow \infty} \delta_{\boldsymbol{x}}(f_n) = \delta_{\boldsymbol{x}}(f) = f(\boldsymbol{x}) \end{align*} 引理 :设$\mathcal{H}$是由函数$f: \mathcal{X} \mapsto \mathbb{R}$构成的Hilbert空间且有再生核$k$,则$\mathcal{H}$是RKHS,此外$\mathcal{H}$也是$k$的一个特征空间,此时对应的核映射为 \begin{align*} \phi(\boldsymbol{x}) = k(\cdot, \boldsymbol{x}), \ \ \ \forall \boldsymbol{x} \in \mathcal{X} \end{align*} 证明 :对于任意$f, g \in \mathcal{H}$,由Dirac泛函的定义及Cauchy-Schwarz不等式有 \begin{align*} |\delta_{\boldsymbol{x}}(f - g)| = |f(\boldsymbol{x}) - g(\boldsymbol{x})| = |\langle f - g, k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}}| \leq ||f - g||_{\mathcal{H}} ||k(\cdot, \boldsymbol{x})||_\mathcal{H}, \ \ \ \forall f \in \mathcal{H}, \boldsymbol{x} \in \mathcal{X} \end{align*}这就证明了Dirac泛函的连续性,于是$\mathcal{H}$是RKHS。 对于任一给定$\boldsymbol{x}' \in \mathcal{X}$,设$f = k(\cdot, \boldsymbol{x}')$,于是对于任意$\boldsymbol{x} \in \mathcal{X}$,由再生性质有 \begin{align*} k(\boldsymbol{x}, \boldsymbol{x}') = f(\boldsymbol{x}) = \langle f, k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}} = \langle k(\cdot, \boldsymbol{x}'), k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}} = \langle \phi(\boldsymbol{x}'), \phi(\boldsymbol{x}) \rangle_{\mathcal{H}} \end{align*} 于是取核映射为$\phi(\boldsymbol{x}) = k(\cdot, \boldsymbol{x})$即可。 注意给定一个核函数$k$,对应的核映射$\phi$并不是唯一的,例如设$k(\boldsymbol{x}, \boldsymbol{x}') = \boldsymbol{x}^\top \boldsymbol{x}'$,那么既可以取核映射$\phi(\boldsymbol{x}) = \boldsymbol{x}$,也可以取核映射$\phi(\boldsymbol{x}) = ^\top$。由于$\phi$不唯一,所以对应的特征空间$\mathcal{H}$也不是唯一的,但是在所有的特征空间里,以$k$为再生核的特征空间却是唯一的,这就是RKHS。 定理1 :对于任意核函数$k: \mathcal{X} \times \mathcal{X} \mapsto \mathbb{R}$,由定义必存在一个Hilbert空间$\mathcal{H}_0$和映射$\phi_0: \mathcal{X} \mapsto \mathcal{H}$满足 \begin{align*} k(\boldsymbol{x}, \boldsymbol{x}') = \langle \phi_0(\boldsymbol{x}), \phi_0(\boldsymbol{x}') \rangle_{\mathcal{H}_0}, \ \ \ \forall \boldsymbol{x}, \boldsymbol{x}' \in \mathcal{X} \end{align*} 设 \begin{align} \mathcal{H} = \left\{ f: \mathcal{X} \mapsto \mathbb{R} \ | \ \exists \boldsymbol{w} \in \mathcal{H}_0, f(\boldsymbol{x}) = \langle \boldsymbol{w}, \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}_0}, \forall \boldsymbol{x} \in \mathcal{X} \right\} \end{align} 并定义范数 \begin{align*} ||f||_{\mathcal{H}} = \inf \{ ||\boldsymbol{w}||_{\mathcal{H}_0} \ | \ \boldsymbol{w} \in \mathcal{H}_0, \ f = \langle \boldsymbol{w}, \phi_0(\cdot) \rangle_{\mathcal{H}_0} \} \end{align*} 那么$\mathcal{H}$是关于$k$的唯一的RKHS。 证明 :由$\mathcal{H}$的定义不难验证$\mathcal{H}$是个线性空间。定义线性算子$V: \mathcal{H}_0 \mapsto \mathcal{H}$如下: \begin{align*} V \boldsymbol{w} = \langle \boldsymbol{w}, \phi_0(\cdot) \rangle_{\mathcal{H}_0} \end{align*} 由$\mathcal{H}$的定义可以看出$V$是一个满射算子,且对于任意$f \in \mathcal{H}$有 \begin{align*} ||f||_{\mathcal{H}} = \inf_{\boldsymbol{w} \in V^{-1}(f)} ||\boldsymbol{w}||_{\mathcal{H}_0} \end{align*} 设序列$\{\boldsymbol{w}_n\} \in \mbox{ker} V$收敛于$\boldsymbol{w}$,那么对于任意$\boldsymbol{x} \in \mathcal{X}$有$\langle \boldsymbol{w}, \phi(\boldsymbol{x}) \rangle = \lim_{n \rightarrow \infty} \langle \boldsymbol{w}_n, \phi(\boldsymbol{x}) \rangle = 0$,这意味着$\boldsymbol{w} \in \mbox{ker} V$,故$\mbox{ker} V$是$\mathcal{H}_0$的一个闭子空间,即它也是一个Hilbert空间。 将$\mathcal{H}_0$进行正交分解$\mathcal{H}_0 = \mbox{ker} V + \mathcal{\hat{H}}$,考虑算子$V_{\mathcal{\hat{H}}}: \mathcal{\hat{H}} \mapsto \mathcal{H}$如下: \begin{align*} V_{\mathcal{\hat{H}}} \boldsymbol{w} = \langle \boldsymbol{w}, \phi_0(\cdot) \rangle_{\mathcal{\hat{H}}} \end{align*} 由内积的线性性知$V_{\mathcal{\hat{H}}}$是一个单射。对于任意$f \in \mathcal{H}$,由$\mathcal{H}$的定义知存在$\boldsymbol{w} \in \mathcal{H}_0$使得$f = V \boldsymbol{w}$,设$\boldsymbol{w}$可正交分解为$\boldsymbol{w} = \boldsymbol{w}_0 + \hat{\boldsymbol{w}}(\boldsymbol{w}_0 \in \mbox{ker} V, \hat{\boldsymbol{w}} \in \mathcal{\hat{H}})$,于是$f = V \boldsymbol{w} = V (\boldsymbol{w}_0 + \hat{\boldsymbol{w}}) = V_{\mathcal{\hat{H}}} \hat{\boldsymbol{w}}$,这说明$V_{\mathcal{\hat{H}}}$ 也是一个满射,从而$V_{\mathcal{\hat{H}}}$是一个双射,记它的逆映射为$V_{\mathcal{\hat{H}}}^{-1}$,显然这也是一个双射。于是 \begin{align*} ||f||_{\mathcal{H}}^2 = \inf_{\boldsymbol{w}_0 + \hat{\boldsymbol{w}} \in V^{-1}(f)} ||\boldsymbol{w}_0 + \hat{\boldsymbol{w}}||_{\mathcal{H}_0}^2 = \inf_{\hat{\boldsymbol{w}} \in V_{\mathcal{\hat{H}}}^{-1}(f)} ||\boldsymbol{w}_0||_{\mathcal{H}_0}^2 + ||\hat{\boldsymbol{w}}||_{\mathcal{H}_0}^2 = \inf_{\hat{\boldsymbol{w}} \in V_{\mathcal{\hat{H}}}^{-1}(f)} ||\hat{\boldsymbol{w}}||_{\mathcal{H}_0}^2 = ||V_{\mathcal{\hat{H}}}^{-1}(f)||_{\mathcal{\hat{H}}}^2 \end{align*} 故$\mathcal{H}$是$\mathcal{\hat{H}}$的一个等距同构,由$\mathcal{\hat{H}}$是Hilbert空间可知$\mathcal{H}$也是一个Hilbert空间。 下面说明$k$是$\mathcal{H}$的再生核,显然对于任意$\boldsymbol{x} \in \mathcal{X}$有$k(\cdot, \boldsymbol{x}) = \langle \phi_0(\boldsymbol{x}), \phi_0(\cdot) \rangle_{\mathcal{H}_0} = V \phi_0(\boldsymbol{x}) \in \mathcal{H}$。对于任意$\boldsymbol{w} \in \mbox{ker} V$有$\langle \boldsymbol{w}, \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}_0} = 0$,这意味着$\phi_0(\boldsymbol{x}) \in (\mbox{ker} V)^\top = \mathcal{\hat{H}}$,由于$V_{\mathcal{\hat{H}}}$是双射,于是 \begin{align*} f(\boldsymbol{x}) = \langle \boldsymbol{w}, \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}_0} = \langle \hat{\boldsymbol{w}}, \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}_0} = \langle V_{\mathcal{\hat{H}}}^{-1}(f), \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}_0} = \langle f, V_{\mathcal{\hat{H}}} \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}} = \langle f, k(\cdot, \boldsymbol{x}) \rangle_{\mathcal{H}} \end{align*} 这就说明了$k$是$\mathcal{H}$的再生核,由引理知$\mathcal{H}$是RKHS。 设$\mathcal{\widetilde{H}}$为任一以$k$为再生核的RKHS,考虑准Hilbert空间 \begin{align*} \mathcal{H}_{pre} = \left\{ \sum_{i=1}^m \alpha_i k(\boldsymbol{x}_i, \cdot), m \in \mathbb{N}, \alpha_i \in \mathbb{R}, \boldsymbol{x}_i \in \mathcal{X} \right\} \end{align*} 显然$\mathcal{H}_{pre}$是$\mathcal{\widetilde{H}}$的子集。若$\mathcal{H}_{pre}$不是$\mathcal{\widetilde{H}}$的一个稠密子集,则$(\mathcal{H}_{pre})^\top \neq \{ 0 \}$,即存在$f \in (\mathcal{H}_{pre})^\top$及$\boldsymbol{x} \in \mathcal{X}$满足$f(\boldsymbol{x}) \neq 0$,于是由再生核的性质可以得到 \begin{align*} 0 = \langle f, k(\boldsymbol{x}, \cdot) \rangle_{\mathcal{\widetilde{H}}} = f(\boldsymbol{x}) \neq 0 \end{align*} 矛盾,故$\mathcal{H}_{pre}$是$\mathcal{\widetilde{H}}$的一个稠密子集。对于任意$f = \sum_{i=1}^m \alpha_i k(\boldsymbol{x}_i, \cdot) \in \mathcal{H}_{pre}$,由再生核的性质可以得到 \begin{align*} ||f||_{\mathcal{\widetilde{H}}}^2 = \left\langle f, \sum_{i=1}^m \alpha_i k(\boldsymbol{x}_i, \cdot) \right\rangle_{\mathcal{\widetilde{H}}} = \sum_{i=1}^m \alpha_i f(\boldsymbol{x}_i) = \sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j k(\boldsymbol{x}_i, \boldsymbol{x}_j) \end{align*} 这个式子说明$\mathcal{H}_{pre}$中元素的范数只和$k$有关。 下面证明以$k$为再生核的RKHS是唯一的,用反证法,设$\mathcal{H}_1$和$\mathcal{H}_2$都是以$k$为再生核的RKHS,那么由上面的论证知$\mathcal{H}_{pre}$在$\mathcal{H}_1$和$\mathcal{H}_2$中都是稠密的且拥有相同的范数。对于任意$f \in \mathcal{H}_1$,存在序列$\{f_n\} \subseteq \mathcal{H}_{pre} $收敛于$f$,由于$\mathcal{H}_{pre} \subseteq \mathcal{H}_2$,因此序列$\{f_n\} \subseteq \mathcal{H}_2$,又$\mathcal{H}_{pre}$中元素的范数只和$k$有关,与$\mathcal{H}_1$和$\mathcal{H}_2$无关,因此序列$\{f_n\}$在$\mathcal{H}_2$中也收敛,设$g \in \mathcal{H}_2$为序列$\{f_n\}$在$\mathcal{H}_2$中的极限,由于RKHS上依范数收敛蕴含逐点收敛,故对任意$\boldsymbol{x} \in \mathcal{X}$ 有$f(\boldsymbol{x}) = g(\boldsymbol{x})$,这意味着$f \in \mathcal{H}_2$,于是$\mathcal{H}_1 \subseteq \mathcal{H}_2$,同理可证$\mathcal{H}_2 \subseteq \mathcal{H}_1$,这说明$\mathcal{H}_1$和$\mathcal{H}_2$中的元素完全相同。又 \begin{align*} ||f||_{\mathcal{H}_1} = \lim_{n \rightarrow \infty} ||f_n||_{\mathcal{H}_1} = \lim_{n \rightarrow \infty} ||f_n||_{\mathcal{H}_{pre}} = \lim_{n \rightarrow \infty} ||f_n||_{\mathcal{H}_2} = ||f||_{\mathcal{H}_2} \end{align*} 这说明同一个元素在$\mathcal{H}_1$和$\mathcal{H}_2$中的范数完全相同,因此$\mathcal{H}_1$和$\mathcal{H}_2$是同一个空间,这就证明了唯一性。 证明有点冗长,用人话简单总结一下就是,对于任意一个核函数$k$,都存在多个对应的特征空间$\mathcal{H}_0$,在这之中,RKHS是最为“精简”的一个,因为无论在$\mathcal{H}_0$中得到怎样的分类模型$\langle \boldsymbol{w}, \phi_0(\boldsymbol{x}) \rangle_{\mathcal{H}_0}$,在RKHS中都存在一个$f$可以得到和它相同的效果,因此对于某个核函数,RKHS代表了它最本征的信息。 实际中,当我们用核方法训练非线性分类模型时,一般都是通过显式地给出核函数来确定一个核映射及其对应的RKHS的,因为设计核函数比设计核映射要容易得多,再生核理论也正是为这种做法提供正确性保证的。那剩下的问题就是如何在RKHS中求得最优的分类模型了。看到这里可能有人会问,RKHS中不都是函数吗,这还怎么做分类呢?这里其实用到了Hilbert空间的一个性质,同维度的Hilbert空间都是同构的,即它们可以保持相同的内积、距离、角度等,因此它里面的元素是函数也好,是向量也罢,并不重要,因为我们最后要的分类模型也只是该空间里的一个内积表达式而已。还有一个问题,做分类时我们一般只会拿到一个样本集合$S = \{ \boldsymbol{x}_1, \dots, \boldsymbol{x}_m \}$,而不是整个样本空间$\mathcal{X}$,因此我们只能得到准Hilbert空间 \begin{align*} \mathcal{H}_{pre} = \left\{ \sum_{i=1}^m \alpha_i k(\boldsymbol{x}_i, \cdot), m \in \mathbb{N}, \alpha_i \in \mathbb{R}, \boldsymbol{x}_i \in \mathcal{X} \right\} \end{align*} 而不是整个RKHS,幸运的是表示定理(representer theorem)表明在某些条件下,求取最优分类模型的优化问题的最优解就在$\mathcal{H}_{pre}$中,这样就把无限维RKHS中的优化问题转化成了$m$维Euclidean空间里的优化问题,大大降低了难度。 定理2 :设核函数$k: \mathcal{X} \times \mathcal{X} \mapsto \mathbb{R}$对应的RKHS为$\mathcal{H}$,那么对于任意单调增函数$G: \mathbb{R}^+ \mapsto \mathbb{R}$和损失函数$L: \mathbb{R}^m \mapsto \mathbb{R} \cup (+\infty)$,如下优化问题 \begin{align*} \arg \min_{h \in \mathcal{H}} \ \ \ G(||h||_{\mathcal{H}}) + L(h(\boldsymbol{x}_1), \dots, h(\boldsymbol{x}_m)) \end{align*} 的最优解呈形$h^* = \sum_{i=1}^m \alpha_i k(\boldsymbol{x}_i, \cdot)$。 证明 :设$k(\boldsymbol{x}_1, \cdot), \dots, k(\boldsymbol{x}_m, \cdot)$张成的线性空间为$\mathcal{H}_1$,于是对于任意$h \in \mathcal{H}$,可做正交分解$h = h_1 + h_1^\perp$,由$G$的单调性知 \begin{align*} G(||h_1||_{\mathcal{H}}) \leq G(\sqrt{||h_1||_{\mathcal{H}}^2 + ||h_1^\perp||_{\mathcal{H}}^2}) = G(||h||_{\mathcal{H}}) \end{align*} 由再生性质知 \begin{align*} h(\boldsymbol{x}_i) = \langle h, k(\boldsymbol{x}_i, \cdot) \rangle_{\mathcal{H}} = \langle h_1, k(\boldsymbol{x}_i, \cdot) \rangle_{\mathcal{H}} = h_1(\boldsymbol{x}_i), i = 1, \dots, m \end{align*} 因此将$h$换成$h_1$并不影响第二项,却可以使第一项减小,因此$h^* \in \mathcal{H}_1$。 实际中,$G$在$\mathbb{R}^+$上单调增是个非常宽松的条件,常见的$L-1$正则项、$L-2$正则项都是满足的。
个人分类: 机器学习|187 次阅读|0 个评论
[转载][转]videolectures 最受欢迎的机器学习视频
haijunwang 2013-10-15 11:25
(转)videolectures 最受欢迎的机器学习视频 发表于 2013 年 9 月 18 日 由 justin 26971 views, 1:00:45, Gaussian Process Basics , David MacKay, 8 comments 7799 views, 3:08:32, Introduction to Machine Learning , Iain Murray 16092 views, 1:28:05, Introduction to Support Vector Machines , Colin Campbell, 22 comments 5755 views, 2:53:54, Probability and Mathematical Needs , Sandrine Anthoine , 2 comments 7960 views, 3:06:47, A tutorial on Deep Learning , Geoffrey E. Hinto 3858 views, 2:45:25, Introduction to Machine Learning , John Quinn, 1 comment 13758 views, 5:40:10, Statistical Learning Theory , John Shawe-Taylor , 3 comments 12226 views, 1:01:20, Semisupervised Learning Approaches , Tom Mitchell, 8 comments 1596 views, 1:04:23, Why Bayesian nonparametrics? , Zoubin Ghahramani , 1 comment 11390 views, 3:52:22, Markov Chain Monte Carlo Methods, Christian P. Robert, 5 comments 3153 views, 2:15:00, Data mining and Machine learning algorithms , José L. Balcázar, 1 comment 10322 views, 5:15:43, Graphical models , Zoubin Ghahramani, 23 comments 11071 views, 1:05:40, Dirichlet Processes, Chinese Restaurant Processes, and all that, Michael I. Jordan , 7 comments Daniel Wolpert – we are bayesian inference machines – 1 (Photo credit: pseudonomad) 10550 views, 1:06:55, Generative Models for Visual Objects and Object Recognition via Bayesian Inference , Fei-Fei Li, 11 comments 9312 views, 03:21, K-nearest neighbor classification , Antal van den Bosch, 7 comments 4800 views, 2:07:31, Patterns in Vector Spaces , Elisa Ricci, 1 comment 736 views, 16:55, Twitter Sentiment in Financial Domain , Miha Grčar, 1 comment 6789 views, 2:06:40, Introduction to kernel methods , Bernhard Schlkopf, 5 comments 6849 views, 2:54:37, Some Mathematical Tools for Machine Learning, Chris Burges, 6 comments 6792 views, 1:24:46, Bayesian Learning , Zoubin Ghahramani, 9 comments 6689 views, 4:33:48, Graphical Models and Variational Methods , Christopher Bishop, 11 comments 844 views, 17:05, High-Dimensional Graphical Model Selection , Animashree Anandkumar 5862 views, 57:16, Introduction to feature selection , Isabelle Guyon, 1 comment 5541 views, 2:14:21, Introduction to kernel methods , Alexander J. Smola, 8 comments 2304 views, 3:22:46, Introduction to Kernel Methods , Liva Ralaivola, 1 comment 723 views, 16:26, Learning Sparse Representations of High Dimensional Data on Large Scale Dictionaries , Zhen James Xiang 1628 views, 23:12, Gradient Boosted Decision Trees on Hadoop , Jerry Ye 5169 views, 4:16:53, Learning with Kernels , 4 comments 2038 views, 03:18, Scikitlearn , Gael Varoquaux 4965 views, 32:36, The Dynamics of AdaBoost, Cynthia Rudin, 3 comments 4433 views, 2:16:17, Sequential Monte Carlo methods , Arnaud Doucet, 9 comments 4859 views, 1:37:46, Online Learning and Game Theory , Adam Kalai, 3 comments 4237 views, 20:36, Learning to align: a statistical approach, Elisa Ricci, 1 comment 2645 views, 21:49, Online Dictionary Learning for Sparse Coding , Julien Mairal , 1 comment Cover of Statistical Learning Theory 4727 views, 3:13:52, Bayesian Inference: Principles and Practice , Mike Tipping, 6 comments 1419 views, 2:49:30, Online Learning , Peter L. Bartlett 2973 views, 21:01, Training a Binary Classifier with the Quantum Adiabatic Algorithm , Hartmut Neven, 1 comment 3973 views, 08:55, Machine Learning for Stock Selection , Charles X. Ling, 3 comments 3900 views, 2:56:35, Machine learning and finance , László Gyrfi , 3 comments 3517 views, 2:10:19, Learning with Gaussian Processes , Carl Edward Rasmussen, 7 comments 222 views, 29:03, Generating Possible Interpretations for Statistics from Linked Open Data ,Heiko Paulheim 4089 views, 2:32:26, Graph Matching Algorithms , Terry Caelli, 6 comments 3948 views, 3:39:05, Clustering – An overview , Marina Meila, 1 comment 3903 views, 2:11:59, An Introduction to Pattern Classification , Elad Yom Tov, 1 comment 3896 views, 5:18:05, Statistical Learning Theory , Olivier Bousquet, 3 comments 1541 views, 38:10, Learning with similarity functions , Maria Balcan 51 views, 1:00:30, A Flexible Model for Count Data: The COM-Poisson Distribution , Galit Shmuél 331 views, 41:53, Automatic Discovery of Patterns in News Content , Nello Cristianini, 2 comments 1132 views, 2:31:35, Gaussian Processes , Edwin V. Bonilla 2256 views, 1:08:39, Lecture 1 – The Motivation Applications of Machine Learning , Andrew Ng 666 views, 21:47, On the Usefulness of Similarity based Projection Spaces for Transfer Learning , Emilie Morvant 1112 views, 36:35, Robust PCA and Collaborative Filtering: Rejecting Outliers, Identifying Manipulators , Constantine Caramanis 3294 views, 2:01:49, The EM algorithm and Mixtures of Gaussians , Joaquin Quionero Candela, 4 comments 3444 views, 5:35:17, Independent Component Analysis , Jean-Franois Cardoso, 2 comments 1918 views, 19:47, Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations , Honglak Lee 790 views, 1:00:20, Classification and Clustering in Large Complex Networks , Ina Eliasi-Rad 986 views, 2:44:35, Restricted Boltzmann Machines and Deep Belief Nets , Marcus Frean 23 views, 17:29, Improved Initialisation and Gaussian Mixture Pairwise Terms for Dense Random Fields with Mean-field Inference , Vibhav Vineet 1915 views, 1:22:16, Lecture 11 – Bayesian Statistics and Regularization , Andrew Ng 3129 views, 4:31:39, Kernel Methods , Alexander J. Smola 2 comments 2577 views, 1:21:29, Graphical models , Zoubin Ghahramani 2160 views, 1:00:37, Should all Machine Learning be Bayesian? Should all Bayesian models be non-parametric? , Zoubin Ghahramani, 2 comments Zoubin Ghahramani – ‘Internet search queries’ (Photo credit: Engineering at Cambridge) 3018 views, 4:35:51, Graphical Models, Variational Methods, and Message-Passing , Martin J. Wainwright, 6 comments 3017 views, 3:43:43, Introduction to Kernel Methods , Bernhard Schlkopf, 1 comment 1257 views, 1:24:39, Reinforcement learning: Tutorial + Rethinking State, Action Reward , Satinder Singh 1044 views, 18:34, On the stability and interpretability of prognosis signatures in breast cancer , Anne-Claire Haury, 1 comment 2827 views, 00:58, Artificial intelligence: An instance of Aibo ingenuity , Michael Littman, 2 comments 163 views, 22:35, Exploiting Information Extraction, Reasoning and Machine Learning for Relation Prediction , Xueyan Jiang, 2 comments 1704 views, 2:42:22, Theory and Applications of Boosting , Robert Schapire, 1 comment 387 views, 18:48, High-dimensional regression with noisy and missing data: Provable guarantees with non-convexity , Po-Ling Loh 1912 views, 38:30, Machine learning and kernel methods for computer vision , Francis R. Bach 2755 views, 32:18, Neighbourhood Components Analysis , Sam Roweis, 1 comment 2295 views, 28:18, Learning an Outlier-Robust Kalman Filter , Jo-Anne Ting, 1 comment 1308 views, 25:08, Probabilistic Machine Learning in Computational Advertising , Thore Graepel 2670 views, 4:22:31, Gaussian Processes , Carl Edward Rasmussen, 2 comments 1772 views, 58:42, Probabilistic Decision-Making Under Model Uncertainty , Joelle Pineau 2198 views, 58:51, Who is Afraid of Non-Convex Loss Functions? , Yann LeCun 339 views, 54:15, Machine Learning Markets , Amos Storkey 2560 views, 1:49:01, Generalized Principal Component Analysis (GPCA) , Rene Vidal, 8 comments 1247 views, 25:00, FPGA-based MapReduce Framework for Machine Learning , Ningyi Xu 2527 views, 58:39, Latent Semantic Variable Models , Thomas Hofmann, 3 comments 324 views, 18:31, k-NN Regression Adapts to Local Intrinsic Dimension , Samory Kpotufe 1485 views, 1:20:37, Lecture 14 – The Factor Analysis Model , Andrew Ng 2000 views, 1:11:49, Hierarchical Clustering , Yee Whye Teh 316 views, 16:38, Discussion of Erik Sudderth’s talk: NPB Hype or Hope? , Yann LeCun 309 views, 16:15, A Collaborative Mechanism for Crowdsourcing Prediction Problems , Jacob Aberneth 1993 views, 39:15, Speeding Up Stochastic Gradient Descent , Yoshua Bengio 126 views, 24:42, LODifier: Generating Linked Data from Unstructured Text , Isabelle Augenstein 304 views, 19:47, Iterative Learning for Reliable Crowdsourcing Systems , Sewoong Oh 1246 views, 24:03, Collaborative Filtering with Temporal Dynamics , Yehuda Koren 714 views, 21:56, HIV-Haplotype Inference using a Constraintbased Dirichlet Process Mixture Model , Sandhya Prabhakaran, Melanie Rey 1272 views, 22:40, Modeling the SP 500 Index using the Kalman Filter and the LagLasso , Nicolas Mahle 2064 views, 10:47, Ten problems for the next 10 years , Pedro Domingos, 1 comment 2097 views, 23:15 , Best Paper – Information-Theoretic Metric Learning , Brian Kulis 926 views, 1:10:31, Neuroscience, cognitive science and machine learning , Konrad Krding 2210 views, 1:21:57, Introduction to Kernel Methods , Partha Niyogi, 5 comments 291 views, 12:00, Fast and Accurate k-means For Large Datasets , Michael Shindler 2203 views, 2:56:16, Probabilistic and Bayesian Modelling I , Manfred Opper, 1 comment 2198 views, 1:00:00, Nonparametric Bayesian Models in Machine Learning , Zoubin Ghahramani 1901 views, 48:34, Machine Learning for Intrusion Detection , Pavel Laskov Related articles Scalable Machine Learning Course (datascience101.wordpress.com) 7th Annual Machine Learning Symposium (hunch.net) Message-Oriented Object Design and Machine Learning in JavaScript (architects.dzone.com) Large Scale (Machine) Learning at Twitter (videolectures.net) Hidden Benefits of Online Learning (i-programmer.info) Model checking and model understanding in machine learning (andrewgelman.com) Machine Learning Book for Students and Researchers (googleresearch.blogspot.com) Wagstaff (2012, jpl) machine learning that matters (slideshare.net) Why becoming a data scientist might be easier than you think (gigaom.com) The Man-Machine Framework: How to Build Machine-Learning Applications the Right Way (forbes.com) http://blog.videolectures.net/100-most-popular-machine-learning-talks-at-videolectures-net/
个人分类: 科研资源|2746 次阅读|0 个评论
[转载]机器学习推荐书目
haijunwang 2013-10-15 11:21
机器学习推荐书目 发表于 2013 年 8 月 22 日 由 justin 来源:水木社区人工智能版。 发信人: Insomnia (完美主义是种病), 信区: AI 标 题: Machine Learning书单 发信站: 水木社区 (Fri Mar 29 16:46:37 2013), 站内 持续更新,请补充。 除了以下推荐的书以外,出版在Foundations and Trends in Machine Learning上面的survey文章都值得一看。 入门: Pattern Recognition And Machine Learning Christopher M. Bishop Machine Learning : A Probabilistic Perspective Kevin P. Murphy The Elements of Statistical Learning : Data Mining, Inference, and Predictio n Trevor Hastie, Robert Tibshirani, Jerome Friedman Information Theory, Inference and Learning Algorithms David J. C. MacKay All of Statistics : A Concise Course in Statistical Inference Larry Wasserman 优化: Convex Optimization Stephen Boyd, Lieven Vandenberghe Numerical Optimization Jorge Nocedal, Stephen Wright Optimization for Machine Learning Suvrit Sra, Sebastian Nowozin, Stephen J. Wright 核方法: Kernel Methods for Pattern Analysis John Shawe-Taylor, Nello Cristianini Learning with Kernels : Support Vector Machines, Regularization, Optimizatio n, and Beyond Bernhard Schlkopf, Alexander J. Smola 半监督: Semi-Supervised Learning Olivier Chapelle 高斯过程: Gaussian Processes for Machine Learning (Adaptive Computation and Machine Le arning) Carl Edward Rasmussen, Christopher K. I. Williams 概率图模型: Graphical Models, Exponential Families, and Variational Inference Martin J Wainwright, Michael I Jordan Boosting: Boosting : Foundations and Algorithms Schapire, Robert E.; Freund, Yoav 贝叶斯: Statistical Decision Theory and Bayesian Analysis James O. Berger The Bayesian Choice : From Decision-Theoretic Foundations to Computational I mplementation Christian P. Robert Bayesian Nonparametrics Nils Lid Hjort, Chris Holmes, Peter Müller, Stephen G. Walker Principles of Uncertainty Joseph B. Kadane Decision Theory : Principles and Approaches Giovanni Parmigiani, Lurdes Inoue 蒙特卡洛: Monte Carlo Strategies in Scientific Computing Jun S. Liu Monte Carlo Statistical Methods Christian P.Robert, George Casella 信息几何: Methods of Information Geometry Shun-Ichi Amari, Hiroshi Nagaoka Algebraic Geometry and Statistical Learning Theory Watanabe, Sumio Differential Geometry and Statistics M.K. Murray, J.W. Rice 渐进收敛: Asymptotic Statistics A. W. van der Vaart Empirical Processes in M-estimation Geer, Sara A. van de 不推荐: Statistical Learning Theory Vladimir N. Vapnik Bayesian Data Analysis, Second Edition Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin Probabilistic Graphical Models : Principles and Techniques Daphne Koller, Nir Friedman
个人分类: 机器学习|3162 次阅读|0 个评论
【读书笔记:异或门是神经网络的命门】
热度 3 liwei999 2013-10-2 06:02
在翻译 肯尼斯•丘吉 ( Kenneth Church)教授【钟摆摆得太远】,读到了敏斯基(Minsky)对神经网络的这个经典批判:异或(XOR)是神经网络感知机(perceptrons)的命门。 丘吉 教授指出这一批评其实对很多 流行 的 机器学习算法适用,因为这些算法对训练数据有一个线性可分的假设前提(linearly separable assumption),而异或门是线性不可分的。有关章节的论述和翻译附于文末。 丘吉 教授说,由于这个异或门,情感分类(sentiment classification)在学习中不得不放弃使用褒贬词,因为这些褒贬词虽然情感色彩浓烈,但是其指向却随着上下文而改变。而这种改变往往需要依赖异或判断,线性分离为基础的机器学习根本就学不会这种判别。 怎样理解这个异或门困境? 朋友是这样解说的,我觉得比较形象: 情绪词不能线性分隔,因为它的值依赖一个异或判断xor。即: 好坏的分类=“情绪词的好坏” XOR “对象” 例如对“我们”来说: 好词xor我们 = 好 好词xor他们 = 坏 坏词xor我们 = 坏 坏词xor他们 = 好 如果把对象用X轴表示,我们为+1、他们(我们的竞争对手)为-1;情绪词用Y轴表示,+1为好词,-1为坏词。 那么“好坏分类”= X*Y. 其结果为+1就代表“好”,-1代表坏。可以看出 意思为好的两个点处在一三象限,坏点在二四象限。这两组点不能用一条直线分隔开来。 所以基于线性分隔的机器学不会情绪词。 【附录:异或门批判的有关章节】 (节选自/ 译自: K. Church 2011. A Pendulum Swung Too Far . Linguistics issuesin Language Technology, Volume 6 ,Issue 5 . ) 3.2敏斯基的批评 敏斯基和帕佩特( Minsky and Papert 1969)表明,感知机(perceptrons, 或统而言之,线性分离机)不能学会分隔那些不可线性可分的,如异或(XOR)和连通性(connectedness)。在二维空间里,如果可以用直线分隔开标记为正例和负例的点,该散点图即线性可分。更一般地,在n维空间中,当有n-1维超平面(hyperplane)能分隔正例和负例,其点便线性可分。 3.2 Minsky's Objections Minsky and Papert (1969) showed that perceptrons(and more generally, linear separators) cannot learn functions that are notlinearly separable such as XOR and connectedness. In two dimensions, a scatter plotis linearly separable when a line can separate the points with positive labelsfrom the points with negative labels. More generally, in n dimensions, pointsare linearly separable when there is a n-1 dimensional hyperplane thatseparates the positive labels from the negative labels. ...... 3.3为什么当前技术忽略谓词 信息检索和情感分析的权重系统往往专注于刚性指示词( rigid designators,例如名词,译注:刚性指示词指的是意义独立,不随上下文而改变的实体名词,基于关键词模式匹配的机器学习比较容易模型刚性指示词,因为它不受上下文关系的干扰),而忽略谓词(动词,形容词和副词)以及强调词(例如,“非常”)和贬损词(loaded terms,如“米老鼠”和“破烂儿”,译者注,“米老鼠”是贬损词,因为它与“破烂儿”一样贬义,说一家企业是米老鼠,表示的是轻蔑)。其原因可能与敏斯基和帕佩特对感知机的批评有关。多年前,我们有机会接触MIMS 数据集,这是由AT&T操作员收集的文本留言。其中一些评论被操作员标记为正面,负面或中性。刚性指示词(通常是名词)往往与正面或者负面紧密关联,但也有不少贬损词,不是正面就是负面,很少中性。 3.3 Why Current Technology Ignores Predicates Weighting systems for Information Retrievaland Sentiment Analysis tend to focus on rigid designators (e.g., nouns) andignore predicates (verbs, adjectives and adverbs) and intensifiers (e.g.,“very”) and loaded terms (e.g., “Mickey Mouse” and “Rinky Dink”). The reason might be related to Minsky and Papert's criticism ofperceptrons. Years ago, we had access to MIMS, a collection of text commentscollected by ATT operators. Some of the comments were labeled byannotators as positive, negative or neutral. Rigid designators (typicallynouns) tend to be strongly associated with one class oranother, but there were quite a few loaded terms that were either positive ornegative, but rarely neutral. 贬损词怎样会是正面呢?原来是,当贬损词与竞争对手相关联,标注者就把文档标为对我方“好”(正例);当感性词与我们关联,即标注为对我方“坏”(负例)。换句话说,有一种异或关系(贬损词 XOR 我方)超出了线性分离机的能力。 How can loaded terms be positive? It turnsout that the judges labeled the document as good for us if the loaded term waspredicated of the competition, and bad if it was predicated of us. In otherwords, there is an XOR dependency (loaded term XOR us) that is beyond the capabilitiesof a linear separator. 目前的做法,情感分析和信息检索不考虑修饰成分(谓词与算元的关系,强调词和贬损词),因为除非你知道他们在修饰什么,修饰成分的意义很难捕捉。忽视贬损词和强调词似乎是个遗憾,尤其对情感分析,因为贬损词显然表达了强烈的主观意见。但对于一个特征,如果你不知道应该给正面还是负面的符号,即使你知道强度大也没什么用。 Current practice in Sentiment Analysis andInformation Retrieval does not model modifiers (predicate-argumentrelationships, intensifiers and loaded terms), because it is hard to make senseof modifiers unless you know what they are modifying. Ignoring loaded terms andintensifiers seems like a missed opportunity, especially for Sentiment Analysis,since loaded terms are obviously expressing strong opinions. But you can't domuch with a feature if you don't know the sign, even if you know the magnitude is large. 当谓词 -算元关系最终被模型化,由于上述 XOR 异或问题的存在,我们最终需要对线性可分的前提假定重新审视。 When predicate-argument relationships areeventually modeled, it will be necessary to revisit the linearly separableassumption because of the XOR problem mentioned above. 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|14888 次阅读|4 个评论
[转载]机器学习方法总结
sy1110 2013-9-17 10:42
来源: http://biostar.blog.sohu.com/61246458.html 训练:训练集——特征选取——训练——分类器 分类:新样本——特征选取——分类——判决 最初的数据挖掘分类应用大多都是在这些方法及基于内存基础上所构造的算法。目前数据挖掘方法都要求具有基于外存以处理大规模数据集合能力且具有可扩展能力。下面对几种主要的分类方法做个简要介绍: (1)决策树 决策树归纳是经典的分类算法。它采用自顶向下递归的各个击破方式构造决策树。树的每一个结点上使用信息增益度量选择测试属性。可以从生成的决策树中提取规则。 (2) KNN法(K-Nearest Neighbor) KNN法即K最近邻法,最初由Cover和Hart于1968年提出的,是一个理论上比较成熟的方法。该方法的思路非常简单直观:如果一个样本在特征空间 中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类 别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。因此,采用这种方法可以较好地避免样本的不平衡问题。另外,由于 KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法 更为适合。 该方法的不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样 本点进行剪辑,事先去除对分类作用不大的样本。另外还有一种Reverse KNN法,能降低KNN算法的计算复杂度,提高分类的效率。 该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。 (3) SVM法 SVM法即支持向量机(Support Vector Machine)法,由Vapnik等人于1995年提出,具有相对优良的性能指标。该方法是建立在统计学习理论基础上的机器学习方法。通过学习算法, SVM可以自动寻找出那些对分类有较好区分能力的支持向量,由此构造出的分类器可以最大化类与类的间隔,因而有较好的适应能力和较高的分准率。该方法只需 要由各类域的边界样本的类别来决定最后的分类结果。 支持向量机算法的目的在于寻找一个超平面H(d),该超平面可以将训练集中的数据分开,且与类域边界的沿垂直于该超平面方向的距离最大,故SVM法亦被称 为最大边缘(maximum margin)算法。待分样本集中的大部分样本不是支持向量,移去或者减少这些样本对分类结果没有影响,SVM法对小样本情况下的自动分类有着较好的分类 结果。 (4) VSM法 VSM法即向量空间模型(Vector Space Model)法,由Salton等人于60年代末提出。这是最早也是最出名的信息检索方面的数学模型。其基本思想是将文档表示为加权的特征向量:D=D (T1,W1;T2,W2;…;Tn,Wn),然后通过计算文本相似度的方法来确定待分样本的类别。当文本被表示为空间向量模型的时候,文本的相似度就可 以借助特征向量之间的内积来表示。 在实际应用中,VSM法一般事先依据语料库中的训练样本和分类体系建立类别向量空间。当需要对一篇待分样本进行分类的时候,只需要计算待分样本和每一个类别向量的相似度即内积,然后选取相似度最大的类别作为该待分样本所对应的类别。 由于VSM法中需要事先计算类别的空间向量,而该空间向量的建立又很大程度的依赖于该类别向量中所包含的特征项。根据研究发现,类别中所包含的非零特征项 越多,其包含的每个特征项对于类别的表达能力越弱。因此,VSM法相对其他分类方法而言,更适合于专业文献的分类。 (5) Bayes法 Bayes法是一种在已知先验概率与类条件概率的情况下的模式分类方法,待分样本的分类结果取决于各类域中样本的全体。 设训练样本集分为M类,记为C={c1,…,ci,…cM},每类的先验概率为P(ci),i=1,2,…,M。当样本集非常大时,可以认为P(ci)= ci类样本数/总样本数。对于一个待分样本X,其归于cj类的类条件概率是P(X/ci),则根据Bayes定理,可得到cj类的后验概率P (ci/X): P(ci/x)=P(x/ci)·P(ci)/P(x)(1) 若P(ci/X)=MaxjP(cj/X),i=1,2,…,M,j=1,2,…,M,则有x∈ci(2) 式(2)是最大后验概率判决准则,将式(1)代入式(2),则有: 若P(x/ci)P(ci)=Maxj〔P(x/cj)P(cj)〕,i=1,2,…,M,j=1,2,…,M,则x∈ci 这就是常用到的Bayes分类判决准则。经过长期的研究,Bayes分类方法在理论上论证得比较充分,在应用上也是非常广泛的。 Bayes方法的薄弱环节在于实际情况下,类别总体的概率分布和各类样本的概率分布函数(或密度函数)常常是不知道的。为了获得它们,就要求样本 足够大。另外,Bayes法要求表达文本的主题词相互独立,这样的条件在实际文本中一般很难满足,因此该方法往往在效果上难以达到理论上的最大值。 (6)神经网络 神经网络分类算法的重点是构造阈值逻辑单元,一个值逻辑单元是一个对象,它可以输入一组加权系数的量,对它们进行求和,如果这个和达到或者超过了 某个阈值,输出一个量。如有输入值X1, X2, ..., Xn 和它们的权系数:W1, W2, ..., Wn,求和计算出的 Xi*Wi ,产生了激发层 a = (X1 * W1)+(X2 * W2)+...+(Xi * Wi)+...+ (Xn * Wn),其中Xi 是各条记录出现频率或其他参数,Wi是实时特征评估模型中得到的权系数。神经网络是基于经验风险最小化原则的学习算法,有一些固有的缺陷,比如层数和神经 元个数难以确定,容易陷入局部极小,还有过学习现象,这些本身的缺陷在SVM算法中可以得到很好的解决。 来源: http://www.cnblogs.com/zhangchaoyang 机器学习问题方法总结 大类 名称 关键词 有监督分类 决策树 信息增益 分类回归树 Gini指数,Χ 2 统计量,剪枝 朴素贝叶斯 非参数估计,贝叶斯估计 线性判别分析 Fishre判别, 特征向量求解 K最邻近 相似度度量:欧氏距离、街区距离、 编辑距离 、向量夹角、 Pearson相关系数 逻辑斯谛回归 (二值分类) 参数估计(极大似然估计)、S型函数 径向基函数网络 非参数估计、正则化理论、S型函数 对偶传播网络 无导师的竞争学习、有导师的Widrow-Hoff学习 学习向量量化网络 一个输出层细胞跟几个竞争层细胞相连 误差反向传播网络 S型函数、 梯度下降法 支持向量机 (二值分类) 二次规化,Lagrange乘数法,对偶问题, 最优化 ,序列最小优化,核技巧 单层感知器 只具有线性可分的能力 双隐藏层感知器 足以解决任何复杂的分类问题 无监督分类 KMeans 质心 CHAMELONE 图划分,相对互连度,相对紧密度 BIRCH B树,CF三元组 DBScan 核心点,密度可达 EM算法(高斯混合模型) 参数估计(极大似然估计) 谱聚类 图划分, 奇异值求解 。全局收敛 自组织映射网络 无导师的竞争学习 回归分析 一般线性回归 参数估计,最小二乘法,一般不用于分类而用于预测 逻辑斯谛回归(二值分类) 参数估计(极大似然估计),S型函数 关联规则挖掘 FP-Tree 频繁1项集,FP-Tree,条件模式基,后缀模式 降维 主成分分析 协方差矩阵,奇异值分解 推荐 协同过滤 稀疏向量的相似度度量 方法细分 应用场所 参数估计 极大似然估计 线性回归。假设误差满足均值为0的正态分布,从而转化为最小二乘法 Logistic回归。梯度下降迭代法求似然函数的极值 高斯混合模型。 非参数估计 径向基函数网络 独立性检验 无参数假设检验 χ 2 检验 特征词选取,分类回归树的终止条件 秩和检验 相关性检验 Pearson相关系数(假设x,y成对地从正态分布中取得) 基于向量空间模型的文本分类,用户喜好推荐系统 Spearman秩相关系数(无参数假设检验) 最优化方法 无约束最优化方法 梯度下降法 极大似然估计(回归分析、GMM) 支持向量机 线性判别分析 牛顿迭代法及其变种 有约束时通过Lagrange乘数法转换成无约束问题 求特征值/特征向量 幂法 线性判别分析 降维 奇异值分解 (仅针对对称矩阵) 主成分分析 谱聚类 信息论 信息增益 特征词选择 决策树 互信息 特征词选择 交叉熵 特征词选择,稀有事件建模仿真,多峰最优化问题 核函数 多项式核函数 SVM RBF网络 高斯核函数(径向基函数) 双极性核函数 单极性Sigmoid函数 Logistic回归 BP神经网络 协方差 Pearson相关系数 PCA EM算法 高斯混合模型 向前向后算法 基函数 高斯混合模型 径向基函数网络 平滑算法 拉普拉斯平滑 贝叶斯分类 隐马尔可夫模型 Good-Turing平滑 隐马尔可夫模型 评估问题—向前算法 解码问题—Viterbi算法 中文分词 , 词性标注     学习问题—BaumWelch算法 Cover定理指出:将复杂的模式分类问题非线性地映射到高维空间将比投影到低维空间更可能线性可分。 所以SVM和RBF网络都试图把样本从低维空间映射到高维空间再进行分类。   好笑的是,另一些方法则是把输入样本从高维降到低维后再进行分类或回归分析,如PCA、SOFM网络、LDA、谱聚类,它们认为样本在低维特征空间有更清晰的表达,更容易发现规律。
个人分类: 学习笔记|5421 次阅读|0 个评论
SPARsity and Clustering Regularization for Regression
zengxrong 2013-8-31 03:17
这是我们在SPARS 2013上发表的关于新的稀疏和聚类正则化方法: http://spars2013.epfl.ch/data/_uploaded/flash/Paper%2089.pdf 可以广泛应用于压缩感知,信号处理和机器学习。后续将会有相应的文章,敬请关注. 谢谢!
个人分类: 机器学习|1442 次阅读|0 个评论
一篇无法正确分类的妙文:《为冯“定调”捏把汗》捏的是把什么汗?
王飞跃 2013-8-24 12:43
一 篇让算法无法正确分类的妙文: 《为冯小刚的“定调”捏把汗》捏的是把什么汗? 今日有人给我一篇杂文,说一般机器算法都把它的类别划错(支持、反对、中立三类)。自己开看之后,先是闻有检举信的味道,可又感表扬的色彩,接下来成了控诉信,到了最后,就不知是调侃、担心还是支持了。或许,这把汗里这些味道都有,而且考虑时局、历史、实效等因素,权重可能都查不多。人都分不清,岂可赖机器?留此,为机器学习的范文。 2013.8.23. 京 +++++++++++++ ++++++++ ++++++++ ++++++++++++++++++ 为冯小刚的“定调”捏把汗 2013-08-2308:20:00  来源 : 南方日报 ( 广州 ) 潮 白 在马年春晚总导演冯小刚与副总导演赵本山、艺术顾问张国立、刘恒和策划张和平等春晚智囊团日前首次召开的语言类节目碰头会上,冯小刚“大胆地”提出要摒弃那些煽情、唱赞歌的东西,所有创作者要放开手脚,敢写敢说,呈现出带尖带刺、有棱有角的相声和小品来。此语既出,引来舆论的强烈关注。 在当初走马上任之际,冯小刚就希望语言类节目不要“不痛不痒”,还提出了一个四字方针—“干预 生活 ”,也就是希望作品能回归到讽刺、辛辣、幽默的风格。现在到了落实阶段,他果真是在践行前言。冯小刚此言并非偶然。再往前溯,2009年3月,全国政协十一届二次会议上,政协委员冯小刚就对国庆献礼片说了一些“掏心窝子的话”:“我真的怕,我们在经济十分紧张的时候花国家的钱、纳税人的钱去拍一大堆形式大于内容的所谓主旋律电影。”他把这归结为“去做表面的献礼、离观众远的献礼”。在我们,自然由此窥见了冯小刚思路上的一脉相承。 自从冯小刚接掌马年春晚帅印以来,公众就莫不对他报以极大期望。冯小刚有令公众期望的理由,电影界的“贺岁王”嘛,接二连三的成功表明他摸得准公众的 娱乐 心理。早先的春晚事实上也就是个大 payty( 注:原文如此,不知何意,给明星们“今日付款pay today”的缩写?但更可能的是party的错写 ) ,后来被赋予的各种功能都是渐渐承载起来的,是否达到了加载者的预期未知,只是节目倒了大家的胃口,普遍觉得春晚不好看了,却又年年失望年年望。应当看到,央视本身也在不断努力,他们将2014年春晚总导演锁定冯小刚,或许正有使之回归娱乐的用意,至少这种亲民的姿态给春晚注入了不一样的活力。不过,冯小刚的此一“定调”,在我们旁观者仍然不免要为之捏上一把汗。概因收条子、塞节目的现象,在语言类节目中可能没有那么严重,然而从既往的大量报道中,我们对“圈中事”多少都有些了解,那就是上什么节目、如何上,未必是总导演说了算的,还有节目审查一关,诸多矛盾的焦点往往正集中于此。 蛇年春晚,蝉联了若干年的“小品王”赵本山终于选择退出,见诸报章的普遍说法,就是他无法容忍对小品的审查方式。而在公开场合,赵本山也的确不止一次地表达了对节目审查方式的不满。2011年春晚之前,他就说:“最烦的就是天天审我、天天看我。”去年他又说:“中央电视台的审查制度永远是这样,观众都笑翻了,就他们(指审查人员)的脸是青的。”在他看来,央视办春晚“就为了给13亿人带来快乐,但这几个经营快乐的人他不快乐”,那这晚会能好吗?“你想一下,他们不快乐,但他们紧张,总怕不好看,还不懂,然后提了一堆不懂的意见”。春晚的另一常客姜昆,虽然没有这么直接,但表态颇值得玩味。当被问到“您觉得《虎口脱险》这样优秀的作品放在现在还能上春晚吗?现在的审查方式是否和以前不同了”时,姜昆说,这个问题太敏感,还有一点专业性,能不能留着咱们底下交流?这些现实问题,冯小刚找到了破解之道吗? 其实,即便真的要“怪罪”起来,也还真的不能单拿审查人员说事。无产阶级的革命导师马克思当年曾经怀疑某种招人怨恨的审查制度,是否“国家总是盲目地挑选最无能的人去担任最艰巨的职务”,但他实际上很清楚,这是“事物的本质所引起的愤恨变成了对某些人的憎恨”。所以,马克思以为“真正而根本的办法”,就是废除这种检查制度,因为它“骨子里隐藏着一种任何法律都无法医治的痼疾”。(引文均见人民出版社《马克思恩格斯全集》第一卷1956年12月第1版)。那么,在前提不变的情况下,我们就有理由为冯小刚的此番“定调”捏上一把汗,除非他已经“尚方宝剑”在手,或者“将在外,君命有所不受”。
个人分类: 科研记事|10302 次阅读|0 个评论
【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】
热度 3 liwei999 2013-6-28 14:49
【科普随笔:NLP主流的傲慢与偏见】 中的第二条是 : 【成见二】 规则系统的手工编制导致其移植性差,转换领域必须重启炉灶,而机器学习因为算法和系统保持不变,转换领域只要改变训练数据即可(言下之意:移植性强)。 这一偏见的要害是先把语言学家当机器人(与傻子是同义词),假设手工编制的规则与机器学习的显式规则(symbolic rules)同形,然后批评语言学家不如机器灵活和有效率。这就好比在电子词典或者计算器的比赛中,突然拉进一位号称活字典或心算师的有血有肉的人来,然后考核电子器件与专家的记忆力和运算能力。结论是,see,人脑的容量太小,根本无法与电脑相比,你出局了! 如果规则系统的架构和分析完全没有深度,只允许编写表层模式(surface patterns)的规则,直接连接输入与输出,用脚后跟想也可以得出移植性差的结论,因为表层规则依赖于任务,任务一换,辛辛苦苦编制调试出来的规则就没有再利用的可能。但是,除非是非常浅层的NLP(Natural Language Processing)任务,譬如标注产生式合成词(productive compouds)、词性(Part of Speech tagging)、专名标注(Named Entity tagging)、日期、数量单位、邮递地址等,对于最常见的NLP应用,信息抽取、舆情抽取等,语言学家几乎不可能象机器那样傻地把学习过程当作一个黑匣子,只会匹配输入和输出,而不去究竟背后的深层结构及其概括和推理。(即便是浅层任务,手工编制也未见得不可行不合算、不能与机器学习相媲美,需要具体分析其得失,不过我们先按下不论。) 换句话说,机器学习因为黑匣子的方法论一般只是从表层到表层(即,输入 输出),反正是机器学出来的,不怕模型或规则的量大和冗余。说“一般”是因为机器学习的领域当然有探索多层学习的研究,最近风行的深度学习似乎就是一种。(深度学习之所以被认为是革命性的,似乎也反过来说明长时期以来机器学习一直在表层做文章。)而语言学家设计的规则系统通常是一个模拟人的分析概括过程的层级体系(rule hierarchy),从浅层到深层逐级分析,最后达成任务(即,输入 中间结构 输出)。这样的规则系统的移植性还是很差么?具体说,编写的规则代码需要随着任务转换全部推倒重来,还是代码在新的领域可以再利用?积在美16年研发多种信息抽取系统和产品的经验,我可以负责任地回答,设计优良的规则系统可以做到很好的领域移植性,其绝大部分规则可以再利用。这里面的道理就在,领域可以变,专业术语等词汇级的资源可以各个不同,但语言结构基本不变。总体而言,自然语言的语法是跨领域的。 大体上说,一个四五人的研发团队(一个NLP平台工程师、两位语言学家、半个QA半个operations)研发一个特定自然语言(譬如英语)的语言深度分析器,大约需要两三年的功夫可以做到实用(再做其他的语言,时间至少可以减半,因为平台、形式体系、架构和开发环境是各语言开发及其不同抽取项目都可以分享的。单这一点也可见所谓规则系统转换领域一切要重起炉灶是怎样的误导:一方面吹嘘机器学习算法系统无需改变,一方面有意无意忽视规则系统中的架构、语言处理流程以及规则编译器及平台等系统层面的领域普适性,两套标准被忽悠得如此娴熟,让人不得不叹)。与之相比较,在分析基础上做一套抽取系统支持应用,简单任务两周可达到实用,复杂任务譬如舆情抽取半年也可以初步完成(其后就是维护和逐步完善了),任务平均所需开发时间在三个月左右。大体说来,分析与抽取的资源投入比例大约是10:1,因此,对这样架构的规则系统来说,移植性的量化表述大概是,90%的系统是可移植的,只有10%需要推倒重来。三个月的移植开销是个什么概念呢?在应用软件的开发现场,它根本就不可能成为瓶颈,因为单单是研究用户的信息需求,定义新产品的抽取目标,就常常需要三个月的时间。除此之外,从实用抽取系统第一版开发完成,到产品开发组消化它,把它转变成可用的产品或者产品功能,也至少需要三个月的开发周期。由此可见,即便规则系统移植性进一步加强,在生产线上也难以推动产品的更新换代周期。结论是,不存在规则系统移植性太差不堪使用的问题。这就是偏见重复一千遍转化成集体催眠下的反真理而已。 问题的另一方面是,机器学习是否真地移植性那么强,象吹嘘的那么神,系统无需变化,只要随着新数据重新训练一下就生成一个新领域的系统?其实,谈何容易。首先,新数据哪里来,这个知识瓶颈就不好过。再者,重新训练的过程也 绝不是简单地按章办事即可大功告成。一个过得去的系统常常要经历一个不断调控优化的过程。 说到这里,想起一段亲历的真实故事。我以前拿过政府罗马实验室10多个小企业创新基金,率领研发组开发了一个以规则系统为主(机器学习为辅,主要是浅层专名标注那一块用的是机器学习)的信息抽取引擎。我们的政府资助人也同时资助另一家专事机器学习的信息抽取的团队(在美国也是做机器学习很牛的一家),其目的大概是鼓励竞争,不要吊死在一棵树上。不仅如此,罗马实验室还选助了一家系统集成商开发一套情报挖掘应用软件,提供给政府有关机构试用。这套应用的内核用的就是我们两家提供的信息抽取引擎作为技术支撑。在长达四年的合作中,我们与集成商有过多次接触,他们的技术主管告诉我,从移植性和质量改进方面看,我们的规则引擎比另一家的机器学习引擎好太多了。 我问,怎么会,他们有一流的机器学习专家,还常年配有一个手工标注的团队,引擎质量不会太差的。主管告诉我,也许在他们训练和测试的数据源上质量的确不错,可是集成商这边是用在另一套保密数据(classified data)上,移植过来用效果就差了。我说,那当然,训练的数据和使用现场的数据不同类型,机器学习怎么能指望出好结果呢,你们该重新训练(re-training)啊。你们用他们引擎五年来,重新训练过几次,效果如何?主管说:一次也没有重新训练成过。重新训练,谈何容易?我问:你们不可以组织人自己标注使用领域的数据,用他们的系统重新训练?主管说:理论上可行,实践上步步难行。首先,要想达到最优效果 ,当然是根据我们的数据重新标注一个与引擎出厂时候大体等量的训练文本集来。可那样大的数据标注,我们根本无力做成,标注过程的质量控制也没有经验。结果是我们只标注了部分数据。理论上讲,我们如果把这批自己的数据加到引擎提供者的训练数据中,重新训练可以把系统多少拉到我们的领域来,效果总会有 提高。但是我们不是信息抽取和机器学习专家,我们只擅长做系统集成。机器学习用新旧数据混合要想训练得好,要牵涉到一些技术细节(甚至tips和tricks) 和一些说明书和专业论文上不谈的微调和小秘密。尝试过,越训练效果反而越差。我问:那怎么办?遇到质量问题,怎样解决?他说:没什么好办法。你们不同,我们只要例示观察到的错误类型,你们下一次给我们 update 引擎时基本上就已经解决了。可我们把问题类型反馈给机器学习开发者就不能指望他们可以改正,因为他们见不到这边的数据。结果呢,我们只好自己在他们的引擎后面用简单模式匹配程序打补丁、擦屁股,可费劲了。 我当时的震惊可想而知。一个被NLP主流重复无数遍的重新训练、移植性好的神话,在使用现场竟然如此不堪。学习大牛做出来的引擎在用户手中四五年却连一次重新训练都实施不了。系统成为一个死物,完完全全的黑箱子。所有改进只能靠隔靴搔痒的补丁。 总结一下,关于系统移植性,与通常流行的观点正好相反,架构合理的规则系统比起机器学习系统在实际研发和使用现场,更加具有领域移植性。架构合理指的是用语言学分析支持信息抽取的体系:一个不依赖领域的语言分析器作为基础;一个语言分析支持的依赖于领域的信息抽取器。只有后者才有移植性问题,前者是基本不随领域而变的(领域专业词典可以象用户词典那样外挂,语言学词典与规则内核可基本保持不变)。分析器做得越深入,抽取器就越简化,移植性则越强,因为快速开发领域抽取器的逻辑条件增强了。在深度分析(deep parsing)的逻辑语义基础上做抽取移植效果最佳。 最后我们以谈知识瓶颈偏见的上篇科普随笔的最后一段收尾,因为这两个偏见有很大的相交部分: 知识瓶颈的对比问题不仅仅是针对一个应用而言,而应该放在多应用的可移植性上来考察。我们知道绝大多数NLP应用的技术支持都源于从自然语言做特定的信息抽取。由于机器学习把信息抽取看成一个直接对应输入和输出的黑匣子,所以一旦改变信息抽取目标和应用方向,以前的人工标注就废弃了,作为知识瓶颈的标注工作必须完全重来。可是规则系统不同,它可以设计成一个规则层级体系,独立于领域和应用方向的语言学规则组件(parsers)以及在语言学之上的针对领域和应用的信息抽取规则子系统。结果是,在转移应用目标时候,底层的语言学组件基本保持不变,而只需要重新编写不同的信息抽取规则而已。实践证明,对于规则系统,真正的知识瓶颈在语言学组件的构建上,而信息抽取本身花费不多。这是因为前者需要应对自然语言变化多端的表达方式,把它逻辑化,而后者是建立在逻辑形式(logical form)上的规则,一条等价于底层规则的几百上千条。因此,从多应用的角度看,机器学习的知识成本最终会远远大于规则系统。 引自【 科普随笔:NLP主流最大的偏见,规则系统的手工性 】 【系列姐妹篇】 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|8419 次阅读|6 个评论
【科普随笔:NLP主流最大的偏见,规则系统的手工性】
热度 5 liwei999 2013-6-22 21:11
【科普随笔:NLP主流的傲慢与偏见】 中的第一条是 : 【成见一】规则系统的手工编制(hand-crafted)是其知识瓶颈,而机器学习是自动训练的(言下之意:因此没有知识瓶颈)。 NLP(Natural Language Processing)主流对规则系统和语言学家大小偏见积久成堆,这一条可以算是万偏之源。随便翻开计算语言学顶级会议的论文,无论讨论什么语言现象,为了论证机器学习某算法的优越,在对比批评其他学习算法的同时,规则系统大多是随时抓上来陪斗的攻击对象,而攻击的理由往往只有这么一句话,规则系统的手工性决定了 blah blah(“其难以开发”, “其不能 scale up”,“其效率低下”,“其不鲁棒”,等等),或者干脆不给具体理由,直接说“文献【1】【2】【3】尝试了这个问题的不同方面,但这些系统都是手工编制的”,一句话判处死刑,甚至不用讨论它们的效果和质量。手工性几乎成了规则系统的“原罪”,编制这些系统的人因此成为学术共同体背负原罪的二等公民。 手工编制(hand-crafted)怎么了?在日常消费品领域,这是道地的褒义词,是特别的嘉奖,是批量机械化生产和千篇一律的反动,是独特和匠心的代表,是高价格理直气壮的理由。怎么到了NLP领域,突然就成了带有原罪的贬义词了呢。这是因为在NLP领域,代表主流的精算师们由于他们在NLP某些任务上的非凡成功,使得他们居功自傲,把成功无限推广和夸大,给这个community 施行了集体催眠术,让人相信机器学习是万能的。换句话说,批判手工编制的劣根性,其 隐含的前提是机器学习是万能的,有效的, 首选的。而实际情况是,面对自然语言的复杂性,机器学习只是划过了语言学的冰山一角,远远没有到主流们自觉和不自觉吹嘘的如入无人之地的万能境界。催眠的结果是不独不少语言学家以及NLP相关利益方(stake holders,如投资人和用户)被他们洗脑了,连他们自己也逐渐相信了自己编制的神话。 真实世界中,NLP 是应用学科,最终结果体现在应用软件(applications)上,属于语言软件工程。作为一个产业,软件工程领域吸引了无数软件工程师,虽然他们自嘲为“码工”,社会共同体给予他们的尊重和待遇是很高的 (Bill Gates 自封了一个 Chief Engineer,说明了这位软件大王对工匠大师的高度重视) 。古有鲁班,现有码师(coding master) 。这些 码工谁不靠手工编制代码作为立足之本呢?没听说一位明星工程师因为编制代码的手工性质而被贬损。同是软件工程,为什么计算语言学家手工编制NLP代码与其他工程师手工编制软件代码遭遇如此不同的对待。难道NLP应用比其他应用简单?恰恰相反,自然语言的很多应用比起大多数应用(譬如图形软件、字处理软件等等)更加复杂和艰难。解释这种不同遭遇的唯一理由就是,作为大环境的软件领域没有NLP主流的小环境里面那么多的傲慢和偏见。软件领域的大牛们还没有狂妄到以为可以靠自动编程取代手工编程。他们在手工编程的基础建设(更好的编程语言、编程架构和开发环境)上下功夫,而不是把希望寄托在自动编程的万能上。也许在未来的某一天,一些简单的应用可以用代码自动化来实现,但是复杂任务的全自动化从目前来看是遥遥无期的。不管从什么标准来看,非浅层的自然语言分析和理解都是复杂任务的一种。因此,机器学习作为自动编程的一个体现是几乎不可能取代手工代码的。规则系统的NLP应用价值会长期存在。 自动是一个动听的词汇。如果一切人工智能都是自动学习的,前景该有多么美妙。机器学习因为与自动连接在一起,显得那么高高在上,让人仰视。它承载着人类对未来世界的幻想。这一切理应激励自动学习专家不断创新,而绝不该成为其傲慢和偏见的理由。 在下面具体论述所谓规则系统的知识瓶颈软肋之前,值得一提的是,所谓自动是指系统的开发,不要混淆为系统的应用。在应用层面,无论是机器学习出来的系统,还是手工编制的系统,都是全自动地服务用户的,这是软件应用的性质决定的。这虽然是显而易见的事实,可确实有人被误导,一听说手工编制,就引申为基于规则系统的应用也是手工的,或者半自动的。 手工编制NLP系统是不是规则系统的知识瓶颈?毋庸讳言,确实如此。这个瓶颈体现在系统开发的周期上。但是,这个瓶颈是几乎所有大型软件工程项目所共有的,是理所当然的资源costs,不独为 NLP “专美”。从这个意义上看,以知识瓶颈诟病规则系统是可笑的,除非可以证明对所有NLP项目,用机器学习开发系统比编制规则系统,周期短而且质量高(个别的项目可能是这样,但一般而言绝非如此,下面还要详谈)。大体说来,对于NLP的浅层应用(譬如中文切词,专名识别,等等),没有三个月到半年的开发,没有至少一位计算语言学家手工编制和调试规则和至少半个工程师的平台层面的支持,是出不来系统的。对于NLP的深层应用(如句法分析,舆情抽取等),没有至少一年的开发,涉及至少一位计算语言学家的手工编制规则,至少半个质量检测员的协助和半个工程师的平台支持,外加软件工程项目普遍具有的应用层面的用户接口开发以及把开发出来的NLP引擎deploy到大数据上去的 operations 的投入,也是出不来 real life 的软件产品的。当然需要多少开发资源在很大程度上决定于开发人员(包括作为知识工程师的计算语言学家)的经验和质量。譬如让立委来开发中文系统(或英文、法文系统),就比找年轻语言学家快得多,以一当十绝不是自夸。其实,即便是10个新手,也未见得能做出立委的系统来,因为自然语言里面所牵涉到问题的复杂度不是拼时间就可以完成的。 计算语言学家编制规则系统与软件工程师编写程序没有本质不同。不过是所用的语言、形式框架和开发平台(language,formalism development platform)不同而已,系统设计和开发的测重点不同而已。 这就好比现代的工程师用所谓高级语言 Java 或者 C,与30年前的工程师使用汇编语言的对比一样,本质是一样的编程,只是层次不同罢了。 在为NLP特制的“高级”语言和平台上,计算语言学家可以不用为 memory allocation 等非语言学的工程细节所羁绊,一般也不用为代码的优化和效率而烦扰,他们的注意力更多地放在面对自然语言的种种复杂现象,怎样设计语言处理的架构和流程,怎样突破规则系统的框架与其他语言处理包括机器学习进行协调, 怎样平衡语言条件的宽窄, 怎样与QA(质量检测)协调确保系统开发的健康, 怎样保证语言学家团队编制规则的操作规范以确保系统的可持续性(data driven,unit testing,regression testing,code review,maintenability,baselines,等等等等),怎样根据语言开发需求对于现有形式框架的限制提出扩展要求,以及怎样保证复杂系统的鲁棒性等等 。一个领头的计算语言学家就是一个系统的架构师,系统的成败绝不仅仅在于语言规则的编制及其堆积,更多的决定于系统架构的合理性。不要把村干部不当干部,也不要把知识工程师(计算语言学家)不当工程师。很多人由于根深蒂固的偏见,把计算语言学家一律当作资料员,殊不知能够在NLP规则系统中统领项目的计算语言学家,绝不是只要知道某个语言的syntax这些皮毛就可以胜任的。明星工程师是软件企业的灵魂,NLP 规则系统的大规模成功也一样召唤语言工程大师。 关于知识瓶颈的偏见,必须在对比中评估。规则系统需要语言学家手工开发的资源投入,机器学习也同样需要资源的投入,不过是资源方式不同而已。真实的情况是这样的:自然语言处理需要语言学知识,把这些知识形式化是每个NLP系统的题中应有之义,机器学习绝不会自动免疫,无需知识的形式化。具体说,机器学习的知识瓶颈在于data,大量的大量的data。排除研究性强实用性弱的无监督学习(unsupervised learning),机器学习中可资开发系统的方法是有监督的学习(supervised learning)。有监督的学习能开发知识系统成为应用的前提是必须有大量的手工标注的数据,作为学习的源泉。机器学习的算法是自动的(算法的创新、调试和实现当然还是手工的,可这种手工被认为是最高级劳动,=),而语言学家的手工规则甚至系统架构则被认为是资料员的低端工作,损人与自夸,无出其右),但是大量的数据标注则是手工的(本来就有现成标注的不算,那是例外)。因此,机器学习同样面临知识瓶颈,不过是知识瓶颈的表现从需要少量的知识工程师变成需要大量的低端劳动者(懂得语言及其任务的大学生或中学生即可胜任)。马克思说金钱是一般等价物,知识瓶颈的问题于是转化为高级劳动低级劳动的开销和转换问题:雇佣一个知识工程师的代价大,还是雇佣10个大学生的代价大?虽然这个问题根据不同项目不同地区等因素答案会有不同,但所谓机器学习没有知识瓶颈的神话可以休矣。 另外,知识瓶颈的对比问题不仅仅是针对一个应用而言,而应该放在多应用的可移植性上来考察。我们知道绝大多数NLP应用的技术支持都源于从自然语言做特定的信息抽取。由于机器学习把信息抽取看成一个直接对应输入和输出的黑匣子,所以一旦改变信息抽取目标和应用方向,以前的人工标注就废弃了,作为知识瓶颈的标注工作必须完全重来。可是规则系统不同,它可以设计成一个规则层级体系,独立于领域和应用方向的语言学规则组件(parsers)以及在语言学之上的针对领域和应用的信息抽取规则子系统。结果是,在转移应用目标时候,底层的语言学组件基本保持不变,而只需要重新编写不同的信息抽取规则而已。实践证明,对于规则系统,真正的知识瓶颈在语言学组件的构建上,而信息抽取本身花费不多。这是因为前者需要应对自然语言变化多端的表达方式,把它逻辑化,而后者是建立在逻辑形式(logical form)上的规则,一条等价于底层规则的几百上千条。因此,从多应用的角度看,机器学习的知识成本最终会远远大于规则系统。 【系列姐妹篇】 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|12433 次阅读|11 个评论
[转载]无监督特征学习与deep learning
lysciart 2013-6-6 21:05
下文摘自 Rachel-Zhang 关于 深度学习的博客 原文网址 http://blog.csdn.net/abcjennifer/article/details/7804962 无监督特征学习——Unsupervised feature learning and deep learning 作者: Rachel-Zhang 无监督学习近年来很热,先后应用于computer vision, audio classification和 NLP等问题,通过机器进行无监督学习feature得到的结果,其accuracy大多明显优于其他方法进行training。 本文将主要针对Andrew的unsupervised learning,结合他的 视频 :unsupervised feature learning by Andrew Ng做出导论性讲解。 关键词: unsupervised learning , feature extraction , feature learning , Sparse Coding , Sparse DBN , Sparse Matrix , Computer Vision , Audio Classification , NLP Unsupervised feature learning and deep learning 是斯坦福大学机器学习大牛Andrew Y Ng. 近年来研究的主要领域,他在今年的一份工作 Building high-level features using large scale unsupervised learning 中就通过unsupervised learning解决了从only unlabeled data上建立高维feature detectors的问题。 =========================第一部分:传统方法Pattern Recognition========================= 通常的,我们进行pattern recognition是这样的: 对于不同类别的feature extraction都是必备的一部分,computer进行detection的 perception就是这样的: 下面分别就这三类问题,Object detectionAudio ClassificationNLP进行经典feature回顾: 人类的视觉系统、听觉系统 应该说是非常之complex,如果想要获得我们视觉系统看到的东西(computer perception),有两种方法: 一种方法就是描述出我们的视觉系统在观察object的时候提取的那些特征(比如各种不同物体间的parts在2D、3D中的内容,是哪些特征让我们看出物体的区别,object parts之间的连接关系等)。 另一种方法更为general,我们能否挖掘出一个general 的 算法,它可以揭示大多数perception的形成(换言之,就是揭示一种人眼从看到识别出的算法)。 不知道这里我讲明白没? 没的话可以参考下下面两段: We can try to directly implement what the adult visual (or audio) system is doing. (E.g., implement features that capture different types of invariance, 2d and 3d context, relations between object parts, …). Or, if there is a more general computational principal/algorithm that underlies most of perception, can we instead try to discover and implement that? 对于下面的audio,和图像是一样的道理,我们能不能用一种算法学习出其feature,对一幅图像或者一段audio进行描述? 对于图像,最直观的描述方法及就是用pixels,传统的方法为supervised learning, 给定一组正样本和一组负样本,通过提取feature训练进行学习,并进行识别测试: 不同于有监督学习,Unsupervised learning通过训练一些列有label的 和无label的 数据集 学习一幅图像中的feature (学习出什么样的feature是motocycle的,什么样的feature是car的)…… 那么,怎样学习有哪些feature呢?下面先介绍unsupervised learning中的一种方法——Sparse Coding,读者可以试着和前面我讲过的 压缩感知系列 相结合来想想看。 =================第二部分:Sparse Coding——A unsupervised learning Algorithm================= Sparse Coding 是 Unsupervised Learning Algorithm中的一种,可以用于Feature learning. 下面是我对Sparse Coding的解释,做的笔记…… 用Sparse Coding的例子进行说明。 比如在图像的Feature Extraction的最底层要做Edge Detector的生成,那么这里的工作就是从Natural Images中randomly选取一些小patch,通过这些patch生成能够描述他们的”基“,也就是右边的8*8=64个basis组成的basis(具体选取基的方法可以参考我的两篇文章—— 压缩感知初识 及 压缩感知之HelloWorld ),然后给定一个test patch, 我们可以按照上面的式子通过basis的线性组合得到,而sparse matrix就是a,下图中的a中有64个维度,其中非零项只有3个,故称”sparse“。 这里可能大家会有疑问,为什么把底层作为Edge Detector呢?上层又是什么呢?这里做个简单解释大家就会明白,之所以是Edge Detector是因为不同方向的Edge就能够描述出整幅图像,所以不同方向的Edge自然就是图像的basis了…… 而上一层的basis组合的结果,上上层又是上一层的组合basis……(具体请往下看) 如下图所示: 其他的例子同理:注意看下面的文字(第二条) 下图所示为从为标号的audio上学习出的20个基函数(如小波变换): ===================第三部分:Learning Features Hierachy Sparse DBN=================== 所建立的自动feature学习过程是一个自底向上逐渐学习features的sparse coding过程: 以Sparse DBN:Training on Faces为例,这里从下向上依次是上图的hierarchy的Input Image,Model V1(Edge Detector),Model V2(Object Parts),Model V3(Object Models),具体讲解见下面我做的笔记: 下面是对上图的解释,请对照着看: 图中所示最下方的24个basis function用于Edge Detection, 比如最左上角的那个基用于检测85°的edge; 中间的32个基(Object Parts)分别是 eye detector, nose detector……其之所以为基是因为,一张face可有这些parts组合而成; 最上面一层的24个基就是face model了。 ========================== 在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了: 当训练数据由4类图像组成时,上层提取出的feature会不同,最终生成的object model也会包含4类图像特定的模型: 下图是动作识别上,不同算法的准确率比较: Sparse DBN on Audio同理,对于一个Spectrogram,逐层提取feature过程如下图所示: ===================第四部分:技术问题——Scaling Up=================== 进行Pattern Recognition的一个重大问题就是特征提取,而上面这幅图中我们可以看出不同算法在Features数目不同的情况下,其 交叉验证(Cross Validation在ML第六课中讲过) 的Accuracy,可见feature越多,给出的参考信息越多,所得accuracy一般越好。那么,有哪些方法进行feature的挖掘使得scaling up呢?有兴趣的可以研究研究,互相交流下哈! ===================第五部分:Learning Recursive Representations =================== 这部分我们主要以NLP为例,看一下怎么样递归的进行语义分析,自然语言组成: 首先我们看下用多维向量(图中简化为2维)表示一个单词的形式: 一句话:The cat sat on the mat. 进行自底向上的feature学习,可以发现,有的neuron上有意义,如图中箭头所指的那个neuron就不make sense. training process:Parsing a Sentence 就这样recursively选择make sense的neuron成为该层新的神经元: 我们在每层选取有意义的神经元后建立起最终的句型: 好了,说完了NLP的parsing sentence问题,我们回头来看image processing(IP), 其实, 他们的道理相同,都是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature 。该图中,上面是NLP,下面是IP。 ===================小结 =================== 最后我们对Unsupervised feature Learning做一个小结: • Features 由 机器学习 ,而非人为指定 • 找到perception下隐藏的feature基 • Sparse coding 和 deep learning在CV和Audio Recogization上的识别率非常好,几乎是state of art的程度。 Reference : http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial Deep Learning Sparse DBN (Deep Belief Nets) A tutorial on Deep Learning
个人分类: 机器学习|8451 次阅读|0 个评论
人工神经网络简介
热度 4 Jeppeyu 2013-6-6 14:06
最近在研究Deep Learning在个性化推荐中的应用,由于DL跟神经网络有很大的关系,索性开篇就介绍下神经网络和自己所了解到的知识。接触ML时间不是很长,难免有描述不当的地方,旨在于交流学习,有啥想法直接后面回复。 在这篇博文中,你将会看到如下知识: 神经网络的基本模型,前向神经网络(Feed-forward neural network),General Feed-forward NN 的组件,优化目标函数,逆向误差传播算法。 “ 根据一个简化的统计,人脑由百亿条神经组成 ― 每条神经平均连结到其它几千条神经。通过这种连结方式,神经可以收发不同数量的能量。神经的一个非常重要的功能是它们对能量的接受并不是立即作出响应,而 是将它们累加起来,当这个累加的总和达到某个临界阈值时,它们将它们自己的那部分能量发送给其它的神经。大脑通过调节这些连结的数目和强度进行学习。尽管 这是个生物行为的简化描述。但同样可以充分有力地被看作是神经网络的模型。 ” 人的大脑是非常复杂的,特别是大脑神经系统,可以说没有它,大脑就是一些组织,细胞而已。在机器学习领域,对神经网络的研究应该是希望从大脑的工作机制和神经系统结构中获得启发,一方面可以设计高效的学习算法,让机器也能够对问题进行大规模学习,另一方面可以从神经元的并行工作方式中得到启发,设计高效的并行计算算法,让机器拥有更强的实时处理大规模数据的能力。 在这里就不介绍生物上的神经网络了,一来是不懂,二来这里的神经网络一概指 机器学习领域的神经网络模型(人工神经网络),如果你对这个生物的神经网络感兴趣的话,可以参考 《A Brief Introduction to Neural Networks · D. Kriesel》 ,这篇文章有讲到不同类型的神经网络,大多数跟生物神经系统的基本结构有关系。在机器学习领域的神经网络一般会指 前向传播神经网络 (Feed-forward neural network),这种模型较为通用。 人工神经网络的基本模型 前向神经网络 上图描述的是一个目前研究最为成熟Shallow 结构的神经网络(只含有单层隐藏层神经元的结构)。第一层为输入层 (input layer ),第二层称为隐藏层 ( hidden layer ),最后一层为输出层( output layer )。神经元之间都是由低层出发,终止于高层神经元的一条有向边进行连接,每条边都有自己的权重。每个神经元都是一个计算单元,如在Feed-forward neural network 中,除输入层神经元外,每个神经元为一个计算单元,可以通过一个计算函数 f() 来表示,函数的具体形式可以自己定义,现在用的较多的是 感知器计算神经元,如果你对感知器有所了解的话,理解起来会容易很多。 可以计算此时神经元所具有的能量值,当该值超过一定阀值的时候神经元的状态就会发生改变,神经元只有两种状态,激活或未激活。在实际的人工神经网络中,一般是用一种概率的方式去表示神经元是否处于激活状态,可以用 h(f) 来表示,f 代表神经元的能量值,h(f) 代表该能量值使得神经元的状态发生改变的概率有多大,能量值越大,处于激活状态的概率就越高。到这部分你已经接触到了关于神经网络的几个基本术语,下面用更加规范的符号来表示,神经元的激活值(activations) f() ,表示计算神经元的能量值, 神经元的激活状态 h(f) ,h 表示激活函数。 激活函数有好几种形式,这里列举两种, General Feed-forward NN 的组件 假设有 包涵有N个样本的数据集 = { (X1,T1) , (X2,T2) , (X3,T3)...... (Xn,Tn)} ,其中T的取值可以根据你的任务不同而不同,比如你要用神经网络进行回归分析,T ( target value)就是一个连续值,如果你面对的是一个回归问题的话,T 的取值就是离散的,比如二分类问题 T = { 0,1 },输入样本的每个观测值(Observation) Xi 都具有相同的维度数量 m ,与之对应的输入层的神经元个数也为 (m + 1)个,包含有一个偏置神经元( bais unit )。 这里采用了Andrew Ng的 Deep Learning tutorials 上的符号系统。n l表示神经网络具有的总层数, 表示最后一层神经网络,下标就是表示第几层,L 1 表示第一层,也就是输入层。低层与高层的神经元之间都是通过带权重的单向边进行连接,(W,b)表示整个神经网络中的参数,W 表示连边的权重,b表示偏置。在上图中(W,b) = (W (1) ,b (1) ,W (2) ,b (2) ),上角标表示第 i 层与(i + 1)层之间的权重系数矩阵(如无特殊说明,下文中的上角标都表示层号,当然对于系数矩阵和神经元来说,上角标的意思是不太一样的), 表示第L层的第 j 个神经元与第 L + 1 层的第 i 个神经元之间的权重系数。在上图的例子中 , 。 该部分采用向量化的表述方式,这个为后面的向量化编程会带来非常大的好处,不用一个一个的去记哪个跟哪个权重系数对应,直接一个矩阵,非常简洁。整个神经网络可以用一个函数 h W,b (x) 来表示。 接着来看下跟每个神经元都相关的符号, 表示第L层的第i个神经元的激活状态(activations),该过程是非线性操作,这个概念非常重要,要牢记。当L = 1的时候,可以认为 就是等于输入神经元的值, 表示该神经元具有的能量值。 到此为止,你已经可以掌握一个神经网络中的基本符号和表示方法,尽快熟悉这些符号,在你的脑子里面神经网络已经不再是抽象的神经元之间的连接方式了,可以通过上述的符号来刻画,这对后面公式的理解会有很大的帮助。 下面来看下神经网络的基本成分( neural network components) 对线性模型 (Linear Model ) 比较了解的人应该非常熟悉这个公式 线性模型可以表示成有限个基函数(basis function)的线性融合,基函数 的形式可以自己定义,举个简单的例子, 可以是关于输入 m 次幂的多项式 x^m(顺便吐槽一下,这里敲公式实在麻烦)。实际上神经网络也可以看成是一些线性函数的叠加,不过中间有了一个激活函数,情况就变得跟线性模型不一样了。还是以FNN(Feed-forward Neural Network)为例对除输入层之外的每个神经元进行 的操作就可以得到神经元的能量值,每个神经元的激活状态就可以表示成 ( 非线性操作 ) ,下面对整个网络进行同样的操作就可以得到 上述过程的向量化表示,这里的f和h函数就都变成了向量函数,如 f( ) = 到该部分,你已经基本掌握了一个神经网络的结构,如何执行得到输出,但是还差如何去训练得到我们的参数 (W,b)。上面都是以单隐藏层的神经网络而且输出只有一个神经元,如果你知道了如何去训练这个简易的神经网络,那下面这个看起来更复杂一些的例子你同样知道该如何去训练。 优化目标函数 这个是在用机器学习方式为问题建模的第二部,确定你的损失函数(Loss Function),也就是你的优化目标。该过程会涉及到一些基本的优化方法,统计学概念以及一些实际的应用经验。当然如果你跟我一样是刚接触机器学习(Machine Learning)不久的话,了解了一些关于梯度优化方法的话,你就能掌控这里的一切啦。 假设我们有m个样本 ,这里采用的是二次平方和最小化 (最小二乘)作为损失函数(关于损失函数的类型可以参考《统计学习方法》- 李航) ,用该公式表示损失函数 ,在实际优化目标函数需要表示成如下形式,比上面的公式多了一个 +好后面的内容,该项也称作 weight decay,该部分是起正则作用,防止过拟合。 之所以采用二次损失函数,我想应该是为了构建一个具有 convex 性质的目标函数,便于使用梯度优化的方法寻找最优值。下图就是在参数(w,b)下的误差曲面(error surface)。 下面公式表示了权重系数更新的方式,也就是为了找到一个使得目标函数最小值的系数 (w,b) 。在整个优化的过程中,最重要的就是如何求解不同 的梯度信息,为了求解这个东西,又要来一个新的概念了,逆误差传播(error backpropagation)学习算法。机器学习的问题总是会这样,找到优化目标以后,就需要相应的学习算法寻找最优值,此时的系数就是我们所要选择的模型的参数了。 逆向误差传播算法 (error backpropagation) 如其名,该方法就是让输出层的y 与 输入 x 的误差往回传播。因为我们在求每个参数的梯度的时候是通过对真值与预测值之间的误差项求导得到的,对于输出神经元还可以做到,但是我们无法获取隐藏层的真值,这就造成了隐藏层的神经元梯度不可求的尴尬局面。还好领域大牛们想到了这种方式,让输出层的误差往回传播,计算出底层神经元的激活状态要为该误差付出多大的责任,也可以理解成该神经元的误差值,用 表示, 表示输出层神经元的误差。 逆误差传播算法执行过程: 1,先执行一次前向传播,计算出每一层的神经元的激活值 ,直到输出层为止 2,对于每一个输出层神经元,采用如下方式计算误差(实际上在Andrew的资料中省略了很多推到部分,该部分我后面会放上,你们先理解个大概过程) 3,对于较低层的神经元的误差用如下公式进行表示, 4,关于不同参数的梯度 下面来看下 项的具体推导过程。 PS:其实要想更好的理解该推导过程可以参考《Pattern Recognition and Machine Learning》中5.3节部分关于估计误差函数梯度的内容,由于里面采用的符号系统跟Andrew的是相反的,我就没有放上来,借用了一个简易的推导过程。 摘自《Deep Learning 教程中文版》--邓侃老师主导,各路英雄好汉共同翻译 下面来看一个利用神经网络拟合不同函数(Linear Regression)的例子,你可以在《Pattern Recognition and Machine Learning》的5.1节中找到。4副图分别对应四个不同的函数,红色的实线表示利用神经网络拟合的函数,圆点表示原函数生成的样本点,虚线表示不同的神经元在对应于不同 x 取值的输出值,几条虚线经过线性添加后得到的就是拟合后的曲线。 总结: 1,简易的神经网络结构并不复杂,但在实际训练一个神经网络的时候是会遇见很多问题的,比如 选择线上梯度下降还是Batch梯度下降 ,隐藏层神经元个数的选择, 是选择多层神经网络还是单层。这些都需要多多实践才行。 2,从理论上来讲,神经网络是可以拟合任何函数,但实际上并非如此。就我个人的实际经验来看,对于某些数据神经网络是失败的。 3,模型不是万能,还需要做很多功课。 #梯度信息在训练 NN 中的使用 #Batch 梯度上升和线上梯度上升的比较 理解了该部分的神经网络知识对后面理解深度神经网络会很大帮助,包括其中的优化方法,能量模型(Energy-based Model),以及RBM(EBM的一个特例) 参考文献: 《Pattern Recognition and Machine Learning》 Andrew Ng's Wiki Page http://deeplearning.stanford.edu/wiki/index.php/Neural_Networks http://www.cppblog.com/billhsu/archive/2008/08/30/60455.html Geoff Hinton's Coursera Lectures https://d396qusza40orc.cloudfront.net/neuralnets/lecture_slides%2Flec1.pdf
个人分类: 机器学习|35660 次阅读|8 个评论
机器学习与深度学习
cuncaoxin 2013-5-17 12:51
5月14日《中国青年报》青年调查版刊载一篇文章,文中提到两个计算机科学术语“深度学习(Deep Learing)”与“机器学习(Machine Learning)”,深度学习是计算机科学机器学习领域的一个新兴研究方向,它致力于让机器掌握学习能力,模拟人脑进行分析学习,认知图像、声音和文本等数据。 业内人士指出机器学习是人工智能的核心,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。深度学习是机器学习研究中的一个新的领域,它被引入到机器学习中使机器学习更接近于其原始的目标——人工智能,因此,近年来非常火爆。 正如2012年12月29日《纽约时报》的头版报道一样 ( http://article.yeeyan.org/view/371738/341235 ),“ 深度学习让机器执行人类的活动,如看、听和思考,可以模式识别提供了可能性,促进了人工智能技术的进步。”。目前业内已有很多参与者了解到了深度学习这一人工智能前沿技术在中国的发展与应用。 深入学习根源于 传统的“神经网络”, “神经网络” 可以追溯到20世纪 五十年代后期。 当时,弗兰克·罗森布拉特试图建立一种类似机械 大脑的感知器,可以“ 感知,识别,记忆,像人的思维做出 响应的机器”。 在一定范围内 这个系 统能够识别一些基本的形状,如三角形和正方形。 人们对它的潜力寄予厚望 ,甚至 宣称 卓越的机器能够思考。 ” 中青报的文章在结尾一段给出当今深度学习专业研究机构的第一阵营,“除了斯坦福大学等高校研究机构外,唯有百度、IBM、谷歌、微软四家企业设立了专门研究机构。”
个人分类: 技术创新|2918 次阅读|0 个评论
机器学习 --- 4. 大内密探HMM(隐马尔可夫)围捕赌场老千
热度 5 ppn029012 2013-5-16 04:23
1. 赌场风云(背景介绍) 最近一个赌场的老板发现生意不畅,于是派出手下去赌场张望。经探子回报,有位大叔在赌场中总能赢到钱,玩得一手好 骰子 ,几乎是战无不胜。而且每次玩骰子的时候周围都有几个保镖站在身边,让人不明就里, 只能看到每次开局,骰子飞出 ,沉稳落地。老板根据多年的经验,推测这位不善之客使用的正是江湖失传多年的偷换骰子大法”(编者注: 偷换骰子大法,用兜里自带的骰子偷偷换掉均匀的骰子 )。老板是个冷静的人,看这位大叔也不是善者,不想轻易得罪他,又不想让他坏了规矩。正愁上心头,这时候进来一位名叫HMM帅哥,告诉老板他有一个很好的解决方案。 不用近其身,只要在远处装个摄像头,把每局的骰子的点数都记录下来。 然后HMM帅哥将会运用其强大的数学内力,用这些数据推导出 1. 该大叔是不是在出千? 2. 如果是在出千,那么他用了几个作弊的骰子? 还有当前是不是在用作弊的骰子。 3. 这几个作弊骰子出现各点的概率是多少? 天呐,老板一听,这位叫HMM的甚至都不用近身,就能算出是不是在作弊,甚至都能算出别人作弊的骰子是什么样的。那么,只要再当他作弊时,派人围捕他,当场验证骰子就能让他哑口无言。 2. HMM是何许人也? 在让HMM开展调查活动之前,该赌场老板也对HMM作了一番调查。 HMM(Hidden Markov Model), 也称隐性马尔可夫模型,是一个概率模型,用来描述一个系统 隐性状态 的转移和 隐性状态 的表现 概率。 系统的隐性状态 指的就是一些外界不便观察(或观察不到)的状态, 比如在当前的例子里面, 系统的状态指的是大叔使用骰子的状态,即 {正常骰子, 作弊骰子1, 作弊骰子2,...} 隐性状态的表现 也就是, 可以观察到的,由隐性状态产生的外在表现特点。这里就是说, 骰子掷出的点数. {1,2,3,4,5,6} HMM模型将会描述,系统 隐性状态的转移概率 。也就是大叔切换骰子的概率,下图是一个例子,这时候大叔切换骰子的可能性被描述得淋漓尽致。 很幸运的,这么复杂的概率转移图,竟然能用简单的矩阵表达, 其中a_{ij}代表的是从i状态到j状态发生的概率 当然同时也会有, 隐性状态表现转移 概率。也就是骰子出现各点的概率分布, (e.g. 作弊骰子1能有90%的机会掷到六,作弊骰子2有85%的机会掷到'小’). 给个图如下, 隐性状态的表现分布概率也可以用矩阵美丽地表示出来, 把这两个东西总结起来,就是整个HMM模型。 这个模型描述了隐性状态的转换的概率,同时也描述了每个状态外在表现的概率的分布。总之,HMM模型就能够描述扔骰子大叔作弊的频率(骰子更换的概率),和大叔用的骰子的概率分布。有了大叔的HMM模型,就能把大叔看透,让他完全在阳光下现形。 3. HMM能干什么! 总结起来HMM能处理三个问题, 3.1 解码(Decoding) 解码就是需要从一连串的骰子中,看出来哪一些骰子是用了作弊的骰子,哪些是用的正常的骰子。 比如上图中,给出一串骰子序列(3,6,1,2..)和大叔的HMM模型, 我们想要计算哪一些骰子的结果(隐性状态表现)可能对是哪种骰子的结果(隐性状态). 3.2 学习(Learning) 学习就是,从一连串的骰子中,学习到大叔切换骰子的概率,当然也有这些骰子的点数的分布概率。这是HMM最为 恐怖 也最为 复杂 的招数!! 3.3 估计(Evaluation) 估计说的是,在我们 已经知道 了该大叔的HMM模型的情况下,估测某串骰子出现的可能性概率。比如说,在我们已经知道大叔的HMM模型的情况下,我们就能直接估测到大叔扔到10个6或者8个1的概率。 4. HMM是怎么做到的? (这章需要概率论,递归,动态规划的知识, 如果不感兴趣可以跳着第5节) 4.1 估计 估计是最容易的一招,在完全知道了大叔的HMM模型的情况下,我们很容易就能对其做出估计。 现在我们有了大叔的状态转移概率矩阵A,B就能够进行估计。比如我们想知道这位大叔下一局连续掷出10个6的概率是多少? 如下 这表示的是,在一开始隐性状态(s0)为1,也就是一开始拿着的是 正常的骰子 的情况下,这位大叔连续掷出10个6的概率。 现在问题难就难在,我们虽然知道了HMM的转换概率,和观察到的状态V{1:T}, 但是我们却不知道实际的隐性的状态变化。 好吧,我们不知道隐性状态的变化,那好吧,我们就先 假设 一个 隐性状态序列 , 假设大叔前5个用的是正常骰子, 后5个用的是作弊骰子1. 好了,那么我们可以计算,在这种隐性序列假设下掷出10个6的概率. 这个概率其实就是,隐性状态表现概率B的乘积. 但是问题又出现了,刚才那个隐性状态序列是我假设的,而实际的序列我不知道,这该怎么办。好办,把 所有可能出现 的隐状态序列组合全都试一遍就可以了。于是, R就是所有可能的 隐性状态序列的集合。 的嗯,现在问题好像解决了,我们已经能够通过尝试所有组合来获得出现的概率值,并且可以通过A,B矩阵来计算出现的总概率。 但是问题又出现了,可能的集合太大了, 比如有三种骰子,有10次选择机会, 那么总共的组合会有3^10次...这个量级O(c^T)太大了,当问题再大一点时候,组合的数目就会大得超出了计算的可能。所以我们需要一种更有效的计算P(V(1:T)概率的方法。 比如说如下图的算法可以将计算P(V1:T)的计算复杂度降低至O(cT). 有了这个方程,我们就能从t=0的情况往前推导,一直推导出P(V1:T)的概率。下面让我们算一算,大叔掷出3,2,1这个骰子序列的可能性有多大(假设初始状态为1, 也就是大叔前一次拿着的是正常的骰子)? 4.2 解码(Decoding) 解码的过程就是在给出一串序列的情况下和已知HMM模型的情况下,找到最可能的隐性状态序列。 用数学公式表示就是, (V是Visible可见序列, w是隐性状态序列, A,B是HMM状态转移概率矩阵) 还记得以下公式, 然后又可以使用 估计(4.1) 中的 前向推导法 ,计算出最大的P(w(1:T), V(1:T)). 在完成前向推导法之后,再使用 后向追踪法 (Back Tracking),对求解出能令这个P(w(1:T), V(1:T))最大的隐性序列.这个算法被称为维特比算法(Viterbi Algorithm). 4.2.1 维特比算法找寻最有可能的隐性序列 这是动态规划算法的一种, 解法都是一样的, 找到递归方程后用前向推导求解.然后使用后向追踪法找到使得方程达到最优解的组合. 以下是一个计算骰子序列{1,2,6}最有可能的隐性序列组合.(初始状态为1=正常骰子,) 4.3 学习(Learning) 学习是在给出HMM的结构的情况下(比如说假设已经知道该大叔有3只骰子,每只骰子有6面),计算出最有可能的模型参数. 在假设完HMM的结构以后,就可以使用EM(Expectation Maximization) 算法最大化Likelihood. 这里的最大似然是, 我们要做的就是,找到能使似然最大的函数.所以这个问题又转化成了最大似然估计问题(MLE). 在MLE问题中需要估计隐含参量时,就需要用到EM算法(EM具体算法推导可参考 JerryLead的博客 )进行估计. 因为太过于复杂,我在这就不介绍了. 5. HMM 的应用 以上举的例子是用HMM对掷骰子进行建模与分析。当然还有很多HMM经典的应用,能根据不同的应用需求,对问题进行建模。 但是使用HMM进行建模的问题,必须满足以下条件, 1. 隐性状态的转移 必须满足马尔可夫性。(状态转移的马尔可夫性:一个状态只与前一个状态有关) 2. 隐性状态必须能够大概被估计。 在满足条件的情况下,确定问题中的 隐性状态是什么 ,隐性状态的 表现 可能又有哪些. HMM适用于的问题在于,真正的状态(隐态)难以被估计,而状态与状态之间又存在联系。 5.1 语音识别 语音识别问题就是将一段 语音信号 转换为 文字序列 的过程. 在个问题里面 隐性状态就是: 语音信号对应的文字序列 而显性的状态就是: 语音信号. HMM模型的学习(Learning): 语音识别的模型学习和上文中通过观察骰子序列建立起一个最有可能的模型 不同 . 语音识别的HMM模型学习有两个步骤: 1. 统计文字的发音概率,建立隐性表现概率矩阵B 2. 统计字词之间的转换概率(这个步骤并不需要考虑到语音,可以直接统计字词之间的转移概率即可) 语音模型的估计(Evaluation): 计算是十四”,四十四等等的概率,比较得出最有可能出现的文字序列. 5.2 手写识别 这是一个和语音差不多,只不过手写识别的过程是将字的图像当成了显性序列. 5.3 中文分词 “总所周知,在汉语中,词与词之间不存在分隔符(英文中,词与词之间用空格分隔,这是天然的分词标记),词本身也缺乏明显的形态标记,因此,中文信息处理的特有问题就是如何将汉语的字串分割为合理的词语序。例如,英文句子:you should go to kindergarten now 天然的空格已然将词分好,只需要去除其中的介词“to”即可;而“你现在应该去幼儿园了”这句表达同样意思的话没有明显的分隔符,中文分词的目的是,得到“你/现在/应该/去/幼儿园/了”。那么如何进行分词呢?主流的方法有三种:第1类是基于语言学知识的规则方法,如:各种形态的最大匹配、最少切分方法;第2类是基于大规模语料库的机器学习方法,这是目前应用比较广泛、效果较好的解决方案.用到的统计模型有N元语言模型、信道—噪声模型、最大期望、HMM等。第3类也是实际的分词系统中用到的,即规则与统计等多类方法的综合。” 使用HMM进行中文分词. 5.4 HMM实现拼音输入法 拼音输入法,是一个估测拼音字母对应想要输入的文字(隐性状态)的过程(比如, ‘pingyin’ - 拼音) 使用HMM实现简单拼音输入法
个人分类: 机器学习|8101 次阅读|9 个评论
机器学习 --- 3. 贝叶斯怎么想
热度 14 ppn029012 2013-5-13 08:37
“ 贝叶斯公式是可以支配一切知识,一切信息的法则 ”. --- Christoph Fuchs 1. 我们是怎么推测未知事物的 贝叶斯公式我们都学过(如果没学过,请了解一下条件概率”),就是一个条件概率的转换公式,如下 这么的一个简单的公式为什么能引起科学上的革命? 这是一个统计学上的公式,但是却被证明是人类唯一能够运用自如的东西。伯克利大学心理学家Alison Copnik早在2004年就证明”Bayesian统计法是儿童运用的唯一思考方法,其他方法他们似乎完全不会”。 贝叶斯式的思考是什么样的? 举个例子, 你在北京798艺术区远远地看到一个人在地上爬,你很奇怪那到底是什么。于是你的大脑 可能联想产生了3种假想 ( 大脑真的就是那么工作的) , h1 = 那是疯子 h2 = 那是狗 h3 = 那是艺术家 那么这三种假想哪个更有可能? 更准确地说就是,在 给出了 事实(Evidence) {某人在798上爬}的情况下,哪种假想更有可能? P(h1|E), P(h2|E), P(h3|E).哪个更大些? 于是你的脑子开始启动贝叶斯程序, 计算比较这三个的概率到底哪个更大. 因为P(E)对于三个式子来说都是一样的,所以贝叶斯公式可以看成 先看看P(h)是什么? P(h)在这个公式里被叫做 先验概率 ,描述的是你对某个假想h的致信程度.(不用考虑当前的事实是什么) P(h1) = 出现疯子的可能性,(根据你的经历, 你很少在北京街头看到疯子) 可能性: 较 小 P(h2) = 在798艺术区出现一条狗的概率,(老看到有人溜狗) 可能性: 高 P(h3) = 在798出现艺术家的概率,(798里应该总能看到) 可能性: 高 P(E|h)是什么呢?它表达的是,你的 假想 产生 这个 事实 的可能性有多大? P(E|h1) = 人疯了( 假设假想h1成立 )可能会在798爬来爬去的概率. 可能性: 高 P(E|h2) = 假如那就是一条狗, 你却能看成一个人在地上爬的景象 可能性: 0 (极低) P(E|h3) = 假如那个人就是艺术家, 他在地上爬进行行为艺术的可能 可能性: 高 最后把两个概率相乘就能得到三个假想在当前事实面前发生的概率。 P(h1 | E ) = 小 (你的设想(出现疯子)发生的概率太 小 了,虽然疯子很有可能在这爬来爬去,所以最后总的概率还是很小) P(h2 | E ) = 小 (你的假想(出现狗)发生的概率还挺大,但是你没法否认眼前看到的是人这个事实, 所以概率又变得很小) P(h3 | E ) = 高 (你的假想(出现艺术家)的概率挺大,而且艺术家干这种事还是能干得出来的,所以总的概率并不小) 所以人在利用贝叶斯公式进行推测一件事情的时候,其实就是在权衡你脑中 产生假设本身的可能性 和这种假设可能产生眼前的事实可能性之间的关系,如果两种可能都很大,那么这件事才会让自己信服。 这些P(h), P(h | E)都是我们从平时经历的事情中总结得到的结果( 经验) ,而且甚至非常因人而异,比如P(h1) 在疯人院的职工看来,他们对出现疯子这件事情见怪不怪,所以P(h1)在他们的脑里可以是个很大的值。 而P(E | h3) 在某些老人的眼里,艺术家都是那种很正常,每天唱红歌的那种人,所以艺术家很少可能会在街上爬啊爬,所以这些时候,他们更相信眼前出现的人是个疯子。 总而言之 ,贝叶斯做为一种统计法,善于统计和利用 历史的 经验,来对 未遇到 过的情况做出推测。你可以使用你历史的记忆的碎片 组合 成新的情况。就像你未必见过艺术家在798里匍匐前进,但是你却在798见过艺术家,而且从别的地方(电视上)看到过艺术家一些匪夷所思的艺术行为,所以你真的遇到这种场景的时候,就能够利用联想,并用经验去验证联想的结果,推断出这是一个艺术家的行为。 2. 什么是违反你直觉的? 上一部分介绍的是人们怎么利用一些经验和贝叶斯去解决一些生活中的问题。但是有些问题会使你产生直觉上的错误, 这时候,贝叶斯更能去帮助你 纠正 这些直觉上的错误。 问题: http://yudkowsky.net/rational/bayes 里的一个问题,某地区有一台 乳腺癌检测仪 : 一个地区的女性乳腺癌发病率为1%. 已经患乳腺癌的人里面会有80%会被仪器正确地检测出”某指数”呈 阳性 . 但有9.6%的正常人也被检测出”某指数”成 阳性 . 此地区一妇女去体检,很不幸被检测出了”某指数”呈 阳性 。你做为一个医生,你觉得这名女性患乳腺癌的概率是多少? 很多人会 第一时间 地认为,既然80%的患者能被正确的检测出来,那么这台机器的准确率也就是80%. 那么既然已经被检测出患病,那么她患病的概率应该为80%左右。即使有9.6%的正常人的误检率,那么患病率的也应该不低于 70%. (其实有85%的医生也是这么认为的,如果我去看病我肯定自杀了...) 事实真的是这样吗? 让我们用贝叶斯计算一下, 天呐,才7.76% ,为什么这么低?我们的直觉为什么出错了? 如果我 换一种说法 ,这个问题就不容易产生错觉。 有1000人去体检,有10人真的患病, 这10个人里有8个能被检测出 阳性 . 还有剩下的990个正常人里, 有95个人也被误检测呈 阳性 。 现在再问你,有一妇女被检测出了 阳性 , 那么你觉得这个结果准确的概率是多少? 这时候,你做出判断时就会更加谨慎。你会觉得103个被检测出阳性的人里面,只有8个人真正地得了病,那么这位妇女患病的几率其实并不是太高的。 我们直觉出错的原因在于,我们把 先验概率 忽略了。虽然只有9.7%的正常人被误检成阳性了,但是正常人的数量是患者数量的90倍有余,那么误检的人就有很多很多。其数量远远大于80%的患者。 所以这件事情再次告诉我们,如果你在制造一台检测仪的话,不仅要提高 对患者的检测率 ,而且也需要提高对正常人的 排查率 ,这样才能使得这台机子的结果让人信服。 再次总而言之,这个部分又告诉了我们一个重要的事实,我们不能对一件事情 因果倒置,两件事不能混为一谈 。原因产生结果,但是结果往往是不能对原因起直接作用的。表现在这里,就是因果倒置的概率发生了剧烈的变化。 3. 贝叶斯与因果 假如两件事之间存在因果关系,我们能不能用贝叶斯来分析这两件事情之间相互影响的程度呢?当然可以, 条件概率 就能说明他们之间的 影响程度 。 例如,患病会引起某项指数呈阳性。通过条件概率,就可以知道患病的人,有多少会造成某指数阳性. 那么可以求 P(阳性 | 患病) 相反,引起阳性的众多原因中,想知道患病占多少,于是我们就可以通过求  P(患病 | 阳性) 下图就是分析在产生阳性的原因中,患病产生阳性的比重是多少。 3.1 能不能从概率中推导出因果关系? 有时候因为因果互换以后的条件概率变化非常大,那么是不是能从统计的概率中就得到这两件事情之间的关系? 很遗憾,概率只能间接地表现因果关系,但是很难从概率中得到准确的关系图表。
12334 次阅读|25 个评论
机器学习 --- 2.从最大似然再看线性回归
热度 1 ppn029012 2013-5-10 01:43
1. 线性回归的回顾 上一节我们尝试解决“房价与房子大小”之间关系的时候,使用了线性回归去拟合一个线性的方程,使得这个线性方程与所获得的 房价 与 房大小 数据最大限度地吻合。 所以,我们的问题的解决思路是, 把数据当成事实 用一个特定的模型(e.g.线性方程或非线性方程)去匹配数据 这些数据被当成了 上帝 ,而让我们用模型去匹配他们。数据就是事实,当误差很大时,只能说明模型不够好,仍需努力来匹配我们的数据。 2. 换个角度看线性回归 刚才是数据是事实,换个角度来看,数据应该是事实的一个表现。也就是”房价 数据 ”应该是“ 房价与房子大小关系 ”的一个表现。现在假设北京某地房价和房子大小之间关系已经确定了 房价=房子大小*500, 但是我们不知道,现在拿到了5个数据, (500, 1), (502, 1), (1510, 3), (1120, 2), (1500, 2). 会发现这5个数据并不符合关系。这是为什么,这是因为这些数据里面并不仅仅包含了房价”与房子大小”之间的关系,还很可能包含了, 房价”与“新旧”,“房屋”与“朝向”,“房屋”与“小区环境”...等等各种因素,而且这些因素很可能是可以观察到,也有可能是观察不到的。 所以说想 完美准确 的预测房价与房子大小的关系是 有可能的!! 只要找出所有影响房价的因素. 找到所有影响房价的因素这是 不可能的 !! 所以我们可能勉为其难,只需要一个最近似的关系就好了,所以只要把其他因素都看成是一些与房子大小无关的小噪声就好了。于是, y就是我们的房价,f(x)就是房价与房子大小之间的关系,\epsilon就是一些与房子大小无关的小噪声,当然,因为 \epsilon 是一个随机的东西,我们可以用随机变量E来表示它, 3.最大似然 无论如何, 现在我们有了一串X,Y,就可以尝试地找出一个最有可能的f(x)去拟合数据了。 什么叫最有可能? 假如有M个f(x), 那么我们需要评估哪个模型最有可能产生这一串数据D (Y, X). 可能性应该用概率来表示, 是f(x)的参数, 如果这些数据与数据之间是 独立 的,就有 下面这个方程,表示了模型产生数据X,Y的可能性 因为X,Y已经确定了,现在要使得可能性最大,我们只能通过调整的值了。 对任意一个数据,(xi, yi),我们可以计算 现在要计算一个模型产生数据的可能性,我们只要知道这个模型预测值与实际值之间的误差 ,和这个噪声随机变量E的分布就可以了。 解决最大似然问题的流程 到这,问题已经可以解决了,也就是,对于已有的数据D(X,Y)和任意一个参数为的f(x),找到最好的参数我们需要, 选择一个模型f(x), 和初始化其参数 估测噪声随机变量E的分布情况(e.g. 均匀分布,高斯分布...), 得到Likelihood表达式 计算Likelihood函数, 并调整使得Likelihood达到最大 调整的方法可以使用像前一章中介绍的“导数下降法”,当然也可以直接找极值点(导数为0)来得到其极大极小值。 Likelihood 函数会随着 模型f(x) 的选择和 噪声随机变量E 的选择出现不同的情况。下面就由我展示一下,最大似然怎么与前面两位回归(线性回归(Linear Regression)和分类回归(Logistic Regression))联系起来的吧! 4. 最大似然变身线性回归 这时候, 模型 我选 f(x) = ax + b, 噪声随机变量 E一个正态分布N(0,2). 要让Likelihood最大,只需要把 最小化就好了。啊啊啊!这个公式熟悉么? 这正是 前面线性回归的cost函数 吗?原来线性回归只是最大似然的一种 特殊情况 ! 5. 最大似然与分类 这时候, 模型 我选f(x)= , 这时随机噪声变量的分布就不再是高斯分布了,是一个极其复杂的分布。但是幸运的是,我们可以得到Likelihood的表达式, 因为 统一一下这个式子, 于是有, 最后可以看到,这个Likelihood函数变成了,分类回归中的cost函数的取负。所以最大化Likelihood就等同于最小化分类回归中的cost函数。 以上两类问题,线性回归和分类回归,都可以由最大似然估计法推导而来,说明了最大似然估计法是一种 更普适 的描述模型匹配的方法。
个人分类: 机器学习|6826 次阅读|1 个评论
机器学习 --- 1. 线性回归与分类, 解决与区别
热度 4 ppn029012 2013-5-10 01:26
机器学习可以解决很多问题,其中最为重要的两个是 回归与分类。 这两个问题怎么解决, 它们之间又有什么区别呢? 以下举几个简单的例子,以给大家一个概念 1. 线性回归 回归分析常用于分析两个变量X和Y 之间的关系。 比如 X=房子大小 和 Y=房价 之间的关系, X=(公园人流量,公园门票票价) 与 Y=(公园收入) 之间的关系等等。 那么你的数据点在图上可以这么看 现在你想找到 房子大小和房价的关系, 也就是一个函数f(x) = y. 能够很好的表示 这两个变量之间的关系。 于是你需要 大概评估 一下这个 房子大小和房价大概是一个什么关系. 是 线性 的关系吗? 还是 非线性 的关系? 当然在这个问题里面, 线性的关系更符合这两者的关系。于是我们 选择一个合适的 线性模型 , 最常用的是 f(x) = ax+b. 然后用这个线性的模型 去 匹配 这些数据点。 1.1 怎么匹配? 有了数据点 和 你臆想出来的线性模型,怎么进行匹配,也就是怎么用这根线 最好地 描述些数据点的关系? 需要最好地描述点, 我们又需要一个关于“好”的定义。你也可以想出很多关于 “好”的定义 。下面有两个, 这两个定义都是 将模型与数据点之间的距离差 之和做为 衡量匹配好坏的标准 。 误差越小, 匹配程度越大。 但是 总的来说, 我们想要找到的模型, 最后是想要使 f(x) 最大程度地 与y相似, 所以我们想要尽量地减少 f(x)与y之间的差值。 所以在这里 用第二个图的“好的定义” 来评估这根线的匹配程度是很合理的。于是我们有了 误差公式 !!!!! 这个公式,说的是,可以通过调整不同的a 和 b的值,就能使 误差不断变化,而当你找到这个公式的 最小值 时,你就能得到 最好的a,b . 而这对(a,b)就是能最好描述你数据关系的 模型参数 。 1.1.1 沿导数下降法(Gradient Descent) 怎么找 cost(a,b)的最小? cost(a,b) 的图像其实像一个碗 一样,有一个最低点。 找这个最低点的办法就是,先随便找一个点(e.g. a=3, b = 2), 然后 沿着这个碗下降的方向找,最后就能找到碗的最低点。 cost(a,b) 的形状 怎么找(某一点)碗下降的方向? ? 答案是,找那一点导数的反方向。拿参数a 举个例子, a与cost 关系如下图, 只要将任意一个a, 沿着使cost 导数的反方向 慢慢移动,那么 最终有一天a值就会到达使 cost 最小的那一点. 于是你可以不断地移动a,b, 向着最低点前进。 当然在进行移动的时候也需要考虑,每次移动的速度,也就是\Alpha的值,这个值也叫做 (学习率) . 学习率的 增大 可以加速参数逼近最优的情况, 但是如果在快要到达函数的底端的时候,需要减小学习率,以免出现cost 不断增大或者不停摆动的情况(如下图, J(a,b)就是cost(a,b) )。 所以说,当出现以上两种情况时候,我们应该果断 选取一个较小的学习率 , 以保证cost能减少到一个稳定的值(我们称为 收敛converge). 1.1.2 直接求解最小点方法 这时候,有的人会问,为什么要让a不停地往下跑呢? 而且还需要设定学习率, 多麻烦, 直接让找 导数为0点(最小极值), 不就可以了吗? 嗯。。。也可以...但是各有优缺, 具体方法和优劣分析可见 Rachel-Zhang 的博客: http://blog.csdn.net/abcjennifer/article/details/7700772 总结一下: 回归问题的解决方法是: 1. 假定一个模型 2. 定义什么叫做最好的匹配(构造误差函数) 3. 用这个模型去匹配 已有的数据点 (训练集) 需要进一步讨论的问题: 如果参数(a,b)更多了该怎么办? 如果最合适的匹配模型并不是线性的怎么办? --- 选用一个 非线性模型 比如 y = ax^2 + bx + c. 如果误差(cost)与a,b(模型参数)的关系不是像碗一样的, 而是凹凸不平的该怎么办? ------ 这时候你就得注意你得到的cost的最低点(局部的最低)可能因初始点的不同而不同。 而这些最低点你需要进行比较,以确定是不是全局的最低 2.分类(Logistic regression) 分类问题也是一类很常见的问题。 比如说,怎么判定一个人是高富帅还是吊丝? 假如我是中央电视台的记者,采访了N个人, 拿到了第一手资料。资料如下 我们想要根据一个人的口袋钱数量,来预测一个人是(富帅) 还是 (吊丝). 我们能不能用回归的方法做呢? 显然是可以的 , 我们只要找到一个模型,然后再进行匹配就可以了。 但是因为分类问题的y值常常是一些离散的数字,(比如, 富帅为1, 吊丝为0), 所以我们已经不能用一个 简单的线性函数 来拟合这些数据了。我们需要一个更逼真的模型。 于是我们引入了一个更适合处理分类问题的函数--- 一个 非线性函数 , 阶跃函数。 这个函数的形状更像我们分类问题的数据分布,所以,用他来拟合分类问题的数据将 更适合 ! 所以我们有了一个新的模型, 通过调整a,b 的值,可以让模型不断改变以匹配数据点。 为了匹配数据点,我们又需要一个衡量匹配程度的函数,就像 回归问题一样的cost 函数. 于是同理我们可以得到cost 于是我们急切地想要把它用我们之前的gradient descent 的方法求解出使cost 最小的两个a,b值。 但是很遗憾的是, 这个cost函数关于a,b,是非凸(non-convex)的。 就像下面那张图那样坑坑洼洼。。。 所以你 没有办法 通过以上两种方法(1.1.1和1.1.2)求出这个cost函数的 全局最小值 。 所以你需要构造一个更好的cost函数, 在可以 衡量拟合程度 的同时 又是 一个关于a,b 的凸函数 (像回归问题的cost一样,和一个碗一样,只有一个极小值). 这怎么构造啊.... 幸好我们还有各种伟大的数学家,他们夜以继日,终于赶制出了一个形状和碗一样(convex)的cost函数. (Maximum Likelihoods Estimation 更具体的介绍请看 http://www.holehouse.org/mlclass/06_Logistic_Regression.html ) 现在我们又可以用我们熟悉的 导数方向下降法(gradient descent) 移动a, b的值,使cost 降低到最小。 最后,分类的问题就这样被解决了。 当然,更复杂的问题可能有: 现在是分成两类,如果数据需要分成三类或者更多该怎么办? ---- 假如有A,B,C三类, 把其中A类做为1,BC做为0,然后做Logistic regression, 得到模型a, 同理将B类做为1,AC作为0,得到模型b, 再同理得到模型c. 最后测试的时候, 对任意一个数据点x, 我们能够得到x分别属于A,B,C三类的概率值 最后比较大小,哪个大,这个x就属于哪一类 具体可看, http://blog.csdn.net/abcjennifer/article/details/7716281 (七) 3.总结(两个问题的区别) 这篇文章大概的意图是能想让大家了解, 机器学习中最基本的两类问题,线性回归和分类。 能让大家有个清晰的思想,对于这两类问题都有以下几个步骤, 如何选取一个 合理的模型 (线性的,or 非线性的(e.g. 阶跃函数, 高斯函数)). 制造一个美好的 误差函数 (可以评估拟合程度,而且还是convex函数) 采取一切可能的 技术 (e.g. 导数下降法,解极值方程法) 求出最好的模型参数 谈谈回归和分类的区别: 总的来说两个问题本质上都是一致的,就是模型的拟合(匹配)。 但是分类问题的y值(也称为label), 更离散化一些. 而且, 同一个y值可能对应着一大批的x, 这些x是具有一定范围的。 所以分类问题更多的是 (一定区域的一些x) 对应 着 (一个y). 而回归问题的模型更倾向于 (很小区域内的x,或者一般是一个x) 对应着 (一个y). 在把一个问题建模的时候一定要考虑好需求,让你的模型更好的与现实问题相对应。
个人分类: 机器学习|17563 次阅读|14 个评论
【科普随笔:NLP主流的傲慢与偏见】
热度 2 liwei999 2013-5-9 17:33
上篇博文 【科普随笔:NLP的宗教战争?兼论深度学习】 匆匆写就发出以后,没想到在新浪微博上一夜间有好几万点击,而平时我在新浪转发的博文最多也不到几千点击。想来一是题目比较花哨(宗教,深层学习,都是容易引起热议的 buzz words),难逃标题党嫌疑;二来内容也容易引起这个领域的争论、不屑或共鸣。 需要说明一句,那篇里面关于深度学习的notes,是信口发挥,各位不要认真,因为对于这样崭新的东西我是老外,是想当然地瞎议论,难免牵强。万一从某个角度让人看出了“道理”,那也纯粹是瞎猫撞死耗子,不足采信。 不过关于NLP过去20年两条路线的宗教式斗争,我和很多同时代人都是亲历者,这方面的每一句话都是有根据、负责任,经过深思熟虑的,有过惨痛的经历或胜利的喜悦。 虽然统计学界有很多对传统规则系统根深蒂固的偏见和经不起推敲但非常流行的蛮横结论(以后慢慢论,血泪账一笔一笔诉 :),但是机器学习的巨大成果和效益是有目共睹无所不在的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,知识习得,you name it 摘自 【科普随笔:NLP的宗教战争?兼论深度学习】 近来浏览几篇 NLP (Natural Language Processing) 领域代表人物的综述,见其中不乏主流的傲慢与偏见,令人惊诧。细想之下,统计学界的确有很多对传统规则系统根深蒂固的成见和经不起推敲但非常流行的蛮横结论。这些一览众山小的大牛聪明绝顶,居然如此偏见蛮横,可见宗教式思维定势的危害之深,深入骨髓,对青年学子个更是贻害无穷。(主流掌门人中也有有识之士,以后再论。)可怕的不是成见,成见无处不在。真正可怕的是成见的流行无阻。而在 NLP 这个领域,成见的流行到了让人瞠目结舌的程度。不假思索而认同接受这些成见成为常态。 因此想到立此存照一下,以后再一条一条细论。 下列成见随处可见,流传甚广,为免纷扰,就不列出处了,明白人自然知道这绝不是杜撰和虚立的靶子。这些成见似是而非,经不起推敲,却被很多人视为理所当然的真理。为每一条成见找一个相应的 crappy 规则系统的案例并不难,但是从一些特定系统的缺陷推广到对整个规则系统的方法学上的批判,乃是其要害所在。 【成见一】规则系统的手工编制( hand-crafted )是其知识瓶颈,而机器学习是自动训练的(言下之意:没有知识瓶颈)。 【成见二】规则系统的手工编制导致其移植性差,转换领域必须重启炉灶,而机器学习因为算法和系统保持不变,转换领域只要改变训练数据即可(言下之意:移植性强)。 【成见三】规则系统很脆弱,遇到没有预测的语言现象系统就会 break (什么叫 break ,死机?瘫痪?失效?),开发不了鲁棒( robust )产品。 【成见四】规则系统的结果没有置信度,鱼龙混杂。 【成见五】规则系统的编制越来越庞杂,最终无法改进,只能报废。 【成见六】规则系统的手工编制注定其无法实用,不能 scale up ,只能是实验室里的玩具。 【成见七】规则系统只能在极狭窄的领域成事,无法实现跨领域的系统。 【成见八】规则系统只能处理规范的语言(譬如说明书、天气预报、新闻等),无法应对 degraded text ,如社会媒体、口语、方言、黑话、 OCR 文档。 【成见九】规则系统是上个世纪的技术,早已淘汰(逻辑的结论似乎是:因此不可能做出优质系统)。 【成见十】从结果上看,机器学习总是胜过规则系统。 所列“成见”有两类:一类是“偏”见,如【成见一】至【成见五】。这类偏见主要源于不完全归纳,他们也许看到过或者尝试过规则系统某一个类型,浅尝辄止,然后遽下结论(jump to conclusions)。盗亦有道,情有可原,虽然还是应该对其一一纠“正”。成见的另一类是谬见,可以事实证明其荒谬。 令人惊诧的是,谬见也可以如此流行。 【成见五】以降 均属不攻自破的谬见 。譬如【成见八】说规则系统只能分析规范性语言。事实胜于雄辩, 我们开发的以规则体系为主的舆情挖掘系统处理的就是非规范的社交媒体。这个系统的大规模运行和使用也 驳斥了 【成见六】。 上述每一条都可以写一大篇或一个系列来详细论证其荒谬蛮横,描述学界主流中存在的傲慢与热昏。可是不用着急, 血泪账今后一笔一笔诉 :) 【系列姐妹篇】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【其他相关篇什】 【科普随笔:NLP的宗教战争?兼论深度学习】 坚持四项基本原则,开发鲁棒性NLP系统 why hybrid? on machine learning vs. hand-coded rules in NLP 《立委随笔:语言自动分析的两个路子》 《朝华午拾:在美国写基金申请的酸甜苦辣》 《立委随笔:机器学习和自然语言处理》 【立委科普:从产业角度说说NLP这个行当】 王伟DL 不得不承认,看完这些偏见之后,我有点乱了。我同意“每一条都可以写一大篇”都可以引起大的讨论,对于是否偏,一时还难明。有些我已经不知何时“采纳”了,有些也不接受。---究竟是正是偏,也是引领方向的大问题。一方面应深入讨论,示明于众,纠偏于正时。另一方面,应采实践检验的标准以实证。 ◆ ◆ 米拉宝鉴 :确实应该展开讨论,不着急,慢慢来。所罗列的“偏见”有两类:一类是谬见,可以证明其荒谬,譬如说规则系统不能处理社会媒体,只能分析规范性语言。另一类就是“偏”见,盗亦有道,情有可原,虽然还是应该对其纠“正”。这类偏见主要源于不完全归纳,他们也许看到过或者尝试过规则系统某一个类型。 浅尝辄止,然后 jump to conclusion 【置顶:立委科学网博客NLP博文一览(定期更新版)】 原载 《W. Li T. Tang: 主流的傲慢与偏见:规则系统与机器学习》 【计算机学会通讯】2013年第8期(总第90期)
个人分类: 立委科普|5620 次阅读|3 个评论
【科普随笔:NLP的宗教战争?兼论深度学习】
热度 7 liwei999 2013-5-7 23:18
有回顾NLP(Natural Language Processing)历史的大牛介绍统计模型(通过所谓机器学习 machine learning)取代传统知识系统(又称规则系统 rule-based system)成为学界主流的掌故,说20多年前好像经历了一场惊心动魄的宗教战争。其实我倒觉得更像49年解放军打过长江去,传统NLP的知识系统就跟国民党一样兵败如山倒,大好江山拱手相让。文傻秀才遭遇理呆兵,有理无理都说不清,缴械投降是必然结果。唯一遗憾的也许是,统计理呆仗打得太过顺利,太没有抵抗,倒是可能觉得有些不过瘾,免不了有些胜之不武的失落。苍白文弱的语言学家也 太不经打了。 自从 20 年前统计学家势不可挡地登堂入室一统天下以后,我这样语言学家出身的在学界立马成为二等公民,一直就是敲边鼓,如履薄冰地跟着潮流走。走得烦了,就做一回阿桂。 NLP 这个领域,统计学家完胜,是有其历史必然性的,不服不行。虽然统计学界有很多对传统规则系统根深蒂固的偏见和经不起推敲但非常流行的蛮横结论(以后慢慢论,血泪账一笔一笔诉 :),但是机器学习的巨大成果和效益是有目共睹无所不在的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,知识习得,you name it 甚至可以极端一点这么说,规则系统的成功看上去总好像是个案,是经验,是巧合,是老中医,是造化和运气。而机器学习的成功,虽然有时也有 tricks,但总体而论是科学的正道,是可以重复和批量复制的。 不容易复制的成功就跟中国餐一样,同样的材料和recipe,不同的大厨可以做出完全不同的味道来。这就注定了中华料理虽然遍及全球,可以征服食不厌精的美食家和赢得海内外无数中餐粉丝,但中餐馆还是滥竽充数者居多,因此绝对形成不了麦当劳这样的巨无霸来。 而统计NLP和机器学习就是麦当劳这样的巨无霸:味道比较单调,甚至垃圾,但绝对是饿的时候能顶事儿, fulfilling,最主要的是 no drama,不会大起大落。不管在世界哪个角落,都是一条流水线上的产品,其味道和质量如出一辙 。 做不好主流,那就做个大厨吧。做个一级大厨感觉也蛮好。最终还是系统说了算。邓小平真是聪明,有个白猫黑猫论,否则我们这些前朝遗老不如撞墙去。 就说过去10多年吧,我一直坚持做多层次的 deep parsing,来支持NLP的各种应用。当时看到统计学家们追求单纯,追求浅层的海量数据处理,心里想,难怪有些任务,你们虽然出结果快,而且也鲁棒,可质量总是卡在一个口上就过不去。从“人工智能”的概念高度看,浅层学习(shallow learning)与深层分析(deep parsing)根本就不在一个档次上,你再“科学”也没用。可这个感觉和道理要是跟统计学家说,当时是没人理睬的,是有理说不清的,因为他们从本质上就鄙视或忽视语言学家 ,根本就没有那个平等对话的氛围(chemistry)。最后人家到底自己悟出来了,因此近来天上掉下个多层 deep learning,视为神迹,仿佛一夜间主导了整个机器学习领域,趋之者若鹜。啧啧称奇的人很多,洋洋自得的也多,argue 说,一层一层往深了学习是革命性的突破,质量自然是大幅度提升。我心里想,这个大道理我十几年前就洞若观火,殊途不还是同归了嘛。想起在深度学习风靡世界之前,曾有心有灵犀的老友这样评论过: To me, Dr. Li is essentially the only one who actualy builds true industrial NLP systems with deep parsing. While the whole world is praised with heavy statistics on shallow linguistics, Dr. Li proved with excellent system performances such a simple truth: deep parsing is useful and doable in large scale real world applications. 我的预见,大概还要20年吧(不是说风水轮流转20年河东河西么),主流里面的偏见会部分得到纠正,那时也不会是规则和知识的春天重返,而是统计和规则比较地和谐合作。宗教式的交恶和贬抑会逐渐淡去。 阿弥陀佛! 【相关篇什】 【立委随笔:文傻和理呆的世纪悲剧(romance tragedy)】 ZT: 2013突破性科学技术之“深度学习” 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|12223 次阅读|8 个评论
PRML笔记-无信息先验
lijiankou 2013-4-30 16:21
PRML 笔记-117页 在概率推理过程中,我们经常需要先验概率分布。然而很多时候,这样的先验知识并不容易获取,在这种情况下,无信息先验被提出,那么什么是无信息先验呢? 顾名思义,无信息先验是在没有任何信息的情况下给 出的一个先验概率分布,常用 (C是常数)表示。理解无信息先验并不困难,在没有任务信息的情况,认为各个点的概率或概率密度相等是合理的,我们没有理由让任意一点的概率大于其它点的概率。无信息先验试图给出一个对后验概率影响尽可能少的分布,一切让数据说话。如果问题到这里结束,似乎也可以,可是书里面举了两个例子,就不那么容易理解了。 第一个是具有如下形式的分布: 参数 称为位置参数。直观上,在没有任何信息情况下,我们让 是合理的。 下面我们详细说明为什么这样设位置参数是合理的。首先我们令 ,那么 , 其中 . 从这两个式子中,可以看到只要让位置参数保持和x同样的平移,那么该分布的形式就保持不变, 用概率的形式表达就是在对于给定区间 在新坐标系和旧坐标系下具有相同的概率,如下所示: 该等式对于任意区间 成立,因此有 从而有: 除此之外,该书以高斯分布为例,比较了无信息先验与共轭高斯分布的关系。我们知道,给定方差的高斯分布的共轭分布仍然是高斯分布,如下: 当方差趋于无穷的时候,我们得到无信息先验分布,并且可以推导出此时后验分布的均值组成中先验概率那部分已经消息了,后验分布完全由数据给出(极大似然那部分)。这也说明了,虽然先验是一个improper, 我们依然可以使用。 书中给出的第二个例子如下: σ称为伸缩参数,为什么叫伸缩参数呢? 我们令 ,可以得到如下: 其中 ,因此当伸缩参数和x保持同步伸缩的时候,函数形式保持不变。我们选择一种先验分布来表现这种伸缩不变性。 理解的不好!!!!!!!!!!!!!!!
个人分类: 机器学习|11281 次阅读|0 个评论
伦敦数据科学讨论会-工业界在数据挖掘机器学习上的关注热点
热度 1 missjia2005 2013-4-25 05:53
今天参加了一个工业界发起的数据挖掘的研讨会(在Meetup网站上发起的,该网站主旨就是把有共同兴趣爱好的人聚集在一起,网址 http://www.meetup.com/ ),发现目前数据挖掘和机器学习的应用侧重点在于如何处理大规模的数据Big data,特别是在计算能力不足,Feature数目庞大的情况下,的学习问题。会议地点在伦敦的financial times总部,金融时报对这个讨论会的支持,足以可见DM+ML在工业界的具大应用价值。 演讲者有三位: “Approximate Methods for Scalable Data Mining” by Andrew Clegg, Data Scientist Tech Manager of Analytics Team @Pearson Probabilistic data structures let you trade off accuracy for scalability, by allowing a small and measurable amount of error in return for huge improvements in efficiency. Andrew’s talk provides an overview with use cases 这个演讲者来自大名鼎鼎的皮尔逊公司,他们面对的主要是大数据的情况下计算能力不足,存储空间不够的问题,因此他的解决思路是将Feature映射为包含01的二维编码,这样减少存储空间,以及提高处理效率。 “Storm + Trident and The Holistic Architecture: Using Hadoop for batch and Storm for real time” by Yodit Stanton, Freelance Data Scientist, Developer Systems Architect. Computing arbitrary functions on an arbitrary dataset in real time is a daunting problem. There is no single tool that provides a complete solution. Instead, you have to use a variety of tools and techniques to build a complete Big Data system. A Holistic Architecture may solve the problem of computing arbitrary functions on arbitrary data in real time by decomposing the problem into three layers: the batch layer, the serving layer, and the speed layer 这位演讲者是个数据挖掘的使用者,没有太多干货,主要是讲她们公司应用的东西。 PredictionIO - An Open Source Scalable Machine Learning Architecture by Simon Chan Product Lead @ Prediction.IO To deal with big data in a production environment, a horizontally non-blocking and scalable system is needed. PredictionIO provides a flexible architecture for data engineers to evaluate algorithms and apply them to real applications. The whole stack is built on top of open source software while PreodictionIO itself is an open source Scala project. Simon will introduce the system design and answer any questions you may have as developers or data scientists. 这位演讲者是华人叫Simon,他的工作很有创意,是提供开源的学习平台叫 PredictionIO ,用户提供数据,使用平台引擎,得到结果输出,相当于在底层API上外包了一层,用户主要只需关心于数据挖掘问题的建模和数据预处理,这样对于应用者来说,是非常有意义的。大家如果感兴趣,可以关注这个他们的网站 http://prediction.io/ 目前他们也在继续招募平台开发人员。 在整个研讨会期间,提供了很多啤酒,水果和小吃,然后感兴趣的朋友聚集在一起就某些问题深入讨论,这种轻松的氛围确实可以大大激发人的潜力。
1670 次阅读|1 个评论
感知机(perceptron)
xavierstar 2013-4-13 00:21
科学网博客不支持WindowsLiveWriter离线编辑。由于公式全部贴的图片,需要重复大量的图片上传操作,令人无法直视。 要看博文请点击 这里 。
个人分类: 待补充|2933 次阅读|0 个评论
深度学习(Deep Learning, DL)的相关资料总结
热度 3 bigdataage 2013-4-12 19:14
深度学习(Deep Learning,DL)的相关资料总结 有人认为DL是人工智能的一场革命,貌似很NB。要好好学学。 0 第一人(提出者) 好像是由加拿大多伦多大学计算机系( Department of Computer Science , University of Toronto ) 的教授Geoffrey E. Hinton于2006年提出。 其个人网站是: http://www.cs.toronto.edu/~hinton/ science上的那篇论文: http://www.sciencemag.org/content/313/5786/504.full 1 中文的资料(不含论文): 百度百科 http://baike.baidu.com/view/9964678.htm CSDN博客-,机器学习——深度学习(Deep Learning) http://blog.csdn.net/abcjennifer/article/details/7826917 深度学习(Deep Learning)综述 http://www.cnblogs.com/ysjxw/archive/2011/10/08/2201819.html “深度学习”是人工智能的一场革命吗? http://article.yeeyan.org/view/371738/341235 科学家称,深度学习是硅谷科技企业的未来 http://www.36kr.com/p/175229.html 深度学习(Deep Learning)算法简介 http://hi.baidu.com/yimizizizi/item/4d32615787772a05e6c4a5e1 程序员杂志201302:深度学习——机器学习的新浪潮 http://blog.csdn.net/datoubo/article/details/8577366 机器学习、大数据、深度学习、数据挖掘、统计、决策和风险分析、概率和模糊逻辑的常见问题解答 http://blog.csdn.net/yihaizhiyan/article/details/8266045 百度深度学习研究院 Deep Learning 教程翻译 http://blog.sina.com.cn/s/blog_46d0a3930101h6nf.html Deep Learning(深度学习)学习笔记整理系列 http://blog.csdn.net/zouxy09/article/details/8775360 Deep learning 非常好的中文学习笔记 http://www.cnblogs.com/tornadomeet/archive/2013/03/14/2959138.html Deep Learning入门之路一、二 http://blog.sina.com.cn/s/blog_9b75a293010176km.html http://blog.sina.com.cn/s/blog_9b75a29301017dd5.html UFLDL教程 http://deeplearning.stanford.edu/wiki/ 机器学习前沿热点–Deep Learning http://blog.sciencenet.cn/blog-315535-663215.html UFLDL教程 (中文版) http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B Deep Learning学习(开篇) http://www.cnblogs.com/JackOne/archive/2013/02/19/DeepLearning-FirstBoold.html 深度学习: 推进人工智能的梦想 http://www.csdn.net/article/2013-05-29/2815479 2 英文的资料(不含论文): http://deeplearning.net/ (内容很多很丰富) http://en.wikipedia.org/wiki/Deep_learning http://cs.nyu.edu/~fergus/tutorials/deep_learning_cvpr12/ http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial (很好) http://www.iro.umontreal.ca/~pift6266/H10/notes/deepintro.html http://reading-group.net.technion.ac.il/2012/11/27/deep-learning-introduction/ http://www.socher.org/index.php/DeepLearningTutorial/DeepLearningTutorial Reading List: http://deeplearning.net/reading-list/ Learning Deep Architectures for AI: http://ishare.iask.sina.com.cn/f/36110040.html 3 论文(中文和英文): 论浅层学习与深度学习 深度学习研究综述 深度学习结构和算法比较分析 英文的看Geoffrey Hinton和Andrew Ng的论文就够了: http://www.cs.toronto.edu/~hinton/papers.html http://ai.stanford.edu/~ang/papers.php
23161 次阅读|3 个评论
机器学习课程推荐
热度 3 zhenliangli 2013-3-29 12:55
Ⅰ. Machine Learning Andrew Ng Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. Machine learning is so pervasive today that you probably use it dozens of times a day without knowing it. Many researchers also think it is the best way to make progress towards human-level AI. In this class, you will learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. More importantly, you'll learn about not only the theoretical underpinnings of learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. Finally, you'll learn about some of Silicon Valley's best practices in innovation as it pertains to machine learning and AI. This course provides a broad introduction to machine learning, datamining, and statistical pattern recognition. Topics include: (i) Supervised learning (parametric n-parametric algorithms, support vector machines, kernels, neural networks). (ii) Unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). (iii) Best practices in machine learning (bias ariance theory; innovation process in machine learning and AI). The course will also draw from numerous case studies and applications, so that you'll also learn how to apply learning algorithms to building smart robots (perception, control), text understanding (web search, anti-spam), computer vision, medical informatics, audio, database mining, and other areas. Ⅱ. Neural Networks for Machine Learning Geoffrey Hinton Neural networks use learning algorithms that are inspired by our understanding of how the brain learns, but they are evaluated by how well they work for practical applications such as speech recognition, object recognition, image retrieval and the ability to recommend products that a user will like. As computers become more powerful, Neural Networks are gradually taking over from simpler Machine Learning methods. They are already at the heart of a new generation of speech recognition devices and they are beginning to outperform earlier systems for recognizing objects in images. The course will explain the new learning procedures that are responsible for these advances, including effective new proceduresr for learning multiple layers of non-linear features, and give you the skills and understanding required to apply these procedures in many other domains. This YouTube video gives examples of the kind of material that will be in the course, but the course will present this material at a much gentler rate and with more examples. Ⅲ. 机器学习 余凯,张潼 Kai Yu , a deputy engeering director of Baidu, managing the company's multimedia department. Tong Zhang , Professor in Department of Statistics, Rugers University. 今天,如果你从事互联网搜索,在线广告,用户行为分析,图像识别,自然语言理解,或者生物信息学,智能机器人,金融预测,那么有一门核心课程你必须深入了解,那就是-机器学习(Machine Learning)。作为人工智能的核心内容,机器学习致力于开发智能的计算机算法从历史经验数据中学习出有用的模型,从而对未知数据或事件做预测。作为一门前沿学科,它结合了计算机算法,概率论,统计学,脑神经科学,控制论,心理学,和优化理论等多方面知识。 两位授课者在机器学习领域享有国际声誉,不仅各自在世界顶级杂志和会议上发表了上百篇学术论文,而且都在著名高科技公司积累了多年左右的工作经验。通过这门课程,学生将系统掌握习机器学习的基本知识,理论,和算法,还将通过一些实例领略其在应用中发挥的巨大作用。 Course Videos , Course Slides 前两个课程都是Coursera上面的课程,可以注册一个用户,免费参与课程的学习。第一个课程的影响力很大,课程大概在今年4月22日开始新的课程,该课程持续10周。 第二个课程,推荐的主要理由是因为它由Deep learning大牛Hiton主讲的,我也才看几集,还是很值得学习的课程。 后面一个课程是国内的龙星计划课程,讲了机器学习的基本理论,同时,也引入了机器学习中比较前沿的研究课题。总共19集,每集大约45分钟(中文课程)。 The main content is copied from: 1. https://www.coursera.org/course/ml 2. https://www.coursera.org/course/neuralnets 3. http://bigeye.au.tsinghua.edu.cn/DragonStar2012/index.html
个人分类: MachineLearning|7194 次阅读|5 个评论
机器学习应该关注什么?
热度 2 hustliaohh 2013-1-14 21:26
机器学习应该关注什么?
今天读了ICML12'一篇有趣的论文《 Machine Learning that Matters 》作者 Kiri Wagstaff 。 下面是这篇论文的摘要: Much of current machine learning (ML) research has lost its connection to problems of import to the larger world of science and society. From this perspective, there exist glaring limitations in the data sets we investigate, the metrics we employ for evaluation, and the degree to which results are communicated back to their originating domains. What changes are needed to how we conduct research to increase the impact that ML has? We present six Impact Challenges to explicitly focus the field’s energy and attention, and we discuss existing obstacles that must be addressed. We aim to inspire ongoing discussion and focus on ML that matters. 作者在文中指出了目前机器学习研究太过于注重测试数据,如UCI等,而忽略了数据的实际应用领域;同时,目前使用的性能评价指标像AUC、ROC曲线,完全忽略了数据本身的应用背景,提供的是一个数值上的对比,很难保证这个数值在实际应用中有任何意义。例如在植物学领域,80%的准确度也许是一个很不错的结果了,但是99%的准确度显示某类蘑菇是无毒的,也许我们也不敢吃这类蘑菇。性能评价应该结合具体的应用背景才能有其实际的价值。 作者指出,一个真正实用的机器学习算法或系统应该如下图所示 但是,现在的研究工作主要集中在第二行所示的部分,第一行使用标准测试数据替代了,而最后一行领域知识则经常被忽略了,即使主流的机器学习期刊和会议也不例外。忽略这些,实际上的标准测试数据还不如人造数据(synthetic data),因为人造数据是可控的,而标准测试数据完全不可控。 另外,这位女作者也是非常有意思,02年已经拿到了CS的PhD,08年又拿了地质学的Master,现在又在攻读Master of Library and Information Science。佩服。 强烈推荐好好阅读这篇论文。
个人分类: 科研道路|4878 次阅读|4 个评论
数据科学(大数据处理)领域的大牛和研究机构总结
bigdataage 2012-12-8 19:36
数据科学(大数据处理)领域的大牛和研究机构总结 (第3次修改) 1 Jeffrey David Ullman ( Stanford University) http://infolab.stanford.edu/~ullman/ Mining of Massive Datasets (大数据:互联网大规模数据挖掘与分布式处理) Compilers: Principles, Techniques, and Tools 这两本书的作者。 2 Anand Rajaraman Mining of Massive Datasets 的一作。 3 Jim Gray http://research.microsoft.com/en-us/um/people/gray/ 可惜已经消失在大海里,估计喂鱼了,非常可惜!! 4 Andrew Ng(吴恩达) , Stanford University, 会说中文, 很NB的一个人。 http://ai.stanford.edu/~ang/ 5 Daphne Koller , Stanford University http://ai.stanford.edu/~koller/index.html 6 Michael I. Jordan , University of California, Berkeley http://www.cs.berkeley.edu/~jordan/ 7 David M. Blei, Princeton University http://www.cs.princeton.edu/~blei/ 8 Geoffrey E. Hinton , University of Toronto godfather of neural networks, 人工神经网络之父 deep learning的领军人物 http://www.cs.toronto.edu/~hinton/
6565 次阅读|0 个评论
《多语言领域本体学习研究》勘误表
热度 4 timy 2012-12-2 10:28
序号 章节页码行号 原文 修改后 发现日期 指出人 1 P48 ,公式( 3-5 ) , 倒数第二行 Dice(C,E)=2a/((a+b)(a+c)) Dice(C,E)=2a/(2a+b+c) 2012,02.27 博主 2 P75 ,表 4-7 最后一行 0.84144 0.75648 0.79508 0.84036 0.75225 0.79211 2012.11.30 博主 3 P76 ,表 4-8 倒数第 6 行 0.84144 0.75648 0.79508 0.84036 0.75225 0.79211 2012.11.30 博主 4 P76 ,表 4-9 第 2 行 0.81183 0.63934 0.71136 0.82852 0.62701 0.71007 2012.11.30 博主 5 P173 ,表格最后两行 倒数第二行数字,倒数第一行说明 将倒数第一行和倒数第二行互换 2012.12.1 博主 6 P174 ,表格最后两行 倒数第二行数字,倒数第一行说明 将倒数第一行和倒数第二行互换 2012.12.1 博主 7 P177 ,附表 12-6 最后一行 0.80098 0.7422 0.76851 0.84036 0.75225 0.79211 2012.11.30 博主 8 P179 ,附表 12-16 最后一行 0.8285 0.6270 0.7101 0.82852 0.62701 0.71007 2012.11.30 博主
个人分类: 信息组织|4576 次阅读|11 个评论
MLA 2012 Notes (3) - 机器学习在搜索广告中的机遇和挑战
jujumao 2012-11-25 19:08
MLA 2012 Notes (3) - 机器学习在搜索广告中的机遇和挑战
3.机器学习在搜索广告中的机遇和挑战 Speaker: 刘铁岩微软 IRWebMining 首席科学家 刘铁岩是 learningtorank 领域非常 outstanding 的 expert ,但最近一年都在研究计算广告学,并将博弈论引入机器学习中。他最新的研究成果也非常新颖独特。 众所周知,互联网投放广告按照点击计价( CPC )相对于传统的硬广(电视广告,报纸等),大大减少了成本,成为大多数企业的首选。因此互联网 70% 的利润来自于在线广告的投放。 同时在线广告也是搜索引擎的利润来源,如图。搜索引擎对各个关键词进行拍卖( auction ),由广告主( advertiser )进行竞价( bid ),再按照一定机制进行 Ranking 和 Pricing, 这种拍卖机制就是他研究的主题。 在这个过程中,广告主,搜索引擎和广告平台之间实际上是在博弈,但与经典博弈论不同,广告主在 campaign 中拥有的只是 partial 的 information ,并不是全部信息,事实上他们彼此之间并不知道对方的出价。 目前广告拍卖中采用的机制是广义第二价格拍卖( GSP : GeneralSecondPricing) 。在 GSP 拍卖中,广告主的链接依然按照竞价递减的顺序排列,但是广告主对每次点击的付费并非等于自身的竞价,而是略高于排名紧随其后的广告主开出的竞价 ( 所谓“第二价格”即由此而来 ) 。 Google 后来又引进了“点入率” (Click ~ throughRate , CTR) 概念(即点击该广告的占总页面点击的比率),用来衡量每个广告主的链接与关键词的相关度。 Google 通过历史数据估计每个广告主的点入率,以竞价乘以点入率( pClick*bid )得到所谓“有效竞价”,并以有效竞价排名代替单纯的竞价排名。有效竞价排名的基本思想是按照每个广告主预期带来的总广告费用 ( 对搜索引擎的收入贡献 ) 进行排名,从而使得预期对收入贡献越大的广告主排名越靠前。 理论上这个机制很好,能够兼顾广告对搜索引擎的贡献率以及 Revenue ,是的社会总收益最大化,达到纳什均衡。但是这是建立在用户能充分获取到信息,并且能够基于这些信息做出最优的决策,而实际上并非如此, advertisers 并不能获得完全的信息,并且做出的 bidstrategy 并非最优的,事实上有些广告主 aresimplytoolazy ,他们可能不会对信息做出反应。或者没有明确的 utilities 去获得最佳收益。 在这种情况下, GSP 已经不是最好的拍卖策略,我们能否从历史的交易数据 (realdata) 中“学习”出一种最佳的拍卖机制呢( LearningaOptimalAuctionMechanismfromRealData )?这就转变为一个机器学习的问题。 想法很 Simple 很 Naive ,但这和传统的机器学习一样么?答案是否定的。传统的统计机器学习中,要求训练数据集是独立同分布( i.i.d )的,而且不会变化,但是在广告拍卖中广告主 bid 的 distribution 却依赖与我们的拍卖机制, advertiserschangestheirbidasresponsetothemechanism,whichwillgenerateadifferentbiddistribution. 当广告主行为和拍卖机制这两个 variables 相互依赖时,我们可以找出一些参照变量( referencevariables )使得广告主的行为相对于拍卖机制而言条件独立。 因此我们对 Typicaladvertiserbehaviors 进行分析:对于一个关键词,广告主给出他们的 bids ;在 t 时刻,根据拍卖的结果,广告主们得到关于他们的 performance 和 payments ( knownas KPI )的 report ;在 t+1 时刻,广告主根据他们剩余的预算( remainingbudget )重新 place 新的 bids ,进行下一轮 auction 。 根据以上分析,我们可以找出两个 referencevariables : KPI 和 RemainingBudget 接下来,我们可以用马尔科夫随机过程来对广告主的 bid 行为进行模拟。给定 KPI , Remainingbudget (剩余预算),和 currentbid (当前竞价),我们可以学习出一个马尔科夫概率转移矩阵,来代表广告主从 bidb 变为 b' 的可能性。 这里用核估计来估计关键词的转移概率。 核心在于条件概率的转化 这样就对广告主的行为进行了很好的模拟,然后定义一个使收益最大化的目标函数 通过多个 T 时刻的 bid 数据进行迭代训练,使之达到收敛,就能很好的预测出广告主在下一时刻的 bidbehavior 。(这是机器学习中常用的最优化方法,可以参见李航博士的统计机器学习一书)
3478 次阅读|0 个评论
A New Framework for Machine Learning ---贝叶斯方法
热度 1 hustliaohh 2012-11-25 11:07
A New Framework for Machine Learning ---贝叶斯方法
作者: Christopher M. Bishop 出处: J.M. Zurada et al. (Eds.): WCCI 2008 Plenary/Invited Lectures, LNCS5050, pp. 1 – 24, 2008. Abstract : 过去几年,机器学习以来以下 3 个方面的发展取得了很多实际应用上的成功,即: 1 )采用了贝叶斯理论, 2 )使用图模型表示复杂的概率分布; 3 )应用了快速的、确定性的推理算法,如变分贝叶斯 (variational Bayes) 和期望传递 (expectation propagation) 。 Bayesian Methods :概率提供的是一种不确定性的度量,在机器学习中,这种不确定性来自于观测数据的噪声、不可观测的隐变量 (latentvariables) 和模型的参数。因此,概率理论提供了这些不确定性的求解理论和方法。依据模型是否含有一系列参数,可将机器学习分为有参数的 (parametric) 和无参数的 (non-parametric) 两大类 ( 这两类并没有明显的界限 ) 。 如果将模型的参数表示为 W ,观测数据表示为 D ,则条件概率 $p(D|W)$ 被称为 似然函数 ( 个人认为之所以称为似然,实际上在一定程度上这个函数度量了观测数据 D 与模型的匹配度 ) ,最大化条件概率 $p(D|W)$ 的方法就成为 最大似然估计 (MLE) 。如果参数过于复杂,则模型可能会将数据中的噪声也拟合很好,使得在后续对未来数据预测出现很大的偏差,这个现象被称为 过拟合 (over-fitting) 。相反,如果参数过于简单,则会出现拟合不足,即模型丢弃了数据中的某些信息,同样会造成对未来数据预测出现很大的偏差,这个现象称为 拟合不足 (under-fitting) 。如下图所示,左上角是拟合不足,右下角是过拟合。 假设模型参数的先验满足 p(W) ,先验给出了除了观测数据 D 提供的信息之外,我们对参数的所有可能知识。因此,贝叶斯公式可以表示为 $ p(W|D) = \frac{p(D|W)*p(W)}{p(D)} $ (1) $ p(D) =\int p(D|W)*p(W) dW $ 最大化 p(W|D) 被称为 最大化后验 (Maximizea Posterior, MAP). 下面考虑一个多项式拟合的例子,假设多项式函数表示为 $y(x,W) = w_0 + w_1 x + w_2 x^2 + \ldots + w_M x^M$ 上图给出了M取不同值时的拟合情况。下面首先给出传统的,非贝叶斯方法的求解过程。 为了得到算法的最优解,通常需要一个 损失函数 (loss function),在这里使用 误差平方和 (sum-of-squares error),表达式如下: $E(W) = \frac{1}{2} \sum_{i=1}^n \{y(x_i,W) - t_i\}^2$ (2) 其中,$\{x_i,t_i\}_{i=1}^{n}$为观测数据集及其真值。 取均方根误差(root-mean-square error)为 $E_{RMS} = \sqrt{2E(W^{*})/n}),W^{*}$ 为当前模型下的最优参数。下图给出了多项式取不同的维数是的均方根误差。 由图可以看到,随着模型复杂度的增加,即M的增大,对观测数据的拟合越来越好,训练误差愈来愈小,但测试误差却越来越大,出现了过拟合现象。 从贝叶斯的观点来看,假设数据集 $\{x_i,t_i\}_{i=1}^{n}$独立同分布,不失一般性,假设服从高斯分布 $p(D|W) = \prod_{i=1}^{n} N(t_i|y(x_i,w),\beta^{-1})$ (3) 同时假设参数服从高斯先验,(假设高斯先验是为了满足共轭性,见作者06的书) $p(W|\alpha) = N(W|0,\alpha^{-1}I)$ (4) 于是,依贝叶斯公式,对新的位置$x$其估计值的表达式为 $p(t|x,D) = \int p(t|x,W) p(W|D) dW = N(t|m(x),s^2(x))$ (5) 上式积分号里面有两项,第二项是后验概率,用于依据当前给定的观测数据估计模型参数,第一项是依据估计出来的参数,预测给定位置的值,$p(t|x,W)$的表达式为$p(t|y(x,W),\beta^{-1})$。下图给出了在4个观测数据的情况下,贝叶斯方法的拟合结果。红线表示拟合结果,绿线表示真实曲线,粉红色区域表示方差。 随着数据点的增多,拟合会越来越接近真实分布,且方差会越来越小。 对后验分布对自然对数之后,我们可以得到 $\ln p(W|D) = -\frac{\beta}{2}\sum_{i=1}^{n} \{t_i - y(x_i,W)\}^2 - \frac{\alpha}{2} W^{T}W + C$ (6) 这实际上就是经典分布中常使用的正则化技术。正则化技术用来限制模型的复杂性,通常要在训练准确度和模型的复杂度之间取折中。贝叶斯方法通过假设先验分布,实际上是依赖先验知识对模型进行了进一步的限定,从而避免模型出现过拟合现象。 同时,贝叶斯方法可以用于机器学习的模型选择。模型选择一直是机器学习领域一个重要的研究问题,通常采用交叉验证技术(cross-validation)。那么,从贝叶斯的观点来看,假设现有一系列模型$\{M_i\}_{i=1}^{L}$,对于给定的观测数据D和模型的先验概率$p(M_i)$,由贝叶斯公式可得 $p(M_i|D) \propto p(M_i)p(D|M_i)$ (7) 先验概率可以是依赖各个模型的性能给出。公式(7)实际上又回到了公式(6)的情形。 那么,自然就会有一个疑问: 如何选择合适的模型概率分布 和 合适的概率先验 ? 这也正是困扰本人的问题之一。 未完待续。 重要参考文献:Bishop, C.M.: Pattern Recognition and Machine Learning. Springer, Heidelberg(2006)
个人分类: 科研道路|6009 次阅读|1 个评论
人工智能与机器学习中一些问题的初步认识
热度 4 zhenliangli 2012-11-14 23:34
虽然,在我自己一直都在做机器学习方面的研究,并总是听说统计机器学习。但为什么要叫“统计”机器学习?因为机器学习是“learn from the data”. 我们也可以将此看做是一个统计过程,然后得到一些“规律”,然后用这个“规律”去预测新输入的数据应该具有哪些属性。在机器学习中,我们建立一个数学模型后,然后通过已有数据得到模型中的参数的值,最后进行预测。 人工智能,我在本科的时候就对此很感兴趣,但是一直就不明白什么是人工智能,是否是研究一种能够像人一样思考、处理问题的机器,就称为人工智能呢?说到这里,我们得明白什么是智能, Intelligence has been defined in many different ways including, but not limited to, abstract thought, understanding, self-awareness, communication, reasoning, learning , having emotional knowledge , retaining , planning , and problem solving . Artificial intelligence is the simulation of intelligence in machines (From wikipedia 来自维基百科). 人工智能方法,目前是使用先验知识,制定一些规则集合,然后按照这个规则集合进行推理判断。这种方法,使得人工智能方法的泛化能力很弱。如果遇到的情况在规则集合中不存在处理它的方法,那么判断进入未知状态。 在前几天,看了王珏老师在中科院自动化所模式识别国家重点实验室的一个讲座的PPT( 结构+平均 ),下载自新浪共享。 王老师谈到:“机器学习抹杀了变量间的结构性,人工智能方法忽略了变量之间的条件独立关系”, 在PPT中提到了Daphne Koller的著作“概率图模型”。 这本著作试图找到这两种方法的一个好的“结合点”。 如果对此方法感兴趣可以去阅读该著作,其著作有1200多页,所以,要下大工夫去读。 最后,希望大家对能够对文中错误的地方给予指正,谢谢。
个人分类: Machine Intelligence|6769 次阅读|9 个评论
[转载][机器学习之SVM] 线性SVM还是非线性SVM?
genesquared 2012-11-9 11:07
人人小组 beta 返回讨论区» 互联网 机器学习的算法研究 线性SVM还是非线性SVM? 发新帖子 回复 加入人人网,加入小组,参与更多话题讨论 加入小组 线性SVM还是非线性SVM? 496阅读 | 13评论 楼主 郑大念 2012-05-07 10:56 SVM的应用领域很广,分类、回归、密度估计、聚类等,但我觉得最成功的还是在分类这一块。 用于分类问题时,SVM可供选择的参数并不多,惩罚参数C,核函数及其参数选择。对于一个应用,是选择线性核,还是多项式核,还是高斯核?还是有一些规则的。 实际应用中,多数情况是特征维数非常高。如OCR中的汉字识别,提取8方向梯度直方图特征,归一化的字符被等分成8*8的网格,每个网格计算出长度为8的方向直方图,特征维数是8*8*8 = 512维。在这样的高维空间中,想把两个字符类分开,用线性SVM是轻而易举的事,当然用其它核也能把它们分开。那为什么要选择线性核,因为,线性核有两个非常大的优点:1. 预测函数简单f(x) = w’*x+b,分类速度快。对于类别多的问题,分类速度的确需要考虑到,线性分类器的w可以事先计算出来,而非线性分类器在高维空间时支持向量数会非常多,分类速度远低于线性分类器。2. 线性SVM的推广性有保证,而非线性如高斯核有可能过学习。再举个例子,基于人脸的性别识别,即给定人脸图像,判断这个人是男还是女。我们提取了3700多维的特征,用线性SVM就能在测试集上达到96%的识别正确率。因此,线性SVM是实际应用最多的,实用价值最大的。 如果在你的应用中,特征维数特别低,样本数远超过特征维数,则选用非线性核如高斯核是比较合理的。如果两类有较多重叠,则非线性SVM的支持向量特别多,选择稀疏的非线性SVM会是一个更好的方案,支持向量少分类速度更快,如下图。 现在对选用线性SVM还是非线性SVM有一个基本认识了吧?以上为个人的一些理解,难免有偏差之处,欢迎大家指正或补充。后面会继续写一些SVM方面的帖子,希望对感兴趣的人有点用处。 12 回复 | 举报 1楼 付杰 2012-05-07 11:41 SVM归根结底是一个shallow architecture 回复 | 举报 2楼 郭强 2012-05-07 12:25 回复付杰(1楼): 看到过这样的review,求详解 回复 | 举报 3楼 付杰 2012-05-07 13:26 回复郭强(2楼): SVM用一个非常复杂的Kernel去做Transformation。另外一种方法是用一系列相对简单的function去做一连串的transformation。至于到底哪种好,各方都有各方的道理……我自己的理解,不一定对 回复 | 举报 4楼 郑大念 2012-05-07 13:31 回复付杰(3楼): Gaussian kernel是一个通用的kernel,基本上能解决任意复杂的分类问题或者回归问题。但是Gaussian kernel不一定是最适合的kernel,最适合自己问题的kernel需要自己去设计,对普通人来说有难度。 回复 | 举报 5楼 付杰 2012-05-07 14:00 回复郑大念(4楼): 嗯,理论上SVM可以解决任何分类问题,但是所需要的训练样本和时间是指数级的。SVM的理论很漂亮,但任何算法如果是指数级增长的的,基本上就没有用了 回复 | 举报 6楼 郑大念 2012-05-07 14:08 回复付杰(5楼): 你说得对,大规模数据处理的确很难(LIBSVM支持大规模的Linear SVM求解),这时反而一些简单的方法更实用,如最小二乘。 回复 | 举报 7楼 羊志伦 2012-05-07 15:44 回复付杰: Yes,We need Deep Learning :) 回复 | 举报 8楼 邓颖聪 2012-05-07 18:16 svm只是适用于2分类,多分类效果不好 回复 | 举报 9楼 郭强 2012-05-07 18:50 回复付杰(3楼): 这就叫shallow? 回复 | 举报 10楼 徐然 2012-05-07 22:14 shallow??? 回复 | 举报 11楼 郑大念 2012-05-08 09:12 回复邓颖聪(8楼): 多类分类有一些技巧,简单的voting肯定不行,以后会写一篇多类分类的帖子。 回复 | 举报 12楼 汤煌 2012-05-08 09:19 回复付杰(3楼): 你说的可是多层ANN或者boost之类的方法? 可否给点他们之间的比较综述之类的文章 回复 | 举报 13楼 付杰 2012-05-08 11:36 回复汤煌(12楼): 楼上有人已经说了,其实就是deep learning。10多年前SVM把NN打得翻不了身,几乎文章沾上neural network就很难发到好会议期刊里。 直到2006年Hinton 老大提出的 【deep learning】(虽然LeCun在很多年前就有类似的想法)。 你搜【Geoffrey Hinton】就行了
2704 次阅读|0 个评论
10.20 机器学习之学习理论
Austindglx 2012-11-3 20:02
10.20 学习理论( Leaning Theory ) 机器学习之学习理论.docx 解决的问题: 1. 如何权衡并给出比较正式的方法来权衡 bias 和 variance ?(在接下来进行模型选择方法的时候会进一步讲解) 2. 在机器学习中,我们更关心的是一般误差,而大多数的只关心训练误差,如何才能通过训练误差体现出一般误差呢?换句话说,训练误差怎样才能更好的代表一般误差? 3. 在什么条件下学习到的算法才能很好的工作? 为了描述欠拟合和过拟合(其实大家都懂得,不多说直接给例图如下),给出示意图如下: 第一个是线性函数(欠拟合),第二个是二次函数,第三个是五次函数(过拟合)。 说到这里,不得不提一下什么是训练误差和一般误差。 其实训练误差就是得到的分类器对训练集进行分类,分错的平均误差;而一般误差可以理解为在真正的数据上(不仅仅是训练集)分类器分错的误差。下面举个例子说一下: 假设存在一个学习算法,假设集合 H={h 1 , h 2 , ..., h k } ,里面的每一个元素都是一个假设,都可以将待分类的数据 X 映射到 {0,1} 类。由于在分类过程中难免会出错,我们的目的就是找出一个具有最小训练误差的假设 h i 。 对于上述这个问题,需要分成两步来看:( 1 )首先用 来估计所有假设的误差是有合理、说服力的。( 2 )其次就是 能够良好的反应 h 的一般误差(即训练出来的学习算法,在训练样本和真实数据上的分类效果差不多),假设一般误差记做 ,可以通过证明 | | 总是小于一个比较小的上界来达到此目的。 下面任意选择一个 h i ∈ H 来进行说明。假设所有的数据点服从某分布 (x,y)~D 时,有指示变量 服从伯努利分布, 注意,这里的 Z 可以用来计算一般误差,个人理解也就是对于一般的数据点来说其分错的概率就由伯努利分布的公式直接计算就可以了,说白了就是期望值,比如就是伯努利分布中值为 1 的概率值。同样的,设训练集中的数据点也服从分布 D ,定义 . 这样 Z 和 Z j 都服从同样的分布。 设 代表 Z 的(其实也是 Z i 的)期望值。则训练误差可以记做 。则根据下面的定理: 可得: 其实可以看到只要样本量 m 足够大,训练误差和样本误差会非常接近。 接下来,另 A i 定义事件 , 则有 。然后根据下面的定理: 可以得到: 然后两边同时用 1 减,可以得到: 也就是说所有的假设 h ∈ H 中,训练误差和一般误差之间的差值的绝对值都不会大于某个上界γ的概率(也就是一致收敛的情况)为 。 到目前为止,此问题相当于给定γ和训练样本数量 m , H 中的所有假设一致收敛的概率是: 。 在此再提出“样本复杂度”的概念,设 H 中所有的假设 的概率为 时,需要的样本数量 ,也就是“样本复杂度”。 现在大家明白了吧,这些讲的内容基本意思就是如何选择样本数量 m ,才能让所有 H 中的假设在训练样本上的分类效果和在真实的数据上的分布效果一致。然后再进行到底选哪个假设 h 才能最小化误差才有意义,否则你选了一个假设 h (举个不太恰当的例子,如开始讲的哪个过拟合的图中的五次函数)虽然得到的分类结果在训练集上的误差很小,但是在真正的数据集上说不定误差就会非常大,没什么用的。
21 次阅读|0 个评论
机器学习有没有解决这个基本的无监督聚类问题
热度 2 Junfa 2012-10-18 10:40
人眼无监督局类.doc 经常对外声称自己是从事机器学习方法应用的,却发现对基本的无监督聚类问题还缺乏认识与实践,贴出来供大家讨论。 人类一眼就可以确定散点图分成几个类比较合适,不管有多散,但计算机似乎还不能。附件有详细贴图和数据,有兴趣的同仁可以参考试试。
个人分类: 学术问题|3899 次阅读|4 个评论
FacetNet:A Framework for Analyzing Communities and their Evo
chenhao317 2012-10-16 22:16
传统的动态社区发现算法把社区和它们的演化割裂开来研究,这样每个时间段社区结构都是独立发现的,会造成社区结构高频率的短暂变化。 本文引入了FaceNet论文框架,框架里的社区结构由当前的网络结构和历史数据共同决定,从信息论和概率生成模型两个角度来解释,并证明其了等价性。文中给出了一个提供了能收敛到局部最优解的迭代算法。 从概率生成模型角度来说,文章把整个网络的演变看做隐马尔科夫链,网络结构服从狄利克雷分布 \ 通过求最大后验概率来获得新的最有可能网络结构。 从信息论的角度来说,文中使用了一个cost函数, \ CS用来衡量社区模型与当前观察数据的一致性,CT用来衡量相对于历史社区模型的连续性。 CS和CT都是使用信息论中的相对熵计算出来的 \ 文中还证明了两种衡量方法的等价性,并通过模型提出了三种社区图:成员归属图,社区关系图,社区演变图。社区的数目是由软模块度来确定的,在社区数目变化,重新修改最大后验概率的公式之后,可以证明其依旧有效。 【1】2008-WWW-FacetNet:A Framework for Analyzing Communities and their Evolutions in Dynamic Networks 【2】
1121 次阅读|0 个评论
[转载]漫谈 Clustering
热度 4 JRoy 2012-10-11 00:38
Clustering 中文翻译作“聚类”,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做 supervised learning (监督学习),而在聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起,因此,一个聚类算法通常只需要知道如何计算相似 度就可以开始工作了,因此 clustering 通常并不需要使用训练数据进行学习,这在 Machine Learning 中被称作 unsupervised learning (无监督学习)。 漫谈 Clustering (1): k-means 那么让我们再回到 clustering 的问题上,暂且抛开原始数据是什么形式,假设我们已经将其映射到了一个欧几里德空间上,为了方便展示,就使用二维空间吧,如下图所示: 从数据点的大致形状可以看出它们大致聚为三个 cluster ,其中两个紧凑一些,剩下那个松散一些。我们的目的是为这些数据分组,以便能区分出属于不同的簇的数据,如果按照分组给它们标上不同的颜色,就是这个样子: 那么计算机要如何来完成这个任务呢?当然,计算机还没有高级到能够“通过形状大致看出来”,不过,对于这样的 N 维欧氏空间中的点进行聚类,有一个非常简单的经典算法,也就是本文标题中提到的 k-means 。在介绍 k-means 的具体步骤之前,让我们先来看看它对于需要进行聚类的数据的一个基本假设吧:对于每一个 cluster ,我们可以选出一个中心点 (center) ,使得该 cluster 中的所有的点到该中心点的距离小于到其他 cluster 的中心的距离。虽然实际情况中得到的数据并不能保证总是满足这样的约束,但这通常已经是我们所能达到的最好的结果,而那些误差通常是固有存在的或者问题本身的不可分性造成的。例如下图所示的两个高斯分布,从两个分布中随机地抽取一些数据点出来,混杂到一起,现在要让你将这些混杂在一起的数据点按照它们被生成的那个分布分开来: 由于这两个分布本身有很大一部分重叠在一起了,例如,对于数据点 2.5 来说,它由两个分布产生的概率都是相等的,你所做的只能是一个猜测;稍微好一点的情况是 2 ,通常我们会将它归类为左边的那个分布,因为概率大一些,然而此时它由右边的分布生成的概率仍然是比较大的,我们仍然有不小的几率会猜错。而整个阴影部分是我们所能达到的最小的猜错的概率,这来自于问题本身的不可分性,无法避免。因此,我们将 k-means 所依赖的这个假设看作是合理的。 基于这样一个假设,我们再来导出 k-means 所要优化的目标函数:设我们一共有 N 个数据点需要分为 K 个 cluster ,k-means 要做的就是最小化 这个函数,其中 在数据点 n 被归类到 cluster k 的时候为 1 ,否则为 0 。直接寻找 和 来最小化 并不容易,不过我们可以采取迭代的办法:先固定 ,选择最优的 ,很容易看出,只要将数据点归类到离他最近的那个中心就能保证 最小。下一步则固定 ,再求最优的 。将 对 求导并令导数等于零,很容易得到 最小的时候 应该满足: 亦即 的值应当是所有 cluster k 中的数据点的平均值。由于每一次迭代都是取到 的最小值,因此 只会不断地减小(或者不变),而不会增加,这保证了 k-means 最终会到达一个极小值。虽然 k-means 并不能保证总是能得到全局最优解,但是对于这样的问题,像 k-means 这种复杂度的算法,这样的结果已经是很不错的了。 下面我们来总结一下 k-means 算法的具体步骤: 选定 K 个中心 的初值。这个过程通常是针对具体的问题有一些启发式的选取方法,或者大多数情况下采用随机选取的办法。因为前面说过 k-means 并不能保证全局最优,而是否能收敛到全局最优解其实和初值的选取有很大的关系,所以有时候我们会多次选取初值跑 k-means ,并取其中最好的一次结果。 将每个数据点归类到离它最近的那个中心点所代表的 cluster 中。 用公式 计算出每个 cluster 的新的中心点。 重复第二步,一直到迭代了最大的步数或者前后的 的值相差小于一个阈值为止。 首先 3 个中心点被随机初始化,所有的数据点都还没有进行聚类,默认全部都标记为红色,如下图所示: 然后进入第一次迭代:按照初始的中心点位置为每个数据点着上颜色,这是代码中第 41 到 43 行所做的工作,然后 45 到 47 行重新计算 3 个中心点,结果如下图所示: 可以看到,由于初始的中心点是随机选的,这样得出来的结果并不是很好,接下来是下一次迭代的结果: 可以看到大致形状已经出来了。再经过两次迭代之后,基本上就收敛了,最终结果如下: 不过正如前面所说的那样 k-means 也并不是万能的,虽然许多时候都能收敛到一个比较好的结果,但是也有运气不好的时候会收敛到一个让人不满意的局部最优解,例如选用下面这几个初始中心点: 最终会收敛到这样的结果: 不得不承认这并不是很好的结果。不过其实大多数情况下 k-means 给出的结果都还是很令人满意的,算是一种简单高效应用广泛的 clustering 方法。 漫谈 Clustering (2): k-medoids 其实从名字上就可以看出来,和 k-means 肯定是非常相似的。事实也确实如此,k-medoids 可以算是 k-means 的一个变种。 k-medoids 和 k-means 不一样的地方在于中心点的选取,在 k-means 中,我们将中心点取为当前 cluster 中所有数据点的平均值: 并且我们已经证明在固定了各个数据点的 assignment 的情况下,这样选取的中心点能够把目标函数 最小化。然而在 k-medoids 中,我们将中心点的选取限制在当前 cluster 所包含的数据点的集合中。换句话说,在 k-medoids 算法中,我们将从当前 cluster 中选取这样一个点——它到其他所有(当前 cluster 中的)点的距离之和最小——作为中心点。k-means 和 k-medoids 之间的差异就类似于一个数据样本的均值 (mean) 和中位数 ( median ) 之间的差异:前者的取值范围可以是连续空间中的任意值,而后者只能在给样本给定的那些点里面选。那么,这样做的好处是什么呢? 一个最直接的理由就是 k-means 对数据的要求太高了,它使用欧氏距离描述数据点之间的差异 (dissimilarity) ,从而可以直接通过求均值来计算中心点。这要求数据点处在一个欧氏空间之中。 然而并不是所有的数据都能满足这样的要求,对于数值类型的特征,比如身高,可以很自然地用这样的方式来处理,但是类别 (categorical) 类型的特征就不行了。举一个简单的例子,如果我现在要对犬进行聚类,并且希望直接在所有犬组成的空间中进行,k-means 就无能为力了,因为欧氏距离 在这里不能用了:一只 Samoyed 减去一只 Rough Collie 然后在平方一下?天知道那是什么!再加上一只 German Shepherd Dog 然后求一下平均值?根本没法算,k-means 在这里寸步难行! 在 k-medoids 中,我们把原来的目标函数 中的欧氏距离改为一个任意的 dissimilarity measure 函数 : 最常见的方式是构造一个 dissimilarity matrix 来代表 ,其中的元素 表示第 只狗和第 只狗之间的差异程度,例如,两只 Samoyed 之间的差异可以设为 0 ,一只 German Shepherd Dog 和一只 Rough Collie 之间的差异是 0.7,和一只 Miniature Schnauzer 之间的差异是 1 ,等等。 除此之外,由于中心点是在已有的数据点里面选取的,因此相对于 k-means 来说,不容易受到那些由于误差之类的原因产生的 Outlier 的影响,更加 robust 一些。 扯了这么多,还是直接来看看 k-medoids 的效果好了,由于 k-medoids 对数据的要求比 k-means 要低,所以 k-means 能处理的情况自然 k-medoids 也能处理,为了能先睹为快,我们偷一下懒,直接在 上一篇文章 中的 k-means 代码的基础上稍作一点修改,还用同样的例子。 可以看到 k-medoids 在这个例子上也能得到很好的结果: 而且,同 k-means 一样,运气不好的时候也会陷入局部最优解中: 如果仔细看上面那段代码的话,就会发现,从 k-means 变到 k-medoids ,时间复杂度陡然增加了许多:在 k-means 中只要求一个平均值 即可,而在 k-medoids 中则需要枚举每个点,并求出它到所有其他点的距离之和,复杂度为 。 看完了直观的例子,让我们再来看一个稍微实际一点的例子好了:Document Clustering ——那个永恒不变的主题,不过我们这里要做的聚类并不是针对文档的主题,而是针对文档的语言。实验数据是从 Europarl 下载的包含 Danish、German、Greek、English、Spanish、Finnish、French、Italian、Dutch、Portuguese 和 Swedish 这些语言的文本数据集。 在 N-gram-based text categorization 这篇 paper 中描述了一种计算由不同语言写成的文档的相似度的方法。一个(以字符为单位的) N-gram 就相当于长度为 N 的一系列连续子串。例如,由 hello 产生的 3-gram 为:hel、ell 和 llo ,有时候还会在划分 N-gram 之前在开头和末尾加上空格(这里用下划线表示):_he、hel、ell、llo、lo_ 和 o__ 。按照 Zipf’s law : The n th most common word in a human language text occurs with a frequency inversely proportional to n . 这里我们用 N-gram 来代替 word 。这样,我们从一个文档中可以得到一个 N-gram 的频率分布,按照频率排序一下,只保留频率最高的前 k 个(比如,300)N-gram,我们把叫做一个“Profile”。正常情况下,某一种语言(至少是西方国家的那些类英语的语言)写成的文档,不论主题或长短,通常得出来的 Profile 都差不多,亦即按照出现的频率排序所得到的各个 N-gram 的序号不会变化太大。这是非常好的一个性质:通常我们只要各个语言选取一篇(比较正常的,也不需要很长)文档构建出一个 Profile ,在拿到一篇未知文档的时候,只要和各个 Profile 比较一下,差异最小的那个 Profile 所对应的语言就可以认定是这篇未知文档的语言了——准确率很高,更可贵的是,所需要的训练数据非常少而且容易获得,训练出来的模型也是非常小的。 不过,我们这里且撇开分类(Classification)的问题,回到聚类(Clustering)上,按照前面的说法,在 k-medoids 聚类中,只需要定义好两个东西之间的距离(或者 dissimilarity )就可以了,对于两个 Profile ,它们之间的 dissimilarity 可以很自然地定义为对应的 N-gram 的序号之差的绝对值。 europarl 数据集共有 11 种语言的文档,每种语言包括大约 600 多个文档。我为这七千多个文档建立了 Profile 并构造出一个 7038×7038 的 dissimilarity matrix ,最后在这上面用 k-medoids 进行聚类。构造 dissimilarity matrix 的过程很慢,在我这里花了将近 10 个小时。相比之下,k-medoids 的过程在内存允许的情况下,采用 向量化 的方法来做实际上还是很快的,并且通常只要数次迭代就能收敛了。实际的 k-medoids 实现可以在 mltk 中找到,今后如果有时间的话,我会陆续地把一些相关的比较通用的代码放到那里面。 最后,然我们来看看聚类的结果,由于聚类和分类不同,只是得到一些 cluster ,而并不知道这些 cluster 应该被打上什么标签,或者说,在这个问题里,包含了哪种语言的文档。由于我们的目的是衡量聚类算法的 performance ,因此直接假定这一步能实现最优的对应关系,将每个 cluster 对应到一种语言上去。一种办法是枚举所有可能的情况并选出最优解,另外,对于这样的问题,我们还可以用 Hungarian algorithm 来求解。 我们这里有 11 种语言,全排列有 11! = 39916800 种情况, 对于每一种排列,我们需要遍历一次 label list ,并数出真正的 label (语言)与聚类得出的结果相同的文档的个数,再除以总的文档个数,得到 accuracy 。假设每次遍历并求出 accuracy 只需要 1 毫秒的时间的话,总共也需要 11 个小时才能得到结果。看上去好像也不是特别恐怖,不过相比起来,用 Hungarian algorithm 的话,我们可以几乎瞬间得到结果。由于文章的篇幅已经很长了,就不在这里介绍具体的算法了,感兴趣的同学可以参考 Wikipedia ,这里我直接使用了一个现有的 Python 实现 。 虽然这个实验非常折腾,不过最后的结果其实就是一个数字:accuracy ——在我这里达到了 88.97% ,证明 k-medoids 聚类和 N-gram Profile 识别语言这两种方法都是挺不错的。最后,如果有感兴趣的同学,代码可以从 这里 下载。需要最新版的 scipy , munkres.py 和 mltk 以及 Python 2.6 。 漫谈 Clustering (番外篇): Vector Quantization 在接下去说其他的聚类算法之前,让我们先插进来说一说一个有点跑题的东西: Vector Quantization 。这项技术广泛地用在信号处理以及数据压缩等领域。事实上,在 JPEG 和 MPEG-4 等多媒体压缩格式里都有 VQ 这一步。 Vector Quantization 这个名字听起来有些玄乎,其实它本身并没有这么高深。大家都知道,模拟信号是连续的值,而计算机只能处理离散的数字信号,在将模拟信号转换为数字信号的时候,我们可以用区间内的某一个值去代替着一个区间,比如, 上的一个实数。现在要把它编码为 256 阶的灰阶图片,一个最简单的做法就是将每一个像素值x映射为一个整数floor(x*255)。当然,原始的数据空间也并不以一定要是连续的。比如,你现在想要把压缩这个图片,每个像素只使用 4 bit (而不是原来的 8 bit)来存储,因此,要将原来的 区间上的整数值用 上的整数值来进行编码,一个简单的映射方案是x*15/255。 不过这样的映射方案颇有些 Naive ,虽然能减少颜色数量起到压缩的效果,但是如果原来的颜色并不是均匀分布的,那么的出来的图片质量可能并不是很好。例如,如果一个 256 阶灰阶图片完全由 0 和 13 两种颜色组成,那么通过上面的映射就会得到一个全黑的图片,因为两个颜色全都被映射到 0 了。一个更好的做法是结合聚类来选取代表性的点。 实际做法就是:将每个像素点当作一个数据,跑一下 K-means ,得到 k 个 centroids ,然后用这些 centroids 的像素值来代替对应的 cluster 里的所有点的像素值。对于彩色图片来说,也可以用同样的方法来做,例如 RGB 三色的图片,每一个像素被当作是一个 3 维向量空间中的点。 用本文开头那张 Rechard Stallman 大神的照片来做一下实验好了,VQ 2、VQ 10 和 VQ 100 三张图片分别显示聚类数目为 2 、10 和 100 时得到的结果,可以看到 VQ 100 已经和原图非常接近了。把原来的许多颜色值用 centroids 代替之后,总的颜色数量减少了,重复的颜色增加了,这种冗余正是压缩算法最喜欢的。考虑一种最简单的压缩办法:单独存储(比如 100 个)centroids 的颜色信息,然后每个像素点存储 centroid 的索引而不是颜色信息值,如果一个 RGB 颜色值需要 24 bits 来存放的话,每个(128 以内的)索引值只需要 7 bits 来存放,这样就起到了压缩的效果。 VQ 2 VQ 100 VQ 10 漫谈Clustering(3)Gaussian Mixture Model 我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussian Mixture Model (GMM)。事实上,GMM 和 k-means 很像,不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clustering 上之外,还经常被用于 density estimation ),简单地说,k-means 的结果是每个数据点被 assign 到其中某一个 cluster 了,而 GMM 则给出这些数据点 被 assign 到每个 cluster 的概率 ,又称作 soft assignment 。 得出一个概率有很多好处,因为它的信息量比简单的一个结果要多,比如,我可以把这个概率转换为一个 score ,表示算法对自己得出的这个结果的把握。也许我可以对同一个任务,用多个方法得到结果,最后选取“把握”最大的那个结果;另一个很常见的方法是在诸如疾病诊断之类的场所,机器对于那些很容易分辨的情况(患病或者不患病的概率很高)可以自动区分,而对于那种很难分辨的情况,比如,49% 的概率患病,51% 的概率正常,如果仅仅简单地使用 50% 的阈值将患者诊断为“正常”的话,风险是非常大的,因此,在机器对自己的结果把握很小的情况下,会“拒绝发表评论”,而把这个任务留给有经验的医生去解决。 废话说了一堆,不过,在回到 GMM 之前,我们再稍微扯几句。我们知道,不管是机器还是人,学习的过程都可以看作是一种“归纳”的过程,在归纳的时候你需要有一些假设的前提条件,例如,当你被告知水里游的那个家伙是鱼之后,你使用“在同样的地方生活的是同一种东西”这类似的假设,归纳出“在水里游的都是鱼”这样一个结论。当然这个过程是完全“本能”的,如果不仔细去想,你也不会了解自己是怎样“认识鱼”的。另一个值得注意的地方是这样的假设并不总是完全正确的,甚至可以说总是会有这样那样的缺陷的,因此你有可能会把虾、龟、甚至是潜水员当做鱼。也许你觉得可以通过修改前提假设来解决这个问题,例如,基于“生活在同样的地方并且穿着同样衣服的是同一种东西”这个假设,你得出结论:在水里有并且身上长有鳞片的是鱼。可是这样还是有问题,因为有些没有长鳞片的鱼现在又被你排除在外了。 在这个问题上,机器学习面临着和人一样的问题,在机器学习中,一个学习算法也会有一个前提假设,这里被称作“ 归纳偏执 (bias) ”(bias 这个英文词在机器学习和统计里还有其他许多的意思)。例如线性回归,目的是要找一个函数尽可能好地拟合给定的数据点,它的归纳偏执就是“满足要求的函数必须是线性函数”。一个没有归纳偏执的学习算法从某种意义上来说毫无用处,就像一个完全没有归纳能力的人一样,在第一次看到鱼的时候有人告诉他那是鱼,下次看到另一条鱼了,他并不知道那也是鱼,因为两条鱼总有一些地方不一样的,或者就算是同一条鱼,在河里不同的地方看到,或者只是看到的时间不一样,也会被他认为是不同的,因为他无法归纳,无法提取主要矛盾、乎略次要因素,只好要求所有的条件都完全一样──然而哲学家已经告诉过我们了:世界上不会有任何样东西是完全一样的,所以这个人即使是有无比强悍的记忆力,也绝学不到任何一点 知识 。 这个问题在机器学习中称作“ 过拟合 (Overfitting) ”,例如前面的回归的问题,如果去掉“线性函数”这个归纳偏执,因为对于 N 个点,我们总是可以构造一个 N-1 次多项式函数,让它完美地穿过所有的这 N 个点,或者如果我用任何大于 N-1 次的多项式函数的话,我甚至可以构造出无穷多个满足条件的函数出来。如果假定特定领域里的问题所给定的数据个数总是有个上限的话,我可以取一个足够大的 N ,从而得到一个(或者无穷多个)“超级函数”,能够 fit 这个领域内所有的问题。然而这个(或者这无穷多个)“超级函数”有用吗?只要我们注意到 学习 的目的(通常)不是解释现有的事物,而是从中 归纳 出 知识 ,并能应用到 新的 事物上,结果就显而易见了。 没有归纳偏执或者归纳偏执太宽泛会导致 Overfitting ,然而另一个极端──限制过大的归纳偏执也是有问题的:如果数据本身并不是线性的,强行用线性函数去做回归通常并不能得到好结果。难点正在于在这之间寻找一个平衡点。不过人在这里相对于(现在的)机器来说有一个很大的优势:人通常不会孤立地用某一个独立的系统和模型去处理问题,一个人每天都会从各个来源获取大量的信息,并且通过各种手段进行整合处理,归纳所得的所有知识最终得以 统一 地存储起来,并能 有机 地组合起来去解决特定的问题。这里的“有机”这个词很有意思,搞理论的人总能提出各种各样的模型,并且这些模型都有严格的理论基础保证能达到期望的目的,然而绝大多数模型都会有那么一些“参数”(例如 K-means 中的 k ),通常没有理论来说明参数取哪个值更好,而模型实际的效果却通常和参数是否取到最优值有很大的关系,我觉得,在这里“有机”不妨看作是所有模型的参数已经自动地取到了最优值。另外,虽然进展不大,但是人们也一直都期望在计算机领域也建立起一个统一的知识系统(例如 语意网 就是这样一个尝试)。 废话终于说完了,回到 GMM 。按照我们前面的讨论,作为一个流行的算法,GMM 肯定有它自己的一个相当体面的归纳偏执了。其实它的假设非常简单,顾名思义,Gaussian Mixture Model ,就是假设数据服从 Mixture Gaussian Distribution ,换句话说,数据可以看作是从数个 Gaussian Distribution 中生成出来的。实际上,我们在 K-means 和 K-medoids 两篇文章中用到的那个例子就是由三个 Gaussian 分布从随机选取出来的。实际上,从 中心极限定理 可以看出,Gaussian 分布(也叫做正态 (Normal) 分布)这个假设其实是比较合理的,除此之外,Gaussian 分布在计算上也有一些很好的性质,所以,虽然我们可以用不同的分布来随意地构造 XX Mixture Model ,但是还是 GMM 最为流行。另外,Mixture Model 本身其实也是可以变得任意复杂的,通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布。 每个 GMM 由 个 Gaussian 分布组成,每个 Gaussian 称为一个“Component”,这些 Component 线性加成在一起就组成了 GMM 的概率密度函数: 根据上面的式子,如果我们要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 个 Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数 ,选中了 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布,转化为了已知的问题。 那么如何用 GMM 来做 clustering 呢?其实很简单,现在我们有了数据,假定它们是由 GMM 生成出来的,那么我们只要根据数据推出 GMM 的概率分布来就可以了,然后 GMM 的 个 Component 实际上就对应了 个 cluster 了。根据数据来推算概率密度通常被称作 density estimation ,特别地,当我们在已知(或假定)了概率密度函数的形式,而要估计其中的参数的过程被称作“参数估计”。 现在假设我们有 个数据点,并假设它们服从某个分布(记作 ),现在要确定里面的一些参数的值,例如,在 GMM 中,我们就需要确定 、 和 这些参数。 我们的想法是,找到这样一组参数,它所确定的概率分布生成这些给定的数据点的概率最大,而这个概率实际上就等于 ,我们把这个乘积称作 似然函数 (Likelihood Function) 。通常单个点的概率都很小,许多很小的数字相乘起来在计算机里很容易造成浮点数下溢,因此我们通常会对其取对数,把乘积变成加和 ,得到 log-likelihood function 。接下来我们只要将这个函数最大化(通常的做法是求导并令导数等于零,然后解方程),亦即找到这样一组参数值,它让似然函数取得最大值,我们就认为这是最合适的参数,这样就完成了参数估计的过程。 下面让我们来看一看 GMM 的 log-likelihood function : 由于在对数函数里面又有加和,我们没法直接用求导解方程的办法直接求得最大值。为了解决这个问题,我们采取之前从 GMM 中随机选点的办法:分成两步,实际上也就类似于 K-means 的两步。 估计数据由每个 Component 生成的概率(并不是每个 Component 被选中的概率):对于每个数据 来说,它由第 个 Component 生成的概率为 由于式子里的 和 也是需要我们估计的值,我们采用迭代法,在计算 的时候我们假定 和 均已知,我们将取上一次迭代所得的值(或者初始值)。 估计每个 Component 的参数:现在我们假设上一步中得到的 就是正确的“数据 由 Component 生成的概率”,亦可以当做该 Component 在生成这个数据上所做的贡献,或者说,我们可以看作 这个值其中有 这部分是由 Component 所生成的。集中考虑所有的数据点,现在实际上可以看作 Component 生成了 这些点。由于每个 Component 都是一个标准的 Gaussian 分布,可以很容易分布求出最大似然所对应的参数值: 其中 ,并且 也顺理成章地可以估计为 。 重复迭代前面两步,直到似然函数的值收敛为止。 当然,上面给出的只是比较“直观”的解释,想看严格的推到过程的话,可以参考 Pattern Recognition and Machine Learning 这本书的第九章。有了实际的步骤,再实现起来就很简单了。 covariance 矩阵 singular 的情况,可以参见 这篇文章 。 函数返回的Px是一个 的矩阵,对于每一个 ,我们只要取该矩阵第 行中最大的那个概率值所对应的那个 Component 为 所属的 cluster 就可以实现一个完整的聚类方法了。对于最开始的那个例子,GMM 给出的结果如下: 相对于 之前 K-means 给出的结果 ,这里的结果更好一些,左下角的比较稀疏的那个 cluster 有一些点跑得比较远了。当然,因为这个问题原本就是完全有 Mixture Gaussian Distribution 生成的数据,GMM (如果能求得全局最优解的话)显然是可以对这个问题做到的最好的建模。 另外,从上面的分析中我们可以看到 GMM 和 K-means 的迭代求解法其实非常相似(都可以追溯到 EM 算法 ,下一次会详细介绍),因此也有和 K-means 同样的问题──并不能保证总是能取到全局最优,如果运气比较差,取到不好的初始值,就有可能得到很差的结果。对于 K-means 的情况,我们通常是重复一定次数然后取最好的结果,不过 GMM 每一次迭代的计算量比 K-means 要大许多,一个更流行的做法是先用 K-means (已经重复并取最优值了)得到一个粗略的结果,然后将其作为初值(只要将 K-means 所得的 centroids 传入gmm函数即可),再用 GMM 进行细致迭代。 如我们最开始所讨论的,GMM 所得的结果(Px)不仅仅是数据点的 label ,而包含了数据点标记为每个 label 的概率,很多时候这实际上是非常有用的信息。最后,需要指出的是,GMM 本身只是一个模型,我们这里给出的迭代的办法并不是唯一的求解方法。感兴趣的同学可以自行查找相关资料。 漫谈 Clustering (番外篇): Expectation Maximization Expectation Maximization (EM) 是一种以迭代的方式来解决一类特殊最大似然 (Maximum Likelihood) 问题的方法,这类问题通常是无法直接求得最优解,但是如果引入隐含变量,在已知隐含变量的值的情况下,就可以转化为简单的情况,直接求得最大似然解。 我们会看到,上一次说到的 Gaussian Mixture Model 的迭代求解方法可以算是 EM 算法最典型的应用,而最开始说的 K-means 其实也可以看作是 Gaussian Mixture Model 的一个变种(固定所有的 ,并令 即可)。然而 EM 实际上是一种通用的算法(或者说是框架),可以用来解决很多类似的问题,我们最后将以一个中文分词的例子来说明这一点。 为了避免问题变得太抽象,我们还是先从上一次的 Gaussian Mixture Model 说起吧。回顾一下我们之前要解决的问题:求以下 Log-likelihood function 的最大值: 但是由于在 函数里面又有加和,没法直接求。考虑一下 GMM 生成 sample 的过程:先选一个 Component ,然后再从这个 Component 所对应的那个普通的 Gaussian Distribution 里进行 sample 。我们可以很自然地引入一个隐含变量 ,这是一个 维向量,如果第 个 Component 被选中了,那么我们讲其第 个元素置为 1 ,其余的全为 0 。那么,再来看看,如果除了之前的 sample 的值之外,我们同时还知道了每个 所对应的隐含变量 的值,情况又会变成怎么样呢? 因为我们同时观察到了 和 ,所以我们现在要最大化的似然函数也变为 。注意到 可以表示为: 而 的概率,当 的第 个元素为 1 的时候,亦即第 个 Component 被选中的时候,这个概率为 ,统一地写出来就是: 带入上面个式子,我们得到 的概率是一个大的乘积式(对比之前 是一个和式)。再替换到最开始的那个 Log-likelihood function 中,得到新的同时关于 sample 和隐含变量 的 Log-likelihood: 情况瞬间逆转,现在 和求和符号换了个位置,直接作用在普通的高斯分布上了,一下子就变成了可以直接求解的问题。不过,事情之所以能发展得如此顺利,完全依赖于一个我们伪造的假设:隐含变量的值已知。然而实际上我们并不知道这个值。问题的结症在这里了,如果我们有了这个值,所有的问题都迎刃而解了。回想一下,在类似的地方,我们是如何处理这样的情况的呢?一个很类似的地方就是(比如,在数据挖掘中)处理缺失数据的情况,一般有几种办法: 用取值范围类的随机值代替。 用平均值代替。 填 0 或者其他特殊值。 这里我们采取一种类似于平均值的办法:取期望。因为这里我们至少有 sample 的值,因此我们可以把这个信息利用起来,针对后验概率 来取期望。前面说过, 的每一个元素只有 0 和 1 两种取值,因此按照期望的公式写出来就是: 中间用 贝叶斯定理 变了一下形,最后得到的式子正是我们在 漫谈 GMM 中定义的 。因此,对于上面那个可以直接求解的 Log-likelihood function 中的 ,我们只要用其期望 亦即 代替即可。 到这里为止,看起来是一个非常完美的方法,不过仔细一看,发现还有一个漏洞:之前的 Log-likelihood function 可以直接求最大值是建立在 是已知情况下,现在虽然我们用 来代替了 ,但是实际上 是一个反过来以非常复杂的关系依赖所要求参数的一个式子,而不是一个“已知的数值”。解决这个问题的办法就是迭代。 到此为止,我们就勾勒出了整个 EM 算法的结构,同时也把上一次所讲的求解 GMM 的方法又推导了一遍。EM 名字也来源于此: Expectation 一步对应于求关于后验概率的期望亦即 ; Maximization 一步则对应于接下来的正常的最大似然的方法估计相关的参数亦即 、 和 。 如果你还没有厌烦这些公式的话,让我们不妨再稍微花一点时间,从偏理论一点的角度来简略地证明一下 EM 这个迭代的过程每一步都会对结果有所改进,除非已经达到了一个(至少是局部的)最优解。 现在我们的讨论将不局限于 GMM ,并使用一些稍微紧凑一点的符号。用 表示所有的 sample ,同时用 表示所有对应的隐含变量。我们的问题是要通过最大似然的方法估计出 中的参数 。在这里我们假设这个问题很困难,但是要优化 却很容易。这就是 EM 算法能够解决的那一类问题。 现在我们引入一个关于隐含变量的分布 。注意到对于任意的 ,我们都可以对 Log-likelihood Function 作如下分解: 其中 是分布 和 之间的 Kullback-Leibler divergence 。由于 Kullback-Leibler divergence 是非负的,并且只有当两个分布完全相同的时候才会取到 0 。因此我们可以得到关系 ,亦即 是 的一个下界。 现在考虑 EM 的迭代过程,记上一次迭代得出的参数为 ,现在我们要选取 以令 最大,由于 并不依赖于 ,因此 的上限(在 固定的时候)是一个定值,它取到这个最大值的条件就是 Kullback-Leibler divergence 为零,亦即 等于后验概率 。把它带入到 的表达式中可以得到 其中const是常量,而 则正是我们之前所得到的“同时包含了 sample 和隐含变量的 Log-likelihood function 关于后验概率的期望”,因此这个对应到 EM 中的“E”一步。 在接下来的“M”一步中,我们讲固定住分布 ,再选取合适的 以将 最大化,这次其上界 也依赖于变量 ,并会随着 的增大而增大(因为我们有前面的不等式成立)。一般情况下 增大的量会比 要多一些,这时候 Kullback-Leibler divergence 在新的参数 下又不为零了,因此我们可以进入下一轮迭代,重新回到“E”一步去求新的 ;另一方面,如果这里 Kullback-Leibler divergence 在新的参数下还是等于 0 ,那么说明我们已经达到了一个(至少是局部的)最优解,迭代过程可以结束了。 上面的推导中我们可以看到每一次迭代 E 和 M 两个步骤都是在对解进行改进,因此迭代的过程中得到的 likelihood 会逐渐逼近(至少是局部的)最优值。另外,在 M 一步中除了用最大似然之外,也可以引入先验使用 Maximum a Posteriori (MAP) 的方法来做。还有一些很困难的问题,甚至在迭代的过程中 M 一步也不能直接求出最大值,这里我们通过把要求放宽──并不一定要求出最大值,只要能够得到比旧的值更好的结果即可,这样的做法通常称作 Generalized EM (GEM)。 当然,一开始我们就说了,EM 是一个通用的算法,并不只是用来求解 GMM 。下面我们就来举一个用 EM 来做中文分词的例子。这个例子来源于论文 Self-supervised Chinese Word Segmentation 。我在上次 MSTC 搜索引擎系列小课堂讲文本处理的时候提到过。这里为了把注意力集中到 EM 上,我略去一些细节的东西,简单地描述一下基本的模型。 现在我们有一个字符序列 ,并希望得到一个模型 (依赖于参数 )能用来将其词的序列 。按照 生成模型 的方式来考虑,将 看成是由 生成的序列的话,我们自然希望找到那个生成 的可能性最大的 ,亦即通过最大似然的方式来估计参数 。 然而我们不知道似然函数 应该如何去优化,因此我们引入 latent variable ,如果我们知道 的话,似然值很容易求得: 其中 的值是从模型 中已知的。但是现在我们不知道 的值,因此我们转而取其关于后验概率的期望: 然后将这个期望针对 最大化即完成了 EM 的一次迭代。具体的做法通常是先把一个初始文本(比如所有的 的集合)按照 N-gram 分割(N-gram 在 讲 K-medoids 的那篇文章 中介绍过)为 ,形成一个最初的辞典,而模型 的参数 实际上就描述了各个 N-gram 的概率 ,初始值可以直接取为频率值。有了辞典之后对于任意的 ,我们可以根据辞典枚举出所有可能的分割 ,而每个分割的后验概率 就是其中的单词的概率乘积。其他的就是标准的 EM 算法的迭代步骤了。 实际上在实际产品中我们会使用一些带了更多启发式规则的分词方法(比如 MMSEG ),而这个方法更大的用处在于从一堆文本中“学习”出一个词典来(也就是 ),并且这个过程是全自动的,主要有两个优点: 不需要人参与手工分词、标记等。 能自动从文本中学习,换句话说,你给它一些某个领域的专业文章,它能从中学习到这个领域的专业词汇来。 不管怎样,以上两点看起来都非常诱人。不过理论离实际往往还是有不少差距的。我不知道实际分词系统中有没有在用这样的方法来做训练的。之前我曾经用 Wikipedia (繁体中文)上抓下来的一些数据跑过一下小规模的试验,结果还可以,但是也并不如想像中的完美。因为当时也并没有弄明白 EM 是怎么一回事,加上这个过程本身计算负荷还是非常大的,也就没有深入下去。也许以后有时间可以再尝试一下。 漫谈 Clustering (4): Spectral Clustering 如果说 K-means 和 GMM 这些聚类的方法是古代流行的算法的话,那么这次要讲的 Spectral Clustering 就可以算是现代流行的算法了,中文通常称为“谱聚类”。由于使用的矩阵的细微差别,谱聚类实际上可以说是一“类”算法。 Spectral Clustering 和传统的聚类方法(例如 K-means)比起来有不少优点: 和 K-medoids 类似,Spectral Clustering 只需要数据之间的相似度矩阵就可以了,而不必像 K-means 那样要求数据必须是 N 维欧氏空间中的向量。 由于抓住了主要矛盾,忽略了次要的东西,因此比传统的聚类算法更加健壮一些,对于不规则的误差数据不是那么敏感,而且 performance 也要好一些。许多实验都证明了这一点。事实上,在各种现代聚类算法的比较中,K-means 通常都是作为 baseline 而存在的。 计算复杂度比 K-means 要小,特别是在像文本数据或者平凡的图像数据这样维度非常高的数据上运行的时候。 突然冒出这么一个要求比 K-means 要少,结果比 K-means 要好,算得还比 K-means 快的东西,实在是让人不得不怀疑是不是江湖骗子啊。所以,是骡子是马,先拉出来溜溜再说。不过,在 K-medoids 那篇文章中曾经实际跑过 K-medoids 算法,最后的结果也就是一个 accuracy ,一个数字又不能画成图表之类的,看起来实在是没意思,而且 K-means 跑起来实在是太慢了,所以这里我还是稍微偷懒一下,直接引用一下一篇论文里的结果吧。 结果来自论文 Document clustering using locality preserving indexing 这篇论文,这篇论文实际上是提的另一种聚类方法(下次如果有机会也会讲到),不过在它的实验中也有 K-means 和 Spectral Clustering 这两组数据,抽取出来如下所示: k TDT2 Reuters-21578 K-means SC K-means SC 2 0.989 0.998 0.871 0.923 3 0.974 0.996 0.775 0.816 4 0.959 0.996 0.732 0.793 … 9 0.852 0.984 0.553 0.625 10 0.835 0.979 0.545 0.615 其中 TDT2 和 Reuters-21578 分别是两个被广泛使用的标准文本数据集,虽然在不同的数据集上得出来的结果并不能直接拿来比较,但是在同一数据集上 K-means 和 SC (Spectral Clustering) 的结果对比就一目了然了。实验中分别抽取了这两个数据集中若干个类别(从 2 类到 10 类)的数据进行聚类,得出的 accuracy 分别在上表中列出(我偷懒没有全部列出来)。可以看到,Spectral Clustering 这里完胜 K-means 。 这么强大的算法,再戴上“谱聚类”这么一个高深莫测的名号,若不是模型无比复杂、包罗宇宙,就肯定是某镇山之宝、不传秘籍吧?其实不是这样,Spectral Clustering 不管从模型上还是从实现上都并不复杂,只需要能求矩阵的特征值和特征向量即可──而这是一个非常基本的运算,任何一个号称提供线性代数运算支持的库都理应有这样的功能。而关于 Spectral Clustering 的秘籍更是满街都是,随便从地摊上找来一本,翻开便可以看到 Spectral Clustering 算法的全貌: 根据数据构造一个 Graph ,Graph 的每一个节点对应一个数据点,将相似的点连接起来,并且边的权重用于表示数据之间的相似度。把这个 Graph 用邻接矩阵的形式表示出来,记为 。一个最偷懒的办法就是:直接用我们前面在 K-medoids 中用的相似度矩阵作为 。 把 的每一列元素加起来得到 个数,把它们放在对角线上(其他地方都是零),组成一个 的矩阵,记为 。并令 。 求出 的前 个特征值(在本文中,除非特殊说明,否则“前 个”指按照特征值的大小从小到大的顺序) 以及对应的特征向量 。 把这 个特征(列)向量排列在一起组成一个 的矩阵,将其中每一行看作 维空间中的一个向量,并使用 K-means 算法进行聚类。聚类的结果中每一行所属的类别就是原来 Graph 中的节点亦即最初的 个数据点分别所属的类别。 就是这么几步,把数据做了一些诡异的变换,然后还在背后偷偷地调用了 K-means 。到此为止,你已经可以拿着它上街去招摇撞骗了。不过,如果你还是觉得不太靠谱的话,不妨再接着往下看,我们再来聊一聊 Spectral Clustering 那几个“诡异变换”背后的道理何在。 其实,如果你熟悉 Dimensional Reduction (降维)的话,大概已经看出来了,Spectral Clustering 其实就是通过 Laplacian Eigenmap 的降维方式降维之后再做 K-means 的一个过程──听起来土多了。不过,为什么要刚好降到 维呢?其实整个模型还可以从另一个角度导出来,所以,让我们不妨先跑一下题。 在 Image Processing (我好像之前有听说我对这个领域深恶痛绝?)里有一个问题就是对图像进行 Segmentation (区域分割),也就是让相似的像素组成一个区域,比如,我们一般希望一张照片里面的人(前景)和背景被分割到不同的区域中。在 Image Processing 领域里已经有许多自动或半自动的算法来解决这个问题,并且有不少方法和 Clustering 有密切联系。比如我们在谈 Vector Quantization 的时候就曾经用 K-means 来把颜色相似的像素聚类到一起,不过那还不是真正的 Segmentation ,因为如果仅仅是考虑颜色相似的话,图片上位置离得很远的像素也有可能被聚到同一类中,我们通常并不会把这样一些“游离”的像素构成的东西称为一个“区域”,但这个问题其实也很好解决:只要在聚类用的 feature 中加入位置信息(例如,原来是使用 R、G、B 三个值来表示一个像素,现在加入 x、y 两个新的值)即可。 另一方面,还有一个经常被研究的问题就是 Graph Cut ,简单地说就是把一个 Graph 的一些边切断,让他被打散成一些独立联通的 sub-Graph ,而这些被切断的边的权值的总和就被称为 Cut 值。如果用一张图片中的所有像素来组成一个 Graph ,并把(比如,颜色和位置上)相似的节点连接起来,边上的权值表示相似程度,那么把图片分割为几个区域的问题实际上等价于把 Graph 分割为几个 sub-Graph 的问题,并且我们可以要求分割所得的 Cut 值最小,亦即:那些被切断的边的权值之和最小,直观上我们可以知道,权重比较大的边没有被切断,表示比较相似的点被保留在了同一个 sub-Graph 中,而彼此之间联系不大的点则被分割开来。我们可以认为这样一种分割方式是比较好的。 实际上,抛开图像分割的问题不谈,在 Graph Cut 相关的一系列问题中,Minimum cut (最小割)本身就是一个被广泛研究的问题,并且有成熟的算法来求解。只是单纯的最小割在这里通常并不是特别适用,很多时候只是简单地把和其他像素联系最弱的那一个像素给分割出去了,相反,我们通常更希望分割出来的区域(的大小)要相对均匀一些,而不是一些很大的区块和一些几乎是孤立的点。为此,又有许多替代的算法提出来,如 Ratio Cut 、Normalized Cut 等。 不过,在继续讨论之前,我们还是先来定义一下符号,因为仅凭文字还是很难表述清楚。将 Graph 表示为邻接矩阵的形式,记为 ,其中 是节点 到节点 的权值,如果两个节点不是相连的,权值为零。设 和 为 Graph 的两个子集(没有交集),那么两者之间的 cut 可以正式定义为: 先考虑最简单的情况,如果把一个 Graph 分割为两个部分的话,那么 Minimum cut 就是要最小化 (其中 表示 的补集)。但是由于这样经常会出现孤立节点被分割出来的情况,因此又出现了 RatioCut : 以及 NormalizedCut : 其中 表示 中的节点数目,而 。两者都可以算作 的“大小”的一种度量,通过在分母上放置这样的项,就可以有效地防止孤立点的情况出现,达到相对平均一些的分割。事实上, Jianbo Shi 的这篇 PAMI paper: Normalized Cuts and Image Segmentation 正是把 NormalizedCut 用在图像分割上了。 搬出 RatioCut 和 NormalizedCut 是因为它们和这里的 Spectral Clustering 实际上有非常紧密的联系。看看 RatioCut ,式子虽然简单,但是要最小化它却是一个 NP 难问题,不方便求解,为了找到解决办法,让我们先来做做变形。 令 表示 Graph 的所有节点的集合,首先定义一个 维向量 : 再回忆一下我们最开始定义的矩阵 ,其实它有一个名字,叫做 Graph Laplacian ,不过,我们后面可以看到,其实有好几个类似的矩阵都叫做这个名字: Usually, every author just calls “his” matrix the graph Laplacian. 其实也可以理解,就好象现在所有的厂家都说自己的技术是“云计算”一样。这个 有一个性质就是: 这个是对任意向量 都成立的,很好证明,只要按照定义展开就可以得到了。把我们刚才定义的那个 带进去,就可以得到 另外,如果令 为各个元素全为 1 的向量的话,直接展开可以很容易得到 和 。由于 是一个常量,因此最小化 RatioCut 就等价于最小化 ,当然,要记得加上附加条件 以及 。 问题转化到这个样子就好求了,因为有一个叫做 Rayleigh quotient 的东西: 他的最大值和最小值分别等于矩阵 的最大的那个特征值和最小的那个特征值,并且极值在 等于对应的特征向量时取到。由于 是常数,因此最小化 实际上也就等价于最小化 ,不过由于 的最小的特征值为零,并且对应的特征向量正好为 (我们这里仅考虑 Graph 是联通的情况),不满足 的条件,因此我们取第二个小的特征值,以及对应的特征向量 。 到这一步,我们看起来好像是很容易地解决了前面那个 NP 难问题,实际上是我们耍了一个把戏:之前的问题之所以 NP 难是因为向量 的元素只能取两个值 和 中的一个,是一个离散的问题,而我们求的的特征向量 其中的元素可以是任意实数,就是说我们将原来的问题限制放宽了。那如何得到原来的解呢?一个最简单的办法就是看 的每个元素是大于零还是小于零,将他们分别对应到离散情况的 和 ,不过我们也可以采取稍微复杂一点的办法,用 的 K-means 来将 的元素聚为两类。 到此为止,已经有 Spectral Clustering 的影子了:求特征值,再对特征向量进行 K-means 聚类。实际上,从两类的问题推广到 k 类的问题(数学推导我就不再详细写了),我们就得到了和之前的 Spectral Clustering 一模一样的步骤:求特征值并取前 k 个最小的,将对应的特征向量排列起来,再按行进行 K-means 聚类。分毫不差! 用类似的办法,NormalizedCut 也可以等价到 Spectral Clustering 不过这次我就不再讲那么多了,感兴趣的话(还包括其他一些形式的 Graph Laplacian 以及 Spectral Clustering 和 Random walk 的关系),可以去看这篇 Tutorial : A Tutorial on Spectral Clustering 。 为了缓和一下气氛,我决定贴一下 Spectral Clustering 的一个简单的 Matlab 实现: function idx = spectral_clustering ( W, k ) D = diag ( sum ( W ) ) ; L = D-W; opt = struct ( 'issym' , true, 'isreal' , true ) ; = eigs ( L, D, k, 'SM' , opt ) ; idx = kmeans ( V, k ) ; end 最后,我们再来看一下本文一开始说的 Spectral Clustering 的几个优点: 只需要数据的相似度矩阵就可以了。这个是显然的,因为 Spectral Clustering 所需要的所有信息都包含在 中。不过一般 并不总是等于最初的相似度矩阵——回忆一下, 是我们构造出来的 Graph 的邻接矩阵表示,通常我们在构造 Graph 的时候为了方便进行聚类,更加强到“局部”的连通性,亦即主要考虑把相似的点连接在一起,比如,我们设置一个阈值,如果两个点的相似度小于这个阈值,就把他们看作是不连接的。另一种构造 Graph 的方法是将 n 个与节点最相似的点与其连接起来。 抓住了主要矛盾,忽略了次要的东西,Performance 比传统的 K-means 要好。实际上 Spectral Clustering 是在用特征向量的元素来表示原来的数据,并在这种“更好的表示形式”上进行 K-means 。实际上这种“更好的表示形式”是用 Laplacian Eigenmap 进行降维的后的结果,如果有机会,下次谈 Dimensionality Reduction 的时候会详细讲到。而降维的目的正是“抓住主要矛盾,忽略次要的东西”。 计算复杂度比 K-means 要小。这个在高维数据上表现尤为明显。例如文本数据,通常排列起来是维度非常高(比如,几千或者几万)的稀疏矩阵,对稀疏矩阵求特征值和特征向量有很高效的办法,得到的结果是一些 k 维的向量(通常 k 不会很大),在这些低维的数据上做 K-means 运算量非常小。但是对于原始数据直接做 K-means 的话,虽然最初的数据是稀疏矩阵,但是 K-means 中有一个求 Centroid 的运算,就是求一个平均值:许多稀疏的向量的平均值求出来并不一定还是稀疏向量,事实上,在文本数据里,很多情况下求出来的 Centroid 向量是非常稠密,这时再计算向量之间的距离的时候,运算量就变得非常大,直接导致普通的 K-means 巨慢无比,而 Spectral Clustering 等工序更多的算法则迅速得多的结果。 说了这么多,好像有些乱,不过也只能到此打住了。最后再多嘴一句,Spectral Clustering 名字来源于 Spectral theory ,也就是用特征分解来分析问题的理论了。 UPDATE 2011.11.23: 有不少同学问我关于代码的问题,这里更新两点主要的问题: 关于 LE 降维的维度和 Kmeans 聚类的类别数的关系:我上面的代码里,取成了一样的,但是这两者并不是要求一定要一样的。最初 Spectral Cluster 是分析聚两类的情况,就降到 1 维,然后用 thresholding 的方法来分成两类。对于K 类的情况,自然的类比就是降到 K-1 维,这也是和 LDA 保持一致。因为 Laplacian 矩阵的特征向量有一个全一的向量(对应于特征值 0 ),所以可以求 K 个特征向量然后把特征值 0 对应的那个特征向量去掉。但是在实际中并不一定要保持这两者一致的,也就是说,这个降维的维度可以作为一个参数进行调节的,选择效果好的参数。 关于示例代码:注意除非我在这里注明了是发布某个 software 或者 package 什么的,否则这里贴的代码主要都是为了示例作用,为了只显示出算法的主要部分,因此通常会省略掉一些实现细节,可以看成是“可执行的伪代码”,不推荐直接用这里的代码去跑实验之类的(包括其他 post 里的相关代码)。除非你想自己试验一下具体实现和改进,否则可以直接找网上现成的专用的 package ,比如 Spectral Clustering 可以考虑 这个包 。 漫谈 Clustering (番外篇): Dimensionality Reduction 由于总是有各种各样的杂事,这个系列的文章竟然一下子拖了好几个月,(实际上其他的日志我也写得比较少),现在决定还是先把这篇降维的日志写完。我甚至都以及忘记了在这个系列中之前有没有讲过“特征”(feature)的概念了,这里不妨再稍微提一下。机器学习应用到各个领域里,会遇到许多不同类型的数据要处理:图像、文本、音频视频以及物理、生物、化学等实验还有其他工业、商业以及军事上得到的各种数据,如果要为每一种类型的数据都设计独立的算法,那显然是非常不现实的事,因此,机器学习算法通常会采用一些标准的数据格式,最常见的一种格式就是每一个数据对应欧几里德空间里的一个向量。 如果原始的数据格式不兼容,那么就需要首先进行转换,这个过程通常叫做“特征提取”(Feature Extraction),而得到的标准数据格式通常叫做 Feature 。例如,一个最简单的将一个文本 Document 转化为向量的方法如下: 选定特征空间,这里采用三维欧氏空间,三个维度(依次)分别由 to 、be 和 the 表示。 假设待提取的文档是“To be, or not to be: that is the question:”,首先对其进行一些预处理,例如去掉单词的时态后缀、滤掉标点符号等,得到“to be or not to be that be the question”。 统计三个维度所对应的单词出现的频率:to 2 次,be 3 次,the 1 次。 该文档对应的向量即 。 当然,在实际中我们几乎不会这样人工设定空间的各个维度所对应的单词,而通常是从一个数据集中统计出所有出现的词,再将其中的一些挑选出来作为维度。怎样挑选呢?最简单的办法是根本不做任何挑选,或者简单地只是把出现频率太低的单词(维度)去掉。 不过,事实上我们通常会做更复杂一些的处理,例如,如果你是在做 sentiment analysis ,那么你通常会更加关注语气很重的词,比如 “bad”、“terrible”、“awesome” 等的重要性就比普通的词要大,此时你可以为每一个维度设一个权重,例如,给 “bad” 设置权重 2 ,那么出现 3 次的话,向量在该维度对应的值就为2*3 = 6。当然这样手工指定权重只在小范围内可行,如果要为数百万个维度指定权重,那显然是不可能的,另一个稍微自动一点的办法是 tf-idf 。 tf 就是 Term Frequency ,就和刚才说的单词出现的次数差不多,而 idf 则是 Inverse Document Frequency ,通常使用如下公式进行计算: 这相当于自动计算出来的每个单词的权重,其想法很简单:如果在许多文档中都出现的词(例如虚词、语气词等),它所包含的信息量通常会比较小,所以用以上的公式计算出来的权重也会相对较小;另一方面,如果单词并不是在很多文档中都出现的话,很有可能就是出现的那些文档的重要特征,因此权重会相对大一些。 前面说了一堆,其实主要是想要对 feature 做一些“预”处理,让它更“好”一些,手工设置维度的权重固然是很人力,其实 tf-idf 也是在假定了原始 feature 是 document 、term 这样的形式(或者类似的模型)的情况下才适用的(例如,在门禁之类的系统里,feature 可能有声音、人脸图像以及指纹等数据,就不能这样来处理),因此也并不能说是一种通用的方法。 然而,既然机器学习的算法可以在不考虑原始数据的来源和意义的情况下工作,那么 feature 的处理应该也可以。事实也是如此,包括 feature selection 和 dimensionality reduction 两个 topic 都有许多很经典的算法。前者通常是选出重要的 feature 的维度(并抛弃不重要的维度),而后者则是更广泛意义上的把一个高维的向量映射为一个低维向量,亦即“降维”,得到的结果 feature 的值已经不一定是原始的值,也可以把 feature selection 看作是 dimensionality reduction 的一种特殊情况。举一个例子,tf-idf 实际上不算 feature selection ,因为它(通常)并没有丢弃低权值的维度,并且处理过后的特征的每个维度都被乘上了一个权值,不再是原来的值了;但是它却可以被看作一种降维,虽然严格意义上来说维度并没有“降低”。简单来说降维可以看作一个函数,其输入是一个 D 维的向量,输出是一个 M 维的向量。 按照机器学习的方法的一贯作风,我们需要定义目标函数并进行最优化。不同的目标也就导致了不同的降维算法,这也正是今天要讲的话题。 然而,我们的目的究竟是什么呢?一个比较直接的问题是原始的数据量维度太高,我们无法处理,因此需要降维,此时我们通常希望在最大限度地降低数据的维度的前提下能够同时保证保留目标的重要的信息,就好比在做有损的数据压缩时希望压缩比尽量大但是质量损失不要太多。于是问题又转化为如何衡量对信息的保留程度了。 一个最直接的办法就是衡量 reconstruction error ,即 其中 是 所对应的低维表示再重新构造出来的高维形式,就相当于是压缩之后解压出来的结果,不过虽然有许多压缩方法都是无损的,就是说这个差值会等于零,但是大部分降维的结果都是有损的。不过我们仍然希望把上面的 reconstruction error 最小化。 另外一种方式是简单地使用 variance 来衡量所包含信息量,例如,我们要把一些 D 维的向量降为 1 维,那么我们希望这一维的 variance 达到最大化,亦即: 其中 是降维函数。推而广之,如果是降为 2 维,那么我希望第 2 维去关注第 1 维之外的 variance ,所以要求它在与第一维垂直的情况下也达到 variance 最大化。以此类推。 然而,当我们把降维函数 限定维线性的时候,两种途径会得到同样的结果,就是被广泛使用的 Principal Components Analysis (PCA) 。PCA 的降维函数是线性的,可以用一个 维的矩阵 来表示,因此,一个 D 维的向量 经过线性变换 之后得到一个 M 维向量,就是降维的结果。把原始数据按行排列为一个 维的矩阵 ,则 就是降维后的 维的数据矩阵,目标是使其 covariance 矩阵最大。在数据被规则化(即减去其平均值)过的情况下,协方差矩阵 (covariance) ,当然矩阵不是一个数,不能直接最大化,如果我们采用矩阵的 Trace (亦即其对角线上元素的和)来衡量其大小的话,要对 求最大化,只需要求出 的特征值和特征向量,将 M 个最大的特征值所对应的特征向量按列排列起来组成线性变换矩阵 即可。这也就是 PCA 的求解过程,得到的降维矩阵 可以直接用到新的数据上。如果熟悉 Latent Semantic Analysis (LSA) 的话,大概已经看出 PCA 和 Singular Value Decomposition (SVD) 以及 LSA 之间的关系了。以下这张图(引自《The Elements of Statistical Learning》)可以直观地看出来 PCA 做了什么,对于一些原始为二维的数据,PCA 首先找到了 variance 最大的那一个方向: PCA 作为一种经典的降维方法,被广泛地应用于机器学习、计算机视觉以及信息检索等各个领域,其地位类似于聚类中的 K-means ,在现在关于降维等算法的研究中也经常被作为 baseline 出现。然而,PCA 也有一些比较明显的缺点:一个就是 PCA 降维是线性变换,虽然线性变换计算方便,并且可以很容易地推广到新的数据上,然而有些时候线性变换也许并不合适,为此有许多扩展被提出来,其中一个就是 Kernel PCA ,用 Kernel Trick 来将 PCA 推广到非线性的情况。另外,PCA 实际上可以看作是一个具有 Gaussian 先验和条件概率分布的 latent variable 模型,它假定数据的 mean 和 variance 是重要的特征,并依靠 covariance 最大化来作为优化目标,而事实上这有时候对于解决问题帮助并不大。 一个典型的问题就是做聚类或分类,回想我们之前谈过的 Spectral Clustering ,就是使用 Laplacian eigenmap 降维之后再做 K-means 聚类,如果问题定下来了要对数据进行区分的话,“目的”就变得明朗了一些,也就是为了能够区分不同类别的数据,再考虑直观的情况,我们希望如果通过降维把高维数据变换到一个二维平面上的话,可以很容易“看”出来不同类别的数据被映射到了不同的地方。虽然 PCA 极力降低 reconstruction error ,试图得到可以代表原始数据的 components ,但是却无法保证这些 components 是有助于区分不同类别的。如果我们有训练数据的类别标签,则可以用 Fisher Linear Discriminant Analysis 来处理这个问题。 同 PCA 一样,Fisher Linear Discriminant Analysis 也是一个线性映射模型,只不过它的目标函数并不是 Variance 最大化,而是有针对性地使投影之后属于同一个类别的数据之间的 variance 最小化,并且同时属于不同类别的数据之间的 variance 最大化。具体的形式和推导可以参见《Pattern Classification》这本书的第三章 Component Analysis and Discriminants 。 当然,很多时候(比如做聚类)我们并不知道原始数据是属于哪个类别的,此时 Linear Discriminant Analysis 就没有办法了。不过,如果我们假设原始的数据形式就是可区分的的话,则可以通过保持这种可区分度的方式来做降维, MDS 是 PCA 之外的另一种经典的降维方法,它降维的限制就是要保持数据之间的相对距离。实际上 MDS 甚至不要求原始数据是处在一个何种空间中的,只要给出他们之间的相对“距离”,它就可以将其映射到一个低维欧氏空间中,通常是三维或者二维,用于做 visualization 。 不过我在这里并不打算细讲 MDS ,而是想说一下在 Spectral Clustering 中用到的降维方法 Laplacian Eigenmap 。同 MDS 类似,LE 也只需要有原始数据的相似度矩阵,不过这里通常要求这个相似度矩阵 具有局部性质,亦即只考虑局部领域内的相似性,如果点 和 距离太远的话, 应该为零。有两种很直接的办法可以让普通的相似度矩阵具有这种局部性质: 通过设置一个阈值,相似度在阈值以下的都直接置为零,这相当于在一个 -领域内考虑局部性。 对每个点选取 k 个最接近的点作为邻居,与其他的点的相似性则置为零。这里需要注意的是 LE 要求相似度矩阵具有对称性,因此,我们通常会在 属于 的 k 个最接近的邻居且/或反之的时候,就保留 的值,否则置为零。 构造好 之后再来考虑降维,从最简单的情况开始,即降到一维 ,通过最小化如下目标函数来实现: 从直观上来说,这样的目标函数的意义在于:如果原来 和 比较接近,那么 会相对比较大,这样如果映射过后 和 相差比较大的话,就会被权重 放大,因此最小化目标函数就保证了原来相近的点在映射过后也不会彼此相差太远。 令 为将 的每一行加起来所得到的对角阵,而 ,被称作是拉普拉斯矩阵,通过求解如下的特征值问题 易知最小的那个特征值肯定是 0 ,除此之外的最小的特征值所对应的特征向量就是映射后的结果。特征向量是一个 N 维列向量,将其旋转一下,正好是 N 个原始数据降到一维之后的结果。 类似地推广到 M 维的情况,只需要取除去 0 之外的最小的 M 个特征值所对应的特征向量,转置之后按行排列起来,就是降维后的结果。用 Matlab 代码写出来如下所示(使用了 knn 来构造相似度矩阵,并且没有用 heat kernel ): %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 事实上,Laplacian Eigenmap 假设数据分布在一个嵌套在高维空间中的低维流形上, Laplacian Matrix 则是流形的 Laplace Beltrami operator 的一个离散近似。关于流形以及 Laplacian Eigenmap 这个模型的理论知识就不在这里做更多地展开了,下面看一个比较直观的例子 Swiss Roll 。 Swiss Roll 是一个像面包圈一样的结构,可以看作一个嵌套在三维空间中的二维流形,如下图所示,左边是 Swiss Roll ,右边是从 Swiss Roll 中随机选出来的一些点,为了标明点在流形上的位置,给它们都标上了颜色。 而下图是 Laplacian Eigenmap 和 PCA 分别对 Swiss Roll 降维的结果,可以看到 LE 成功地把这个流形展开把在流形上属于不同位置的点映射到了不同的地方,而 PCA 的结果则很糟糕,几种颜色都混杂在了一起。 另外,还有一种叫做 Locally Linear Embedding 的降维方法,它同 LE 一样采用了流形假设,并假定平滑流形在局部具有线性性质,一个点可以通过其局部邻域内的点重构出来。首先它会将下式最小化 以求解出最优的局部线性重构矩阵 ,对于距离较远的点 和 , 应当等于零。这之后再把 当作已知量对下式进行最小化: 这里 成了变量,亦即降维后的向量,对这个式子求最小化的意义很明显了,就是要求如果原来的数据 可以以 矩阵里对应的系数根据其邻域内的点重构出来的话,那么降维过后的数据也应该保持这个性质。 经过一些变换之后得到的求解方法和 LE 类似,也是要求解一个特征值问题,实际上,从理论上也可以得出二者之间的联系(LE 对应于 而 LLE 对应于 ),如果感兴趣的话,可以参考 Laplacian Eigenmaps for Dimensionality Reduction and Data Representation 这篇论文里的对比。下面是两种方法在 Swiss Roll 数据上的结果,也是非常相似的: 有一点需要注意的是,LE 和 LLE 都是非线性的方法,PCA 得到的结果是一个投影矩阵,这个结果可以保存下来,在之后对任意向量进行投影,而 LE 和 LLE都是直接得出了数据降维之后的结果,但是对于新的数据,却没有得到一个“降维函数”,没有一个合适的方法得到新的数据的降维结果。所以,在人们努力寻求非线性形式扩展 PCA 的时候,另一些人则提出了 LE 和 LLE 的线性形式,分别叫做 Locality Preserving Projection 和 Neighborhood Preserving Embedding 。 在 LPP 中,降维函数跟 PCA 中一样被定为是一个线性变换,用一个降维矩阵 来表示,于是 LE 的目标函数变为 经过类似的推导,最终要求解的特征值问题如下: 得到的按照特征值从小到大排序的特征向量就组成映射矩阵 ,和 LE 不同的是这里不需要去掉第一个特征向量。另一点是在 LE 中的特征值是一个稀疏的特征值问题,在只需要求解最小的几个特征值的时候可以比较高效地求解,而这里的矩阵在乘以 之后通常就不再稀疏了,计算量会变得比较大,这个问题可以使用 Spectral Regression 的方法来解决,参见 Spectral Regression: A Unified Approach for Sparse Subspace Learning 这篇 paper 。如果采用 Kernel Trick 再把 LPP 非线性化的话,又会回到 LE 。而 LLE 的线性版本 NPE 也是采用了类似的办法来得到的,就不在这里多讲了。 另外,虽然 LE 是 unsupervised 的,但是如果训练数据确实有标签可用,也是可以加以利用的——在构造相似度矩阵的时候,属于同一类别的相似度要大一些,而不同类别的相似度则会小一些。 当然,除去聚类或分类之外,降维本身也是一种比较通用的数据分析的方法,不过有许多人批评降维,说得到的结果没有意义,不用说非线性,就是最简单的线性降维,除去一些非藏极端的特殊情况的话,通常将原来的分量线性组合一下都不会得到什么有现成的物理意义的量了。然而话也说回来,现在的机器学习几乎都是更 prefer “黑盒子”式的方法吧,比如决策树,各个分支对应与变量的话,它的决策过程其实人是可以“看到”或者说“理解”的,但是 SVM 就不那么“直观“了,如果再加上降维处理,就更加“不透明”了。不过我觉得这没什么不好的,如果只是靠可以清晰描诉出来的 rule 的话,似乎感觉神秘感不够,没法发展出“智能”来啊 ^_^bb 最后,所谓有没有物理意义,其实物理量不过也都是人为了描述问题方便而定义出来的吧。 漫谈 Clustering (5): Hierarchical Clustering 系列不小心又拖了好久,其实正儿八经的 blog 也好久没有写了,因为比较忙嘛,不过觉得 Hierarchical Clustering 这个话题我能说的东西应该不多,所以还是先写了吧(我准备这次一个公式都不贴 )。Hierarchical Clustering 正如它字面上的意思那样,是层次化的聚类,得出来的结构是一棵树,如右图所示。在前面我们介绍过不少聚类方法,但是都是“平坦”型的聚类,然而他们还有一个更大的共同点,或者说是弱点,就是难以确定类别数。实际上,(在某次不太正式的电话面试里)我曾被问及过这个问题,就是聚类的时候如何确定类别数。 我能想到的方法都是比较 naive 或者比较不靠谱的,比如: 根据数据的来源使用领域相关的以及一些先验的知识来进行估计——说了等于没有说啊…… 降维到二维平面上,然后如果数据形状比较好的话,也许可以直观地看出类别的大致数目。 通过谱分析,找相邻特征值 gap 较大的地方——这个方法我只了解个大概,而且我觉得“较大”这样的词也让它变得不能自动化了。 当时对方问“你还有没有什么问题”的时候我竟然忘记了问他这个问题到底有没有什么更好的解决办法,事后真是相当后悔啊。不过后来在实验室里询问了一下,得到一些线索,总的来说复杂度是比较高的,待我下次有机会再细说(先自己研究研究)。 不过言归正传,这里要说的 Hierarchical Clustering 从某种意义上来说也算是解决了这个问题,因为在做 Clustering 的时候并不需要知道类别数,而得到的结果是一棵树,事后可以在任意的地方横切一刀,得到指定数目的 cluster ,按需取即可。 听上去很诱人,不过其实 Hierarchical Clustering 的想法很简单,主要分为两大类:agglomerative(自底向上)和 divisive(自顶向下)。首先说前者,自底向上,一开始,每个数据点各自为一个类别,然后每一次迭代选取距离最近的两个类别,把他们合并,直到最后只剩下一个类别为止,至此一棵树构造完成。 看起来很简单吧? 其实确实也是比较简单的,不过还是有两个问题需要先说清除才行: 如何计算两个点的距离?这个通常是 problem dependent 的,一般情况下可以直接用一些比较通用的距离就可以了,比如欧氏距离等。 如何计算两个类别之间的距离?一开始所有的类别都是一个点,计算距离只是计算两个点之间的距离,但是经过后续合并之后,一个类别里就不止一个点了,那距离又要怎样算呢?到这里又有三个变种: Single Linkage:又叫做 nearest-neighbor ,就是取两个集合中距离最近的两个点的距离作为这两个集合的距离,容易造成一种叫做 Chaining 的效果,两个 cluster 明明从“大局”上离得比较远,但是由于其中个别的点距离比较近就被合并了,并且这样合并之后 Chaining 效应会进一步扩大,最后会得到比较松散的 cluster 。 Complete Linkage:这个则完全是 Single Linkage 的反面极端,取两个集合中距离最远的两个点的距离作为两个集合的距离。其效果也是刚好相反的,限制非常大,两个 cluster 即使已经很接近了,但是只要有不配合的点存在,就顽固到底,老死不相合并,也是不太好的办法。 Group Average:这种方法看起来相对有道理一些,也就是把两个集合中的点两两的距离全部放在一起求一个平均值,相对也能得到合适一点的结果。 总的来说,一般都不太用 Single Linkage 或者 Complete Linkage 这两种过于极端的方法。整个 agglomerative hierarchical clustering 的算法就是这个样子,描述起来还是相当简单的,不过计算起来复杂度还是比较高的,要找出距离最近的两个点,需要一个双重循环,而且 Group Average 计算距离的时候也是一个双重循环。 另外,需要提一下的是本文一开始的那个树状结构图,它有一个专门的称呼,叫做 Dendrogram ,其实就是一种二叉树,画的时候让子树的高度和它两个后代合并时相互之间的距离大小成比例,就可以得到一个相对直观的结构概览。不妨再用 最开始 生成的那个三个 Gaussian Distribution 的数据集来举一个例子,我采用 Group Average 的方式来计算距离,agglomerative clustering 的代码很简单,没有做什么优化,就是直接的双重循环: 数据点又一千多个,画出来的 dendrogram 非常大,为了让结果看起来更直观一点,我把每个叶节点用它本身的 label 来染色,并且向上合并的时候按照权重混合一下颜色,最后把图缩放一下得到这样的一个结果(点击查看原图): 或者可以把所有叶子节点全部拉伸一下看,在右边对齐,似乎起来更加直观一点: 从这个图上可以很直观地看出来聚类的结果,形成一个层次,而且也在总体上把上个大类分开来了。由于这里我把图横过来画了,所以在需要具体的 flat cluster 划分的时候,直观地从图上可以看成竖着划一条线,打断之后得到一片“森林”,再把每个子树里的所有元素变成一个“扁平”的集合即可。完整的 Python 代码如下: agglomerative clustering 差不多就这样了,再来看 divisive clustering ,也就是自顶向下的层次聚类,这种方法并没有 agglomerative clustering 这样受关注,大概因为把一个节点分割为两个并不如把两个节点结合为一个那么简单吧,通常在需要做 hierarchical clustering 但总体的 cluster 数目又不太多的时候可以考虑这种方法,这时可以分割到符合条件为止,而不必一直分割到每个数据点一个 cluster 。 总的来说,divisive clustering 的每一次分割需要关注两个方面:一是选哪一个 cluster 来分割;二是如何分割。关于 cluster 的选取,通常采用一些衡量松散程度的度量值来比较,例如 cluster 中距离最远的两个数据点之间的距离,或者 cluster 中所有节点相互距离的平均值等,直接选取最“松散”的一个 cluster 来进行分割。而分割的方法也有多种,比如,直接采用普通的 flat clustering 算法(例如 k-means)来进行二类聚类,不过这样的方法计算量变得很大,而且像 k-means 这样的和初值选取关系很大的算法,会导致结果不稳定。另一种比较常用的分割方法如下: 待分割的 cluster 记为 G ,在 G 中取出一个到其他点的平均距离最远的点 x ,构成新 cluster H; 在 G 中选取这样的点 x’ ,x’ 到 G 中其他点的平均距离减去 x’ 到 H 中所有点的平均距离这个差值最大,将其归入 H 中; 重复上一个步骤,直到差值为负。 到此为止,我的 hierarchical clustering 介绍就结束了。总的来说,在我个人看来,hierarchical clustering 算法似乎都是描述起来很简单,计算起来很困难(计算量很大)。并且,不管是 agglomerative 还是 divisive 实际上都是贪心算法了,也并不能保证能得到全局最优的。而得到的结果,虽然说可以从直观上来得到一个比较形象的大局观,但是似乎实际用处并不如众多 flat clustering 算法那么广泛。
个人分类: 科研笔记|6946 次阅读|6 个评论
机器学习检索关键词汇总
gdkldkygzz 2012-9-27 22:22
1、多项式分布 2、文本的多项式分布建模 3、共轭先验 4、概率平滑{Lapace平滑、加1平滑、Dirichlet贝叶斯平滑、2阶段语言模型} 5、似然函数 6、log似然函数 7、期望最大化算法 8、条件概率 9、贝叶斯全公式 10、生成模型 11、判别模型 12、条件期望 13、拉格朗日系数 14、VSM,LSI,PLSI,LDA。。。 15、CRF、HMM、SVM、NN、DT、MEM。。。 16、协同过滤 17、expert finding 18、信息抽取 19、贝叶斯决策论 20、KL-divergence 21、熵、条件熵、交叉熵、互信息 22、最大似然同交叉熵之间的联系 23、一般图模型的画法以及其含义 24、马尔可夫性质 25、Gibbs Sampling或者就是Sampling 26、Varitional inference 27、Simplex 28、各种概率分布:Gauss、多重贝努力、Beta、Dirichlet。。。 29、贝叶斯网络 30、各种排序方法的评估:如NDCG 31、自然语言中各种名词的含义:如WSD 32、基本概念:监督学习、半监督学习、无监督学习等等 33、维度规约 34、假设检验 35、特征提取的基本方法 36、文本分类、聚类的基本方法 37、PageRank,HITS等基本方法 38、TrustRank 39、 Web Spam 40、信息检索的基本模型:VSM、LM、RSJ、BIR等等 41、Okapi 42、如何创建评测集合:pooling 43、文本采样的方法: shingling、fingerprint 44、feedback的基本方法 45、TRANSLATION MODEL 46、Kernal Method 47、Active learning 48、语言模型/n-gram 49、Discriminative Mode、Generative Mode 50、Exchangeable random variables
个人分类: 未分类|4791 次阅读|0 个评论
[转载]机器学习新动向:从人机交互中学习
timy 2012-9-16 20:57
转载于: http://blog.sina.com.cn/s/blog_7ad48fee01016d25.html 在《机器学习正在改变我们的工作与生活》一文中,分析了为什么机器学习会成为计算机系统智能化的最有力手段。在《统计学习方法》一书中,介绍了机器学习的 最常用、最基本的方法。本文综观机器学习研究的一个新动向:从人机交互中获取数据,学习构建模型。首先讨论机器学习到底需要多少训练数据;然后介绍通过人 机交互获取训练数据的方法,包括日志数据挖掘、众包、人机协同计算;最后通过实例介绍如何使用从人机交互中获得的数据进行机器学习。 1. 机器学习到底需要多少数据? 统计机器学习中的一个重要环节就是生成训练数据。我们必然产生一个疑问,到底准备多少训练数据才能让机器学习到一个足够精确的模型?统计机器学习理论中称之为样本复杂度(sample complexity)问题。这是一个难解的问题,虽然有许多研究,但只有部分结论。 下面介绍奥卡姆剃刀定理,它能给出二类分类学习中的样本复杂度的一个结果。其结论是二类分类学习的样本复杂度,即需要的样本数目,与学习的精度、学习的确 信度、以及模型的复杂度有关。学习精度越高,学习确信度越高,学习模型越复杂,所需要的样本也就越多。样本复杂度满足以下不等式 从这个不等式可以推断,即使学习一个简单的二类分类模型,所需的最小样本数也是相当大的。当然这个定理考虑的是最坏情况,实际需要的最小样本数会更小一些。经验上,要精确地学习一个模型,至少需要模型参数个数的数百倍的样本。所以,机器学习需要的训练样本量是非常大的。 通常训练数据的生成依靠专业人员标注。比如在人脸检测中,往往雇用大量专业人员对图片中出现的人脸进行标注。需要标注在不同光线、不同背景下,图片中不同年龄、种族、性别的人物的脸部,以便能够覆盖各种情况下的人脸检测。 如何收集大量的高质量的数据成为机器学习的一个巨大挑战。最近的一个新趋势是通过人机交互,包括日志数据挖掘、众包、人机协同计算,获取大量高质量训练数据。 2. 日志数据挖掘、众包、人机协同计算 在计算机应用系统中记录用户的使用行为,将其用于系统性能提高是日志数据挖掘的基本想法。日志数据挖掘也可以用于机器学习的训练数据生成。比如,互联网搜 索引擎会记录用户查询的点击数据,包括用户提交的查询,系统返回的URL,以及用户点击的其中的URL。点击数据反映了上亿的用户对搜索结果的反馈,对提 高搜索引擎的相关排序是非常有用的。如果系统本身是基于机器学习的话,那么这些廉价的点击数据就可以用于机器学习的训练。用户在提供数据的过程中不需花费 多余的代价,只需要自然地使用应用系统即可。不过,用户行为数据往往含有一定噪音,怎样去除噪音,提高训练数据的质量是需要考虑的问题。 众包(crowdsourcing)是另一种方式,Amazon Mechanical Turk是其代表。将数据标注作为任务,在网上市场上进行任务交易,实现数据的标注。数据收集者将标注任务的展示在市场上;市场中有大量注册会员,称为工 人,工人根据自己的能力、兴趣选择任务,进行数据标注,得到一定报酬(一般金额较低),有些工人将其作为获得收入的办法,也有一些工人将其作为娱乐、学 习、消磨时间的途径。标注工作对人来说通常是简单的,比如人脸检测,但是对机器来说往往是非常困难的。这样就可以通过大量人工标注数据很快地构建一个智能 系统。互联网将人们联系在一起,使众包成为可能。 还有一种方式是通过一些特别设计的游戏来获取数据。比如,ESP游戏中,给两个玩者同时展示一个图片,让他们各自独立地对图片进行标注;如果两人标注的标记一致,就都得分,如果不一致,就都不得分。两个玩者都有很强的动机将标注做得准确,而他们给出的标记必然是基于常识的,这就为图片的自动标注提供了高质量的训练数据。Google的图片搜索就采用了这样的方法进行图片标注。 还一个例子是ReCAPTCHA。用户在登录网站时通常需要输入验证码,很多网站采用了ReCAPTCHA系统产生验证码。验证码分两段;一段有正确答 案,用于鉴别登录是来自真人还是机器人,另一段没有正确答案,用于OCR训练数据的收集;但用户不知道哪一段是真正用于验证的。用户的输入变成训练数据, 用于OCR学习,特别是困难问题的学习。ReCAPTCHA的数据用于图书的数字化,大量用户在网上对这项工程做出了贡献。 ESP游戏和ReCAPTCHA都是杰出的青年科学家Luis von Ahn提出的。von Ahn将这些方法进一步升华,提出了人机协同计算(Human Computation)概念。可以认为世界上两种计算机,一种是电子计算机,另一种就是人本身的“计算机”。两种计算机各有所长,可以互相取长补短,协同合作,完成任务。这就是人机协同计算的主要想法。 总之,有三种方式帮助收集数据,日志数据挖掘、众包、人机协同计算。日志数据挖掘中,用户无意识地提供了数据。众包和人机协同计算中,用户有意识地提供了数据,一个是得到经济上的报酬,另一个是得到其他的满足。 3. 有效利用人机交互数据 只要我们能够很好地设计数据获取的方法,以及机器学习的方法,并且将两者很好地结合起来,就能极大地提高机器学习的性能。这里举一个例子,是我以前在微软亚洲研究院与同事们做的一个工作,我们称之为匹配学习(learning to match)。 图片标注数据 学习到的图片与标记的相似度 假设有两个空间涵盖两种异质数据,例如,图片与标记,查询语句与网页。如果我们能够得到部分异质数据的匹配关系,就可以利用匹配学习的方法学到所有异质数 据的匹配关系,也就是异质数据的相似度。而这个学习任务中的训练数据可以从人机协同计算、日志数据挖掘中获取。事实上,只要能获得足够多的数据,就能学习 到很好的匹配模型。在互联网搜索中学到的查询与网页匹配的模型比经典的BM25、语言模型等有更好的性能。基于大规模数据的图片标注学习使计算机对图片的 “语义理解”变为可能。以上两图给出匹配学习用于图片标注时的示例。 4. 机遇与挑战 事实证明从人机交互中获取数据是提高机器学习的有效手段。日志数据挖掘、众包、人机协同计算的方式孕育着巨大的可能性、同时也带来众多的挑战。设计数据收集方法时,我们需要考虑,如何调动大众,如何处理大数据,如何保证数据的质量,如何用于具体应用;设计学习方法时,我们需要考虑,如何实施大规模机器学习,如何提高学习的准确性。人机交互中学习还有许多有趣的问题正在等待我们的解决。 5. 致谢 本文的撰写在与杨强教授等的讨论中得到了启发,介绍的工作是与武威博士、徐君博士等的合作成果。受刘江主编邀请在全国软件开发者大会上作了相同内容的大会报告。在此对他们表示衷心感谢。 参考文献 1.李航,《机器学习正在改变我们的工作与生活》,新浪博客,2011。 2.李航,《统计学习方法》,清华大学出版社,2012。 3. David McAllester, Occam's Razor Theorem, Lecture Notes. 4.Edith Law and Luis von Ahn, Human Computation, Morgan Claypool Publisher, 2011. 5.Wei Wu, Hang Li, and Jun Xu, Learning Query and Document Similarities from Click-through Bipartite Graph with Metadata, Microsoft Research Technical Report, MSR-TR-2011-126, 2011.
个人分类: 机器学习|3970 次阅读|0 个评论
[CODE]牛津一美女写的一个PHOG代码
热度 1 qianli8848 2012-9-13 09:33
[CODE]牛津一美女写的一个PHOG代码
PHOG descriptor Code Download the PHOG code . It computes the PHOG descriptor over a Region Of Interest (ROI). If you want to compute the descriptor for the whole image the ROI is the image size. 链接: http://www.robots.ox.ac.uk/~vgg/research/caltech/phog.html
个人分类: CODE|11342 次阅读|1 个评论
[转载]MIT人工智能实验室:如何做研究
qianli8848 2012-9-11 09:06
麻省理工学院人工智能实验室AIWorkingPaper316 作者:人工智能实验室全体研究生 编辑:DavidChapman版本:1.31988年9月 译者:柳泉波北京师范大学信息学院2000级博士生 摘要本文的主旨是解释如何做研究。我们提供的这些建议,对做研究本身(阅读、写作和程序设计),理解研究过程以及开始热爱研究(方法论、选题、选导师和情感因素),都是极具价值的。 备注人工智能实验室的WorkingPapers用于内部交流,包含的信息由于过于初步或者过于详细而无法发表。不像正式论文那样,会列出所有的参考文献。 1简介 1.1这是什么? 并没有什么灵丹妙药可以保证在研究中取得成功,本文只是列举了一些可能会有所帮助的非正式意见。 1.2目标读者是谁? 本文档主要是为MIT人工智能实验室新入学的研究生而写,但对于其他机构的人工 智能研究者也很有价值。即使不是人工智能领域的研究者,也可以从中发现对自己 有价值的部分。 1.3如何使用? 要精读完本文,太长了一些,最好是采用浏览的方式。很多人觉得下面的方法很有 效:先快速通读一遍,然后选取其中与自己当前研究项目有关的部分仔细研究。 (1)本文档被粗略地分为两部分。第一部分涉及研究者所需具备的各种技能:阅 读、写作和程序设计等。第二部分讨论研究过程本身:研究究竟是怎么回事,如何 做研究,如何选题和选导师,如何考虑研究中的情感因素。很多读者反映,从长远 看,第二部分比第一部分更有价值,也更让人感兴趣。 (2)如何通过阅读打好AI研究的基础。列举了重要的AI期刊,并给出了一些阅读 的诀窍。 (3)如何成为AI研究领域的一员。与相关人员保持联系,他们可以使你保持对研 究前沿的跟踪,知道应该读什么材料。 (4)学习AI相关领域的知识。对几个领域都用有基本的理解,对于一个或者两个 领域要精通。 (5)如何做研究笔记。 (6)如何写期刊论文和毕业论文。如何为草稿写评审意见,如何利用别人的评审 意见。如何发表论文。 (7)如何做研究报告。 (8)关于程序设计。AI程序设计与平常大家习惯的程序设计有什么不同。 (9)如何选导师。这是研究生生涯的最重要的问题,不同的导师具有不同的风格 ,本节的意见有助于你找到合适的导师。导师是你必须了解如何利用的资源。 (10)关于毕业论文。毕业论文将占据研究生生涯的大部分时间,本部分涉及如何 选题,以及如何避免浪费时间。 (11)有关研究方法论。本节的内容较少,尚不完善。 (12)研究过程中的情感因素。这或许是最重要的一节,包括如何面对失败、如何 设定目标、如何避免不安全感、如何保持自信和享受快乐等。 2阅读 很多研究人员要花一半的时间阅读文献。其实从别人的工作中也可以很快地学到很多东西。本节讨论的是AI中的阅读,在第4节将论述其他相关主题的阅读。阅读文献要始于刚刚入学的今日。一旦你开始写作论文,就没有多少时间了,那时的阅读主要集中于与论文主题相关的文献。在研究生的头两年,大部分的时间要用于做课程作业和打基础。此时,阅读课本和出版的期刊文章就可以了。(以后,你将主要阅读文章的草稿,参看第节)。 在本领域打下坚实的基础所需要的阅读量,是令人望而却步的。但既然AI只是一个很小的研究领域,因此你仍然可以花几年的时间阅读本领域已出版的数量众多论文中最基本的那部分。一个有用的小技巧是首先找出那些最基本的论文。此时可以参考一些有用的书目:例如研究生课程表,其他学校(主要是斯坦福大学)研究生录 取程序的建议阅读列表,这些可以让你有一些初步的印象。如果你对AI的某个子领域感兴趣,向该领域的高年级研究生请教本领域最重要的十篇论文是什么,如果可以,借过来复印。最近,出现 了很多精心编辑的有关某个子领域的论文集,尤其是Morgan-Kauffman出版的。 AI实验室有三种内部出版物系列:WorkingPapers,Memos和TechnicalReports,正式的程度依次增加,在八层的架子上可以找到它们。回顾最近几年的出版物,那些非常感兴趣的复制下来。这不仅是由于其中很多都是意义重大的论文,对于了解实验室成员的工作进展也是很重要的。 有关AI的期刊有很多,幸运的是,只有一部分是值得看的。最核心的期刊是ArtificialIntelligence(也有写作"theJournalofArtificialIntelligence"或者"AIJ"的)。AI领域真正具备价值的论文最终都会投往AIJ,因此值得浏览每一年每一期的内容;但是该期刊也有很多论文让人心烦。 ComputationalIntelligence是另外一本值得一看的期刊。 CognitiveScience也出版很多意义重大的AI论文。 MachineLearning是机器学习领域最重要的资源。 IEEEPAMI(PatternAnalysisandMachineIntelligence)是最好的有关视觉的期刊,每期都有两三篇有价值的论文。 InternationalJournalofComputerVision(IJCV)是最新创办的,到目前为止还是有价值的。RoboticsResearch的文章主要是关于动力学的,有时候也有划时代的智能机器人论文。 IEEERoboticsandAutomation偶尔有好文章。 每年都应该去所在学校的计算机科学图书馆(在MIT的TechSquare的一层),翻阅其他院校出版的AI技术报告,并选出自己感兴趣的仔细加以阅读。 阅读论文是需要练习的技能。不可能完整地阅读所有的论文。阅读论文可分为三个阶段:第一阶段是看论文中是否有感兴趣的东西。AI论文含有摘要,其中可能有内容的介绍,但是也有可能没有或者总结得不好,因此需要你跳读,这看一点那看一点,了解作者究竟做了些什么。内容目录(thetableofcontents)、结论部分 (conclusion)和简介(introduction)是三个重点。如果这些方法都不行,就只好顺序快速浏览了。一旦搞清楚了论文的大概和创新点,就可以决定是否需要进行第二阶段了。在第二阶段,要找出论文真正具有内容的部分。很多15页的论文可以重写为一页左右的篇幅;因此需要你寻找那些真正激动人心的地方,这经常隐藏于某个地方。论文作者从其工作中所发现的感兴趣的地方,未必是你感兴趣的,反之亦然。最后,如果觉得该论文确实有价值,返回去通篇精读。 读论文时要牢记一个问题,"我应该如何利用该论文?""真的像作者宣称的那样么?""如果……会发生什么?"。理解论文得到了什么结论并不等同于理解了该论文。理解论文,就要了解论文的目的,作者所作的选择(很多都是隐含的),假设和形式化是否可行,论文指出了怎样的方向,论文所涉及领域都有哪些问题,作者的 研究中持续出现的难点模式是什么,论文所表达的策略观点是什么,诸如此类。 将阅读与程序设计联系在一起是很有帮助的。如果你对某个领域感兴趣,在阅读了一些论文后,试试实现论文中所描述的程序的"玩具"版本。这无疑会加深理解。可悲的是,很多AI实验室天生就是孤僻的,里面的成员主要阅读和引用自己学校实验室的工作。要知道,其他的机构具有不同的思考问题的方式,值得去阅读,严肃 对待,并引用它们的工作,即使你认为自己明晓他们的错误所在。经常会有人递给你一本书或者一篇论文并告诉你应该读读,因为其中有很闪光的地方且/或可以应用到你的研究工作中。但等你阅读完了,你发现没什么特别闪光的地方,仅仅是勉强可用而已。于是,困惑就来了,"我哪不对啊?我漏掉什么了吗?"。实际上,这是因为你的朋友在阅读书或论文时,在头脑中早已形成的一些想法的催化下,看出了其中对你的研究课题有价值的地方。 3建立关系 一两年后,对自己准备从事的子领域已经有了一些想法。此时--或者再早一点--加入SecretPaperPassingNetwork是很重要的。这个非正式的组织是人工智能 真正在做什么的反映。引导潮流的工作最终会变成正式发表的论文,但是至少在牛 人完全明白一年之后,也就是说,牛人对新思想的工作至少领先一年。 牛人如何发现新思路的?可能是听自于某次会议,但是最可能来自于SecretPaper PassingNetwork。下面是该网络工作的大致情况。JoCool有了一个好想法。她 将尚不完整的实现与其他一些工作融合在一起,写了一份草稿论文。她想知道这个 想法究竟怎么样,因此她将论文的拷贝发送给十位朋友并请他们进行评论。朋友们 觉得这个想法很棒,同时也指出了其中的错误之处,然后这些朋友又把论文拷贝给 他们各自的一些朋友,如此继续。几个月后,Jo对之进行了大量修订,并送交给 AAAI。六个月后,该论文以五页的篇幅正式发表(这是AAAI会议录允许的篇幅)。 最后Jo开始整理相关的程序,并写了一个更长的论文(基于在AAAI发表论文得到的 反馈)。然后送交给AI期刊。AI期刊要花大约两年的时间,对论文评审,包括作者 对论文修改所花费的时间,以及相应的出版延迟。因此,理想情况下,Jo的思想最 终发表在期刊上需要大约三年时间。所以牛人很少能从本领域出版的期刊文章中学 到什么东西,来得太迟了。 你,也可以成为一个牛人。下面是建立学术关系网的一些诀窍: (1)有很多讨论某个AI子领域(如连接主义或者视觉)的邮件列表,选择自己感 兴趣的列表加入。 (2)当与很熟悉本领域的人讨论自己的思想时,他们很可能不直接评价你的想法 ,而是说:"你读过某某吗?"这并不是一个设问,而是建议你去阅读某份文献,它 很可能与你的想法有关系。如果你还没有读过该文献,从跟你交谈的高手那里得到 该文献的详细信息,或者直接从他那里借一份拷贝下来。 (3)当你读到某份让你感到很兴奋的论文,复印五份送交给对之感兴趣的其他五 个人。他们可能会反馈回来很好的建议。 (4)本实验室有很多针对不同子领域的非正式(持续发展的)论文讨论组,他们 每星期或每两星期聚会一次,对大家阅读完的论文进行讨论。 (5)有些人并不介意别人去翻看他们的书桌,也就是说,去翻阅他们堆在书桌上 的不久要阅读或者经常翻阅的论文。你可以去翻翻看,有没有自己感兴趣的。当然 了,首先要得到主人的许可,要知道有些人确实反感别人翻自己的东西。去试试那 些平易近人的人。 (6)同样,有些人也并不介意你翻看他们的文件柜。实验室中可是有很多学问精 深的人,他们的文件柜里也有好多宝贝。与利用学校图书馆相比,这通常是更快更 可靠的寻找论文的方式。 (7)只要自己写下了些东西,将草稿的拷贝分发给那些可能感兴趣的人。(这也 有一个潜在的问题:虽然AI领域的剽窃很少,但也确实有。你可以在第一页写上" 请不要影印或者引用"的字样以做部分防范。)大部分人并不会阅读自己收到的大 部分论文,因此如果只有少数人返回评论给你,也不用太在意。你可以如此反复几 次--这是期刊论文所必需的。注意,除了自己的导师,一般很少将两次以上的草稿 送给同一个人。 (8)当你写完一篇论文后,将论文的拷贝送给那些可能感兴趣的人。别以为人家 自然而然地就会去阅读发表论文的期刊或者会议录。如果是内部的出版物(备忘录 和技术报告)就更不容易读到了。 (9)你保持联系的人越是各式各样,效果就越好。尝试与不同研究组,AI实验室 ,不同学术领域的人交换论文。使自己成为没有联系的两个科研组交流的桥梁,这 样,很快的,你的桌子上就会冒出一大摞相关的论文。 (10)如果某篇论文引用了自己感兴趣的某些东西,做好笔记。维护一份自己感兴 趣参考文献的日志。到图书馆去看看能不能找到这些论文。如果要了解某个主题的 发展轨迹,可以有意地去做一张引用的"参考文献"图。所谓的参考文献图,是指引 用组成的网:论文A引用B和C,B引用C和D,C引用D,等等。注意那些被经常引用的 论文,这通常是值得阅读的。参考文献图有奇妙的性质。一个是经常有研究同一主 题的研究组相互不了解。你搜索该图,突然发现了进入另一部分的方式,这通常出 现于不同学校或者不同方法存在的地方。尽可能了解多种方法是很有价值的,这总 比非常深入的了解某一种方法更好。 (11)暂时搁置。跟别人交谈,告诉他们你在做什么,并询问人家在做什么。(如 果你对与别的学生讨论自己的想法感到害羞,也要坚持交谈,即使自己没有什么想 法,与他们讨论自己认为确实优秀的论文。这将很自然地引导到下一步做什么的讨 论。)每天中午在活动楼七层有一个非正式的午餐讨论会。在我们实验室,人们都 习惯于晚上工作,所以午餐的时候可以跟别人组成松散的小组进行讨论。 (12)如果你与外界的交流很多--做演示或者参加会议--去印张事务名片,主要要 使自己的名字容易记住。 (13)从某个时间开始,你将会开始参加学术会议。如果你确实参加了,你会发现 一个事实,几乎所有的会议论文都令人生厌或者愚蠢透顶。(这其中的理由很有意 思,但与本文无关,不做讨论)。那还去参加会议干吗?主要是为了结识实验室之 外的人。外面的人会传播有关你的工作的新闻,邀请你作报告,告知你某地的学术 风气和研究者的特点,把你介绍给其他人,帮助你找到一份暑期工作,诸如此类。 如何与别人结识呢?如果觉得某人的论文有价值,跑上去,说:"我非常欣赏您的 论文",并提问一个问题。 (14)获得到别的实验室进行暑期工作的机会。这样你会结识另外一群人,或许还 会学到另外一种看待事物的方式。可以去问高年级同学如何获取这样的机会,他们 或许已经在你想去的地方工作过了,能帮你联系。 4学习其他领域 通常的情况,你只能做AI领域的事情,对AI领域之外的事情一无所知,好像有些人 现在也仍然这么认为。但是,现在要求好的研究者对几个相关的领域都了解颇深。 计算的可行性本身并没有对什么是智能提供足够的约束,其他的领域给出了其他形 式的约束,例如心理学获得的经验数据。更重要的是,其他的研究领域给了你思考 的新工具,看待智能的新方法。学习其他领域的另外一个原因是AI本身并没有评价 研究价值的标准,全是借自于其他领域。数学将定理作为进展;工程会问某个对象 是否工作可靠;心理学要求可重复的试验;哲学有严格的思辨;等等。所有这些标 准有时都在AI中起作用,熟悉这些标准有助于你评价他人的工作,深入自己的工作 以及保护自己的工作。 经过六年左右的研究方可获得MIT的PhD,你可以在一到两个非AI领域里打下坚实的 基础,在更多的领域内具有阅读水平,并且必须对大部分内容具有一定程度的理解 。 下面是如何学习自己所知甚少领域的一些方法: (1)选修一门研究生课程,这很牢靠,但通常不是最有效的方法。 (2)阅读课本。这方法还算不错,不过课本的知识经常是过时的,一般还有很高 比例的与内容无关的修辞。 (3)找出该领域最棒的期刊是什么,向该领域的高人请教。然后找出最近几年值 得阅读的文章,并跟踪相关参考文献。这是最快的感受该领域的方法,但有时候你 也许会有错误的理解。 (4)找出该领域最著名的学者,阅读他们所著的书籍。 (5)跟该领域的研究生泡在一起。 (6)参看外校研究该领域的系的课程表。拜访那里的研究院办公室,挑选有用的 的文献。 下面是一些需要了解的与AI有关的科目: (1)计算机科学是我们所使用的技术。你需要选修的初级研究生课程肯定不能让 你对计算机科学有足够的了解,因此你必须通过阅读学习更多的知识。计算机科学 所有的领域--理论体系结构,系统,语言等等--都是必须学习的。 (2)数学可能是接下来需要了解的最重要的学科。对于工作在视觉或者机器人学 的人来说更关键。对于以系统为中心的工作,表面上看,并不相关,但数学会教你 有用的思维方式。你需要能阅读定理,如果具有证明定理的能力将会给本领域的大 多数人留下深刻的印象。很少有人能自学数学,光做个听众是不够的,还得做习题 集。尽可能早地选修尽可能多的数学课,其他领域的课程以后选也很容易。 计算机科学是以离散数学为基础的:代数,图论,等等。如果你要从事推理方面的 工作,逻辑是很重要的。逻辑在MIT用得不多,但是在斯坦福以及其他地方,这是 认识思维的主流方法。所以你必须具备足够的逻辑知识,这样你才能保护自己的观 点。在MIT数学系选修一两门课程就足够了。要是研究兴趣在感知和机器人,那么 不仅需要离散数学,还需要连续数学。在分析,微分几何和拓扑学具有扎实的基础 将会给你提供最常使用的技巧。统计和概率只是一般有用。 (3)认知心理学与AI共享几乎完全相同的观点,但是实践者确实具有不同的目标 ,他们主要是做实验而不是写程序。每一个人都需要知道认知心理学的某些知识。 在MIT,MollyPotter开了一门很好的有关认知心理学的初级研究生课程。 (4)如果你想做有关学习的工作,那么发展心理学是很重要的。发展心理学从一 般意义上讲也是很有用的,它能告诉你对于人类智能来说,哪些事情难哪些容易。 它还给出了有关认知体系结构的认知模型。例如,有关儿童语言习得的工作就对语 言处理理论施加了坚实的约束。在MIT,SusanCarey开了一门很好的有关发展心理 学的初级研究生课程。 (5)心理学中更"软"的部分,例如心理分析和社会心理学,对AI的影响看似很小 ,但具有潜在的重大意义。它们会给你非常不同的理解人是什么的方式。象社会学 和人类学这样的社会科学可以起相似的作用。具有多种观点是很有用的。上述学科 你需要自学。不幸的是,很难区分出这些领域哪些是优秀的成果哪些是垃圾。到哈 佛去学习:对于MIT的学生来说,很容易交叉注册哈佛的课程。 (6)神经科学告诉我们有关人体可计算硬件的知识。随着最近可计算神经科学和 联结主义的兴起,对AI具有非常大的影响。MIT的脑和行为科学系提供了非常好的 课程,视觉(Hildreth,Poggio,Richards,Ullman),移动控制(Hollerbach, Bizzi)和普通神经科学(9.015,由专家组讲授)。 (7)如果你想研究自然语言处理,语言学是很重要的。不仅如此,它还包含了很 多有关人类认知的约束。在MIT,语言学主要由Chomsky学院负责。你可以去看看是 不是符合自己的兴趣。GeorgeLakoff最近出版的书《Women,Fire,and DangerousThings》可作为另外一种研究程序的例子。 (8)工程,特别是电机工程,已经被很多AI研究机构作为一个研究领域。我们实 验室在培养程序中加入了很多需要确实做一些东西的要求,例如分析电路。了解 EE也有助于建造定制的芯片或者调试自己的Lisp机器上的电源。 (9)物理学对于那些对感知和机器人感兴趣的人具有强大的影响。 (10)哲学是所有AI领域看不见的框架。很多AI工作都有蕴含着哲学的影响。学习 哲学也能帮助你运用或者读懂很多AI论文中用到的观点。哲学可沿着至少两个正交 的轴分解。哲学通常是某种东西的哲学;有关思维和语言的哲学与AI更相关。然后 存在着多种哲学学派,从比较大的范围来分,哲学可分为分析哲学和大陆哲学。分 析哲学有关思维的观点与AI领域大多数研究者一致。大陆哲学则对我们习以为常的 很多东西有非常不同的看待方式。它曾经被Dreyfus用于证明AI是不可能的。就在 不久前,有几位研究者认为大陆哲学与AI是相容的,提供了另外一种解决问题的方 法。MIT的哲学属于分析哲学,哲学学院深深地受到Chomsky在语言学方面工作的影 响。 看起来要学习太多的东西,是不是?确实如此。要小心一个陷阱:认为对于所有的 X,"只有我对X了解的更多,这个问题才会变得容易"。要知道,与之相关需要进一 步了解的东西是永远没完的,但最终你还是要坐下来,解决问题的。 5笔记 很多科学家都有做科研笔记的习惯,你也应该这样。可能你曾被告知从五年级开始 ,对于每一门科学课都应该记笔记,确实如此。不同的记笔记方式适用于不同的人 ,可以做在线笔记,记在笔记本或者便笺簿上。可能需要在实验室有一个,家里还 有一个。在笔记本上记录下自己的想法。只有你自己才会去读它,因此可以记得比 较随意。记录下自己的思索,当前工作中遇到的问题,可能的解决方案。对将来可 能用到的参考文献作小结。 定期翻阅你自己的笔记本。有些人会做月度总结,方便将来的引用。 笔记中记录中的东西经常可以作为一篇论文的骨干。这会使生活变得轻松些。相反 ,你会发现写粗略的论文--标题,摘要,分标题,以及正文的片段--是一种记录自 己当前工作的有效方式,即使你并不准备把它变成一篇真正的论文。(过一段时间 你或许会改变想法)。 你或许会发现VeraJohnson-Steiner的书《NotebooksoftheMind》很有用,该 书并不是描写如何做笔记的文献,它描述了随着思想片断的积累,创新思想是如何 出现的。 6写作 写作的理由有很多。 (1)在整个读研的过程中,你需要写一到两篇(这取决于你所在系的规定)毕业 论文,以获得PhD或者MS。 (2)勤于写作不仅仅给你练习的机会。 (3)学术的规则就是要么发表,要么腐烂。在很多领域和学校,这通常开始于你 成为一名教授时,但是我们实验室的很多研究生毕业之前就已经开始发表论文了。 鼓励发表和分发论文是很好的政策。 (4)写下自己的想法是很好的调整思路的方式。你会经常地发现自以为很完美的 想法一旦写下来就显得语无伦次。 (5)如果你工作的目的是不仅为自己还要为他人服务,就必须把它发表。这也是 研究的基本责任。如果你写得精彩,会有更多的人来了解你的工作。 (6)AI但凭单打独斗是很难做的,你需要经常地从他人那里获得反馈。对你的论 文作评论就是最重要的一种形式。任何事情,要做就要做到最好。 (7)阅读有关如何写作的书籍。Strunk和White的《ElementsofStyle》对基本 的应该如何不应该如何做了介绍。Claire的《TheMLA'sLineByLine》( HoughtonMifflin)是有关在句子级别如何编辑的书籍。JacquesBarzun的《 SimpleandDirect:ARhetoricforWriters》(HarperandRow,1985)是有 关如何作文的。 (8)写论文时,读读那些写作高超的书,并思考作者的句法运用。你会发现不知 不觉地,你已经吸收了作者的风格。 (9)要成为写作高手,需要付出颇多,历经数年,期间还要忍受和认真对待他人 的批评。除此之外,并无捷径可走。 (10)写作有时候是很痛苦的,看起来好像是从"实际的"工作中分心了。但如果你 已经掌握了写作技巧,写起来会很快。而且如果你把写作当作一门艺术的话,你能 从中得到很多乐趣。 (11)你肯定会遇到思路阻塞的情况,这有很多的可能原因,没有一定可以避免的 方法。追求完美可能导致思路阻塞:无论开始写什么,总觉得不够好。要理解写作 是一个调试的过程。先写一个草稿,然后返回修订。写草稿有助于理顺思路,如果 写不出来正文,那就写个大纲。逐步对之细化,直到已经很容易写出子部分的内容 。如果连草稿也写不出来,隐藏掉正在写作的所有窗口,然后随便输入自己脑袋里 想到的东西,即使看起来好像是垃圾。当你已经写出了很多文本后,重新打开窗口 ,将刚才写的东西编辑进去。另外一个错误是以为可以将所有的内容依次写出。通 常你应该将论文的核心内容写出来,最后才是介绍部分。引起作者思路阻塞的另一 个原因是不切实际的以为写作是很容易的事情。写作是耗时耗力的,如果发现自己 每天只能写一页,也不要放弃。 (12)完美主义可能会导致对本来已经足够好的论文还在不停地打磨。这是浪费时 间。(这也是一种有意无意之间逃避做研究的表现)。将论文看作你与本领域其他 人交谈时的一句话。在交谈中,并不是每一句话都是完美的。很少有人会期待自己 的某次谈话就是全部的故事,是与对方的最后一次交流。 (13)写信是一种很好的练习。很多技术论文,如果其风格更类似于给朋友的信, 那么会有很大的提高。坚持记日记也是练习写作的方法(也会使你试验更多的文体 ,不仅仅是技术论文)。这两种方法还有其它的实质作用。 (14)一个常见的陷阱是花很多时间去追求修辞而不是内容。要避免这样。LaTeX 并非完美,但是它有很多你所需的修饰语。如果这还不够,还可从其他从事这一研 究的人那里借用一些词语用法。很多站点(例如MIT)维护了一个写作修辞的库。 (15)清楚自己要表达什么。这是清楚的写作中最难最重要的因素。如果你写了拙 劣的东西,且不知道如何修改,这很有可能是因为你不知道自己要说什么。一旦搞 清楚了自己要说什么,说就行了。 (16)论文的写作要有利于读者查找到你所做的工作。无论是段落的组织还是通篇 的组织,都要将最核心的部分放在前面。要精心写作摘要。确保摘要已经反映出你 的好思路是什么。确保自己明白自己的创新点是什么,然后用几句话表达出来。太 多的论文摘要只是一般性地介绍论文,说是有一个好思路,却不说是什么。 (17)不要用大话来贩卖你的工作。你的读者都是很优秀的人,正直且自尊。与之 相反,也不要为自己的工作道歉或者进行消减。 (18)有时候你意识到某个子句、句子或者段落不够好,却不知道如何修改。这是 因为你钻到死胡同里出不来了。你需要返回重写这一部分。现实中这种情况很少发 生。 (19)确保自己的论文中有中心思想。如果你的程序在10毫秒内解决了问题X,告 诉读者你是如何办到的。不要只是解释你的系统是如何构建的,是做什么的,还要 解释其工作原理和价值所在。 (20)写作是给人看的,而不是机器。因此光观点正确是不行的,还要易懂。不要 靠读者自己去推理,除非是最明显的推论。如果你在第七页的脚注上解释了某个小 玩意的工作原理,接着在第二十三页没有进一步解释就引用了它,此时如果读者感 到困惑一点都不值得奇怪。正式的论文要写清楚是很难的。不要模仿数学领域的文 献,它们的标准是尽可能少的解释,使读者感到越困难越好。这并不适用于AI。 (21)写完一篇论文后,删掉第一段或者头几句话。你会发现那是与内容无关的一 般性话语,更好的介绍语句在第一段最后或者第二段的开头。 如果你等做完所有的工作后才开始写作,会失去很多。一旦开始了某个科研项目, 要养成这样的习惯:写作解释当前工作进展或者每几个月学习所得的非正式论文。 从你的研究笔记中的记载开始。花两天的时间写下来--如果你花的时间更长,说明 你是一个完美主义者。 将论文与你的朋友分享。写的是草稿--不是为了被引用的那种。将论文复制数十份 ,送给那些感兴趣的人(包括你的导师)。与写正式论文相比,这样做具有很多相 同的好处(评论,理清思路,写作练习等等),而且从某种意义上讲,付出无需那 么多。经常地,如果你做得不错,这些非正式论文以后可以作为正式论文的骨干内 容,也就是从AI实验室的WorkingPaper成为一篇期刊文章。 一旦你成为SecretPaperPassingNetwork的成员,会有很多人给你寄论文拷贝要 求评论。获得他人对自己的论文的评论是很有价值的。因此你评论的论文越多,你 获得支持就越多,也会收到更多人对你论文的评论。不仅如此,学习评价别人的论 文也有助你的选择。 为论文写有用的评论是一门艺术。 (1)要写出有用的评论,需要读两遍论文。第一遍了解其思想,第二遍开始作评 论。 (2)如果某人在论文中屡次犯同一错误,不要每次都标记出来。而是要弄清楚模 式是什么,他为什么这样做,对此还可以做什么,然后在第一页清晰地指出或者私 下交流。 (3)论文的作者在合并你的评论时,将会遵循最小修改的原则。如果可以,就只 修改一个词,不行再修改一个词组,再不行才修改整个句子。如果他的论文中某些 拙劣之处使得他必须修改整个段落,整个小节甚至整篇论文的组织,要用大字体的 字母指出来,这样他才不会忽视。 (4)不要在论文写毁灭性的批评如"垃圾"。这对于作者毫无帮助。花时间提出建 设性的建议。要设身处地地为作者着想。 评论有很多种。有对表达的评论,有对内容的评论。对表达的评论也可以很不同, 可以是校对打字稿,标点,拼写错误,字词丢失等。应该学一些标准的编辑符号。 还可以是校正语法,修辞,以及混乱不清楚的段落。通常人们会持续地犯同一语法 错误,因此需要花时间明确地指出。接下来是对组织结构的评论:不同程度(子句 ,句子,段落,小节乃至一章)的次序混乱,冗余,无关的内容,以及丢失论点。 很难描述对内容进行评论的特征。你可能建议作者扩展自己的想法,考虑某个问题 ,错误,潜在的问题,表达赞美等。"因为Y,你应该读X"是一种总是有用的评论。 当被要求对论文作评论时,你首先想弄清楚哪种评论更有用。对于早期的论文草稿 ,需要你主要对内容和论文的组织结构作评论;对于最终的草稿,需要你主要评论 表达的细节。 注意,作为一种礼貌,在要求别人评论之前,应首先用拼写检查器对自己的论文进 行检查。 你无须接受所有的意见,但是必须都认真对待。将论文的部分内容裁掉是挺令人痛 心的,但往往也提高了论文的水平。你经常会发现某个意见确实指出了问题,但是 解决方法你觉得不可接受,那么就去寻找第三条道路。 要多发表论文,这其实比想象中的容易。基本上,AI出版物评审者评审论文的标准 是:(a)有新意;(b)在某些方面,符合标准。看看IJCAI的会议录,你会发现论文 录取的标准相当低。这种情况由于评审过程本身固有的随机性而变得更糟糕了。 所以一个发表论文的诀窍是不停地试。 (1)确保论文可读性比较好。论文被拒绝的原因,除了没有意义之外,就是无法 理解或者组织糟糕。 (2)论文在投往期刊之前,应该交流一段时间,并根据反馈的评论进行适当的修 订。要抵制那种急匆匆地把结果投往期刊的做法。在AI领域,没有竞赛,而且不管 怎么说,出版周期的延迟要大大超过对草稿进行评论的时间。 (3)读一读你想投稿的期刊或者会议的过刊,确保自己论文的风格和内容是适合 的。 (4)很多出版物都有一页左右的"作者投稿须知",仔细看看。 (5)主要的会议都会在被接收的论文中评出内容和表达俱佳的获奖论文,仔细研 究研究。 (6)通常是向会议投交一篇篇幅比较短的有关部分工作内容的早期报告,然后再 往期刊投交一份篇幅长的最终的正式论文。 (7)论文被拒绝了--千万不要沮丧灰心。 (8)期刊和会议的论文评审过程存在很大的不同。为了节省时间,会议论文的评 审必须迅速,没有时间细究或者交流。如果你被拒绝了,你就失败了。但期刊论文 则不同,你可以经常地与编辑争辩,通过编辑与评审人争辩。 (9)评审人一般都会对你有帮助。如果你收到了令人生厌的评审报告,应该向大 会的程序主席或者编辑投诉。不能期望可以从会议论文评审人的报告那里得到多少 反馈。但对于期刊论文,往往可以得到非常棒的建议。你不必完全按照评审报告的 建议去做,但是,如果你不按照报告去做,那么就必须解释原因,并且要意识到这 可能会导致进一步的负面评价。不管怎么样,无论是哪种的评审,作为评审者都要 有礼貌。因为在余下的职业生涯中,你将会与被评审者在一个学术圈子里。 (10)MITAILabMemos大体上是或者接近发表的水平。实际上,Technical Reports基本上都是这些Memos的修订版本。WorkingPapers则更不正式,这是很好 的将自己的论文分发给同事们的方法。要出版这些内部文件,只需到Publications Office(在活动楼八层)领一份表格,并有两位教员签字即可。 就像其它的科研活动一样,论文写作所花的时间总是比期望的要高。论文的发表在 耗费时间这个问题上则更严重。当你完成了一篇论文,投出去,等待发表。数月后 ,论文以及评论被返回来。你不得不对论文进行修改。然后又是几个月,才返回对 你的修改的确认。如果你同时发表了该论文的不同形式,如有一篇短的投会议,一 篇长的投期刊,这样的过程将反复数个回合。结果有可能是当你已经厌倦了,研究 主题也已经令人生厌后数年,你仍然在修改那篇论文。这启示我们:不要去做那些 需要热情投入但是很难发表论文的研究--苦不堪言。 7讲演 与同行交流的另外一种方式就是讲演,上面提到的有关论文写作的问题,同样适用 于讲演。站在听众面前从容讲演而不会使听众恹恹欲睡的能力,对于你成功地获得 别人的承认、尊敬乃至最终的求职都是很关键的。 讲演的能力不是天生的,下面是一些学习和练习讲演的方法: (1)PatrickWinston有一篇很好的有关如何作讲演的小论文。每年的一月,他都 会就此作讲演,演示和描述它的演讲技巧。 (2)如果你觉得自己是一个糟糕的演讲者,或者想成为一名优秀的演讲者,选一 门公共演讲课。初级的表演课也很有用。 (3)如果你的导师有定期的研究讨论会,自愿去作演讲。 (4)MITAI实验室有一系列的半正式座谈会,叫做RevolvingSeminar。如果你觉 自己的某些观点值得写进AIMemo或者会议论文中,自告奋勇去作一场报告。 (5)深入了解实验室的不同机器人项目,当你外地的亲朋好友来的时候,你可以 领着他们逛一圈,并就机器人做60分钟的报告。 (6)由于修改演讲远比修改论文容易,有些人会觉得这是很好的寻找如何表达思 想的方式。(NikeBrady有一次曾说,他所有最好的论文都来自于演讲)。 (7)在一间空屋子里练习,最好就是你马上要做的报告。这有助于调整报告的技 巧:每一张幻灯讲些什么;转换的延迟以及保持平滑;保持解释和幻灯的同步;估 计报告的时间长度。你花在调整设备上的时间越少,留下来的与人交流的时间就越 长。 (8)用镜子,录音机或者录像机练习是另外一种方法。实验室有这三种设备。这 也有助于调整自己的发音和肢体语言。 (9)对于比较正式的报告--特别是你的答辩--应该在几个朋友面前练习一遍,请 他们批评指正。 (10)观察别人是如何做报告的。有很多访问MIT的人会做报告。参加这样的报告 会能够感受自己不熟悉的领域,并且如果报告令人提不起兴趣,你可以暗中分析报 告者错在哪里。 (11)找一位朋友,将你最近的想法说给他听。这既可以提高的交际技巧,又能调 试自己的思路。 8程序设计 并不是所有的AI论文都包含代码,而且本领域的很多重量级人物从来没有写过一个 重要的程序。但是为了深入掌握AI工作原理,你必须会程序设计。不仅仅是很多 AI研究工作需要编写代码,而且学会程序设计能给你什么是可计算的什么是不可计 算的直觉,这是AI对认知科学贡献的主要来源。 在MIT,基本上所有的AI程序设计都使用CommonLisp。如果还不知道,赶快学吧。 当然,学习一门语言并不能等同于学习程序设计;AI程序设计包含的一些技术与那 些在系统程序设计或者应用程序设计中用到的大不相同。开始学的时候,可以先看 看Abelson和Sussman的《StructureandInterpretationofComputerPrograms 》,并做一些练习。这本书与AI程序设计本质上并不相干,但是包含了一些相同的 技术。然后读Winston和Horn写的Lisp书第三版,书里有很多优雅的AI程序。最后 ,进行实际的程序设计,而不是阅读,才是最好的学习程序的方法。 学习Lisp程序设计有很多传统。有些人习惯一起写代码,这取决于个性。还有的人 寻找机会直接向有经验的程序员学习,或者请他对你的代码进行评价。阅读别人的 代码也是很有效的方法。如果可以向高年级同学要他们的源代码。他们可能会有些 抱怨,说自己的编程风格差极了,程序实际上并不能工作云云。不管怎么样,最后 你获得了源代码。然后你要仔细地通篇阅读,这很费时间。通常阅读并完全理解别 人代码所花的时间与你自己编程完成的时间是一样多的,因此要计划好在你的头一 个或者头两个学期用数周的时间去阅读别人的代码。你将从中学到很多以前不曾想 到在课本中也没有的技巧。如果你读到了大段大段不可理解没有注释的程序,你就 会明白应该如何写代码了。 在软件工程课里学习到的那些知识在AI程序设计中依然有用。要给代码加注释。使 用正确的数据抽象。将图和你的代码隔离开,由于你使用的语言基本上是Common Lisp,因此可移植性很好。诸如此类。 经过头几年的学习后,应该写一些自己的标准AI模块,如: (1)真值维护系统 (2)规划器 (3)规则系统 (4)不同风格的解释器 (5)具有流程分析的优化编译器 (6)具有继承特性的框架系统 (7)几种搜索方法 (8)基于解释的学习器 任何你感兴趣的东西都可以尝试用程序实现。你可以抓住问题的实质,在几天之内 完成一个功能版本。修改已有的程序是另外一种有效的方法,前提是你已经写过这 样的东西,并且确实了解其工作原理,优缺点以及效率等问题。 不象其他通常的程序员,AI程序员之间很少相互借阅代码(演示代码例外)。这部 分由于AI程序很少有真正起作用的(很多著名的AI程序只在作者论文所提到的那三 个例子上起作用,虽然最近这种情况已经有所改善)。另外一个原因是AI程序通常 是匆忙凑成,并没有考虑一般化的问题。使用Foobar的"标准"规则解释器,开始时 很有效,不久就会发现缺少一些你需要的功能,或者不够有效率。虽然可以对代码 进行修改满足自己的需要,但记住理解别人的代码是很耗时的,有时候还不如自己 写一个。有时候构建一个标准包的工作本身就可以成为一篇论文。 像论文一样,程序也有可能过于追求完美了。不停重写代码以求完美,最大化的抽 象所有的东西,编写宏和库,与操作系统内核打交道,这都使得很多人偏离了自己 的论文,偏离了自己的领域(从另外一方面,或许这正是你需要将来谋生的手段) 。 9导师 在MIT,有两种类型的导师,教学导师和论文导师。 教学导师的工作比较简单。每一位研究生都被分配了系里的一位老师作为教学导师 。教学导师的作用是作为系方代表,告诉你对你的正式要求是什么,如果你的进度 慢了敦促你,批准你的课程计划等。如果一切顺利的话,你每年只需要见教学导师 两次,在注册日那天。从另一方面讲,如果你遇到了困难,教学导师替你向系里反 映或者提供指导。 论文导师是监督你研究的人。选择论文导师是你读研期间最重要的选择,比选题都 重要得多。从更广的意义上讲,AI是通过师傅带徒弟的方式学习的。有很多领域的 技术方面或者研究过程方面的非正式知识,只能从导师那里学到,在任何教科书上 都找不到。 很多AI教员都是行为古怪的人,毕业生也如此。导师与研究生的关系是非常个性化 的,你的个人特点必须与导师的配合得很好,这样你们才能合作成功。 不同的导师具有不同的风格。下面是一些需要值得考虑的因素: (1)你需要多大程度的指导?有些导师会给你一个定义良好的适合做论文的问题 ,对解决方法进行解释,并告诉你如何开展工作。如果你陷在某个地方了,他们会 告诉你如何开展下去。其他的导师属于甩手型,他们可能对你的选题毫无帮助,但 是一旦你选好题目,他们对于引导你的思路具有非常大的作用。你需要考虑清楚自 己适合独立工作还是需要指导。 (2)你需要多大程度的联系?有的导师要求每周与你见面,听取你工作进展的汇 报。他们会告诉你应该读的论文,并给你实际的练习和项目做。其他的导师每学期 与你的谈话不会超过两次。 (3)你能承受的压力有多大?有些导师施加的压力是很大的。 (4)需要多少情感支持? (5)听取导师意见的认真程度如何?大多数导师会相当正式的建议你的论文题目 。有些导师是值得信赖的,他们给出的建议,如果按照执行,几乎肯定会做出一篇 可接受程度的论文,如果不是令人兴奋的论文的话。其他的则一下子抛出很多思路 ,大部分是不切实际的,但是有一些,或许会导致重大突破。如果选了这样的一位 导师,你首先得把自己当作一个过滤器。 (6)导师提供了什么类型的研究组?有些教授会创造环境,把所有的学生聚集在 一起,即使他们做的不是同一个项目。很多教授每周或者每两周与自己的学生们会 面。这对你有用么?你能与教授的学生和睦相处么?有些学生发现他们更能与其他 教研组的学生建立良好的工作关系。 (7)你想参与大的项目么?有些教授将大系统分解,每个学生负责一部分。这给 了你与一组人讨论问题的机会。 (8)你想被共同监督么?有些论文项目包含了多个AI领域,需要你与两个以上的 教授建立密切的工作关系。虽然你正式的论文导师只有一位,但是有时候这并不反 映实际情况。 (9)导师愿意指导其研究领域之外的论文题目么?你是否能与导师一起工作,比 你做什么本身更重要。MIT的机器人系就曾指导过量子物理学和认知建模方面的论 文;推理方面的教员指导过视觉方面的论文。但是有些教员只愿意指导自己研究兴 趣领域内的论文。这对于那些欲获得终身职位的年轻教员来说尤其如此。 (10)导师会为了你跟体制作斗争吗?有些导师会为了你跟系里或者某些有敌意的 实体作斗争。有时候体制对某些类型的学生不利(特别是对于女学生和怪癖的学生 ),因此这一点很重要。 (11)导师愿意并且能够在会议上推荐你的工作吗?这是导师工作的一部分,对你 将来工作意义重大。 上述这些因素,不同学校的情况很不相同。与大部分学校相比,MIT提供了多得多 的自由。 找论文导师是你研究生一年级最主要的任务。研一结束时,或者研二学年开始阶段 ,你必须有一个论文导师。下面是一些诀窍: (1)查阅实验室的研究总结。其中有一页左右的篇幅描述了每个教师以及很多研 究生目前在做什么。 (2)如果你对某些教师的研究工作感兴趣,查阅其最近的论文。 (3)在第一学期,与尽可能多的教师交谈。去感受他们喜欢做什么,他们的研究 和指导风格是什么。 (4)与预期导师的研究生交谈。要保证与导师的多个学生交流,因为每位导师在 与不同的学生交流时有不同的工作方式和交流效果。不能被一个学生的看法所左右 。 (5)很多教师所在研究组的会议对新同学都是公开的。这是非常好的了解导师工 作方式的途径。 作为一门学科,AI不同寻常的一点是很多有用的工作是由研究生完成的,而不是博 士--他们忙着做管理去了。这有几个后果。一是某个教师的声望,是否会获得终身 聘用,在很大程度上取决于学生的工作。这意味着教授有很强烈的动机吸引最好的 学生为自己工作,并给与有效的指导和足够的支持。另外一个后果是,由于大部分 学生的论文方向是由导师形成的,因此整个领域的方向和发展很大程度上取决于导 师选择什么样的研究生。 当选定了导师,决定了自己对导师的要求后,要确保导师知道。不要由于交流不好 ,浪费时间于自己并不想做的项目上。 不要完全依赖你的导师,要建立自己的网络。找一些能定期评审你的工作的人是很 重要的,因为研究时很容易走火入魔。网络中的人可以包括自己实验室或者外单位 的研究生和老师。 在与其他学生、老师甚至自己的导师的关系中,很可能会碰到种族主义者、性别歧 视、同性恋或者其他令人尴尬的事情。如果你不幸碰到了,去寻求帮助。MIT的 ODSA出版了一本叫做"STOPHarrassment"的小册子,里面有很多建议。《Computer ScienceWomen'sReport》,可在LCS文档室找到,也与之相关。 实验室中有些同学只是名义上由导师指导,这对于那些独立性很强的人来说很好。 但是如果你已经完成了某项导师指导的工作,除非你确保没有导师也行且自己有牢 靠的支持网络,否则就不要这么干。 10论文 做毕业论文将占据研究生生活的大部分时间,主要是去做研究,包括选题,这比实 际的写作耗时更多。 硕士论文的目的是为做博士论文练兵。博士水平的研究如果没有准备好的话,是很 难进行的。硕士论文最基本的要求是展示自己的掌握程度:你已经完全理解了本领 域最新进展,并具备相应的操作水平。并不需要你对本领域的最新知识有所拓展, 也不要求发表你的论文。然而我们实验室的论文总是比较大气的,因此很多硕士论 文实际上都对本领域的发展作出了显著的贡献,大约有一半都出版了。这并不一定 是好事情。很多人精力都集中于硕士的工作,所以MIT有这样的名声:硕士论文的 质量往往比博士论文高。这有悖于硕士工作本来是为博士研究作准备的原有目的。 另外一个因素是所做研究要对领域有所贡献,至少需要两年,这使得研究生学习时 间之长令人难以忍受。现在或许你感受不到匆忙,但当你已经在实验室呆了七年后 ,你肯定迫不及待地想逃出去。硕士从入学到毕业平均时间是两年半,但是,计算 机系强烈鼓励学生提前毕业。如果某个硕士生的题目过于庞大,可将之分解,一部 分来做硕士论文,另一部分给博士生作博士论文。 想要了解硕士论文研究是什么样的,读几本最新的硕士论文。记住比较好的论文是 那些出版的或者成为技术报告的,因为这标志着该论文被认为是扩展了领域的最新 知识--换句话说,他们的论文远远超出了硕士论文的水平。还要读一些通过的但是 没有出版的论文,所有通过的论文都可以在MIT图书馆中找到。博士论文必须对最 新知识有所拓展,博士论文的研究必须具备可出版的质量。MIT的泱泱气质又表现 出来了,很多博士论文在几年内都是某个子领域的权威工作。对于MIT的博士论文 来说,开创一个新领域,或者提出并解决一个新问题,并不是什么了不起的事情。 虽然,这并不是必需的。 一般来说,需要两到三年的时间来做博士论文。很多人花一到两年的时间跟硕士生 活说再见,以及选题。这段时间可以去尝试一些别的事情,例如做助教或者在某个 非AI领域打下坚实的基础或者组织个乐队。博士论文的实际写作时间大约是一年。 选题是论文工作中最重要最困难的部分: (1)好的论文题目不仅能够表达个人观点,而且可与同行交流。 (2)选择题目必须是自己愿意倾注热情的。个人远景观点是你作为一个科学家的 理由,是你最为关切的意象、原则、思路或者目标。有多种形式。或许你想造一台 可与之交谈的计算机,或许你想把人类从计算机的愚蠢使用中拯救出来,或许你想 展示万物都是统一的,或许你想在太空发现新生命。远景观点总是比较大的,你的 论文并不能实现你的远景,但是可以朝着那个方向努力。 (3)做论文时,最困难的就是如何将问题消减至可解决的水平,同时规模又足以 做一篇论文。"解决AI的宽度优先"是常见毛病的一个例子,题目太大太虚了。你会 发现需要不断的缩小题目的范围。选题是一个渐进的过程,不是一个离散的事件, 会持续到你宣布论文已经完成那一刻为止。实际上,解决问题通常比精确地描述问 题要容易得多。如果你的目标是一个五十年的工程,那么合理的十年工程是什么, 一年的呢?如果目标的结构庞大,那么最核心的部件是什么,如何最大程度的了解 核心部件? (4)一个重要的因素是你可以忍受多大程度的风险。在最终的成功和风险之间需 要权衡。这也并不总是对的,AI中有很多研究者尚未涉及的想法。 (5)好的论文选题有一个中心部分,你确信肯定可以完成,并且你和你的导师都 同意这已经满足毕业要求了。除此之外,论文中还有多种扩展,有失败的可能,但 如果成功了,会增加论文的精彩程度。虽然不是每一个论文选题都符合这个模式, 但值得一试。 (6)有些人觉得同时在多个项目中工作可以在选题的时候选择可以完成的那个。 这确实降低了风险。另外一些人则愿意在做任何工作之前,选一个单独的题目。 (7)可能你只对某个领域感兴趣,这样你的选题范围就狭窄得多。有时候,你会 发现系里的老师没有一个人能够指导你选择的领域。可能还会发现好像那个领域没 什么很自然的选题,反而对别的领域有好想法。 (8)硕士选题比博士选题更难,因为硕士论文必须在你所知不多没有足够自信时 就完成。 (9)博士选题需要考虑的一个因素是是否继续硕士阶段所研究的领域,可能拓展 或者作为基础,或者干脆转到另外一个领域。待在同一个领域事情就简单了,可能 只需要一到两年就毕业了,特别是如果在硕士阶段的工作中已经发现了适合做博士 论文的题目。不足之处在于容易定型,改换领域则能增加知识的宽度。 (10)有的论文题目很新奇,有的则很普通。前者开创了新领域,探索了以前未曾 研究过的现象,或者为很难描述的问题提供了有效的解决方法;后者则完美地解决 了定义良好的问题。两种论文都是有价值的。选择哪一种论文,取决于个人风格。 (11)论文的"将来的工作"部分,是很好的论文题目来源。 (12)无论选什么样的题目,必须是前人未曾做过的。即使是同时有人做的工作, 也不好。有很多东西可作,根本无需竞争。还有一种常见的情况,读了别人的论文 后感觉很惊慌,好像它已经把你的问题解决了。这通常发生在确定论文题目过程中 。实际上往往只是表面类似,因此将论文送给某个了解你的工作的高人看看,看他 怎么说。 (13)MITAI实验室的论文并非全是有关人工智能的;有些是有关硬件或者程序设 计语言的,也行。 选好题后,即使有点虚,你必须能够回答下列问题:论文的论点是什么?你想说明 什么?你必须有一句,一段,五分钟的答案。如果你不知道自己在干什么,别人也 不会严肃对待你的选题,更糟糕的是,你会陷在选题--再选题的圈子里而不能自拔 。开始作论文研究后,一定要能够用简单的语言解释每一部分的理论和实现是如何 为目标服务的。 记住,一旦选好了题目,你必须与导师就论文完成的标准达成清晰的一致。如果你 和他对论文具有不同的期望,最后你肯定死得很惨。必须定义好"完成测试"的标准 ,像一系列的能够证明你的理论和程序的例子。这是必须做的,即是你的导师并不 这么要求。如果环境发生了根本的变化,测试也要随之改变。 首先尝试论文问题的简化版本。用实例检验。在形成理论抽象之前,要完整的探究 具有代表性的例子。做论文的过程中,有很多浪费时间的方式。要避免下列活动( 除非确实跟论文相关):语言表达的设计;用户接口或者图形接口上过分讲究;发 明新的形式化方法;过分优化代码;创建工具;官僚作风。任何与你的论文不是很 相关的工作要尽量减少。一种众所周知的现象"论文逃避",就是你突然发现改正某 个操作系统的BUG是非常吸引人也很重要的工作。此时你总是自觉不自觉的偏离了 论文的工作。要记住自己应该做些什么(本文对于部分作者来说就属于论文逃避现 象)。 11研究方法论 研究方法学定义了什么是科研活动,如何开展研究,如何衡量研究的进展,以及什 么叫做成功。AI的研究方法学是个大杂烩。不同的方法论定义了不同的研究学派。 方法是工具。使用即可,不要让他们来使用你。不要把自己陷于口号之中:"AI研 究需要牢靠的基础","哲学家只会高谈阔论,人工智能则需要拼搏","在问为什么 之前,先搞清楚计算的是什么"。实际上,要在人工智能领域取得成功,你必须擅 长各种技术方法,还必须具备怀疑的态度。例如,你必须能够证明定理,同时你还 必须思考该定理是否说明了什么。很多优秀的AI篇章都是巧妙地在几种方法论中取 得平衡。例如,你必须选择一条在太多理论(可能与任何实际问题都无关)和繁琐 的实现(把实际的解决方法表达得语无伦次)之间的最佳路线。你经常会面临区分 "干净"和"肮脏"的研究决策。你应该花时间将问题在某种程度上形式化吗?还是保 持问题的原始状态,此时虽然结构不良但更接近实际?采用前一种方法(如果可行 的话)会得到清晰确定的结果,但这一过程往往是繁琐的,或者至少不会直接解决 问题。后者则有陷入各种处理的漩涡之中的危险。任何工作,任何人,必须作出明 智的平衡。 有些工作象科学。你观察人们是怎样学习算术的,大脑是如何工作的,袋鼠是如何 跳的,然后搞清楚原理,形成可检验的理论。有些工作象工程:努力创建一个更好 的问题解决器或者算法。有些工作象数学:跟形式化打交道,要理解属性,给出证 明。有些工作是实例驱动的,目标是解释特定的现象。最好的工作是以上几种的结 合。 方法具有社会性,看看别人是如何攻克类似难题的,向别人请教他们是如何处理某 种特殊情况的。 12情感因素 研究是艰苦的工作,很容易对之失去兴趣。一个令人尴尬的事实是在本实验室读博 的学生只有很少比例最后获得学位。有些人离开是因为可以在产业界赚到更多的钱 ,或者由于个人的原因;最主要的原因则是由于论文。本节的目标是解释这种情况 发生的原因,并给出一些有益的建议。 有的研究都包含风险。如果你的项目不可能失败,那是开发,不是研究。面对项目 失败时是多么艰难啊,很容易将你负责的项目失败解释为你自己的失败。虽然,这 实际上也证明了你有勇气向困难挑战。在人工智能领域很少有人总是一直成功,一 年年地出论文。实际上,失败是经常的。你会发现他们经常是同时做几个项目,只 有一些是成功的。最终成功的项目也许反复失败过多次。经历过很多由于方法错误 的失败之后,才取得最终的成功。在你以后的工作生涯中,会经历很多失败。但是 每一个失败的项目都代表了你的工作,很多思想,思考方式,甚至编写的代码,在 若干年后你发现可用于另外一个完全不同的项目。这种效果只有在你积累了相当程 度的失败之后才会显现出来。因此要有最初的失败以后将会起作用的信念。 研究所花费的实际时间往往比计划的要多得多。一个小技巧是给每个子任务分配三 倍于预期的时间(有些人加了一句:"……,即使考虑了这条原则")。 成功的关键在于使得研究成为你日常生活的一部分。很多突破和灵感都发生在你散 步时。如果无时无刻地都潜意识的思考研究,就会发现思如泉涌。成功的AI研究者 ,坚持的作用一般大于天资。"尝试"也是很重要的,也就是区分浅薄的和重要的思 路的能力。你会发现自己成功的比例是很随机的。有时候,一个星期就做完了以前 需要三个月才能完成的工作。这是令人欣喜的,使得你更愿意在本领域工作下去。 其他一些时候,你完全陷在那里,感觉什么也做不了。这种情况很难处理。你会觉 得自己永远不会做出任何有价值的东西了,或者觉得自己不再具备研究者的素质了 。这些感觉几乎肯定是错误的。如果你是MIT录取的学生,你就是绝对合格的。你 需要的是暂停一下,对糟糕的结果保持高度的容忍。 通过定期设置中短期的目标,例如每周的或者每月的,你有很多工作要做。增加达 到这些目标的可能性有两种方法,你可以把目标记在笔记本中,并告诉另外一个人 。你可以与某个朋友商定交换每周的目标并看谁最终实现了自己的目标。或者告诉 你的导师。 有时你会完全陷在那里,类似于写作过程的思路阻塞,这有很多可能的原因,却并 无一定的解决方法。 (1)范围过于宽泛了,可尝试去解决流程中的子问题。 (2)有时候对你研究能力的怀疑会消磨掉你所有的热情而使得你一事无成。要牢 记研究能力是学习而得的技能,而不是天生的。 (3)如果发现自己陷入严重的困境,一个多星期都毫无进展,尝试每天只工作一 小时。几天后,你可能就会发现一切又回到了正轨。 (4)害怕失败会使得研究工作更加困难。如果发现自己无法完成工作,问问自己 是否是由于在逃避用实验检验自己的思路。发现自己最近几个月的工作完全是白费 的这种可能,会阻止你进一步开展工作。没有办法避免这种情况,只要认识到失败 和浪费也是研究过程的一部分。 (5)看看AlanLakien的书《HowtoGetControlofYourTimeandYourLife 》,其中包含很多能使你进入充满创造力的状态的无价方法。 很多人发现自己的个人生活和做研究的能力是相互影响的。对于有些人来说,当生 活中一切都不如意时,工作是避难所。其他的人如果生活陷入混乱时就无法工作了 。如果你觉得自己确实悲痛得难以自拔,去看看心理医生。一份非正式的调查表明 ,我们实验室大约有一半的学生在读研期间看过一次心理医生。 使得人工智能那么难的一个原因是没有被普遍接受的成功标准。在数学中,如果你 证明了某个定理,你就确实做了某些事情;如果该定理别人都证不出来,那么你的 工作是令人兴奋的。人工智能从相关的学科中借来了一些标准,还有自己的一些标 准。不同的实践者,子领域和学校会强调不同的标准。MIT比其他的学校更强调实 现的质量,但是实验室内部也存在很大的不同。这样的一个后果就是你不可能令所 有的人都满意。另外一个后果就是你无法确定自己是否取得了进展,这会让你觉得 很不安全。对你工作的评价从"我所见过最伟大的"到"空虚,多余,不明所以"不一 而足,这都是很正常的,根据别人的反馈修订自己的工作。 有几种方法有助于克服研究过程中的不安全感。被承认的感觉:包括毕业论文的接 受,发表论文等。更重要的是,与尽可能多的人交流你的思路,并听取反馈。首先 ,他们能贡献有用的思路;其次,肯定有一些人会喜欢你的工作,这会使得你感觉 不错。由于评价进展的标准是如此不确定,如果不与其他的研究者充分的交流,很 容易盲目。特别当你感觉不太好时,应该就你的工作进行交流。此时,获得反馈和 支持是非常重要的。很容易看不到自己的贡献,总是想:"如果我能做,肯定是微 不足道的。我的所有思想都太明显了"。实际上,当你回头看时,这些虽然对你是 很明显的,对别人并不一定是明显的。将你的工作解释给很多门外汉听,你会发现 现在对你来说是平淡无奇的东西原来那么难!写下来。 一项对诺贝尔获奖者实施的有关怀疑自己问题(在你研究的过程中,你一直觉得自 己是在做震惊世界的工作吗?)的调查表明:获奖者们一致回答他们经常怀疑自己 工作的价值和正确性,都经历过觉得自己的工作是无关的,太明显了或者是错误的 时期。任何科学过程的常见和重要的部分就是经常严格的评价,很多时候不能确定 工作的价值也是科学过程不可避免的一部分。 有些研究者发现与别人协作比单打独斗工作效果更好。虽然人工智能研究经常是相 当个人主义的,但是也有一部分人一起工作,创建系统,联合发表论文。我们实验 室至少已经有一个联合做毕业论文的先例。缺点是很难与协作者区分对论文的贡献 。与实验室之外的人合作,例如暑期工作时,问题就会少一些。 很多来到MITAI实验室的学生都是以前所在学校最厉害的人。来到这里之后,会发 现很多更聪明的人。这对于很多一年级左右学生的自尊形成了打击。但周围都是聪 明人也有一个好处:在你把自己不怎么样的(但自己又没有觉察到)想法发表之前 就被其他人给打倒在地了。更现实的讲,现实世界中可没有这么多聪明人。因此到 外面找一份顾问的工作有利于保持心理平衡。首先,有人会为你的才能付费,这说 明你确实有些东西。其次,你发现他们确实太需要你的帮助了,工作良好带来了满 足感。 反之,实验室的每一个学生都是从四百多个申请者挑选出来的,因此我们很多学生 都很自大。很容易认为只有我才能解决这个问题。这并没什么错,而且有助于推进 领域的发展。潜在的问题是你会发现所有的问题都比你想象的要复杂得多,研究花 的时间比原先计划的多得多,完全依靠自己还做不了。这些都使得我们中的很多人 陷入了严重的自信危机。你必须面对一个事实:你所做的只能对某个子领域的一小 部分有所贡献,你的论文也不可能解决一个重大的问题。这需要激烈的自我重新评 价,充满了痛苦,有时候需要一年左右的时间才能完成。但这一切都是值得的,不 自视过高有助于以一种游戏的精神去作研究。 人们能够忍受研究的痛苦至少有两个情感原因。一个是驱动,对问题的热情。你做 该研究是因为离开它就没法活了,很多伟大的工作都是这样做出来的。虽然这样也 有油尽灯枯的可能。另外一个原因是好的研究是充满乐趣的。在大部分时间里,研 究是令人痛苦的,但是如果问题恰好适合你,你可以玩一样的解决它,享受整个过 程。二者并非不可兼容的,但需要有一个权衡。 要想了解研究是怎么样的,遭到怀疑的时候应该如何安慰自己,读一些当代人的自 传会有些作用。GregoryBateson'sAdvicetoaYoungScientist,Freeman Dyson'sDisturbingtheUniverse,RichardFeynmann'sSurelyYouAre Joking,Mr.Feynmann!,GeorgeHardy'sAMathematician'sApology,和Jim Watson'sTheDoubleHelix. 当你完成了一个项目--例如论文--一两个月后,你可能会觉得这一切是那么不值。 这种后冲效果是由于长时间被压抑在该问题上,而且觉得本可以做得更好。总是这 样的,别太认真。等再过了一两年,回头看看,你会觉得:嘿,真棒!多棒的工作 ! 尾注 Anton,AlanBawden,DannyBobrow,KaarenBock,JenniferBrooks,Rod Brooks,DavidChapman,JimDavis,BruceDonald,KenForbus,Eric Grimson,KenHaase,DanHuttenlocher,LeslieKaelbling,MikeLowry, PatrickSobalvarro,JeffShrager,DanielWeise,andRaminZabih。我们要 感谢那些对本文作出贡献的人(对我们的论文作出贡献的人,顺便一并致谢),特 别是我们的导师。 上面所列举的一些思想来自于JohnBackus的《OnBeingaResearcher》和Alan Bundy,
个人分类: 科研笔记|11465 次阅读|0 个评论
UCF 大牛 Prof. Shah 课题组代码合集
热度 2 qianli8848 2012-9-5 09:09
UCF 大牛 Prof. Shah 课题组代码合集
Prof. Shah 是计算机视觉的大牛,尤其是视频中的行为识别,做的很不错,Jingen Liu就是他的学生。 Source Code Background Modeling Bayesian Object Detection in Dynamic Scenes This code performs background modeling and foreground estimation in dynamic scenes captured by static cameras. The algorithm implemented has three innovations over existing approaches. First, the correlation in intensities of spatially proximal pixels is exploited by using a nonparametric density estimation method over a joint domain-range representation of image pixels, multimodal spatial uncertainties and complex dependencies between the domain (location) and range (color). The model of the background is implemented as a single probability density, as opposed to individual, independent, pixel-wise distributions. Second, temporal persistence is used as a detection criterion. Unlike previous approaches to object detection which detect objects by building adaptive models of the background, the foreground is modeled to augment the detection of objects (without explicit tracking) since objects detected in the preceding frame contain substantial evidence for detection in the current frame. Finally, the background and foreground models are used competitively in a MAP-MRF decision framework, stressing spatial context as a condition of detecting interesting objects and the posterior function is maximized efficiently by finding the minimum cut of a capacitated graph. This method is useful for moving object detection in scenes containing dynamic backgrounds, e.g., fountains, fans, and moving trees, etc. The entry point for background modeling is Main.m. Project Page: http://server.cs.ucf.edu/~vision/projects/backgroundsub.htm Yaser Sheikh and Mubarak Shah, Bayesian Modelling of Dyanmic Scenes for Object Detection , IEEE Transactions on PAMI, Vol. 27, Issue 11 (Nov 2005), pp. 1778-1792. Shape from Shading Zhang-Tsai-Cryer-Shah (C code) Code form the following publication: Ruo Zhang,Ping-Sing Tsai, James Cryer and Mubarak Shah, Shape from Shading: A Survey ', IEEE Transactions on PAMI, Volume 21, Number 08, August, 1999, pp 690-706 Cryer- Tsai-Shah Method (C code) Source code for the Cryer-Tsai-Shah method for combining shape from shading and stereo depth maps. Related Publication:James Cryer, Ping-Sing Tsai and Mubarak Shah. Shape from Shading and Stereo , Pattern Recognition, Volume 28, No. 7, pp 1033-1043, Jul 1995. Tsai-Shah Method (C code) Source code for the Tsai-Shah method for shape from shading. Related Publication: Ping-sing Tsai and Mubarak Shah, Shape From Shading Using Linear Approximation , Technical Report, 1992. Fundamental Matrix Fundamental Matrix Code (Matlab) normalise2dpts (Matlab) Computes the fundamental matrix from 8 or more matching points in a stereo pair of images using the normalized 8 point algorithm. The normalized 8 point algorithm given by Hartley and Zisserman is used. To achieve accurate results it is recommended that 12 or more points are used. The code uses the normalise2dpts.m file also provided. On directions to using the code please refer to the code documentation. Acknowledgements: The code was provided by Peter Kovesi. http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/ Fundamental Matrix Code (C++ code) Please note that the code requires OpenCV version 1.0 (April Edition) to be installed on the target system. The package includes sample stereo images together with the correspondence points. Acknowledgements: The code was provided by Paul Smith. http://www.cs.ucf.edu/~rps43158/index.php Mean-Shift Algorithms Edge Detection and Image SegmentatiON (EDISON) System (C++ source) (binary) The EDISON system contains the image segmentation/edge preserving filtering algorithm described in the paper Mean shift: A robust approach toward feature space analysis and the edge detection algorithm described in the paper Edge detection with embedded confidence . There is also Matlab interface for the EDISON system at the below link. Acknowledgements: The source code is also available from Rutgers: http://www.caip.rutgers.edu/riul/research/robust.html Approximate Mean-Shift Method (C++ code) For instructions on using the code please refer to the readme.txt file included in the zip package. Note the code requires OpenCV to be installed on the target system. Acknowledgements: The code was provided by Alper Yilmaz. http://www.cs.ucf.edu/~yilmaz/ Kernel Density Estimation The KDE class is a general matlab class for k-dimensional kernel density estimation. It is written in a mix of matlab ".m" files and MEX/C++ code. Thus, to use it you will need to be able to compile C++ code for Matlab. The kernels supported are Gaussian, Epanetchnikov and Laplacian. There is a detailed instruction about how to use it at http://www.ics.uci.edu/~ihler/code/kde.html K-Means Algorithms for Data Clustering K-Means in Statistics Toolbox (Matlab code) The goodness of this code is that it provides the options, such as 'distance measure', 'emptyaction', and 'onlinephase'. It is quit slow when dealing with large datasets and sometimes memory will be overflow. Efficient K-Means using JIT (Matlab code) This code uses the JIT acceleration in Matlab, so it is much faster than k-means in the Statistics Toolbox. It is very simple and easy to read. Acknowledgements: The code was provided by Yi Cao. You can also find it at http://www.mathworks.com/matlabcentral/fileexchange/19344-efficient-k-means-clustering-using-jit K-means from VGG ( C code with Matlab interface) This code calls the c code of k-means. It is the fastest one among these three and can deal with large dimensional matrix. Acknowledgements: The code was provided by Mark Everingham. http://www.comp.leeds.ac.uk/me Normalized Cuts You can find the code for data clustering and image segmentation at http://www.cis.upenn.edu/~jshi/software/ , wich was provided by Jianbo Shi. Dimension Reduction PCA (Matlab code) Multidimensional Scaling (Matlab code) Facial Analysis Haar Face Detection (C++ code) For instructions on using the code please refer to the readme.txt file included in the zip package. Note the code requires OpenCVand fltk (an open source window toolkit) to be installed on the target system. Acknowledgements: The code was provided by Paul Smith. http://www.cs.ucf.edu/~rps43158/index.php Optical Flow Lucas Kanade Method (matlab) This code includes the basic Lucas Kanade algorithm and Hierarchical LK using pyramids. Please refer to the 'readme' file included in the package for help on using the code. Following is a test sample to demonstrate the use of this code to calculate the optical flow. Acknowledgements: The code was written by Sohaib Khan. http://www.cs.ucf.edu/~khan/ Code from Piotr Dollar (matlab) It provides three methods to calculate optical flow: Lucas Kanade, HornSchunck and cross-correlation. Acknowledgements: The code was written by Piotr Dollar. http://vision.ucsd.edu/~pdollar/toolbox/doc/index.html Brox and Sand Methods (matlab) This code implements a variation of the paper "High accuracy optical flow using a theory for warping", presented at ECCV 2004. Details of implementation, especially the numerics, have been adapted from the PhD thesis of Dr. Thomas Brox. Extension to different color channels, and the concept of a local smoothing function, has been adopted from the PhD thesis of Dr. Peter Sand. Acknowledgements: The code was written by Visesh Uday Kumar Chari . http://perception.inrialpes.fr/~chari/myweb/Software/ Image Registration Registration (matlab) Please refer to the 'readme' file included in the package for help on using the code. Following is a test sample to demonstrate the use of this code for image registration. Acknowledgements: The code for image registration along with test samples is provided by Yaser Sheikh. http://www.cs.ucf.edu/~yaser/ Color Space Transformations RGB to LUV (matlab) LUV to RGB (matlab) RGB to LAB (matlab) Image Acquisition VFM (matlab) VFM performs frame grabbing from any Video for Windows source. On directions to using the code please refer to the code documentation. Acknowledgements: The code was written by Farzad Pezeshkpour, School of Information Systems, University of East Anglia. Miscellaneous Snakes Demo Page - (Williams-Shah Snakes Algorithm) Interactive java demo of Williams-Shah snakes algorithm. Code written by Sebastian van Delden Deformable Contours (C++ code) Code for the greedy snake algorithm. Writing Video Applications DirectShow tutorial. 3D SIFT This MATLAB code is meant for research purposes only. There have been various changes made to the code since the initial publication.Some subtle, some not so subtle.The most significant change is the use of a tessellation method to calculate the orientation bins.Our testing has shown improved results; however, currently rotational invariance has not been re-implemented.Rotational invariance is useful in certain applications, however it is useless in others, for this reason we have focused our time elsewhere.Another noteable change is the elimination of some points due to lack of descriptive information (multiple gradient orientations).This is a change which has a flag, and can therefore be turned on or off, however I suggest leaving it on and writing your frontend in such a way that allows 3DSIFT to refuse points, as this too has proven very effective in our testing. Please see the README file for more detailed and up-to-date information. Code form the following publication: Paul Scovanner, Saad Ali, and Mubarak Shah, A 3-Dimensional SIFT Descriptor and its Application to Action Recognition , ACM MM 2007. SPREF SPREF Code (Matlab) SPatiotemporal REgularity Flow (SPREF) is a new spatiotemporal feature that represents the directions in which a video or an image is regular, i.e., the pixel appearances change the least. It has several application, such as video inpainting and video compression. For more detail, please refer to our project page SPREF section. FRAISE FRAISE Code (C/C++) Fast Registration of Aerial Image SEquences (FRAISE) is a lightweight OpenCV based software system written in C/C++ to register a sequence of aerial images in near-realtime. A demo test video video sequence and an image sequence with corresponding FRAISE alignment are included. Acknowledgements: The code was written by Subhabrata Bhattacharya. http://www.cs.ucf.edu/~subh/
个人分类: CODE|16086 次阅读|2 个评论
[转载]如何查找论文是否被SCI,EI检索
热度 2 qianli8848 2012-9-3 10:40
学术界,尤其是国内学术界,把SCI,EI看得太重,很多大学都要求博士毕业要有SCI,硕士毕业要有EI文章。在加拿大,就我看来,不是很注重这一块,主要是分期刊和会议,另外就是业内有自己的标准,哪些是牛的期刊,哪些是一般的。甚至觉得有的好的会议比一般的期刊都要好,那种会议的每一篇稿件的审稿人有5到6个,通常回来的审稿意见都有论文本身那么长。 无论如何,这是一个潮流,一个趋势,我们不仿也不得不见风使一下舵。在投稿的时候就考虑一下,调查一下,以免埋没了金子的发光,延误了它耀眼的时机。下面,就我的个人的一些了解和理解,写一点关于如何确认自己的文章是不是被SCI,EI检索的方法,希望对大家有所帮助,如写得不对,欢迎各位专家指正。 EI检索一般在Engineering Village 上进行查询。一般国内高校都会有图书馆的入口。这里要注意的是一般不选数据库直接进行搜索在Datebase选项后可能有两个数据库:Compendex(即EI网络版)和Inspec(英国科学文摘)。当你的数据库显示是compendex时,恭喜你,你的文章被EI收录。当你的数据库显示是Inspec时,表示未被EI收录,但是,未被EI收录可能被SCI收录!即Inspec数据库收录的文章虽然可能不是EI检索,但可能是SCI检索!有时候一篇文章会既被inspec,也被compendex收录。 "SCI(Science Citation Index) 是美国科学信息研究所 (ISI) 建立的科技期刊文献检索系统,被 SCI 收录的期刊分为核心与外围两个范围。核心部分包括期刊 3000 多种,涵盖了全世界范围内各学科领域内的最优秀的科技期刊;外围部分包括核心部分在内,有期刊 5000 多种。外围部分的期刊虽然也是非常优秀的科技期刊,但与核心部分相比,学术水平相对低一些。 《 SCI 光盘版》即 SCI 核心部分收录的期刊论文,《 SCI 网络版》即 SCI 外围部分收录的期刊论文"。 SCI 检索我觉得有两种办法,一是直接去Thomson Reuters的网页看它的期刊列表: http://science.thomsonreuters.com/mjl/ 。直接在search terms下输入想要查询的内容。另外,在网页的下端有收录期刊列表选项注意有Science Citation Index 和 Science Citation Index Expanded(国内习惯称之为核心和扩展)可以更详细的查出关心的期刊是核心还是扩展。另一种办法是直接查文章是不是被SCI收录。这时是去ISI Web of Knowledge(是Thomson Reuters的产品之一,国内大学图书馆一般都有入口)这时要注意选择网页上面的Web of Science,而不是All Datebases,这样搜出来的才是表示被SCI收录的文章。 查询的时候,注意在EI数据库里一般是将姓名写全(Qiaokang Liang),而在SCI里姓写全而名只用了第一个字母(Liang QK)。 总结一下, 1,如果查文章是不是被SCI检索:进入ISI Web of Knowledge,选择Web of Science 数据库,进行查询; 2,如果查文章是不是被EI检索:进入EI Village, 选择Compendex 数据库,进行查询。 转载地址: http://blog.sina.com.cn/s/blog_564978430100iqpp.html
个人分类: 科研笔记|36395 次阅读|2 个评论
[转载]林达华推荐的几本数学书
xiangfasong 2012-9-1 23:56
Dahua Lin 早在几年前就已经冒尖出来了,现在在 MIT 攻读博士学位,前途不可限量。他总是有无穷的精力,学习,同时几篇几篇的写 paper ,几万行几万行的写 code ,几万字几万字的写 blog 。。他扎实的数学功底和相关知识的功底,以及深睿的洞察和理解问题的能力,注定他将在 machine learning 和 computer vision 等相关领域取得大量的成果,甚至是突破性的成果。期待他在这些领域做出贡献,为人类知识宝库添砖加瓦。 注: Applied Multivariate Statistical Analysis (5th Ed.)by Richard A. Johnson and Dean W. Wichern这本书有中文版的。《实用多元统计分析》陆璇 叶俊译 7 月 13 日 介绍几本数学书 前面几篇谈了一些对数学的粗浅看法。其实,如果对某门数学有兴趣,最好的方法就是走进那个世界去学习和体验。 这里说说几本我看过后觉得不错的数学教科书。 1. 线性代数 (Linear Algebra) : 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于 Learning 是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是 Introduction to Linear Algebra (3rd Ed.)by Gilbert Strang. 这本书是 MIT 的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法 —— 这些在实际工作中 MATLAB 可以代劳,关键的是要深入理解几个基础而又重要的概念: 子空间 (Subspace) ,正交 (Orthogonality) ,特征值和特征向量 (Eigenvalues and eigenvectors) ,和线性变换 (Linear transform) 。 从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。 Strang 的这本书在这方面是做得很好的。 而且,这本书有个得天独厚的优势。书的作者长期在 MIT 讲授线性代数课 (18.06) ,课程的 video 在 MIT 的 Open courseware 网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。 http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/CourseHome/index.htm 2. 概率和统计 (Probability and Statistics): 概率论和统计的入门教科书很多,我目前也没有特别的推荐。我在这里想介绍的是一本关于多元统计的基础教科书: Applied Multivariate Statistical Analysis (5th Ed.)by Richard A. Johnson and Dean W. Wichern 这本书是我在刚接触向量统计的时候用于学习的,我在香港时做研究的基础就是从此打下了。实验室的一些同学也借用这本书学习向量统计。这本书没有特别追求数学上的深度,而是以通俗易懂的方式讲述主要的基本概念,读起来很舒服,内容也很实用。对于 Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA) 这些 Learning 中的基本方法也展开了初步的论述。 之后就可以进一步深入学习贝叶斯统计和 Graphical models 。一本理想的书是 Introduction to Graphical Models (draft version). by M. Jordan and C. Bishop. 我不知道这本书是不是已经出版了(不要和 Learning in Graphical Models 混淆,那是个论文集,不适合初学)。这本书从基本的贝叶斯统计模型出发一直深入到复杂的统计网络的估计和推断,深入浅出, statistical learning 的许多重要方面都在此书有清楚论述和详细讲解。 MIT 内部可以 access ,至于外面,好像也是有电子版的。 3. 分析 (Analysis) : 我想大家基本都在大学就学过微积分或者数学分析,深度和广度则随各个学校而异了。这个领域是很多学科的基础,值得推荐的教科书莫过于 Principles of Mathematical Analysis , by Walter Rudin 有点老,但是绝对经典,深入透彻。缺点就是比较艰深 —— 这是 Rudin 的书的一贯风格,适合于有一定基础后回头去看。 在分析这个方向,接下来就是 泛函分析 (Functional Analysis) 。 Introductory Functional Analysis with Applications, by Erwin Kreyszig. 适合作为泛函的基础教材,容易切入而不失全面。我特别喜欢它对于谱论和算子理论的特别关注,这对于做 learning 的研究是特别重要的。 Rudin 也有一本关于 functional analysis 的书,那本书在数学上可能更为深刻,但是不易于上手,所讲内容和 learning 的切合度不如此书。 在分析这个方向,还有一个重要的学科是 测度理论 (Measure theory) ,但是我看过的书里面目前还没有感觉有特别值得介绍的。 4. 拓扑 (Topology) : 在我读过的基本拓扑书各有特色,但是综合而言,我最推崇: Topology (2nd Ed.)by James Munkres 这本书是 Munkres 教授长期执教 MIT 拓扑课的心血所凝。对于一般拓扑学 (General topology) 有全面介绍,而对于代数拓扑 (Algebraic topology) 也有适度的探讨。此书不需要特别的数学知识就可以开始学习,由浅入深,从最基本的集合论概念(很多书不屑讲这个)到 Nagata-Smirnov Theorem 和 Tychonoff theorem 等较深的定理(很多书避开了这个)都覆盖了。讲述方式思想性很强,对于很多定理,除了给出证明过程和引导你思考其背后的原理脉络,很多令人赞叹的亮点 —— 我常读得忘却饥饿,不愿释手。很多习题很有水平。 5. 流形理论 (Manifold theory) : 对于拓扑和分析有一定把握时,方可开始学习流形理论,否则所学只能流于浮浅。我所使用的书是 Introduction to Smooth Manifolds.by John M. Lee 虽然书名有 introduction 这个单词,但是实际上此书涉入很深,除了讲授了基本的 manifold, tangent space, bundle, sub-manifold 等,还探讨了诸如纲理论 (Category theory) ,德拉姆上同调 (De Rham cohomology) 和积分流形等一些比较高级的专题。对于李群和李代数也有相当多的讨论。行文通俗而又不失严谨,不过对某些记号方式需要熟悉一下。 虽然李群论是建基于平滑流形的概念之上,不过,也可能从矩阵出发直接学习李群和李代数 —— 这种方法对于急需使用李群论解决问题的朋友可能更加实用。而且,对于一个问题从不同角度看待也利于加深理解。下面一本书就是这个方向的典范: Lie Groups, Lie Algebras, and Representations: An Elementary Introduction.by Brian C. Hall 此书从开始即从矩阵切入,从代数而非几何角度引入矩阵李群的概念。并通过定义运算的方式建立 exponential mapping ,并就此引入李代数。这种方式比起传统的通过 “ 左不变向量场 (Left-invariant vector field)“ 的方式定义李代数更容易为人所接受,也更容易揭示李代数的意义。最后,也有专门的论述把这种新的定义方式和传统方式联系起来。 ———————————————————————————— 无论是研究 Vision, Learning 还是其它别的学科,数学终究是根基所在。学好数学是做好研究的基石。学好数学的关键归根结底是自己的努力,但是选择一本好的书还是大有益处的。不同的人有不同的知识背景,思维习惯和研究方向,因此书的选择也因人而异,只求适合自己,不必强求一致。上面的书仅仅是从我个人角度的出发介绍的,我的阅读经历实在非常有限,很可能还有比它们更好的书(不妨也告知我一声,先说声谢谢了)。 7 月 9 日 Learning 中的代数结构的建立 Learning 是一个融会多种数学于一体的领域。说起与此有关的数学学科,我们可能会迅速联想到 线性代数以及建立在向量空间 基础上的统计模型 —— 事实上,主流的论文中确实在很大程度上基于它们。 R^n (n- 维实向量空间 ) 是我们在 paper 中见到最多的空间,它确实非常重要和实用,但是,仅仅依靠它来描述我们的世界并不足够。事实上,数学家们给我们提供了丰富得多的工具。 “ 空间 ”(space) ,这是一个很有意思的名词,几乎出现在所有的数学分支的基础定义之中。归纳起来,所谓空间就是指一个集合以及在上面定义的某种数学结构。关于这个数学结构的定义或者公理,就成为这个数学分支的基础,一切由此而展开。 还是从我们最熟悉的空间 ——R^n 说起吧。大家平常使用这个空间的时候,除了线性运算,其实还用到了别的数学结构,包括 度量结构和内积结构 。 第一,它是一个拓扑空间 (Topological space) 。而且从拓扑学的角度看,具有非常优良的性质: Normal (implying Hausdorff and Regular), Locally Compact, Paracompact, with Countable basis, Simply connected (implying connected and path connected), Metrizable. 第二,它是一个度量空间 (Metric space) 。我们可以计算上面任意两点的距离。 第三,它是一个有限维向量空间 (Finite dimensional space) 。因此,我们可以对里面的元素进行代数运算(加法和数乘),我们还可以赋予它一组有限的基,从而可以用有限维坐标表达每个元素。 第四,基于度量结构和线性运算结构,可以建立起分析 (Analysis) 体系。我们可以对连续函数进行微分,积分,建立和求解微分方程,以及进行傅立叶变换和小波分析。 第五,它是一个希尔伯特空间(也就是完备的内积空间) (Hilbert space, Complete inner product space) 。它有一套很方便计算的内积 (inner product) 结构 —— 这个空间的度量结构其实就是从其内积结构诱导出来。更重要的,它是完备的 (Complete)—— 代表任何一个柯西序列 (Cauchy sequence) 都有极限 —— 很多人有意无意中其实用到了这个特性,不过习惯性地认为是理所当然了。 第六,它上面的线性映射构成的算子空间仍旧是有限维的 —— 一个非常重要的好处就是,所有的线性映射都可以用矩阵唯一表示。特别的,因为它是有限维完备空间,它的泛函空间和它本身是同构的,也是 R^n 。 因而,它们的谱结构,也就可以通过矩阵的特征值和特征向量获得 。 第七,它是一个测度空间 —— 可以计算子集的大小(面积 / 体积)。正因为此,我们才可能在上面建立概率分布 (distribution)—— 这是我们接触的绝大多数连续统计模型的基础。 我们可以看到,这是一个非常完美的空间,为我们的应用在数学上提供了一切的方便,在上面,我们可以理所当然地认为它具有我们希望的各种良好性质,而无须特别的证明;我们可以直接使用它的各种运算结构,而不需要从头建立;而且很多本来不一样的概念在这里变成等价的了,我们因此不再需要辨明它们的区别。 以此为界, Learning 的主要工作分成两个大的范畴: 建立一种表达形式,让它处于上面讨论的 R^n 空间里面。 获得了有限维向量表达后,建立各种代数算法或者统计模型进行分析和处理。 这里只讨论第一个范畴。先看看,目前用得比较广泛的一些方法: 直接基于原始数据建立表达。我们关心的最终目标是一个个现实世界中的对象:一幅图片,一段语音,一篇文章,一条交易记录,等等。这些东西大部分本身没有附着一个数值向量的。为了构造一个向量表达,我们可以把传感器中记录的数值,或者别的什么方式收集的数值数据按照一定的顺序罗列出来,就形成一个向量了。如果有 n 个数字,就认为它们在 R^n 里面。 不过,这在数学上有一点小问题,在大部分情况下,根据数据产生的物理原理,这些向量的值域并不能充满整个空间。比如图像的像素值一般是正值,而且在一个有界闭集之中。这带来的问题是,对它们进行线性运算很可能得到的结果会溢出正常的范围 —— 在大部分 paper 中,可能只是采用某些 heuristics 的手段进行简单处理,或者根本不管,很少见到在数学上对此进行深入探讨的 —— 不过如果能解决实际问题,这也是无可厚非的,毕竟不是所有的工作都需要像纯数学那样追求严谨。 量化 (quantization) 。这是在处理连续信号时被广泛采用的方式。只是习以为常,一般不提名字而已。比如一个空间信号( Vision 中的 image )或者时间信号,它们的 domain 中的值是不可数无限大的 (uncountably infinite) ,不要说表示为有限维向量,即使表达为无限序列也是不可能的。在这种情况下,一般在有限域内,按照一定顺序每隔一定距离取一个点来代表其周围的点,从而形成有限维的表达。这就是信号在时域或空域的量化。 这样做不可避免要丢失信息。但是,由于小邻域内信号的高度相关,信息丢失的程度往往并不显著。而且,从理论上说,这相当于在频域中的低通过率。对于有限能量的连续信号,不可能在无限高的频域中依然保持足够的强度,只要采样密度足够,丢失的东西可以任意的少。 除了表示信号,对于几何形体的表达也经常使用量化,比如表示 curve 和 surface 。 找出有限个数充分表达一个对象也许不是最困难的。不过 , 在其上面建立数学结构却未必了。一般来说,我们要对其进行处理,首先需要一个拓扑结构用以描述空间上的点是如何联系在一起。直接建立拓扑结构在数学上往往非常困难,也未必实用。因此, 绝大部分工作采取的方式是首先建立度量结构 。一个度量空间,其度量会自然地诱导出一个拓扑结构 —— 不过,很多情况下我们似乎会无视它的存在。 最简单的情况,就是使用原始向量表达的欧氏距离 (Euclidean distance) 作为 metric 。不过,由于原始表达数值的不同特性,这种方式效果一般不是特别好,未必能有效表达实际对象的相似性(或者不相似性)。因此,很多工作会有再此基础上进行度量的二次建立。方式是多种多样的,一种是寻求一个映射,把原空间的元素变换到一个新的空间,在那里欧氏距离变得更加合适。这个映射发挥的作用包括对信息进行筛选,整合,对某些部分进行加强或者抑制。这就是大部分关于 feature selection , feature extraction ,或者 subspace learning 的文章所要做的。另外一种方式,就是直接调节距离的计算方式(有些文章称之为 metric learning )。 这两种方式未必是不同的。如果映射是单射,那么它相当于在原空间建立了一个不同的度量。反过来,通过改变距离计算方式建立的度量在特定的条件下对应于某种映射。 大家可能注意到,上面提到的度量建立方法,比如欧氏距离,它需要对元素进行代数运算。对于普通的向量空间,线性运算是天然赋予的,我们无须专门建立,所以可以直接进行度量的构造 —— 这也是大部分工作的基础。可是,有些事物其原始表达不是一个 n-tuple ,它可能是一个 set ,一个 graph ,或者别的什么特别的 object 。怎么建立代数运算呢? 一种方法是直接建立。就是给这些东西定义自己的加法和数乘。这往往不是那么直接(能很容易建立的线性运算结构早已经被建立好并广泛应用了),可能需要涉及很深的数学知识,并且要有对问题本身的深入了解和数学上的洞察力。不过,一个新的代数结构一旦建立起来,其它的数学结构,包括拓扑,度量,分析,以及内积结构也随之能被自然地诱导出来,我们也就具有了对这个对象空间进行各种数学运算和操作的基础。加法和数乘看上去简单,但是如果我们对于本来不知道如何进行加法和数乘的空间建立了这两样东西,其理论上的贡献是非常大的。 (一个小问题:大家常用各种 graphical model ,但是,每次这些 model 都是分别 formulate ,然后推导出 estimation 和 evaluation 的步骤方法。是否可能对 "the space of graphical model" 或者它的某个特定子集建立某种代数结构呢?(不一定是线性空间,比如群,环,广群, etc )从而使得它们在代数意义上统一起来,而相应的 estimation 或者 evaluation 也可以用过代数运算 derive 。这不是我的研究范围,也超出了我目前的能力和知识水平,只是我相信它在理论上的重要意义,留作一个远景的问题。事实上,数学中确实有一个分支叫做 Algebraic statistics 可能在探讨类似的问题,不过我现在对此了解非常有限。) 回到我们的正题,除了直接建立运算定义,另外一种方式就是嵌入 (embedding) 到某个向量空间,从而继承其运算结构为我所用 。当然这种嵌入也不是乱来,它需要保持原来这些对象的某种关系。最常见的就是保距嵌入 (isometric embedding) ,我们首先建立度量结构(绕过向量表达,直接对两个对象的距离通过某种方法进行计算),然后把这个空间嵌入到目标空间,通常是有限维向量空间,要求保持度量不变。 “ 嵌入 ” 是一种在数学上应用广泛的手段,其主要目标就是通过嵌入到一个属性良好,结构丰富的空间,从而利用其某种结构或者运算体系。在拓扑学中,嵌入到 metric space 是对某个拓扑空间建立度量的重要手段。而在这里,我们是已有度量的情况下,通过嵌入获取线性运算的结构。除此以来,还有一种就是前些年比较热的 manifold embedding ,这个是通过保持局部结构的嵌入,获取全局结构,后面还会提到。 接下来的一个重要的代数结构,就是内积 (inner product) 结构。内积结构一旦建立,会直接诱导出一种性质良好的度量,就是范数 (norm) ,并且进而诱导出拓扑结构。一般来说,内积需要建立在线性空间的基础上,否则连一个二元运算是否是内积都无法验证。不过, kernel 理论指出,对于一个空间,只要定义一个正定核 (positive kernel)—— 一个符合正定条件的二元运算,就必然存在一个希尔伯特空间,其内积运算等效于核运算。 这个结论的重要意义在于,我们可以绕开线性空间,通过首先定义 kernel 的方式,诱导出一个线性空间 ( 叫做再生核希尔伯特空间 Reproducing Kernel Hilbert Space) ,从而我们就自然获得我们所需要的度量结构和线性运算结构。这是 kernel theory 的基础。 在很多教科书中,以二次核为例子,把二维空间变成三维,然后告诉大家 kernel 用于升维。对于这种说法,我一直认为在一定程度上是误导的。事实上, kernel 的最首要意义是内积的建立(或者改造),从而诱导出更利于表达的度量和运算结构。对于一个问题而言,选择一个切合问题的 kernel 比起关注 “ 升维 ” 来得更为重要。 kernel 被视为非线性化的重要手段,用于处理非高斯的数据分布。这是有道理的。 通过 nonlinear kernel 改造的内积空间,其结构和原空间的结构确实不是线性关联,从这个意义上说,它实施了非线性化。不过,我们还应该明白,它的最终目标还是要回到线性空间,新的内积空间仍旧是一个线性空间,它一旦建立,其后的运算都是线性的, 因此, kernel 的使用就是为了寻求一个新的线性空间,使得线性运算更加合理 —— 非线性化的改造最终仍旧是要为线性运算服务。 值得一提的是, kernelization 本质上说还是一种嵌入过程:对于一个空间先建立内积结构,并且以保持内积结构不变的方式嵌入到一个高维的线性空间,从而继承其线性运算体系。 上面说到的都是从全局的方式建立代数结构的过程,但是那必须以某种全局结构为基础(无论预先定义的是运算,度量还是内积,都必须适用于全空间。)但是,全局结构未必存在或者适合,而局部结构往往简单方便得多。这里就形成一种策略,以局部而达全局 —— 这就是流形 (manifold) 的思想,而其则根源于拓扑学。 从拓扑学的角度说,流形就是一个非常优良的拓扑空间:符合 Hausdorff 分离公理(任何不同的两点都可以通过不相交的邻域分离),符合第二可数公理(具有可数的拓扑基),并且更重要的是,局部同胚于 R^n 。因此,一个正则 (Regular) 流形基本就具有了各种最良好的拓扑特性。而局部同胚于 R^n ,代表了它至少在局部上可以继承 R^n 的各种结构,比如线性运算和内积,从而建立分析体系。事实上,拓扑流形继承这些结构后形成的体系,正是现代流形理论研究的重点。继承了分析体系的流形,就形成了微分流形 (Differential manifold) ,这是现代微分几何的核心。而微分流形各点上的切空间 (Tangent Space) ,则获得了线性运算的体系。而进一步继承了局部内积结构的流形,则形成黎曼流形 (Riemann manifold) , 而流形的全局度量体系 —— 测地距离 (geodesics) 正是通过对局部度量的延伸来获得。 进一步的,当流行本身的拓扑结构和切空间上的线性结构发生关系 —— 也就获得一簇拓扑关联的线性空间 —— 向量丛 (Vector bundle) 。 虽然 manifold theory 作为现代几何学的核心,是一个博大精深的领域,但是它在 learning 中的应用则显得非常狭窄。事实上,对于 manifold ,很多做 learning 的朋友首先反应的是 ISOMAP, LLE, eigenmap 之类的算法。这些都属于 embedding 。当然,这确实是流形理论的一个重要方面。严格来说,这要求是从原空间到其映像的微分同胚映射,因此,嵌入后的空间在局部上具有相同的分析结构,同时也获得了各种好处 —— 全局的线性运算和度量。不过,这个概念在 learning 的应用中被相当程度的放宽了 —— 微分同胚并不能被完全保证,而整个分析结构也不能被完全保持。大家更关注的是保持局部结构中的某个方面 —— 不过这在实际应用中的折衷方案也是可以理解的。事实表明,当原空间中的数据足够密集的情况下,这些算法工作良好。 Learning 中流形应用的真正问题在于它被过滥地运用于稀疏空间 (Sparse space) ,事实上在高维空间中撒进去几千乃至几十万点,即使最相邻的几点也难称为局部了,局部的范围和全局的范围其实已经没有了根本差别,连局部的概念都立不住脚的时候,后面基于其展开的一切工作也都没有太大的意义。事实上,稀疏空间有其本身的规律和法则,通过局部形成全局的流形思想从本质上是不适合于此的。 虽然,流形是一种非常美的理论,但是再漂亮的理论也需要用得其所 —— 它应该用于解决具有密集数据分布的低维空间。 至于,一些 paper 所报告的在高维空间(比如人脸)运用流形方法获得性能提升,其实未必是因为 “ 流形 ” 本身所起的作用,而很可能是其它方面的因素。 流形在实际应用中起重要作用的还有两个方面:一个是研究几何形体的性质(我们暂且不谈这个),还有就是它和代数结构的结合形成的李群 (Lie group) 和李代数 (Lie algebra) 。 当我们研究的对象是变换本身的时候,它们构成的空间是有其特殊性的,比如所有子空间投影形成了 Grassmann 流形,所有的可逆线性算子,或者仿射算子,也形成各自的流形。对他们的最重要操作是变换的结合,而不是加法数乘,因此,它们上面定义的更合适的代数结构应该是群和不是线性空间。而群和微分流形的结合体 —— 李群则成为它们最合适的描述体系 —— 而其切空间则构成了一种加强的线性空间:李代数,用于描述其局部变化特性。 李代数和李群的关系是非常漂亮的。它把变换的微变化转换成了线性空间的代数运算,使得移植传统的基于线性空间的模型和算法到李空间变得可能。而且李代数中的矩阵比起变换本身的矩阵甚至更能反映变换的特性。几何变换的李代数矩阵的谱结构就能非常方便地用于分析变换的几何特性。 最后,回头总结一下关于嵌入这个应用广泛的策略,在 learning 中的 isometry, kernel 和 manifold embedding 都属于此范畴,它们分别通过保持原空间的度量结构,内积结构和局部结构来获得到目标(通常是向量空间)的嵌入,从而获得全局的坐标表达,线性运算和度量,进而能被各种线性算法和模型所应用。 在获得这一系列好处的同时,也有值得我们注意的地方。首先,嵌入只是一种数学手段,并不能取代对问题本身的研究和分析。一种不恰当的原始结构或者嵌入策略,很多时候甚至适得其反 —— 比如稀疏空间的流形嵌入,或者选取不恰当的 kernel 。另外,嵌入适合于分析,而未必适合于重建或者合成。这是因为嵌入是一个单射 (injection) ,目标空间不是每一个点都和原空间能有效对应的。嵌入之后的运算往往就打破了原空间施加的限制。比如两个元素即使都是从原空间映射过来,它们的和却未必有原像,这时就不能直接地回到原空间了。当然可以考虑在原空间找一个点它的映射与之最近,不过这在实际中的有效性是值得商榷的。 和 Learning 有关的数学世界是非常广博的,我随着学习和研究的深入,越来越发现在一些我平常不注意的数学分支中有着适合于问题的结构和方法。比如,广群 (groupoid) 和广代数 (algebroid) 能克服李群和李代数在表示连续变换过程中的一些困难 —— 这些困难困扰了我很长时间。 解决问题和建立数学模型是相辅相成的 ,一方面,一个清晰的问题将使我们有明确的目标去寻求合适的数学结构,另一方面,对数学结构的深入理解对于指导问题的解决也是有重要作用的。对于解决一个问题来说,数学工具的选择最重要的是适合,而不是高深,但是如果在现有数学方法陷入困难的时候,寻求更高级别的数学的帮助,往往能柳暗花明。数学家长时间的努力解决的很多问题,并不都是理论游戏,他们的解决方案中很多时候蕴含着我们需要的东西,而且可能导致对更多问题的解决 —— 但是我们需要时间去学习和发现它们。
个人分类: 博文转载|2633 次阅读|0 个评论
Latex模板与Algorithm2e冲突解决方法
qianli8848 2012-8-31 09:13
在\documentclass{}与 \usepackage{}之间添加以下五行即可: \makeatletter \newif\if@restonecol \makeatother \let\algorithm\relax \let\endalgorithm\relax 转载地址: http://blog.sina.com.cn/s/blog_9908653401010lao.html
个人分类: 科研笔记|13252 次阅读|0 个评论
Fully Automatic Multi-target Tracking System
热度 1 qianli8848 2012-8-30 08:45
Fully Automatic Multi-target Tracking System
这个多目标跟踪系统是由SIFT提出者David G. Lowe课题组完成的,所对应的论文: A Boosted Particle Filter: Multitarget Detection and Tracking 获得 Best Paper prize in Cognitive Vision,代码可以从 项目主页 上面下载.
个人分类: CODE|8513 次阅读|1 个评论
[转载]会思考的机器预言家(《环球科学》2012年第8期)
热度 2 wanglin193 2012-8-29 15:02
这是最近一期《环球科学》(科学美国人杂志中文版)上刊登的一篇关于“机器学习”的科普文章。用通俗易懂的语言解释了机器学习领域的一些基本概念,包括: training , supervised learning , unsupervised learning, reinforcement learning , overfitting , regularization等。 我把它抄录下来,原文在 作者的个人主页 上可以下载: Machines that think for themselves 。 会思考的机器预言家 撰文 亚瑟 · S · 阿布-穆斯塔法( Yaser S. Abu-Mostafa )翻译 冷颖琳 通过梳理一套已知数据集,得出特征性的模式,就可以据此预测未来。这种“机器学习”的方法让计算机学会了思考,成了名副其实的“预言家”。 几年前,一家女装公司的主管请我帮忙设计一些时装款式,用以推荐给他们的客户。我对这个领域一点也不了解,任何人如果甚至健全的话,都不会来询问我的个人意见,毕竟我是个计算机科学家,还是男性。但公司主管询问的并不是我的个人意见,而是通过机器学习( machine learning )给出个人意见,我欣然允命。仅仅依靠销售数据和对客户的调查,我便成功地向那些我素未谋面的女士们,推荐了我从来没有见过的时尚款式。我的推荐是很多专业设计师的作品都相形见拙。不过,实话实说,我个人到现在仍然多女装知之甚少。 “机器学习”是计算机科学的一个分支,旨在使计算机能够从经验中学习一些规则。现在机器学习已经得到广泛应用,它使网络搜索相关度更高,血液化验结果更精确,还让婚介服务更容易为你找到合适的伴侣。简单点说,机器学习算法的原理是:通过梳理一套已知数据集,得出特征性的模式,就可以据此预测未来。最近 10 年来,机器学习领域已经取得了革命性的进展。实际上,正是这项技术,使得计算机在执行许多任务时,显得比人类更加“聪明”。沃森( Watson )就是一个现成的例子—— IBM 公司的这个计算机系统利用机器学习技术,在 Jeopardy 竞赛(美国一个很有名的智力竞赛电视节目)中打败了世界上最优秀的选手。 不过最重要的一场机器学习的竞赛与 Jeopardy 中那些会说话的机器没什么关系。几年前, Netflix (美国一家从事在线电影租赁的公司)想帮客户找到他们喜欢的电影——重点不是找热门的新片,而是各类电影中那些不起眼的片子。公司内部已经有一个电影评价和推荐系统,但决策者认为它远不能令人满意。所以,公司举办了一场完善现有系统的竞赛。规则很简单:第一个以 10% 的优势击败这个内部系统的参赛者,将赢得 100 万美元的奖金。世界各地成千上万的人报名参赛。 研究机器学习的人都梦想赢得这场竞赛。不但是冲着诱人的奖金,对于任何机器学习系统来说,最关键的组成部分都是数据,而 Netflix 提供了一亿条真是的数据记录,随时可供下载。 接受训练 Netflix 竞赛持续了近 3 年。当距离 10% 的目标越来越近时,各参赛小组之间开始相互合作。许多小组都将一部完整的电影分解开来,得到一长串不同的属性。例如,你可以根据电影的有趣程度,复杂程度,以及演员的吸引力等各种属性,对电影进行评分。针对每个观众,你可以回头翻看他评论过的电影,得知他对每个属性的重视程度 — 他对喜剧的喜爱程度如何?他喜欢简单的还是复杂的情节?他有多喜欢那些魅力十足的影星? 现在,预测变成了一件非常简单的事情,只需将观众的口味与新电影进行匹配即可。如果他喜欢喜剧和复杂的情节,那么他很可能喜欢看《热情似火》( Some Like it Hot )或《一条名叫旺达的鱼》( A Fish Called Wanda )这样曲折有趣的故事片。通过算法对数十个属性进行匹配之后,最终的结论将很好地预测观众对某部电影的喜爱程度。 我们会自然而然地想到那些容易辨认的属性,如“喜剧”或者“复杂的情节”,但机器学习算法不需要这么区分。事实上,整个过程都是自动化的 - 研究者从不为分析电影内容劳神。算法会从随机选择的任何属性开始分析,在获得了观众过去是如何评价电影的相关数据后,它会随之微调它所分析的属性,直到与观众的评价相符。 比方说,喜欢看电影 A 的人也喜欢看电影 B 、 C 和 D ,那么算法总会总结出这四部电影所共有的一项新属性。这个过程发生在“训练阶段”( training phase )——计算机对数百万条评价记录进行搜索,然后根据这些实际的评价,而不是主观分析,生成一系列客观属性。 机器学习算法生成的各种属性也许很难解读,不像“喜剧内容”之类的词语这么直白。世界上,他们可能极其隐晦,甚至不可理解,因为算法只是一心寻找能预测观众评价的最佳方式,不需要让我们明白他是怎么预测的。如果一套预测系统效果不错,我们并不执意要理解它的工作方式。 这可不是人们习惯的做法。刚开始干这行的时候,我给一家银行开发了一套信贷审批系统。开发出来之后,银行希望我解释一下各个属性的意义。这个要求并不是出于系统的表现——它的表现很好,而是出于法律的原因:银行拒绝给客户贷款时不可能不加解释,也不可能只给客户寄一封信,说申请被拒的原因是“ X 小于 0.5 ”。 不同的机器学习系统会生成各自独有的一套属性。在 Netflix 竞赛的最后几个星期里,各自为战的参赛小组开始利用所谓的“聚合技术”( aggregation techniques ),将他们的算法结合起来,当长达 3 年的竞赛进入最后一小时,还有两只队伍在为争夺头奖而奋战。记分牌显示,“合奏队”( Ensemble )稍稍领先,“贝尔科使用主义混沌队”( Bellkor’s Pragmatic Chaos )紧随其后。但经过最终审核,两只队伍的得分打了个平手——都比原始系统提高了 10.06% 。根据竞赛规则,当出现平局时,奖项将授予最先提交方案的队伍。而在苦战 3 年后,在这最后一个小时里,“贝尔科使用主义混沌队”提交方案的时间比“合奏队”早二十分钟。短短二十分钟的延迟,便让“合奏队”追求了 3 年的百万奖金落入了别人的口袋。 蹒跚学步 电影评价竞赛中所用的机器学习方法称作“监督学习”( supervised learning ),也被应用于医学诊断等领域。例如,我们可以给计算机提供几千张来自患者病历的白细胞图片,同时注明每张图片上的细胞是否是癌细胞。有了这些信息,算法将学会利用特定的细胞属性,去识别癌细胞——它们的形态,大小、颜色等。研究人员的做法是“监督”学习过程:对于“训练数据”中的每一张图片,研究人员都会将正确的答案告诉计算机。 监督学习是最常见的机器学习方法,但非唯一的一种。举例来说,当研究机器人的专家不知道两条腿的机器人如何走路最好时,他们可以设计一个算法,测试各种不同的走路姿态,如果机器人用某种姿态走路摔倒了,那么算法就学会不再采用这种走路姿态。 这种方法称作“增强学习”( reinforcement learning ),他基于我们所熟悉的一种学习策略——不断尝试,有错就改( trial and error )。在典型的增强学习情境下,无论是人类还是机器,都要做出某种动作。没有人告诉我们做什么,我们需要尝试,直面结果。根据结果,我们会强化正确的动作,避免错误的动作。最终,我们和机器都能学会各种情境下的正确动作。 以互联网搜索引擎为例,谷歌( Google )大约创立于 1997 年,当时,创建者并没有把整个互联网翻个底朝天,来训练服务器识别关于“多利羊”之类特定内容的网页,而是采用了增强学习算法,先抓取一部分网页生成初步结果,在根据用户的点击情况进行强化,确定哪些网页相关、哪些不相关。当用户点击了一个搜索结果中的网页链接时,算法便得知此网页是相关的;如果用户忽略了结果中最先出现的链接,算法推断此网页不相关。数以千万计的用户以这种方式作出反馈,算法将所得信息结合起来,据此在未来的搜索中调整对网页的评估结果。 过犹不及 研究人员常常将增强学习用于那些需要按顺序完成一系列动作的任务,比如玩游戏“一字棋”( tic-tac-toe ,在井字形的棋盘上放置 X 或 O ,最先使 3 个相同的字母连成一排的获胜)便是个简单的例子。计算机的第一步棋完全是随机的,既有可能先把 X 放到一个角上,也有可能放到一条边上。放到角上更为有利,会使计算机赢得棋局的次数更多。于是,这种结果是计算机的下棋策略 —— 把 X 放到角上 —— 得到强化。然后研究人员将这套程序加以扩展,用来推断后续各步棋的最佳走法,并将其用于从跳棋到围棋的各种游戏。在高级的经济学程序中也经常会用到增强学习,比如用来寻找纳什均衡( Nash equilibrium ,又称非合作博弈均衡,是指 n 人博弈中所有参与人最优策略组成的一种策略组合。在给定别人策略的情况下,没有人有足够的理由打破这种均衡。纳什均衡理论是现代主流博弈理论和经济理论的重要基础)。 有时候,要实现增强学习也很困难,因为我们的动作无法得到反馈。此时,我们必须改用“无监督学习”( unsupervised learning )。在这种情况下,研究人员有了一套数据集,却没有包含任何可以指导行动的信息——无论是监督学习中那种明确反馈的信息,还是增强学习中那种隐含在内的信息都没有。我们如何以这样的数据为基础来进行学习呢?要想理解这些数据的含义,第一步是分门别类,将相似的数据归为一组。这个过程称作聚类( clustering ),收集未加标注的数据,推断出与其隐含结构有关的信息。聚类使我们更好地理解数据,便于日后考虑所应采取的行动。有时候,我们只通过聚类就能达到目的——比如我们要整理图书馆,便只需把图书分门别类地归置起来。而有些时候,我们可能需要更近一步,对经过聚类的数据进行监督学习。 颇具讽刺意味的是,机器学习的实践最容易掉入陷阱的是,在一个问题上投入过多的计算力。能够识别这一情况并作出恰当的处理,正是专业人员不同于业余爱好者的地方。 更多的计算力有什么害处呢?机器学习算法试图检测出数据中存在的模式,如果算法太激进——没准用了过于复杂的模型来拟合(指已知某函数的若干离散值,通过调整该函数中若干待定参数,使得该函数与已知离散点集的差别最小)一个有限的数据样本,它会被自己蒙骗,检测出一些偶然出现于样本中、并不能反映真实情况的伪模式( spurious patterns )。在对机器学习的数学理论进行研究的过程中,数据的“过度拟合”( overfitting )是一个值得重点关注的问题。我们希望发现真实的关系,用来拟合数据,但不想做的太过头,得到一堆不可信的模式。 为了理解“过度拟合”是如何产生的,可以设想一个玩轮盘赌的赌徒。为简便起见,不妨假设这个赌桌只有红色和黑色的数字,不包括 0 和 00 。假如这个赌徒连续观看了 10 次轮盘赌,小球总是交替出现在红色和黑色的数字上。“轮盘肯定出问题了,”,她想,“总按红、黑、红、黑的顺序来。”根据这个有限的数据集,她在脑海里建立了一个模型。然而,在第 11 轮,她刚刚在红色上押了 100 美元的赌注,轮盘便恢复了随机性——和第 10 轮一样它有停在了黑色数字上。她输了个精光。 这个假想的赌徒就是在寻找一种根本不存在的模式。从统计学上讲,如何轮盘赌桌都有大约 1/500 的几率连续 10 次出现红黑交替的结果。不过,在轮盘赌中,过去的结果对将来没有任何影响,接下来的一轮永远有 50% 的几率停在红色上。在机器学习领域,我们有句老话:“数据也会被屈打成招”。 为避免这一后果,机器学习算法采用了一种称作“正则化”( regularization )的技术,倾向于使模型尽可能保持简单。模型越复杂,越容易发生过度拟合;正则化则保证了模型不会太过复杂。 研究人员还普遍采用“训练集”之外的数据,对算法进行验证。这样就可以确定算法的有效性是真实的,而不是在训练数据中所得到的假象。例如, Netflix 大奖在进行评判时,就没有采用提供给参赛者的数据,只有公司内部的人员可以得到。 前途光明 如果你在从事机器学习的工作,那应该几乎不会感到厌烦。你永远也不会知道接下来要开发什么应用程序。机器学习使某一领域内那些算不上专家的人——比如女装领域里的计算机科学家——仅仅基于数据,便能够进行学习和预测,因此,人们对这个学科的兴趣与日剧增。今年春天,来自 15 个不同专业的学生参加了我在美国加州理工学院开设的机器学习课程。我还第一次在网上发布了课程资料和授课视频,世界各地成千上万人观看了视频,完成了课程作业。 扩展阅读 Machines That Learn from Hints. Yaser S. Abu-Mostafa in Scientific American, Vol. 272, No. 4, pages 64–69; April 1995. Recommend a Movie, Win a Million Bucks. Joseph Sill in Engineering Science, Vol. 73, No. 2, pages 32–39; Spring 2010. Learning from Data. Yaser S. Abu-Mostafa, Malik Magdon-Ismail and Hsuan-Tien Lin. AMLbook, 2012. http://amlbook.com Learning from Data (online course): http://work.caltech.edu/telecourse.html
个人分类: 备忘|10537 次阅读|2 个评论
几个视频中行为识别的底层特征及代码
热度 1 qianli8848 2012-8-22 09:05
几个视频中行为识别的底层特征及代码
1. 比较出名的是Ivan Laptev的 3D Harris,这是一个可执行文件,用起来比较方便,是Harris在3维空间的扩展,检测到特征点之后是用HOG和HOF进行表示。一共的特征维数是162维。点击 这里 进入下载界面。 2. P. Dollar的cuboids角点检测,方法大致是用1D的gabor进行滤波。检测到角点之后,作者的实验表明直接用cuboids里面的梯度作为表示,然后再进行降维。我认为这个方法的缺点是降维之前的维数太高,求协方差矩阵特征值所花费的时间比较多(一般降维前的特征都是上万维的)。但是这个算法的一个好处是可以控制每个视频提特征点的个数。所以现在这个特征用的人是最多的。代码需要给作者发邮件获取。 3. Alexander Klaser的3D HOG不需要进行特征点检测,是对视频进行稠密采样,提取3D HOG特征。点击 这里 下载。这种稠密采样的特征在UCF Sports这个数据库上面的效果很好。 4. Paul Scovanner 的3D SIFT,同样也是将图像中很火的SIFT扩展到3维情况。但是这个特征用的人相对较少。 点击 这里 下载。
个人分类: CODE|8835 次阅读|1 个评论
两个Multi-task learning(多任务学习)的代码
热度 1 qianli8848 2012-8-21 09:40
在多任务学习中,当这些任务是相关的,联合的任务学习应该比单独学习每个任务的效果好,特别当每个任务的数据相当少的时候,在这种情况下,独自学习是很不成功的。 Convex Multi-task Feature Learning 是一篇比较经典的文章,代码点击 这里 可以下载。 还有一篇是Multi-Task Feature Learning Via Efficient l2-1 Norm Minimization, 点击 这里 可以下载。这篇文章的最后一位作者就是JiePing Ye, 是LDA的大牛,2D LDA和GLDA就是他提出来的,而且他的主页上面公布了不少的源代码,有兴趣的可以看一看~
个人分类: CODE|10473 次阅读|1 个评论
[转载]施一公:如何做一名优秀的博士生:(一)时间的付出
热度 1 qianli8848 2012-7-4 08:41
序:我从获得博士学位至今已经整整16个春秋,但博士阶段的感受仍然历历在目。我从指导自己独立实验室的第一个博士生到现在也已经13年了,其中的博士研究生和博士后中已经有11人在美国和中国的大学里担任独立实验室的PI。他们的成长过程差别极大,性格、能力也各有不同。应该说,没有任何一个学生可以简单地遵循另外一个优秀科学家的足迹脱颖而出。从这个意义上讲,科学家的成功是不可能复制的。但是,优秀科学家常常具备的共同特点应该对年轻学生有很大启发。 本文主要来自我在2008年清华大学研究生入学教育里一次2.5小时的讲座,又综合了一些随后的思考和总结。在那次讲座中,我一再强调, 我的目的不是要求研究生完全按照我讲的去做,而是希望从根本上冲击、振荡一下研究生的思考角度,启发大家找到最适合自己的成才之路。 本文很长,分四部分陆续发表出来。】 1.时间的付出。 所有成功的科学家一定具有的共同点,就是他们必须付出大量的时间和心血。这是一条真理。实际上,无论社会上哪一种职业,要想成为本行业中的佼佼者,都必须付出比常人多的时间。有时,个别优秀科学家在回答学生或媒体的问题时,轻描淡写地说自己的成功凭借的是运气,不是苦干。这种回答其实不够客观、也有些不负责任,因为他们有意忽略了自己在时间上的大量付出,而只是强调成功过程中的一个偶然因素,这样说的效果常常对年轻学生造成很大的误导,因为有些幼稚的学生甚至会因此开始投机取巧、不全力进取而是等待所谓的运气;另外一些学生则开始寻找他们的运气,把相当一部分精力和时间用在了与科学研究无关的事情上面。说极端一点:如果真有这样主要凭运气而非时间付出取得成功的科学家,那么他的成功很可能是攫取别人的成果,而自己十有八九不具备真正在领域内领先的学术水平。 大约在十年前,著名的华人生物学家蒲慕明先生曾经有一封非常著名的email在网上广为流传,这封email是蒲先生写给自己实验室所有博士生和博士后的,其中的观点我完全赞同。这封email写的语重心长,从中可以看出蒲先生的良苦用心。我无论是在普林斯顿还是在清华大学都把这封email转给了我实验室的所有学生,让他们体会。其中的一段是这样说的:“The most important thing is what I consider to be sufficient amount of time and effort in the lab work. I mentioned that about 60 hr working time per week is what I consider the minimal time an average successful young scientist in these days has to put into the lab work……I suggest that everyone puts in at least 6 hr concentrated bench work and 2+ hr reading and other research-related activity each day. Reading papers and books should be done mostly after work.”(我认为最重要的事情就是在实验室里的工作时间,当今一个成功的年轻科学家平均每周要有60小时左右的时间投入到实验室的研究工作......我建议每个人每天至少有6小时的紧张实验操作和两小时以上的与科研直接有关的阅读等。文献和书籍的阅读应该在这些工作时间之外进行。)。 有些学生读完蒲先生的email后告诉我,“看来我不是做学术的料,因为我真的吃不起这份苦。”我常常回复道,“我在你这么大年纪的时候,也会觉得长期这样工作不可思议。但在不知不觉之中,你会逐渐被科学研究的精妙所打动,也会为自己的努力和成绩骄傲,你会逐渐适应这种生活方式!”这句话表面上是劝学生,实则是我自己的经历与体会。 我从小就特别贪玩,并不喜欢学习。但来自学校和父母的教育与压力迫使自己尽量刻苦读书;我高中就读于河南省实验中学,凭借着比别人更加刻苦的努力,综合成绩始终名列前茅。1984年全国高中数学联赛我获得河南赛区第一名,保送进入清华大学。大学阶段,我保持了刻苦的传统,综合成绩全班第一并提前一年毕业。但这种应试和灌输教育的结果就是我很少真正独立思考、对专业不感兴趣。大学毕业时,我本没有打算从事科学研究,而是一心一意想下海经商。阴差阳错之间,我踏上了赴美留学之路。 可想而知,留学的第一年,我情绪波动很大,内心浮躁而迷茫,根本无心念书、做研究,而是花了很多时间在中餐馆打工、选修计算机课程。第二年,我开始逐渐适应科研的“枯燥”,并开始有了一点自己的体会,有时领会了一些精妙之处后会洋洋得意,也会产生“原来不过如此”的想法,逐渐对自己的科研能力有了一点自信。这期间,博士研究生的课程全部修完,我每周五天、每天从上午9点做实验到晚上7、8点,周末也会去两个半天。到了第三年,我已经开始领会到科研的逻辑,有点儿跃跃欲试的感觉,在组会上常常提问,而这种“入门”的感觉又让我对研究增加了很多兴趣,晚上常常干到11点多,赶最后一班校车从霍普金斯医学院回Homewood campus(我住在附近)。1993年我曾经在自己的实验记录本的日期旁标注“This is the 21st consecutive day of working in the lab.”(这是我连续第21天在实验室工作。),以激励自己。其实,这多少有作秀之嫌,因为其中的一个周末我一共只做了五、六个小时的实验。到第四年以后,我完全适应了实验室的科研环境,也不会再感受到枯燥或时间上的压力了。时间安排完全服从实验的需要,尽量往前赶。其实,这段时期的实验时间远多于刚刚进实验室的时候,但感觉上好多了。 研究生阶段后期,我的刻苦在实验室是出了名的。在纽约做博士后时期则是我这辈子最苦的两年,每天晚上做实验到半夜三点左右,回到住处躺下来睡觉时常常已是四点以后;但每天早晨八点都会被窗外纽约第一大道(First Avenue)上的汽车喧闹声吵醒,九点左右又回到实验室开始了新的一天。每天三餐都在实验室,分别在上午9点、下午3点和晚上9、10点。这样的生活节奏持续11天,从周一到第二个星期的周五,周五晚上做灰狗长途汽车回到巴尔地摩(Baltimore)的家里,周末两天每天睡上近十个小时,弥补过去11天严重缺失的睡眠。周一早晨再开始下一个11天的奋斗。虽然体力上很累,但我心里很满足、很骄傲,我知道自己在用行动打造未来、在创业。有时我也会在日记里鼓励自己。我住在纽约市曼哈顿区65街与第一大道路口附近,离纽约著名的中心公园(Central Park)很近,那里也时有文化娱乐活动,但在纽约工作整整两年,我从未迈进中心公园一步。 我一定会把自己的这段经历讲给每一个我自己的学生听,新生常常问我:“老师,您觉得自己苦吗?”我通常回答,“只有做自己没有兴趣的事情时候觉得很苦。有兴趣以后一点也不觉得苦。” 是啊,一个精彩的实验带给我的享受比看一部美国大片强多了。现在回想起当时的刻苦,感觉仍很骄傲、很振奋!有时我想:如果自己在博士生、博士后阶段的那七年半不努力进取,而是不加节制地看电影、读小说、找娱乐(当时的互联网远没有现在这么内容丰富),现在该是什么状况? 做一个优秀的博士生,时间的付出是必要条件。
个人分类: 科研笔记|4413 次阅读|1 个评论
英语写作检查软件
热度 3 qianli8848 2012-6-26 09:11
1.StyleWriter(润色首推) 嵌入word使用。主要功能:检查拼写、语法等错误,润色文章。 本软件的诱人之处在于润色文章,可以有提示你对同义词做选择,让你的文章更地道。 http://www.editorsoftware.com/downloads/DWSWT.html 另外还有统计文章特征的功能,详见李泳老师的博文: 从Stylewriter看英文写作 2.Triivi(检查首选) 英文输入软件,免费开源,具备词频调整、智能纠错,根据已经输入的字母猜出想写点词或短语,提高英文输入速度!标准版具有50万词汇量,专业词库(约20万词汇). http://www.triivi.com/ 3.Intellicomplete(推荐) 虽没有triivi专业词汇丰富,但定义性较强,且自定义语库方便,只需要一个快捷键Ctrl+Alt+J。 http://www.download.com/IntelliComplete/3000-2079_4-10062169.html 4.As-U-Type 是一款英文输入单词自动校正软件,根据软件自带的和自定义的校正词典,当你编辑文档输入的单词有误是,它会自动帮你校正。 此软件是在输入后按空格键后给出提示,没有实时提醒功能,这个很遗憾。 http://www.asutype.com/files/asutype-setup.exe 5.TypeTip 与As-U-Type功能雷同的辅助录入软件,具有实时提示及校正功能,但不能输入词组phrase,不过兼容性较好。 http://www.sharewareconnection.com/typetip.htm 6.金山写作助手 金山词霸自带工具。编写英文文档时,常常会遭遇当前语境不知该用哪个单词的尴尬,这时你会怎么办?打开词霸查找一通?哦,那太麻烦了。其实最简单的方法,是快速按动两下Alt键。这时词霸将自动弹出一个特别设计的“写作助手”模块,试着输入一下中文词汇吧。看到了吗?软件将自动弹出一组与搜索词对应的英文单词,如果感觉片面的解释无法帮助判断,还可以继续输入一个“分号”,这时“写作助手”将会在翻译结果中自动加入精选例句。 7.Bullfighter 可用作微软Word和PowerPoint的插件 ( www.fightthebull.com/bullfighter.asp ),不过它只能在Windows操作系统中运行。Bullfighter的目标是找到并且删除你文章中那些难懂的部分。 8.whitesomke, WriteExperss 虽然WhiteSmoke也向中国和印度的母语非英语者推销这款产品,但公司表示他们最大的目标客户群仍是那些想让自己的文笔变得典雅一些的以英语为母语者。
个人分类: 科研笔记|8823 次阅读|4 个评论
免费5G网盘
qianli8848 2012-6-21 10:00
免费5G网盘
IDrive Sync 提供免费的 5 GB 存储空间,新用户只要在主页上点击 Sign Up注册即可。
个人分类: 科研笔记|3238 次阅读|0 个评论
ACCV 2012 call for papers
qianli8848 2012-6-19 09:06
ACCV 2012 call for papers
Important Dates Paper submission deadline July 1,2012 Review open August 30,2012 Rebuttal deadline September 6, 2012 Notification of acceptance September 25, 2012 Camera ready early registration October 10, 2012 Workshops/Tutorials/Demos/Special session November 5-6, 2012 Main conference November 7-9, 2012 Call For Papers Motion and Tracking / Stereo and Structure from Motion / Shape from X / Color and Texture / Segmentation and Grouping / Image-Based Modeling / Illumination and Reflectance Modeling / Sensors / Early and Biologically-Inspired Vision / Computational Photography and Video / Object Recognition / Object Detection and Categorization / Video Analysis and Event Recognition / Face and Gesture Analysis / Statistical Methods and Learning / Performance Evaluation / Medical Image Analysis / Optimization Methods / Applications of Computer Vision link: http://www.accv2012.org/
个人分类: 科研笔记|5031 次阅读|0 个评论
[转载]流形学习
热度 4 qianli8848 2012-6-18 16:55
流形(manifold)的概念最早是在1854年由 Riemann 提出的(德文Mannigfaltigkeit),现代使用的流形定义则是由 Hermann Weyl 在1913年给出的。江泽涵先生对这个名词的翻译出自文天祥《正气歌》“天地有正气,杂然赋流形”,日本人则将之译为“多样体”,二者孰雅孰鄙,高下立判。 流形(Manifold),一般可以认为是局部具有欧氏空间性质的空间。而实际上欧氏空间就是流形最简单的实例。像地球表面这样的球面是一个稍为复杂的例子。一般的流形可以通过把许多平直的片折弯并粘连而成。 流形在数学中用于描述几何形体,它们提供了研究可微性的最自然的舞台。物理上,经典力学的相空间和构造广义相对论的时空模型的四维伪黎曼流形都是流形的实例。他们也用于组态空间(configuration space)。环(torus)就是双摆的组态空间。 如果把几何形体的拓扑结构看作是完全柔软的,因为所有变形(同胚)会保持拓扑结构不变,而把解析簇看作是硬的,因为整体的结构都是固定的(譬如一个1维多项式,如果你知道(0,1)区间的取值,则整个实属范围的值都是固定的,局部的扰动会导致全局的变化),那么我们可以把光滑流形看作是介于两者之间的形体,其无穷小的结构是硬的,而整体结构是软的。这也许是中文译名流形的原因(整体的形态可以流动),该译名由著名数学家和数学教育学家江泽涵引入。这样,流形的硬度使它能够容纳微分结构,而它的软度使得它可以作为很多需要独立的局部扰动的数学和物理上的模型。 最容易定义的流形是拓扑流形,它局部看起来象一些"普通"的欧氏空间Rn。形式化的讲,一个拓扑流形是一个局部同胚于一个欧氏空间的拓扑空间。这表示每个点有一个领域,它有一个同胚(连续双射 其逆也连续)将它映射到Rn。这些同胚是流形的坐标图。 通常附加的技术性假设被加在该拓扑空间上,以排除病态的情形。可以根据需要要求空间是豪斯朵夫的并且第二可数。这表示下面所述的有两个原点的直线不是拓扑流形,因为它不是豪斯朵夫的。 流形在某一点的维度就是该点映射到的欧氏空间图的维度(定义中的数字n)。连通流形中的所有点有相同的维度。有些作者要求拓扑流形的所有的图映射到同一欧氏空间。这种情况下,拓扑空间有一个拓扑不变量,也就是它的维度。其他作者允许拓扑流形的不交并有不同的维度。 自从2000年以后,流形学习被认为属于非线性降维的一个分支。众所周知,引导这一领域迅速发展的是2000年Science杂志上的两篇文章: Isomap and LLE (Locally Linear Embedding)。 1. 流形学习的基本概念 那流形学习是什莫呢?为了好懂,我尽可能应用少的数学概念来解释这个东西。所谓流形(manifold)就是一般的几何对象的总称。比如人,有中国人、美国人等等;流形就包括各种维数的曲线曲面等。和一般的降维分析一样,流形学习把一组在高维空间中的数据在低维空间中重新表示。和以往方法不同的是,在流形学习中有一个假设,就是所处理的数据采样于一个潜在的流形上,或是说对于这组数据存在一个潜在的流形。对于不同的方法,对于流形性质的要求各不相同,这也就产生了在流形假设下的各种不同性质的假设,比如在Laplacian Eigenmaps中要假设这个流形是紧致黎曼流形等。对于描述流形上的点,我们要用坐标,而流形上本身是没有坐标的,所以为了表示流形上的点,必须把流形放入外围空间(ambient space)中,那末流形上的点就可以用外围空间的坐标来表示。比如R^3中的球面是个2维的曲面,因为球面上只有两个自由度,但是球面上的点一般是用外围R^3空间中的坐标表示的,所以我们看到的R^3中球面上的点有3个数来表示的。当然球面还有柱坐标球坐标等表示。对于R^3中的球面来说,那末流形学习可以粗略的概括为给出R^3中的表示,在保持球面上点某些几何性质的条件下,找出找到一组对应的内蕴坐标(intrinsic coordinate)表示,显然这个表示应该是两维的,因为球面的维数是两维的。这个过程也叫参数化(parameterization)。直观上来说,就是把这个球面尽量好的展开在通过原点的平面上。在PAMI中,这样的低维表示也叫内蕴特征(intrinsic feature)。一般外围空间的维数也叫观察维数,其表示也叫自然坐标(外围空间是欧式空间)表示,在统计中一般叫observation。 了解了流形学习的这个基础,那末流形学习中的一些是非也就很自然了,这个下面穿插来说。由此,如果你想学好流形学习里的方法,你至少要了解一些微分流形和黎曼几何的基本知识。 2. 代表方法 a) Isomap。 Josh Tenenbaum的Isomap开创了一个数据处理的新战场。在没有具体说Isomap之前,有必要先说说MDS(Multidimensional Scaling)这个方法。我们国内的很多人知道PCA,却很多人不知道MDS。PCA和MDS是相互对偶的两个方法。MDS就是理论上保持欧式距离的一个经典方法,MDS最早主要用于做数据的可视化。由于MDS得到的低维表示中心在原点,所以又可以说保持内积。也就是说,用低维空间中的内积近似高维空间中的距离。经典的MDS方法,高维空间中的距离一般用欧式距离。 Isomap就是借窝生蛋。他的理论框架就是MDS,但是放在流形的理论框架内,原始的距离换成了流形上的测地线(geodesic)距离。其它一模一样。所谓的测地线,就是流形上加速度为零的曲线,等同于欧式空间中的直线。我们经常听到说测地线是流形上两点之间距离最短的线。其实这末说是不严谨的。流形上两点之间距离最短的线是测地线,但是反过来不一定对。另外,如果任意两个点之间都存在一个测地线,那末这个流形必须是连通的邻域都是凸的。Isomap就是把任意两点的测地线距离(准确地说是最短距离)作为流形的几何描述,用MDS理论框架理论上保持这个点与点之间的最短距离。在Isomap中,测地线距离就是用两点之间图上的最短距离来近似的,这方面的算法是一般计算机系中用的图论中的经典算法。 如果你曾细致地看过Isomap主页上的matlab代码,你就会发现那个代码的实现复杂度远超与实际论文中叙述的算法。在那个代码中,除了论文中写出的算法外,还包括了 outlier detection和embedding scaling。这两样东西,保证了运行他们的程序得到了结果一般来说相对比较理想。但是,这在他们的算法中并没有叙述。如果你直接按照他论文中的方法来实现,你可以体会一下这个结果和他们结果的差距。从此我们也可以看出,那几个作者做学问的严谨态度,这是值得我们好好学习的。 另外比较有趣的是,Tenenbaum根本不是做与数据处理有关算法的人,他是做计算认知科学(computational cognition science)的。在做这个方法的时候,他还在stanford,02年就去了MIT开创一派,成了CoCoSci 的掌门人,他的组成长十分迅速。但是有趣的是,在Isomap之后,他包括他在MIT带的学生就从来再也没有做过类似的工作。其原因我今年夏天有所耳闻。他在今年参加 UCLA Alan Yuille 组织的一个summer school上说,(不是原文,是大意)我们经常忘了做研究的原始出发点是什莫。他做Isomap就是为了找一个好的visual perception的方法,他还坚持了他的方向和信仰,computational cognition,他没有随波逐流。而由他引导起来的 manifold learning 却快速的发展成了一个新的方向。 这是一个值得我们好好思考的问题。我们做一个东西,选择一个研究方向究竟是为了什莫。你考虑过吗? (当然,此问题也在问我自己) b) LLE (Locally linear Embedding) LLE在作者写出的表达式看,是个具有十分对称美的方法. 这种看上去的对称对于启发人很重要。LLE的思想就是,一个流形在很小的局部邻域上可以近似看成欧式的,就是局部线性的。那末,在小的局部邻域上,一个点就可以用它周围的点在最小二乘意义下最优的线性表示。LLE把这个线性拟合的系数当成这个流形局部几何性质的刻画。那末一个好的低维表示,就应该也具有同样的局部几何,所以利用同样的线性表示的表达式,最终写成一个二次型的形式,十分自然优美。 注意在LLE出现的两个加和优化的线性表达,第一个是求每一点的线性表示系数的。虽然原始公式中是写在一起的,但是求解时,是对每一个点分别来求得。第二个表示式,是已知所有点的线性表示系数,来求低维表示(或嵌入embedding)的,他是一个整体求解的过程。这两个表达式的转化正好中间转了个弯,使一些人困惑了,特别后面一个公式写成一个二次型的过程并不是那末直观,很多人往往在此卡住,而阻碍了全面的理解。我推荐大家去精读 Saul 在JMLR上的那篇LLE的长文。那篇文章无论在方法表达还是英文书写,我认为都是精品,值得好好玩味学习。 另外值得强调的是,对于每一点处拟合得到的系数归一化的操作特别重要,如果没有这一步,这个算法就没有效果。但是在原始论文中,他们是为了保持数据在平行移动下embedding不变。 LLE的matlab代码写得简洁明了,是一个样板。 在此有必要提提Lawrence Saul这个人。在Isomap和LLE的作者们中,Saul算是唯一一个以流形学习(并不限于)为研究对象开创学派的人。Saul早年主要做参数模型有关的算法。自从LLE以后,坐阵UPen创造了一个个佳绩。主要成就在于他的两个出色学生,Kilian Weinberger和 Fei Sha,做的方法。拿了很多奖,在此不多说,可以到他主页上去看。Weinberger把学习核矩阵引入到流形学习中来。他的这个方法在流形学习中影响到不是很显著,却是在 convex optimization 中人人得知。Fei Sha不用多说了,machine learning中一个闪亮的新星,中国留学生之骄傲。现在他们一个在Yahoo,一个在Jordan手下做PostDoc。 c) Laplacian Eigenmaps 要说哪一个方法被做的全面,那莫非LE莫属。如果只说LE这个方法本身,是不新的,许多年前在做mesh相关的领域就开始这莫用。但是放在黎曼几何的框架内,给出完整的几何分析的,应该是Belkin和Niyogi(LE作者)的功劳。 LE的基本思想就是用一个无向有权图来描述一个流形,然后通过用图的嵌入(graph embedding)来找低维表示。说白了,就是保持图的局部邻接关系的情况把这个图从高维空间中重新画在一个低维空间中(graph drawing)。 在至今为止的流行学习的典型方法中,LE是速度最快、效果相对来说不怎莫样的。但是LE有一个其他方法没有的特点,就是如果出现outlier情况下,它的鲁棒性(robustness)特别好。 后来Belkin和Niyogi又分析了LE的收敛性。大家不要忽视这个问题,很重要。鼓励有兴趣数学功底不错的人好好看看这篇文章。 d) Hessian Eigenmaps 如果你对黎曼几何不懂,基本上看不懂这个方法。又加作者表达的抽象,所以绝大多数人对这个方法了解不透彻。在此我就根据我自己的理解说说这个方法。 这个方法有两个重点:(1)如果一个流形是局部等距(isometric)欧式空间中一个开子集的,那末它的Hessian矩阵具有d+1维的零空间。(2)在每一点处,Hessian系数的估计。 首先作者是通过考察局部Hessian的二次型来得出结论的,如果一个流形局部等距于欧式空间中的一个开子集,那末由这个流形patch到开子集到的映射函数是一个线性函数,线性函数的二次混合导数为零,所以局部上由Hessian系数构成的二次型也为零,这样把每一点都考虑到,过渡到全局的Hessian矩阵就有d+1维的零空间,其中一维是常函数构成的,也就是1向量。其它的d维子空间构成等距坐标。这就是理论基础的大意,当然作者在介绍的时候,为了保持理论严谨,作了一个由切坐标到等距坐标的过渡。 另外一个就是局部上Hessian系数的估计问题。我在此引用一段话: If you approximate a function f(x) by a quadratic expansion f(x) = f(0) + (grad f)^T x+x^T Hf x + rem then the hessian is what you get for the quadratic component.So simply over a given neighborhood, develop the operator that approximates a function by its projection on 1, x_1,...,x_k,x_1^2,...,x_k^2, x_1*x_2,... ,x_{k-1}*x_{k}.Extract the component of the operator that delivers the projection onx_1^2,...,x_k^2, x_1*x_2,... ,x_{k-1}*x_{k}. dave 这段话是我在初学HE时候,写信问Dave Donoho,他给我的回信。希望大家领会。如果你了解了上述基本含义,再去细看两遍原始论文,也许会有更深的理解。由于HE牵扯到二阶导数的估计,所以对噪声很敏感。另外,HE的原始代码中在计算局部切坐标的时候,用的是奇异值分解(SVD),所以如果想用他们的原始代码跑一下例如图像之类的真实数据,就特别的慢。其实把他们的代码改一下就可以了,利用一般PCA的快速计算方法,计算小尺寸矩阵的特征向量即可。还有,在原始代码中,他把Hessian系数归一化了,这也就是为什莫他们叫这个方法为 Hessian LLE 的原因之一。 Dave Dohono是学术界公认的大牛,在流形学习这一块,是他带着他的一个学生做的,Carrie Grimes。现在这个女性研究员在Google做 project leader,学术界女生同学的楷模 : ) e) LTSA (Local tangent space alignment) 很荣幸,这个是国内学者(浙江大学数学系的老师ZHANG Zhenyue)为第一作者做的一个在流行学习中最出色的方法。由于这个方法是由纯数学做数值分析出身的老师所做,所以原始论文看起来公式一大堆,好像很难似的。其实这个方法非常直观简单。 象 Hessian Eigenmaps 一样,流形的局部几何表达先用切坐标,也就是PCA的主子空间中的坐标。那末对于流形一点处的切空间,它是线性子空间,所以可以和欧式空间中的一个开子集建立同构关系,最简单的就是线性变换。在微分流形中,就叫做切映射 (tangential map),是个很自然很基础的概念。把切坐标求出来,建立出切映射,剩下的就是数值计算了。最终这个算法划归为一个很简单的跌代加和形式。如果你已经明白了MDS,那末你就很容易明白,这个算法本质上就是MDS的从局部到整体的组合。 这里主要想重点强调一下,那个论文中使用的一个从局部几何到整体性质过渡的alignment技术。在spectral method(特征分解的)中,这个alignment方法特别有用。只要在数据的局部邻域上你的方法可以写成一个二次项的形式,就可以用。 其实LTSA最早的版本是在02年的DOCIS上。这个alignment方法在02年底Brand的 charting a manifold 中也出现,隐含在Hessian Eigenmaps中。在HE中,作者在从局部的Hessian矩阵过渡到全局的Hessian矩阵时,用了两层加号,其中就隐含了这个alignment方法。后来国内一个叫 ZHAO Deli 的学生用这个方法重新写了LLE,发在Pattern Recognition上,一个短文。可以预见的是,这个方法还会被发扬光大。 ZHA Hongyuan 后来专门作了一篇文章来分析 alignment matrix 的谱性质,有兴趣地可以找来看看。 f) MVU (Maximum variance unfolding) 这个方法刚发出来以后,名字叫做Semi-definite Embedding (SDE)。构建一个局部的稀疏欧式距离矩阵以后,作者通过一定约束条件(主要是保持距离)来学习到一个核矩阵,对这个核矩阵做PCA就得到保持距离的embedding,就这莫简单。但是就是这个方法得了多少奖,自己可以去找找看。个人观点认为,这个方法之所以被如此受人赏识,无论在vision还是在learning,除了给流形学习这一领域带来了一个新的解决问题的工具之外,还有两个重点,一是核方法(kernel),二是半正定规划(semi-definite programming),这两股风无论在哪个方向(learning and Vision)上都吹得正猛。 g) S-Logmaps aa 这个方法不太被人所知,但是我认为这个是流形学习发展中的一个典型的方法(其实其他还有很多人也这莫认为)。就效果来说,这个方法不算好,说它是一个典型的方法,是因为这个方法应用了黎曼几何中一个很直观的性质。这个性质和法坐标(normal coordinate)、指数映射(exponential map)和距离函数(distance function)有关。 如果你了解黎曼几何,你会知道,对于流形上的一条测地线,如果给定初始点和初始点处测地线的切方向,那莫这个测地线就可以被唯一确定。这是因为在这些初始条件下,描述测地线的偏微分方程的解是唯一的。那末流形上的一条测地线就可以和其起点处的切平面上的点建立一个对应关系。我们可以在这个切平面上找到一点,这个点的方向就是这个测地线在起点处的切方向,其长度等于这个测地线上的长。这样的一个对应关系在局部上是一一对应的。那末这个在切平面上的对应点在切平面中就有一个坐标表示,这个表示就叫做测地线上对应点的法坐标表示(有的也叫指数坐标)。那末反过来,我们可以把切平面上的点映射到流形上,这个映射过程就叫做指数映射(Logmap就倒过来)。如果流形上每一个点都可以这样在同一个切平面上表示出来,那末我们就可以得到保持测地线长度的低维表示。如果这样做得到,流形必须可以被单坐标系统所覆盖。 如果给定流形上的采样点,如果要找到法坐标,我们需要知道两个东西,一是测地线距离,二是每个测地线在起点处的切方向。第一个东西好弄,利用Isomap中的方法直接就可以解决,关键是第二个。第二个作者利用了距离函数的梯度,这个梯度和那个切方向是一个等价的关系,一般的黎曼几何书中都有叙述。作者利用一个局部切坐标的二次泰勒展开来近似距离函数,而距离是知道的,就是测地线距离,局部切坐标也知道,那末通过求一个简单的最小二乘问题就可以估计出梯度方向。 如果明白这个方法的几何原理,你再去看那个方法的结果,你就会明白为什莫在距离中心点比较远的点的embedding都可以清楚地看到在一条条线上,效果不太好。 bb 最近这个思想被北大的一个年轻的老师 LIN Tong 发扬光大,就是ECCV‘06上的那篇,还有即将刊登出的TPAMI上的 Riemannian Manifold Learning,实为国内研究学者之荣幸。Lin的方法效果非常好,但是虽然取名叫Riemannian,没有应用到黎曼几何本身的性质,这样使他的方法更容易理解。 Lin也是以一个切空间为基准找法坐标,这个出发点和思想和Brun(S-Logmaps)的是一样的。但是Lin全是在局部上操作的,在得出切空间原点处局部邻域的法坐标以后,Lin采用逐步向外扩展的方法找到其他点的法坐标,在某一点处,保持此点到它邻域点的欧式距离和夹角,然后转化成一个最小二乘问题求出此点的法坐标,这样未知的利用已知的逐步向外扩展。说白了就像缝网一样,从几个临近的已知点开始,逐渐向外扩散的缝。效果好是必然的。 有人做了个好事情,做了个系统,把几个方法的matlab代码放在了一起 http://www.math.umn.edu/~wittman/mani/ 以上提到方法论文,都可以用文中给出的关键词借助google.com找到。 3. 基本问题和个人观点 流形学习现在还基本处于理论探讨阶段,在实际中难以施展拳脚,不过在图形学中除外。我就说说几个基本的问题。 a. 谱方法对噪声十分敏感。希望大家自己做做实验体会一下,流形学习中谱方法的脆弱。 b. 采样问题对结果的影响。 c. 收敛性 d. 一个最尴尬的事情莫过于,如果用来做识别,流形学习线性化的方法比原来非线性的方法效果要好得多,如果用原始方法做识别,那个效果叫一个差。也正因为此,使很多人对流形学习产生了怀疑。原因方方面面 : ) e. 把偏微分几何方法引入到流形学习中来是一个很有希望的方向。这样的工作在最近一年已经有出现的迹象。 f. 坦白说,我已不能见庐山真面目了,还是留给大家来说吧 结尾写得有点草率,实在是精疲力尽了,不过还好主体部分写完。 『 以下是dodo在回帖中补充的内容 : 看一些问到人脸识别有关的问题。由于此文结尾写得有点草,我这里再补充一下。 dodo 1)人脸识别的识别效果首先取决于 visual feature,图片中表示的模式和一般的向量模式还是有很大差别的。visual feature的好坏,决定了你所用的向量到底能不能代表这个图像中的模式和这个模式与其他模式的正确关系,如果能,那再谈降维识别的事情。 结构能保持,效果就好;不能保持,就很难说。 2)现在流形学习中的极大多数方法不收敛。正因为这样,在原始样本集中,如果增添少部分点,或是减少少部分点,或是扰动少部分点,都会对最后的nonlinear embedding产生影响。也就是说,极不稳定。 到现在为止,就 Laplacian Eigenmaps 有收敛性的证明。但是,这个被证明的结果的前提条件是啥,这个很重要。如果是均匀采样,那么基本对实际用处不大,理论上有引导作用。 3)采样的问题,包括采样密度和采样方式,都对最后结果有显著影响。而实际数据都是非常复杂的。 4)最后降到多少维的问题。这个对于流行学习来说,也是一个正在争论探讨的问题。 5)多流形的问题。现在的流形学习算法能处理的流形情况非常的弱,前提建设的条件非常的强,比如单坐标系统覆盖,与欧式空间的开子集等距等等。对于具有不同维数的多流形混合的问题,还没有人能解。而 这恰恰是模式识别中一个合理的情况!(具有不同维数的多流形混合的问题) 而4)5)后两者是紧紧联系在一起。 这几点也是流形学习能发挥其威力必须克服的问题。实际的情况并不是像一些人说的“流形学习已经做烂了”,问题在于 1)没有找到真正的问题在哪, 2)知道问题在哪儿,解决不了。 这就是流形学习目前的状况,如果你能用恰当的理论,而不是技巧和实验,解决了2)、5)其中一个问题,你就会是流形学习进入下一个黄金时期的功臣。 而现在的情况是,引导和开创流形学习进入第一个黄金时期和为这个黄金时期推波助澜的那第一拨人,大都不再为此而努力了。现在就M. Belkin还在第一线为2)问题而奋斗。 另外一个可喜的局面是,那些专职搞数值和几何的数学人开始涉足此领域,这必将带动流形学习这个方向深入发展,这也是这个方向发展的一个必然。 现在流形学习就处在这个懵懂的时期,就等着打开下一个局面的人出现,这需要机遇或者天才。但是从历史的角度来看,可以肯定的是,这样的人必定出现。流形学习很有可能会经历神经网络类似的发展历程,但是比神经网络更新的要快的多。 细数历史,可以看到机会。如果你对此有兴趣,什么时候加入都不晚。 局部线性嵌入(LLE) 等距映射(Isomap) 拉普拉斯特征映射(Laplacian Eigenmap) 局部线性嵌入(LLE) 前提假设 :采样数据所在的低维流形在局部是线性的,即每个采样点可以用它的近邻点线性表示。 求解方法 :特征值分解。 LLE算法 : 计算每一个点Xi的近邻点,一般采用K近邻或者ξ领域。 计算权值Wij,使得把Xi用它的K个近邻点线性表示的误差最小,即通过最小化||Xi-WijXj||来求出Wij. 保持权值Wij不变,求Xi在低维空间的象Yi,使得低维重构误差最小。 多维尺度变换(MDS) MDS是一种非监督的维数约简方法。 MDS的基本思想:约简后低维空间中任意两点间的距离应该与它们在原高维空间中的距离相同。 MDS的求解:通过适当定义准则函数来体现在低维空间中对高维距离的重建误差,对准则函数用梯度下降法求解,对于某些特殊的距离可以推导出解析法。 等距映射(Isomap) 基本思想 :建立在多维尺度变换(MDS)的基础上,力求保持数据点的内在几何性质,即保持两点间的测地距离。 前提假设 : 高维数据所在的低维流形与欧氏空间的一个子集是整体等距的。 与数据所在的流形等距的欧氏空间的子集是一个凸集。 核心 : 估计两点间的测地距离: 离得很近的点间的测地距离用欧氏距离代替。 离得较远的点间的测地距离用最短路径来逼近。 拉普拉斯特征映射(Laplacian Eigenmap) 基本思想 :在高维空间中离得很近的点投影到低维空间中的象也应该离得很近。 求解方法 :求解图拉普拉斯算子的广义特征值问题。
个人分类: 科研笔记|40395 次阅读|5 个评论
一个无线通信类投稿的期刊list
热度 1 qianli8848 2012-6-15 08:20
转载一个,但是有些期刊的影响因子不是很对,要投的时候还是再到期刊主页上面看一看吧~ 期刊缩写 期刊全名 近年影响因子 P IEEE Proceedings Of The IEEE 3.686 IEEE WIREL COMMUN IEEE Wireless Communications 2.577 IEEE T MOBILE COMPUT IEEE Transactions On Mobile Computing 2.55 IEEE NETWORK IEEE Network 2.211 IEEE PERVAS COMPUT IEEE Pervasive Computing 2.062 IEEE INTERNET COMPUT IEEE Internet Computing 1.935 IEEE J SEL AREA COMM IEEE Journal On Selected Areas In Communications 1.816 IEEE J SEL AREA COMM IEEE Journal On Selected Areas In Communications 1.816 IEEE ACM T NETWORK IEEE-ACM Transactions On Networking 1.789 IEEE COMMUN MAG IEEE Communications Magazine 1.678 IEEE T SIGNAL PROCES IEEE Transactions On Signal Processing 1.57 COMMUN ACM Communications Of The ACM 1.509 IEEE T PARALL DISTR IEEE Transactions On Parallel And Distributed Systems1.246 IEEE T COMMUN IEEE Transactions On Communications 1.208 IEEE T WIREL COMMUN IEEE TRANSACTIONS ON Wireless Communications 1.184 IEEE T VEH TECHNOL IEEE TRANSACTIONS ON Vehicular Technology 1.071 J NETW COMPUT APPL Journal Of Network And Computer Applications 1.071 WIREL NETW Wireless Networks 0.812 IEEE COMMUN LETT IEEE Communications Letter 0.684 SIGNAL PROCESS (EURASIP) European Association For Signal Processing 0.669 MOBILE NETW APPL Mobile Networks Applications 0.659 COMPUT NETW Computer Networks 0.631 COMPUT COMMUN REV Computer Communication Review 0.578 WIREL COMMUN MOB COM Wireless Communications Mobile Computing 0.511 NETWORKS Networks 0.485 EURASIP J APPL SIG P EURASIP Journal On Advances In Signal Processing 0.463 SCI CHINA F INFOSCIENCES 《中国科学f辑》(英文版) 0.454 COMPUT COMMUN Computer Communications 0.444 EUR T TELECOMMUN European Transactions On Telecommunications 0.434 J PARALLEL DISTR COM Journal Of Parallel And Distributed Computing 0.43 INT J DISTRIB SENS N International Journal Of Distributed Sensor Networks 0.333 J COMPUT SCI TECHNOL 《计算机科学与技术》(英文版) 0.293 IEICE T COMMUN IEICE Transactions On Communications 0.29 WIRELESS PERS COMMUN Wireless Personal Communications 0.247 J COMMUN NETW-S KOR Journal Of Communications And Networks 0.233 IET Communications IET Communications 0.199 CHINESE J ELECTRON 《电子学报》(英文版) 0.185 IET Engineering Technology IET Engineering Technology 0.126
个人分类: 科研笔记|14965 次阅读|4 个评论
1987-2011 ICCV Best Papers
qianli8848 2012-6-14 08:29
13th ICCV, 2011, Barcelona, Spain Marr Prize Paper: Relative Attributes ( PDF , project ) Devi Parikh , Kristen Grauman Best Student Paper: Close the Loop: Joint Blind Image Restoration and Recognition with Sparse Representation Prior ( PDF ) Haichao Zhang, Jianchao Yang , Yanning Zhang, Thomas Huang 12th ICCV, 2009, Kyoto, Japan Marr Prize Paper: Chaitanya Desai, Deva Ramanan and Charless Fowlkes, Discriminative Models for Multi-class Object Layout Marr Prize Honorable Mention: Ahmed Kirmani, Tyler Hutchison, James Davis and Ramesh Raskar, Looking Around the Corner Using Transient Imaging 11th ICCV, 2007, Rio de Janeiro, Brazil Marr Prize Paper: Bradley Davis, P. Thomas Fletcher, Elizabeth Bullitt, Sarang Joshi, Population Shape Regression From Random Design Data Marr Prize Honorable Mention: Ying Nian Wu, Zhangzhang Si, Chuck Fleming, Song-Chun Zhu, Deformable Template As Active Basis Abhijeet Ghosh, Shruthi Achutha, Wolfgang Heidrich, Matthew O’Toole, BRDF Acquisition with Basis Illumination Manmohan Chandraker, Sameer Agarwal, David Kriegman, Serge Belongie, Globally Optimal Affine and Metric Upgrades in Stratified Autocalibration 10th ICCV, 2005, Beijing, China Marr Prize Papers Fredrik Kahl, Didier Henrion, Globally Optimal Estimates for Geometric Reconstruction Problems Marr Prize Honorable Mention Papers Kiriakos N. Kutulakos, Eron Steger, A Theory of Refractive and Specular Shape by Light-Path Triangulation Oren Boiman, Michal Irani, Detecting Irregularities in Images and in Video Stefan Roth, Michael J. Black, On the Spatial Statistics of Optical Flow 9th ICCV, 2003, Nice, France Marr Prize Papers Andrew Fitzgibbon, Yonatan Wexler, and Andrew Zisserman, Image-based Rendering using Image-based Priors Zhuowen Tu, Xiangrong Chen, Alan L. Yuille, and Song-Chun Zhu, Image Parsing: Unifying Segmentation, Detection and Recognition Paul Viola, Michael J. Jones, and Daniel Snow, Detecting Pedestrians using Patterns of Motion and Appearance 8th ICCV, 2001, Vancouver, Canada Marr Prize Papers Kentaro Toyama and Andrew Blake, Probabilistic Tracking in a Metric Space Steven Seitz, The Space of All Stereo Images Marr Prize Honorable Mention Papers Yaron Caspi and Michal Irani, Alignment of Non-Overlapping Sequences Lior Wolf and Amnon Shashua, On Projection Matrices and their Applications in Computer Vision 7th ICCV, 1999, Kerkyra, Greece Marr Prize Papers Kiriakos Kutulakos and Steven Seitz, A Theory of Shape by Space Carving Yi Ma, Stefano Soatto, Jana Kosecka, and Shankar Sastry, Euclidean Reconstruction and Reprojection up to Subgroups Marr Prize Honorable Mention Papers Michael Black and David Fleet, Probabilistic Detection and Tracking of Motion Discontinuities Ying Nian Wu, Song-Chun Zhu, Xiuwen Liu, Equivalence of Julesz and Gibbs texture ensembles 6th ICCV, 1998, Bombay, India Marr Prize Papers Marc Pollefeys, Reinhard Koch, and Luc Van Gool, Self-Calibration and Metric Reconstruction in spite of Varying and Unknown Internal Camera Parameters Phil Torr, Andrew Fitzgibbon, and Andrew Zisserman, Maintaining multiple motion model hypotheses over many views to recover matching and structure Marr Prize Honorable Mention Paper Richard Szeliski and Polina Golland, Stereo Matching with Transparency and Matting 5th ICCV, 1995, Cambridge, U.S.A. Marr Prize Papers Michael Oren and Shree Nayar, A Theory of Specular Surface Geometry Toshikazu Wada, Hiroyuki Ukida, and Takashi Matsuyama, Shape from Shading with Interreflections under a Proximal Light Source: Distortion-Free Copying of an Unfolded Book Marr Prize Honorable Mention Papers Paul Viola and William Wells III, Alignment by Maximization of Mutual Information Anders Heyden, Reconstruction from Image Sequences by Means of Relative Depths Yalin Xiong and Steven Shafer, Hypergeometric Filters for Optical Flow and Affine Matching 4th ICCV, 1993, Berlin, Germany Marr Prize Paper Charles A. Rothwell, David A. Forsyth, Andrew Zisserman, and Joseph L. Mundy, Extracting Projective Structure from Single Perspective Views of 3D Point Sets 3rd ICCV, 1990, Osaka, Japan Marr Prize Paper Shree Nayar, Katsushi Ikeuchi, and Takeo Kanade, Shape from Interreflections 2nd ICCV, 1988, Tampa, U.S.A. Marr Prize Paper Brian Funt and Jian Ho, Color from Black and White Marr Prize Honorable Mention Papers David Lowe, Organization of Smooth Image Curves at Multiple Scales Vishvjit Nalwa, Representing Oriented Piecewise C2 Surfaces Alan Yuille and Norberto Grzywacz, The Motion Coherence Theory 1st ICCV, 1987, London, United Kingdom Marr Prize Paper David Heeger, Optical Flow using Spatiotemporal Filters Marr Prize Honorable Mention Papers John Tsotsos, A `Complexity Level’ Analysis of Immediate Vision Michael Kass, Andrew Witkin, and Demetri Terzopoulos, Snakes: Active Contour Models Yiannis Aloimonos and Issac Weiss, Active Vision VIA
个人分类: 科研笔记|6642 次阅读|0 个评论
[转载]计算机视觉研究群体及专家主页汇总
qianli8848 2012-6-13 09:16
做机器视觉和图像处理方面的研究工作,最重要的两个问题:其一是要把握住国际上最前沿的内容;其二是所作工作要具备很高的实用背景。解决第一个问题的办法就是找出这个方向公认最高成就的几个超级专家(看看他们都在作什么)和最权威的出版物(阅读上面最新的文献),解决第二个问题的办法是你最好能够找到一个实际应用的项目,边做边写文章。 做好这几点的途径之一就是利用网络资源,利用权威网站和专家们的个人主页。 依照下面目录整理: 研究群体(国际国内) 专家主页 前沿国际国内期刊与会议 搜索资源 GPL软件资源 一、研究群体 用来搜索国际知名计算机视觉研究组(CV Groups): 国际计算机视觉研究组清单 http://peipa.essex.ac.uk/info/groups.html 美国计算机视觉研究组清单 http://peipa.essex.ac.uk/info/groups.html#USA http://www-2.cs.cmu.edu/~cil/vision.html 或 http://www.cs.cmu.edu/~cil/vision.html 这是卡奈基梅隆大学的计算机视觉研究组的主页,上面提供很全的资料,从发表文章的下载到演示程序、测试图像、常用链接、相关软硬件,甚至还有一个搜索引擎。著名的有人物Tomasi, Kanade等。 卡内基梅隆大学双目实验室 http://vision.middlebury.edu/stereo/ 卡内基梅隆研究组 http://www.cs.cmu.edu/~cil/v-groups.html 还有几个实验室: Calibrated Imaging Laboratory 图像 Digital Mapping Laboratory 映射 Interactive Systems Laboratory 互动 Vision and Autonomous Systems Center视觉自适应 http://www.via.cornell.edu/ 康奈尔大学的计算机视觉和图像分析研究组,好像是电子和计算机工程系的。侧重医学方面的研究,但是在上面有相当不错资源,关键是它正在建设中,能够跟踪一些信息。 Cornell University——Robotics and Vision group http://www-cs-students.stanford.edu/ 斯坦福大学计算机系主页 1. http://white.stanford.edu/ 2. http://vision.stanford.edu/ 3. http://ai.stanford.edu/ 美国斯坦福大学人工智能机器人实验室 The Stanford AI Lab (SAIL) is the intellectual home for researchers in the Stanford Computer Science Department whose primary research focus is Artificial Intelligence. The lab is located in the Gates... Vision and Imaging Science and Technology http://www.fmrib.ox.ac.uk/analysis/ 主要研究:Brain Extraction Tool, Nonlinear noise reduction, Linear Image Registration, Automated Segmentation, Structural brain change analysis, motion correction, etc. http://www.cse.msu.edu/prip/ —密歇根州立大学计算机和电子工程系的模式识别--图像处理研究组,它的FTP上有许多的文章(NEW)。 美国密歇根州大学认知模型和图像处理实验室 The Pattern Recognition and Image Processing (PRIP) Lab faculty and students investigate the use of machines to recognize patterns or objects. Methods are developed to sense objects, to discover which... http://www.cse.msu.edu/rgroups/prip/ http://pandora.inf.uni-jena.de/p/e/index.html 德国的一个数字图像处理研究小组,在其上面能找到一些不错的链接资源。 柏林大学 http://www.cv.tu-berlin.de/ 德国波恩大学视觉和认识模型小组 Computer Vision Group located within the Division III of the Computer Science Department in the University of Bonn in Germany. This server offers information on topics concerning our computer vision http://www-dbv.informatik.uni-bonn.de/ http://www-staff.it.uts.edu.au/~sean/CVCC.dir/home.html CVIP(used to be CVCC for Computer Vision and Cluster Computing) is a research group focusing on cluster-based computer vision within the Spiral Architecture. http://cfia.gmu.edu/ The mission of the Center for Image Analysis is to foster multi-disciplinary research in image, multimedia and related technologies by establishing links between academic institutes, industry and government agencies, and to transfer key technologies to help industry build next generation commercial and military imaging and multimedia systems. 英国的Bristol大学的Digital Media Group在高级图形图像方面不错。主要就是涉及到场景中光线计算的问题,比如用全局光照或是各种局部光照对高动态图的处理,还有近似真实的模拟现实环境 (照片级别的),还有用几张照片来建立3D模型(人头之类的)。另外也有对古代建筑模型复原。 http://www.cs.bristol.ac.uk/Research/Digitalmedia/ 而且根据Times全英计算机排名在第3, 也算比较顶尖的研究了 http://www.cmis.csiro.au/IAP/zimage.htm 这是一个侧重图像分析的站点,一般。但是提供一个Image Analysis环境---ZIMAGE and SZIMAGE。 麻省理工视觉实验室MIT http://groups.csail.mit.edu/vision/welcome/ AI Laboratory Computer Vision group Center for Biological and Computational Learning Media Laboratory, Vision and Modeling Group Perceptual Science group UC Berkeley http://0-vision.berkeley.edu.ilstest.lib.neu.edu/vsp/index.html http://www.cs.berkeley.edu.ilste ... n/vision_group.html 加州大学伯克利分校视觉实验室David A. Forsyth: http://www.cs.berkeley.edu/~daf/ UCLA(加州大学洛杉矶分校) http://vision.ucla.edu/ 视觉实验室 英国牛津的A.Zisserman: http://www.robots.ox.ac.uk/~az/ 机器人实验室 美国南加州大学智能机器人和智能系统研究所University of Southern California, Los Angeles IRIS is an interdepartmental unit of USC's School of Engineering with ties to USC's Information Sciences Institute (ISI). Members include faculty, graduate students, and research staff associated with... http://iris.usc.edu/ Computer Vision 实验室 美国南加州大学计算机视觉实验室介绍: Computer Vision Laboratory at the University of Southern California is one of the major centers of computer vision research for thirty years. they conduct research in a number of basic and applied are... http://iris.usc.edu/USC-Computer-Vision.html 英国约克大学高级计算机结构神经网络小组 The Advanced Computer Architecture Group has had a thriving research programme in neural networks for over 10 years. The 15 researchers, led by Jim Austin, focus their work in the theory and applicati... http://www.cs.york.ac.uk/arch/neural/ 瑞士戴尔莫尔感知人工智能研究所 IDIAP is a research institute established in Martigny in the Swiss Alps since 1991. Active in the areas of multimodal interaction and multimedia information management, the institute is also the leade... http://www.idiap.ch/ 英国萨里大学视觉,语言和信号处理中心 The Centre for Vision, Speech and Signal Processing (CVSSP) is more than 60 members strong, comprising 12 academic staff, 18 research fellows and more than 44 research students. The activities of the ... http://www.ee.surrey.ac.uk/Research/VSSP/ 美国阿默斯特马萨诸塞州立大学计算机视觉实验室 The Computer Vision Laboratory was established in the Computer Science Department at the University of Massachusetts in 1974 with the goal of investigating the scientific principles underlying the con... http://vis-www.cs.umass.edu University of Massachusetts——Computer Vision Laboratory for Perceptual Robotics 美国芝加哥伊利诺伊斯大学贝克曼研究中心智能机器人和计算机视觉实验室 Includes the following groups: Professor Seth Hutchinson's Research Group Professor David Kriegman's Research Group Professor Jean Ponce's Research Group Professor Narendra Ahuja's Research Gro... http://www-cvr.ai.uiuc.edu/ Computer Vision and Robotics Laboratory Vision Interfaces and Systems Laboratory (VISLab) 英国伯明翰大学计算机科学学校视觉研究小组 The vision group at the School of Computer Science (a RAE 5 rated department) performs research into a wide variety of computer vision and image understanding areas. Much of this work is performed in ... http://www.cs.bham.ac.uk/research/vision/ 微软研究院机器学习与理解研究小组 / 计算机视觉小组 The research group focuses on the development of more advanced and intelligent computer systems through the exploitation of statistical methods in machine learning and computer vision. The site lists ... http://research.microsoft.com/mlp/ http://research.microsoft.com/en-us/groups/vision/ 微软公司的文献: http://research.microsoft.com/research/pubs 微软亚洲研究院: http://research.microsoft.com/asia/ ,值得关注Harry Shum, Jian Sun, Steven Lin, Long Quan(兼职HKUST)etc. 瑞典隆德大学数学系视觉组: http://www.maths.lth.se/matematiklth/personal/andersp/ 感觉国外搞视觉的好多是数学系出身,大约做计算机视觉对数学要求很高吧。 澳大利亚国立大学: http://users.rsise.anu.edu.au/~hartley/ 美国北卡大学: http://www.cs.unc.edu/~marc/ 法国INRIA: http://www-sop.inria.fr/odyssee/team/ 由Olivier.Faugeras领衔的牛人众多。 比利时鲁汶大学的L.Van Gool: www.esat.kuleuven.ac.be/psi/visics/ 据说在这个只有中国一个小镇大小的地方的鲁汶大学在欧洲排行top10,名列世界top100,还出了几个诺贝尔奖,视觉研究也很强. 美国明德 http://vision.middlebury.edu/stereo/ 以下含有非顶尖美国学校研究组,没有链接(个别的上面已经提到),供参考。 Amerinex Applied Imaging, Inc. Boston University Image and Video Computing Research group University of California at Santa Barbara加州大学芭芭拉分校 Vision Research Lab University of California at San Diego加州大学圣迭戈分校 Computer Vision Robotics Research Laboratory Visual Computing laboratory University of California at Irvine加州大学欧文分校,加州南部一城,在圣安娜东南, Computer Vision laboratory University of California, Riverside加州大学河滨分校 Visualization and Intelligent Systems Laboratory (VISLab) University of California at Santa Cruz Perceptual Science Laboratory Caltech (加州理工) Vision group University of Central Florida Computer Vision laboratory University of Florida Center for Computer Vision and Visualization Colorado State University Computer Vision group Columbia University Automated Vision Environment (CAVE) Robotics group University of Georgia, Athens Visual and Parallel Computing Laboratory Harvard University(哈佛) Robotics Laboratory University of Illinois at Urbana-Champaign Robotics and Computer Vision University of Iowa Division of Physiologic Imaging Jet Propulsion Laboratory Machine Vision and Tracking Sensors group Khoral Research, Inc Lawrence Berkeley Laboratories Imaging and Collaborative Computing Group Imaging and Distributed Computing Lehigh University Image Processing and Pattern Analysis Lab Vision And Software Technology Laboratory University of Louisville Computer Vision and Image Processing Lab University of Maryland Computer Vision Laboratory University of Miami Underwater Vision and Imaging Laboratory University of Michigan密歇根 AI Laboratory Michigan State University 密歇根州立 Pattern Recognition and Image Processing laboratory Environmental Research Institute of Michigan (ERIM) 密歇根大学有汽车车身检测研究 University of Missouri-Columbia Computational Intelligence Research Laboratory NEC Computer Vision and Image Processing University of Nevada Computer Vision Laboratory Notre-Dame University Vision-Based Robotics using Estimation Ohio State University Signal Analysis and Machine Perception Laboratory University of Pennsylvania GRASP laboratory Medical Image Processing group Vision Analysis and Simulation Technologies (VAST) Laboratory Penn State University 宾夕法尼亚大学 Computer Vision Precision Digital Images Purdue University普渡大学 Robot Vision laboratory Video and Image Processing Laboratory (VIPER) Rensselaer Polytechnic Institute (RPI) Computer Science Vision University of Rochester Center for Electronic Imaging Systems Vision and Robotics laboratory Rutgers University (The State University of New Jersey) Image Understanding Lab University of Southern California Computer Vision University of South Florida Image Analysis Research group Stanford Research Institute International (SRI) RADIUS -- Research and Development for Image Understanding Systems The Perception program at SRI's AI Center SUNY at Stony Brook Computer Vision Lab University of Tennessee Imaging, Robotics and Intelligent Systems laboratory University of Texas, Austin Laboratory for Vision Systems University of Utah Center for Scientific Computing and Imaging Robotics and Computer Vision University of Virginia Computer Vision Research (CS) University of Washington Image Computing Systems Laboratory Information Processing Laboratory CVIA Laboratory University of West Florida Image Analysis/Robotics Research Laboratory University of Wisconsin Computer Vision group Vanderbilt University Center for Intelligent Systems Washington State University Imaging Research laboratory Wright-Patterson Model-Based Vision laboratory Wright State University Intelligent Systems Laboratory University of Wyoming Wyoming Image and Signal Processing Research (WISPR) Yale University Computational Vision Group http://www.cs.yale.edu/ School of Medicine, Image Processing and Analysis group 国内: 中科院模式识别国家重点实验室 http://www.nlpr.ia.ac.cn/English/rv/mainpage.html 虹膜识别、掌纹识别、人脸识别、 莲花山 http://www.stat.ucla.edu/~sczhu/Lotus/ 天津大学精密测试技术及仪器国家重点实验室 研究方向包括:激光及光电测试技术、传感及测量信息技术、微纳测试与制造技术、制造质量控制技术。该实验室是国内精密测试领域惟一的国家重点实验室。 “智能微系统及其集成应用技术”、“微结构光学测试技术”、“油气储运安全检测技术”、“先进制造中的视觉测量及其关键技术”、“正交偏振激光器原理、特性及其在精密计量中的应用研究”等5项代表性成果(07.3)。 中科院长春光机所 http://www.ciomp.ac.cn/ny/keyan.asp 中科院沈阳自动化所 http://www.sia.ac.cn/index.php 中科院西安光机所 http://www.opt.ac.cn/yanjiushi/gpcxjs1.htm 北京大学智能科学系 http://www.cis.pku.edu.cn/vision/vision.htm 三维视觉计算与机器人,生物特征识别与图像识别 二、专家网页 http://www.ai.mit.edu/people/wtf/ 这位可是MIT人工智能实验室的BILL FREEMAN。专长是:理解--贝叶斯模型。 http://www.merl.com/people/brand/ MERL(Mitsubishi Electric Research Laboratory)中的擅长“Style Machine”。 http://research.microsoft.com/~ablake/ CV界极有声望的A.Blake 1977年毕业于剑桥大学三一学院并或数学与电子科学学士学位。之后在MIT,Edinburgh,Oxford先后组建过研究小组并成为Oxford的教授,直到1999年进入微软剑桥研究中心。主要工作领域是计算机视觉。 http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/har/Web/home.html 这位专家好像正在学习汉语,主页并且搜集了诸如“两只老虎(Two Tigers)”的歌曲。 他的主页上面还有几个专家:Shumeet Baluja, Takeo Kanade。他们的Face Detection作的绝对是世界一流。毕业于卡奈基梅隆大学的计算机科学系,兴趣是计算机视觉。 三、前沿国际国内期刊与会议 这里的期刊大部分都可以通过上面的专家们的主页间接找到 1.国际会议 2.国际期刊 3.国内期刊 4.神经网络 5.CV 6.数字图象 7.教育资源,大学 8.常见问题 1. 国际会议 现在,国际上计算机视觉方面的三大国际会议是ICCV, CVPR和ECCV,统称之为ICE。 ICCV的全称是International Comference on Computer Vision。ICCV两年一次,与ECCV正好错开,是公认的三个会议中级别最高的。 ECCV的全称是Europeon Conference on Computer Vision,是一个欧洲的会议。 CVPR的全称是Internaltional Conference on Computer Vision and Pattern Recogintion国际计算机视觉与模式识别会议。这是一个一年一次的会议,举办地在美国。 ICIP— BMVC— MVA— 国际模式识别会议(ICPR ): 亚洲计算机视觉会议(ACCV): 2.国际期刊 以计算机视觉为主要内容之一的国际刊物也有很多,如: International Journal of Computer Vision IEEE Trans. On PAMI http://www.computer.org/tpami/index.htm IEEE Transactionson Image Processing http://www.ieee.org/organizations/pubs/transactions/tip.htm Pattern Recognition http://www.elsevier.com/locate/issn/00313203 Pattern Recognition Letters http://www.elsevier.com/locate/issn/01678655 IEEE Trans. on Robotics and Automation, IEEE TPAMI IEEE TIP CVGIP Computer Vision. Graphics and Image Processing, Visual Image Computing, IJPRAI(Internatiorial Journat of Pattern Recognition and Artificial Intelligence) 众所周知, computer vision(cv) 存在ICCV/CVPR/ECCV三个顶级会议,它们档次差不多,都应该在一流会议行列, 没有必要给个高下。有些us的人认为ICCV/CVPR略好于ECCV,而欧洲人大都认为ICCV/ECCV略好于CVPR,某些英国的人甚至认为BMVC好于CVPR。简言之, 三个会议差不多, 各有侧重和偏好。 笔者就个人经验浅谈三会异同, 以供大家参考和讨论。 三者乃cv领域的旗舰和风向标,其oral paper (包括best paper) 代表当年度cv的最高水准, 在此引用Harry Shum的一句话, 想知道某个领域在做些什么,找最近几年此领域的proceeding看看就知道了。 ICCV/CVPR由IEEE Computer Society牵头组织, ECCV好像没有专门负责的组织。 CVPR每年(除2002年)都在美国开, ECCV每两年开一次,仅限欧洲, ICCV也是每两年一次,各洲轮值。 基本可以保证每年有两个会议开, 这样研究者就有两次跻身牛会的机会。 就录取率而言, 三会都有波动。 如ICCV2001录取率30%,且出现两个人(华人)各有三篇第一作者的paper的情况, 这在顶级牛会是不常见的 (灌水嫌疑)。 但是, ICCV2003, 2005两次录取率都很低, 大约20%左右。 ECCV也是类似规律, 在2004年以前都是30%, 2006年降低到20%左右。 CVPR的录取率近年来一直偏高,从2004年开始一直都在 。最近一次CVPR2006是28.1%, CVPR2007还不知道统计数据。笔者猜测为了维持录取paper的绝对数量, 当submission少的时候录取率偏高, 反之偏低,近几年三大会议的投稿数量全部超过1000, 相对2000年前, 三会录取率均大幅度降低,最大幅度50%-20%。 对录取率走势感兴趣的朋友, 可参考 http://vrlab.epfl.ch/~ulicny/statistics/(CVPR2004 的数据是错的), http://www.adaptivebox.net/research/bookmark/CICON_stat.html. 显然, 投入cv的人越来越多,这个领域也是越来越大, 这点颇不似machine learning一直奉行愚蠢的小圈子主义。另外一点值得注意, ICCV/ECCV只收vision相关的topic,而cvpr会收少量的pattern recognition paper, 如finger print等,但是不收和image/video完全不占边的pr paper,如speech recognition等。我一个朋友曾经review过一篇投往CVPR的speech的paper, 三个reviewer一致拒绝,其中一个reviewer搞笑的指出, 你这篇paper应该是投ICASSP被据而转投CVPR的。 就topic而言, CVPR涵盖最广。 还有一个没有验证过的原因导致CVPR录取率高: 很多us的researcher不愿意或没有足够的经费到us以外的地方开会, 故CVPR会优先接收很多来自us的paper (让大家都happy)。 以上对三会的分析对我们投paper是很有指导作用的。 目前的research我想绝大部分还是纸上谈兵, 必经 read paper - write paper - publish paper - publish paper on top conferences and journals流程。故了解投paper的一些基本技巧, 掌握领域的走向和热点, 是非常必要的。 避免做无用功,选择切合的topic,改善presentation, 注意格式 (遵守规定的模板), 我想这是很多新手需要注意的问题。如ICCV2007明文规定不写summary page直接reject, 但是仍然有人忽视, 这是相当不值得的。 3.国内期刊 自动化学报、计算机学报、软件学报、电子学报,中国图象图形学报,模式识别与人工智能,光电子激光,精密光学工程等。 4.神经网络 神经网络-Neural Networks Tutorial Review http://hem.hj.se/~de96klda/NeuralNetworks.htm ftp://ftp.sas.com/pub/neural/FAQ.html Image Compression with Neural Networks http://www.comp.glam.ac.uk/digimaging/neural.htm Backpropagator's Review http://www.dontveter.com/bpr/bpr.html Bibliographies on Neural Networks http://liinwww.ira.uka.de/bibliography/Neural/ Intelligent Motion Control with an Artificial Cerebellum http://www.q12.org/phd.html Kernel Machines http://www.kernel-machines.org/ Some Neural Networks Research Organizations http://www.ieee.org/nnc/ http://www.inns.org/ Neural Network Modeling in Vision Research http://www.rybak-et-al.net/nisms.html Neural Networks and Machine Learning http://learning.cs.toronto.edu/ Neural Application Software http://attrasoft.com Neural Network Toolbox for MATLAB http://www.mathworks.com/products/neuralnet/ Netlab Software http://www.ncrg.aston.ac.uk/netlab/ Kunama Systems Limited http://www.kunama.co.uk/ 5.Computer Vision(计算机视觉) Annotated Computer Vision Bibliography http://iris.usc.edu/Vision-Notes/bibliography/contents.html http://iris.usc.edu/Vision-Notes/rosenfeld/contents.html Lawrence Berkeley National Lab Computer Vision and Robotics Applications http://www-itg.lbl.gov/ITG.hm.pg.docs/VISIon/vision.html CVonline by University of Edinburgh The Evolving, Distributed, Non-Proprietary, On-Line Compendium of Computer Vision, www.dai.ed.ac.uk/CVonline Computer Vision Handbook, www.cs.hmc.edu/~fleck/computer-vision-handbook Vision Systems Courseware www.cs.cf.ac.uk/Dave/Vision_lecture/Vision_lecture_caller.html Research Activities in Computer Vision http://www-syntim.inria.fr/syntim/analyse/index-eng.html Vision Systems Acronyms www.vision-systems-design.com/vsd/archive/acronyms.html Dictionary of Terms in Human and Animal Vision http://cns-web.bu.edu/pub/laliden/WWW/Visionary/Visionary.html Metrology based on Computer Vision www.cranfield.ac.uk/sme/amac/research/metrology/metrology.html 6.Digital Photography 数字图像 Digital Photography, Scanning, and Image Processing www.dbusch.com/scanners/scanners.htm l 7.Educational Resources, Universities 教育资源,大学 Center for Image Processing in Education www.cipe.com Library of Congress Call Numbers Related to Imaging Science by Rochester Institute of Technology http://wally2.rit.edu/pubs/guides/imagingcall.html Mathematical Experiences through Image Processing, University of Washington www.cs.washington.edu/research/metip/metip.html Vismod Tech Reports and Publications, MIT http://vismod.www.media.mit.edu/cgi-bin/tr_pagemaker Vision Lab PhD dissertation list, University of Antwerp http://wcc.ruca.ua.ac.be/~visielab/theses.html INRIA (France) Research Projects: Human-Computer Interaction, Image Processing, Data Management, Knowledge Systems www.inria.fr/Themes/Theme3-eng.html Image Processing Resources http://eleceng.ukc.ac.uk/~rls3/Contents.htm Publications of Carsten Steger http://www9.informatik.tu-muench ... r/publications.html 8.FAQs(常见问题) comp.dsp FAQ www.bdti.com/faq/dsp_faq.htm Robotics FAQ www.frc.ri.cmu.edu/robotics-faq Where's the sci.image.processing FAQ? www.cc.iastate.edu/olc_answers/p ... processing.faq.html comp.graphics.algorithms FAQ, Section 3, 2D Image/Pixel Computations www.exaflop.org/docs/cgafaq Astronomical Image Processing System FAQ www.cv.nrao.edu/aips/aips_faq.html 四、搜索资源 http://sal.kachinatech.com/ http://cheminfo.pku.edu.cn/mirrors/SAL/index.shtml 北京大学 Google输入:computer vision 或computer vision groups可以获得很多结果 网络资源: CVonline http://homepages.inf.ed.ac.uk/rbf/CVonline/ 视觉研究组列表 Computer vision test Image http://www.cs.cmu.edu/~cil/v-images.html 卡内基梅隆标准图片库 视觉论文搜索:Paper search http://www.researchindex.com 五、图像处理GPL库(代码库图像库等) http://www.ph.tn.tudelft.nl/~klamer/cppima.html Cppima 是一个图像处理的C++函数库。这里有一个较全面介绍它的库函数的文档,当然你也可以下载压缩的GZIP包,里面包含TexInfo格式的文档。 http://iraf.noao.edu/ Welcome to the IRAF Homepage! IRAF is the Image Reduction and Analysis Facility, a general purpose software system for the reduction and analysis of astronomical data http://entropy.brni-jhu.org/tnimage.html 一个非常不错的Unix系统的图像处理工具,看看它的截图。你可以在此基础上构建自己的专用图像处理工具包。 http://sourceforge.net/projects/ 这是GPL软件集散地,可以搜索IP库。 国内的CSDN http://www.csdn.net/
个人分类: 科研笔记|5397 次阅读|0 个评论
Face Recognition Homepage Dataset
qianli8848 2012-6-12 09:28
人脸数据库的一个汇总: Here are some face data sets often used by researchers: The Color FERET Database, USA The FERET program set out to establish a large database of facial images that was gathered independently from the algorithm developers. Dr. Harry Wechsler at George Mason University was selected to direct the collection of this database. The database collection was a collaborative effort between Dr. Wechsler and Dr. Phillips. The images were collected in a semi-controlled environment. To maintain a degree of consistency throughout the database, the same physical setup was used in each photography session. Because the equipment had to be reassembled for each session, there was some minor variation in images collected on different dates. The FERET database was collected in 15 sessions between August 1993 and July 1996. The database contains 1564 sets of images for a total of 14,126 images that includes 1199 individuals and 365 duplicate sets of images. A duplicate set is a second set of images of a person already in the database and was usually taken on a different day. For some individuals, over two years had elapsed between their first and last sittings, with some subjects being photographed multiple times. This time lapse was important because it enabled researchers to study, for the first time, changes in a subject's appearance that occur over a year. SCface - Surveillance Cameras Face Database SCface is a database of static images of human faces. Images were taken in uncontrolled indoor environment using five video surveillance cameras of various qualities. Database contains 4160 static images (in visible and infrared spectrum) of 130 subjects. Images from different quality cameras mimic the real-world conditions and enable robust face recognition algorithms testing, emphasizing different law enforcement and surveillance use case scenarios. SCface database is freely available to research community. The paper describing the database is available here . Multi-PIE A close relationship exists between the advancement of face recognition algorithms and the availability of face databases varying factors that affect facial appearance in a controlled manner. The PIE database, collected at Carnegie Mellon University in 2000, has been very influential in advancing research in face recognition across pose and illumination. Despite its success the PIE database has several shortcomings: a limited number of subjects, a single recording session and only few expressions captured. To address these issues researchers at Carnegie Mellon University collected the Multi-PIE database. It contains 337 subjects, captured under 15 view points and 19 illumination conditions in four recording sessions for a total of more than 750,000 images. The paper describing the database is available here . The Yale Face Database Contains 165 grayscale images in GIF format of 15 individuals. There are 11 images per subject, one per different facial expression or configuration: center-light, w/glasses, happy, left-light, w/no glasses, normal, right-light, sad, sleepy, surprised, and wink. The Yale Face Database B Contains 5760 single light source images of 10 subjects each seen under 576 viewing conditions (9 poses x 64 illumination conditions). For every subject in a particular pose, an image with ambient (background) illumination was also captured. PIE Database, CMU A database of 41,368 images of 68 people, each person under 13 different poses, 43 different illumination conditions, and with 4 different expressions. Project - Face In Action (FIA) Face Video Database, AMP, CMU Capturing scenario mimics the real world applications, for example, when a person is going through the airport check-in point. Six cameras capture human faces from three different angles. Three out of the six cameras have smaller focus length, and the other three have larger focus length. Plan to capture 200 subjects in 3 sessions in different time period. For one session, both in-door and out-door scenario will be captured. User-dependent pose and expression variation are expected from the video sequences. ATT "The Database of Faces" (formerly "The ORL Database of Faces") Ten different images of each of 40 distinct subjects. For some subjects, the images were taken at different times, varying the lighting, facial expressions (open / closed eyes, smiling / not smiling) and facial details (glasses / no glasses). All the images were taken against a dark homogeneous background with the subjects in an upright, frontal position (with tolerance for some side movement). Cohn-Kanade AU Coded Facial Expression Database Subjects in the released portion of the Cohn-Kanade AU-Coded Facial Expression Database are 100 university students. They ranged in age from 18 to 30 years. Sixty-five percent were female, 15 percent were African-American, and three percent were Asian or Latino. Subjects were instructed by an experimenter to perform a series of 23 facial displays that included single action units and combinations of action units. Image sequences from neutral to target display were digitized into 640 by 480 or 490 pixel arrays with 8-bit precision for grayscale values. Included with the image files are "sequence" files; these are short text files that describe the order in which images should be read. MIT-CBCL Face Recognition Database The MIT-CBCL face recognition database contains face images of 10 subjects. It provides two training sets: 1. High resolution pictures, including frontal, half-profile and profile view; 2. Synthetic images (324/subject) rendered from 3D head models of the 10 subjects. The head models were generated by fitting a morphable model to the high-resolution training images. The 3D models are not included in the database. The test set consists of 200 images per subject. We varied the illumination, pose (up to about 30 degrees of rotation in depth) and the background. Image Database of Facial Actions and Expressions - Expression Image Database 24 subjects are represented in this database, yielding between about 6 to 18 examples of the 150 different requested actions. Thus, about 7,000 color images are included in the database, and each has a matching gray scale image used in the neural network analysis. Face Recognition Data, University of Essex, UK 395 individuals (male and female), 20 images per individual. Contains images of people of various racial origins, mainly of first year undergraduate students, so the majority of indivuals are between 18-20 years old but some older individuals are also present. Some individuals are wearing glasses and beards. NIST Mugshot Identification Database There are images of 1573 individuals (cases) 1495 male and 78 female. The database contains both front and side (profile) views when available. Separating front views and profiles, there are 131 cases with two or more front views and 1418 with only one front view. Profiles have 89 cases with two or more profiles and 1268 with only one profile. Cases with both fronts and profiles have 89 cases with two or more of both fronts and profiles, 27 with two or more fronts and one profile, and 1217 with only one front and one profile. NLPR Face Database 450 face images. 896 x 592 pixels. JPEG format. 27 or so unique people under with different lighting/expressions/backgrounds. M2VTS Multimodal Face Database (Release 1.00) Database is made up from 37 different faces and provides 5 shots for each person. These shots were taken at one week intervals or when drastic face changes occurred in the meantime. During each shot, people have been asked to count from '0' to '9' in their native language (most of the people are French speaking), rotate the head from 0 to -90 degrees, again to 0, then to +90 and back to 0 degrees. Also, they have been asked to rotate the head once again without glasses if they wear any. The Extended M2VTS Database, University of Surrey, UK Contains four recordings of 295 subjects taken over a period of four months. Each recording contains a speaking head shot and a rotating head shot. Sets of data taken from this database are available including high quality colour images, 32 KHz 16-bit sound files, video sequences and a 3D model. The AR Face Database, Purdue University, USA 4,000 color images corresponding to 126 people's faces (70 men and 56 women). Images feature frontal view faces with different facial expressions, illumination conditions, and occlusions (sun glasses and scarf). The University of Oulu Physics-Based Face Database Contains 125 different faces each in 16 different camera calibration and illumination condition, an additional 16 if the person has glasses. Faces in frontal position captured under Horizon, Incandescent, Fluorescent and Daylight illuminant .Includes 3 spectral reflectance of skin per person measured from both cheeks and forehead. Contains RGB spectral response of camera used and spectral power distribution of illuminants. CAS-PEAL Face Database The CAS-PEAL face database has been constructed under the sponsors of National Hi-Tech Program and ISVISION. The goals to create the PEAL face database include: providing the worldwide researchers of FR community a large-scale Chinese face database for training and evaluating their algorithms; facilitating the development of FR by providing large-scale face images with different sources of variations, especially Pose, Expression, Accessories, and Lighting (PEAL); advancing the state-of-the-art face recognition technologies aiming at practical applications especially for the oriental. Japanese Female Facial Expression (JAFFE) Database The database contains 213 images of 7 facial expressions (6 basic facial expressions + 1 neutral) posed by 10 Japanese female models. Each image has been rated on 6 emotion adjectives by 60 Japanese subjects. BioID Face DB - HumanScan AG, Switzerland The dataset consists of 1521 gray level images with a resolution of 384x286 pixel. Each one shows the frontal view of a face of one out of 23 different test persons. For comparison reasons the set also contains manually set eye postions. Psychological Image Collection at Stirling (PICS) This is a collection of images useful for research in Psychology, such as sets of faces and objects. The images in the database are organised into SETS, with each set often representing a separate experimental study. The Sheffield Face Database (previously: The UMIST Face Database) Consists of 564 images of 20 people. Each covering a range of poses from profile to frontal views. Subjects cover a range of race/sex/appearance. Each subject exists in their own directory labelled 1a, 1b, ... 1t and images are numbered consequetively as they were taken. The files are all in PGM format, approximately 220 x 220 pixels in 256 shades of grey. Face Video Database of the Max Planck Institute for Biological Cybernetics This database contains short video sequences of facial Action Units recorded simultaneously from six different viewpoints, recorded in 2003 at the Max Planck Institute for Biological Cybernetics. The video cameras were arranged at 18 degrees intervals in a semi-circle around the subject at a distance of roughly 1.3m. The cameras recorded 25 frames/sec at 786x576 video resolution, non-interlaced. In order to facilitate the recovery of rigid head motion, the subject wore a headplate with 6 green markers. The website contains a total of 246 video sequences in MPEG1 format. Caltech Faces 450 face images. 896 x 592 pixels. JPEG format. 27 or so unique people under with different lighting/expressions/backgrounds. EQUINOX HID Face Database Human identification from facial features has been studied primarily using imagery from visible video cameras. Thermal imaging sensors are one of the most innovative emerging techonologies in the market. Fueled by ever lowering costs and improved sensitivity and resolution, our sensors provide exciting new oportunities for biometric identification. As part of our involvement in this effort, Equinox is collecting an extensive database of face imagery in the following modalities: coregistered broadband-visible/LWIR (8-12 microns), MWIR (3-5 microns), SWIR (0.9-1.7 microns). This data collection is made available for experimentation and statistical performance evaluations. VALID Database With the aim to facilitate the development of robust audio, face, and multi-modal person recognition systems, the large and realistic multi-modal (audio-visual) VALID database was acquired in a noisy "real world" office scenario with no control on illumination or acoustic noise. The database consists of five recording sessions of 106 subjects over a period of one month. One session is recorded in a studio with controlled lighting and no background noise, the other 4 sessions are recorded in office type scenarios. The database contains uncompressed JPEG Images at resolution of 720x576 pixels. The UCD Colour Face Image Database for Face Detection The database has two parts. Part one contains colour pictures of faces having a high degree of variability in scale, location, orientation, pose, facial expression and lighting conditions, while part two has manually segmented results for each of the images in part one of the database. These images are acquired from a wide variety of sources such as digital cameras, pictures scanned using photo-scanner, other face databases and the World Wide Web. The database is intended for distribution to researchers. Georgia Tech Face Database The database contains images of 50 people and is stored in JPEG format. For each individual, there are 15 color images captured between 06/01/99 and 11/15/99. Most of the images were taken in two different sessions to take into account the variations in illumination conditions, facial expression, and appearance. In addition to this, the faces were captured at different scales and orientations. Indian Face Database The database contains a set of face images taken in February, 2002 in the IIT Kanpur campus. There are eleven different images of each of 40 distinct subjects. For some subjects, some additional photographs are included. All the images were taken against a bright homogeneous background with the subjects in an upright, frontal position. The files are in JPEG format. The size of each image is 640x480 pixels, with 256 grey levels per pixel. The images are organized in two main directories - males and females. In each of these directories, there are directories with name as a serial numbers, each corresponding to a single individual. In each of these directories, there are eleven different images of that subject, which have names of the form abc.jpg, where abc is the image number for that subject. The following orientations of the face are included: looking front, looking left, looking right, looking up, looking up towards left, looking up towards right, looking down. Available emotions are: neutral, smile, laughter, sad/disgust. VidTIMIT Database The VidTIMIT database is comprised of video and corresponding audio recordings of 43 people, reciting short sentences. It can be useful for research on topics such as multi-view face recognition, automatic lip reading and multi-modal speech recognition. The dataset was recorded in 3 sessions, with a space of about a week between each session. There are 10 sentences per person, chosen from the TIMIT corpus. In addition to the sentences, each person performed a head rotation sequence in each session. The sequence consists of the person moving their head to the left, right, back to the center, up, then down and finally return to center. The recording was done in an office environment using a broadcast quality digital video camera. The video of each person is stored as a numbered sequence of JPEG images with a resolution of 512 x 384 pixels. The corresponding audio is stored as a mono, 16 bit, 32 kHz WAV file. The LFWcrop Database LFWcrop is a cropped version of the Labeled Faces in the Wild (LFW) dataset, keeping only the center portion of each image (i.e. the face). In the vast majority of images almost all of the background is omitted. LFWcrop was created due to concern about the misuse of the original LFW dataset, where face matching accuracy can be unrealistically boosted through the use of background parts of images (i.e. exploitation of possible correlations between faces and backgrounds). As the location and size of faces in LFW was determined through the use of an automatic face locator (detector), the cropped faces in LFWcrop exhibit real-life conditions, including mis-alignment, scale variations, in-plane as well as out-of-plane rotations. Labeled Faces in the Wild Labeled Faces in the Wild is a database of face photographs designed for studying the problem of unconstrained face recognition. The database contains more than 13,000 images of faces collected from the web. Each face has been labeled with the name of the person pictured. 1680 of the people pictured have two or more distinct photos in the database. The only constraint on these faces is that they were detected by the Viola-Jones face detector. Please see the database web page and the technical report linked there for more details. 3D_RMA database The 3D_RMA database is a collection of two sessions (Nov 1997 and Jan 1998) consisting of 120 persons. For each session, three shots were recorded with different (but limited) orientations of the head. Details about the population and typical problems affecting the quality are given in the referred link. 3D was captured thanks to a first prototype of a proprietary system based on structured light (analog camera!). The quality was limited but sufficient to show the ability of 3D face recognition. For privacy reasons, the texture images are not made available. In the period 2003-2008, this database has been downloaded by about 100 researchers. A few papers present recognition results with the database (like, of course, papers from the author ). GavabDB: 3D face database, GAVAB research group, Universidad Rey Juan Carlos, Spain GavabDB is a 3D face database. It contains 549 three-dimensional images of facial surfaces. These meshes correspond to 61 different individuals (45 male and 16 female) having 9 images for each person. The total of the individuals are Caucasian and their age is between 18 and 40 years old. Each image is given by a mesh of connected 3D points of the facial surface without texture. The database provides systematic variations with respect to the pose and the facial expression. In particular, the 9 images corresponding to each individual are: 2 frontal views with neutral expression, 2 x-rotated views (ą30o, looking up and looking down respectively) with neutral expression, 2 y-rotated views (ą90o, left and right profiles respectively) with neutral expression and 3 frontal gesture images (laugh, smile and a random gesture chosen by the user, respectively). FRAV2D Database This database is formed by up to 109 subjects (75 men and 34 women), with 32 colour images per person. Each picture has a 320 x 240 pixel resolution, with the face occupying most of the image in an upright position. For one single person, all the photographs were taken on the same day, although the subject was forced to stand up and sit down again in order to change pose and gesture. In all cases, the background is plain and dark blue. The 32 images were classified in six groups according to the pose and lighting conditions: 12 frontal images, 4 15o-turned images, 4 30o-turned images, 4 images with gestures, 4 images with occluded face features and 4 frontal images with a change of illumination. This database is delivered for free exclusively for research purposes. FRAV3D Database This database contains 106 subjects, with approximately one woman every three men. The data were acquired with a Minolta VIVID 700 scanner, which provides texture information (2D image) and a VRML file (3D image). If needed, the corresponding range data (2.5D image) can be computed by means of the VRML file. Therefore, it is a multimodal database (2D, 2.5D y 3D). During all time, a strict acquisition protocol was followed, with controlled lighting conditions. The person sat down on an adjustable stool opposite the scanner and in front of a blue wall. No glasses, hats or scarves were allowed. A total of 16 captures per person were taken in every session, with different poses and lighting conditions, trying to cover all possible variations, including turns in different directions, gestures and lighting changes. In every case only one parameter was modified between two captures. This is one of the main advantages of this database, respect to others. This database is delivered for free exclusively for research purposes. BJUT-3D Chinese Face Database The BJUT-3D is a three dimension face database including 500 Chinese persons. There are 250 females and 250 males in the database. Everyone has a 3D face data with neutral expression and without accessories. Original high-resolution 3D face data is acquired by the CyberWare 3D scanner in given environment, Every 3D face data has been preprocessed, and cut the redundant parts. Now the face database is available for research purpose only. The Multimedia and Intelligent Software Technology Beijing Municipal Key Laboratory in Beijing University of Technology is serving as the technical agent for distribution of the database and reserves the copyright of all the data in the database. The Bosphorus Database The Bosphorus Database is a new 3D face database that includes a rich set of expressions, systematic variation of poses and different types of occlusions. This database is unique from three aspects: (1) The facial expressions are composed of judiciously selected subset of Action Units as well as the six basic emotions, and many actors/actresses are incorporated to obtain more realistic expression data; (2) A rich set of head pose variations are available; (3) Different types of face occlusions are included. Hence, this new database can be a very valuable resource for development and evaluation of algorithms on face recognition under adverse conditions and facial expression analysis as well as for facial expression synthesis. PUT Face Database PUT Face Database consists of almost 10000 hi-res images of 100 people. Images were taken in controlled conditions and the database is supplied with additional data including: rectangles containing face, eyes, nose and mouth, landmarks positions and manually annotated contour models. Database is available for research purposes. The Basel Face Model (BFM) The Basel Face Model (BFM) is a 3D Morphable Face Model constructed from 100 male and 100 female example faces. The BFM consists of a generative 3D shape model covering the face surface from ear to ear and a high quality texture model. The model can be used either directly for 2D and 3D face recognition or to generate training and test images for any imaging condition. Hence, in addition to being a valuable model for face analysis it can also be viewed as a meta-database which allows the creation of accurately labeled synthetic training and testing images. To allow for a fair comparison with other algorithms, we provide both the training data set (the BFM) and the model fitting results for several standard image data sets (CMU-PIE, FERET) obtained with our fitting algorithm. The BFM web page additionally provides a set of registered scans of ten individuals, together with a set of 270 renderings of these individuals with systematic pose and light variations. These scans are not included in the training set of the BFM and form a standardized test set with a ground truth for pose and illumination. Plastic Surgery Face Database The plastic surgery face database is a real world database that contains 1800 pre and post surgery images pertaining to 900 subjects. Different types of facial plastic surgeries have different impact on facial features. To enable the researchers to design and evaluate face recognition algorithms on all types of facial plastic surgeries, the database contains images from a wide variety of cases such as Rhinoplasty (nose surgery), Blepharoplasty (eyelid surgery), brow lift, skin peeling, and Rhytidectomy (face lift). For each individual, there are two frontal face images with proper illumination and neutral expression: the first is taken before surgery and the second is taken after surgery. The database contains 519 image pairs corresponding to local surgeries and 381 cases of global surgery (e.g., skin peeling and face lift). The details of the database and performance evaluation of several well known face recognition algorithms is available in this paper . The Iranian Face Database (IFDB) The Iranian Face Database (IFDB), the first image database in middle-east, contains color facial imagery of a large number of Iranian subjects. IFDB is a large database that can support studies of the age classification systems. It contains over 3,600 color images. IFDB can be used for age classification, facial feature extraction, aging, facial ratio extraction, percent of facial similarity, facial surgery, race detection and other similar researches. The Hong Kong Polytechnic University NIR Face Database The Biometric Research Centre at The Hong Kong Polytechnic University developed a real time NIR face capture device and used it to construct a large-scale NIR face database. The NIR face image acquisition system consists of a camera, an LED light source, a filter, a frame grabber card and a computer. The camera used is a JAI camera, which is sensitive to NIR band. The active light source is in the NIR spectrum between 780nm - 1,100 nm. The peak wavelength is 850 nm. The strength of the total LED lighting is adjusted to ensure a good quality of the NIR face images when the camera face distance is between 80 cm - 120 cm, which is convenient for the users. By using the data acquisition device described above, we collected NIR face images from 335 subjects. During the recording, the subject was first asked to sit in front of the camera, and the normal frontal face images of him/her were collected. Then the subject was asked to make expression and pose changes and the corresponding images were collected. To collect face images with scale variations, we asked the subjects to move near to or away from the camera in a certain range. At last, to collect face images with time variations, samples from 15 subjects were collected at two different times with an interval of more than two months. In each recording, we collected about 100 images from each subject, and in total about 34,000 images were collected in the PolyU-NIRFD database. The Hong Kong Polytechnic University Hyperspectral Face Database (PolyU-HSFD) The Biometric Research Centre at The Hong Kong Polytechnic University established a Hyperspectral Face database. The indoor hyperspectral face acquisition system was built which mainly consists of a CRI's VariSpec LCTF and a Halogen Light, and includes a hyperspectral dataset of 300 hyperspectral image cubes from 25 volunteers with age range from 21 to 33 (8 female and 17 male). For each individual, several sessions were collected with an average time space of 5 month. The minimal interval is 3 months and the maximum is 10 months. Each session consists of three hyperspectral cubes - frontal, right and left views with neutral-expression. The spectral range is from 400 nm to 720 nm with a step length of 10 nm, producing 33 bands in all. Since the database was constructed over a long period of time, significant appearance variations of the subjects, e.g. changes of hair style and skin condition, are presented in the data. In data collection, positions of the camera, light and subject are fixed, which allows us to concentrate on the spectral characteristics for face recognition without masking from environmental changes. MOBIO - Mobile Biometry Face and Speech Database The MOBIO database consists of bi-modal (audio and video) data taken from 152 people. The database has a female-male ratio or nearly 1:2 (100 males and 52 females) and was collected from August 2008 until July 2010 in six different sites from five different countries. This led to a diverse bi-modal database with both native and non-native English speakers. In total 12 sessions were captured for each client: 6 sessions for Phase I and 6 sessions for Phase II. The Phase I data consists of 21 questions with the question types ranging from: Short Response Questions, Short Response Free Speech, Set Speech, and Free Speech. The Phase II data consists of 11 questions with the question types ranging from: Short Response Questions, Set Speech, and Free Speech. The database was recorded using two mobile devices: a mobile phone and a laptop computer. The mobile phone used to capture the database was a NOKIA N93i mobile while the laptop computer was a standard 2008 MacBook. The laptop was only used to capture part of the first session, this first session consists of data captured on both the laptop and the mobile phone. Texas 3D Face Recognition Database (Texas 3DFRD) Texas 3D Face Recognition database (Texas 3DFRD) contains 1149 pairs of facial color and range images of 105 adult human subjects. The images were acquired at the company Advanced Digital Imaging Research (ADIR), LLC (Friendswood, TX), formerly a subsidiary of Iris International, Inc. (Chatsworth, CA), with assistance from research students and faculty from the Laboratory for Image and Video Engineering (LIVE) at The University of Texas at Austin. This project was sponsored by the Advanced Technology Program of the National Institute of Standards and Technology (NIST). The database is being made available by Dr. Alan C Bovik at UT Austin. The images were acquired using a stereo imaging system at a high spatial resolution of 0.32 mm. The color and range images were captured simultaneously and thus are perfectly registered to each other. All faces have been normalized to the frontal position and the tip of the nose is positioned at the center of the image. The images are of adult humans from all the major ethnic groups and both genders. For each face, is also available information about the subjects' gender, ethnicity, facial expression, and the locations 25 anthropometric facial fiducial points. These fiducial points were located manually on the facial color images using a computer based graphical user interface. Specific data partitions (training, gallery, and probe) that were employed at LIVE to develop the Anthropometric 3D Face Recognition algorithm are also available. Natural Visible and Infrared facial Expression database (USTC-NVIE) The database contains both spontaneous and posed expressions of more than 100 subjects, recorded simultaneously by a visible and an infrared thermal camera, with illumination provided from three different directions. The posed database also includes expression images with and without glasses. The paper describing the database is available here . FEI Face Database The FEI face database is a Brazilian face database that contains a set of face images taken between June 2005 and March 2006 at the Artificial Intelligence Laboratory of FEI in Sao Bernardo do Campo, Sao Paulo, Brazil. There are 14 images for each of 200 individuals, a total of 2800 images. All images are colourful and taken against a white homogenous background in an upright frontal position with profile rotation of up to about 180 degrees. Scale might vary about 10% and the original size of each image is 640x480 pixels. All faces are mainly represented by students and staff at FEI, between 19 and 40 years old with distinct appearance, hairstyle, and adorns. The number of male and female subjects are exactly the same and equal to 100. ChokePoint ChokePoint video dataset is designed for experiments in person identification/verification under real-world surveillance conditions using existing technologies. An array of three cameras was placed above several portals (natural choke points in terms of pedestrian traffic) to capture subjects walking through each portal in a natural way. While a person is walking through a portal, a sequence of face images (ie. a face set) can be captured. Faces in such sets will have variations in terms of illumination conditions, pose, sharpness, as well as misalignment due to automatic face localisation/detection. Due to the three camera configuration, one of the cameras is likely to capture a face set where a subset of the faces is near-frontal. The dataset consists of 25 subjects (19 male and 6 female) in portal 1 and 29 subjects (23 male and 6 female) in portal 2. In total, the dataset consists of 54 video sequences and 64,204 labelled face images. UMB database of 3D occluded faces The University of Milano Bicocca 3D face database is a collection of multimodal (3D + 2D colour images) facial acquisitions. The database is available to universities and research centers interested in face detection, face recognition, face synthesis, etc. The UMB-DB has been acquired with a particular focus on facial occlusions, i.e. scarves, hats, hands, eyeglasses and other types of occlusion wich can occur in real-world scenarios. VADANA: Vims Appearance Dataset for facial ANAlysis The primary use of VADANA is for the problems of face verification and recognition across age progression. The main characteristics of VADANA, which distinguish it from current benchmarks, is the large number of intra-personal pairs (order of 168 thousand); natural variations in pose, expression and illumination; and the rich set of additional meta-data provided along with standard partitions for direct comparison and bench-marking efforts. 链接: http://www.face-rec.org/databases/
个人分类: 科研笔记|10018 次阅读|0 个评论
[CODE]Machine Learning Open Source Software
qianli8848 2012-6-11 08:34
JMLR上面的开源软件 To support the open source software movement, JMLR MLOSS publishes contributions related to implementations of non-trivial machine learning algorithms, toolboxes or even languages for scientific computing. Submission instructions are available here . A Library for Locally Weighted Projection Regression Stefan Klanke, Sethu Vijayakumar, Stefan Schaal ; 9(Apr):623--626, 2008. Shark Christian Igel, Verena Heidrich-Meisner, Tobias Glasmachers ; 9(Jun):993--996, 2008. LIBLINEAR: A Library for Large Linear Classification Rong-En Fan, Kai-Wei Chang, Cho-Jui Hsieh, Xiang-Rui Wang, Chih-Jen Lin ; 9(Aug):1871--1874, 2008. JNCC2: The Java Implementation Of Naive Credal Classifier 2 Giorgio Corani, Marco Zaffalon ; 9(Dec):2695--2698, 2008. Python Environment for Bayesian Learning: Inferring the Structure of Bayesian Networks from Knowledge and Data Abhik Shah, Peter Woolf ; 10(Feb):159--162, 2009. Nieme: Large-Scale Energy-Based Models Francis Maes ; 10(Mar):743--746, 2009. Java-ML: A Machine Learning Library Thomas Abeel, Yves Van de Peer, Yvan Saeys ; 10(Apr):931--934, 2009. Model Monitor ( M 2 ): Evaluating, Comparing, and Monitoring Models Troy Raeder, Nitesh V. Chawla ; 10(Jul):1387--1390, 2009. Dlib-ml: A Machine Learning Toolkit Davis E. King ; 10(Jul):1755--1758, 2009. RL-Glue: Language-Independent Software for Reinforcement-Learning Experiments Brian Tanner, Adam White ; 10(Sep):2133--2136, 2009. DL-Learner: Learning Concepts in Description Logics Jens Lehmann ; 10(Nov):2639−2642, 2009. Error-Correcting Output Codes Library Sergio Escalera, Oriol Pujol, Petia Radeva ; 11(Feb):661−664, 2010. PyBrain Tom Schaul, Justin Bayer, Daan Wierstra, Yi Sun, Martin Felder, Frank Sehnke, Thomas Rückstieß, Jürgen Schmidhuber ; 11(Feb):743−746, 2010. Continuous Time Bayesian Network Reasoning and Learning Engine Christian R. Shelton, Yu Fan, William Lam, Joon Lee, Jing Xu ; 11(Mar):1137−1140, 2010. SFO: A Toolbox for Submodular Function Optimization Andreas Krause ; 11(Mar):1141−1144, 2010. MOA: Massive Online Analysis Albert Bifet, Geoff Holmes, Richard Kirkby, Bernhard Pfahringer ; 11(May):1601−1604, 2010. FastInf: An Efficient Approximate Inference Library Ariel Jaimovich, Ofer Meshi, Ian McGraw, Gal Elidan ; 11(May):1733−1736, 2010. The SHOGUN Machine Learning Toolbox Sören Sonnenburg, Gunnar Rätsch, Sebastian Henschel, Christian Widmer, Jonas Behr, Alexander Zien, Fabio de Bona, Alexander Binder, Christian Gehl, Vojtěch Franc ; 11(Jun):1799−1802, 2010. A Surrogate Modeling and Adaptive Sampling Toolbox for Computer Based Design Dirk Gorissen, Ivo Couckuyt, Piet Demeester, Tom Dhaene, Karel Crombecq ; 11(Jul):2051−2055, 2010. Model-based Boosting 2.0 Torsten Hothorn, Peter Bühlmann, Thomas Kneib, Matthias Schmid, Benjamin Hofner ; 11(Aug):2109−2113, 2010. libDAI: A Free and Open Source C++ Library for Discrete Approximate Inference in Graphical Models Joris M. Mooij ; 11(Aug):2169−2173, 2010. Gaussian Processes for Machine Learning (GPML) Toolbox Carl Edward Rasmussen, Hannes Nickisch ; 11(Nov):3011−3015, 2010. CARP: Software for Fishing Out Good Clustering Algorithms Volodymyr Melnykov, Ranjan Maitra ; 12(Jan):69−73, 2011. The arules R-Package Ecosystem: Analyzing Interesting Patterns from Large Transaction Data Sets Michael Hahsler, Sudheer Chelluboina, Kurt Hornik, Christian Buchta ; 12(Jun):2021−2025, 2011. MSVMpack: A Multi-Class Support Vector Machine Package Fabien Lauer, Yann Guermeur ; 12(Jul):2293−2296, 2011. Waffles : A Machine Learning Toolkit Michael Gashler ; 12(Jul):2383−2387, 2011. MULAN: A Java Library for Multi-Label Learning Grigorios Tsoumakas, Eleftherios Spyromitros-Xioufis, Jozef Vilcek, Ioannis Vlahavas ; 12(Jul):2411−2414, 2011. LPmade: Link Prediction Made Easy Ryan N. Lichtenwalter, Nitesh V. Chawla ; 12(Aug):2489−2492, 2011. Scikit-learn: Machine Learning in Python Fabian Pedregosa, Gaël Varoquaux, Alexandre Gramfort, Vincent Michel, Bertrand Thirion, Olivier Grisel, Mathieu Blondel, Peter Prettenhofer, Ron Weiss, Vincent Dubourg, Jake Vanderplas, Alexandre Passos, David Cournapeau, Matthieu Brucher, Matthieu Perrot, édouard Duchesnay ; 12(Oct):2825−2830, 2011. The Stationary Subspace Analysis Toolbox Jan Saputra Müller, Paul von Bünau, Frank C. Meinecke, Franz J. Király, Klaus-Robert Müller ; 12(Oct):3065−3069, 2011. 原文链接 http://jmlr.csail.mit.edu/mloss/
个人分类: CODE|5514 次阅读|0 个评论
[CODE]sparse coding在线学习及其代码
热度 1 qianli8848 2012-6-8 08:42
一个在线的sparse coding学习算法,最近很多应用类的文章都用这个算法。 The SPArse Modelling Software (SPAMS) can be downloaded here . It includes fast implementations of LARS, OMP, a dictionary learning algorithm and its variants for NMF, sparse PCA, as well as efficient sparse solvers based on proximal methods. June, 2011: SPAMS is now released under an open-source licence. This should be a good news for MAC, Windows, R, Python, C++ users. The package contains scripts for compiling the library under Linux. If you manage to make a script for compiling it under Mac OS and Windows, I would be glad to include it in the release. The denoising code of my ICCV'09 paper can be found here .The package contains binary files for Linux 64bits computers, and an instruction file. Academic use only. The demosaicking code of my ICCV'09 paper can be found here .The package contains binary files for Linux 64bits computers, and an instruction file. Academic use only. The KSVD source code of my IEEE-TIP and SIAM-MMS papers from 2008 can be found here . This package is not maintained anymore and I will not respond to any question about the source code. If you need Linux binaries to do experiments, please contact me.
个人分类: CODE|12612 次阅读|1 个评论
[转载]与评审人沟通
qianli8848 2012-6-7 08:58
一、投稿信 1. Dear Dr. Defendi ML: I am sending a manuscript entitled “” by – which I should like to submit for possible publication in the journal of - . Yours sincerely 2. Dear Dr. A: Enclosed is a manuscript entitled “” by sb, which we are submitting for publication in the journal of - . We have chosen this journal because it deals with - . We believe that sth would be of interest to the journal’s readers. 3. Dear Dr. A: Please find enclosed for your review an original research article, “” by sb. All authors have read and approve this version of the article, and due care has been taken to ensure the integrity of the work. No part of this paper has published or submitted elsewhere. No conflict of interest exits in the submission of this manuscript, and we have attached to this letter the signed letter granting us permission to use Figure 1 from another source. We appreciate your consideration of our manuscript, and we look forward to receiving comments from the reviewers. 二、询问有无收到稿件 Dear Editors, We dispatched our manuscript to your journal on 3 August 2006 but have not, as yet, receive acknowledgement of their safe arrival. We fear that may have been lost and should be grateful if you would let us know whether or not you have received them. If not, we will send our manuscript again. Thank you in advance for your help. 三、询问论文审查回音 Dear Editors , It is more than 12 weeks since I submitted our manuscript (No: ) for possible publication in your journal. I have not yet received a reply and am wondering whether you have reached a decision. I should appreciated your letting me know what you have decided as soon as possible. 四、关于论文的总体审查意见 1. This is a carefully done study and the findings are of considerable interest. A few minor revision are list below. 2. This is a well-written paper containing interesting results which merit publication. For the benefit of the reader, however, a number of points need clarifying and certain statements require further justification. There are given below. 3. Although these observation are interesting, they are rather limited and do not advance our knowledge of the subject sufficiently to warrant publication in PNAS. We suggest that the authors try submitting their findings to specialist journal such as – 4. Although this paper is good, it would be ever better if some extra data were added. 5. This manuscript is not suitable for publication in the journal of – because the main observation it describe was reported 3 years ago in a reputable journal of - . 6. Please ask someone familiar with English language to help you rewrite this paper. As you will see, I have made some correction at the beginning of the paper where some syntax is not satisfactory. 7. We feel that this potentially interesting study has been marred by an inability to communicate the finding correctly in English and should like to suggest that the authors seek the advice of someone with a good knowledge of English, preferable native speaker. 8. The wording and style of some section, particularly those concerning HPLC, need careful editing. Attention should be paid to the wording of those parts of the Discussion of and Summary which have been underlined. 9. Preliminary experiments only have been done and with exception of that summarized in Table 2, none has been repeated. This is clearly unsatisfactory, particularly when there is so much variation between assays. 10. The condition of incubation are poorly defined. What is the temperature? Were antibody used? 五、给编辑的回信 1. In reply to the referee’s main criticism of paper, it is possible to say that – One minor point raised by the referee concerns of the extra composition of the reaction mixture in Figure 1. This has now been corrected. Further minor changes had been made on page 3, paragraph 1 (line 3-8) and 2 (line 6-11). These do not affect our interpretation of the result. 2. I have read the referee’s comments very carefully and conclude that the paper has been rejected on the sole grounds that it lake toxicity data. I admit that I did not include a toxicity table in my article although perhaps I should have done. This was for the sake of brevity rather than an error or omission. 3. Thank you for your letter of – and for the referee’s comments concerning our manuscript entitled “”. We have studied their comments carefully and have made correction which we hope meet with their approval. 4. I enclosed a revised manuscript which includes a report of additional experiments done at the referee’s suggestion. You will see that our original findings are confirmed. 5. We are sending the revised manuscript according to the comments of the reviewers. Revised portion are underlined in red. 6. We found the referee’s comments most helpful and have revised the manuscript 7. We are pleased to note the favorable comments of reviewers in their opening sentence. 8. Thank you for your letter. I am very pleased to learn that our manuscript is acceptable for publication in Cancer Research with minor revision. 9. We have therefore completed a further series of experiments, the result of which are summarized in Table 5. From this we conclude that intrinsic factor is not account. 10. We deleted the relevant passage since they are not essential to the contents of the paper. 11. I feel that the reviewer’s comments concerning Figures 1 and 2 result from a misinterpretation of the data. 12. We would have include a non-protein inhibitor in our system, as a control, if one had been available. 13. We prefer to retain the use of Table 4 for reasons that it should be clear from the new paragraph inserted at the end of the Results section. 14. Although reviewer does not consider it is important to measure the temperature of the cells, we consider it essential. 15. The running title has been changed to “”. 16. The Materials and Methods section now includes details for measuring uptake of isotope and assaying hexokinase. 17. The concentration of HAT media (page12 paragraph 2) was incorrectly stated in the original manuscript. This has been rectified. The authors are grateful to the referees for pointing out their error. 18. As suggested by both referees, a discussion of the possibility of laser action on chromosome has been included (page16, paragraph 2). 19. We included a new set of photographs with better definition than those originally submitted and to which a scale has been added. 20. Following the suggestion of the referees, we have redraw Figure 3 and 4. 21. Two further papers, published since our original submission, have been added to the text and Reference section. These are: 22. We should like to thank the referees for their helpful comments and hope that we have now produced a more balance and better account of our work. We trust that the revised manuscript is acceptable for publication. 23. I greatly appreciate both your help and that of the referees concerning improvement to this paper. I hope that the revised manuscript is now suitable for publication. 24. I should like to express my appreciation to you and the referees for suggesting how to improve our paper. 25. I apologize for the delay in revising the manuscript. This was due to our doing an additional experiment, as suggested by referees.
个人分类: 科研笔记|2429 次阅读|0 个评论
[转载]SCI 投稿全过程信件模板一览
qianli8848 2012-6-6 09:39
一、最初投稿 Cover letter Dear Editors: We would like to submit the enclosed manuscript entitled “Paper Title”, which we wish to be considered for publication in “Journal Name”. No conflict of interest exits in the submission of this manuscript, and manuscript is approved by all authors for publication. I would like to declare on behalf of my co-authors that the work described was original research that has not been published previously, and not under consideration for publication elsewhere, in whole or in part. All the authors listed have approved the manuscript that is enclosed. In this work, we evaluated …… ( 简要介绍一下论文的创新性 ). I hope this paper is suitable for “Journal Name”. The following is a list of possible reviewers for your consideration: 1) Name AE-mail: ××××@×××× 2) Name BE-mail: ××××@×××× We deeply appreciate your consideration of our manuscript, and we look forward to receiving comments from the reviewers. If you have any queries, please don’t hesitate to contact me at the address below. Thank you and best regards. Yours sincerely, ×××××× Corresponding author: Name: ××× E-mail: ××××@×××× 二、催稿信 Dear Prof. ×××: Sorry for disturbing you. I am not sure if it is the right time to contact you to inquire about the status of my submitted manuscript titled “Paper Title”. (ID: 文章稿号 ), although the status of “With Editor” has been lasting for more than two months, since submitted to journal three months ago. I am just wondering that my manuscript has been sent to reviewers or not? I would be greatly appreciated if you could spend some of your time check the status for us. I am very pleased to hear from you on the reviewer’s comments. Thank you very much for your consideration. Best regards! Yours sincerely, ×××××× Corresponding author: Name: ××× E-mail: ××××@×××× 三、修改稿 Cover letter Dear Dr/ Prof.. (写上负责你文章编辑的姓名,显得尊重,因为第一次的投稿不知道具体负责的编辑,只能用通用的 Editors ) : On behalf of my co-authors, we thank you very much for giving us an opportunity to revise our manuscript, we appreciate editor and reviewers very much for their positive and constructive comments and suggestions on our manuscript entitled “Paper Title”. (ID: 文章稿号 ). We have studied reviewer’s comments carefully and have made revision which marked in red in the paper. We have tried our best to revise our manuscript according to the comments. Attached please find the revised version, which we would like to submit for your kind consideration. We would like to express our great appreciation to you and reviewers for comments on our paper. Looking forward to hearing from you. Thank you and best regards. Yours sincerely, ×××××× Corresponding author: Name: ××× E-mail: ××××@×××× 四、修改稿回答审稿人的意见(最重要的部分) List of Responses Dear Editors and Reviewers: Thank you for your letter and for the reviewers’ comments concerning our manuscript entitled “Paper Title” (ID: 文章稿号 ). Those comments are all valuable and very helpful for revising and improving our paper, as well as the important guiding significance to our researches. We have studied comments carefully and have made correction which we hope meet with approval. Revised portion are marked in red in the paper. The main corrections in the paper and the responds to the reviewer’s comments are as flowing: Responds to the reviewer’s comments: Reviewer #1: 1. Response to comment: (…… 简要列出意见 ……) Response: ×××××× 2. Response to comment: (…… 简要列出意见 ……) Response: ×××××× 。。。。。。 逐条意见回答,切忌一定不能有遗漏 针对不同的问题有下列几个礼貌术语可适当用用: We are very sorry for our negligence of ……... We are very sorry for our incorrect writing ……... It is really true as Reviewer suggested that…… We have made correction according to the Reviewer’s comments. We have re-written this part according to the Reviewer’s suggestion As Reviewer suggested that…… Considering the Reviewer’s suggestion, we have …… 最后特意感谢一下这个审稿人的意见: Special thanks to you for your good comments. Reviewer #2: 同上述 Reviewer #3: ×××××× Other changes: 1. Line 60-61, the statements of “……” were corrected as “…………” 2. Line 107, “……” was added 3. Line 129, “……” was deleted ×××××× We tried our best to improve the manuscript and made some changes in the manuscript.These changes will not influence the content and framework of the paper. And here we did not list the changes but marked in red in revised paper. We appreciate for Editors/Reviewers’ warm work earnestly, and hope that the correction will meet with approval. Once again, thank you very much for your comments and suggestions. 五、文章接受后可以考虑感谢一下负责你文章的编辑或主编(根据需要) Dear Prof. ××××××: Thanks very much for your kind work and consideration on publication of our paper. On behalf of my co-authors, we would like to express our great appreciation to editor and reviewers. Thank you and best regards. Yours sincerely, ×××××× Corresponding author: Name: ××× E-mail: ××××@×××× 六、询问校稿信件(如果文章接受后时间较长) Dear ×××: Sorry for disturbing you. I am not sure if it is the right time to contact you to inquire about the status of our accepted manuscript titled “Paper Title” (ID: 文章稿号 ), since the copyright agreement for publication has been sent to you two months ago. I am just wondering that how long I can receive the proof of our manuscript from you? I would be greatly appreciated if you could spend some of your time for a reply. I am very pleased to hear from you. Thank you very much for your consideration. Yours sincerely, ×××××× Corresponding author: Name: ××× E-mail: ××××@×××× 七、文章校稿信件 Dear Mr. ×××: Thanks very much for your kind letter about the proof of our paper titled “Paper Title” (ID: 文章稿号 ) for publication in “Journal Name”. We have finished the proof reading and checking carefully, and some corrections about the proof and the answers to the queries are provided below. Corrections: 1. In ****** should be **** (Page ***, Right column, line***) 2. In **** the “*****” should be “****” (Page ****, Right column, line****) Answers for “author queries”: 1. *********************. 2. ********************** 3. ********************** We greatly appreciate the efficient, professional and rapid processing of our paper by your team. If there is anything else we should do, please do not hesitate to let us know. Thank you and best regards. Yours sincerely, ×××××× Corresponding author: Name: ××× E-mail: ××××@××××
个人分类: 科研笔记|3132 次阅读|0 个评论
[转载]林达华推荐的几本数学书
qianli8848 2012-6-5 09:24
Dahua Lin 早在几年前就已经冒尖出来了,现在在 MIT 攻读博士学位,前途不可限量。他总是有无穷的精力,学习,同时几篇几篇的写 paper ,几万行几万行的写 code ,几万字几万字的写 blog 。。他扎实的数学功底和相关知识的功底,以及深睿的洞察和理解问题的能力,注定他将在 machine learning 和 computer vision 等相关领域取得大量的成果,甚至是突破性的成果。期待他在这些领域做出贡献,为人类知识宝库添砖加瓦。 注: Applied Multivariate Statistical Analysis (5th Ed.)by Richard A. Johnson and Dean W. Wichern这本书有中文版的。《实用多元统计分析》陆璇 叶俊译 7 月 13 日 介绍几本数学书 前面几篇谈了一些对数学的粗浅看法。其实,如果对某门数学有兴趣,最好的方法就是走进那个世界去学习和体验。 这里说说几本我看过后觉得不错的数学教科书。 1. 线性代数 (Linear Algebra) : 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于 Learning 是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是 Introduction to Linear Algebra (3rd Ed.)by Gilbert Strang. 这本书是 MIT 的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法 —— 这些在实际工作中 MATLAB 可以代劳,关键的是要深入理解几个基础而又重要的概念: 子空间 (Subspace) ,正交 (Orthogonality) ,特征值和特征向量 (Eigenvalues and eigenvectors) ,和线性变换 (Linear transform) 。 从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。 Strang 的这本书在这方面是做得很好的。 而且,这本书有个得天独厚的优势。书的作者长期在 MIT 讲授线性代数课 (18.06) ,课程的 video 在 MIT 的 Open courseware 网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。 http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/CourseHome/index.htm 2. 概率和统计 (Probability and Statistics): 概率论和统计的入门教科书很多,我目前也没有特别的推荐。我在这里想介绍的是一本关于多元统计的基础教科书: Applied Multivariate Statistical Analysis (5th Ed.)by Richard A. Johnson and Dean W. Wichern 这本书是我在刚接触向量统计的时候用于学习的,我在香港时做研究的基础就是从此打下了。实验室的一些同学也借用这本书学习向量统计。这本书没有特别追求数学上的深度,而是以通俗易懂的方式讲述主要的基本概念,读起来很舒服,内容也很实用。对于 Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA) 这些 Learning 中的基本方法也展开了初步的论述。 之后就可以进一步深入学习贝叶斯统计和 Graphical models 。一本理想的书是 Introduction to Graphical Models (draft version). by M. Jordan and C. Bishop. 我不知道这本书是不是已经出版了(不要和 Learning in Graphical Models 混淆,那是个论文集,不适合初学)。这本书从基本的贝叶斯统计模型出发一直深入到复杂的统计网络的估计和推断,深入浅出, statistical learning 的许多重要方面都在此书有清楚论述和详细讲解。 MIT 内部可以 access ,至于外面,好像也是有电子版的。 3. 分析 (Analysis) : 我想大家基本都在大学就学过微积分或者数学分析,深度和广度则随各个学校而异了。这个领域是很多学科的基础,值得推荐的教科书莫过于 Principles of Mathematical Analysis , by Walter Rudin 有点老,但是绝对经典,深入透彻。缺点就是比较艰深 —— 这是 Rudin 的书的一贯风格,适合于有一定基础后回头去看。 在分析这个方向,接下来就是 泛函分析 (Functional Analysis) 。 Introductory Functional Analysis with Applications, by Erwin Kreyszig. 适合作为泛函的基础教材,容易切入而不失全面。我特别喜欢它对于谱论和算子理论的特别关注,这对于做 learning 的研究是特别重要的。 Rudin 也有一本关于 functional analysis 的书,那本书在数学上可能更为深刻,但是不易于上手,所讲内容和 learning 的切合度不如此书。 在分析这个方向,还有一个重要的学科是 测度理论 (Measure theory) ,但是我看过的书里面目前还没有感觉有特别值得介绍的。 4. 拓扑 (Topology) : 在我读过的基本拓扑书各有特色,但是综合而言,我最推崇: Topology (2nd Ed.)by James Munkres 这本书是 Munkres 教授长期执教 MIT 拓扑课的心血所凝。对于一般拓扑学 (General topology) 有全面介绍,而对于代数拓扑 (Algebraic topology) 也有适度的探讨。此书不需要特别的数学知识就可以开始学习,由浅入深,从最基本的集合论概念(很多书不屑讲这个)到 Nagata-Smirnov Theorem 和 Tychonoff theorem 等较深的定理(很多书避开了这个)都覆盖了。讲述方式思想性很强,对于很多定理,除了给出证明过程和引导你思考其背后的原理脉络,很多令人赞叹的亮点 —— 我常读得忘却饥饿,不愿释手。很多习题很有水平。 5. 流形理论 (Manifold theory) : 对于拓扑和分析有一定把握时,方可开始学习流形理论,否则所学只能流于浮浅。我所使用的书是 Introduction to Smooth Manifolds.by John M. Lee 虽然书名有 introduction 这个单词,但是实际上此书涉入很深,除了讲授了基本的 manifold, tangent space, bundle, sub-manifold 等,还探讨了诸如纲理论 (Category theory) ,德拉姆上同调 (De Rham cohomology) 和积分流形等一些比较高级的专题。对于李群和李代数也有相当多的讨论。行文通俗而又不失严谨,不过对某些记号方式需要熟悉一下。 虽然李群论是建基于平滑流形的概念之上,不过,也可能从矩阵出发直接学习李群和李代数 —— 这种方法对于急需使用李群论解决问题的朋友可能更加实用。而且,对于一个问题从不同角度看待也利于加深理解。下面一本书就是这个方向的典范: Lie Groups, Lie Algebras, and Representations: An Elementary Introduction.by Brian C. Hall 此书从开始即从矩阵切入,从代数而非几何角度引入矩阵李群的概念。并通过定义运算的方式建立 exponential mapping ,并就此引入李代数。这种方式比起传统的通过 “ 左不变向量场 (Left-invariant vector field)“ 的方式定义李代数更容易为人所接受,也更容易揭示李代数的意义。最后,也有专门的论述把这种新的定义方式和传统方式联系起来。 ———————————————————————————— 无论是研究 Vision, Learning 还是其它别的学科,数学终究是根基所在。学好数学是做好研究的基石。学好数学的关键归根结底是自己的努力,但是选择一本好的书还是大有益处的。不同的人有不同的知识背景,思维习惯和研究方向,因此书的选择也因人而异,只求适合自己,不必强求一致。上面的书仅仅是从我个人角度的出发介绍的,我的阅读经历实在非常有限,很可能还有比它们更好的书(不妨也告知我一声,先说声谢谢了)。 7 月 9 日 Learning 中的代数结构的建立 Learning 是一个融会多种数学于一体的领域。说起与此有关的数学学科,我们可能会迅速联想到 线性代数以及建立在向量空间 基础上的统计模型 —— 事实上,主流的论文中确实在很大程度上基于它们。 R^n (n- 维实向量空间 ) 是我们在 paper 中见到最多的空间,它确实非常重要和实用,但是,仅仅依靠它来描述我们的世界并不足够。事实上,数学家们给我们提供了丰富得多的工具。 “ 空间 ”(space) ,这是一个很有意思的名词,几乎出现在所有的数学分支的基础定义之中。归纳起来,所谓空间就是指一个集合以及在上面定义的某种数学结构。关于这个数学结构的定义或者公理,就成为这个数学分支的基础,一切由此而展开。 还是从我们最熟悉的空间 ——R^n 说起吧。大家平常使用这个空间的时候,除了线性运算,其实还用到了别的数学结构,包括 度量结构和内积结构 。 第一,它是一个拓扑空间 (Topological space) 。而且从拓扑学的角度看,具有非常优良的性质: Normal (implying Hausdorff and Regular), Locally Compact, Paracompact, with Countable basis, Simply connected (implying connected and path connected), Metrizable. 第二,它是一个度量空间 (Metric space) 。我们可以计算上面任意两点的距离。 第三,它是一个有限维向量空间 (Finite dimensional space) 。因此,我们可以对里面的元素进行代数运算(加法和数乘),我们还可以赋予它一组有限的基,从而可以用有限维坐标表达每个元素。 第四,基于度量结构和线性运算结构,可以建立起分析 (Analysis) 体系。我们可以对连续函数进行微分,积分,建立和求解微分方程,以及进行傅立叶变换和小波分析。 第五,它是一个希尔伯特空间(也就是完备的内积空间) (Hilbert space, Complete inner product space) 。它有一套很方便计算的内积 (inner product) 结构 —— 这个空间的度量结构其实就是从其内积结构诱导出来。更重要的,它是完备的 (Complete)—— 代表任何一个柯西序列 (Cauchy sequence) 都有极限 —— 很多人有意无意中其实用到了这个特性,不过习惯性地认为是理所当然了。 第六,它上面的线性映射构成的算子空间仍旧是有限维的 —— 一个非常重要的好处就是,所有的线性映射都可以用矩阵唯一表示。特别的,因为它是有限维完备空间,它的泛函空间和它本身是同构的,也是 R^n 。 因而,它们的谱结构,也就可以通过矩阵的特征值和特征向量获得 。 第七,它是一个测度空间 —— 可以计算子集的大小(面积 / 体积)。正因为此,我们才可能在上面建立概率分布 (distribution)—— 这是我们接触的绝大多数连续统计模型的基础。 我们可以看到,这是一个非常完美的空间,为我们的应用在数学上提供了一切的方便,在上面,我们可以理所当然地认为它具有我们希望的各种良好性质,而无须特别的证明;我们可以直接使用它的各种运算结构,而不需要从头建立;而且很多本来不一样的概念在这里变成等价的了,我们因此不再需要辨明它们的区别。 以此为界, Learning 的主要工作分成两个大的范畴: 建立一种表达形式,让它处于上面讨论的 R^n 空间里面。 获得了有限维向量表达后,建立各种代数算法或者统计模型进行分析和处理。 这里只讨论第一个范畴。先看看,目前用得比较广泛的一些方法: 直接基于原始数据建立表达。我们关心的最终目标是一个个现实世界中的对象:一幅图片,一段语音,一篇文章,一条交易记录,等等。这些东西大部分本身没有附着一个数值向量的。为了构造一个向量表达,我们可以把传感器中记录的数值,或者别的什么方式收集的数值数据按照一定的顺序罗列出来,就形成一个向量了。如果有 n 个数字,就认为它们在 R^n 里面。 不过,这在数学上有一点小问题,在大部分情况下,根据数据产生的物理原理,这些向量的值域并不能充满整个空间。比如图像的像素值一般是正值,而且在一个有界闭集之中。这带来的问题是,对它们进行线性运算很可能得到的结果会溢出正常的范围 —— 在大部分 paper 中,可能只是采用某些 heuristics 的手段进行简单处理,或者根本不管,很少见到在数学上对此进行深入探讨的 —— 不过如果能解决实际问题,这也是无可厚非的,毕竟不是所有的工作都需要像纯数学那样追求严谨。 量化 (quantization) 。这是在处理连续信号时被广泛采用的方式。只是习以为常,一般不提名字而已。比如一个空间信号( Vision 中的 image )或者时间信号,它们的 domain 中的值是不可数无限大的 (uncountably infinite) ,不要说表示为有限维向量,即使表达为无限序列也是不可能的。在这种情况下,一般在有限域内,按照一定顺序每隔一定距离取一个点来代表其周围的点,从而形成有限维的表达。这就是信号在时域或空域的量化。 这样做不可避免要丢失信息。但是,由于小邻域内信号的高度相关,信息丢失的程度往往并不显著。而且,从理论上说,这相当于在频域中的低通过率。对于有限能量的连续信号,不可能在无限高的频域中依然保持足够的强度,只要采样密度足够,丢失的东西可以任意的少。 除了表示信号,对于几何形体的表达也经常使用量化,比如表示 curve 和 surface 。 找出有限个数充分表达一个对象也许不是最困难的。不过 , 在其上面建立数学结构却未必了。一般来说,我们要对其进行处理,首先需要一个拓扑结构用以描述空间上的点是如何联系在一起。直接建立拓扑结构在数学上往往非常困难,也未必实用。因此, 绝大部分工作采取的方式是首先建立度量结构 。一个度量空间,其度量会自然地诱导出一个拓扑结构 —— 不过,很多情况下我们似乎会无视它的存在。 最简单的情况,就是使用原始向量表达的欧氏距离 (Euclidean distance) 作为 metric 。不过,由于原始表达数值的不同特性,这种方式效果一般不是特别好,未必能有效表达实际对象的相似性(或者不相似性)。因此,很多工作会有再此基础上进行度量的二次建立。方式是多种多样的,一种是寻求一个映射,把原空间的元素变换到一个新的空间,在那里欧氏距离变得更加合适。这个映射发挥的作用包括对信息进行筛选,整合,对某些部分进行加强或者抑制。这就是大部分关于 feature selection , feature extraction ,或者 subspace learning 的文章所要做的。另外一种方式,就是直接调节距离的计算方式(有些文章称之为 metric learning )。 这两种方式未必是不同的。如果映射是单射,那么它相当于在原空间建立了一个不同的度量。反过来,通过改变距离计算方式建立的度量在特定的条件下对应于某种映射。 大家可能注意到,上面提到的度量建立方法,比如欧氏距离,它需要对元素进行代数运算。对于普通的向量空间,线性运算是天然赋予的,我们无须专门建立,所以可以直接进行度量的构造 —— 这也是大部分工作的基础。可是,有些事物其原始表达不是一个 n-tuple ,它可能是一个 set ,一个 graph ,或者别的什么特别的 object 。怎么建立代数运算呢? 一种方法是直接建立。就是给这些东西定义自己的加法和数乘。这往往不是那么直接(能很容易建立的线性运算结构早已经被建立好并广泛应用了),可能需要涉及很深的数学知识,并且要有对问题本身的深入了解和数学上的洞察力。不过,一个新的代数结构一旦建立起来,其它的数学结构,包括拓扑,度量,分析,以及内积结构也随之能被自然地诱导出来,我们也就具有了对这个对象空间进行各种数学运算和操作的基础。加法和数乘看上去简单,但是如果我们对于本来不知道如何进行加法和数乘的空间建立了这两样东西,其理论上的贡献是非常大的。 (一个小问题:大家常用各种 graphical model ,但是,每次这些 model 都是分别 formulate ,然后推导出 estimation 和 evaluation 的步骤方法。是否可能对 "the space of graphical model" 或者它的某个特定子集建立某种代数结构呢?(不一定是线性空间,比如群,环,广群, etc )从而使得它们在代数意义上统一起来,而相应的 estimation 或者 evaluation 也可以用过代数运算 derive 。这不是我的研究范围,也超出了我目前的能力和知识水平,只是我相信它在理论上的重要意义,留作一个远景的问题。事实上,数学中确实有一个分支叫做 Algebraic statistics 可能在探讨类似的问题,不过我现在对此了解非常有限。) 回到我们的正题,除了直接建立运算定义,另外一种方式就是嵌入 (embedding) 到某个向量空间,从而继承其运算结构为我所用 。当然这种嵌入也不是乱来,它需要保持原来这些对象的某种关系。最常见的就是保距嵌入 (isometric embedding) ,我们首先建立度量结构(绕过向量表达,直接对两个对象的距离通过某种方法进行计算),然后把这个空间嵌入到目标空间,通常是有限维向量空间,要求保持度量不变。 “ 嵌入 ” 是一种在数学上应用广泛的手段,其主要目标就是通过嵌入到一个属性良好,结构丰富的空间,从而利用其某种结构或者运算体系。在拓扑学中,嵌入到 metric space 是对某个拓扑空间建立度量的重要手段。而在这里,我们是已有度量的情况下,通过嵌入获取线性运算的结构。除此以来,还有一种就是前些年比较热的 manifold embedding ,这个是通过保持局部结构的嵌入,获取全局结构,后面还会提到。 接下来的一个重要的代数结构,就是内积 (inner product) 结构。内积结构一旦建立,会直接诱导出一种性质良好的度量,就是范数 (norm) ,并且进而诱导出拓扑结构。一般来说,内积需要建立在线性空间的基础上,否则连一个二元运算是否是内积都无法验证。不过, kernel 理论指出,对于一个空间,只要定义一个正定核 (positive kernel)—— 一个符合正定条件的二元运算,就必然存在一个希尔伯特空间,其内积运算等效于核运算。 这个结论的重要意义在于,我们可以绕开线性空间,通过首先定义 kernel 的方式,诱导出一个线性空间 ( 叫做再生核希尔伯特空间 Reproducing Kernel Hilbert Space) ,从而我们就自然获得我们所需要的度量结构和线性运算结构。这是 kernel theory 的基础。 在很多教科书中,以二次核为例子,把二维空间变成三维,然后告诉大家 kernel 用于升维。对于这种说法,我一直认为在一定程度上是误导的。事实上, kernel 的最首要意义是内积的建立(或者改造),从而诱导出更利于表达的度量和运算结构。对于一个问题而言,选择一个切合问题的 kernel 比起关注 “ 升维 ” 来得更为重要。 kernel 被视为非线性化的重要手段,用于处理非高斯的数据分布。这是有道理的。 通过 nonlinear kernel 改造的内积空间,其结构和原空间的结构确实不是线性关联,从这个意义上说,它实施了非线性化。不过,我们还应该明白,它的最终目标还是要回到线性空间,新的内积空间仍旧是一个线性空间,它一旦建立,其后的运算都是线性的, 因此, kernel 的使用就是为了寻求一个新的线性空间,使得线性运算更加合理 —— 非线性化的改造最终仍旧是要为线性运算服务。 值得一提的是, kernelization 本质上说还是一种嵌入过程:对于一个空间先建立内积结构,并且以保持内积结构不变的方式嵌入到一个高维的线性空间,从而继承其线性运算体系。 上面说到的都是从全局的方式建立代数结构的过程,但是那必须以某种全局结构为基础(无论预先定义的是运算,度量还是内积,都必须适用于全空间。)但是,全局结构未必存在或者适合,而局部结构往往简单方便得多。这里就形成一种策略,以局部而达全局 —— 这就是流形 (manifold) 的思想,而其则根源于拓扑学。 从拓扑学的角度说,流形就是一个非常优良的拓扑空间:符合 Hausdorff 分离公理(任何不同的两点都可以通过不相交的邻域分离),符合第二可数公理(具有可数的拓扑基),并且更重要的是,局部同胚于 R^n 。因此,一个正则 (Regular) 流形基本就具有了各种最良好的拓扑特性。而局部同胚于 R^n ,代表了它至少在局部上可以继承 R^n 的各种结构,比如线性运算和内积,从而建立分析体系。事实上,拓扑流形继承这些结构后形成的体系,正是现代流形理论研究的重点。继承了分析体系的流形,就形成了微分流形 (Differential manifold) ,这是现代微分几何的核心。而微分流形各点上的切空间 (Tangent Space) ,则获得了线性运算的体系。而进一步继承了局部内积结构的流形,则形成黎曼流形 (Riemann manifold) , 而流形的全局度量体系 —— 测地距离 (geodesics) 正是通过对局部度量的延伸来获得。 进一步的,当流行本身的拓扑结构和切空间上的线性结构发生关系 —— 也就获得一簇拓扑关联的线性空间 —— 向量丛 (Vector bundle) 。 虽然 manifold theory 作为现代几何学的核心,是一个博大精深的领域,但是它在 learning 中的应用则显得非常狭窄。事实上,对于 manifold ,很多做 learning 的朋友首先反应的是 ISOMAP, LLE, eigenmap 之类的算法。这些都属于 embedding 。当然,这确实是流形理论的一个重要方面。严格来说,这要求是从原空间到其映像的微分同胚映射,因此,嵌入后的空间在局部上具有相同的分析结构,同时也获得了各种好处 —— 全局的线性运算和度量。不过,这个概念在 learning 的应用中被相当程度的放宽了 —— 微分同胚并不能被完全保证,而整个分析结构也不能被完全保持。大家更关注的是保持局部结构中的某个方面 —— 不过这在实际应用中的折衷方案也是可以理解的。事实表明,当原空间中的数据足够密集的情况下,这些算法工作良好。 Learning 中流形应用的真正问题在于它被过滥地运用于稀疏空间 (Sparse space) ,事实上在高维空间中撒进去几千乃至几十万点,即使最相邻的几点也难称为局部了,局部的范围和全局的范围其实已经没有了根本差别,连局部的概念都立不住脚的时候,后面基于其展开的一切工作也都没有太大的意义。事实上,稀疏空间有其本身的规律和法则,通过局部形成全局的流形思想从本质上是不适合于此的。 虽然,流形是一种非常美的理论,但是再漂亮的理论也需要用得其所 —— 它应该用于解决具有密集数据分布的低维空间。 至于,一些 paper 所报告的在高维空间(比如人脸)运用流形方法获得性能提升,其实未必是因为 “ 流形 ” 本身所起的作用,而很可能是其它方面的因素。 流形在实际应用中起重要作用的还有两个方面:一个是研究几何形体的性质(我们暂且不谈这个),还有就是它和代数结构的结合形成的李群 (Lie group) 和李代数 (Lie algebra) 。 当我们研究的对象是变换本身的时候,它们构成的空间是有其特殊性的,比如所有子空间投影形成了 Grassmann 流形,所有的可逆线性算子,或者仿射算子,也形成各自的流形。对他们的最重要操作是变换的结合,而不是加法数乘,因此,它们上面定义的更合适的代数结构应该是群和不是线性空间。而群和微分流形的结合体 —— 李群则成为它们最合适的描述体系 —— 而其切空间则构成了一种加强的线性空间:李代数,用于描述其局部变化特性。 李代数和李群的关系是非常漂亮的。它把变换的微变化转换成了线性空间的代数运算,使得移植传统的基于线性空间的模型和算法到李空间变得可能。而且李代数中的矩阵比起变换本身的矩阵甚至更能反映变换的特性。几何变换的李代数矩阵的谱结构就能非常方便地用于分析变换的几何特性。 最后,回头总结一下关于嵌入这个应用广泛的策略,在 learning 中的 isometry, kernel 和 manifold embedding 都属于此范畴,它们分别通过保持原空间的度量结构,内积结构和局部结构来获得到目标(通常是向量空间)的嵌入,从而获得全局的坐标表达,线性运算和度量,进而能被各种线性算法和模型所应用。 在获得这一系列好处的同时,也有值得我们注意的地方。首先,嵌入只是一种数学手段,并不能取代对问题本身的研究和分析。一种不恰当的原始结构或者嵌入策略,很多时候甚至适得其反 —— 比如稀疏空间的流形嵌入,或者选取不恰当的 kernel 。另外,嵌入适合于分析,而未必适合于重建或者合成。这是因为嵌入是一个单射 (injection) ,目标空间不是每一个点都和原空间能有效对应的。嵌入之后的运算往往就打破了原空间施加的限制。比如两个元素即使都是从原空间映射过来,它们的和却未必有原像,这时就不能直接地回到原空间了。当然可以考虑在原空间找一个点它的映射与之最近,不过这在实际中的有效性是值得商榷的。 和 Learning 有关的数学世界是非常广博的,我随着学习和研究的深入,越来越发现在一些我平常不注意的数学分支中有着适合于问题的结构和方法。比如,广群 (groupoid) 和广代数 (algebroid) 能克服李群和李代数在表示连续变换过程中的一些困难 —— 这些困难困扰了我很长时间。 解决问题和建立数学模型是相辅相成的 ,一方面,一个清晰的问题将使我们有明确的目标去寻求合适的数学结构,另一方面,对数学结构的深入理解对于指导问题的解决也是有重要作用的。对于解决一个问题来说,数学工具的选择最重要的是适合,而不是高深,但是如果在现有数学方法陷入困难的时候,寻求更高级别的数学的帮助,往往能柳暗花明。数学家长时间的努力解决的很多问题,并不都是理论游戏,他们的解决方案中很多时候蕴含着我们需要的东西,而且可能导致对更多问题的解决 —— 但是我们需要时间去学习和发现它们。
个人分类: 科研笔记|12734 次阅读|0 个评论
[转载]AI会议排名_周志华
热度 1 qianli8848 2012-6-4 08:53
南京大学周志华教授写的一个很经典的帖子。不过IJCAI能不能算成是no.1的会议有待商榷,不过总体还算客观! 说明 : 纯属个人看法 , 仅供参考 . tier-1 的列得较全 , tier-2 的不太全 , tier-3 的很不全 . 同分的按字母序排列 . 不很严谨地说 , tier-1 是可以令人羡慕的 , tier-2 是可以令 人尊敬的 , 由于 AI 的相关会议非常多 , 所以能列进 tier-3 的也是不错的 tier-1: IJCAI (1+): International Joint Conference on Artificial Intelligence AAAI (1): National Conference on Artificial Intelligence COLT (1): Annual Conference on Computational Learning Theory CVPR (1): IEEE International Conference on Computer Vision and PatternRecognition ICCV (1): IEEE International Conference on Computer Vision ICML (1): International Conference on Machine Learning NIPS (1): Annual Conference on Neural Information Processing Systems ACL (1-): Annual Meeting of the Association for Computational Linguistics KR (1-): International Conference on Principles of Knowledge Representationand Reasoning SIGIR (1-): Annual International ACM SIGIR Conference on Research and Development in Information Retrieval SIGKDD (1-): ACM SIGKDD International Conference on Knowledge Discovery and Data Mining UAI (1-): International Conference on Uncertainty in Artificial Intelligence *Impact factor (According to Citeseer 03): IJCAI : 1.82 (top 4.09 %) AAAI : 1.49 (top 9.17%) COLT : 1.49 (top 9.25%) ICCV : 1.78 (top 4.75%) ICML : 2.12 (top 1.88%) NIPS : 1.06 (top 20.96%) ACL : 1.44 (top 10.07%) KR : 1.76 (top 4.99%) SIGIR : 1.10 (top 19.08%) Average : 1.56 (top 8.02%) IJCAI (1+): AI 最好的综合性会议 , 1969 年开始 , 每两年开一次 , 奇数年开 . 因为 AI 实在太大 , 所以虽然每届基本上能录 100 多篇(现在已经到 200 多篇了),但分到每个 领域就没几篇了,象 achine learning 、 computer vision 这么大的领域每次大概也 就 10 篇左右 , 所以难度很大 . 不过从录用率上来看倒不太低 , 基本上 20% 左右 , 因为内 行人都会掂掂分量 , 没希望的就别浪费 reviewer 的时间了 . 最近中国大陆投往国际会 议的文章象潮水一样 , 而且因为国内很少有能自己把关的研究组 , 所以很多会议都在 complain 说中国的低质量文章严重妨碍了 PC 的工作效率 . 在这种情况下 , 估计这几年 国际会议的录用率都会降下去 . 另外 , 以前的 IJCAI 是没有 poster 的 , 03 年开始 , 为了 减少被误杀的好人 , 增加了 2 页纸的 poster. 值得一提的是 , IJCAI 是由貌似一个公司 的 ”IJCAI Inc.” 主办的 ( 当然实际上并不是公司 , 实际上是个基金会 ), 每次会议上要 发几个奖 , 其中最重要的两个是 IJCAI Research Excellence Award 和 Computer Thoughts Award, 前者是终身成就奖 , 每次一个人 , 基本上是 AI 的最高奖 ( 有趣的是 , 以 AI 为主业拿图灵奖的 6 位中 , 有 2 位还没得到这个奖 ), 后者是奖给 35 岁以下的 青年科学家 , 每次一个人 . 这两个奖的获奖演说是每次 IJCAI 的一个重头戏 . 另外 , IJCAI 的 PC member 相当于其他会议的 area chair, 权力很大 , 因为是由 PC member 去找 reviewer 来审 , 而不象一般会议的 PC member 其实就是 reviewer. 为了制约 这种权力 , IJCAI 的审稿程序是每篇文章分配 2 位 PC member, primary PC member 去找 3 位 reviewer, second PC member 找一位 . AAAI (1): 美国人工智能学会 AAAI 的年会 . 是一个很好的会议 , 但其档次不稳定 , 可 以给到 1+, 也可以给到 1- 或者 2+, 总的来说我给它 ”1 ″ . 这是因为它的开法完全受 IJCAI 制约 : 每年开 , 但如果这一年的 IJCAI 在北美举行 , 那么就停开 . 所以 , 偶数年 里因为没有 IJCAI, 它就是最好的 AI 综合性会议 , 但因为号召力毕竟比 IJCAI 要小一些 , 特别是欧洲人捧 AAAI 场的比 IJCAI 少得多 ( 其实亚洲人也是 ), 所以比 IJCAI 还是要稍弱 一点 , 基本上在 1 和 1+ 之间 ; 在奇数年 , 如果 IJCAI 不在北美 , AAAI 自然就变成了比 IJCAI 低一级的会议 (1- 或 2+), 例如 2005 年既有 IJCAI 又有 AAAI, 两个会议就进行了协 调 , 使得 IJCAI 的录用通知时间比 AAAI 的 deadline 早那么几天 , 这样 IJCAI 落选的文章 可以投往 AAAI. 在审稿时 IJCAI 的 PC chair 也在一直催 , 说大家一定要快 , 因为 AAAI 那边一直在担心 IJCAI 的录用通知出晚了 AAAI 就麻烦了 . COLT (1): 这是计算学习理论最好的会议 , ACM 主办 , 每年举行 . 计算学习理论基本上可以看成理论计算机科学和机器学习的交叉 , 所以这个会被一些人看成是理论计算 机科学的会而不是 AI 的会 . 我一个朋友用一句话对它进行了精彩的刻画 : “ 一小群数 学家在开会 ”. 因为 COLT 的领域比较小 , 所以每年会议基本上都是那些人 . 这里顺便 提一件有趣的事 , 因为最近国内搞的会议太多太滥 , 而且很多会议都是 LNCS/LNAI 出 论文集 , LNCS/LNAI 基本上已经被搞臭了 , 但很不幸的是 , LNCS/LNAI 中有一些很好的 会议 , 例如 COLT. CVPR (1): 计算机视觉和模式识别方面最好的会议之一 , IEEE 主办 , 每年举行 . 虽然题 目上有计算机视觉 , 但个人认为它的模式识别味道更重一些 . 事实上它应该是模式识 别最好的会议 , 而在计算机视觉方面 , 还有 ICCV 与之相当 . IEEE 一直有个倾向 , 要把 会办成 ” 盛会 ”, 历史上已经有些会被它从 quality 很好的会办成 ” 盛会 ” 了 . CVPR 搞不好 也要走这条路 . 这几年录的文章已经不少了 . 最近负责 CVPR 会议的 TC 的 chair 发信 说 , 对这个 community 来说 , 让好人被误杀比被坏人漏网更糟糕 , 所以我们是不是要减 少好人被误杀的机会啊 ? 所以我估计明年或者后年的 CVPR 就要扩招了 . ICCV (1): 介绍 CVPR 的时候说过了 , 计算机视觉方面最好的会之一 . IEEE 主办 , 每年举行 . ICML (1): 机器学习方面最好的会议之一 . 现在是 IMLS 主办 , 每年举行 . 参见关于 NIPS 的 介绍 . NIPS (1): 神经计算方面最好的会议之一 , NIPS 主办 , 每年举行 . 值得注意的是 , 这个会 每年的举办地都是一样的 , 以前是美国丹佛 , 现在是加拿大温哥华 ; 而且它是年底开会 , 会开完后第 2 年才出论文集 , 也就是说 , NIPS’05 的论文集是 06 年出 . 会议的名字 “Advances in Neural Information Processing Systems”, 所以 , 与 ICML\ECML 这样 的 ” 标准的 ” 机器学习会议不同 , NIPS 里有相当一部分神经科学的内容 , 和机器学习有 一定的距离 . 但由于会议的主体内容是机器学习 , 或者说与机器学习关系紧密 , 所以 不少人把 NIPS 看成是机器学习方面最好的会议之一 . 这个会议基本上控制在 Michael Jordan 的徒子徒孙手中 , 所以对 Jordan 系的人来说 , 发 NIPS 并不是难事 , 一些未必很 强的工作也能发上去 , 但对这个圈子之外的人来说 , 想发一篇实在很难 , 因为留给 ” 外 人 ” 的口子很小 . 所以对 Jordan 系以外的人来说 , 发 NIPS 的难度比 ICML 更大 . 换句话说 , ICML 比较开放 , 小圈子的影响不象 NIPS 那么大 , 所以北美和欧洲人都认 , 而 NIPS 则有 些人 ( 特别是一些欧洲人 , 包括一些大家 ) 坚决不投稿 . 这对会议本身当然并不是好事 , 但因为 Jordan 系很强大 , 所以它似乎也不太 care. 最近 IMLS( 国际机器学习学会 ) 改选 理事 , 有资格提名的人包括近三年在 ICML\ECML\COLT 发过文章的人 , NIPS 则被排除在 外了 . 无论如何 , 这是一个非常好的会 . ACL (1-): 计算语言学 / 自然语言处理方面最好的会议 , ACL (Association ofComputational Linguistics) 主办 , 每年开 . KR (1-): 知识表示和推理方面最好的会议之一 , 实际上也是传统 AI( 即基于逻辑的 AI) 最好的会议之一 . KR Inc. 主办 , 现在是偶数年开 . SIGIR (1-): 信息检索方面最好的会议 , ACM 主办 , 每年开 . 这个会现在小圈子气越来 越重 . 信息检索应该不算 AI, 不过因为这里面用到机器学习越来越多 , 最近几年甚至 有点机器学习应用会议的味道了 , 所以把它也列进来 . SIGKDD (1-): 数据挖掘方面最好的会议 , ACM 主办 , 每年开 . 这个会议历史比较短 , 毕竟 , 与其他领域相比 , 数据挖掘还只是个小弟弟甚至小侄儿 . 在几年前还很难把它列 在 tier-1 里面 , 一方面是名声远不及其他的 top conference 响亮 , 另一方面是相对容易 被录用 . 但现在它被列在 tier-1 应该是毫无疑问的事情了 . UAI (1-): 名字叫 ” 人工智能中的不确定性 ”, 涉及表示 \ 推理 \ 学习等很多方面 , AUAI(Association of UAI) 主办 , 每年开 . tier-2: AAMAS (2+): International Joint Conference on Autonomous Agents andMultiagent Systems ECCV (2+): European Conference on Computer Vision ECML (2+): European Conference on Machine Learning ICDM (2+): IEEE International Conference on Data Mining SDM (2+): SIAM International Conference on Data Mining ICAPS (2): International Conference on Automated Planning and Scheduling ICCBR (2): International Conference on Case-Based Reasoning COLLING (2): International Conference on Computational Linguistics ECAI (2): European Conference on Artificial Intelligence ALT (2-): International Conference on Algorithmic Learning Theory EMNLP (2-): Conference on Empirical Methods in Natural Language Processing ILP (2-): International Conference on Inductive Logic Programming PKDD (2-): European Conference on Principles and Practice of KnowledgeDiscovery in Databases *Impact factor (According to Citeseer 03): ECCV : 1.58 (top 7.20 %) ECML : 0.83 (top 30.63 %) ICDM : 0.35 (top 59.86 %) ICCBR : 0.72 (top 36.69 %) ECAI : 0.69 (top 38.49 %) ALT : 0.63 (top 42.91 %) ILP : 1.06 (top 20.80 %) PKDD : 0.50 (top 51.26 %) Average : 0.80 (top 32.02%) AAMAS (2+): agent 方面最好的会议 . 但是现在 agent 已经是一个一般性的概念 , 几乎所有 AI 有关的会议上都有这方面的内容 , 所以 AAMAS 下降的趋势非常明显 . ECCV (2+): 计算机视觉方面仅次于 ICCV 的会议 , 因为这个领域发展很快 , 有可能 升级到 1- 去 . ECML (2+): 机器学习方面仅次于 ICML 的会议 , 欧洲人极力捧场 , 一些人认为它已经是 1- 了 . 我保守一点 , 仍然把它放在 2+. 因为机器学习发展很快 , 这个会议的 reputation 上升非常明显 . ICDM (2+): 数据挖掘方面仅次于 SIGKDD 的会议 , 目前和 SDM 相当 . 这个会只有 5 年历史 , 上升速度之快非常惊人 . 几年前 ICDM 还比不上 PAKDD, 现在已经拉开很大距离了 . SDM (2+): 数据挖掘方面仅次于 SIGKDD 的会议 , 目前和 ICDM 相当 . SIAM 的底子很厚 , 但在 CS 里面的影响比 ACM 和 IEEE 还是要小 , SDM 眼看着要被 ICDM 超过了 , 但至少目前还是相当的 . ICAPS (2): 人工智能规划方面最好的会议 , 是由以前的国际和欧洲规划会议合并来的 . 因为这个领域逐渐变冷清 , 影响比以前已经小了 . ICCBR (2): Case-Based Reasoning 方面最好的会议 . 因为领域不太大 , 而且一直半冷不热 , 所以总是停留在 2 上 . COLLING (2): 计算语言学 / 自然语言处理方面仅次于 ACL 的会 , 但与 ACL 的差距比 ICCV-ECCV 和 ICML-ECML 大得多 . ECAI (2): 欧洲的人工智能综合型会议 , 历史很久 , 但因为有 IJCAI/AAAI 压着 , 很难往上升 . ALT (2-): 有点象 COLT 的 tier-2 版 , 但因为搞计算学习理论的人没多少 , 做得好的数来数去就那么些 group, 基本上到 COLT 去了 , 所以 ALT 里面有不少并非计算学习理论的内容 . EMNLP (2-): 计算语言学 / 自然语言处理方面一个不错的会 . 有些人认为与 COLLING 相当 , 但我觉得它还是要弱一点 . ILP (2-): 归纳逻辑程序设计方面最好的会议 . 但因为很多其他会议里都有 ILP 方面的内容 , 所以它只能保住 2- 的位置了 . PKDD (2-): 欧洲的数据挖掘会议 , 目前在数据挖掘会议里面排第 4. 欧洲人很想把它抬起来 , 所以这些年一直和 ECML 一起捆绑着开 , 希望能借 ECML 把它带起来 . 但因为 ICDM 和 SDM, 这已经不太可能了 . 所以今年的 PKDD 和 ECML 虽然还是一起开 , 但已经独立审稿了 ( 以前是可以同时投两个会 , 作者可以声明优先被哪个会考虑 , 如果 ECML 中不了还可以被 PKDD 接受 ). tier-3: ACCV (3+): Asian Conference on Computer Vision DS (3+): International Conference on Discovery Science ECIR (3+): European Conference on IR Research ICTAI (3+): IEEE International Conference on Tools with Artificial Intelligence PAKDD (3+): Pacific-Asia Conference on Knowledge Discovery and Data Mining ICANN (3+): International Conference on Artificial Neural Networks AJCAI (3): Australian Joint Conference on Artificial Intelligence CAI (3): Canadian Conference on Artificial Intelligence CEC (3): IEEE Congress on Evolutionary Computation FUZZ-IEEE (3): IEEE International Conference on Fuzzy Systems GECCO (3): Genetic and Evolutionary Computation Conference ICASSP (3): International Conference on Acoustics, Speech, and SignalProcessing ICIP (3): International Conference on Image Processing ICPR (3): International Conference on Pattern Recognition IEA/AIE (3): International Conference on Industrial and Engineering Applications of Artificial Intelligence and Expert Systems IJCNN (3): International Joint Conference on Neural Networks IJNLP (3): International Joint Conference on Natural Language Processing PRICAI (3): Pacific-Rim International Conference on Artificial Intelligence *Impact factor (According to Citeseer 03): ACCV : 0.42 (top 55.61%) ICTAI : 0.25 (top 69.86 %) PAKDD : 0.30(top 65.60 %) ICANN : 0.27 (top 67.73 %) AJCAI : 0.16 (top 79.44 %) CAI : 0.26 (top 68.87 %) ICIP : 0.50 (top 50.20 %) IEA/AIE : 0.09 (top 87.79 %) PRICAI : 0.19 (top 76.33 %) Average : 0.27 (top 68.30%) ACCV (3+): 亚洲的计算机视觉会议 , 在亚太级别的会议里算很好的了 . DS (3+): 日本人发起的一个接近数据挖掘的会议 . ECIR (3+): 欧洲的信息检索会议 , 前几年还只是英国的信息检索会议 . ICTAI (3+): IEEE 最主要的人工智能会议 , 偏应用 , 是被 IEEE 办烂的一个典型 . 以前的 quality 还是不错的 , 但是办得越久声誉反倒越差了 , 糟糕的是似乎还在继续下滑 , 现在其实 3+ 已经不太呆得住了 . PAKDD (3+): 亚太数据挖掘会议 , 目前在数据挖掘会议里排第 5. ICANN (3+): 欧洲的神经网络会议 , 从 quality 来说是神经网络会议中最好的 , 但这个领域的人不重视会议 , 在该领域它的重要性不如 IJCNN. AJCAI (3): 澳大利亚的综合型人工智能会议 , 在国家 / 地区级 AI 会议中算不错的了 . CAI (3): 加拿大的综合型人工智能会议 , 在国家 / 地区级 AI 会议中算不错的了 . CEC (3): 进化计算方面最重要的会议之一 , 盛会型 . IJCNN/CEC /FUZZ-IEEE 这三个会议是计算智能或者说软计算方面最重要的会议 , 它们经常一起开 , 这时就叫 WCCI (World Congress on Computational Intelligence). 但这个领域和 CS 其他分支不太一样 , 倒是和其他学科相似 , 只重视 journal, 不重视会议 , 所以录用率经常在 85% 左右 , 所录文章既有 quality 非常高的论文 , 也有入门新手的习作 . FUZZ-IEEE (3): 模糊方面最重要的会议 , 盛会型 , 参见 CEC 的介绍 . GECCO (3): 进化计算方面最重要的会议之一 , 与 CEC 相当,盛会型 . ICASSP (3): 语音方面最重要的会议之一 , 这个领域的人也不很 care 会议 . ICIP (3): 图像处理方面最著名的会议之一 , 盛会型 . ICPR (3): 模式识别方面最著名的会议之一 , 盛会型 . IEA/AIE (3): 人工智能应用会议 . 一般的会议提名优秀论文的通常只有几篇文章 , 被提名就已经是很高的荣誉了 , 这个会很有趣 , 每次都搞 1 、 20 篇的优秀论文提名 , 专门搞几个 session 做被提名论文报告 , 倒是很热闹 . IJCNN (3): 神经网络方面最重要的会议 , 盛会型 , 参见 CEC 的介绍 . IJNLP (3): 计算语言学 / 自然语言处理方面比较著名的一个会议 . PRICAI (3): 亚太综合型人工智能会议 , 虽然历史不算短了 , 但因为比它好或者相当的综合型会议太多 , 所以很难上升 . 列 list 只是为了帮助新人熟悉领域 , 给出的评分或等级都是个人意见 , 仅供参考 . 特别要说明的是 : 1. tier-1 conference 上的文章并不一定比 tier-3 的好 , 只能说前者的平均水准更高 . 2. 研究工作的好坏不是以它发表在哪儿来决定的 , 发表在高档次的地方只是为了让工作更容易被同行注意到 . tier-3 会议上发表 1 篇被引用 10 次的文章可能比在 tier-1 会议上发表 10 篇被引用 0 次的文章更有价值 . 所以 , 数 top 会议文章数并没有太大意义 , 重要的是同行的评价和认可程度 . 3. 很多经典工作并不是发表在高档次的发表源上 , 有不少经典工作甚至是发表在很低档的发表源上 . 原因很多 , 就不细说了 . 4. 会议毕竟是会议 , 由于审稿时间紧 , 错杀好人和漏过坏人的情况比比皆是 , 更何况还要考虑到有不少刚开始做研究的学生在代老板审稿 . 5. 会议的 reputation 并不是一成不变的,新会议可能一开始没什么声誉,但过几年后就野鸡变凤凰,老会议可能原来声誉很好,但越来越往下滑 . 6. 只有计算机科学才重视会议论文 , 其他学科并不把会议当回事 . 但在计算机科学中也有不太重视会议的分支 . 7. Politics 无所不在 . 你老板是谁 , 你在哪个研究组 , 你在哪个单位 , 这些简单的因素都可能造成决定性的影响 . 换言之 , 不同环境的人发表的难度是不一样的 . 了解到这一点后 , 你可能会对 high-level 发表源上来自 low-level 单位名不见经传作者的文章特别注意 ( 例如如果 计算机学报 上发表了平顶山铁道电子信息科技学院的作者的文章 , 我一定会仔细读 ). 8. 评价体系有巨大的影响 . 不管是在哪儿谋生的学者 , 都需要在一定程度上去迎合评价体系 , 否则连生路都没有了 , 还谈什么做研究 . 以国内来说 , 由于评价体系只重视 journal, 有一些工作做得很出色的学者甚至从来不投会议 . 另外 , 经费也有巨大的制约作用 . 国外很多好的研究组往往是重要会议都有文章 . 但国内是不行的 , 档次低一些的会议还可以投了只交注册费不开会 , 档次高的会议不去做报告会有很大的负面影响 , 所以只能投很少的会议 . 这是在国内做 CS 研究最不利的地方 . 我的一个猜想:人民币升值对国内 CS 研究会有不小的促进作用 ( 当然 , 人民币升值对整个中国来说利大于弊还是弊大于利很难说 ).
个人分类: 科研笔记|16337 次阅读|1 个评论
[转载]Feval的使用Matlab
qianli8848 2012-6-3 09:42
= Feval_r(F,x1,...,xn) F是需要使用函数的函数名,或者句柄;xi是函数的参数,yi是函数的返回值 举例: 假设需要调用的函数foo定义如下: function x=foo(a,b) x=a*b; 若在main函数中用feval调用foo,可以有以下几种方式 1. result=feval_r('foo',3,15); 2. result=feval_r(@foo,3,16); %这里@foo即句柄 3. 若调用的函数要作为main的参数,则 function result=main(f) result=feval_r(f,3,10); 然后调用main时将'foo'传入即可
个人分类: 科研笔记|15554 次阅读|0 个评论
[转载]推荐系统的循序进阶读物
热度 1 qianli8848 2012-6-2 09:01
最近推荐系统很火,转载一篇入门级别的,转载地址: 推荐系统的循序进阶读物 导师推荐的 为了方便大家从理论到实践,从入门到精通,循序渐进系统地理解掌握推荐系统及相关知识。特做了个读物清单。大家可以按此表阅读,也欢迎提出意见和指出未标明的经典文献以丰富各学科需求(为避免初学者疲于奔命,每个方向只推荐几篇经典文献)。 1. 中文综述(了解概念-入门篇) a) 个性化推荐系统的研究进展 b) 个性化推荐系统评价方法综述 2. 英文综述(了解概念-进阶篇) a) 2004ACMTois-Evaluating collaborative filtering recommender systems b) 2004ACMTois -Introduction to Recommender Systems - Algorithms and evaluation c) 2005IEEEtkde Toward the next generation of recommender systems - A survey of the state-of-the-art and possible extensions 3. 动手能力(实践算法-入门篇) a) 2004ACMtois Item-based top-N recommendation algorithms.pdf (协同过滤) b) 2007PRE Bipartite network projection and personal recommendation.pdf (网络结构) 4. 动手能力(实践算法-进阶篇) a) 2010PNAS-Solving the apparent diversity-accuracy dilemma of recommender systems.pdf (物质扩散和热传导) b) 2009NJP Accurate and diverse recommendations via eliminating redundant correlations.pdf (多步物质扩散) c) 2008EPL Effect of initial configuration on network-based Recommendation.pdf (初始资源分配问题) 5. 推荐系统扩展应用(进阶篇) a) 2009EPJB Predicting missing links via local information.pdf (相似性度量方法) b) 2010theis-Evaluating Collaborative Filtering over time.pdf (基于时间效应的博士论文) c) 2009PA Personalized recommendation via integrated diffusion on user-item-tag tripartite graphs.pdf (基于标签的三部分图方法) d) 2004LNCS Trust-aware collaborative filtering for recommender systems.pdf (基于信任机制) e) 1997CA-Fab_content-based, collaborative recommendation.pdf (基于文本信息) 6. 推荐结果的解释(进阶篇) a) 2000CSCW-Explaining Collaborative Filtering Recommendations.pdf b) 2011PRE-Information filtering via biased heat conduction.pdf c) 2011PRE- Information filtering via preferential diffusion.pdf d) 2010EPL Link Prediction in weighted networks - The role of weak ties e) 2010EPL-Solving the cold-start problem in recommender systems with social tags.pdf 7. 推荐系统综合篇(专著、大型综述、博士论文) a) 2005Ziegler-thesis-Towards Decentralized Recommender Systems.pdf 2010Recommender Systems Handbook.pdf
个人分类: 科研笔记|2506 次阅读|2 个评论
计算机视觉模式识别用到的几本优化的书籍
热度 4 qianli8848 2012-6-1 09:00
1.《Convex Optimization》这本是是斯坦福的 Stephen P. Boyd教授写的,非常权威,书的主页: http://www.stanford.edu/~boyd/cvxbook/ 2.《Nonlinear Programming: 2nd Edition》by Dimitri P. Bertsekas 3.《Numerical Optimization》by Nocedal and Wright 这几本应该是非常经典的书籍。
个人分类: 科研笔记|4456 次阅读|7 个评论
[CODE]两个Multi-task learning(多任务学习)的代码
热度 1 qianli8848 2012-5-31 09:12
在多任务学习中,当这些任务是相关的,联合的任务学习应该比单独学习每个任务的效果好,特别当每个任务的数据相当少的时候,在这种情况下,独自学习是很不成功的。 Convex Multi-task Feature Learning 是一篇比较经典的文章,代码点击 这里 可以下载。 还有一篇是Multi-Task Feature Learning Via Efficient l2-1 Norm Minimization, 点击 这里 可以下载。这篇文章的最后一位作者就是JiePing Ye, 是LDA的大牛,2D LDA和GLDA就是他提出来的,而且他的主页上面公布了不少的源代码,有兴趣的可以看一看~
个人分类: CODE|7563 次阅读|1 个评论
多任务学习方法
qianli8848 2012-5-30 09:05
条件:有n个任务t=1,2,...,n,每个任务给予m个样本:(xt1,yt1),...,(xtm,ytm)。 目的:得出一个X到Y的函数ft,t=1,2,...,n。 当这些任务是相关的,联合的任务学习应该比单独学习每个任务的效果好,特别当每个任务的数据相当少的时候,在这种情况下, 独自学习是很不成功的。 在这个过程中主要用到了传递的功能:1)通过n个任务学习得到的好的概括结果能够传递到一个新的任务上,2)通过新任务t‘的一 些数据,{(xt'1,yt'1),....,xt'l,yt'l},学习函数ft',3)从n个任务中学习到的共同结构或者共同特征确实能够“传递”到新任务中来。 4)传递是人类智能的一个很重要的特征。
个人分类: 科研笔记|7407 次阅读|0 个评论
[CODE]快速边缘检测及代码
qianli8848 2012-5-29 08:55
[CODE]快速边缘检测及代码
2011年CVPR,MIT的 Jason Chang 发表了一篇文章:Efficient MCMC Sampling with Implicit Shape Representations 主要用于边缘检测。速度是普通方法的50,000倍(In contrastto previous methods, BFPS easily and efficiently handlestopological changes, large perturbations, and multipleregions, while exhibiting a 50,000 times speed up.) 代码可以到作者主页下载。
个人分类: CODE|4394 次阅读|0 个评论
[转载]SVM入门(十)将SVM用于多类分类
qianli8848 2012-5-27 10:09
[转载]SVM入门(十)将SVM用于多类分类
转载地址: SVM入门(十)将SVM用于多类分类 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器,即它只回答属于正类还是负类的问题。而现实中要解决的问题,往往是多类的问题(少部分例外,例如垃圾邮件过滤,就只需要确定“是”还是“不是”垃圾邮件),比如文本分类,比如数字识别。如何由两类分类器得到多类分类器,就是一个值得研究的问题。 还以文本分类为例,现成的方法有很多,其中一种一劳永逸的方法,就是真的一次性考虑所有样本,并求解一个多目标函数的优化问题,一次性得到多个分类面,就像下图这样: 多个超平面把空间划分为多个区域,每个区域对应一个类别,给一篇文章,看它落在哪个区域就知道了它的分类。 看起来很美对不对?只可惜这种算法还基本停留在纸面上,因为一次性求解的方法计算量实在太大,大到无法实用的地步。 稍稍退一步,我们就会想到所谓“一类对其余”的方法,就是每次仍然解一个两类分类的问题。比如我们有5个类别,第一次就把类别1的样本定为正样本,其余2,3,4,5的样本合起来定为负样本,这样得到一个两类分类器,它能够指出一篇文章是还是不是第1类的;第二次我们把类别2 的样本定为正样本,把1,3,4,5的样本合起来定为负样本,得到一个分类器,如此下去,我们可以得到5个这样的两类分类器(总是和类别的数目一致)。到了有文章需要分类的时候,我们就拿着这篇文章挨个分类器的问:是属于你的么?是属于你的么?哪个分类器点头说是了,文章的类别就确定了。这种方法的好处是每个优化问题的规模比较小,而且分类的时候速度很快(只需要调用5个分类器就知道了结果)。但有时也会出现两种很尴尬的情况,例如拿一篇文章问了一圈,每一个分类器都说它是属于它那一类的,或者每一个分类器都说它不是它那一类的,前者叫分类重叠现象,后者叫不可分类现象。分类重叠倒还好办,随便选一个结果都不至于太离谱,或者看看这篇文章到各个超平面的距离,哪个远就判给哪个。不可分类现象就着实难办了,只能把它分给第6个类别了……更要命的是,本来各个类别的样本数目是差不多的,但“其余”的那一类样本数总是要数倍于正类(因为它是除正类以外其他类别的样本之和嘛),这就人为的造成了上一节所说的“数据集偏斜”问题。 因此我们还得再退一步,还是解两类分类问题,还是每次选一个类的样本作正类样本,而负类样本则变成只选一个类(称为“一对一单挑”的方法,哦,不对,没有单挑,就是“一对一”的方法,呵呵),这就避免了偏斜。因此过程就是算出这样一些分类器,第一个只回答“是第1类还是第2类”,第二个只回答“是第1类还是第3类”,第三个只回答“是第1类还是第4类”,如此下去,你也可以马上得出,这样的分类器应该有5 X 4/2=10个(通式是,如果有k个类别,则总的两类分类器数目为k(k-1)/2)。虽然分类器的数目多了,但是在训练阶段(也就是算出这些分类器的分类平面时)所用的总时间却比“一类对其余”方法少很多,在真正用来分类的时候,把一篇文章扔给所有分类器,第一个分类器会投票说它是“1”或者“2”,第二个会说它是“1”或者“3”,让每一个都投上自己的一票,最后统计票数,如果类别“1”得票最多,就判这篇文章属于第1类。这种方法显然也会有分类重叠的现象,但不会有不可分类现象,因为总不可能所有类别的票数都是0。看起来够好么?其实不然,想想分类一篇文章,我们调用了多少个分类器?10个,这还是类别数为5的时候,类别数如果是1000,要调用的分类器数目会上升至约500,000个(类别数的平方量级)。这如何是好? 看来我们必须再退一步,在分类的时候下功夫,我们还是像一对一方法那样来训练,只是在对一篇文章进行分类之前,我们先按照下面图的样子来组织分类器(如你所见,这是一个有向无环图,因此这种方法也叫做DAG SVM) 这样在分类时,我们就可以先问分类器“1对5”(意思是它能够回答“是第1类还是第5类”),如果它回答5,我们就往左走,再问“2对5”这个分类器,如果它还说是“5”,我们就继续往左走,这样一直问下去,就可以得到分类结果。好处在哪?我们其实只调用了4个分类器(如果类别数是k,则只调用k-1个),分类速度飞快,且没有分类重叠和不可分类现象!缺点在哪?假如最一开始的分类器回答错误(明明是类别1的文章,它说成了5),那么后面的分类器是无论如何也无法纠正它的错误的(因为后面的分类器压根没有出现“1”这个类别标签),其实对下面每一层的分类器都存在这种错误向下累积的现象。。 不过不要被DAG方法的错误累积吓倒,错误累积在一对其余和一对一方法中也都存在,DAG方法好于它们的地方就在于,累积的上限,不管是大是小,总是有定论的,有理论证明。而一对其余和一对一方法中,尽管每一个两类分类器的泛化误差限是知道的,但是合起来做多类分类的时候,误差上界是多少,没人知道,这意味着准确率低到0也是有可能的,这多让人郁闷。 而且现在DAG方法根节点的选取(也就是如何选第一个参与分类的分类器),也有一些方法可以改善整体效果,我们总希望根节点少犯错误为好,因此参与第一次分类的两个类别,最好是差别特别特别大,大到以至于不太可能把他们分错;或者我们就总取在两类分类中正确率最高的那个分类器作根节点,或者我们让两类分类器在分类的时候,不光输出类别的标签,还输出一个类似“置信度”的东东,当它对自己的结果不太自信的时候,我们就不光按照它的输出走,把它旁边的那条路也走一走,等等。 大Tips :SVM 的计算复杂度 使用SVM进行分类的时候,实际上是训练和分类两个完全不同的过程,因而讨论复杂度就不能一概而论,我们这里所说的主要是训练阶段的复杂度,即解那个二次规划问题的复杂度。对这个问题的解,基本上要划分为两大块,解析解和数值解。 解析解就是理论上的解,它的形式是表达式,因此它是精确的,一个问题只要有解(无解的问题还跟着掺和什么呀,哈哈),那它的解析解是一定存在的。当然存在是一回事,能够解出来,或者可以在可以承受的时间范围内解出来,就是另一回事了。对SVM来说,求得解析解的时间复杂度最坏可以达到O(N sv 3 ),其中N sv 是支持向量的个数,而虽然没有固定的比例,但支持向量的个数多少也和训练集的大小有关。 数值解就是可以使用的解,是一个一个的数,往往都是近似解。求数值解的过程非常像穷举法,从一个数开始,试一试它当解效果怎样,不满足一定条件(叫做停机条件,就是满足这个以后就认为解足够精确了,不需要继续算下去了)就试下一个,当然下一个数不是乱选的,也有一定章法可循。有的算法,每次只尝试一个数,有的就尝试多个,而且找下一个数字(或下一组数)的方法也各不相同,停机条件也各不相同,最终得到的解精度也各不相同,可见对求数值解的复杂度的讨论不能脱开具体的算法。 一个具体的算法,Bunch-Kaufman训练算法,典型的时间复杂度在O(N sv 3 +LN sv 2 +dLN sv )和O(dL 2 )之间,其中N sv 是支持向量的个数,L是训练集样本的个数,d是每个样本的维数(原始的维数,没有经过向高维空间映射之前的维数)。复杂度会有变化,是因为它不光跟输入问题的规模有关(不光和样本的数量,维数有关),也和问题最终的解有关(即支持向量有关),如果支持向量比较少,过程会快很多,如果支持向量很多,接近于样本的数量,就会产生O(dL 2 )这个十分糟糕的结果(给10,000个样本,每个样本1000维,基本就不用算了,算不出来,呵呵,而这种输入规模对文本分类来说太正常了)。 这样再回头看就会明白为什么一对一方法尽管要训练的两类分类器数量多,但总时间实际上比一对其余方法要少了,因为一对其余方法每次训练都考虑了所有样本(只是每次把不同的部分划分为正类或者负类而已 ) ,自然慢上很多。
个人分类: 科研笔记|2897 次阅读|0 个评论
[转载]SVM入门(九)松弛变量(续)
qianli8848 2012-5-26 19:05
[转载]SVM入门(九)松弛变量(续)
接下来要说的东西其实不是松弛变量本身,但由于是为了使用松弛变量才引入的,因此放在这里也算合适,那就是惩罚因子C。回头看一眼引入了松弛变量以后的优化问题: 注意其中C的位置,也可以回想一下C所起的作用(表征你有多么重视离群点,C越大越重视,越不想丢掉它们)。这个式子是以前做SVM的人写的,大家也就这么用,但没有任何规定说必须对所有的松弛变量都使用同一个惩罚因子,我们完全可以给每一个离群点都使用不同的C,这时就意味着你对每个样本的重视程度都不一样,有些样本丢了也就丢了,错了也就错了,这些就给一个比较小的C;而有些样本很重要,决不能分类错误(比如中央下达的文件啥的,笑),就给一个很大的C。 当然实际使用的时候并没有这么极端,但一种很常用的变形可以用来解决分类问题中样本的“偏斜”问题。 先来说说样本的偏斜问题,也叫数据集偏斜(unbalanced),它指的是参与分类的两个类别(也可以指多个类别)样本数量差异很大。比如说正类有10,000个样本,而负类只给了100个,这会引起的问题显而易见,可以看看下面的图: 方形的点是负类。H,H 1 ,H 2 是根据给的样本算出来的分类面,由于负类的样本很少很少,所以有一些本来是负类的样本点没有提供,比如图中两个灰色的方形点,如果这两个点有提供的话,那算出来的分类面应该是H’,H 2 ’和H 1 ,他们显然和之前的结果有出入,实际上负类给的样本点越多,就越容易出现在灰色点附近的点,我们算出的结果也就越接近于真实的分类面。但现在由于偏斜的现象存在,使得数量多的正类可以把分类面向负类的方向“推”,因而影响了结果的准确性。 对付数据集偏斜问题的方法之一就是在惩罚因子上作文章,想必大家也猜到了,那就是给样本数量少的负类更大的惩罚因子,表示我们重视这部分样本(本来数量就少,再抛弃一些,那人家负类还活不活了),因此我们的目标函数中因松弛变量而损失的部分就变成了: 其中i=1…p都是正样本,j=p+1…p+q都是负样本。libSVM这个算法包在解决偏斜问题的时候用的就是这种方法。 那C + 和C - 怎么确定呢?它们的大小是试出来的(参数调优),但是他们的比例可以有些方法来确定。咱们先假定说C + 是5这么大,那确定C - 的一个很直观的方法就是使用两类样本数的比来算,对应到刚才举的例子,C - 就可以定为500这么大(因为10,000:100=100:1嘛)。 但是这样并不够好,回看刚才的图,你会发现正类之所以可以“欺负”负类,其实并不是因为负类样本少,真实的原因是负类的样本分布的不够广(没扩充到负类本应该有的区域)。说一个具体点的例子,现在想给政治类和体育类的文章做分类,政治类文章很多,而体育类只提供了几篇关于篮球的文章,这时分类会明显偏向于政治类,如果要给体育类文章增加样本,但增加的样本仍然全都是关于篮球的(也就是说,没有足球,排球,赛车,游泳等等),那结果会怎样呢?虽然体育类文章在数量上可以达到与政治类一样多,但过于集中了,结果仍会偏向于政治类!所以给C + 和C - 确定比例更好的方法应该是衡量他们分布的程度。比如可以算算他们在空间中占据了多大的体积,例如给负类找一个超球——就是高维空间里的球啦——它可以包含所有负类的样本,再给正类找一个,比比两个球的半径,就可以大致确定分布的情况。显然半径大的分布就比较广,就给小一点的惩罚因子。 但是这样还不够好,因为有的类别样本确实很集中,这不是提供的样本数量多少的问题,这是类别本身的特征(就是某些话题涉及的面很窄,例如计算机类的文章就明显不如文化类的文章那么“天马行空”),这个时候即便超球的半径差异很大,也不应该赋予两个类别不同的惩罚因子。 看到这里读者一定疯了,因为说来说去,这岂不成了一个解决不了的问题?然而事实如此,完全的方法是没有的,根据需要,选择实现简单又合用的就好(例如libSVM就直接使用样本数量的比)。
个人分类: 科研笔记|2140 次阅读|0 个评论
[转载]SVM入门(八)松弛变量
qianli8848 2012-5-25 10:15
[转载]SVM入门(八)松弛变量
转载地址: SVM入门(八)松弛变量 现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的。就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了)。现在想象我们有另一个训练集,只比原先这个训练集多了一篇文章,映射到高维空间以后(当然,也使用了相同的核函数),也就多了一个样本点,但是这个样本的位置是这样的: 就是图中黄色那个点,它是方形的,因而它是负类的一个样本,这单独的一个样本,使得原本线性可分的问题变成了线性不可分的。这样类似的问题(仅有少数点线性不可分)叫做“近似线性可分”的问题。 以我们人类的常识来判断,说有一万个点都符合某种规律(因而线性可分),有一个点不符合,那这一个点是否就代表了分类规则中我们没有考虑到的方面呢(因而规则应该为它而做出修改)? 其实我们会觉得,更有可能的是,这个样本点压根就是错误,是噪声,是提供训练集的同学人工分类时一打瞌睡错放进去的。所以我们会简单的忽略这个样本点,仍然使用原来的分类器,其效果丝毫不受影响。 但这种对噪声的容错性是人的思维带来的,我们的程序可没有。由于我们原本的优化问题的表达式中,确实要考虑所有的样本点(不能忽略某一个,因为程序它怎么知道该忽略哪一个呢?),在此基础上寻找正负类之间的最大几何间隔,而几何间隔本身代表的是距离,是非负的,像上面这种有噪声的情况会使得整个问题无解。这种解法其实也叫做“硬间隔”分类法,因为他硬性的要求所有样本点都满足和分类平面间的距离必须大于某个值。 因此由上面的例子中也可以看出,硬间隔的分类法其结果容易受少数点的控制,这是很危险的(尽管有句话说真理总是掌握在少数人手中,但那不过是那一小撮人聊以自慰的词句罢了,咱还是得民主)。 但解决方法也很明显,就是仿照人的思路,允许一些点到分类平面的距离不满足原先的要求。由于不同的训练集各点的间距尺度不太一样,因此用间隔(而不是几何间隔)来衡量有利于我们表达形式的简洁。我们原先对样本点的要求是: 意思是说离分类面最近的样本点函数间隔也要比1大。如果要引入容错性,就给1这个硬性的阈值加一个松弛变量,即允许 因为松弛变量是非负的,因此最终的结果是要求间隔可以比1小。但是当某些点出现这种间隔比1小的情况时(这些点也叫离群点),意味着我们放弃了对这些点的精确分类,而这对我们的分类器来说是种损失。但是放弃这些点也带来了好处,那就是使分类面不必向这些点的方向移动,因而可以得到更大的几何间隔(在低维空间看来,分类边界也更平滑)。显然我们必须权衡这种损失和好处。好处很明显,我们得到的分类间隔越大,好处就越多。回顾我们原始的硬间隔分类对应的优化问题: ||w|| 2 就是我们的目标函数(当然系数可有可无),希望它越小越好,因而损失就必然是一个能使之变大的量(能使它变小就不叫损失了,我们本来就希望目标函数值越小越好)。那如何来衡量损失,有两种常用的方式,有人喜欢用 而有人喜欢用 其中l都是样本的数目。两种方法没有大的区别。如果选择了第一种,得到的方法的就叫做二阶软间隔分类器,第二种就叫做一阶软间隔分类器。把损失加入到目标函数里的时候,就需要一个 惩罚因子 (cost,也就是libSVM的诸多参数中的C),原来的优化问题就变成了下面这样: 这个式子有这么几点要注意: 一是并非所有的样本点都有一个松弛变量与其对应。实际上只有“离群点”才有,或者也可以这么看,所有没离群的点松弛变量都等于0(对负类来说,离群点就是在前面图中,跑到H2右侧的那些负样本点,对正类来说,就是跑到H1左侧的那些正样本点)。 二是松弛变量的值实际上标示出了对应的点到底离群有多远,值越大,点就越远。 三是惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。 四是惩罚因子C 不 是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不够好,换一个C的值,再解一次优化问题,得到另一个分类器,再看看效果,如此就是一个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是定值,要记住。 五是尽管加了松弛变量这么一说,但这个优化问题仍然是一个优化问题(汗,这不废话么),解它的过程比起原始的硬间隔问题来说,没有任何更加特殊的地方。 从大的方面说优化问题解的过程,就是先试着确定一下w,也就是确定了前面图中的三条直线,这时看看间隔有多大,又有多少点离群,把目标函数的值算一算,再换一组三条直线(你可以看到,分类的直线位置如果移动了,有些原来离群的点会变得不再离群,而有的本来不离群的点会变成离群点),再把目标函数的值算一算,如此往复(迭代),直到最终找到目标函数最小时的w。 啰嗦了这么多,读者一定可以马上自己总结出来,松弛变量也就是个解决线性不可分问题的方法罢了,但是回想一下,核函数的引入不也是为了解决线性不可分的问题么?为什么要为了一个问题使用两种方法呢? 其实两者还有微妙的不同。一般的过程应该是这样,还以文本分类为例。在原始的低维空间中,样本相当的不可分,无论你怎么找分类平面,总会有大量的离群点,此时用核函数向高维空间映射一下,虽然结果仍然是不可分的,但比原始空间里的要更加接近线性可分的状态(就是达到了近似线性可分的状态),此时再用松弛变量处理那些少数“冥顽不化”的离群点,就简单有效得多啦。 本节中的(式1)也确实是支持向量机最最常用的形式。至此一个比较完整的支持向量机框架就有了,简单说来,支持向量机就是使用了核函数的软间隔线性分类法。 下一节会说说松弛变量剩下的一点点东西,顺便搞个读者调查,看看大家还想侃侃SVM的哪些方面。
个人分类: 科研笔记|2189 次阅读|0 个评论
[转载]SVM入门(七)为何需要核函数
qianli8848 2012-5-25 08:57
[转载]SVM入门(七)为何需要核函数
转载: SVM入门(七)为何需要核函数 生存?还是毁灭?——哈姆雷特 可分?还是不可分?——支持向量机 之前一直在讨论的线性分类器,器如其名(汗,这是什么说法啊),只能对线性可分的样本做处理。如果提供的样本线性不可分,结果很简单,线性分类器的求解程序会无限循环,永远也解不出来。这必然使得它的适用范围大大缩小,而它的很多优点我们实在不原意放弃,怎么办呢?是否有某种方法,让线性不可分的数据变得线性可分呢? 有!其思想说来也简单,来用一个二维平面中的分类问题作例子,你一看就会明白。事先声明,下面这个例子是网络早就有的,我一时找不到原作者的正确信息,在此借用,并加进了我自己的解说而已。 例子是下面这张图: 我们把横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类。试问能找到一个线性函数把两类正确分开么?不能,因为二维空间里的线性函数就是指直线,显然找不到符合条件的直线。 但我们可以找到一条曲线,例如下面这一条: 显然通过点在这条曲线的上方还是下方就可以判断点所属的类别(你在横轴上随便找一点,算算这一点的函数值,会发现负类的点函数值一定比0大,而正类的一定比0小)。这条曲线就是我们熟知的二次曲线,它的函数表达式可以写为: 问题只是它不是一个线性函数,但是,下面要注意看了,新建一个向量y和a: 这样g(x)就可以转化为f(y)=a,y,你可以把y和a分别回带一下,看看等不等于原来的g(x)。用内积的形式写你可能看不太清楚,实际上f(y)的形式就是: g(x)=f(y)=ay 在任意维度的空间中,这种形式的函数都是一个线性函数(只不过其中的a和y都是多维向量罢了),因为自变量y的次数不大于1。 看出妙在哪了么?原来在二维空间中一个线性不可分的问题,映射到四维空间后,变成了线性可分的!因此这也形成了我们最初想解决线性不可分问题的基本思路——向高维空间转化,使其变得线性可分。 而转化最关键的部分就在于找到x到y的映射方法。遗憾的是,如何找到这个映射,没有系统性的方法(也就是说,纯靠猜和凑)。具体到我们的文本分类问题,文本被表示为上千维的向量,即使维数已经如此之高,也常常是线性不可分的,还要向更高的空间转化。其中的难度可想而知。 小Tips :为什么说f(y)=ay是四维空间里的函数? 大家可能一时没看明白。回想一下我们二维空间里的函数定义 g(x)=ax+b 变量x是一维的,为什么说它是二维空间里的函数呢?因为还有一个变量我们没写出来,它的完整形式其实是 y=g(x)=ax+b 即 y=ax+b 看看,有几个变量?两个。那是几维空间的函数?(作者五岁的弟弟答:五维的。作者:……) 再看看 f(y)=ay 里面的y是三维的变量,那f(y)是几维空间里的函数?(作者五岁的弟弟答:还是五维的。作者:……) 用一个具体文本分类的例子来看看这种向高维空间映射从而分类的方法如何运作,想象一下,我们文本分类问题的原始空间是1000维的(即每个要被分类的文档被表示为一个1000维的向量),在这个维度上问题是线性不可分的。现在我们有一个2000维空间里的线性函数 f(x ’ )=w ’ ,x ’ +b 注意向量的右上角有个 ’哦。它能够将原问题变得可分。式中的 w ’ 和x ’ 都是2000维的向量,只不过w ’ 是定值,而x ’ 是变量(好吧,严格说来这个函数是2001维的,哈哈),现在我们的输入呢,是一个1000维的向量x,分类的过程是先把x变换为2000维的向量x ’ ,然后求这个变换后的向量x ’ 与向量w ’ 的内积,再把这个内积的值和b相加,就得到了结果,看结果大于阈值还是小于阈值就得到了分类结果。 你发现了什么?我们其实只关心那个高维空间里 内积 的值,那个值算出来了,分类结果就算出来了。而从理论上说, x ’ 是经由x变换来的,因此广义上可以把它叫做x的函数(有一个x,就确定了一个x ’ ,对吧,确定不出第二个),而w ’ 是常量,它是一个低维空间里的常量w经过变换得到的,所以给了一个w 和x的值,就有一个确定的f(x ’ )值与其对应。这让我们幻想,是否能有这样一种函数K(w,x),他接受低维空间的输入值,却能算出高维空间的内积值w ’ ,x ’ ? 如果有这样的函数,那么当给了一个低维空间的输入x以后, g(x)=K(w,x)+b f(x ’ )=w ’ ,x ’ +b 这两个函数的计算结果就完全一样,我们也就用不着费力找那个映射关系,直接拿低维的输入往g(x)里面代就可以了(再次提醒,这回的g(x)就不是线性函数啦,因为你不能保证K(w,x)这个表达式里的x次数不高于1哦)。 万幸的是,这样的K(w,x)确实存在(发现凡是我们人类能解决的问题,大都是巧得不能再巧,特殊得不能再特殊的问题,总是恰好有些能投机取巧的地方才能解决,由此感到人类的渺小),它被称作 核函数 (核,kernel),而且还不止一个,事实上,只要是满足了 Mercer条件 的函数,都可以作为核函数。 核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值 。回想我们上节说的求一个线性分类器,它的形式应该是: 现在这个就是高维空间里的线性函数(为了区别低维和高维空间里的函数和向量,我改了函数的名字,并且给w和x都加上了 ’),我们就可以用一个低维空间里的函数(再一次的,这个低维空间里的函数就不再是线性的啦)来代替, 又发现什么了?f(x’) 和g(x)里的α,y,b全都是一样一样的!这就是说,尽管给的问题是线性不可分的,但是我们就硬当它是线性问题来求解,只不过求解过程中,凡是要求内积的时候就用你选定的核函数来算。这样求出来的α再和你选定的核函数一组合,就得到分类器啦! 明白了以上这些,会自然的问接下来两个问题: 1. 既然有很多的核函数,针对具体问题该怎么选择? 2. 如果使用核函数向高维空间映射后,问题仍然是线性不可分的,那怎么办? 第一个问题现在就可以回答你:对核函数的选择,现在还缺乏指导原则!各种实验的观察结果(不光是文本分类)的确表明,某些问题用某些核函数效果很好,用另一些就很差,但是一般来讲,径向基核函数是不会出太大偏差的一种,首选。(我做文本分类系统的时候,使用径向基核函数,没有参数调优的情况下,绝大部分类别的准确和召回都在85%以上,可见。虽然libSVM的作者林智仁认为文本分类用线性核函数效果更佳,待考证) 对第二个问题的解决则引出了我们下一节的主题:松弛变量。
个人分类: 科研笔记|2211 次阅读|0 个评论
[转载]SVM入门(六)线性分类器的求解——问题的转化,直观角度
qianli8848 2012-5-24 08:54
[转载]SVM入门(六)线性分类器的求解——问题的转化,直观角度
让我再一次比较完整的重复一下我们要解决的问题:我们有属于两个类别的样本点( 并不限定这些点在二维空间中 )若干,如图, 圆形的样本点定为正样本(连带着,我们可以把正样本所属的类叫做正类),方形的点定为负例。 我们想求得这样一个线性函数( 在n维空间中的线性函 数):    g(x)=wx+b   使得所有属于正类的点x + 代入以后有 g(x + )≥ 1 ,而所有属于负类的点x - 代入后有g(x - )≤-1( 之所以总跟1比较,无论正一还是负一,都是因为我们 固定了间隔为1 ,注意间隔和几何间隔的区别 )。代入g(x)后的值如果在1和-1之间,我们就拒绝判断。    求这样的g(x)的过程就是求w(一个n维向量)和b(一个实数)两个参数的过程(但实际上只需要求w,求得以后找某些样本点代入就可以求得b)。因此 在求g(x)的时候,w才是变量 。   你肯定能看出来, 一旦求出了w(也就求出了b),那么中间的直线H就知道了(因为它就是wx+b=0嘛 ,哈哈), 那么H1和H2也就知道了(因为三者是平行的,而且相隔的距离还是||w||决定的)。 那么w是谁决定的?显然是你给的样本决定的, 一旦你在空间中给出了那些个样本点,三条直线的位置实际上就唯一确定了( 因为我们求的是最优的那三条,当然是唯一的 ), 我们解优化问题的过程也只不过是把这个确定了的东西算出来而已。    样本确定了w,用数学的语言描述,就是w可以表示为样本的某种组合:   w=α 1 x 1 +α 2 x 2 +…+α n x n 式子中的α i 是一个一个的数( 在严格的证明过程中,这些α被称为拉格朗日乘子 ),而x i 是样本点 ,因而是向量,n就是总样本点的个数。为了方便描述, 以下开始严格区别数字与向量的乘积和向量间的乘积 ,我会 用α 1 x 1 表示数字和向量的乘积,而用x 1 ,x 2 表示向量x 1 ,x 2 的内积(也叫点积,注意与向量叉积的区别)。 因此 g(x)的表达式严格的形式应该是:   g(x)=w,x+b   但是上面的式子还不够好,你回头看看图中正样本和负样本的位置,想像一下,我不动所有点的位置,而只是把其中一个正样本点定为负样本点(也就是把一个点的形状从圆形变为方形),结果怎么样?三条直线都必须移动(因为对这三条直线的要求是必须把方形和圆形的点正确分开)!这说明 w不仅跟样本点的位置有关,还跟样本的类别有关(也就是和样本的“标签”有关) 。 因此 用下面这个式子表示才算完整:    w=α 1 y 1 x 1 +α 2 y 2 x 2 +…+α n y n x n (式1)   其中的y i 就是第i个样本的标签,它等于1或者-1。 其实以上式子的那一堆拉格朗日乘子中,只有很少的一部分不等于0(不等于0才对w起决定作用), 这部分不等于0的拉格朗日乘子后面所乘的样本点,其实都落在H1和H2上,也正是这部分样本(而不需要全部样本)唯一的确定了分类函数 , 当然,更严格的说,这些样本的一部分就可以确定,因为例如确定一条直线,只需要两个点就可以,即便有三五个都落在上面,我们也不是全都需要。 这部分我们真正需要的样本点,就叫做支持(撑)向量!(名字还挺形象吧,他们“撑”起了分界线) 式子也可以用求和符号简写一下:   因此原来的g(x)表达式可以写为:    注意 式子中 x才是变量 ,也就是你要分类哪篇文档,就把该文档的向量表示代入到 x的位置 , 而所有的x i 统统都是已知的样本 。 还注意到式子中只有x i 和x是向量,因此一部分可以从内积符号中拿出来,得到g(x)的式子为:   发现了什么? w不见啦!从求w变成了求α。   但肯定有人会说,这并没有把原问题简化呀。嘿嘿, 其实简化了,只不过在你看不见的地方,以这样的形式描述问题以后, 我们的优化问题少了很大一部分不等式约束 (记得这是我们解不了极值问题的万恶之源)。 但是接下来先跳过线性分类器求解的部分,来看看 SVM在线性分类器上所做的重大改进——核函数。 转自 http://tech.ddvip.com/2009-03/1235962148110075_3.html
个人分类: 科研笔记|2040 次阅读|0 个评论
[转载]SVM入门(三、四、五)线性分类器的求解——问题的描述
qianli8848 2012-5-24 08:52
[转载]SVM入门(三、四、五)线性分类器的求解——问题的描述
转载地址: SVM入门(三)线性分类器的求解——问题的描述 上节说到我们有了一个线性分类函数,也有了判断解优劣的标准——即有了优化的目标,这个目标就是最大化几何间隔,但是看过一些关于SVM的论文的人一定记得什么优化的目标是要最小化||w||这样的说法,这是怎么回事呢?回头再看看我们对间隔和几何间隔的定义:   间隔:δ=y(wx+b)=|g(x)|   几何间隔:   可以看出δ=||w||δ几何。注意到几何间隔与||w||是成反比的,因此最大化几何间隔与最小化||w||完全是一回事。而我们常用的方法并不是固定||w||的大小而寻求最大几何间隔,而是固定间隔(例如固定为1),寻找最小的||w||。   而凡是求一个函数的最小值(或最大值)的问题都可以称为寻优问题(也叫作一个规划问题),又由于找最大值的问题总可以通过加一个负号变为找最小值的问题,因此我们下面讨论的时候都针对找最小值的过程来进行。一个寻优问题最重要的部分是目标函数,顾名思义,就是指寻优的目标。例如我们想寻找最小的||w||这件事,就可以用下面的式子表示:      但实际上对于这个目标,我们常常使用另一个完全等价的目标函数来代替,那就是:      不难看出当||w||2达到最小时,||w||也达到最小,反之亦然(前提当然是||w||描述的是向量的长度,因而是非负的)。之所以采用这种形式,是因为后面的求解过程会对目标函数作一系列变换,而式(1)的形式会使变换后的形式更为简洁(正如聪明的读者所料,添加的系数二分之一和平方,皆是为求导数所需)。   接下来我们自然会问的就是,这个式子是否就描述了我们的问题呢?(回想一下,我们的问题是有一堆点,可以被分成两类,我们要找出最好的分类面)   如果直接来解这个求最小值问题,很容易看出当||w||=0的时候就得到了目标函数的最小值。但是你也会发现,无论你给什么样的数据,都是这个解!反映在图中,就是H1与H2两条直线间的距离无限大,这个时候,所有的样本点(无论正样本还是负样本)都跑到了H1和H2中间,而我们原本的意图是,H1右侧的被分为正类,H2 左侧的被分为负类,位于两类中间的样本则拒绝分类(拒绝分类的另一种理解是分给哪一类都有道理,因而分给哪一类也都没有道理)。这下可好,所有样本点都进入了无法分类的灰色地带。 造成这种结果的原因是在描述问题的时候只考虑了目标,而没有加入约束条件,约束条件就是在求解过程中必须满足的条件,体现在我们的问题中就是样本点必须在H1或H2的某一侧(或者至少在H1和H2上),而不能跑到两者中间。我们前文提到过把间隔固定为1,这是指把所有样本点中间隔最小的那一点的间隔定为1(这也是集合的间隔的定义,有点绕嘴),也就意味着集合中的其他点间隔都不会小于1,按照间隔的定义,满足这些条件就相当于让下面的式子总是成立:   yi ≥1 (i=1,2,…,l) (l是总的样本数)   但我们常常习惯让式子的值和0比较,因而经常用变换过的形式:   yi -1≥0 (i=1,2,…,l) (l是总的样本数)   因此我们的两类分类问题也被我们转化成了它的数学形式,一个带约束的最小值的问题:      下一节我们从最一般的意义上看看一个求最小值的问题有何特征,以及如何来解。 从最一般的定义上说,一个求最小值的问题就是一个优化问题(也叫寻优问题,更文绉绉的叫法是规划——Programming),它同样由两部分组成,目标函数和约束条件,可以用下面的式子表示:    (式1)   约束条件用函数c来表示,就是constrain的意思啦。你可以看出一共有p+q个约束条件,其中p个是不等式约束,q个等式约束。   关于这个式子可以这样来理解:式中的x是自变量,但不限定它的维数必须为1(视乎你解决的问题空间维数,对我们的文本分类来说,那可是成千上万啊)。要求f(x)在哪一点上取得最小值(反倒不太关心这个最小值到底是多少,关键是哪一点),但不是在整个空间里找,而是在约束条件所划定的一个有限的空间里找,这个有限的空间就是优化理论里所说的可行域。注意可行域中的每一个点都要求满足所有p+q个条件,而不是满足其中一条或几条就可以(切记,要满足每个约束),同时可行域边界上的点有一个额外好的特性,它们可以使不等式约束取得等号!而边界内的点不行。   这对一般的优化问题可能提供不了什么帮助,但对我们的 SVM来说,边界上的点有其特殊意义,实际上是它们唯一的决定了分类超平面,这些点(想象他们就是以前的图中恰好落在H1和H2上的点,在文本分类问题中,每一个点代表一个文档,因而这个点本身也是一个向量)就被称为支持向量。   关于可行域还有个概念不得不提,那就是凸集,凸集是指有这么一个点的集合,其中任取两个点连一条直线,这条线上的点仍然在这个集合内部,因此说“凸”是很形象的(一个反例是,二维平面上,一个月牙形的区域就不是凸集,你随便就可以找到两个点违反了刚才的规定)。   回头再来看我们线性分类器问题的描述,可以看出更多的东西。    (式2)   在这个问题中,自变量就是w,而目标函数是w的二次函数,所有的约束条件都是w的线性函数(哎,千万不要把xi当成变量,它代表样本,是已知的),这种规划问题有个很有名气的称呼——二次规划(Quadratic Programming,QP),而且可以更进一步的说,由于它的可行域是一个凸集,因此它是一个凸二次规划。   一下子提了这么多术语,实在不是为了让大家以后能向别人炫耀学识的渊博,这其实是我们继续下去的一个重要前提,因为在动手求一个问题的解之前(好吧,我承认,是动计算机求……),我们必须先问自己:这个问题是不是有解?如果有解,是否能找到?   对于一般意义上的规划问题,两个问题的答案都是不一定,但凸二次规划让人喜欢的地方就在于,它有解(教科书里面为了严谨,常常加限定成分,说它有全局最优解,由于我们想找的本来就是全局最优的解,所以不加也罢),而且可以找到!(当然,依据你使用的算法不同,找到这个解的速度,行话叫收敛速度,会有所不同)   对比(式2)和(式1)还可以发现,我们的线性分类器问题只有不等式约束,因此形式上看似乎比一般意义上的规划问题要简单,但解起来却并非如此。   因为我们实际上并不知道该怎么解一个带约束的优化问题。如果你仔细回忆一下高等数学的知识,会记得我们可以轻松的解一个不带任何约束的优化问题(实际上就是当年背得烂熟的函数求极值嘛,求导再找0点呗,谁不会啊?笑),我们甚至还会解一个只带等式约束的优化问题,也是背得烂熟的,求条件极值,记得么,通过添加拉格朗日乘子,构造拉格朗日函数,来把这个问题转化为无约束的优化问题云云(如果你一时没想通,我提醒一下,构造出的拉格朗日函数就是转化之后的问题形式,它显然没有带任何条件)。   读者问:如果只带等式约束的问题可以转化为无约束的问题而得以求解,那么可不可以把带不等式约束的问题向只带等式约束的问题转化一下而得以求解呢?   聪明,可以,实际上我们也正是这么做的。下一节就来说说如何做这个转化,一旦转化完成,求解对任何学过高等数学的人来说,都是小菜一碟啦。
个人分类: 科研笔记|2315 次阅读|0 个评论
[转载]SVM入门(二)线性分类器Part 1
qianli8848 2012-5-23 09:23
[转载]SVM入门(二)线性分类器Part 1
SVM入门(二)线性分类器Part 1 线性分类器(一定意义上,也可以叫做感知机) 是最简单也很有效的分类器形式.在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念. 用一个二维空间里仅有两类样本的分类问题来举个小例子。如图所示 C 1 和C 2 是要区分的两个类别,在二维平面中它们的样本如上图所示。中间的直线就是一个分类函数,它可以将两类样本完全分开。一般的,如果一个线性函数能够将样本完全正确的分开,就称这些数据是线性可分的,否则称为非线性可分的。 什么叫线性函数呢?在一维空间里就是一个点,在二维空间里就是一条直线,三维空间里就是一个平面,可以如此想象下去,如果不关注空间的维数,这种线性函数还有一个统一的名称——超平面(Hyper Plane)! 实际上,一个线性函数是一个实值函数(即函数的值是连续的实数),而我们的分类问题(例如这里的二元分类问题——回答一个样本属于还是不属于一个类别的问题)需要离散的输出值,例如用1表示某个样本属于类别C 1 ,而用0表示不属于(不属于C 1 也就意味着属于C 2 ),这时候只需要简单的在实值函数的基础上附加一个阈值即可,通过分类函数执行时得到的值大于还是小于这个阈值来确定类别归属。 例如我们有一个线性函数 g(x)=wx+b 我们可以取阈值为0,这样当有一个样本x i 需要判别的时候,我们就看g(x i )的值。若g(x i )0,就判别为类别C 1 ,若g(x i )0,则判别为类别C 2 (等于的时候我们就拒绝判断,呵呵)。此时也等价于给函数g(x)附加一个符号函数sgn(),即f(x)=sgn 是我们真正的判别函数。 关于g(x)=wx+b这个表达式要注意三点:一,式中的x不是二维坐标系中的横轴,而是样本的向量表示,例如一个样本点的坐标是(3,8),则x T =(3,8) ,而不是x=3(一般说向量都是说列向量,因此以行向量形式来表示时,就加上转置)。二,这个形式并不局限于二维的情况,在n维空间中仍然可以使用这个表达式,只是式中的w成为了n维向量(在二维的这个例子中,w是二维向量,注意这里的w严格的说也应该是转置的形式,为了表示起来方便简洁,以下均不区别列向量和它的转置,聪明的读者一看便知);三,g(x)不是中间那条直线的表达式,中间那条直线的表达式是g(x)=0,即wx+b=0,我们也把这个函数叫做分类面。 实际上很容易看出来,中间那条分界线并不是唯一的,我们把它稍微旋转一下,只要不把两类数据分错,仍然可以达到上面说的效果,稍微平移一下,也可以。此时就牵涉到一个问题,对同一个问题存在多个分类函数的时候,哪一个函数更好呢?显然必须要先找一个指标来量化“好”的程度,通常使用的都是叫做“分类间隔”的指标。下一节我们就仔细说说分类间隔,也补一补相关的数学知识。
个人分类: 科研笔记|2308 次阅读|0 个评论
[转载]SVM入门(一)SVM的八股简介
qianli8848 2012-5-23 09:20
转自: SVM入门(一)SVM的八股简介 (一) SVM 的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中 。 支持向量机方法是建立在统计学习理论的 VC 维 理论和 结构风险最小 原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力 (或称泛化能力)。 以上是经常被有关 SVM 的学术文献引用的介绍,有点八股,我来逐一分解并解释一下。 Vapnik 是统计机器学习的大牛,这想必都不用说,他出版的《 Statistical Learning Theory 》是一本完整阐述统计机器学习思想的名著。在该书中详细的论证了统计机器学习之所以区别于传统机器学习的本质,就在于统计机器学习能够精确的给出学习效果,能够解答需要的样本数等等一系列问题。与统计机器学习的精密思维相比,传统的机器学习基本上属于摸着石头过河,用传统的机器学习方法构造分类系统完全成了一种技巧,一个人做的结果可能很好,另一个人差不多的方法做出来却很差,缺乏指导和原则。 所谓 VC 维是对函数类的一种度量,可以简单的理解为问题的复杂程度, VC 维越高,一个问题就越复杂。正是因为 SVM 关注的是 VC 维,后面我们可以看到, SVM 解决问题的时候,和样本的维数是无关的(甚至样本是上万维的都可以,这使得 SVM 很适合用来解决文本分类的问题,当然,有这样的能力也因为引入了核函数)。 结构风险最小听上去文绉绉,其实说的也无非是下面这回事。 机器学习本质上就是一种对问题真实模型的逼近(我们选择一个我们认为比较好的近似模型,这个近似模型就叫做一个假设),但毫无疑问,真实模型一定是不知道的(如果知道了,我们干吗还要机器学习?直接用真实模型解决问题不就可以了?对吧,哈哈)既然真实模型不知道,那么我们选择的假设与问题真实解之间究竟有多大差距,我们就没法得知。比如说我们认为宇宙诞生于 150 亿年前的一场大爆炸,这个假设能够描述很多我们观察到的现象,但它与真实的宇宙模型之间还相差多少?谁也说不清,因为我们压根就不知道真实的宇宙模型到底是什么。 这个与问题真实解之间的误差,就叫做风险(更严格的说,误差的累积叫做风险)。我们选择了一个假设之后(更直观点说,我们得到了一个分类器以后),真实误差无从得知,但我们可以用某些可以掌握的量来逼近它。最直观的想法就是使用分类器在样本数据上的分类的结果与真实结果(因为样本是已经标注过的数据,是准确的数据)之间的差值来表示。这个差值叫做经验风险 R emp (w) 。以前的机器学习方法都把经验风险最小化作为努力的目标,但后来发现很多分类函数能够在样本集上轻易达到 100% 的正确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或泛化能力差)。此时的情况便是选择了一个足够复杂的分类函数(它的 VC 维很高),能够精确的记住每一个样本,但对样本之外的数据一律分类错误。回头看看经验风险最小化原则我们就会发现,此原则适用的大前提是经验风险要确实能够逼近真实风险才行(行话叫一致),但实际上能逼近么?答案是不能,因为样本数相对于现实世界要分类的文本数来说简直九牛一毛,经验风险最小化原则只在这占很小比例的样本上做到没有误差,当然不能保证在更大比例的真实文本上也没有误差。 统计学习因此而引入了泛化误差界的概念,就是指真实风险应该由两部分内容刻画,一是经验风险,代表了分类器在给定样本上的误差;二是置信风险,代表了我们在多大程度上可以信任分类器在未知文本上分类的结果。很显然,第二部分是没有办法精确计算的,因此只能给出一个估计的区间,也使得整个误差只能计算上界,而无法计算准确的值(所以叫做泛化误差界,而不叫泛化误差)。 置信风险与两个量有关,一是样本数量,显然给定的样本数量越大,我们的学习结果越有可能正确,此时置信风险越小;二是分类函数的 VC 维,显然 VC 维越大,推广能力越差,置信风险会变大。 泛化误差界的公式为: R(w)≤R emp (w)+Ф(n/h) 公式中 R(w) 就是真实风险, R emp (w) 就是经验风险, Ф(n/h) 就是置信风险。统计学习的目标从经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。 SVM 正是这样一种努力最小化结构风险的算法。 SVM 其他的特点就比较容易理解了。 小样本,并不是说样本的绝对数量少(实际上,对任何算法来说,更多的样本几乎总是能带来更好的效果),而是说与问题的复杂度比起来, SVM 算法要求的样本数是相对比较少的。 非线性,是指 SVM 擅长应付样本数据线性不可分的情况,主要通过松弛变量(也有人叫惩罚变量)和核函数技术来实现,这一部分是 SVM 的精髓,以后会详细讨论。多说一句,关于文本分类这个问题究竟是不是线性可分的,尚没有定论,因此不能简单的认为它是线性可分的而作简化处理,在水落石出之前,只好先当它是线性不可分的(反正线性可分也不过是线性不可分的一种特例而已,我们向来不怕方法过于通用)。 高维模式识别是指样本维数很高,例如文本的向量表示,如果没有经过另一系列文章(《文本分类入门》)中提到过的降维处理,出现几万维的情况很正常,其他算法基本就没有能力应付了, SVM 却可以,主要是因为 SVM 产生的分类器很简洁,用到的样本信息很少(仅仅用到那些称之为“支持向量”的样本,此为后话),使得即使样本维数很高,也不会给存储和计算带来大麻烦(相对照而言, kNN 算法在分类时就要用到所有样本,样本数巨大,每个样本维数再一高,这日子就没法过了……)。 下一节开始正式讨论 SVM 。别嫌我说得太详细哦。
个人分类: 科研笔记|2484 次阅读|0 个评论
ACCV 2012 call for papers
热度 1 qianli8848 2012-5-22 08:32
ACCV 2012 call for papers
Important Dates Paper submission deadline July 1,2012 Review open August 30,2012 Rebuttal deadline September 6, 2012 Notification of acceptance September 25, 2012 Camera ready early registration October 10, 2012 Workshops/Tutorials/Demos/Special session November 5-6, 2012 Main conference November 7-9, 2012 Call For Papers Motion and Tracking / Stereo and Structure from Motion / Shape from X / Color and Texture / Segmentation and Grouping / Image-Based Modeling / Illumination and Reflectance Modeling / Sensors / Early and Biologically-Inspired Vision / Computational Photography and Video / Object Recognition / Object Detection and Categorization / Video Analysis and Event Recognition / Face and Gesture Analysis / Statistical Methods and Learning / Performance Evaluation / Medical Image Analysis / Optimization Methods / Applications of Computer Vision link: http://www.accv2012.org/
个人分类: 科研笔记|5450 次阅读|2 个评论
Mark一下CVPR 2012应该读的Oral
qianli8848 2012-5-21 08:52
Mark一下CVPR 2012应该读的Oral
大部分作者主页上已经挂出了今年cvpr的文章,该看看了,下面的文章是我打算近期看的,希望能坚持。 Discriminative Virtual Views for Cross-View Action Recognition Detecting activities of daily living in first-person camera views We are not Contortionist: Coupled Adaptive Learning for Head and Body Orientation Estimation in Surveillance Video Understanding Collective Crowd Behaviors:Learning Mixture Model of Dynamic Pedestrian-Agents Max-Margin Early Event Detectors Weakly Supervised Structured Output Learning for Semantic Segmentation Contextual Boost for Pedestrian Detection Accidental pinhole and pinspeck cameras: revealing the scene outside the picture Finding Animals: Semantic Segmentation using Regions and Parts A Unified Approach to Salient Object Detection via Low Rank Matrix Recovery Pedestrian detection at 100 frames per second Stream-based Joint Exploration-Exploitation Active Learning Beyond Spatial Pyramids: Receptive Field Learning for Pooled Image Features A-Optimal Non-negative Projection for Image Representation
个人分类: 科研笔记|7717 次阅读|0 个评论
2011年马尔奖得主Kristen Grauman讲的Visual Recognition
热度 1 qianli8848 2012-5-20 09:30
2011年马尔奖得主Kristen Grauman讲的Visual Recognition
Kristen Grauman是德州大学奥斯汀分校的教授,2011年marr prize的得主,还是个美女。 今年秋季她开设的Visual Recognition课程内容很丰富,而且很新,资源也很多,有兴趣的可以去看看。课程网址: http://www.cs.utexas.edu/~grauman/courses/fall2011/schedule.html Date Topics Papers and links Presenters Items due Aug 24 Course intro Topic preferences due via email by Monday August 29 I. Single-object recognition fundamentals: representation, matching, and classification Aug 31 Recognizing specific objects: Invariant local features, instance recognition, bag-of-words models img alt="sift" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/sift.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/sift.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 248px; " *Object Recognition from Local Scale-Invariant Features, Lowe, ICCV 1999. *Local Invariant Feature Detectors: A Survey, Tuytelaars and Mikolajczyk.Foundations and Trends in Computer Graphics and Vision, 2008. *Video Google: A Text Retrieval Approach to Object Matching in Videos, Sivic and Zisserman, ICCV 2003. For more background on feature extraction: Szeliski book : Sec 3.2 Linear filtering, 4.1 Points and patches, 4.2 Edges Scalable Recognition with a Vocabulary Tree, D. Nister and H. Stewenius, CVPR 2006. SURF: Speeded Up Robust Features, Bay, Ess, Tuytelaars, and Van Gool, CVIU 2008. Bundling Features for Large Scale Partial-Duplicate Web Image Search.Z. Wu, Q. Ke, M. Isard, and J. Sun.CVPR 2009. Robust Wide Baseline Stereo from Maximally Stable Extremal Regions, J. Matas, O. Chum, U. Martin, and T. Pajdla, BMVC 2002. City-Scale Location Recognition, G. Schindler, M. Brown, and R. Szeliski, CVPR 2007. Object Retrieval with Large Vocabularies and Fast Spatial Matching. J. Philbin, O. Chum, M. Isard, J. Sivic, and A. Zisserman, CVPR 2007. I Know What You Did Last Summer: Object-Level Auto-annotation of Holiday Snaps, S. Gammeter, L. Bossard, T.Quack, L. van Gool, ICCV 2009. Total Recall: Automatic Query Expansion with a Generative Feature Model for Object Retrieval.O. Chum et al. CVPR 2007. A Performance Evaluation of Local Descriptors. K. Mikolajczyk and C. Schmid. CVPR 2003 Oxford group interest point software Andrea Vedaldi's VLFeat code , including SIFT, MSER, hierarchical k-means. INRIA LEAR team's software , including interest points, shape features Semantic Robot Vision Challenge links CVPR 2009 Workshop on Visual Place Categorization Code for downloading Flickr images, by James Hays UW Community Photo Collections homepage FLANN - Fast Library for Approximate Nearest Neighbors.Marius Muja et al. Google Goggles Kooaba Sept 7 Recognition via classification and global models: Global appearance models for category and scene recognition, sliding window detection, detection as a binary decision. img alt="hog" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/hog.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/hog.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 193px; " *A Discriminatively Trained, Multiscale, Deformable Part Model, by P. Felzenszwalb,D.McAllester and D. Ramanan.CVPR 2008. *Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories, Lazebnik, Schmid, and Ponce, CVPR 2006. *Rapid Object Detection Using a Boosted Cascade of Simple Features, Viola and Jones, CVPR 2001. Histograms of Oriented Gradients for Human Detection, Dalal and Triggs, CVPR 2005. Modeling the Shape of the Scene: a Holistic Representation of the Spatial Envelope, Oliva and Torralba, IJCV 2001. Locality-Constrained Linear Coding for Image Classification.J. Wang, J. Yang, K. Yu,and T. HuangCVPR 2010. Visual Categorization with Bags of Keypoints, C. Dance, J. Willamowski, L. Fan, C. Bray, and G. Csurka, ECCV International Workshop on Statistical Learning in Computer Vision, 2004. Pedestrian Detection in Crowded Scenes, Leibe, Seemann, and Schiele, CVPR 2005. Pyramids of Histograms of Oriented Gradients (pHOG), Bosch and Zisserman. Eigenfaces for Recognition, Turk and Pentland, 1991. Sampling Strategies for Bag-of-Features Image Classification.E. Nowak, F. Jurie, and B. Triggs.ECCV 2006. Beyond Sliding Windows: Object Localization by Efficient Subwindow Search.C. Lampert, M. Blaschko, and T. Hofmann.CVPR 2008. A Trainable System for Object Detection, C. Papageorgiou and T. Poggio, IJCV 2000. Object Recognition with Features Inspired by Visual Cortex.T. Serre, L. Wolf and T. Poggio. CVPR 2005. LIBPMK feature extraction code, includes dense sampling LIBSVM library for support vector machines PASCAL VOC Visual Object Classes Challenge Sept 14 Regions and mid-level representations Segmentation, grouping, surface estimation img alt="regions" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/regions2.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/regions2.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 82px; " img alt="geocontext" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/geocontext.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/geocontext.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 108px; " *Constrained Parametric Min-Cuts for Automatic Object Segmentation.J.Carreira and C.Sminchisescu. CVPR 2010. *Geometric Context from a Single Image, by D. Hoiem, A. Efros, and M. Hebert, ICCV 2005. *Contour Detection and Hierarchical Image Segmentation.P. Arbelaez, M. Maire, C. Fowlkes, and J. Malik. PAMI 2011. From Contours to Regions: An Empirical Evaluation.P. Arbelaez, M. Maire, C. Fowlkes, and J. Malik.CVPR 2009. Boundary-Preserving Dense Local Regions.J. Kim and K. Grauman.CVPR 2011. Object Recognition as Ranking Holistic Figure-Ground Hypotheses.F.Li, J.Carreira, and C.Sminchisescu. CVPR 2010. Using Multiple Segmentations to Discover Objects and their Extent in Image Collections, B. C. Russell, A. A. Efros, J. Sivic, W. T. Freeman, and A. Zisserman.CVPR 2006. Combining Top-down and Bottom-up Segmentation.E. Borenstein, E. Sharon, and S. Ullman.CVPRworkshop 2004. Efficient Region Search for Object Detection.S. Vijayanarasimhan and K. Grauman. CVPR 2011. Extracting Subimages of an Unknown Category from a Set of Images,S. Todorovic and N. Ahuja, CVPR 2006. Learning Mid-level Features for Recognition.Y.-L. Boureau, F. Bach, Y. LeCun, and J. Ponce.CVPR, 2010. Class-Specific, Top-Down Segmentation, E. Borenstein and S. Ullman, ECCV 2002. Object Recognition by Integrating Multiple Image Segmentations, C. Pantofaru, C. Schmid, and M. Hebert, ECCV 2008 Image Parsing: Unifying Segmentation, Detection, and Recognition. Tu, Z., Chen, Z., Yuille, A.L., Zhu, S.C. ICCV 2003 GrabCut -Interactive Foreground Extraction using Iterated Graph Cuts , by C. Rother, V. Kolmogorov, A. Blake, SIGGRAPH 2004. Recognition Using Regions.C. Gu, J. Lim, P. Arbelaez, J. Malik, CVPR 2009. Robust Higher Order Potentials for Enforcing Label Consistency, P. Kohli, L. Ladicky, and P. Torr. CVPR 2008. Co-segmentation of Image Pairs by Histogram Matching --Incorporating a Global Constraint into MRFs , C. Rother, V. Kolmogorov, T. Minka, and A. Blake.CVPR 2006. Collect-Cut: Segmentation with Top-Down Cues Discovered in Multi-Object Images.Y. J. Lee and K. Grauman. CVPR 2010. An Efficient Algorithm for Co-segmentation, D. Hochbaum, V. Singh, ICCV 2009. Normalized Cuts and Image Segmentation, J. Shi and J. Malik.PAMI 2000. Greg Mori's superpixel code Berkeley Segmentation Dataset and code Pedro Felzenszwalb's graph-based segmentation code Michael Maire's segmentation code and paper Mean-shift: a Robust Approach Towards Feature Space Analysis David Blei's Topic modeling code Expts: Brian , Cho-Jui Implementation assignment due Friday Sept 16, 5 PM II. Beyond single objects: scenes and properties Sept 21 Context and scenes Multi-object scenes, inter-object relationships, understanding scenes' spatial layout, 3d context img alt="context" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/context.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/context.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 199px; " *Estimating Spatial Layout of Rooms using Volumetric Reasoning about Objects and Surfaces.D. Lee, A. Gupta, M. Hebert, and T. Kanade.NIPS 2010. *Multi-Class Segmentation with Relative Location Prior.S. Gould, J. Rodgers, D. Cohen, G. Elidan and D.Koller.IJCV 2008. *Using the Forest to See the Trees: Exploiting Context for Visual Object Detection and Localization.Torralba, Murphy, and Freeman.CACM 2009. Contextual Priming for Object Detection, A. Torralba.IJCV 2003. TextonBoost: Joint Appearance, Shape and Context Modeling for Multi-Class Object Recognition and Segmentation. J. Shotton, J. Winn, C. Rother, A. Criminisi.ECCV 2006. Recognition Using Visual Phrases.M. Sadeghi and A. Farhadi.CVPR 2011. Thinking Inside the Box: Using Appearance Models and Context Based on Room Geometry.V. Hedau, D. Hoiem, and D. Forsyth.ECCV 2010 Blocks World Revisited: Image Understanding Using Qualitative Geometry and Mechanics, A. Gupta, A. Efros, and M. Hebert.ECCV 2010. Object-Graphs for Context-Aware Category Discovery. Y. J. Lee and K. Grauman. CVPR 2010. Geometric Reasoning for Single Image Structure Recovery. D. Lee, M. Hebert, and T. Kanade.CVPR 2009. Putting Objects in Perspective, by D. Hoiem, A. Efros, and M. Hebert, CVPR 2006. Discriminative Models for Multi-Class Object Layout, C. Desai, D. Ramanan, C. Fowlkes. ICCV 2009. Closing the Loop in Scene Interpretation.D. Hoiem, A. Efros, and M. Hebert.CVPR 2008. Decomposing a Scene into Geometric and Semantically Consistent Regions, S. Gould, R. Fulton, and D. Koller, ICCV 2009. Learning Spatial Context: Using Stuff to Find Things, by G. Heitz and D. Koller, ECCV 2008. An Empirical Study of Context in Object Detection, S. Divvala, D. Hoiem, J. Hays, A. Efros, M. Hebert, CVPR 2009. Object Categorization using Co-Occurrence, Location and Appearance, by C. Galleguillos, A. Rabinovich and S. Belongie, CVPR 2008. Context Based Object Categorization: A Critical Survey . C. Galleguillos and S. Belongie. What, Where and Who? Classifying Events by Scene and Object Recognition, L.-J. Li and L. Fei-Fei, ICCV 2007. Towards Total Scene Understanding: Classification, Annotation and Segmentation in an Unsupervised Framework, L-J. Li, R. Socher, L. Fei-Fei, CVPR 2009. Labelme Database Scene Understanding Symposium Papers: Nishant , Jung Expts: Saurajit Sept 28 Saliency and attention Among all items in the scene, which deserve attention (first)? img alt="saliency" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/salient.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/salient.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 213px; " *A Model of Saliency-based Visual Attention for Rapid Scene Analysis.L. Itti, C. Koch, and E. Niebur.PAMI 1998 *Learning to Detect a Salient Object.T. Liu et al. CVPR 2007. *Figure-Ground Segmentation Improves Handled Object Recognition in Egocentric Video.X. Ren and C. Gu.CVPR 2010 *What Do We Perceive in a Glance of a Real-World Scene?L. Fei-Fei, A. Iyer, C. Koch, and P. Perona.Journal of Vision, 2007. Interesting Objects are Visually Salient.L. Elazary and L. Itti. Journal of Vision, 8(3):1–15, 2008. Accounting for the Relative Importance of Objects in Image Retrieval.S. J. Hwang and K. Grauman.BMVC 2010. Some Objects are More Equal Than Others: Measuring and Predicting Importance, M. Spain and P. Perona.ECCV 2008. What Makes an Image Memorable?P. Isola et al. CVPR 2011. The Discriminant Center-Surround Hypothesis for Bottom-Up Saliency. D. Gao, V.Mahadevan, and N. Vasconcelos. NIPS, 2007. Category-Independent Object Proposals.I. Endres and D. Hoiem.ECCV 2010. What is an Object?B. Alexe, T. Deselaers, and V. Ferrari.CVPR 2010. A Principled Approach to Detecting Surprising Events in Video.L. Itti and P. Baldi.CVPR 2005 Optimal Scanning for Faster Object Detection,N. Butko, J. Movellan.CVPR 2009. What Attributes Guide the Deployment of Visual Attention and How Do They Do It?J. Wolfe and T. Horowitz.Neuroscience, 5:495–501, 2004. Visual Correlates of Fixation Selection: Effects of Scale and Time. B. Tatler, R. Baddeley, and I. Gilchrist. Vision Research, 45:643, 2005. Objects Predict Fixations Better than Early Saliency.W. Einhauser, M. Spain, and P. Perona.Journal of Vision, 8(14):1–26, 2008. Reading Between the Lines: Object Localization Using Implicit Cues from Image Tags.S. J. Hwang and K. Grauman.CVPR 2010. Peripheral-Foveal Vision for Real-time Object Recognition and Tracking in Video.S. Gould, J. Arfvidsson, A. Kaehler, B. Sapp, M. Messner, G. Bradski, P. Baumstrack,S. Chung, A. Ng.IJCAI 2007. Peekaboom: A Game for Locating Objects in Images, by L. von Ahn, R. Liu and M. Blum, CHI 2006. Determining Patch Saliency Using Low-Level Context, D. Parikh, L. Zitnick, and T. Chen. ECCV 2008. Visual Recognition and Detection Under Bounded Computational Resources, S. Vijayanarasimhan and A. Kapoor.CVPR 2010. Key-Segments for Video Object Segmentation. Y. J. Lee, J. Kim, and K. Grauman. ICCV 2011 Contextual Guidance of Eye Movements and Attention in Real-World Scenes: The Role of Global Features on Object Search.A. Torralba, A. Oliva, M. Castelhano, J. Henderson. The Role of Top-down and Bottom-up Processes in Guiding Eye Movements during Visual Search, G. Zelinsky, W. Zhang, B. Yu, X. Chen, D. Samaras, NIPS 2005. Papers: Lu Xia Expts: Larry Oct 5 Attributes: Visual properties, learning from natural language descriptions, intermediate representations img alt="attributes" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/attributes.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/attributes.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 249px; " *Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer, C. Lampert, H. Nickisch, and S. Harmeling, CVPR 2009 .pdf" style="text-decoration: none; color: rgb(7, 67, 135); " target="_blank">pdf ] *Describing Objects by Their Attributes, A. Farhadi, I. Endres, D. Hoiem, and D. Forsyth, CVPR 2009. *Attribute and Simile Classifiers for Face Verification, N. Kumar, A. Berg, P. Belhumeur, S. Nayar.ICCV 2009. Relative Attributes.D. Parikh and K. Grauman.ICCV 2011. A Discriminative Latent Model of Object Classes and Attributes.Y. Wang and G. Mori.ECCV, 2010. Learning Visual Attributes, V. Ferrari and A. Zisserman, NIPS 2007. Learning Models for Object Recognition from Natural Language Descriptions, J. Wang, K. Markert, and M. Everingham, BMVC 2009 . FaceTracer: A Search Engine for Large Collections of Images with Faces.N. Kumar, P. Belhumeur, and S. Nayar.ECCV 2008. Attribute-Centric Recognition for Cross-Category Generalization.A. Farhadi, I. Endres, D. Hoiem.CVPR 2010. Automatic Attribute Discovery and Characterization from Noisy Web Data.T. Berg et al.ECCV 2010. Attributes-Based People Search in Surveillance Environments.D. Vaquero, R. Feris, D. Tran, L. Brown, A. Hampapur, and M. Turk.WACV 2009. Image Region Entropy: A Measure of "Visualness" of Web Images Associated with One Concept.K. Yanai and K. Barnard.ACM MM 2005. What Helps Where And Why? Semantic Relatedness for Knowledge Transfer. M. Rohrbach, M. Stark, G. Szarvas, I. Gurevych and B. Schiele. CVPR 2010. Recognizing Human Actions by Attributes.J. Liu, B. Kuipers, S. Savarese, CVPR 2011. Interactively Building a Discriminative Vocabulary of Nameable Attributes.D. Parikh and K. Grauman. CVPR 2011. Papers: Saurajit Expts: Qiming , Harsh Proposal abstracts due Friday Oct 7, 5 PM III. External input in recognition Oct 12 Language and description Discovering the correspondence between words and other language constructs and images, generating descriptions img alt="caption" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/caption.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/caption.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 203px; " *Baby Talk: Understanding and Generating Image Descriptions.Kulkarni et al.CVPR 2011. *Beyond Nouns: Exploiting Prepositions and Comparative Adjectives for Learning Visual Classifiers, A. Gupta and L. Davis, ECCV 2008. *Learning Sign Language by Watching TV (using weakly aligned subtitles), P. Buehler, M. Everingham, and A. Zisserman. CVPR 2009. Object Recognition as Machine Translation: Learning a Lexicon for a Fixed Image Vocabulary, P. Duygulu, K. Barnard, N. de Freitas, D. Forsyth. ECCV 2002. The Mathematics of Statistical Machine Translation: Parameter Estimation.P. Brown, S. Della Pietro, V. Della Pietra, R. Mercer.Association for Computational Linguistics, 1993. (background for Duygulu et al paper) How Many Words is a Picture Worth?Automatic Caption Generation for News Images.Y. Feng and M. Lapata.ACL 2010. Matching words and pictures. K. Barnard, P. Duygulu, N. de Freitas, D. Forsyth, D. Blei, and M. Jordan.JMLR, 3:1107–1135, 2003. Who's Doing What: Joint Modeling of Names and Verbs for Simultaneous Face and Pose Annotation.L. Jie, B. Caputo, and V. Ferrari.NIPS 2009. Watch, Listen Learn: Co-training on Captioned Images and Videos. S. Gupta, J. Kim, K. Grauman, and R. Mooney. ECML 2008. Systematic Evaluation of Machine Translation Methods for Image and Video Annotation, P. Virga, P. Duygulu, CIVR 2005. Localizing Objects and Actions in Videos Using Accompanying Text.Johns Hopkins University Summer Workshop Report.J. Neumann et al.2010. Subrip for subtitle extraction Reuters captioned photos Sonal Gupta's data for commentary+video Papers: Chris Expts: Jae , Naga Oct 19 Interactive learning and recognition Human-in-the-loop learning, active annotation collection, crowdsourcing img alt="questions" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/questions.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/questions.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 128px; " img alt="mturk" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/mturk.bmp" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/mturk.bmp" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 48px; " *Large-Scale Live Active Learning: Training Object Detectors with Crawled Data and Crowds.S. Vijayanarasimhan and K. Grauman.CVPR 2011. *Visual Recognition with Humans in the Loop.Branson S., Wah C., Babenko B., Schroff F., Welinder P., Perona P., Belongie S.ECCV 2010. *The Multidimensional Wisdom of Crowds.Welinder P., Branson S., Belongie S., Perona, P. NIPS 2010. *What’s It Going to Cost You? : Predicting Effort vs. Informativeness for Multi-Label Image Annotations. S. Vijayanarasimhan and K. Grauman. CVPR 2009 iCoseg: Interactive Co-segmentation with Intelligent Scribble Guidance, D.Batra, A. Kowdle , D. Parikh, J. Luo and T. Chen.CVPR 2010. Labeling Images with a Computer Game.L. von Ahn and L. Dabbish.CHI, 2004. Who's Vote Should Count More: Optimal Integration fo Labels from Labelers of Unknown Expertise.J. Whitehill et al.NIPS 2009. Utility Data Annotation with Amazon Mechanical Turk.A. Sorokin and D. Forsyth.Wkshp on Internet Vision, 2008. Far-Sighted Active Learning on a Budget for Image and Video Recognition. S. Vijayanarasimhan, P. Jain, and K. Grauman. CVPR 2010. Multiclass Recognition and Part Localization with Humans in the Loop.C. Wah et al. ICCV 2011. Multi-Level Active Prediction of Useful Image Annotations for Recognition. S. Vijayanarasimhan and K. Grauman. NIPS 2008. Active Learning from Crowds.Y. Yan, R. Rosales, G. Fung, J. Dy.ICML 2011. Proactive Learning: Cost-Sensitive Active Learning with Multiple Imperfect Oracles.P. Donmez and J. Carbonell.CIKM 2008. Inactive Learning?Difficulties Employing Active Learning in Practice.J. Attenberg and F. Provost.SIGKDD 2011. Annotator Rationales for Visual Recognition. J. Donahue and K. Grauman.ICCV 2011. Interactively Building a Discriminative Vocabulary of Nameable Attributes.D. Parikh and K. Grauman. CVPR 2011. Actively Selecting Annotations Among Objects and Attributes. A. Kovashka, S. Vijayanarasimhan, and K. Grauman. ICCV 2011 Supervised Learning from Multiple Experts: Whom to Trust When Everyone Lies a Bit.V. Raykar et al.ICML 2009. Multi-class Active Learning for Image Classification.A. J. Joshi, F. Porikli, and N. Papanikolopoulos.CVPR 2009. GrabCut -Interactive Foreground Extraction using Iterated Graph Cuts , by C. Rother, V. Kolmogorov, A. Blake, SIGGRAPH 2004. Active Learning for Piecewise Planar 3D Reconstruction.A. Kowdle , Y.-J. Chang, A. Gallagher and T. Chen.CVPR 2011 Amazon Mechanical Turk Using Mechanical Turk with LabelMe Papers: Brian , Harsh Expts: Yunsik Proposal extended outline due Friday Oct 21, 5 PM IV. Activity in images and video Oct 26 Pictures of people Finding people and their poses, automatic face tagging img alt="pose" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/pose.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/pose.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 189px; " *Poselets: Body Part Detectors Trained Using 3D Human Pose Annotations, L.Bourdev and J. Malik.ICCV 2009 *Understanding Images of Groups of People, A. Gallagher and T. Chen, CVPR 2009. *Real-Time Human Pose Recognition in Parts from a Single Depth Image.J. Shotton et al.CVPR 2011. *"'Who are you?' - Learning Person Specific Classifiers from Video, J. Sivic, M. Everingham, and A. Zisserman, CVPR 2009. Contextual Identity Recognition in Personal Photo Albums. D. Anguelov, K.-C. Lee, S. Burak, Gokturk, and B. Sumengen. C VPR 2007. Fast Pose Estimation with Parameter Sensitive Hashing.G. Shakhnarovich, P. Viola, T. Darrell, ICCV 2003. Finding and Tracking People From the Bottom Up.D. Ramanan, D. A. Forsyth.CVPR 2003. Where’s Waldo: Matching People in Images of Crowds.R. Garg, D. Ramanan, S. Seitz, N. Snavely. CVPR 2011. Autotagging Facebook: Social Network Context Improves Photo Annotation, byZ. Stone, T. Zickler, and T. Darrell.CVPR Internet Vision Workshop 2008. Efficient Propagation for Face Annotation in Family Albums. L. Zhang, Y. Hu, M. Li, and H. Zhang. MM 2004. Progressive Search Space Reduction for Human Pose Estimation.Ferrari, V., Marin-Jimenez, M. and Zisserman, A.CVPR 2008. Leveraging Archival Video for Building Face Datasets, by D. Ramanan, S. Baker, and S. Kakade.ICCV 2007. Names and Faces in the News, by T. Berg, A. Berg, J. Edwards, M. Maire, R. White, Y. Teh, E. Learned-Miller and D. Forsyth, CVPR 2004. Face Discovery with Social Context.Y. J. Lee and K. Grauman.BMVC 2011. “Hello! My name is... Buffy” – Automatic Naming of Characters in TV Video, by M. Everingham, J. Sivic and A. Zisserman, BMVC 2006. Modeling Mutual Context of Object and Human Pose in Human-Object Interaction Activities. Yao, B., Fei-Fei, L. CVPR 2010. A Face Annotation Framework with Partial Clustering and Interactive Labeling. R. X. Y. Tian,W. Liu, F.Wen, and X. Tang. CVPR 2007. From 3D Scene Geometry to Human Workspace.A. Gupta et al.CVPR 2011. Pictorial Structures Revisited: People Detection and Articulated Pose Estimation.M. Andriluka et al. CVPR 2009. Face detection code in OpenCV Gallagher's Person Dataset Face data from Buffy episode, from Oxford Visual Geometry Group CALVIN upper-body detector code Papers: Sunil , Larry Expts: Nishant , Jung Nov 2 Activity recognition Recognizing and localizing human actions in video img alt="actions" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/actions.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/actions.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 205px; " *Actions in Context, M. Marszalek, I. Laptev, C. Schmid.CVPR 2009. *A Hough Transform-Based Voting Framework for Action Recognition.A. Yao, J. Gall, L. Van Gool.CVPR 2010. *Beyond Actions: Discriminative Models for Contextual Group Activities.T. Lian, Y. Wang, W. Yang, and G. Mori.NIPS 2010. Objects in Action: An Approach for Combining Action Understanding and Object Perception.A. Gupta and L. Davis.CVPR, 2007. Learning Realistic Human Actions from Movies .I. Laptev, M. Marszałek, C. Schmid and B. Rozenfeld.CVPR 2008. Understanding Egocentric Activities.A. Fathi, A. Farhadi, J. Rehg.ICCV 2011. Exploiting Human Actions and Object Context for Recognition Tasks.D. Moore, I. Essa, and M. Hayes.ICCV 1999. A Scalable Approach to Activity Recognition Based on Object Use.J. Wu, A. Osuntogun, T. Choudhury, M. Philipose, and J. Rehg.ICCV 2007. Recognizing Actions at a Distance.A. Efros, G. Mori, J. Malik.ICCV 2003. Activity Recognition from First Person Sensing .E. Taralova, F. De la Torre, M. HebertCVPR 2009 Workshop on Egocentric Vision Action Recognition from a Distributed Representation of Pose and Appearance, S.Maji, L. Bourdev, J.Malik,CVPR 2011. Learning a Hierarchy of Discriminative Space-Time Neighborhood Features for Human Action Recognition. A. Kovashka and K. Grauman. CVPR 2010. Temporal Causality for the Analysis of Visual Events.K. Prabhakar, S. Oh, P. Wang, G. Abowd, and J. Rehg.CVPR 2010. Modeling Activity Global Temporal Dependencies using Time Delayed Probabilistic Graphical Model.Loy, Xiang Gong ICCV 2009. What's Going on?: Discovering Spatio-Temporal Dependencies in Dynamic Scenes.D. Kuettel et al.CVPR 2010. Learning Actions From the Web.N. Ikizler-Cinbis, R. Gokberk Cinbis, S. Sclaroff.ICCV 2009. Content-based Retrieval of Functional Objects in Video Using Scene Context.S. Oh, A. Hoogs, M. Turek, and R. Collins.ECCV 2010. Ivan Laptev's Space-Time Interest Points code Hollywood activity dataset UCF activity datasets PASCAL VOC action recognition taster challenge Greg Mori and Ivan Laptev's tutorial on action recognition at ECCV 2010 TRECVID video retrieval challenge UMich Collective Activity dataset Papers: Qiming , Yunsik Expts: Lu Xia V. Dealing with lots of data/categories Nov 9 Scaling with a large number of categories Sharing features between classes, transfer, taxonomy, learning from few examples, exploiting class relationships img alt="shared" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/shared.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/shared.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 139px; " *Sharing Visual Features for Multiclass and Multiview Object Detection, A. Torralba, K. Murphy, W. Freeman, PAMI 2007. *What Does Classifying More than 10,000 Image Categories Tell Us?J. Deng, A. Berg, K. Li and L. Fei-Fei.ECCV 2010. *Discriminative Learning of Relaxed Hierarchy for Large-scale Visual Recognition.T. Gao and Daphne Koller.ICCV 2011. Comparative Object Similarity for Improved Recognition with Few or Zero Examples.G. Wang, D. Forsyth, and D. Hoeim.CVPR 2010. Learning and Using Taxonomies for Fast Visual Categorization, G. Griffin and P. Perona, CVPR 2008. Cross-Generalization: Learning Novel Classes from a Single Example by Feature Replacement.CVPR 2005. 80 Million Tiny Images: A Large Dataset for Non-Parametric Object and Scene Recognition, by A. Torralba, R. Fergus, and W. Freeman.PAMI 2008. Constructing Category Hierarchies for Visual Recognition, M. Marszalek and C. Schmid.ECCV 2008. Learning Generative Visual Models from Few Training Examples: an Incremental Bayesian Approach Tested on 101 Object Categories. L. Fei-Fei, R. Fergus, and P. Perona. CVPR Workshop on Generative-Model Based Vision. 2004. Towards Scalable Representations of Object Categories: Learning a Hierarchy of Parts. S. Fidler and A. Leonardis. CVPR 2007 Exploiting Object Hierarchy: Combining Models from Different Category Levels, A. Zweig and D. Weinshall, ICCV 2007 Incremental Learning of Object Detectors Using a Visual Shape Alphabet.Opelt, Pinz, and Zisserman, CVPR 2006. Sequential Learning of Reusable Parts for Object Detection.S. Krempp, D. Geman, and Y. Amit.2002 ImageNet: A Large-Scale Hierarchical Image Database, J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li and L. Fei-Fei, CVPR 2009 Semantic Label Sharing for Learning with Many Categories.R. Fergus et al.ECCV 2010. Learning a Tree of Metrics with Disjoint Visual Features.S. J. Hwang, K. Grauman, F. Sha.NIPS 2011. SUN Scene dataset of 899 scene classes ImageNet dataset of 15K objects and ImageNet challenge Papers: Cho-Jui , Si Si Expts: Lu Pan Nov 16 Large-scale search and mining Scalable retrieval algorithms for massive databases, mining for themes img alt="hash" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/hash.png" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/hash.png" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 209px; " *VisualRank: Applying PageRank to Large-Scale Image Search.Y. Jing and S. Baluja.PAMI 2008. *Kernelized Locality Sensitive Hashing for Scalable Image Search, by B. Kulis and K. Grauman, ICCV 2009 *Video Mining with Frequent Itemset Configurations.T. Quack, V. Ferrari, and L. Van Gool.CIVR 2006. Learning Binary Projections for Large-Scale Image Search.K. Grauman and R. Fergus.Chapter (draft) to appear in Registration, Recognition, and Video Analysis, R. Cipolla, S. Battiato, and G. Farinella, Editors. World-scale Mining of Objects and Events from Community Photo Collections.T. Quack, B. Leibe, and L. Van Gool.CIVR 2008. Interest Seam Image.X. Zhang, G. Hua, L. Zhang, H. Shum.CVPR 2010. Detecting Objects in Large Image Collections and Videos by Efficient Subimage Retrieval, C. Lampert, ICCV 2009. Geometric Min-Hashing: Finding a (Thick) Needle in a Haystack, O. Chum, M. Perdoch, and J. Matas.CVPR 2009. FaceTracer: A Search Engine for Large Collections of Images with Faces.N. Kumar, P. Belhumeur, and S. Nayar.ECCV 2008. Efficiently Searching for Similar Images. K. Grauman. Communications of the ACM , 2009. Fast Image Search for Learned Metrics, P. Jain, B. Kulis, and K. Grauman, CVPR 2008. Small Codes and Large Image Databases for Recognition, A. Torralba, R. Fergus, and Y. Weiss, CVPR 2008. Object Retrieval with Large Vocabularies and Fast Spatial Matching. J. Philbin, O. Chum, M. Isard, J. Sivic, and A. Zisserman, CVPR 2007. LSH homepage Nearest Neighbor Methods in Learning and Vision, Shakhnarovich, Darrell, and Indyk, editors. Papers: Naga, Jae Expts: Si Si Nov 23 Summarization Video synopsis, discovering repeated objects, visualization img alt="synopsis" src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/synopsis.jpg" real_src="http://www.cs.utexas.edu/~grauman/courses/fall2011/ims/synopsis.jpg" title="今年马尔奖得主KristenGrauman讲的VisualRecognition" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; width: 300px; height: 191px; " *Webcam Synopsis: Peeking Around the World , by Y. Pritch, A. Rav-Acha, A. Gutman , and S. Peleg, ICCV 2007. * Using Multiple Segmentations to Discover Objects and their Extent in Image Collections, B. C. Russell, A. A. Efros, J. Sivic, W. T. Freeman, and A. Zisserman.CVPR 2006. * Summarizing Visual Data Using Bi-Directional Similarity.D. Simakov, Y. Caspi, E. Shechtmann, M. Irani.CVPR 2008. Fast Unsupervised Ego-Action Learning for First-Person Sports Video.K. Kitani, T. Okabe, Y. Sato, A. Sugimoto.CVPR 2011. Scene Summarization for Online Image Collections.I. Simon, N. Snavely, S. Seitz.ICCV 2007. VideoCut: Removing Irrelevant Frames by Discovering the Object of Interest.D. Liu, G. Hua, T. Chen.ECCV 2010. Video Epitomes. V. Cheung, B. J. Frey, and N. Jojic.CVPR 2005. Making a Long Video Short. A. Rav-Acha, Y. Pritch, and S. Peleg. CVPR 2006. Structural Epitome: A Way to Summarize One's Visual Experience.N. Jojic, A. Perina, V. Murino.NIPS 2010. Video Abstraction: A Systematic Review and Classification.B. Truong and S. Venkatesh.ACM 2007. Shape Discovery from Unlabeled Image Collections.Y. J. Lee and K. Grauman.CVPR 2009. Detecting and Sketching the Common.S. Bagon, O. Brostovski, M. Galun, M. Irani.CVPR 2010. Object-Graphs for Context-Aware Category Discovery. Y. J. Lee and K. Grauman. CVPR 2010. Unsupervised Object Discovery: A Comparison.T. Tuytelaars et al.IJCV 2009. Papers: Lu Pan Expts: Sunil, Chris Final paper drafts due Wed Nov 23 Nov 30 Final project presentations in class Final papers due Tues Dec 6, 5 PM
个人分类: 论文分析|10927 次阅读|1 个评论
背景建模(五)——其他方法
qianli8848 2012-5-19 09:01
背景建模(五)——其他方法
除了一些传统的背景建模的方法,为了发文章,还出现了其他比较好的文章。我列出几篇: Making Background Subtraction Robust to Sudden Illumination Chages (这篇文章有代码) Compressive Sensing for Background Subtraction Learning a sparse corner-based representation for time-varying background modeling Independent Component Analysis Based Background Subtraction for Indoor Surveillance 不过当我看到Independent Component Analysis Based Background Subtraction for Indoor Surveillance这篇文章的时候有一种眼前一亮的感觉。文章既简单又巧妙。发表在09年的TIP上。 这篇文章是用Independent Component Analysis(独立成分分析)做的,把前景和背景看成两个独立的信号,然后在观测图片分解。 (a)和(b)是两个观测图片,其中(a)为参考背景,(c)和(d)是分解后的前景和背景,(e)是二值化后的前景图片。 其实这篇文章的方法相当于一种自适应的背景差分法。
个人分类: 论文分析|9106 次阅读|0 个评论
背景建模(四)——以纹理为特征的方法
热度 1 qianli8848 2012-5-18 09:27
背景建模(四)——以纹理为特征的方法
前面两篇博文介绍了以像素值为特征的背景建模方法: 以像素值为特征的方法(2) 和 以像素值为特征的方法(1) 下面介绍一下以纹理为特征的方法,比较出名的就是用LBP和SILTP为特征做的。 以LBP为特征的文章:A texture-based method for modeling the background and detecting moving objects 这篇文章发表在06年TPAMI上面,还是奥鲁大学那帮人做的,他们已经把LBP用到极致了,LBP在计算机视觉的各个领域都得到了应用。 首先进行LBP的计算: 公式为: 特征表示完之后就是建立背景模型,为K个。模型的更新公式为: 而比较两个直方图的相似程度则用直方图交集(histogram intersaction). 文章实验做得比较充分,但是比较试验很少只跟混合高斯模型(GMM)进行比较了. 另一篇比较好的以纹理为特征的背景建模的方法是CVPR2010的文章,题目: Modeling Pixel Process with Scale Invariant Local Patterns for Background Subtraction in Complex Scenes 本文提出了一种新的纹理表示方法,scale invariant local ternary pattern(SILTP) 其次就是在背景建模更新的时候提出一种模式核密度估计的方法(pattern kernel density estimation) 文章的对比试验也很全,用三种方法在九段视频上进行了试验。
个人分类: 论文分析|11876 次阅读|1 个评论
背景建模(三)——以像素值为特征的方法(2)
qianli8848 2012-5-17 08:52
上一篇介绍混合高斯模型(GMM) http://blog.sina.com.cn/s/blog_631a4cc40100wxyz.html 不过还有几篇比较经典是在GMM上的改进: 1.An Improved Adaptive Background Mixture Model for RealtimeTracking with Shadow Detection 其实OpenCV实现的是这篇文章。他的创新点就是用EM初始化每个高斯模型的参数; 2.Effective Gaussian mixture learning for video background subtraction 这篇文章的创新点是对混合高斯模型参数更新的方式 3.Improved Adaptive Gaussian Mixture Model for Background Subtraction这篇文章的创新点是:把混合高斯模型数量K变成自适应的了,而不像以前是一个固定值(一般3-5个)。 如果你还想了解更多关于混合高斯的改进可以看一篇综述:Background Modeling using Mixture of Gaussians for Foreground Detection A Survey 读完这篇文章你会发现GMM挖了一个多大坑呀! 以像素值为特征的背景建模方法还有一类是codebook的方法,文章是Background Modeling and Subtraction by Codebook Construction,这篇文章是马里兰大学发表的,而马里兰大学最大的特点是不公开代码,每年灌水无数但是无论哪个课题组都不公开代码,我真是怀疑他们是商量好的了~~~ 之后还有一些文章是在这篇codebook上面的改进,是国立台湾科技大学 Jing-Ming Guo 做的,文章题目:1) Hierarchical Method for Foreground Detection Using Codebook Model,2)Cascaded Background Subtraction Using Block-Based and Pixel-Based Codebooks 3)Hierarchical Method for Foreground Detection Using Codebook Model这三篇文章是同一个写的,第一篇是期刊,第二和第三篇是ICPR2010和ICIP2010,但是这三篇 非常非常非常相似, 不过后两篇在作者主页已经找不到了,可以到google学术上去下载。 -------------------------------------------------------------------------------------- 下面介绍一下传统codebook的方法: http://hi.baidu.com/lin65505578/blog/item/a03ae693c1fa6096a877a437.html CodeBook算法的基本思想是得到每个像素的时间序列模型。这种模型能很好地处理时间起伏,缺点是需要消耗大量的内存。CodeBook算法为当前图像的每一个像素建立一个CodeBook(CB)结构,每个CodeBook结构又由多个CodeWord(CW)组成。CB和CW的形式如下: CB={CW1,CW2,…CWn,t} CW={lHigh,lLow,max,min,t_last,stale} 其中n为一个CB中所包含的CW的数目,当n太小时,退化为简单背景,当n较大时可以对复杂背景进行建模;t为CB更新的次数。CW是一个6元组,其中IHigh和ILow作为更新时的学习上下界,max和min记录当前像素的最大值和最小值。上次更新的时间t_last和陈旧时间stale(记录该CW多久未被访问)用来删除很少使用的CodeWord。 假设当前训练图像I中某一像素为I(x,y),该像素的CB的更新算法如下,另外记背景阈值的增长判定阈值为Bounds: (1) CB的访问次数加1; (2) 遍历CB中的每个CW,如果存在一个CW中的IHigh,ILow满足ILow≤I(x,y)≤IHigh,则转(4); (3) 创建一个新的码字CWnew加入到CB中, CWnew的max与min都赋值为I(x,y),IHigh - I(x,y) + Bounds,ILow - I(x,y) – Bounds,并且转(6); (4) 更新该码字的t_last,若当前像素值I(x,y)大于该码字的max,则max - I(x,y),若I(x,y)小于该码字的min,则min - I(x,y); (5) 更新该码字的学习上下界,以增加背景模型对于复杂背景的适应能力,具体做法是:若IHigh I(x,y) + Bounds,则IHigh 增长1,若ILow I(x,y) – Bounds,则ILow减少1; (6) 更新CB中每个CW的stale。 使用已建立好的CB进行运动目标检测的方法很简单,记判断前景的范围上下界为minMod和maxMod,对于当前待检测图像上的某一像素I(x,y),遍历它对应像素背景模型CB中的每一个码字CW,若存在一个CW,使得I(x,y) max + maxMod并且I(x,y) min – minMod,则I(x,y)被判断为背景,否则被判断为前景。 在实际使用CodeBook进行运动检测时,除了要隔一定的时间对CB进行更新的同时,需要对CB进行一个时间滤波,目的是去除很少被访问到的CW,其方法是访问每个CW的stale,若stale大于一个阈值(通常设置为总更新次数的一半),移除该CW。 综上所述,CodeBook算法检测运动目标的流程如下: (1) 选择一帧到多帧使用更新算法建立CodeBook背景模型; (2) 按上面所述方法检测前景(运动目标); (3) 间隔一定时间使用更新算法更新CodeBook模型,并对CodeBook进行时间滤波; (4) 若检测继续,转(2),否则结束。
个人分类: 论文分析|12500 次阅读|0 个评论
背景建模(二)——以像素值为特征的方法(1)
qianli8848 2012-5-16 09:53
前面通过一篇CVPR2011年对背景建模方法评估的文章算是引出一个关于背景建模概述,博客地址: http://blog.sina.com.cn/s/blog_631a4cc40100wwg7.html 后面几篇打算详细介绍一些背景建模近年来的方法,首先介绍一些以像素值为特征的方法。 混合高斯模型(GMM)当属这种方法中经典中的经典,文章题目:Adaptive Background Mixture Models for Real-Time Tracking 发表在CVPR1999年,并在 2009年的CVPR上获得Longuet-Higgins Prize,以google学术上显示他引率:3196次。 混合高斯模型使用K(基本为3到5个) 个高斯模型来表征图像中各个像素点的特征,在新一帧图像获得后更新混合高斯模型,用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点, 否则为前景点。每个高斯模型,他主要是有方差和均值两个参数决定,对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性。由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立背景图像并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。具体更新公式如下: μt= (1 - ρ)μt- 1 +ρxt(1) σ2t = (1 - ρ)σ2t- 1 +ρ( xt -μt ) T ( xt -μt ) (2) ρ =αη( xt | μκ,σκ )(3) | xt -μt - 1 | ≤ 2. 5σt- 1(4) w k , t = (1 - α) w k , t - 1 +αMk , t(5) 式中ρ为学习率,即反映当前图像融入背景的速率。如果想深入了解可以看原文,或者opencv的源代码。 OpenCV当中也集成这个方法。原文地址 学习opencv(1):高斯背景建模-1 高斯背景建模源代码在“OpenCV\cvaux\src\cvbgfg_gaussmix.cpp”中。下面是我添加注释的代码。 CV_IMPL CvBGStatModel* cvCreateGaussianBGModel( IplImage* first_frame, CvGaussBGStatModelParams* parameters ) { CvGaussBGModel* bg_model = 0;// 高斯背景状态模型变量 CV_FUNCNAME( "cvCreateGaussianBGModel" ); __BEGIN__; double var_init; // CvGaussBGStatModelParamsparams; // 高斯背景状态模型参数变量 int i, j, k, n, m, p; //初始化参数,如果参数为空,则进行初始化赋值 if( parameters == NULL ) { params.win_size = CV_BGFG_MOG_WINDOW_SIZE; //初始化阶段的帧数 params.bg_threshold = CV_BGFG_MOG_BACKGROUND_THRESHOLD;//高斯背景阈值 params.std_threshold = CV_BGFG_MOG_STD_THRESHOLD;// params.weight_init = CV_BGFG_MOG_WEIGHT_INIT; // 初始权重 params.variance_init = CV_BGFG_MOG_SIGMA_INIT*CV_BGFG_MOG_SIGMA_INIT; // 初始方差 params.minArea = CV_BGFG_MOG_MINAREA; //最小面积 params.n_gauss = CV_BGFG_MOG_NGAUSSIANS;// 高斯模型个数 } else { params = *parameters; //如果parameters非空,则将其参数赋给 params } if( !CV_IS_IMAGE(first_frame) )//如果第一帧不是图像,报错 CV_ERROR( CV_StsBadArg, "Invalid or NULL first_frame parameter" ); CV_CALL( bg_model = (CvGaussBGModel*)cvAlloc( sizeof(*bg_model) )); //为bg_model申请内存 memset( bg_model, 0, sizeof(*bg_model) );// 初始化刚申请的内存 bg_model-type = CV_BG_MODEL_MOG; // 背景模型类型是: CV_BG_MODEL_MOG bg_model-release = (CvReleaseBGStatModel)icvReleaseGaussianBGModel;// 释放调用icvReleaseGaussianBGModel bg_model-update = (CvUpdateBGStatModel)icvUpdateGaussianBGModel;// 更新调用icvUpdateGaussianBGModel bg_model-params = params; //参数为 params //prepare storages CV_CALL( bg_model-g_point = (CvGaussBGPoint*)cvAlloc(sizeof(CvGaussBGPoint)* ((first_frame-width*first_frame-height) + 256))); //为背景模型bg_model的高斯背景点g_point 分配内存, CV_CALL( bg_model-background = cvCreateImage(cvSize(first_framewidth,first_frame-height), IPL_DEPTH_8U, first_frame-nChannels)); CV_CALL( bg_model-foreground = cvCreateImage(cvSize(first_frame-width,first_frame-height), IPL_DEPTH_8U, 1)); CV_CALL( bg_model-storage = cvCreateMemStorage()); //initializing var_init = 2 * params.std_threshold * params.std_threshold; // 初始化方差 CV_CALL( bg_model-g_point .g_values =(CvGaussBGValues*)cvAlloc( sizeof(CvGaussBGValues)*params.n_gauss*(first_frame-width*first_frame-height + 128))); for( i = 0, p = 0, n = 0; i first_frame-height; i++ ) { for( j = 0; j first_frame-width; j++, n++ ) // n=i*first_frame-width+j { bg_model-g_point .g_values =bg_model-g_point .g_values + n*params.n_gauss; bg_model-g_point .g_values .weight = 1;//the first value seen has weight one//首个高斯模型,权值赋予1 bg_model-g_point .g_values .match_sum = 1; //the sum of matches for a particular gaussian for( m = 0; m first_frame-nChannels; m++) // 对每个通道 { bg_model-g_point .g_values .variance = var_init;//第0个高斯模型的 第M个通道的方差, bg_model-g_point .g_values .mean = (unsigned char)first_frame-imageData ; //均值,第M通道的值 } for( k = 1; k params.n_gauss; k++) //其他高斯模型, { bg_model-g_point .g_values .weight = 0;//第K个高斯模型的权值0 bg_model-g_point .g_values .match_sum = 0; //第K个高斯模型的match_sum0 for( m = 0; m first_frame-nChannels; m++) { bg_model-g_point .g_values .variance = var_init; //第K个高斯模型 的第m 通道的方差 bg_model-g_point .g_values .mean = 0;//第K个高斯模型 的第m 通道的均值 0 } } p += first_frame-nChannels;// } } bg_model-countFrames = 0; //帧=0 __END__; if( cvGetErrStatus() 0 )// 如果有错误 { CvBGStatModel* base_ptr = (CvBGStatModel*)bg_model; if( bg_model bg_model-release ) bg_model-release( base_ptr );//释放模型 else cvFree( bg_model ); bg_model = 0; } return (CvBGStatModel*)bg_model; //返回创建的背景模型 } CV_IMPL void CV_CDECL icvReleaseGaussianBGModel( CvGaussBGModel** _bg_model )//返回背景模型 { CV_FUNCNAME( "icvReleaseGaussianBGModel" ); __BEGIN__; if( !_bg_model ) CV_ERROR( CV_StsNullPtr, "" ); if( *_bg_model ) { CvGaussBGModel* bg_model = *_bg_model; if( bg_model-g_point ) { cvFree( bg_model-g_point .g_values ); //释放背景点中的值 cvFree( bg_model-g_point );//释放背景点 } cvReleaseImage( bg_model-background );//释放背景模型中的前景 cvReleaseImage( bg_model-foreground );//释放背景模型中的背景 cvReleaseMemStorage(bg_model-storage); //释放背景模型中的存储器 memset( bg_model, 0, sizeof(*bg_model) ); cvFree( _bg_model ); //释放背景模型 } __END__; } CV_IMPL intCV_CDECL icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel*bg_model ) { int i, j, k; int region_count = 0; CvSeq *first_seq = NULL, *prev_seq = NULL, *seq = NULL; bg_model-countFrames++; //每执行一次更新,帧数++ for( i = 0; i curr_frame-height; i++ ) { for( j = 0; j curr_frame-width; j++ ) //对每个像素点 逐点进行运算 { int match ; //CV_BGFG_MOG_MAX_NGAUSSIANS=500,最大高斯模型数目:match double sort_key ;// 排序: sort_key const int nChannels = curr_frame-nChannels; // 当前帧的通道数 const int n = i*curr_frame-width+j; // 正在处理第几个像素, const int p = n*curr_frame-nChannels; // 第几个通道,这与图像(BGR,BGR,BGR....)的交叉存储格式有关 // A few short cuts CvGaussBGPoint* g_point = bg_model-g_point ; const CvGaussBGStatModelParamsbg_model_params = bg_model-params; double pixel ; // int no_match;// for( k = 0; k nChannels; k++ )// 获得某个像素的第K通道的值 pixel = (uchar)curr_frame-imageData ; no_match = icvMatchTest( pixel, nChannels, match, g_point, bg_model_params );//判断该像素值是否与背景模型匹配 if( bg_model-countFrames = bg_model-params.win_size ) //判断已经处理的帧数是否等于初始化阶段帧长,如果是则:????????? { icvUpdateFullWindow( pixel, nChannels, match, g_point, bg_model-params );//调用正常阶段更新函数进行更新 if( no_match == -1)//如果没有找到匹配的,则调用正常阶段NoMatch情况的更新函数 icvUpdateFullNoMatch( curr_frame, p, match, g_point, bg_model_params ); } else //初始化阶段 { icvUpdatePartialWindow( pixel, nChannels, match, g_point, bg_model_params ); if( no_match == -1) icvUpdatePartialNoMatch( pixel, nChannels, match, g_point, bg_model_params ); } icvGetSortKey( nChannels, sort_key, g_point, bg_model_params ); //获得模型的适应度值 icvInsertionSortGaussians( g_point, sort_key, (CvGaussBGStatModelParams*)bg_model_params ); // 进行排序 icvBackgroundTest( nChannels, n, p, match, bg_model ); //判断是否是背景 } } //下面这段是前景滤波,滤掉小块区域。 cvClearMemStorage(bg_model-storage); //cvMorphologyEx( bg_model-foreground, bg_model-foreground, 0, 0, CV_MOP_OPEN, 1 ); //cvMorphologyEx( bg_model-foreground, bg_model-foreground, 0, 0, CV_MOP_CLOSE, 1 ); cvFindContours( bg_model-foreground, bg_model-storage, first_seq, sizeof(CvContour), CV_RETR_LIST ); //对前景图像寻找轮廓, for( seq = first_seq; seq; seq = seq-h_next ) { CvContour* cnt = (CvContour*)seq; if( cnt-rect.width * cnt-rect.height bg_model-params.minArea ) //去掉小的区域 { //delete small contour prev_seq = seq-h_prev; if( prev_seq ) { prev_seq-h_next = seq-h_next; if( seq-h_next ) seq-h_next-h_prev = prev_seq; } else { first_seq = seq-h_next; if( seq-h_next ) seq-h_next-h_prev = NULL; } }//end of if else { region_count++; //否则,区域数++ } }//end of for bg_model-foreground_regions = first_seq; // cvZero(bg_model-foreground); cvDrawContours(bg_model-foreground, first_seq, CV_RGB(0, 0, 255), CV_RGB(0, 0, 255), 10, -1); // 绘制前景轮廓 return region_count; //返回轮廓数 } static void icvInsertionSortGaussians( CvGaussBGPoint* g_point, double* sort_key, CvGaussBGStatModelParams*bg_model_params ) { int i, j; for( i = 1; i bg_model_params-n_gauss; i++ )//对每个高斯背景模型 { double index = sort_key ; // 获得适应度值 for( j = i; j 0 sort_key index; j-- ) //sort decending order 降序排列 , { double temp_sort_key = sort_key ; sort_key = sort_key ; sort_key = temp_sort_key; CvGaussBGValues temp_gauss_values = g_point-g_values ; g_point-g_values = g_point-g_values ; g_point-g_values = temp_gauss_values; } //sort_key = index; } } static int icvMatchTest( double* src_pixel, int nChannels, int* match, const CvGaussBGPoint* g_point, const CvGaussBGStatModelParams*bg_model_params ) { int k; int matchPosition=-1; for ( k = 0; k bg_model_params-n_gauss; k++) //对每个高斯背景模型 ,初始化 match =0; match =0; for ( k = 0; k bg_model_params-n_gauss; k++) //对每个高斯背景模型 { double sum_d2 = 0.0; double var_threshold = 0.0; //方差阈值 for(int m = 0; m nChannels; m++) //对每个通道 { double d = g_point-g_values .mean - src_pixel ;//新像素值与背景模型的均值做差 sum_d2 += (d*d); //三个通道的偏差和 var_threshold += g_point-g_values .variance ; //var_threshold就是背景模型中三个通道的方差的和 }//difference STD_LIMIT*STD_LIMIT or difference**2 STD_LIMIT*STD_LIMIT*VAR var_threshold = bg_model_params-std_threshold*bg_model_params-std_threshold*var_threshold;// if(sum_d2 var_threshold) //如果差异小于阈值, { match = 1;//匹配上, matchPosition = k; //记录匹配位置 break; } }//end-of-for-k return matchPosition;//返回 匹配位置,即是哪个高斯模型匹配。 //如果没有匹配的,则返回的是-1。 } static void icvUpdateFullWindow( double* src_pixel, int nChannels, int* match, CvGaussBGPoint* g_point, const CvGaussBGStatModelParams*bg_model_params ) { const double learning_rate_weight = (1.0/(double)bg_model_params-win_size); //权重学习速率,1/初始化阶段帧长 for(int k = 0; k bg_model_params-n_gauss; k++) //对每个高斯背景模型 { g_point-g_values .weight = g_point-g_values .weight + (learning_rate_weight*((double)match -g_point-g_values .weight)); // 权重更新 if(match )//match ==1,表示该模型匹配上 { double learning_rate_gaussian = (double)match /(g_point-g_values .weight* (double)bg_model_params-win_size); for(int m = 0; m nChannels; m++) //均值和方差要对每个通道都进行更新 { const double tmpDiff = src_pixel - g_point-g_values .mean ; g_point-g_values .mean = g_point-g_values .mean + (learning_rate_gaussian * tmpDiff);// 均值更新 g_point-g_values .variance = g_point-g_values .variance + (learning_rate_gaussian*((tmpDiff*tmpDiff) - g_point-g_values .variance )); // 方差更新 }//end-of-for-m } }//end-of-for-k } static void icvUpdatePartialWindow( double* src_pixel, int nChannels, int* match, CvGaussBGPoint* g_point, const CvGaussBGStatModelParams*bg_model_params ) { int k, m; int window_current = 0;// for( k = 0; k bg_model_params-n_gauss; k++ ) window_current += g_point-g_values .match_sum;//应该是已经处理的帧数,是吗??match_sum .match_sum += match ; // double learning_rate_weight = (1.0/((double)window_current + 1.0)); //increased by one since sum g_point-g_values .weight = g_point-g_values .weight + (learning_rate_weight*((double)match - g_point-g_values .weight));//权值更新 if( g_point-g_values .match_sum 0 match ) { double learning_rate_gaussian = (double)match /((double)g_point-g_values .match_sum); for( m = 0; m nChannels; m++ ) { const double tmpDiff = src_pixel - g_point-g_values .mean ;//均值更新 g_point-g_values .mean = g_point-g_values .mean + (learning_rate_gaussian*tmpDiff); g_point-g_values .variance = g_point-g_values .variance + (learning_rate_gaussian*((tmpDiff*tmpDiff) - g_point-g_values .variance )); //方差更新 } } } } static void icvUpdateFullNoMatch( IplImage* gm_image, int p, int* match, CvGaussBGPoint* g_point, const CvGaussBGStatModelParams*bg_model_params) { int k, m; double alpha; int match_sum_total = 0; //new value of last one g_point-g_values .match_sum = 1; // 将最后一个高斯模型的match_sum置1 //get sum of all but last value of match_sum for( k = 0; k bg_model_params-n_gauss ; k++ ) match_sum_total += g_point-g_values .match_sum;// g_point-g_values .weight = 1./(double)match_sum_total; //为新的模型赋予权值 for( m = 0; m gm_image-nChannels ; m++ ) { // first pass mean is image value g_point-g_values .variance = bg_model_params-variance_init;//为新的模型赋予方差 g_point-g_values .mean = (unsigned char)gm_image-imageData ;//为新的模型赋予均值 } alpha = 1.0 - (1.0/bg_model_params-win_size); for( k = 0; k bg_model_params-n_gauss - 1; k++ )//对除最后一个模型外的其他模型进行运算 { g_point-g_values .weight *= alpha;//权重 if( match ) g_point-g_values .weight += alpha; } } static void icvUpdatePartialNoMatch(double *pixel, int nChannels, int* , CvGaussBGPoint* g_point, const CvGaussBGStatModelParams*bg_model_params) { int k, m; //new value of last one g_point-g_values .match_sum = 1; // 将最后一个高斯模型的match_sum置1 //get sum of all but last value of match_sum int match_sum_total = 0; for(k = 0; k bg_model_params-n_gauss ; k++) match_sum_total += g_point-g_values .match_sum; for(m = 0; m nChannels; m++) { //first pass mean is image value g_point-g_values .variance = bg_model_params-variance_init; g_point-g_values .mean = pixel ; } for(k = 0; k bg_model_params-n_gauss; k++) { g_point-g_values .weight = (double)g_point-g_values .match_sum / (double)match_sum_total; } } static void icvGetSortKey( const int nChannels, double* sort_key, const CvGaussBGPoint* g_point, const CvGaussBGStatModelParams*bg_model_params ) { int k, m; for( k = 0; k bg_model_params-n_gauss; k++ ) // { // Avoid division by zero if( g_point-g_values .match_sum 0 ) { // 假设各个高斯分量之间是独立的 double variance_sum = 0.0; for( m = 0; m nChannels; m++ ) variance_sum += g_point-g_values .variance ; //各通道的方差和 sort_key = g_point-g_values .weight/sqrt(variance_sum);// 模型的适合度值 } else sort_key = 0.0; } } static void icvBackgroundTest( const int nChannels, int n, int p, int *match, CvGaussBGModel* bg_model ) { int m, b; uchar pixelValue = (uchar)255; // will switch to 0 if match found,首先假设该点为前景点, double weight_sum = 0.0; CvGaussBGPoint* g_point = bg_model-g_point; for( m = 0; m nChannels; m++) bg_model-background-imageData = (unsigned char)(g_point .g_values .mean +0.5); //背景就是模型 均值 for( b = 0; b bg_model-params.n_gauss; b++) { weight_sum += g_point .g_values .weight; //累积权重 if( match ) //?? pixelValue = 0; //像素值为0,成为背景 if( weight_sum bg_model-params.bg_threshold )//若累积权重大于背景阈值,退出循环,舍掉后面的高斯模型 break; } bg_model-foreground-imageData = pixelValue; //将像素值赋给该点,0(背景)或者255(前景) }
个人分类: 论文分析|8836 次阅读|0 个评论
背景建模(一) Evaluation of Background Subtraction Techniques
热度 1 qianli8848 2012-5-15 09:33
背景建模(一) Evaluation of Background Subtraction Techniques
以前做过一些关于背景建模,运动目标检测的工作,打算进行一下小结,那么就先从这篇CVPR2011这篇评测的文章说起吧。 Evaluation of Background Subtraction Techniques for Video Surveillance ( PDF ) Sebastian Brutzer, Benjamin Hoeferlin (University of Stuttgart), Gunther Heidemann (University of Stuttgart) 这篇文章的项目主页: http://www.vis.uni-stuttgart.de/index.php?id=sabs 可以在这个网页上下载最新的数据库,以及一些评测的代码(注意是评测的代码,不是背景建模方法的代码)。 这篇文章对近年来背景建模的一些方法做了一些比较,比较的方法有: 本人感觉这篇文章之所以能够发在CVPR这种高级别的会议上,主要有一下原因: 1. 作者公开发布了一个数据,而且这个数据库是合成,所以比较方便用来量化评价其他方法; 2. 表面上工作量很大 ,之所以说表面上工作量很大,作者虽然比较了9中方法,但是这些方法在网上几乎都有源代码(集成在opencv中的),还有一些是已经公开了可执行程序的了。而作者的工作量不是很大。我们可以看Features那一列,基本上都是color为特征,而作者忽略了纹理特征的背景建模。纹理特征奥鲁大学做LBP的人在06年就发表了用纹理做背景建模的文章,而且是发表在PAMI上面的,作者不能不知道吧,试问他比较的这九中方法那种发表在PAMI上了。再说2010 CVPR上面有一篇Stan Li的文章也是用纹理做,两篇文章效果都很好。 也不知道作者为什么没有比较... ...以后我们会介绍这两个经典的方法的; 3.分析的还可以,貌似所有cvpr的文章分析的都不错。 作者分析了背景建模有以下的难点: Gradual illumination changes : It is desirable that background model adapts to gradual changes of the appearance of the environment. For example in outdoor settings, the light intensity typically varies during day. Sudden illumination changes : Sudden once-off changes are not covered by the background model. They occur for example with sudden switch of light, strongly affect the appearance of background, and cause false positive detections. Dynamic background : Some parts of the scenery may contain movement, but should be regarded as background, according to their relevance. Such movement can be periodical or irregular (e.g., traffic lights, waving trees). Camouflage : Intentionally or not, some objects may poorly differ from the appearance of background, making correct classification difficult. This is especially important in surveillance applications. Shadows : Shadows cast by foreground objects often complicate further processing steps subsequent to background subtraction. Overlapping shadows of foreground regions for example hinder their separation and classification. Hence, it is preferable to ignore these irrelevant regions. Bootstrapping : If initialization data which is free from foreground objects is not available, the background model has to be initialized using a bootstrapping strategy. Video noise : Video signal is generally superimposed by noise. Background subtraction approaches for video surveillance have to cope with such degraded signals affected by different types of noise, such as sensor noise or compression artifacts. 评测的结果: 值得注意的是, Barnich 方法速度性能都很不错,他的文章中有伪代码,作者的主页上提供可执行程序,并且可以集成到自己的程序中。
个人分类: 论文分析|15165 次阅读|1 个评论
由Locality-constrained Linear Coding引出的两篇文章
热度 1 qianli8848 2012-5-14 10:29
由Locality-constrained Linear Coding引出的两篇文章
jianchao yang 的这篇Locality-constrained Linear Coding for Image Classification(介绍这篇文章的链接: http://blog.sina.com.cn/s/blog_631a4cc40100wdul.html )是在以下两篇文章的基础上做的,Liner Spatial Pyramid Matching using Sparse Coding for Image Classification(CVPR'2009)和Nolinear Dimensionality Reduction by Locally Linear Embedding(LLE),下面分别介绍一下。 Liner Spatial Pyramid Matching using Sparse Coding for Image Classification(CVPR'2009)同样也是 jianchao yang 的工作代码也是公开的,现在的他引率已经是175次,刚出三年的文章能达到这个引用率已经很不错了。文章的核心公式: 第一项约束重构误差,第二项是用1范数近似0范数约束稀疏性。 之后就是一些基本的操作,max pooling和图像金字塔了。 这个公式解决了两个问题,其一是多个码本重构特征减少了重构误差,其二用线性SVM减少训练时间。 优化这个式子用的是 Honglak Lee 代码。 Nolinear Dimensionality Reduction by Locally Linear Embedding(LLE)是流行中非常经典的文章,现在的他引率已经达到4550次了,这是发在 Science, 2000年的文章。作者 Sam T. Roweis 是一个大牛,成名比较早,但是因为产后抑郁跳楼身亡了(男人也可以因为这个原因跳楼??)。文章中的思想比较简单,就是用近邻的几个点重构他,只考虑他们之间的相对关系。从而降维。
个人分类: 论文分析|13618 次阅读|1 个评论
[CODE]SIFT 特征及其代码
qianli8848 2012-5-13 09:43
[CODE]SIFT 特征及其代码
SIFT原文:Distinctive Image Featuresfrom Scale-Invariant Keypoints,作者 David G. Lowe 发表在2004的IJCV上面,这篇文章可谓是里程碑似的工作,现在的他引次数已经达到12239次!! 作者在这方面至少有10+年的积累才发出这种牛B的文章,所以这也暗示我们要沿着一个方向踏踏实实的做呀~ 现在关于图像分类的文章底层特征基本上都是SIFT,所以这种经典的文章还是要了解一下呀,虽然那个IJCV很长,在有些细节说的还是不具体,所以可以看看 Rob Hess 写的代码,点击即可下载,代码写的很工整,非常容易理解,用C写的。 SIFT Library The Scale Invariant Feature Transform (SIFT) is a method to detect distinctive, invariant image feature points, which easily can be matched between images to perform tasks such as object detection and recognition, or to compute geometrical transformations between images. The open-source SIFT library available here is implemented in C using the OpenCV open-source computer vision library and includes functions for computing SIFT features in images, matching SIFT features between images using kd-trees, and computing geometrical image transforms from feature matches using RANSAC.The library also includes functionality to import and work with image features from both David Lowe’s SIFT detector and the Oxford VGG’s affine covariant feature detectors . The images below depict some of this functionality. 不过做实验的时候还是推荐使用牛津大学开发的 VLFeat ,速度很快,而且性能很好。 The VLFeat open source library implements popular computer vision algorithms including SIFT , MSER , k-means , hierarchical k-means , agglomerative information bottleneck, and quick shift . It is written in C for efficiency and compatibility, with interfaces in MATLAB for ease of use, and detailed documentation throughout. It supports Windows , Mac OS X , and Linux . The latest version of VLFeat is0.9.13.
个人分类: CODE|11065 次阅读|0 个评论
2011BMVC best poster:an evaluation of recent feature encodin
qianli8848 2012-5-12 08:49
2011BMVC best poster:an evaluation of recent feature encodin
The devil is in the details: an evaluation of recent feature encoding methods 这篇文章是 2011 BMVC 的 best poster。听名字就很牛,起的很有个性,细节在魔鬼中,文中对进来的用于图片分类的编码方式进行了评估,进行比较的编码方式有:传统的编码方式,llc编码,改进的fisher编码,super vector编码,kernel 编码。 不过最让你庆幸的是文章提供代码,可以到作者 Ken Chatfield 主页上下载不过现在还是只有一部分的代码,其他的代码应该还是会等一阵子吧~~ 文章的作者非常的严谨,当评估到super vector的时候结果和原文查了一些还给作者发邮件问了一些技术细节,这种严谨真是让人汗颜呀~~ 实验的结果基本就是改进的fisher编码方式比较好,但是特征的维数有一些高。 Caltech 101 vocabulary size (+ dimensionality) mean accuracy Histogram (VQ) 8,000 74.23 ± 0.65 Kernel Codebook (KCB) 8,000 75.93 ± 0.57 Locality Constrained (LLC) 8,000 76.95 ± 0.39 Fisher (FK) 256 (~41k) 77.78 ± 0.56 VOC 2007 vocabulary size (+ dimensionality) mAP Histogram (VQ) 25,000 55.30 Kernel Codebook (KCB) 25,000 56.26 Locality Constrained (LLC) 25,000 57.27 Fisher (FK) 256 (~41k) 61.69 Super Vector (SV) 1024 (~132k) 58.16
个人分类: 论文分析|4880 次阅读|0 个评论
[转载]做数学真的需要天分吗
hjanime 2012-4-21 11:43
Seealsothearticle“Howtobeagenius“,by DavidDobbs, NewScientist,15September2006. 这个问题的回答是一个大写的:不!为了达到对数学有一个良好的,有意义的贡献的目的,人们必须要刻苦努力;学好自己的领域,掌握一些其他领域的知识和工具;多问问题;多与其他数学工作者交流;要对数学有个宏观的把握。当然,一定水平的才智,耐心的要求,以及心智上的成熟性是必须的。但是,数学工作者绝不需要什么神奇的“天才”的基因,什么天生的洞察能力;不需要什么超自然的能力使自己总有灵感去出人意料的解决难题。大众对数学家的形象有一个错误的认识:这些人似乎都使孤单离群的(甚至有一点疯癫)天才。他们不去关注其他同行的工作,不按常规的方式思考。他们总是能够获得无法解释的灵感(或者经过痛苦的挣扎之后突然获得),然后在所有的专家都一筹莫展的时候,在某个重大的问题上取得了突破的进展。这样浪漫的形象真够吸引人的,可是至少在现代数学学科中,这样的人或事是基本没有的。在数学中,我们的确有很多惊人的结论,深刻的定理,但是那都是经过几年,几十年,甚至几个世纪的积累,在很多优秀的或者伟大的数学家的努力之下一点一点得到的。每次从一个层次到另一个层次的理解加深的确都很不平凡,有些甚至是非常的出人意料。但尽管如此,这些成就也无不例外的建立在前人工作的基础之上,并不是全新的。(例如,Wiles解决费马最后定理的工作,或者Perelman解决庞加莱猜想的工作。)今天的数学就是这样:一些直觉,大量文献,再加上一点点运气,在大量连续不断的刻苦的工作中慢慢的积累,缓缓的进展。事实上,我甚至觉得现实中的情况比前述浪漫的假说更令我满足,尽管我当年做学生的时候,也曾经以为数学的发展主要是靠少数的天才和一些神秘的灵感。其实,这种“天才的神话”是有其缺陷的,因为没有人能够定期的产生灵感,甚至都不能保证每次产生的这些个灵感的正确性(如果有人宣称能够做到这些,我建议要持怀疑态度)。相信灵感还会产生一些问题:一些人会过度的把自己投入到大问题中;人们本应自己的工作和所用的工具有合理的怀疑,但是上述态度却使某些人对这种怀疑渐渐丧失;还有一些人在数学上极端不自信,还有很多很多的问题。当然了,如果我们不使用“天才”这样极端的词汇,我们会发现在很多时候,一些数学家比其他人会反应更快一些,会更有经验,会更有效率,会更仔细,甚至更有创造性。但是,并不是这些所谓的“最好”的数学家才应该做数学。这其实是一种关于绝对优势和相对优势的很普遍的错误观念。有意义的数学科研的领域极其广大,决不是一些所谓的“最好”的数学家能够完成的任务,而且有的时候你所拥有的一些的想法和工具会弥补一些优秀的数学家的错误,而且这些个优秀的数学家们也会在某些数学研究过程中暴露出弱点。只要你受过教育,拥有热情,再加上些许才智,一定会有某个数学的方面会等着你做出重要的,奠基性的工作。这些也许不是数学里最光彩照人的地方,但是却是最健康的部分。往往一些现在看来枯燥无用的领域,在将来会比一些看上去很漂亮的方向更加有意义。而且,应该先在一个领域中做一些不那么光彩照人的工作,直到有机会和能力之时,再去解决那些重大的难题。看看那些伟大的数学家们早期的论文,你就会明白我的意思了。有的时候,大量的灵感和才智反而对长期的数学发展有害,试想如果在早期问题解决的太容易,一个人可能就不会刻苦努力,不会问一些“傻”的问题,不会尝试去扩展自己的领域,这样迟早造成灵感的枯竭。而且,如果一个人习惯了不大费时费力的小聪明,他就不能拥有解决真正困难的大问题所需要耐心,和坚韧的性格。聪明才智自然重要,但是如何发展和培养显然更加的重要。要记着,专业做数学不是一项运动比赛。做数学的目的不是得多少的分数,获得多少个奖项。做数学其实是为了理解数学,为自己,也为学生和同事,最终要为她的发展和应用做出贡献。为了这个任务,她真的需要所有人的共同拼搏! English:http://terrytao.wordpress.com/career-advice/does-one-have-to-be-a-genius-to-do-maths/中文:http://www.math.org.cn/forum.php?mod=redirecttid=21264goto=lastpost#lastpost
个人分类: 生物信息|3698 次阅读|0 个评论
[转载]【研究】机器学习改变工作与生活
liuguowei58 2012-4-12 13:31
机器学习是提高人们认识和生产效率的有效手段,记得看过一本机器学习的书,包括Q强化学习理论等,当时就在想“如何让更多人在生活中更加容易地理解机器学习?”今天看到此文,方解此题!机器学习和管理学的关联也较大,如斯纳金的强化学习理论和Q强化学习理论在思想上似乎是如出一辙的~~~不都是为了提高主体(Agent)的学习效率吗?从知识管理角度看,是否能够利用机器学习模拟知识的获取、识别、共享、整合和创新?还得深究啊~~~还有,机器学习与智能仿真之间的异同之处?仍有待专家努力挖掘与点拨迷津啊!!!! 转载于: http://www.infzm.com/content/72566 作者: 李航 最后更新:03-20 17:38:17 机器学习是关于计算机基于数据构建模型并运用模型来模拟人类智能活动的一门学科。随着计算机与网络的飞速发展,机器学习在我们的生活与工作中起着越来越大的作用,正在改变着我们的生活和工作。 1.日常生活中的机器学习 我们在日常生活经常使用数码相机。你也许不知道,数码相机上的人脸检测技术是基于机器学习技术的!我认识的三位了不起的科学家与工程师:Robert Schapire,Paul Viola,劳世竑。他们的研究都与人脸检测技术有关。Robert与Yoav Freund一起发明了非常有效的机器学习算法AdaBoost。Paul将AdaBoost算法成功地应用到人脸检测。劳世竑和他领导的Omron团队将AdaBoost人脸检测算法做到了芯片上。据说现在世界上有百分之六七十的数码相机上的人脸检测都是用Omron的芯片。 在我们的工作与生活中,这种例子曾出不穷。互联网搜索、在线广告、机器翻译、手写识别、垃圾邮件过滤等等都是以机器学习为核心技术的。 不久以前,机器学习国际大会(International Conference on Machine Learning,ICML 2011)在美国华盛顿州的Bellevue市举行。约有7百多位科研人员、教授、学生参加,创造了历史最高纪录。大会的三个主题演讲分别介绍了机器学习在微软的Kinect游戏机用户感应系统、谷歌的Goggles图片搜索系统、IBM的 Watson自动问答系统中的应用。这些事实让人预感到机器学习被更广泛应用的一个新时代的到来。 2.机器学习与人工智能 智能化是计算机发展的必然趋势。人类从事的各种智能性活动,如数学、美术、语言、音乐、运动、学习、游戏、设计、研究、教学等等,让计算机做起来,现在还都是很困难的。这是几十年来人工智能研究得到的结论。 人工智能研究中,人们曾尝试过三条路。我将它们称之为外观(extrospection)、内省(introspection)和模拟(simulation)。 所谓外观,指的是观察人的大脑工作情况,探求其原理,解明其机制,从而在计算机上“实现”人类大脑的功能。比如,计算神经学(computational neuroscience)的研究就是基于这个动机的。然而,人脑的复杂信息处理过程很难观测和模型化。就像我们仅仅观测某个计算机内的信号传输过程,很难判断它正在做什么样的计算一样。 内省就是反思自己的智能行为,将自己意识到的推理、知识等记录到计算机上,从而“再现”人的智能,比如专家系统(expert system)的尝试就属于这一类。内省的最大问题是它很难泛化,也就是举一反三。无论是在什么样的图片中,甚至是在抽象画中,人们能够轻而易举地找出其中的人脸。这种能力称为泛化能力。通过内省的方法很难使计算机拥有泛化能力。自己的智能原理,对人类来说很有可能是不可知的(agnostic)。笼子里的老鼠可能认为触动把手是得到食物的“原因”,但它永远也不能了解到整个笼子的食物投放机制。 模拟就是将人的智能化操作的输入与输出记录下来,用模型来模拟,使模型对输入输出给出同人类相似的表现,比如统计机器学习(statistical machine learning)。实践表明,统计机器学习是实现计算机智能化这一目标的最有效手段。统计学习最大的优点是它具有泛化能力;而缺点是它得到的永远是统计意义下的最优解(例如:人脸检测)。现在当人们提到机器学习时,通常是指统计机器学习或统计学习。 3.机器学习的优缺点 下面看一个简单的例子。由这个例子可以说明统计学习的基本原理,以及由此带来的优缺点。 假设我们观测到一个系统的输出是一系列的1和0,要预测它的下一个输出是什么。如果观测数据中1和0各占一半,那么我们只能以0.5的准确率做出预测。但是,如果我们同时观测到这个系统有输入,也是一系列的1和0,并且输入是1时输出是0的比例是0.9,输入是0时输出是1的比例也是0.9。这样我们就可以从已给数据中学到“模型”,根据系统的输入预测其输出,并且把预测准确率从0.5提高到0.9。以上就是统计学习,特别是监督学习的基本想法。事实上,这是世界上最简单的统计机器学习模型!条件概率分布P(Y|X),其中随机变量X与Y表示输入与输出,取值1与0。可以认为所有的监督学习模型都是这个简单模型的复杂版。我们用这个模型根据给定的输入特征,预测可能的输出。 统计学习最大的优点是它具有泛化能力,对于任意给定的X,它都能预测相应的Y。Vapnik的统计学习理论还能对预测能力进行分析,给出泛化上界。但从这个例子中也可以看到统计学习的预测准确率是不能保证100%的。比如,人脸检测会出错,汉语分词会出错。 统计学习是“乡下人”的办法。有个笑话。一个乡下人进城,到餐馆吃饭,不知如何在餐馆用餐,就模仿旁边的人。别人做什么,他也就学着做什么。邻桌的一位故意戏弄他,将桌上的蜡烛卷在饼里,趁乡下人不注意时把蜡烛扔到地上,然后咬了一口卷着的饼。乡下人也跟着学,大咬了一口自己的饼。统计学习只是根据观测的输入与输出,“模仿”人的智能行为。有时能够显得非常智能化。但它本质上只是基于数据的,是统计平均意义下的“模仿”。如果观测不到关键的特征,它就会去“咬卷着蜡烛的饼”。 4.机器学习与互联网搜索 我与同事们在从事互联网搜索相关的研究。据调查,60%的互联网用户每天至少使用一次搜索引擎,90%的互联网用户每周至少使用一次搜索引擎。搜索引擎大大提高了人们工作、学习以及生活的质量。而互联网搜索的基本技术中,机器学习占据着重要的位置。 在我看来,互联网搜索有两大挑战和一大优势。挑战包括规模挑战与人工智能挑战;优势主要是规模优势。 规模挑战: 比如,搜索引擎能看到trillion量级的URL,每天有几亿、几十亿的用户查询,需要成千上万台的机器抓取、处理、索引网页,为用户提供服务。这需要系统、软件、硬件等多方面的技术研发与创新。 人工智能挑战: 搜索最终是人工智能问题。搜索系统需要帮助用户尽快、尽准、尽全地找到信息。这从本质上需要对用户需求(如查询语句),以及互联网上的文本、图像、视频等多种数据进行“理解”。现在的搜索引擎通过关键词匹配以及其他“信号”,能够在很大程度上帮助用户找到信息。但是,还是远远不够的。 规模优势: 互联网上有大量的内容数据,搜索引擎记录了大量的用户行为数据。这些数据能够帮助我们找到看似很难找到的信息。比如,“纽约市的人口是多少”,“约市的人口是多少”,“春风又绿江南岸作者是谁”。注意这些数据都是遵循幂函数分布的。它们能帮助Head(高频)需求,对 tail(低频)需求往往是困难的。所以,对tail来说人工智能的挑战就更显著。 现在的互联网搜索在一定程度上能够满足用户信息访问的一些基本需求。这归结于许多尖端技术包括机器学习技术的成功开发与应用,比如排序学习算法、网页重要度算法等等。这些机器学习算法在一定程度上能够利用规模优势去应对人工智能挑战。 但是、当今的互联网搜索距离 “有问必答,且准、快、全、好”这一理想还是有一定距离的。这就需要开发出更多更好的机器学习技术解决人工智能的挑战,特别是在tail中的挑战。 展望未来,机器学习技术的研究与开发会帮助我们让明天更美好! (本文图片来源网络,作者李航是微软亚洲研究院互联网搜索与挖掘组高级研究员及主任研究员,研究方向包括信息检索,自然语言处理,统计机器学习,及数据挖掘
个人分类: 名师转载精粹|3115 次阅读|0 个评论
《机器学习理论及应用》李凡长等
热度 1 ustcpress 2012-3-29 11:36
《机器学习理论及应用》李凡长等
丛书名:当代科学技术基础理论与前沿问题研究丛书——中国科学技术大学校友文库 (“十一五”国家重点图书出版规划项目) 出版日期:2009年10月 书号ISBN:978-7-312-02636-2 出版社:中国科学技术大学出版社 正文页码:492页(16开) 字数:533千 定价:88.00元 编辑邮箱: edit@ustc.edu.cn (欢迎来索要目录、样章的PDF) 当当网购书链接: http://product.dangdang.com/product.aspx?product_id=20713150 【 内容简介 】 机器学习新方法研究是实现机器学服务各行各业的历史使命。根据这样的宗旨,本书系统地介绍了李群机器学习、动态模糊机器学习、 Agent 普适机器学习和贝叶斯量子随机学习,共三篇十二章内容。本书可供计算机科学技术、认知科学、机器学习、人工智能、控制技术领域的高年级本科生和研究生作为教科书或参考书,也可供高校教师、科研院所的研究人员使用。 【 作者简介 】 李凡长,苏州大学教授, 1964 年生, 1995 年于中国科学技术大学获工学硕士学位。中国人工智能学会理事、中国计算机学会高级会员和多个专业委员会委员,同时也是《自动化学报》、《软件学报》等重要期刊的审稿专家。提出了动态模糊集、动态模糊逻辑等基本理论,该理论已在人工智能、机器学习、数据库系统、多 Agent 、知识工程、问题求解等领域得到广泛应用,开拓出了动态模糊智能理论与动态模糊系统的新领域。
个人分类: 校友文库|4354 次阅读|1 个评论
[转载]机器学习中的数学(3)-模型组合之Boosting与Gradient Boosting
zhenliangli 2012-3-24 14:19
版权声明: 本文由LeftNotEasy发布于 http://leftnoteasy.cnblogs.com , 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系 wheeleast@gmail.com 前言: 本来上一章的结尾提到,准备写写线性分类的问题,文章都已经写得差不多了,但是突然听说最近Team准备做一套分布式的分类器,可能会使用Random Forest来做,下了几篇论文看了看,简单的random forest还比较容易弄懂,复杂一点的还会与boosting等算法结合(参见iccv09),对于boosting也不甚了解,所以临时抱佛脚的看了看。说起boosting, 强哥 之前实现过一套Gradient Boosting Decision Tree(GBDT)算法,正好参考一下。 最近看的一些论文中发现了模型组合的好处,比如GBDT或者rf,都是将简单的模型组合起来,效果比单个更复杂的模型好。组合的方式很多,随机化(比如random forest),Boosting(比如GBDT)都是其中典型的方法,今天主要谈谈Gradient Boosting方法(这个与传统的Boosting还有一些不同)的一些数学基础,有了这个数学基础,上面的应用可以看Freidman的Gradient Boosting Machine。 本文要求读者学过基本的大学数学,另外对分类、回归等基本的机器学习概念了解。 本文主要参考资料是prml与Gradient Boosting Machine。 Boosting方法: Boosting这其实思想相当的简单,大概是,对一份数据,建立M个模型(比如分类),一般这种模型比较简单,称为弱分类器(weak learner)每次分类都将上一次分错的数据权重提高一点再进行分类,这样最终得到的分类器在测试数据与训练数据上都可以得到比较好的成绩。 上图(图片来自prml p660)就是一个Boosting的过程,绿色的线表示目前取得的模型(模型是由前m次得到的模型合并得到的),虚线表示当前这次模型。每次分类的时候,会更关注分错的数据,上图中,红色和蓝色的点就是数据,点越大表示权重越高,看看右下角的图片,当m=150的时候,获取的模型已经几乎能够将红色和蓝色的点区分开了。 Boosting可以用下面的公式来表示: 训练集中一共有n个点,我们可以为里面的每一个点赋上一个权重Wi(0 = i n),表示这个点的重要程度,通过依次训练模型的过程,我们对点的权重进行修正,如果分类正确了,权重降低,如果分类错了,则权重提高,初始的时候,权重都是一样的。上图中绿色的线就是表示依次训练模型, 可以想象得到,程序越往后执行,训练出的模型就越会在意那些容易分错(权重高)的点。 当全部的程序执行完后,会得到M个模型,分别对应上图的y1(x)…yM(x),通过加权的方式组合成一个最终的模型YM(x)。 我觉得Boosting更像是一个人学习的过程,开始学一样东西的时候,会去做一些习题,但是常常连一些简单的题目都会弄错,但是越到后面,简单的题目已经难不倒他了,就会去做更复杂的题目,等到他做了很多的题目后,不管是难题还是简单的题都可以解决掉了。 Gradient Boosting方法: 其实Boosting更像是一种思想,Gradient Boosting是一种Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。这句话有一点拗口,损失函数(loss function)描述的是模型的不靠谱程度,损失函数越大,则说明模型越容易出错(其实这里有一个 方差、偏差均衡 的问题,但是这里就假设损失函数越大,模型越容易出错)。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。 下面的内容就是用数学的方式来描述Gradient Boosting,数学上不算太复杂,只要潜下心来看就能看懂:) 可加的参数的梯度表示: 假设我们的模型能够用下面的函数来表示,P表示参数,可能有多个参数组成,P = {p0,p1,p2….},F(x;P)表示以P为参数的x的函数,也就是我们的预测函数。我们的模型是由多个模型加起来的,β表示每个模型的权重,α表示模型里面的参数。为了优化F,我们就可以优化{β,α}也就是P。 我们还是用P来表示模型的参数,可以得到,Φ(P)表示P的likelihood函数,也就是模型F(x;P)的loss函数,Φ(P)=…后面的一块看起来很复杂,只要理解成是一个损失函数就行了,不要被吓跑了。 既然模型(F(x;P))是可加的,对于参数P,我们也可以得到下面的式子: 这样优化P的过程,就可以是一个梯度下降的过程了,假设当前已经得到了m-1个模型,想要得到第m个模型的时候,我们首先对前m-1个模型求梯度。得到最快下降的方向,gm就是最快下降的方向。 这里有一个很重要的假设, 对于求出的前m-1个模型,我们认为是已知的了,不要去改变它,而我们的目标是放在之后的模型建立上。 就像做事情的时候,之前做错的事就没有后悔药吃了,只有努力在之后的事情上别犯错: 我们得到的新的模型就是,它就在P似然函数的梯度方向。ρ是在梯度方向上下降的距离。 我们最终可以通过优化下面的式子来得到最优的ρ: 可加的函数的梯度表示: 上面通过参数P的可加性,得到了参数P的似然函数的梯度下降的方法。我们可以将参数P的可加性推广到函数空间,我们可以得到下面的函数,此处的fi(x)类似于上面的h(x;α),因为作者的文献中这样使用,我这里就用作者的表达方法: 同样,我们可以得到函数F(x)的梯度下降方向g(x) 最终可以得到第m个模型fm(x)的表达式: 通用的Gradient Descent Boosting的框架: 下面我将推导一下Gradient Descent方法的通用形式,之前讨论过的: 对于模型的参数{β,α},我们可以用下面的式子来进行表示,这个式子的意思是,对于N个样本点(xi,yi)计算其在模型F(x;α,β)下的损失函数,最优的{α,β}就是能够使得这个损失函数最小的{α,β}。 表示两个m维的参数: 写成梯度下降的方式就是下面的形式,也就是我们将要得到的模型fm(x)的参数{αm,βm}能够使得fm的方向是之前得到的模型Fm-1(x)的损失函数下降最快的方向: 对于每一个数据点xi都可以得到一个gm(xi),最终我们可以得到一个完整梯度下降方向 为了使得fm(x)能够在gm(x)的方向上,我们可以优化下面的式子得到,可以使用最小二乘法: 得到了α的基础上,然后可以得到βm。 最终合并到模型中: 算法的流程图如下 之后,作者还说了这个算法在其他的地方的推广,其中,Multi-class logistic regression and classification就是GBDT的一种实现,可以看看,流程图跟上面的算法类似的。这里不打算继续写下去,再写下去就成论文翻译了,请参考文章:Greedy function Approximation – A Gradient Boosting Machine,作者Freidman。 总结: 本文主要谈了谈Boosting与Gradient Boosting的方法,Boosting主要是一种思想,表示“知错就改”。而Gradient Boosting是在这个思想下的一种函数(也可以说是模型)的优化的方法,首先将函数分解为可加的形式(其实所有的函数都是可加的,只是是否好放在这个框架中,以及最终的效果如何)。然后进行m次迭代,通过使得损失函数在梯度方向上减少,最终得到一个优秀的模型。值得一提的是,每次模型在梯度方向上的减少的部分,可以认为是一个“小”的或者“弱”的模型,最终我们会通过加权(也就是每次在梯度方向上下降的距离)的方式将这些“弱”的模型合并起来,形成一个更好的模型。 有了这个Gradient Descent这个基础,还可以做很多的事情。也在机器学习的道路上更进一步了:) 本文转载自: http://www.cnblogs.com/LeftNotEasy/archive/2011/01/02/machine-learning-boosting-and-gradient-boosting.html
个人分类: MachineLearning|2486 次阅读|0 个评论
[转载]机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
zhenliangli 2012-3-24 14:14
版权声明: 本文由LeftNotEasy发布于 http://leftnoteasy.cnblogs.com , 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系 wheeleast@gmail.com 前言: 第二篇 的文章中谈到,和部门老大一宁出去outing的时候,他给了我相当多的机器学习的建议,里面涉及到很多的算法的意义、学习方法等等。一宁上次给我提到,如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了。 谈到LDA,就不得不谈谈PCA,PCA是一个和LDA非常相关的算法,从推导、求解、到算法最终的结果,都有着相当的相似。 本次的内容主要是以推导数学公式为主,都是从算法的物理意义出发,然后一步一步最终推导到最终的式子,LDA和PCA最终的表现都是解一个矩阵特征值的问题,但是理解了如何推导,才能更深刻的理解其中的含义。本次内容要求读者有一些基本的线性代数基础,比如说特征值、特征向量的概念,空间投影,点乘等的一些基本知识等。除此之外的其他公式、我都尽量讲得更简单清楚。 LDA: LDA的全称是Linear Discriminant Analysis(线性判别分析), 是一种supervised learning。 有些资料上也称为是Fisher’s Linear Discriminant,因为它被Ronald Fisher发明自1936年,Discriminant这次词我个人的理解是,一个模型,不需要去通过概率的方法来训练、预测数据,比如说各种贝叶斯方法,就需要获取数据的先验、后验概率等等。LDA是在 目前机器学习、数据挖掘领域经典且热门 的一个算法,据我所知,百度的商务搜索部里面就用了不少这方面的算法。 LDA的原理是,将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近。要说明白LDA,首先得弄明白线性分类器( Linear Classifier ):因为LDA是一种线性分类器。对于K-分类的一个分类问题,会有K个线性函数: 当满足条件:对于所有的j,都有Yk Yj,的时候,我们就说x属于类别k。对于每一个分类,都有一个公式去算一个分值,在所有的公式得到的分值中,找一个最大的,就是所属的分类了。 上式实际上就是一种投影,是将一个高维的点投影到一条高维的直线上,LDA最求的目标是,给出一个标注了类别的数据集,投影到了一条直线之后,能够使得点尽量的按类别区分开,当k=2即二分类问题的时候,如下图所示: 红色的方形的点为0类的原始点、蓝色的方形点为1类的原始点,经过原点的那条线就是投影的直线,从图上可以清楚的看到,红色的点和蓝色的点被 原点 明显的分开了,这个数据只是随便画的,如果在高维的情况下,看起来会更好一点。下面我来推导一下二分类LDA问题的公式: 假设用来区分二分类的直线(投影函数)为: LDA分类的一个目标是使得不同类别之间的距离越远越好,同一类别之中的距离越近越好,所以我们需要定义几个关键的值。 类别i的原始中心点为:(Di表示属于类别i的点) 类别i投影后的中心点为: 衡量类别i投影后,类别点之间的分散程度(方差)为: 最终我们可以得到一个下面的公式,表示LDA投影到w后的损失函数: 我们 分类的目标是,使得类别内的点距离越近越好(集中),类别间的点越远越好。 分母表示每一个类别内的方差之和,方差越大表示一个类别内的点越分散,分子为两个类别各自的中心点的距离的平方,我们最大化J(w)就可以求出最优的w了。想要求出最优的w,可以使用拉格朗日乘子法,但是现在我们得到的J(w)里面,w是不能被单独提出来的,我们就得想办法将w单独提出来。 我们定义一个投影前的各类别分散程度的矩阵,这个矩阵看起来有一点麻烦,其实意思是,如果某一个分类的输入点集Di里面的点距离这个分类的中心店mi越近,则Si里面元素的值就越小,如果分类的点都紧紧地围绕着mi,则Si里面的元素值越更接近0. 带入Si,将J(w)分母化为: 同样的将J(w)分子化为: 这样损失函数可以化成下面的形式: 这样就可以用最喜欢的拉格朗日乘子法了,但是还有一个问题,如果分子、分母是都可以取任意值的,那就会使得有无穷解,我们将分母限制为长度为1(这是用拉格朗日乘子法一个很重要的技巧,在下面将说的PCA里面也会用到,如果忘记了,请复习一下高数),并作为拉格朗日乘子法的限制条件,带入得到: 这样的式子就是一个求特征值的问题了。 对于N(N2)分类的问题,我就直接写出下面的结论了: 这同样是一个求特征值的问题,我们求出的第i大的特征向量,就是对应的Wi了。 这里想多谈谈特征值,特征值在纯数学、量子力学、固体力学、计算机等等领域都有广泛的应用,特征值表示的是矩阵的性质,当我们取到矩阵的前N个最大的特征值的时候,我们可以说提取到的矩阵主要的成分(这个和之后的PCA相关,但是不是完全一样的概念)。在机器学习领域,不少的地方都要用到特征值的计算,比如说图像识别、pagerank、LDA、还有之后将会提到的PCA等等。 下图是图像识别中广泛用到的特征脸(eigen face),提取出特征脸有两个目的,首先是为了压缩数据,对于一张图片,只需要保存其最重要的部分就是了,然后是为了使得程序更容易处理,在提取主要特征的时候,很多的噪声都被过滤掉了。跟下面将谈到的PCA的作用非常相关。 特征值的求法有很多,求一个D * D的矩阵的时间复杂度是O(D^3), 也有一些求Top M的方法,比如说 power method ,它的时间复杂度是O(D^2 * M), 总体来说,求特征值是一个很费时间的操作,如果是单机环境下,是很局限的。 PCA: 主成分分析(PCA)与LDA有着非常近似的意思,LDA的输入数据是带标签的,而PCA的输入数据是不带标签的,所以PCA是一种unsupervised learning。LDA通常来说是作为一个独立的算法存在,给定了训练数据后,将会得到一系列的判别函数(discriminate function),之后对于新的输入,就可以进行预测了。而PCA更像是一个预处理的方法,它可以将原本的数据降低维度,而使得降低了维度的数据之间的方差最大(也可以说投影误差最小,具体在之后的推导里面会谈到)。 方差这个东西是个很有趣的,有些时候我们会考虑减少方差(比如说训练模型的时候,我们会考虑到方差-偏差的均衡),有的时候我们会尽量的增大方差。方差就像是一种信仰(强哥的话),不一定会有很严密的证明,从实践来说,通过尽量增大投影方差的PCA算法,确实可以提高我们的算法质量。 说了这么多,推推公式可以帮助我们理解。 我下面将用两种思路来推导出一个同样的表达式。首先是最大化投影后的方差,其次是最小化投影后的损失(投影产生的损失最小)。 最大化方差法: 假设我们还是将一个空间中的点投影到一个向量中去。首先,给出原空间的中心点: 假设u1为投影向量,投影之后的方差为: 上面这个式子如果看懂了之前推导LDA的过程,应该比较容易理解,如果线性代数里面的内容忘记了,可以再温习一下,优化上式等号右边的内容,还是用拉格朗日乘子法: 将上式求导,使之为0,得到: 这是一个标准的特征值表达式了,λ对应的特征值,u对应的特征向量。上式的左边取得最大值的条件就是λ1最大,也就是取得最大的特征值的时候。假设我们是要将一个D维的数据空间投影到M维的数据空间中(M D), 那我们取前M个特征向量构成的投影矩阵就是能够使得方差最大的矩阵了。 最小化损失法: 假设输入数据x是在D维空间中的点,那么,我们可以用D个正交的D维向量去完全的表示这个空间(这个空间中所有的向量都可以用这D个向量的线性组合得到)。在D维空间中,有无穷多种可能找这D个正交的D维向量,哪个组合是最合适的呢? 假设我们已经找到了这D个向量,可以得到: 我们可以用近似法来表示投影后的点: 上式表示,得到的新的x是由前M 个基的线性组合加上后D - M个基的线性组合,注意这里的z是对于每个x都不同的,而b对于每个x是相同的,这样我们就可以用M个数来表示空间中的一个点,也就是使得数据降维了。但是这样降维后的数据,必然会产生一些扭曲,我们用J描述这种扭曲,我们的目标是,使得J最小: 上式的意思很直观,就是对于每一个点,将降维后的点与原始的点之间的距离的平方和加起来,求平均值,我们就要使得这个平均值最小。我们令: 将上面得到的z与b带入降维的表达式: 将上式带入J的表达式得到: 再用上拉普拉斯乘子法(此处略),可以得到,取得我们想要的投影基的表达式为: 这里又是一个特征值的表达式,我们想要的前M个向量其实就是这里最大的M个特征值所对应的特征向量。证明这个还可以看看,我们J可以化为: 也就是当误差J是由最小的D - M个特征值组成的时候,J取得最小值。跟上面的意思相同。 下图是PCA的投影的一个表示,黑色的点是原始的点,带箭头的虚线是投影的向量,Pc1表示特征值最大的特征向量,pc2表示特征值次大的特征向量,两者是彼此正交的,因为这原本是一个2维的空间,所以最多有两个投影的向量,如果空间维度更高,则投影的向量会更多。 总结: 本次主要讲了两种方法,PCA与LDA,两者的思想和计算方法非常类似,但是一个是作为独立的算法存在,另一个更多的用于数据的预处理的工作。另外对于PCA和LDA还有核方法,本次的篇幅比较大了,先不说了,以后有时间再谈: 参考资料: prml bishop,introduce to LDA(对不起,这个真没有查到出处) 本文转载自: http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html
个人分类: MachineLearning|2863 次阅读|0 个评论
[转载]机器学习中的数学(2)-线性回归,偏差、方差权衡
zhenliangli 2012-3-24 14:12
版权声明: 本文由LeftNotEasy所有,发布于 http://leftnoteasy.cnblogs.com 。如果转载,请注明出处,在未经作者同意下将本文用于商业用途,将追究其法律责任。如果有问题,请联系作者 wheeleast@gmail.com 前言: 距离上次发文章,也快有半个月的时间了,这半个月的时间里又在学习机器学习的道路上摸索着前进,积累了一点心得,以后会慢慢的写写这些心得。写文章是促进自己对知识认识的一个好方法,看书的时候往往不是非常细,所以有些公式、知识点什么的就一带而过,里面的一些具体意义就不容易理解了。而写文章,特别是写科普性的文章,需要对里面的具体意义弄明白,甚至还要能举出更生动的例子,这是一个挑战。为了写文章,往往需要把之前自己认为看明白的内容重新理解一下。 机器学习可不是一个完全的技术性的东西,之前和部门老大在outing的时候一直在聊这个问题,机器学习绝对不是一个一个孤立的算法堆砌起来的,想要像看《算法导论》这样看机器学习是个不可取的方法,机器学习里面有几个东西一直贯穿全书,比如说数据的分布、最大似然(以及求极值的几个方法,不过这个比较数学了),偏差、方差的权衡,还有特征选择,模型选择,混合模型等等知识,这些知识像砖头、水泥一样构成了机器学习里面的一个个的算法。想要真正学好这些算法,一定要静下心来将这些基础知识弄清楚,才能够真正理解、实现好各种机器学习算法。 今天的主题是线性回归,也会提一下偏差、方差的均衡这个主题。 线性回归定义: 在 上一个主题 中,也是一个与回归相关的,不过上一节更侧重于梯度这个概念,这一节更侧重于回归本身与偏差和方差的概念。 回归最简单的定义是,给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小。 上图所示,给出一个点集(x,y), 需要用一个函数去拟合这个点集,蓝色的点是点集中的点,而红色的曲线是函数的曲线,第一张图是一个最简单的模型,对应的函数为y = f(x) = ax + b,这个就是一个线性函数, 第二张图是二次曲线,对应的函数是y = f(x) = ax^2 + b。 第三张图我也不知道是什么函数,瞎画的。 第四张图可以认为是一个N次曲线,N = M - 1,M是点集中点的个数,有一个定理是,对于给定的M个点,我们可以用一个M - 1次的函数去完美的经过这个点集。 真正的线性回归,不仅会考虑使得曲线与给定点集的拟合程度最好,还会考虑模型最简单,这个话题我们将在本章后面的偏差、方差的权衡中深入的说,另外这个话题还可以参考我之前的一篇文章: 贝叶斯、概率分布与机器学习 ,里面对模型复杂度的问题也进行了一些讨论。 线性回归(linear regression),并非是指的线性函数,也就是 (为了方便起见,以后向量我就不在上面加箭头了) x0,x1…表示一个点不同的维度,比如说上一节中提到的,房子的价钱是由包括面积、房间的个数、房屋的朝向等等因素去决定的。而是用广义的线性函数: wj是系数,w就是这个系数组成的向量,它影响着不同维度的Φj(x)在回归函数中的影响度,比如说对于房屋的售价来说,房间朝向的w一定比房间面积的w更小。Φ(x)是可以换成不同的函数,不一定要求Φ(x)=x,这样的模型我们认为是广义线性模型。 最小二乘法与最大似然: 这个话题在 此处 有一个很详细的讨论,我这里主要谈谈这个问题的理解。最小二乘法是线性回归中一个最简单的方法,它的推导有一个假设,就是 回归函数的估计值与真实值间的误差假设是一个高斯分布 。这个用公式来表示是下面的样子: ,y(x,w)就是给定了w系数向量下的回归函数的估计值,而t就是真实值了,ε表示误差。我们可以接下来推出下面的式子: 这是一个简单的条件概率表达式,表示在给定了x,w,β的情况下,得到真实值t的概率,由于ε服从高斯分布,则从估计值到真实值间的概率也是高斯分布的,看起来像下面的样子: 贝叶斯、概率分布与机器学习 这篇文章中对分布影响结果这个话题讨论比较多,可以回过头去看看,由于最小二乘法有这样一个假设,则会导致,如果我们给出的估计函数y(x,w)与真实值t不是高斯分布的,甚至是一个差距很大的分布,那么算出来的模型一定是不正确的,当给定一个新的点x’想要求出一个估计值y’,与真实值t’可能就非常的远了。 概率分布是一个可爱又可恨的东西,当我们能够准确的预知某些数据的分布时,那我们可以做出一个非常精确的模型去预测它,但是在大多数真实的应用场景中,数据的分布是不可知的,我们也很难去用一个分布、甚至多个分布的混合去表示数据的真实分布,比如说给定了1亿篇网页,希望用一个现有的分布(比如说混合高斯分布)去匹配里面词频的分布,是不可能的。在这种情况下,我们只能得到词的出现概率,比如p(的)的概率是0.5,也就是一个网页有1/2的概率出现“的”。如果一个算法,是对里面的分布进行了某些假设,那么可能这个算法在真实的应用中就会表现欠佳。 最小二乘法对于类似的一个复杂问题,就很无力了 偏差、方差的权衡(trade-off): 偏差(bias)和方差(variance)是统计学的概念,刚进公司的时候,看到每个人的嘴里随时蹦出这两个词,觉得很可怕。首先得明确的,方差是多个模型间的比较,而非对一个模型而言的,对于单独的一个模型,比如说: 这样的一个给定了具体系数的估计函数,是不能说f(x)的方差是多少。而偏差可以是单个数据集中的,也可以是多个数据集中的,这个得看具体的定义。 方差和偏差一般来说,是从同一个数据集中,用科学的采样方法得到几个不同的子数据集,用这些子数据集得到的模型,就可以谈他们的方差和偏差的情况了。方差和偏差的变化一般是和模型的复杂程度成正比的,就像本文一开始那四张小图片一样,当我们一味的追求模型精确匹配,则可能会导致同一组数据训练出不同的模型,它们之间的差异非常大。这就叫做方差,不过他们的偏差就很小了,如下图所示: 上图的蓝色和绿色的点是表示一个数据集中采样得到的不同的子数据集,我们有两个N次的曲线去拟合这些点集,则可以得到两条曲线(蓝色和深绿色),它们的差异就很大,但是他们本是由同一个数据集生成的,这个就是模型复杂造成的方差大。模型越复杂,偏差就越小,而模型越简单,偏差就越大,方差和偏差是按下面的方式进行变化的: 当方差和偏差加起来最优的点,就是我们最佳的模型复杂度。 用一个很通俗的例子来说,现在咱们国家一味的追求GDP,GDP就像是模型的偏差,国家希望现有的GDP和目标的GDP差异尽量的小,但是其中使用了很多复杂的手段,比如说倒卖土地、强拆等等,这个增加了模型的复杂度,也会使得偏差(居民的收入分配)变大,穷的人越穷(被赶出城市的人与进入城市买不起房的人),富的人越富(倒卖土地的人与卖房子的人)。其实本来模型不需要这么复杂,能够让居民的收入分配与国家的发展取得一个平衡的模型是最好的模型。 最后还是用数学的语言来描述一下偏差和方差: E(L)是损失函数,h(x)表示真实值的平均,第一部分是与y(模型的估计函数)有关的,这个部分是由于我们选择不同的估计函数(模型)带来的差异,而第二部分是与y无关的,这个部分可以认为是模型的固有噪声。 对于上面公式的第一部分,我们可以化成下面的形式: 这个部分在PRML的1.5.5推导,前一半是表示偏差,而后一半表示方差,我们可以得出:损失函数=偏差^2+方差+固有噪音。 下图也来自PRML: 这是一个曲线拟合的问题,对同分布的不同的数据集进行了多次的曲线拟合,左边表示方差,右边表示偏差,绿色是真实值函数。ln lambda表示模型的复杂程度,这个值越小,表示模型的复杂程度越高,在第一行,大家的复杂度都很低(每个人都很穷)的时候,方差是很小的,但是偏差同样很小(国家也很穷),但是到了最后一幅图,我们可以得到,每个人的复杂程度都很高的情况下,不同的函数就有着天壤之别了(贫富差异大),但是偏差就很小了(国家很富有)。 本文转载自: http://www.cnblogs.com/LeftNotEasy/archive/2010/12/19/mathmatic_in_machine_learning_2_regression_and_bias_variance_trade_off.html
个人分类: MachineLearning|2843 次阅读|0 个评论
[转载]【研究】机器学习改变工作与生活
热度 1 timy 2012-3-21 02:20
转载于: http://www.infzm.com/content/72566 作者: 李航 最后更新:03-20 17:38:17 机器学习是关于计算机基于数据构建模型并运用模型来模拟人类智能活动的一门学科。随着计算机与网络的飞速发展,机器学习在我们的生活与工作中起着越来越大的作用,正在改变着我们的生活和工作。 1.日常生活中的机器学习 我们在日常生活经常使用数码相机。你也许不知道,数码相机上的人脸检测技术是基于机器学习技术的!我认识的三位了不起的科学家与工程 师:Robert Schapire,Paul Viola,劳世竑。他们的研究都与人脸检测技术有关。Robert与Yoav Freund一起发明了非常有效的机器学习算法AdaBoost。Paul将AdaBoost算法成功地应用到人脸检测。劳世竑和他领导的Omron团队 将AdaBoost人脸检测算法做到了芯片上。据说现在世界上有百分之六七十的数码相机上的人脸检测都是用Omron的芯片。 在我们的工作与生活中,这种例子曾出不穷。互联网搜索、在线广告、机器翻译、手写识别、垃圾邮件过滤等等都是以机器学习为核心技术的。 不久以前,机器学习国际大会(International Conference on Machine Learning,ICML 2011)在美国华盛顿州的Bellevue市举行。约有7百多位科研人员、教授、学生参加,创造了历史最高纪录。大会的三个主题演讲分别介绍了机器学习 在微软的Kinect游戏机用户感应系统、谷歌的Goggles图片搜索系统、IBM的 Watson自动问答系统中的应用。这些事实让人预感到机器学习被更广泛应用的一个新时代的到来。 2.机器学习与人工智能 智能化是计算机发展的必然趋势。人类从事的各种智能性活动,如数学、美术、语言、音乐、运动、学习、游戏、设计、研究、教学等等,让计算机做起来,现在还都是很困难的。这是几十年来人工智能研究得到的结论。 人工智能研究中,人们曾尝试过三条路。我将它们称之为外观(extrospection)、内省(introspection)和模拟(simulation)。 所谓外观,指的是观察人的大脑工作情况,探求其原理,解明其机制,从而在计算机上“实现”人类大脑的功能。比如,计算神经学 (computational neuroscience)的研究就是基于这个动机的。然而,人脑的复杂信息处理过程很难观测和模型化。就像我们仅仅观测某个计算机内的信号传输过程,很 难判断它正在做什么样的计算一样。 内省就是反思自己的智能行为,将自己意识到的推理、知识等记录到计算机上,从而“再现”人的智能,比如专家系统(expert system)的尝试就属于这一类。内省的最大问题是它很难泛化,也就是举一反三。无论是在什么样的图片中,甚至是在抽象画中,人们能够轻而易举地找出其 中的人脸。这种能力称为泛化能力。通过内省的方法很难使计算机拥有泛化能力。自己的智能原理,对人类来说很有可能是不可知的(agnostic)。笼子里 的老鼠可能认为触动把手是得到食物的“原因”,但它永远也不能了解到整个笼子的食物投放机制。 模拟就是将人的智能化操作的输入与输出记录下来,用模型来模拟,使模型对输入输出给出同人类相似的表现,比如统计机器学习(statistical machine learning)。实践表明,统计机器学习是实现计算机智能化这一目标的最有效手段。统计学习最大的优点是它具有泛化能力;而缺点是它得到的永远是统计 意义下的最优解(例如:人脸检测)。现在当人们提到机器学习时,通常是指统计机器学习或统计学习。 3.机器学习的优缺点 下面看一个简单的例子。由这个例子可以说明统计学习的基本原理,以及由此带来的优缺点。 假设我们观测到一个系统的输出是一系列的1和0,要预测它的下一个输出是什么。如果观测数据中1和0各占一半,那么我们只能以0.5的准确率做出预 测。但是,如果我们同时观测到这个系统有输入,也是一系列的1和0,并且输入是1时输出是0的比例是0.9,输入是0时输出是1的比例也是0.9。这样我 们就可以从已给数据中学到“模型”,根据系统的输入预测其输出,并且把预测准确率从0.5提高到0.9。以上就是统计学习,特别是监督学习的基本想法。事 实上,这是世界上最简单的统计机器学习模型!条件概率分布P(Y|X),其中随机变量X与Y表示输入与输出,取值1与0。可以认为所有的监督学习模型都是 这个简单模型的复杂版。我们用这个模型根据给定的输入特征,预测可能的输出。 统计学习最大的优点是它具有泛化能力,对于任意给定的X,它都能预测相应的Y。Vapnik的统计学习理论还能对预测能力进行分析,给出泛化上界。但从这个例子中也可以看到统计学习的预测准确率是不能保证100%的。比如,人脸检测会出错,汉语分词会出错。 统计学习是“乡下人”的办法。有个笑话。一个乡下人进城,到餐馆吃饭,不知如何在餐馆用餐,就模仿旁边的人。别人做什么,他也就学着做什么。邻桌的 一位故意戏弄他,将桌上的蜡烛卷在饼里,趁乡下人不注意时把蜡烛扔到地上,然后咬了一口卷着的饼。乡下人也跟着学,大咬了一口自己的饼。统计学习只是根据 观测的输入与输出,“模仿”人的智能行为。有时能够显得非常智能化。但它本质上只是基于数据的,是统计平均意义下的“模仿”。如果观测不到关键的特征,它 就会去“咬卷着蜡烛的饼”。 4.机器学习与互联网搜索 我与同事们在从事互联网搜索相关的研究。据调查,60%的互联网用户每天至少使用一次搜索引擎,90%的互联网用户每周至少使用一次搜索引擎。搜索引擎大大提高了人们工作、学习以及生活的质量。而互联网搜索的基本技术中,机器学习占据着重要的位置。 在我看来,互联网搜索有两大挑战和一大优势。挑战包括规模挑战与人工智能挑战;优势主要是规模优势。 规模挑战: 比如,搜索引擎能看到trillion量级的URL,每天有几亿、几十亿的用户查询,需要成千上万台的机器抓取、处理、索引网页,为用户提供服务。这需要系统、软件、硬件等多方面的技术研发与创新。 人工智能挑战: 搜索最终是人工智能问题。搜索系统需要帮助用户尽快、尽准、尽全地找到信息。这从本质上需要对用户需求(如查询语 句),以及互联网上的文本、图像、视频等多种数据进行“理解”。现在的搜索引擎通过关键词匹配以及其他“信号”,能够在很大程度上帮助用户找到信息。但 是,还是远远不够的。 规模优势: 互联网上有大量的内容数据,搜索引擎记录了大量的用户行为数据。这些数据能够帮助我们找到看似很难找到的信息。比如,“纽 约市的人口是多少”,“约市的人口是多少”,“春风又绿江南岸作者是谁”。注意这些数据都是遵循幂函数分布的。它们能帮助Head(高频)需求,对 tail(低频)需求往往是困难的。所以,对tail来说人工智能的挑战就更显著。 现在的互联网搜索在一定程度上能够满足用户信息访问的一些基本需求。这归结于许多尖端技术包括机器学习技术的成功开发与应用,比如排序学习算法、网页重要度算法等等。这些机器学习算法在一定程度上能够利用规模优势去应对人工智能挑战。 但是、当今的互联网搜索距离 “有问必答,且准、快、全、好”这一理想还是有一定距离的。这就需要开发出更多更好的机器学习技术解决人工智能的挑战,特别是在tail中的挑战。 展望未来,机器学习技术的研究与开发会帮助我们让明天更美好! (本文图片来源网络,作者李航是微软亚洲研究院互联网搜索与挖掘组高级研究员及主任研究员,研究方向包括信息检索,自然语言处理,统计机器学习,及数据挖掘)
个人分类: 机器学习|3262 次阅读|1 个评论
机器学习用于医疗(120205)
热度 11 ymin 2012-2-5 10:15
机器学习用于医疗(120205) 闵应骅 人类疾病的防治是一个永恒的主题,什么经济危机之下也不会衰退。大家都说,医生越老越值钱。那是因为他们医疗的经验有助于对疾病的诊断和治疗。他们见的病例多,知道很多类似病例的症状和治疗效果。类推一下,就可能对当前的病人有利。现在,有了计算机,有了互联网,积累的病例资料千千万。这些海量数据所积累的病例和数据不是任何一个高明的医生可以比拟的。问题是怎么把这些经验从这些数据中学习出来。所以,机器学习对于医疗应该非常有用。 西医讲究医疗仪器测试手段,譬如量血压,X-射线,核磁共振,CT,心电图,甚至是基因序列,等等。而中医的望闻问切,更注重患者的历史情况。芝加哥大学一位教授说,用X-射线断层扫描可能有12-30%的肺癌患者漏诊。1980年代以后,计算机科学家基于特征的机器学习,抽出图像的形态学特征,纹理差异,去识别反常的纹路。但即使这样,仍然可能漏掉某些医生都可以看得出来的癌症。有时,计算机寻找的特征不明显,或者被骨头所遮盖,而识别不出来。所以,计算机需要问单个像素的强度值。由于现代计算机功能强大,该系统可以达到97%的精确度。 问题是基于特征的算法,对一个肺癌患者可能错误地发现5处癌变,而基于像素的方法只有1次误报,没有漏报。IBM阿尔马登研究中心把机器学习用于各种不同的数据,譬如生命特征数据,超声波心动图数据,人口统计学数据,绘制患者若干年的医疗史图像,比较成百上千人的病史,寻找类似病例,以选择诊断和治疗方案。这种办法还能帮助年青的医生减少要求专家会诊的机会。当然,这个系统还需要经过管理部门的批准才能投入使用。 这种需求也要求机器学习技术要有新的进展。譬如计算机要能像医生一样,根据心电图的波形确认某种类型的心脏病。有人开发一个新的函数,称为带约束的非刚性翻译变换,来分析两个心电图波形的相似度。 疾病的预测也很重要,譬如根据体重和血压可以预测一个人的心脏病风险。如果能用上许多人的历史经历,这种预见性的可信度就会增加。计算机采集患者年龄、血压和检测数据,在数据库里面建立一个模型。譬如50-55岁的人,对于每一个变量的变化,建立模型,预测该患者最可能的前景。这些变量可以有几百个,这在原有的医学科学里是没有的。5年前,计算机可能要花半小时来建立这些模型,但现在,也许只要1分钟,进行门诊的实时诊断。这种预测还能预测疾病传播到其他器官的可能性,是大夫决定应该留患者住院,还是回家用抗生素。 鉴于电子病历的推广,机器学习对医疗的作用会越来越大。特别是采用基因数据,如果让它有意义,其计算模型必然更加复杂,但基因测序的花费可以和其他领域的数据挖掘和模式识别的花费差不多。基因数据的分析,其数据之多,模型之复杂是人在纸上无法完成的。 积累许多人的病历数据和老医生的经验,也许是中西医结合的一条路。但是,机器学习用于医疗,有一个难点,那就是搞机器学习的人不一定懂医疗,而懂医疗的人不懂机器学习。要二者都懂的人,需要培养。现在一个普遍的办法是搞机器学习的人制作一些工具,给医生用。本人并不欣赏这种办法。搞计算机的人制作一个工具并不困难,问题是这个工具解不解决问题。做工具的人自己都没搞清楚怎么诊断和治疗,就某一个应用就大肆宣传他的医疗工具,常常是会误人的。所以,我们需要加强多领域的合作,培养多学科的人才,才能把这事办好。
个人分类: 计算机|6401 次阅读|24 个评论
[转载]林达华 Dahua Lin 对数学的新思考
xiangfasong 2011-12-11 09:56
在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。 为什么要深入数学的世界 作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要 想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来这个学校的时候,并没有预料到我将会有一个深入数学的旅 程。我的导师最初希望我去做的题目,是对appearance和motion建立一个unified的model。这个题目在当今Computer Vision中百花齐放的世界中并没有任何特别的地方。事实上,使用各种Graphical Model把各种东西联合在一起framework,在近年的论文中并不少见。 我不否认现在广泛流行的Graphical Model是对复杂现象建模的有力工具,但是,我认为它不是panacea,并不能取代对于所研究的问题的深入的钻研。如果统计学习包治百病,那么很多 “下游”的学科也就没有存在的必要了。事实上,开始的时候,我也是和Vision中很多人一样,想着去做一个Graphical Model——我的导师指出,这样的做法只是重复一些标准的流程,并没有很大的价值。经过很长时间的反复,另外一个路径慢慢被确立下来——我们相信,一个 图像是通过大量“原子”的某种空间分布构成的,原子群的运动形成了动态的可视过程。微观意义下的单个原子运动,和宏观意义下的整体分布的变换存在着深刻的 联系——这需要我们去发掘。 在深入探索这个题目的过程中,遇到了很多很多的问题,如何描述一个一般的运动过程,如何建立一个稳定并且广泛适用的原子表达,如何刻画微观运动和宏观分布变换的联系,还有很多。在这个过程中,我发现了两个事情: 我原有的数学基础已经远远不能适应我对这些问题的深入研究。 在数学中,有很多思想和工具,是非常适合解决这些问题的,只是没有被很多的应用科学的研究者重视。 于是,我决心开始深入数学这个浩瀚大海,希望在我再次走出来的时候,我已经有了更强大的武器去面对这些问题的挑战。 我的游历并没有结束,我的视野相比于这个博大精深的世界的依旧显得非常狭窄。在这里,我只是说说,在我的眼中,数学如何一步步从初级向高级发展,更高级别的数学对于具体应用究竟有何好处。 集合论:现代数学的共同基础 现代数学有数不清的分支,但是,它们都有一个共同的基础——集合论——因为 它,数学这个庞大的家族有个共同的语言。集合论中有一些最基本的概念:集合(set),关系(relation),函数(function),等价 (equivalence),是在其它数学分支的语言中几乎必然存在的。对于这些简单概念的理解,是进一步学些别的数学的基础。我相信,理工科大学生对于 这些都不会陌生。 不过,有一个很重要的东西就不见得那么家喻户晓了——那就是“选择公理” (Axiom of Choice)。这个公理的意思是“任意的一群非空集合,一定可以从每个集合中各拿出一个元素。”——似乎是显然得不能再显然的命题。不过,这个貌似平常 的公理却能演绎出一些比较奇怪的结论,比如巴拿赫-塔斯基分球定理——“一个球,能分成五个部分,对它们进行一系列刚性变换(平移旋转)后,能组合成两个一样大小的球”。正因为这些完全有悖常识的结论,导致数学界曾经在相当长时间里对于是否接受它有着激烈争论。现在,主流数学家对于它应该是基本接受的,因为很多数学分支的重要定理都依赖于它。在我们后面要回说到的学科里面,下面的定理依赖于选择公理: 拓扑学:Baire Category Theorem 实分析(测度理论):Lebesgue 不可测集的存在性 泛函分析四个主要定理:Hahn-Banach Extension Theorem, Banach-Steinhaus Theorem (Uniform boundedness principle), Open Mapping Theorem, Closed Graph Theorem 在集合论的基础上,现代数学有两大家族:分析(Analysis)和代数(Algebra)。至于其它的,比如几何和概率论,在古典数学时代,它们是和代数并列的,但是它们的现代版本则基本是建立在分析或者代数的基础上,因此从现代意义说,它们和分析与代数并不是平行的关系。 分析:在极限基础上建立的宏伟大厦 微积分:分析的古典时代——从牛顿到柯西 先说说分析(Analysis)吧,它是从微积分(Caculus)发展起来 的——这也是有些微积分教材名字叫“数学分析”的原因。不过,分析的范畴远不只是这些,我们在大学一年级学习的微积分只能算是对古典分析的入门。分析研究 的对象很多,包括导数(derivatives),积分(integral),微分方程(differential equation),还有级数(infinite series)——这些基本的概念,在初等的微积分里面都有介绍。如果说有一个思想贯穿其中,那就是极限——这是整个分析(不仅仅是微积分)的灵魂。 一个很多人都听说过的故事,就是牛顿(Newton)和莱布尼茨 (Leibniz)关于微积分发明权的争论。事实上,在他们的时代,很多微积分的工具开始运用在科学和工程之中,但是,微积分的基础并没有真正建立。那个 长时间一直解释不清楚的“无穷小量”的幽灵,困扰了数学界一百多年的时间——这就是“第二次数学危机”。直到柯西用数列极限的观点重新建立了微积分的基本 概念,这门学科才开始有了一个比较坚实的基础。直到今天,整个分析的大厦还是建立在极限的基石之上。 柯西(Cauchy)为分析的发展提供了一种严密的语言,但是他并没有解决微 积分的全部问题。在19世纪的时候,分析的世界仍然有着一些挥之不去的乌云。而其中最重要的一个没有解决的是“函数是否可积的问题”。我们在现在的微积分 课本中学到的那种通过“无限分割区间,取矩阵面积和的极限”的积分,是大约在1850年由黎曼(Riemann)提出的,叫做黎曼积分。但是,什么函数存 在黎曼积分呢(黎曼可积)?数学家们很早就证明了,定义在闭区间内的连续函数是黎曼可积的。可是,这样的结果并不令人满意,工程师们需要对分段连续函数的 函数积分。 实分析:在实数理论和测度理论上建立起现代分析 在19世纪中后期,不连续函数的可积性问题一直是分析的重要课题。对于定义在 闭区间上的黎曼积分的研究发现,可积性的关键在于“不连续的点足够少”。只有有限处不连续的函数是可积的,可是很多有数学家们构造出很多在无限处不连续的 可积函数。显然,在衡量点集大小的时候,有限和无限并不是一种合适的标准。在探讨“点集大小”这个问题的过程中,数学家发现实数轴——这个他们曾经以为已 经充分理解的东西——有着许多他们没有想到的特性。在极限思想的支持下,实数理论在这个时候被建立起来,它的标志是对实数完备性进行刻画的几条等价的定理 (确界定理,区间套定理,柯西收敛定理,Bolzano-Weierstrass Theorem和Heine-Borel Theorem等等)——这些定理明确表达出实数和有理数的根本区别:完备性(很不严格的说,就是对极限运算封闭)。随着对实数认识的深入,如何测量“点 集大小”的问题也取得了突破,勒贝格创造性地把关于集合的代数,和Outer content(就是“外测度”的一个雏形)的概念结合起来,建立了测度理论(Measure Theory),并且进一步建立了以测度为基础的积分——勒贝格(Lebesgue Integral)。在这个新的积分概念的支持下,可积性问题变得一目了然。 上面说到的实数理论,测度理论和勒贝格积分,构成了我们现在称为实分析 (Real Analysis)的数学分支,有些书也叫实变函数论。对于应用科学来说,实分析似乎没有古典微积分那么“实用”——很难直接基于它得到什么算法。而且, 它要解决的某些“难题”——比如处处不连续的函数,或者处处连续而处处不可微的函数——在工程师的眼中,并不现实。但是,我认为,它并不是一种纯数学概念 游戏,它的现实意义在于为许多现代的应用数学分支提供坚实的基础。下面,我仅仅列举几条它的用处: 黎曼可积的函数空间不是完备的,但是勒贝格可积的函数空间是完备的。简单的 说,一个黎曼可积的函数列收敛到的那个函数不一定是黎曼可积的,但是勒贝格可积的函数列必定收敛到一个勒贝格可积的函数。在泛函分析,还有逼近理论中,经 常需要讨论“函数的极限”,或者“函数的级数”,如果用黎曼积分的概念,这种讨论几乎不可想像。我们有时看一些paper中提到Lp函数空间,就是基于勒 贝格积分。 勒贝格积分是傅立叶变换(这东西在工程中到处都是)的基础。很多关于信号处理的初等教材,可能绕过了勒贝格积分,直接讲点面对实用的东西而不谈它的数学基础,但是,对于深层次的研究问题——特别是希望在理论中能做一些工作——这并不是总能绕过去。 在下面,我们还会看到,测度理论是现代概率论的基础。 拓扑学:分析从实数轴推广到一般空间——现代分析的抽象基础 随着实数理论的建立,大家开始把极限和连续推广到更一般的地方的分析。事实 上,很多基于实数的概念和定理并不是实数特有的。很多特性可以抽象出来,推广到更一般的空间里面。对于实数轴的推广,促成了点集拓扑学(Point- set Topology)的建立。很多原来只存在于实数中的概念,被提取出来,进行一般性的讨论。在拓扑学里面,有4个C构成了它的核心: Closed set(闭集合)。在现代的拓扑学的公理化体系中,开集和闭集是最基本的概念。一切从此引申。这两个概念是开区间和闭区间的推广,它们的根本地位,并不是 一开始就被认识到的。经过相当长的时间,人们才认识到:开集的概念是连续性的基础,而闭集对极限运算封闭——而极限正是分析的根基。 Continuous function (连续函数)。连续函数在微积分里面有个用epsilon-delta语言给出的定义,在拓扑学中它的定义是“开集的原像是开集的函数”。第二个定义和第 一个是等价的,只是用更抽象的语言进行了改写。我个人认为,它的第三个(等价)定义才从根本上揭示连续函数的本质——“连续函数是保持极限运算的函数” ——比如y是数列x1, x2, x3, … 的极限, 那么如果 f 是连续函数,那么 f(y) 就是 f(x1), f(x2), f(x3), …的极限。连续函数的重要性,可以从别的分支学科中进行类比。比如群论中,基础的运算是“乘法”,对于群,最重要的映射叫“同态映射”——保持“乘法”的 映射。在分析中,基础运算是“极限”,因此连续函数在分析中的地位,和同态映射在代数中的地位是相当的。 Connected set (连通集合)。比它略为窄一点的概念叫(Path connected),就是集合中任意两点都存在连续路径相连——可能是一般人理解的概念。一般意义下的连通概念稍微抽象一些。在我看来,连通性有两个重 要的用场:一个是用于证明一般的中值定理(Intermediate Value Theorem),还有就是代数拓扑,拓扑群论和李群论中讨论根本群(Fundamental Group)的阶。 Compact set(紧集)。Compactness似乎在初等微积分里面没有专门出现,不过有几条实数上的定理和它其实是有关系的。比如,“有界数列必然存在收敛子 列”——用compactness的语言来说就是——“实数空间中有界闭集是紧的”。它在拓扑学中的一般定义是一个听上去比较抽象的东西——“紧集的任意 开覆盖存在有限子覆盖”。这个定义在讨论拓扑学的定理时很方便,它在很多时候能帮助实现从无限到有限的转换。对于分析来说,用得更多的是它的另一种形式 ——“紧集中的数列必存在收敛子列”——它体现了分析中最重要的“极限”。Compactness在现代分析中运用极广,无法尽述。微积分中的两个重要定 理:极值定理(Extreme Value Theory),和一致收敛定理(Uniform Convergence Theorem)就可以借助它推广到一般的形式。 从某种意义上说,点集拓扑学可以看成是关于“极限”的一般理论,它抽象于实数理论,它的概念成为几乎所有现代分析学科的通用语言,也是整个现代分析的根基所在。 微分几何:流形上的分析——在拓扑空间上引入微分结构 拓扑学把极限的概念推广到一般的拓扑空间,但这不是故事的结束,而仅仅是开 始。在微积分里面,极限之后我们有微分,求导,积分。这些东西也可以推广到拓扑空间,在拓扑学的基础上建立起来——这就是微分几何。从教学上说,微分几何 的教材,有两种不同的类型,一种是建立在古典微机分的基础上的“古典微分几何”,主要是关于二维和三维空间中的一些几何量的计算,比如曲率。还有一种是建 立在现代拓扑学的基础上,这里姑且称为“现代微分几何”——它的核心概念就是“流形”(manifold)——就是在拓扑空间的基础上加了一套可以进行微 分运算的结构。现代微分几何是一门非常丰富的学科。比如一般流形上的微分的定义就比传统的微分丰富,我自己就见过三种从不同角度给出的等价定义——这一方 面让事情变得复杂一些,但是另外一个方面它给了同一个概念的不同理解,往往在解决问题时会引出不同的思路。除了推广微积分的概念以外,还引入了很多新概 念:tangent space, cotangent space, push forward, pull back, fibre bundle, flow, immersion, submersion 等等。 近些年,流形在machine learning似乎相当时髦。但是,坦率地说,要弄懂一些基本的流形算法, 甚至“创造”一些流形算法,并不需要多少微分几何的基础。对我的研究来说,微分几何最重要的应用就是建立在它之上的另外一个分支:李群和李代数——这是数 学中两大家族分析和代数的一个漂亮的联姻。分析和代数的另外一处重要的结合则是泛函分析,以及在其基础上的调和分析。 代数:一个抽象的世界 关于抽象代数 回过头来,再说说另一个大家族——代数。 如果说古典微积分是分析的入门,那么现代代数的入门点则是两个部分:线性代数(linear algebra)和基础的抽象代数(abstract algebra)——据说国内一些教材称之为近世代数。 代数——名称上研究的似乎是数,在我看来,主要研究的是运算规则。一门代数, 其实都是从某种具体的运算体系中抽象出一些基本规则,建立一个公理体系,然后在这基础上进行研究。一个集合再加上一套运算规则,就构成一个代数结构。在主 要的代数结构中,最简单的是群(Group)——它只有一种符合结合率的可逆运算,通常叫“乘法”。如果,这种运算也符合交换率,那么就叫阿贝尔群 (Abelian Group)。如果有两种运算,一种叫加法,满足交换率和结合率,一种叫乘法,满足结合率,它们之间满足分配率,这种丰富一点的结构叫做环(Ring), 如果环上的乘法满足交换率,就叫可交换环(Commutative Ring)。如果,一个环的加法和乘法具有了所有的良好性质,那么就成为一个域(Field)。基于域,我们可以建立一种新的结构,能进行加法和数乘,就 构成了线性代数(Linear algebra)。 代数的好处在于,它只关心运算规则的演绎,而不管参与运算的对象。只要定义恰 当,完全可以让一只猫乘一只狗得到一头猪:-)。基于抽象运算规则得到的所有定理完全可以运用于上面说的猫狗乘法。当然,在实际运用中,我们还是希望用它 干点有意义的事情。学过抽象代数的都知道,基于几条最简单的规则,比如结合律,就能导出非常多的重要结论——这些结论可以应用到一切满足这些简单规则的地 方——这是代数的威力所在,我们不再需要为每一个具体领域重新建立这么多的定理。 抽象代数有在一些基础定理的基础上,进一步的研究往往分为两个流派:研究有限 的离散代数结构(比如有限群和有限域),这部分内容通常用于数论,编码,和整数方程这些地方;另外一个流派是研究连续的代数结构,通常和拓扑与分析联系在 一起(比如拓扑群,李群)。我在学习中的focus主要是后者。 线性代数:“线性”的基础地位 对于做Learning, vision, optimization或者statistics的人来说,接触最多的莫过于线性代数——这也是我们在大学低年级就开始学习的。线性代数,包括建立在它 基础上的各种学科,最核心的两个概念是向量空间和线性变换。线性变换在线性代数中的地位,和连续函数在分析中的地位,或者同态映射在群论中的地位是一样的 ——它是保持基础运算(加法和数乘)的映射。 在learning中有这样的一种倾向——鄙视线性算法,标榜非线性。也许在 很多场合下面,我们需要非线性来描述复杂的现实世界,但是无论什么时候,线性都是具有根本地位的。没有线性的基础,就不可能存在所谓的非线性推广。我们常 用的非线性化的方法包括流形和kernelization,这两者都需要在某个阶段回归线性。流形需要在每个局部建立和线性空间的映射,通过把许多局部线 性空间连接起来形成非线性;而kernerlization则是通过置换内积结构把原线性空间“非线性”地映射到另外一个线性空间,再进行线性空间中所能 进行的操作。而在分析领域,线性的运算更是无处不在,微分,积分,傅立叶变换,拉普拉斯变换,还有统计中的均值,通通都是线性的。 泛函分析:从有限维向无限维迈进 在大学中学习的线性代数,它的简单主要因为它是在有限维空间进行的,因为有 限,我们无须借助于太多的分析手段。但是,有限维空间并不能有效地表达我们的世界——最重要的,函数构成了线性空间,可是它是无限维的。对函数进行的最重 要的运算都在无限维空间进行,比如傅立叶变换和小波分析。这表明了,为了研究函数(或者说连续信号),我们需要打破有限维空间的束缚,走入无限维的函数空 间——这里面的第一步,就是泛函分析。 泛函分析(Functional Analysis)是研究的是一般的线性空间,包括有限维和无限维,但是很多东西在有限维下显得很trivial,真正的困难往往在无限维的时候出现。在 泛函分析中,空间中的元素还是叫向量,但是线性变换通常会叫作“算子”(operator)。除了加法和数乘,这里进一步加入了一些运算,比如加入范数去 表达“向量的长度”或者“元素的距离”,这样的空间叫做“赋范线性空间”(normed space),再进一步的,可以加入内积运算,这样的空间叫“内积空间”(Inner product space)。 大家发现,当进入无限维的时间时,很多老的观念不再适用了,一切都需要重新审视。 所有的有限维空间都是完备的(柯西序列收敛),很多无限维空间却是不完备的(比如闭区间上的连续函数)。在这里,完备的空间有特殊的名称:完备的赋范空间叫巴拿赫空间(Banach space),完备的内积空间叫希尔伯特空间(Hilbert space)。 在有限维空间中空间和它的对偶空间的是完全同构的,而在无限维空间中,它们存在微妙的差别。 在有限维空间中,所有线性变换(矩阵)都是有界变换,而在无限维,很多算子是无界的(unbounded),最重要的一个例子是给函数求导。 在有限维空间中,一切有界闭集都是紧的,比如单位球。而在所有的无限维空间中,单位球都不是紧的——也就是说,可以在单位球内撒入无限个点,而不出现一个极限点。 在有限维空间中,线性变换(矩阵)的谱相当于全部的特征值,在无限维空间 中,算子的谱的结构比这个复杂得多,除了特征值组成的点谱(point spectrum),还有approximate point spectrum和residual spectrum。虽然复杂,但是,也更为有趣。由此形成了一个相当丰富的分支——算子谱论(Spectrum theory)。 在有限维空间中,任何一点对任何一个子空间总存在投影,而在无限维空间中, 这就不一定了,具有这种良好特性的子空间有个专门的名称切比雪夫空间(Chebyshev space)。这个概念是现代逼近理论的基础(approximation theory)。函数空间的逼近理论在Learning中应该有着非常重要的作用,但是现在看到的运用现代逼近理论的文章并不多。 继续往前:巴拿赫代数,调和分析,和李代数 基本的泛函分析继续往前走,有两个重要的方向。第一个是巴拿赫代数 (Banach Algebra),它就是在巴拿赫空间(完备的内积空间)的基础上引入乘法(这不同于数乘)。比如矩阵——它除了加法和数乘,还能做乘法——这就构成了一 个巴拿赫代数。除此以外,值域完备的有界算子,平方可积函数,都能构成巴拿赫代数。巴拿赫代数是泛函分析的抽象,很多对于有界算子导出的结论,还有算子谱 论中的许多定理,它们不仅仅对算子适用,它们其实可以从一般的巴拿赫代数中得到,并且应用在算子以外的地方。巴拿赫代数让你站在更高的高度看待泛函分析中 的结论,但是,我对它在实际问题中能比泛函分析能多带来什么东西还有待思考。 最能把泛函分析和实际问题在一起的另一个重要方向是调和分析 (Harmonic Analysis)。我在这里列举它的两个个子领域,傅立叶分析和小波分析,我想这已经能说明它的实际价值。它研究的最核心的问题就是怎么用基函数去逼近 和构造一个函数。它研究的是函数空间的问题,不可避免的必须以泛函分析为基础。除了傅立叶和小波,调和分析还研究一些很有用的函数空间,比如Hardy space,Sobolev space,这些空间有很多很好的性质,在工程中和物理学中都有很重要的应用。对于vision来说,调和分析在信号的表达,图像的构造,都是非常有用的 工具。 当分析和线性代数走在一起,产生了泛函分析和调和分析;当分析和群论走在一 起,我们就有了李群(Lie Group)和李代数(Lie Algebra)。它们给连续群上的元素赋予了代数结构。我一直认为这是一门非常漂亮的数学:在一个体系中,拓扑,微分和代数走到了一起。在一定条件下, 通过李群和李代数的联系,它让几何变换的结合变成了线性运算,让子群化为线性子空间,这样就为Learning中许多重要的模型和算法的引入到对几何运动 的建模创造了必要的条件。因此,我们相信李群和李代数对于vision有着重要意义,只不过学习它的道路可能会很艰辛,在它之前需要学习很多别的数学。 现代概率论:在现代分析基础上再生 最后,再简单说说很多Learning的研究者特别关心的数学分支:概率论。 自从Kolmogorov在上世纪30年代把测度引入概率论以来,测度理论就成为现代概率论的基础。在这里,概率定义为测度,随机变量定义为可测函数,条 件随机变量定义为可测函数在某个函数空间的投影,均值则是可测函数对于概率测度的积分。值得注意的是,很多的现代观点,开始以泛函分析的思路看待概率论的 基础概念,随机变量构成了一个向量空间,而带符号概率测度则构成了它的对偶空间,其中一方施加于对方就形成均值。角度虽然不一样,不过这两种方式殊途同 归,形成的基础是等价的。 在现代概率论的基础上,许多传统的分支得到了极大丰富,最有代表性的包括鞅论 (Martingale)——由研究赌博引发的理论,现在主要用于金融(这里可以看出赌博和金融的理论联系,:-P),布朗运动(Brownian Motion)——连续随机过程的基础,以及在此基础上建立的随机分析(Stochastic Calculus),包括随机积分(对随机过程的路径进行积分,其中比较有代表性的叫伊藤积分(Ito Integral)),和随机微分方程。对于连续几何运用建立概率模型以及对分布的变换的研究离不开这些方面的知识。
个人分类: 博文转载|4896 次阅读|0 个评论
关于机器学习、数据挖掘、模式识别的区别和联系
热度 2 peterjade 2011-11-8 16:43
求正解,欢迎个人发表。
个人分类: 问题|7245 次阅读|4 个评论
FastMap降维方法
xiaohai2008 2011-10-20 15:39
FastMap方法最原始文献为 ,该方法的最大优点就是速度快,具体来说,它的时间复杂度为 O ( p * n ),其中 p 为目标空间维数, n 为进行嵌入或映射操作的对象数量。 类似方法还有MetricMap(个人觉得这个还是比较难理解的) , Landmark MDS 等,而且Platt已经证明这三种方法均可归结于Nystrom方法 。 从实现的角度来说,FastMap方法和Landmark MDS均不难,而MetricMap可能会麻烦点。 本人参照 实现了FastMap方法,源代码见 fastmap.py ,该源代码比 中多了对out of sample对象的处理,而且采用了统一的方法。 本人认为FastMap方法虽然速度比较快,但精度不算太高(做过大量的实验,以后会贴出相关结果),不过可以结合MDS一块来使用。目前初始化MDS比较不错的方法是classical MDS,但classical MDS速度特别慢,因此可以采用FastMap、MetricMap或Landmark MDS得到的输出来初始化MDS,让MDS通过迭代的方法找到最优解(当然一般是局部最优解)。 参考文献: Christos Faloutsos and King-Ip (David) Lin, 1995. FastMap:a fast algorithm for indexing, data-mining andvisualization of traditional and multimedia datasets. Proceedings of the ACM SIGMOD International Conference onManagement of Data , Michael J. Carey and Donovan A. Schneider,eds., San Jose, California, 163-174. Jason Tsong-LiWang,XiongWang,DennisShasha,KaizhongZhang, 2005.MetricMap: An Embedding Technique for Processing Distance-based Queries in Metric Spaces.IEEE Transactions on Systems, Man, and Cybernetics: Part B: Cybernetics, Vol. 35, No. 5, pp.973--987. Vinde Silva, Joshua B.Tenenbaum, 2004.Sparse Multidimensional Scaling using Landmark Points. Technical Report,Stanford University. John C.Platt, 2005.FastMap, MetricMap, and landmark MDS are all Nystrom Algorithms. Proceedings of the 10th International Workshop on Artificial Intelligence and Statistics , pp.261-268. http://gromgull.net/blog/2009/08/fastmap-in-python/
个人分类: Python|8269 次阅读|0 个评论
斯坦福大学的免费“人工智能入门”课
热度 9 jiangxun 2011-10-15 08:36
作者:蒋迅 8月份,我曾经在我的 分享 里提供了一个 斯坦福大学“人工智能入门”提供免费线上课程 的链接。我不知道有多少人看到了这个链接,有多少人注册了这门课。 斯坦福大学的CS221课程“ 人工智能入门 ”允许任何人注册参与学习,无需支付任何费用,主要要求是有高速互联网接入和课本《 Artificial Intelligence: A Modern Approach 》。这是一门入门级的讲授人工智能的课程,讲师是 Sebastian Thrun 教授和Google研究主管 Peter Norvig 。线上的学生将需要和斯坦福的学生完成同样的任务,每周学习时间10小时,有家庭作业,期中和期末测试。在线学生也可以提问,讲师将利用类似 Google Moderator 的工具筛选出最值得回答的问题。他们最后将向完成课程的学生颁发证明。 人工智能入门已经开课了。它将到2011年12月16日结束。大牌学校的大牌教授上课,最后还有证书。这是一种享受啊!现在报名已经截止。据说有全世界十几万人上课。如果你错过了报名时间,但又想听他们的课,可以到去 YouTube ,从 课程介绍 开始看。 斯坦福大学计算机系这学期 有三门课在线免费 。除了“人工智能入门”以外,还有 Andrew Ng 教授的“ 机器学习导论 ”和 Jennifer Widom 教授的“ 数据库导论 ”。教授们鼓励在线上学习的学生组成小组互助学习,如 reddit 。 斯坦福大学计算机系的这些课程使用亚马逊的云计算和 Gradiance 的服务,它们的作业、考试等都是全自动的。可以说是网上教学的典范。对网上教学有兴趣的教授们也不妨去看一看。 如果你想听名牌大学的知名教授的课,还可以到 Academic Earth 去找(这个链接也在我的 分享 里)。那里有诸如麻省理工的Gilbert Strang、加大伯克利分校的Michael Hutchings、斯坦福大学的Stephen Boyd等。也有正在开课的Andrew Ng。我介绍过的 可罕学院 的一些课也在里面。不过,如果你在国内,很可能必须翻 墙才能看到。悲哉! 問 答: 这三门课的视频都是必须先注册后才能看到。人工智能的视频在YouTube上有,但必须翻墙。机器学习导论有旧的视频在blip.tv,我不知道从国内是否能上去。数据库的视频只能在注册后看到。现在还能注册: http://www.db-class.org/ 。 Introduction video: http://www.tudou.com/programs/view/btGGK93AJgY/ Download from: http://dbclass.aasfiiitm.com/video1.mp4 Introduction to Databases: Weekly Chat #1
个人分类: 科技|9546 次阅读|8 个评论
why hybrid? on machine learning vs. hand-coded rules in NLP
热度 1 liwei999 2011-10-8 04:00
Before we start discussing the topic of a hybrid NLP (Natural Language Processing) system, let us look at the concept of hybrid from our life experiences. I was driving a classical Camry for years and had never thought of a change to other brands because as a vehicle, there was really nothing to complain. Yes, style is old but I am getting old too, who beats whom? Until one day a few years ago when we needed to buy a new car to retire my damaged Camry. My daughter suggested hybrid, following the trend of going green. So I ended up driving a Prius ever since and fallen in love with it. It is quiet, with bluetooth and line-in, ideal for my iPhone music enjoyment. It has low emission and I finally can say bye to smog tests. It at least saves 1/3 gas. We could have gained all these benefits by purchasing an expensive all-electronic car but I want the same feel of power at freeway and dislike the concept of having to charge the car too frequently. Hybrid gets the best of both worlds for me now, and is not that more expensive. Now back to NLP. There are two major approaches to NLP, namely machine learning and grammar engineering (or hand-crafted rule system). As mentioned in previous posts, each has its own strengths and limitations, as summarized below. In general, a rule system is good at capturing a specific language phenomenon (trees) while machine learning is good at representing the general picture of the phenomena (forest). As a result, it is easier for rule systems to reach high precision but it takes a long time to develop enough rules to gradually raise the recall. Machine learning, on the other hand, has much higher recall, usually with compromise in precision or with a precision ceiling. Machine learning is good at simple, clear and coarse-grained task while rules are good at fine-grained tasks. One example is sentiment extraction. The coarse-grained task there is sentiment classification of documents (thumbs-up thumbs down), which can be achieved fast by a learning system. The fine-grained task for sentiment extraction involves extraction of sentiment details and the related actionable insights, including association of the sentiment with an object, differentiating positive/negative emotions from positive/negative behaviors, capturing the aspects or features of the object involved, decoding the motivation or reasons behind the sentiment,etc. In order to perform sophisticated tasks of extracting such details and actionable insights, rules are a better fit. The strength for machine learning lies in its retraining ability. In theory, the algorithm, once developed and debugged, remains stable and the improvement of a learning system can be expected once a larger and better quality corpus is used for retraining (in practice, retraining is not always easy: I have seen famous learning systems deployed in client basis for years without being retrained for various reasons). Rules, on the other hand, need to be manually crafted and enhanced. Supervised machine learning is more mature for applications but it requires a large labelled corpus. Unsupervised machine learning only needs raw corpus, but it is research oriented and more risky in application. A promising approach is called semi-supervised learning which only needs a small labelled corpus as seeds to guide the learning. We can also use rules to generate the initial corpus or seeds for semi-supervised learning. Both approaches involve knowledge bottlenecks. Rule systems's bottleneck is the skilled labor, it requires linguists or knowledge engineers to manually encode each rule in NLP, much like a software engineer in the daily work of coding. The biggest challenge to machine learning is the sparse data problem, which requires a very large labelled corpus to help overcome. The knowledge bottleneck for supervised machine learning is the labor required for labeling such a large corpus. We can build a system to combine the two approaches to complement each other. There are different ways of combining the two approaches in a hybrid system. One example is the practice we use in our product, where the results of insights are structured in a back-off model: high precision results from rules are ranked higher than the medium precision results returned by statistical systems or machine learning. This helps the system to reach configurable balance between precision and recall. When labelled data are available (e.g. the community has already built the corpus, or for some tasks, the public domain has the data, e.g. sentiment classification of movie reviews can use the review data with users' feedback on 5-star scale), and when the task is simple and clearly defined, using machine learning will greatly speed up the development of a capability. Not every task is suitable for both approaches. (Note that suitability is in the eyes of beholder: I have seen many passionate ML specialists willing to try everything in ML irrespective of the nature of the task: as an old saying goes, when you have a hammer, everything looks like a nail.) For example, machine learning is good at document classification whilerules are mostly powerless for such tasks. But for complicated tasks such as deep parsing, rules constructed by linguists usually achieve better performance than machine learning. Rules also perform better for tasks which have clear patterns, for example, identifying data items like time,weight, length, money, address etc. This is because clear patterns can be directly encoded in rules to be logically complete in coverage while machine learning based on samples still has a sparse data challenge. When designing a system, in addition to using a hybrid approach for some tasks, for other tasks, we should choose the most suitable approach depending on the nature of the tasks. Other aspects of comparison between the two approaches involve the modularization and debugging in industrial development. A rule system can be structured as a pipeline of modules fairly easily so that a complicated task is decomposed into a series of subtasks handled by different levels of modules. In such an architecture, a reported bug is easy to localize and fix by adjusting the rules in the related module. Machine learning systems are based on the learned model trained from the corpus. The model itself, once learned, is often like a black-box (even when the model is represented by a list of symbolic rules as results of learning, it is risky to manually mess up with the rules in fixing a data quality bug). Bugs are supposed to be fixable during retraining of the model based on enhanced corpus and/or adjusting new features. But re-training is a complicated process which may or may not solve the problem. It is difficultto localize and directly handle specific reported bugs in machine learning. To conclude, due to the complementary nature for pros/cons of the two basic approaches to NLP, a hybrid system involving both approaches is desirable, worth more attention and exploration. There are different ways of combining the two approaches in a system, including a back-off model using rulles for precision and learning for recall, semi-supervised learning using high precision rules to generate initial corpus or “seeds”, etc.. Related posts: Comparison of Pros and Cons of Two NLP Approaches Is Google ranking based on machine learning ? 《立委随笔:语言自动分析的两个路子》 《立委随笔:机器学习和自然语言处理》 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|8771 次阅读|1 个评论
人工智能有否简化版?
coldblackeye 2011-9-28 13:36
首先声明,我从来没有研究过人工智能和相关的领域,确实只是随性而发论点,请大家拍砖. 今天偶尔读到中国人工智能学会理事长钟义信教授在2009 年9 月22 日上海市人工智能学会成立大会上的学术报告"人 工 智 能 _ 进 展 与 挑 战",里面谈到获取信息,形成知识,决定策略是人工智能理论的基础,甚至是信息时代科学技术的灵魂的观点。 我感到钟教授提到的三个步骤,确实是做任何事情的最优步骤,我们微电子行业的设计方法也是遵循这条路子来的,比如我们需要设计一颗特殊的功能芯片,我们先进行调研,利用搜索,经验,头脑风暴等方法获取知识,然后形成特定的知识,最后在这些知识的指导下决定决策,这是非常严谨,且是非常有效的研究方法. 但是,针对人工智能这门学科来讲,我又感觉到,要求机器遵循这条方法论进行自学习,自决策,又是那么的难.我觉得最难的是: 1. 在获取信息的过程中,机器如何进行选取对当前事件有用的信息?而不靠人工初筛. 2. 在形成知识的过程中,机器如何把信息和知识映射起来? 3. 在形成决策的过程中,机器除了利用穷举法,又如何知道决策有效?就算有反馈回路,机器又如何知道决策的判据是什么? 也许这三个问题已经有了有限域的解,但是我感觉那一定是有条件的解,而一定不是真正自学习的解,那么,我又思考一个问题,是什么导致真正达到自学习如此之难呢,有可能的解释是: 1. 获取信息的集合太多 2. 形成知识的要求太高 3. 形成决策的判据可能有问题 第一,自然界的信息太多,社会界的信息也很多,信息的集合可以说是无穷大,那么,又如何要求不到60年历史的人工智能能够自己获取那么多的知识? 就算是根据人工经验预先筛选了某个子集,但是作为以人的智能为参考点的获取系统,一定是非常不完备的. 第二点,我们对人工智能所达到的,需要形成知识的要求和形成决策的判据是不是有效的呢,好比经过学习1+1=2这个知识后,机器将1+2判断成等于4,我们难道就能判断这次的机器学习就是错的吗? 我觉得不见得,好比我们把天空称作蓝色,大地称作土黄色,这并不是绝对的判据,这只是人们"约定俗成的条例",既然这样,每次机器学习得到的结论,我们又何尝不可以称作是某一次"机器约定俗成的条例"呢? 这是非常重要的一个问题!我甚至感觉判据问题比获取信息和知识更重要. 我自己想了几个判断机器系统是不是具有AI潜质的判断依据,但是都不能完全说服我自己,"进化"是其中比较优的一个判据,但是如何对"进化"做定义又成了新的问题,进化树太复杂,难道只能用唯一的解去要求我们的系统吗?我想我还需要思考一段时间. 但是,针对上面分析的3个困难,我想,有没有一种简化版本的人工智能,在某种程度上能减小研究的难度,比如,有没有一种靠真正进化而出现的系统,对信息的要求非常少,或许只响应几种特定的信息(比如只响应物理原则),在这种条件下,去研究如何形成知识和决策. 又或许,并不需要去研究如何形成知识和决策,因为它自己已经就是知识了! 各位专家,请你们帮我想想,有没有这样简单而优雅的系统,可供研究的? 呵呵
1840 次阅读|0 个评论
分享两个斯坦福线上课程:人工智能AI和机器学习ML
热度 2 willstyle 2011-9-8 16:51
AI: http://www.douban.com/online/10918517/ 开始时间: 2011年10月10日 周一 09:00 结束时间: 2011年12月16日 周五 09:00 斯坦福于今年十月份将开始网络课程【人工智能】。所有内容线上发布,包括视频讲座,作业,考试等等。如果顺利完成,将得到证书一个。 全球目前已经有超过五十六万学生报名。 课程内容为全英文,但是youtube有自动翻译中文字幕(不是很精准)。 本活动旨在为希望参与这门课的同学一个交流的平台。希望大家多多推荐。 详情见 http://www.ai-class.com/ A bold experiment in distributed education, "Introduction to Artificial Intelligence" will be offered free and online to students worldwide during the fall of 2011. The course will include feedback on progress and a statement of accomplishment. Taught by Sebastian Thrun and Peter Norvig, the curriculum draws from that used in Stanford's introductory Artificial Intelligence course. The instructors will offer similar materials, assignments, and exams. Artificial Intelligence is the science of making computer software that reasons about the world around it. Humanoid robots, Google Goggles, self-driving cars, even software that suggests music you might like to hear are all examples of AI. In this class, you will learn how to create this software from two of the leaders in the field. Class begins October 10. Details on the course, including a syllabus is available here. Sign up above to receive additional information about participating in the online version when it becomes available ML: http://www.douban.com/online/10918628/ 开始时间: 2011年10月10日 周一 07:00 结束时间: 2011年12月6日 周二 06:00 斯坦福于今年十月份将公开授课的线上课程【机器学习】。所有内容免费线上发布,包括视频讲座,作业,考试等等。如果顺利完成,将得到证书一个。 课程内容为全英文,youtube有自动翻译的中文字幕。 本活动旨在为希望参与这门课的同学一个交流的平台。希望大家多多推荐。 详情见 http://www.ml-class.com/ Course Description This course provides a broad introduction to machine learning, datamining, and statistical pattern recognition. Topics include: (i) Supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks). (ii) Unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). (iii) Best practices in machine learning (bias/variance theory; innovation process in machine learning and AI). (iv) Reinforcement learning. The course will also draw from numerous case studies and applications, so that you'll also learn how to apply learning algorithms to building smart robots (perception, control), text understanding (web search, anti-spam), computer vision, medical informatics, audio, database mining, and other areas.
个人分类: 好文共欣赏|9086 次阅读|2 个评论
[转载]计算机视觉、机器学习中的数学原理---书目推荐篇
justinzhao 2011-7-14 15:03
转自:dahua lin, MITBook List Updated 这个Blog上的数学书单已经有很长时间没有更新了。今天抽了一点时间,update了一下。现在分成三个列表,分别是 Algebra, Analysis, and Geometry 代数,分析,和几何是现代数学的三大基础分支。在这些科目上的扎实基础对于理论探索是非常重要的。而点集拓扑则是分析和几何的共同基础。而抽象代数则是相对独立的一个分支,但是抽象代数中的很多概念和思想则广泛渗透于其它数学学科之中。 而在分析中,实分析是一切分析的基础。在此基础上,发展出来的复分析,泛函分析,调和分析,和微分方程理论,在工程实践中都有重要应用。对于机器学习领域来说,泛函分析的希尔伯特空间理论和算子谱论发挥着核心作用(比如Reproducing Kernel Hilbert Space, Markov Process的转移核的谱)。调和分析则在信号处理和分解方面起着关键作用(傅里叶变换就是调和分析的研究内容之一,另外,现在非常火热的compressed sensing或者sparse coding的数学根源也是调和分析)。 微分方程理论,以及李群和李代数理论则是对动态过程进行建模的重要工具。而很多随机过程也和它们有密切关系,比如Markov Process的抽象分析往往可以归结为Markov Semigroup,这是一种类似李群的连续半群系统。而连续时间Markov process的分布变化则可以通过微分方程(比如Komolgorov Equation或者Fokker–Planck Equation)描述。 Optimization and Numerical Computation 这个列表主要以优化方面的书为主。目前常用的优化包括一般的数值优化(比如Gradient Descent),凸优化(Convex Optimization),组合优化(Combinatorial Optimization),还有线性优化(Linear Programming)。其中,线性优化虽然可以视为凸优化的一个特例,但是它太特殊了,因此需要单列出来,而且它和组合优化有着千丝万缕的联系(比如很多基于图和网络的优化问题)。 Probability Theory and Stochastic Processes 这个列表主要包括两个方面的书:现代概率理论 和 随机过程。 现代概率理论的基础是测度理论。对测度理论和在此基础上建立的积分理论的切实理解是学好现代概率论的重要基础。在现代概率论的许多重要概念中,比如independence, conditional expectation, martingale,可测性都起着核心作用。 而随机过程考察的是随机函数,虽然很多时候它们是定义在时间上的,不过很多过程可以拓展到空间上——比如高斯过程和泊松过程。在众多的随机过程概念中,我觉得有一些是特别需要深入理解的:Markov, Brownian motion, Gaussian Process, Martingale,还有Poisson Process。 作为Gaussian Process的重要特例,Brownian motion在研究连续时间过程中扮演特别重要的角色。Diffusion, 还有随机积分和随机微分方程理论就是在其基础上建立。 列在单上的书都是我在学习过程中觉得写得比较好的。其中,只有不到一半是整本看完的,另外一些则是看了部分章节。希望对大家有帮助。
个人分类: 读书日记|6324 次阅读|0 个评论
ICML'11论文阅读:Cauchy Graph Embedding
longxie1983 2011-6-8 21:45
ICML'11论文阅读:Cauchy Graph Embedding
ICML 2011的paper list终于出来了,虽然不是一个领域小领域,但是有些文章还是挺有趣。对看过的文章简单的记录一下,用DBer的角度给出理解。 ML 中的Embedding,简单说就是降维,想把数据点根据他们之间的关系投影到低维空间。 之所以题目中有Graph,那是因为需要降维的数据点是用Graph的结构进行组织的。 好了,给定一组n个数据点,根据特定的评价函数,可以知道任意两个数据点间的相似性。如果这n个数据点构成一个有权完全图,那么前面计算得到的相似性值就是边上的权重。 现在的问题就变成了,我想对数据进行聚类等处理,但是太复杂不好办,我需要降维,降维的要求是 其中w ij 表示数据点i和数据点j之间的边的权重,也就是他们的相似度,而x i 表示数据点i投影后的点。 这个条件说白了就是,如果点i,j的相似度大于点p,q的相似度,那么投影后x i ,x j 间的距离就要更近。 论文作者指出,之前一直使用的Laplacian embedding在很多应用中无法满足上面的要求,因此自己提出了一个新的embedding方法。 具体的技术细节就不介绍了,上两张原论文的图看看Laplacian embedding和Cauchy embedding后数据的差异吧。
个人分类: 书摘|10302 次阅读|0 个评论
分类问题Precision-Recall Corve曲线以及ROC的Matlab工具包
热度 1 lipiji1986 2010-12-17 20:58
这两天写论文中,本来设计的是要画这个Precision-Recall Corve的,因为PRC是从信息检索中来的,而且我又做的类似一个检索,所以要画这个图,但是我靠,竟然发现不好画,找了很多资料等。最后也没画好,多么重要好看实用的图啊,可惜了。 今天就花了一点功夫, 专门为自己弄了个工具包,用来计算多分类问题中的Precision-Recall Corve、混淆矩阵Confusion Matrix并且进行可视化输出。 不过Precision-Recall Corve对于每一类的画法还是很有讲究的,我们知道对于二类问题,像是检索中的问题,最后的查全率、查准率基本都是最后计算一对值就行了,但是就一对值,一个点是画不出曲线来的,所以在实际的曲线过程中,是这样的: 1、首先得分为正负两类,多类问题真对每一类都可以映射过去 2、按照决策值(分类问题每一个样本肯定会有一个支持分类的概率或者置信度等等,像是libsvm的dec_values的矩阵),按照从小到大的顺序进行排序 3、然后分别计算全部样本、全本样本-1、全部样本-2、………..、一直计算完毕,每一次都会有查全率查准率,就可以曲线了,这里我说的很粗糙,详细的可以查看我的代码,当然也有函数参考的别人的,也做了说明。 correct result / classification E1 E2 obtained result / classification E1 tp (true positive) fp (false positive) E2 fn (false negative) tn (true negative) Precision and recall are then defined as: Recall in this context is also referred to as the True Positive Rate, other related measures used in classification include True Negative Rate and Accuracy: . True Negative Rate is also called Specificity. —————— 我的计算这些东西的代码包: PG_Curve.zip : Matlab code for computing and visualization: Confusion Matrix, Precision/Recall Curve, ROC, Accuracy, F-Measure etc. for Classification. 红色的跳跃的就是最原始的曲线,绿色的是一个人的平滑算法。
个人分类: 科研技术|14658 次阅读|1 个评论
评论《竖起拇指?使用机器学习技术进行情感分析》
BlueGemini 2010-12-16 10:58
前几天看了号称是情感分析领域的开篇之作《Thumbs up?Sentiment Classification using Machine Learning Techniques》。看完后,感觉从学术角度考虑,这篇文章并没有太多的学术成就,大概只因为是开山之作吧,大家还是给予了很多的关注。下面就详细谈谈这篇文章的内容。 这篇文章主要通过实验的方法在电影评论集上做了分类实验,主要有三个步骤:特征选择、特征提取和分类。通过不同的组合进行实验,得出实验结果然后进行评定,分析总结。特征选择主要包括词频、词是否出现。特征提取主要是在词的选择上,这里主要实现了7种选择:最少出现4次的16165个一元组即单个词、最少出现4次的一元组和最少出现7次的二元组共32330个词、最少出现7次的二元组16165个词、最少出现4次的一元组和词性16695个词、情感形容词2633个、词频最高的2633个词和所有22430个一元组及其位置。分类方法主要采用了三种:NB(朴素贝叶斯)、ME(最大熵)和SVM(支持向量机)。 反正作者就是做实验,根据实验结果进行说话。最后的结论是以词的出现为特征要比以词频为特征要好,词频高可能说明这个词可能是关键词,但是并不能说明它对于情感色彩有什么影响,所以如果词频高的词作为特征可能会抵消一些情感词的效果。在特征提取上,虽然作者加入了一些词性和位置信息这些特征进去,但是实验结果表明分类效果并没有得到很大提高,反而有时会降低准确率,具体原因大概和前面相似,这个只是个人猜测,作者也没给出明确解释。在分类算法上,SVM明显要优于NB和ME,这和传统的文本分类是一致。虽然SVM的效果好,但是好像在建模的过程中花费的时间较多。最终的结论是,采用16165个一元组,特征是词是否出现,利用SVM进行分类,精确度最高,达到了82.9%。 本人按照论文中所述做了实验,采用了和作者相同的数据集,当然是作者提供的了,但是我用的版本比作者发论文时要大一些,总共有2000个分类好的训练集。我自己写程序进行了数据预处理,利用IK分词器进行分词,然后将两千个文本转化成了特征向量,其中采用词是否出现为特征值,提取了词频最高的2664个词作为特征。由于个人的入门级水平,这里采用了Weka进行分类实验,分别采用了决策树的C4.5算法、NB和SVM进行了分类实验。1400个作为训练集建立分类模型,700个作为测试集。最终结果依然是SVM胜出,C4.5的分类准确率只有可怜的62%,NB的准确率为83.3333%,SVM的准确率为82.3333%。虽然测试的结果NB比SVM要好,但是NB模型的预测准确率只有80.0714%,而SVM模型的预测准确率为82.0714%。总体来说SVM更好一些。 从实验结果来看效果很喜人,大家可能认为情感分类很简单。但是问题还是很多的,最大的就是中文的情感分类问题,分词依然是很头疼的问题,并不像英文那么简单;第二点就是跨领域的问题,在电影评论领域,很多词的作用相似,但是如果跨领域的分类例如对论坛评论的情感分析,则会碰到很多的问题。很多的研究工作需要去做,值得大家去努力。 论文
个人分类: 情感分析|8391 次阅读|0 个评论
由数学建模而联想的一点机器学习的应用
lipiji1986 2010-12-10 10:00
今年参加了第七届全国研究生数学建模,12月初竞赛结果也公布了,我们是C题组的一等奖,虽然不是一等奖的第一名,但是至少Top3%的获奖率也能说明些问题。 先说一下我们做的题目的大体意思:我们都知道神经元种类有很多,像是运动神经元、感觉神经元等, 这些神经元都有自己的一些特征指标,像是体积、面积、轴突树突数量大小等等,有很多很多指标,就是让你设计神经元的分类算法和特征选择算法,能够区分不同的神经元的影响因素是哪些,并且对未知神经元进行自动分类。 我们当初选择这个题目一个是因为感觉很简单,离自己所学习的东西很近,自己也是机器学习的应用,像是视觉和检索方向。所以考虑了一下C题和A题就选择了C题,还是因为C很有趣。 我们用的方法和模型也十分简单,用了KNN、SVM、决策树构建三个分类器进行融合,结果是相当鲁棒,而且我还设计了一个简单的发现新类别神经元的方法,也很好用。 论文一共写了近50页,在学术建模论文来说,或者应该算是页数多的了,交论文的时候要交打印版,我们装订论文后又买了一个塑料透明封皮夹上,这个皮好不容易才买的,学院超市竟然没有。 最后结果出来,一等奖,还行,我这些年来获得一等奖很少,因为卓越是需要一种素质的,做事情得做的精致,最起码不能糊弄自己,慢慢精致了,也就好了,不能适可而止。所以说,玉器需要琢磨。 本次研究生数学建模感觉都是要把机器学习理论用到生物信息学上,像是基因的分类问题、神经元的分类问题,下年是不是又蛋白质抗原等等信息的分类问题呢? 所以说,机器学习在这方面的应用还没有完全彻底化,因为我并没有发现这样的论文,所以我就说,把参加数学建模的论文好好当做一个小方向做做写篇英文的期刊,应该能够投到不错的期刊上去的。 交叉学科容易解决一些问题,不要只拘泥于自己研究的那一点点东西,像是你两三年只盯着个LDA、SVM而且没有自己实质的工作的话,其实是相当恐怖的一件事情,所以一定开阔自己的眼界。
个人分类: 科研技术|4526 次阅读|1 个评论
[转载]新书推荐:Cluster Analysis, 5th Edition
timy 2010-10-14 11:38
From: http://as.wiley.com/WileyCDA/WileyTitle/productCd-0470749911,descCd-description.html       Larger Image                 Cluster Analysis, 5th Edition Brian S. Everitt , Dr Sabine Landau , Dr Morven Leese , Dr Daniel Stahl ISBN: 978-0-470-74991-3 Hardcover 336 pages March 2011 Wiley List Price: US $95.00          Description    This edition provides a thorough revision of the fourth edition which focuses on the practical aspects of cluster analysis and covers new methodology in terms of longitudinal data and provides examples from bioinformatics. Real life examples are used throughout to demonstrate the application of the theory, and figures are used extensively to illustrate graphical techniques. This book includes an appendix of getting started on cluster analysis using R, as well as a comprehensive and up-to-date bibliography.    Table of Contents     Preface Acknowledgement 1 An introduction to classification and clustering 1.1 Introduction 1.2 Reasons for classifying 1.3 Numerical methods of classification - cluster analysis 1.4 What is a cluster? 1.5 Examples of the use of clustering 1.6 Summary 2 Detecting clusters graphically 2.1 Introduction 2.2 Detecting clusters with univariate and bivariate plots of data 2.3 Using lower-dimensional projections of multivariate data for graphical representations 2.4 Three-dimensional plots and trellis graphics 2.5 Summary 3Measurement of proximity 3.1 Introduction 3.2 Similarity measures for categorical data 3.3 Dissimilarity and distance measures for continuous data 3.4 Similarity measures for data containing both continuous and categorical variables 3.5 Proximity measures for structured data 3.6 Inter-group proximity measures 3.7 Weighting variables 3.8 Standardization 3.9 Choice of proximity measure 3.10 Summary 4Hierarchical clustering 4.1 Introduction 4.2 Agglomerative methods 4.3 Divisive methods 4.4 Applying the hierarchical clustering process 4.5 Applications of hierarchical methods 4.6 Summary 5Optimization clustering techniques 5.1 Introduction 5.2 Clustering criteria derived from the dissimilarity matrix 5.3 Clustering criteria derived from continuous data 5.4 Optimization algorithms 5.5 Choosing the number of clusters 5.6 Applications of optimization methods 5.7 Summary 6Finite mixture densities as models for cluster analysis 6.1 Introduction 6.2 Finite mixture densities 6.3 Other finite mixture densities 6.4 Bayesian analysis of mixtures 6.5 Inference for mixture models with unknown number of components and model structure 6.6 Dimension reduction - variable selection in finite mixture modelling 6.7 Finite regression mixtures 6.8 Software for finite mixture modelling 6.9 Some examples of the application of finite mixture densities 6.10 Summary 7Model-based cluster analysis for structured data 7.1 Introduction 7.2 Finite mixture models for structured data 7.3 Finite mixtures of factor models 7.4 Finite mixtures of longitudinal models 7.5 Applications of finite mixture models for structured data 7.6 Summary 8Miscellaneous clustering methods 8.1 Introduction 8.2 Density search clustering techniques 8.3 Density-based spatial clustering of applications with noise 8.4 Techniques which allow overlapping clusters 8.5 Simultaneous clustering of objects and variables 8.6 Clustering with constraints 8.7 Fuzzy clustering 8.8 Clustering and artificial neural networks 8.9 Summary 9Some final comments and guidelines 9.1 Introduction 9.2 Using clustering techniques in practice 9.3 Testing for absence of structure 9.4 Methods for comparing cluster solutions 9.5 Internal cluster quality, influence and robustness 9.6 Displaying cluster solutions graphically 9.7 Illustrative examples 9.8 Summary Bibliography Index
个人分类: 机器学习|4035 次阅读|0 个评论
[转载]NICTA将elefant开源了
w52191114 2010-8-13 02:44
NICTA将elefant开源了 2010年2月28日 cvchina 没有评论 NICTA (National ICT Australia),是澳大利亚的一个独立公司,最近将 elefant (Efficient Learning, Large-scale Inference, and Optimisation Toolkit)开源了。 elefant 类似于weka,提供了很多机器学习,数据挖掘的算法,更酷的是,它是商用级别的。 关于elefant: Elefant (Efficient Learning, Large-scale Inference, and Optimisation Toolkit) is an open source library for machine learning licensed under the Mozilla Public License ( MPL ). We develop an open source machine learning toolkit which provides algorithms formachine learningutilising the power of multi-core/multi-threaded processors/operating systems (Linux, WIndows, Mac OS X), a graphical user interface for users who want to quickly prototype machine learning experiments, tutorials to support learning about Statistical Machine Learning ( Statistical Machine Learning at The Australian National University ), and detailed and precise documentation for each of the above. 关于NICTA: NICTA (National ICT Australia) is Australias Information and Communications Technology (ICT) Centre of Excellence.We are an independent company in the business of research, commercialisation and research training.With over 700 people, NICTA is the largest organisation in Australia dedicated to ICT research. 除了 elefant , NICTA 放出了很多开源软件,具体信息在 OpenNICTA 上面,其中有个一 行人库 不得不提,这个 行人库 包含了25k+的行人图像。做行人检测的人有福了啊。 来源
个人分类: cvchina|2889 次阅读|0 个评论
[转载]卡内基梅隆大学的机器学习课程
热度 1 dechang 2010-8-11 01:51
来到卡内基梅隆大学学习已经将近8个月了,一直没有认真地写点什么,今天偶有所感,草就此文,介绍一点听课感想,以为纪念。 CMU的计算机学院很特别,居然有一个机器学习系,最王牌的课,就是机器学习了,到了这里,不听这门课,很遗憾,听了这门课,很痛苦,用一个CMUer的话来说,super hard,想要顺利通过,不脱掉几层皮是不可能的。 这学期开了两门机器学习,一门面向硕士,一门面向博士,面向博士的课程师资配备很豪华,以Tom Mitchell(《机器学习》的作者,http://www.cs.cmu.edu/~tom/)压阵,以Eric Xing(邢波,清华高才生,伯克利大牛Michael Jordan的高足,http://www.cs.cmu.edu/~epxing/),不去听,岂不遗憾终生? 既然听了这门课,就该知道如何通过,包括5次大作业,2次考试,一个项目,所有这些加起来就一个字,难,太难了,帮助大家通过的,除了上课,有助教的复习课(recitation)和老师助教们的答疑时间(Office Hour)。最值得称道的就是项目了,很多优秀学生的第一篇文章就是在这们课程里完成的。 比较国内的博士课程,是不是很有特点啊? 转自(http://blog.hit.edu.cn/dcxu/post/6.html)
个人分类: 生活点滴|12812 次阅读|2 个评论
[转载]开源机器学习之RWeka
cs2bioinfor 2010-8-5 21:02
背景介绍: 1)Weka: Weka有两种意思:一种不会飞的鸟的名字,一个机器学习开源项目的简称(Waikato Environment for Knowledge Analysis, http://www.cs.waikato.ac.nz/~ml/weka/ )。我们这里当然要介绍的是第二种意思啦,Weka项目从1992年开始,由新西兰政府支持,现在已在机器学习领域大名鼎鼎。Weka里有非常全面的机器学习算法,包括数据预处理、分类、回归、聚类、关联规则等。Weka的图形界面对不会写程序的人来说非常方便,而且提供KnowledgeFlow 功能,允许将多个步骤组成一个工作流。另外,Weka也允许在命令行执行命令。 2)R R就不用我废话了吧,呵呵,越来越受欢迎的统计软件( http://www.r-project.org/ )。 3)R与Weka: R里有很多机器学习的函数和包,不过Weka里提供的函数更全面更集中,所以我有时候需要用到Weka。以前我是这样用R和Weka的: 在R中准备好训练的数据(如:提取数据特征); 整理成Weka需要的格式(*.arff); 在Weka里做机器学习(如:特征选择、分类); 从Weka的预测结果计算需要的统计量(如:sensitivity, specificity, MCC)。 来回捣腾两个软件还是挺麻烦的;为了偷懒,我没学Weka的命令行,只会用图形界面的,在数据量大的时候非常受罪,有时候还会内存不够。现在发现R竟然提供了和Weka的接口函数包RWeka,以后方便多了哦,下面介绍一下RWeka的功能: RWeka ( http://cran.r-project.org/web/packages/RWeka/index.html ) : 1) 数据输入和输出 WOW():查看Weka函数的参数。 Weka_control():设置Weka函数的参数。 read.arff():读Weka Attribute-Relation File Format (ARFF)格式的数据。 write.arff:将数据写入Weka Attribute-Relation File Format (ARFF)格式的文件。 2) 数据预处理 Normalize():无监督的标准化连续性数据。 Discretize():用MDL(Minimum Description Length)方法,有监督的离散化连续性数值数据。 3) 分类和回归 IBk():k最近邻分类 LBR():naive Bayes法分类 J48():C4.5决策树算法(决策树在分析各个属性时,是完全独立的)。 LMT():组合树结构和Logistic回归模型,每个叶子节点是一个Logistic回归模型,准确性比单独的决策树和Logistic回归方法要好。 M5P():M5 模型数算法,组合了树结构和线性回归模型,每个叶子节点是一个线性回归模型,因而可用于连续数据的回归。 DecisionStump():单层决策树算法,常被作为boosting的基本学习器。 SMO():支持向量机分类 AdaBoostM1():Adaboost M1方法。-W参数指定弱学习器的算法。 Bagging():通过从原始数据取样(用替换方法),创建多个模型。 LogitBoost():弱学习器采用了对数回归方法,学习到的是实数值 MultiBoostAB():AdaBoost 方法的改进,可看作AdaBoost 和 wagging的组合。 Stacking():用于不同的基本分类器集成的算法。 LinearRegression():建立合适的线性回归模型。 Logistic():建立logistic回归模型。 JRip():一种规则学习方法。 M5Rules():用M5方法产生回归问题的决策规则。 OneR():简单的1-R分类法。 PART():产生PART决策规则。 4) 聚类 Cobweb():这是种基于模型方法,它假设每个聚类的模型并发现适合相应模型的数据。不适合对大数据库进行聚类处理。 FarthestFirst():快速的近似的k均值聚类算法 SimpleKMeans():k均值聚类算法 XMeans():改进的k均值法,能自动决定类别数 DBScan():基于密度的聚类方法,它根据对象周围的密度不断增长聚类。它能从含有噪声的空间数据库中发现任意形状的聚类。此方法将一个聚类定义为一组密度连接的点集。 5)关联规则 Apriori():Apriori是关联规则领域里最具影响力的基础算法,是一种广度优先算法,通过多次扫描数据库来获取支持度大于最小支持度的频繁项集。它的理论基础是频繁项集的两个单调性原则:频繁项集的任一子集一定是频繁的;非频繁项集的任一超集一定是非频繁的。在海量数据的情况下,Apriori 算法的时间和空间成本非常高。 Tertius():Tertius算法。 6)预测和评估: predict():根据分类或聚类结果预测新数据的类别 table():比较两个因子对象 evaluate_Weka_classifier():评估模型的执行,如:TP Rate,FP Rate,Precision,Recall,F-Measure。
个人分类: 数据挖掘与机器学习|7387 次阅读|0 个评论
[转载]R语言中的机器学习(转)
cs2bioinfor 2010-7-16 15:19
机器学习是计算机科学和统计学的边缘交叉领域,R关于机器学习的包主要包括以下几个方面: 1)神经网络(Neural Networks): nnet 包执行单隐层前馈神经网络,nnet是VR包的一部分( http://cran.r-project.org/web/packages/VR/index.html )。 2)递归拆分(Recursive Partitioning): 递归拆分利用树形结构模型,来做回归、分类和生存分析,主要在 rpart 包( http://cran.r-project.org/web/packages/rpart/index.html )和 tree 包( http://cran.r-project.org/web/packages/tree/index.html )里执行,尤其推荐rpart包。Weka里也有这样的递归拆分法,如:J4.8, C4.5, M5,包 Rweka 提供了R与Weka的函数的接口( http://cran.r-project.org/web/packages/RWeka/index.html )。 party 包提供两类递归拆分算法,能做到无偏的变量选择和停止标准:函数 ctree() 用非参条件推断法检测自变量和因变量的关系;而函数 mob() 能用来建立参数模型( http://cran.r-project.org/web/packages/party/index.html )。另外, party 包里也提供二分支树和节点分布的可视化展示。 mvpart 包是rpart的改进包,处理多元因变量的问题( http://cran.r-project.org/web/packages/mvpart/index.html )。 rpart.permutation 包用置换法(permutation)评估树的有效性( http://cran.r-project.org/web/packages/rpart.permutation/index.html )。 knnTree 包建立一个分类树,每个叶子节点是一个knn分类器( http://cran.r-project.org/web/packages/knnTree/index.html )。 LogicReg 包做逻辑回归分析,针对大多数自变量是二元变量的情况( http://cran.r-project.org/web/packages/LogicReg/index.html )。 maptree 包( http://cran.r-project.org/web/packages/maptree/index.html )和 pinktoe 包( http://cran.r-project.org/web/packages/pinktoe/index.html )提供树结构的可视化函数。 3)随机森林(Random Forests): randomForest 包提供了用随机森林做回归和分类的函数( http://cran.r-project.org/web/packages/randomForest/index.html )。 ipred 包用bagging的思想做回归,分类和生存分析,组合多个模型( http://cran.r-project.org/web/packages/ipred/index.html )。 party 包也提供了基于条件推断树的随机森林法( http://cran.r-project.org/web/packages/party/index.html )。 varSelRF 包用随机森林法做变量选择( http://cran.r-project.org/web/packages/varSelRF/index.html )。 4)Regularized and Shrinkage Methods: lasso2 包( http://cran.r-project.org/web/packages/lasso2/index.html )和 lars 包( http://cran.r-project.org/web/packages/lars/index.html )可以执行参数受到某些限制的回归模型。 elasticnet 包可计算所有的收缩参数( http://cran.r-project.org/web/packages/elasticnet/index.html )。 glmpath 包可以得到广义线性模型和COX模型的L1 regularization path( http://cran.r-project.org/web/packages/glmpath/index.html )。 penalized 包执行lasso (L1) 和ridge (L2)惩罚回归模型(penalized regression models)( http://cran.r-project.org/web/packages/penalized/index.html )。 pamr 包执行缩小重心分类法(shrunken centroids classifier)( http://cran.r-project.org/web/packages/pamr/index.html )。 earth 包可做多元自适应样条回归(multivariate adaptive regression splines)( http://cran.r-project.org/web/packages/earth/index.html )。 5)Boosting : gbm 包( http://cran.r-project.org/web/packages/gbm/index.html )和 boost 包( http://cran.r-project.org/web/packages/boost/index.html )执行多种多样的梯度boosting算法, gbm 包做基于树的梯度下降boosting, boost 包包括LogitBoost和L2Boost。 GAMMoost 包提供基于boosting的广义相加模型(generalized additive models)的程序( http://cran.r-project.org/web/packages/GAMMoost/index.html )。 mboost 包做基于模型的boosting( http://cran.r-project.org/web/packages/mboost/index.html )。 6)支持向量机(Support Vector Machines): e1071 包的svm()函数提供R和LIBSVM的接口 ( http://cran.r-project.org/web/packages/e1071/index.html )。 kernlab 包为基于核函数的学习方法提供了一个灵活的框架,包括SVM、RVM( http://cran.r-project.org/web/packages/kernlab/index.html ) 。 klaR 包提供了R和SVMlight的接口( http://cran.r-project.org/web/packages/klaR/index.html )。 7)贝叶斯方法(Bayesian Methods): BayesTree 包执行Bayesian Additive Regression Trees (BART)算法( http://cran.r-project.org/web/packages/BayesTree/index.html , http://www-stat.wharton.upenn.edu/~edgeorge/Research_papers/BART%206--06.pdf )。 tgp 包做Bayesian半参数非线性回归(Bayesian nonstationary, semiparametric nonlinear regression)( http://cran.r-project.org/web/packages/tgp/index.html )。 8)基于遗传算法的最优化(Optimization using Genetic Algorithms): gafit 包( http://cran.r-project.org/web/packages/gafit/index.html )和 rgenoud 包( http://cran.r-project.org/web/packages/rgenoud/index.html )提供基于遗传算法的最优化程序。 9)关联规则(Association Rules): arules 包提供了有效处理稀疏二元数据的数据结构,而且提供函数执Apriori和Eclat算法挖掘频繁项集、最大频繁项集、闭频繁项集和关联规则( http://cran.r-project.org/web/packages/arules/index.html )。 10)模型选择和确认(Model selection and validation): e1071 包的 tune() 函数在指定的范围内选取合适的参数( http://cran.r-project.org/web/packages/e1071/index.html )。 ipred 包的 errorest() 函数用重抽样的方法(交叉验证,bootstrap)估计分类错误率( http://cran.r-project.org/web/packages/ipred/index.html )。 svmpath 包里的函数可用来选取支持向量机的cost参数C( http://cran.r-project.org/web/packages/svmpath/index.html )。 ROCR 包提供了可视化分类器执行效果的函数,如画ROC曲线( http://cran.r-project.org/web/packages/ROCR/index.html )。 caret 包供了各种建立预测模型的函数,包括参数选择和重要性量度( http://cran.r-project.org/web/packages/caret/index.html )。 caretLSF 包( http://cran.r-project.org/web/packages/caretLSF/index.html )和 caretNWS ( http://cran.r-project.org/web/packages/caretNWS/index.html )包提供了与caret包类似的功能。 11)统计学习基础(Elements of Statistical Learning): 书《The Elements of Statistical Learning: Data Mining, Inference, and Prediction 》( http://www-stat.stanford.edu/~tibs/ElemStatLearn/ )里的数据集、函数、例子都被打包放在 ElemStatLearn 包里( http://cran.r-project.org/web/packages/ElemStatLearn/index.html )。
个人分类: 数据挖掘与机器学习|6325 次阅读|0 个评论
世界杯比赛规则与数据聚类
timy 2010-6-27 15:35
应该有很多博友像我一样,这段时间可能要花些时间看世界杯。有些博友还会发些心得。俺就从数据聚类的角度,来对世界杯比赛规则进行重认识一下,呵呵。 先交代下基础背景知识,内行直接跳过本段,呵呵。数据聚类包括划分聚类、层次聚类等、基于模型的聚类等基本模式。划分聚类中最经典的方法就是K-均值聚类,需要事先给定初始点和聚类类目数。层次聚类中最常用的是HAC聚类,事先两两求出相似度,将最相似的或者最不相似的连接起来呢,然后再求次相似的,一直到所有点的都被连接为止。近年来,基于模型的聚类越来越火,可以将基于竞争的聚类方法划入这个类别。07年Frey提出的AP聚类方法更是被大量引用。 再结合数据聚类,说下世界杯比赛规则。 1. 首先,小组划分,是做基于约束的划分聚类 : (1) 经过预选赛入围的32只球队,被划分为4个档次,其中第一档中的8支球队作为种子队 (32个数据,8个聚类类目,将以往世界排名作为权重,选择初始聚类中心,当然东道主特殊,直接作为种子); (2) 剩余球队按照其档次和所在洲的约束,进行抽签划分到相应的小组中(24个数据按照一定的规则约束后,随机分配到每个聚类中心的所在组中); 2. 然后,正式比赛,是做层次聚类 : (1) 小组确定后,每组四个队,两两求相似度,就是说两两打一场,胜的权重给3,平了给1,输了给0,每小组的6场赛事结束后,得到每个队的总体权重(当然了,有可能还要考虑净胜球,相互战绩啥的),那么小组中排名前2的队作为连接点参与下一个层次的聚类。(这里,两两求相似度,完全是基于竞争的,整个比赛阶段基于竞争的层次聚类); (2) 淘汰赛阶段,直接竞争,做二分聚类,胜的参加下一轮聚类; (3) 直到最后两支最牛的打决赛,冠军队成为了根节点。 3. 聚类结束,参数重新分配 ,准备4年后的聚类,呵呵。 所以,世界杯做了大量的约束,注意比赛的观赏性,用了比较简单公平的方法,在较短时间内确定聚类层次关系。 如果是动物界打比赛,可能又是另一个场景,完全自由随机的打,最强的完全有可能因为体力不支,提早被淘汰而成不了冠军。 以上仅供娱乐参考,推理和比喻不当地方,请博友指出,谢谢。 (图片来源: http://worldcup.qq.com/schedule/ )
个人分类: 文本挖掘|5856 次阅读|6 个评论
生活中的决定与数值计算方法
chemicalbond 2010-4-25 23:19
杨玲决定读博士,赵薇决定把自己嫁出去 , 冯小刚和徐帆为玉树重建捐款 20 万,美国决定进攻伊拉克,等等,都是人们或者某个集体,在每天的活动中作出的决定。 每个星期天早上 9 点的 CBS 节目 SUNDAY MORNING 是我最喜欢的电视节目。今天的一个主题是关于 DECISION 。看完之后,我也就决定了要写这篇文章。 人生就是一个接一个的决定过程。小的方面讲是可以是个简单的决定,比如晚上该吃点啥,大的方面讲完全可以算是决策,比如关于婚姻大事的决定。决定过程是如何进行的?其本质不外乎是大脑的一些计算过程。 数值计算中有很多不同的算法,似乎我们的大脑也在反复地应用它们。下面简单地提及分子模拟中常见的几种方法。 蒙特卡洛 是一种常见的算法,它既考虑了一定的随机性,也加上了一些约束条件,在实际中有广泛的应用;它的名字暗示该方法是有风险的,不过,如果约束条件过硬,出牌的次数够多,成功的机会还是蛮大,该赌的时候就得赌一把。 分子动力学模拟 的本质上就是牛顿第二定律的数值解。给定初始的位置和时间步长,根据各原子受力大小和方向,便可以决定下一步运动的方向和位移;因为它模拟的是 自然 的物理过程,这个方法有很多优势,尤其是对于含有大量自由度的生物大分子。不过由于它的机械性,其结果往往取决于初始条件的设置,在生活中用它来做决定更不可取,否则便成了随波逐流了,非常消极。 机器学习 是一种近年来非常流行的算法,它主要是应用统计的一些原理对已知的信息进行分析,再把结论用来分析未知的世界。这种方法一般适用于含有多变量的大量相关数据的体系,而那些变量之间的关系并不明朗。显然,这种方法得出的结果也不一定是完全可靠的,尤其是测试组(未知)数据和训练组(已知)数据之间没有太多的共性。这种方法几乎老少皆知,因为每个人的生活中都在不断地积累经验,再把它用来指导以后的生活。 哪种方法更有效,大概要看具体的情况,很多时候是综合应用不同的方法。对于一个成熟的方法,只有输入的信息量足够多,足够真实,那么得到满意的输出结果是不难的。否则,只能给出一个信噪比很小的值得怀疑的结论。 实际生活中,人们在做决定前,也在有意无意地进行应用类似上面的那些算法。不过有的人是因为算法不好,或者信息不够,就容易犹豫不决,优柔寡断,而有些人要么因为经验丰富,要么因为大脑的内存大运算速度快,便很容易做出果断的正确的决定,比如早年神机妙算的诸葛孔明,和未来人们生活中的各类机器人。 有人认为 日常生活中的智能化机器人 将是下一个 BIG THING , 至少是其中之一。期待着那一天早日到来,并且象个人电脑一样廉价,至少它可以每天给我搓搓背,再聪明点的话就应该知道如何逗人开心。 至少那些活在理论上是可以训练的。
个人分类: 科普与新知|3127 次阅读|1 个评论
片段1 机器学习该柔软点
tygo 2010-4-11 18:03
今日东北偏北风, 潮寒.今日想写点啥,下面的争取写出这些关于瞬间的一点思维片段. 机器学习实在是有点过分 放眼望去 几乎找不到ode的脚印,这不得不让老夫感觉机器学习像个原始机器. 没有ode的出现我想有一些原因: 1. 机器学习过于直奔主题,赤裸得有些幼稚,要说分类基本就是要么直奔类间类内的度量, 要么直奔中心点, 几乎没有柔软如水的手法, 可恶的是直奔主题往往只会造就线性技术,或者线性技术平凑出来的一点非线性技术.没有前途. 第二. 刚才吹进来一股冷风,我打了个摆摆,下面接着聊. 我感觉这个行业的从业人员弄线性代数上了瘾, 用不同微小区别的手段重复干相同的事情, 确实这些招数大部分是一坨屎. 第三. 我也不知道该怎么干才好,所以大家不要拍我. 第四. 就我了解到了,谱技术算是这个行业很精妙的手法了.但是这个精妙还是冲击力有限. 最后, NMF这个把戏必须接受批判, 东北偏北风把nmf吹得越远越好. 我觉得nmf是个弱智的错误.
个人分类: 生活点滴|3359 次阅读|3 个评论
[转载]"Learning Has Just Started" - an interview with Prof. Vladimir Vapnik(zz)
wucg 2010-3-7 21:14
Learning has just started-zz
个人分类: 百之草园|2330 次阅读|0 个评论
《立委随笔:机器学习和自然语言处理》
热度 1 liwei999 2010-2-13 07:39
【置顶:立委科学网博客NLP博文一览(定期更新版)】 有脚客介绍人工智能(AI)现状 ( http://rl.rockiestech.com/node/636 ),认为由于机器学习(ML)技术的长足进步,人工智能正进入繁荣期,并且开始成功用于自然语言处理(NLP). 除了调子过分乐观了一些,这是个不错的介绍。下面的随笔是根据我自己的经验和体会而来。 AI, ML and NLP NLP 中过分强调 AI 曾经是斜途,其实现在我认为也还是斜途, 我很久以前就有过这个看法,现在觉得并没过时: 机器翻译的另一极是建立在充分理解基础上, 毋须转换的自动翻译, 这是从实质 上对人的翻译过程的模拟。这时候, 源语分析才是真正的自然语言理解, 机器翻译才 真正属于人工智能。然而, 这里遇到两个难题: 一是知识处理问题; 二是所谓元语言 问题。 考察人的翻译活动, 可以发现, 人是靠丰富的知识在理解的基础上从事翻译的。 这些知识既包括语言知识, 也包括世界知识(常识、专业知识等)。如何组织这些包罗 万象的百科全书一样的知识, 以便适应机器处理和运用的需要, 是人工智能所面临的 根本性课题。 …… 总之, 虽然机器翻译的最终出路在于人工智能的理论和技术的突破, 但在条件不 成熟的时候过份强调机器翻译的人工智能性质, 一味追求基于知识和理解的自动翻译, 对于应用型机器翻译系统的研制, 往往没有益处。 摘自【立委科普:机器翻译】: http://www.starlakeporch.net/bbs/read.php?45,18361 AI 里面调子最高的一派是 Doug Lenat,他的 cyc 项目进行了多年,获得了政府和许多 high profile sponsors 的多年资助,一直无法实用,尽管他自己10年前就宣扬已经接近应用前夜了。对于 Doug Lenat,我打心底钦佩,这种基于常识推理的 AI 需要苦功夫,是对人的智能(一个侧面)的逼真模拟。 多数学者对此不以为然,对这种 “纯粹AI” 不看好,大家大都转向以统计为基础的机器学习 (ML)。基本上是把人的智能看成黑箱,不再试图从本质上模拟人脑的过程,包括逻辑推理,而是把每一个具体的智能活动定义为一个任务,一个从输入转换成所求的输出的任务,而这是可以客观度量的。只要机器能够训练成尽可能逼近所需的输出,人的智能就局部实现了。 ML 和 NLP 如今,NLP(包括机器翻译MT)也基本上已经被搞机器学习的人统治了,传统的规则方法只能打边鼓。他们也确实弄出一些名堂来,尤其是语音处理,分类(classification),和知识习得(knowledge acquisition) 方面。 目前的情况是,有指导的学习(supervised learning) 比较成熟,但遭遇知识瓶颈,就是需要大数据量的 labeled data 的问题。如果问题单纯,features 选取容易,又有海量数据,学习的结果真地可以很接近人工水平。我们曾经做过一项研究(碰巧的是,IBM 也大体同时做了这项研究,不如我们深入,但大同小异,结果也类似),找到了一个很好的应用领域做大小写恢复工作(Case Restoration),效果奇好。过去很多档案文字的电子版本是全大写的,网络上现在还有很多文件也是不分大小写的(譬如很多语音识别出来的材料,标题,还有论坛和电子邮件的非正式文字,等等),这就给自然语言处理和信息抽取造成困难,因为多数语言处理系统 assume 的 input 是正常大小写夹杂的文字,一旦输入文件没有大小写的区别,一切就乱套了。连最基础的词类区分(POS: Part-of-Speech tagging)和专名识别(NE: named entity tagging)都寸步难行(因为最重要的一个识别专名边界的clue就是大写)。为了解决这个问题,以前的研究者就设计两套系统,比如BBN就把大小写的features统统弃置重新训练一套NE系统来对付没有大小写的input, 除了 overhead, 系统性能也下降很多。我们想,如果我们先把大小写恢复,然后再做 NLP 不就成了。这个恢复大小写的任务相对比较单纯,训练文本几乎是无限的,因为网上文字大多是区分大小写的。我们利用这些现成的 labeled data, 用最简单的HMM算法,学出了一个高效能的系统,解决了这个问题,结果超出预料地好。(Niu, C., W. Li, J. Ding, and R. Rohini. 2004. Orthographic Case Restoration Using Supervised Learning Without Manual Annotation. International Journal of Artificial Intelligence Tools, Vol. 13, No. 1, 2004.) 不过,这样讨巧的事并不多 (一个类似可以讨巧的是某些classification的任务:比如想训练一个给评语分类的系统,就可以上网找到很多客户回馈的记录,这些记录除了文字外,常常还有星号标识,以1个星号表示很差,5星表示很好)。多数任务会遇到 lebeling data 的瓶颈。统计界的共识之一就是,data, data and data. 很多时候,算法的优劣是其次的,主要还是要足够多的 data 和合适的 feature design. 数据量大了,学习的效果自然就好了。所以,labeled data 是 supervised learning 的真正知识瓶颈。我就见过这样的系统,本来是指望随时重新训练以适应新情况的,结果 data 跟不上,成了一个只训练一次的死系统,任何后续的改进都不是经过增加数据重新训练,而是在系统外部打各种补丁。机器学习的优势就失去了。 无须指导的学习(Unsupervised learning) 因此引起学者的兴趣,成为热点,因为所需的训练材料无须标注。在网络世界,有的是 raw data. 对某个对象进行 clustering 就可以用 unsupervised leaning, 出了很多有意思的结果。Clustering 有别于 classification, 前者没有预定一个目标,而是根据features,只要长得象的就归在一起,后者是有预定的 tag set 作为分类的目标。只要设计者心中有个大致的目标,features 选取得当,可以控制 clustering 的结果的粗细,然后去现实世界或使用者中印证clustering的合理性和含义。反正是 unsupervised learning, 不妨多来几次,选取最好的结果作为方向,这样就可以把 clustering 转化成具有广泛应用的 classification. (在人类智能活动中,分类是最常用的技能,也是应用最广泛,相对单纯,比较易于机器学习和模拟成功的任务。大千世界,林林总总,为了把握它,人类第一个要做的就是分类。分类以后,才好缩小范围,集中到某个子领域,钻进去仔细分析。) 正如自如所述,目前很多研究者对所谓 weakly supervised learning 情有独衷,觉得这是一个具有突破性的研究方向。传统的 supervised learning 有知识瓶颈而为人诟病,完全没有指导的学习效率不高,因此尝试利用有限 labeled data 作为种子(seeds), 怎样引导学习程序一步一步向指定方向去,这是一个充满魅力的路子。这方面的成果令人鼓舞,但总体还在探索阶段,只有少部分课题已经接近临床实用,譬如分类和词典习得(lexicon acqusition). 机器学习的缺点和局限等有时间再接着谈。先说一点,任务一复杂,ML 就麻烦。遇到复杂的难以分解的任务,基本是没戏,譬如 自然语言的深度结构分析(deep parsing)。而任务相对单纯的浅层分析(shallow parsing),ML 的效果就很好,可以媲美人工系统。 Comments (4) liwei 12月 6th, 2008 at 6:09 am edit easy way, hard way (152881) Posted by: liwei999 Date: May 13, 2008 08:23PM 世界上很多事,there is an easy way and there is a hard way. 如果在 easy way 还没有穷尽的时候,还有很大余地的时候,去走吧 hard way, 不但不 cost-effective. 而且往往失败。Traditoonal AI 和 cyc 就是走 hard way 的,精神可嘉,作为研究探索也很可贵,但到处宣扬可以应用,就走偏了,有骗钱的嫌疑。 有空举一些例子说明,什么叫easy way, hard way. 对于NLP, 原则是可以辞典解决的,不用规则解决;可以浅层解决的,不深层解决;可以句法解决的,不用语义解决;可以句子内解决,不跨句解决; 可以语言学内解决的,不要运用知识推理; 可以在专业领域解决,不要用常识推理。 我的看法是一以贯之的: “除了上述的两极, 人们根据转换所处的层次, 把机器翻译系统大致分为三代: 第I代是词对词的线性翻译, 其核心是一部双语词典, 加上简单的形态加工(削尾 和加尾)。I代系统不能重新安排词序, 不能识别结构同形, 更谈不上多义词区分。 第II代系统强调句法分析, 因此能够求解出句子的表层结构及元素间的句法关系 (分析结果通常表现为带有节点信息的结构树), 从而可以根据源语和目标语的对比差异进行句法结构的转换和词序调整, 这就从线性翻译飞跃到有结构层次的平面翻译。 然而, 在没有语义的参与下, 虽然可以识别句法结构的同形, 但却不能从中作出合适的选择; 多义词区分问题也基本上无法解决。 第III代系统以语义分析为主, 着重揭示语句的深层结构及元素间的逻辑关系,可 以解决大部分结构同形和多义词区分问题。 目前, 多数机器翻译系统处于II代,或II代和III代之间。纯粹以语义分析为核心 的III代系统只做过小规模的实验(Wilks, 1971), 但也取得了令人瞩目的成就。从工程和实用考虑, 大型商品化机译系统的研制, 采用句法分析与语义分析相结合的方法,是比较切合目前的研究水平和实际需要的。“ 摘自【立委科普:机器翻译】: http://www.starlakeporch.net/bbs/read.php?45,18361 mendel 12月 6th, 2008 at 9:31 am edit ding! liwei 12月 6th, 2008 at 10:16 am edit 谢小孟鼓励。 liwei 12月 6th, 2008 at 3:00 pm edit 以前断续写过一些随笔。 (899 bytes) Posted by: 立委 Date: September 22, 2008 12:18AM 不外是两个路子,基于语法规则的路子,基于统计的机器学习(ML)路子,或者是二者的某种结合。不过,语法的路子并不大用乔姆斯基的转换生成语法。除了教授在实验室做玩具系统外,应用系统中最多用最熟练的是基于模式匹配的有限状态自动机(FSA)的formalism,而不是常提到的上下文自由语法。 自然语言理解(NLU)的核心是自动句法分析(parsing). 这个领域的发展使得 parsing 这样一个繁复的的任务逐渐细化成由浅及深的很多子任务,从词类识别(Part-of-speech tagging),基本短语抱团(phrase chunking), 到句法主谓宾关系(SVO parsing), 语义角色标注(Role Labeling)等等。这就为系统的模块化创造了条件,有利于软件系统的开发和维护。通常的做法是为每个子任务编制模式匹配规则,构成一个一环套一环的系列(pipeline structure), 前一个模块的输出就是下一个模块的输入, 搭积木一样构筑语言理解的大厦(via some form of cascaded FSAs)。 随着硬件的飞速发展,parsing 已经可以处理海量数据(terabyte 量级),应用型开发不再是梦想了。
个人分类: 立委科普|12888 次阅读|3 个评论
[转载]数学之美番外篇:平凡而又神奇的贝叶斯方法[ZZ]
timy 2010-1-28 12:45
From: http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/ 概率论只不过是把常识用数学公式表达了出来。 拉普拉斯 记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了这果然是个牛逼的方法。 题记 目录 0.前言 1.历史 1.1一个例子:自然语言的二义性 1.2贝叶斯公式 2.拼写纠正 3.模型比较与贝叶斯奥卡姆剃刀 3.1再访拼写纠正 3.2模型比较理论(ModelComparasion)与贝叶斯奥卡姆剃刀(BayesianOccamsRazor) 3.3最小描述长度原则 3.4最优贝叶斯推理 4.无处不在的贝叶斯 4.1中文分词 4.2统计机器翻译 4.3贝叶斯图像识别,AnalysisbySynthesis 4.4EM算法与基于模型的聚类 4.5最大似然与最小二乘 5.朴素贝叶斯方法(又名愚蠢者的贝叶斯(idiotsbayes)) 5.1垃圾邮件过滤器 5.2为什么朴素贝叶斯方法令人诧异地好一个理论解释 6.层级贝叶斯模型 6.1隐马可夫模型(HMM) 7.贝叶斯网络 0. 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子。更严格的公式和计算我会在相应的地方注明参考资料。贝叶斯方法被证明是非常general且强大的推理框架,文中你会看到很多有趣的应用。 1. 历史 托马斯贝叶斯(ThomasBayes)同学的详细生平在这里。以下摘一段wikipedia上的简介: 所谓的贝叶斯方法源于他生前为解决一个逆概问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算正向概率,如假设袋子里面有N个白球,M个黑球,你伸手进去摸一把,摸出黑球的概率是多大。而一个自然而然的问题是反过来:如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测。这个问题,就是所谓的逆概问题。 实际上,贝叶斯当时的论文只是对这个问题的一个直接的求解尝试,并不清楚他当时是不是已经意识到这里面包含着的深刻的思想。然而后来,贝叶斯方法席卷了概率论,并将应用延伸到各个问题领域,所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯是机器学习的核心方法之一。这背后的深刻原因在于,现实世界本身就是不确定的,人类的观察能力是有局限性的(否则有很大一部分科学就没有必要做了设想我们能够直接观察到电子的运行,还需要对原子模型争吵不休吗?),我们日常所观察到的只是事物表面上的结果,沿用刚才那个袋子里面取球的比方,我们往往只能知道从里面取出来的球是什么颜色,而并不能直接看到袋子里面实际的情况。这个时候,我们就需要提供一个猜测(hypothesis,更为严格的说法是假设,这里用猜测更通俗易懂一点),所谓猜测,当然就是不确定的(很可能有好多种乃至无数种猜测都能满足目前的观测), 但也绝对不是两眼一抹黑瞎蒙具体地说,我们需要做两件事情:1.算出各种不同猜测的可能性大小。2.算出最靠谱的猜测是什么。第一个就是计算特定猜测的后验概率,对于连续的猜测空间则是计算猜测的概率密度函数。第二个则是所谓的模型比较,模型比较如果不考虑先验概率的话就是最大似然方法。 1.1 一个例子:自然语言的二义性 下面举一个自然语言的不确定性的例子。当你看到这句话: Thegirlsawtheboywithatelescope. 你对这句话的含义有什么猜测?平常人肯定会说:那个女孩拿望远镜看见了那个男孩(即你对这个句子背后的实际语法结构的猜测是:Thegirlsaw-with-a-telescopetheboy)。然而,仔细一想,你会发现这个句子完全可以解释成:那个女孩看见了那个拿着望远镜的男孩(即:Thegirlsawthe-boy-with-a-telescope)。那为什么平常生活中我们每个人都能够迅速地对这种二义性进行消解呢?这背后到底隐藏着什么样的思维法则?我们留到后面解释。 1.2 贝叶斯公式 贝叶斯公式是怎么来的? 我们还是使用wikipedia上的一个例子: 一所学校里面有60%的男生,40%的女生。男生总是穿长裤,女生则一半穿长裤一半穿裙子。有了这些信息之后我们可以容易地计算随机选取一个学生,他(她)穿长裤的概率和穿裙子的概率是多大,这个就是前面说的正向概率的计算。然而,假设你走在校园中,迎面走来一个穿长裤的学生(很不幸的是你高度近似,你只看得见他(她)穿的是否长裤,而无法确定他(她)的性别),你能够推断出他(她)是男生的概率是多大吗? 一些认知科学的研究表明(《决策与判断》以及《RationalityforMortals》第12章:小孩也可以解决贝叶斯问题),我们对形式化的贝叶斯问题不擅长,但对于以频率形式呈现的等价问题却很擅长。在这里,我们不妨把问题重新叙述成:你在校园里面随机游走,遇到了N个穿长裤的人(仍然假设你无法直接观察到他们的性别),问这N个人里面有多少个女生多少个男生。 你说,这还不简单:算出学校里面有多少穿长裤的,然后在这些人里面再算出有多少女生,不就行了? 我们来算一算:假设学校里面人的总数是U个。60%的男生都穿长裤,于是我们得到了U*P(Boy)*P(Pants|Boy)个穿长裤的(男生)(其中P(Boy)是男生的概率=60%,这里可以简单的理解为男生的比例;P(Pants|Boy)是条件概率,即在Boy这个条件下穿长裤的概率是多大,这里是100%,因为所有男生都穿长裤)。40%的女生里面又有一半(50%)是穿长裤的,于是我们又得到了U*P(Girl)*P(Pants|Girl)个穿长裤的(女生)。加起来一共是U*P(Boy)*P(Pants|Boy)+U*P(Girl)*P(Pants|Girl)个穿长裤的,其中有U*P(Girl)*P(Pants|Girl)个女生。两者一比就是你要求的答案。 下面我们把这个答案形式化一下:我们要求的是P(Girl|Pants)(穿长裤的人里面有多少女生),我们计算的结果是U*P(Girl)*P(Pants|Girl)/ 。容易发现这里校园内人的总数是无关的,可以消去。于是得到 P(Girl|Pants)=P(Girl)*P(Pants|Girl)/ 注意,如果把上式收缩起来,分母其实就是P(Pants),分子其实就是P(Pants,Girl)。而这个比例很自然地就读作:在穿长裤的人(P(Pants))里面有多少(穿长裤)的女孩(P(Pants,Girl))。 上式中的Pants和Boy/Girl可以指代一切东西,所以其一般形式就是: P(B|A)=P(A|B)*P(B)/ 收缩起来就是: P(B|A)=P(AB)/P(A) 其实这个就等于: P(B|A)*P(A)=P(AB) 难怪拉普拉斯说 概率论只是把常识用数学公式表达了出来 。 然而,后面我们会逐渐发现,看似这么平凡的贝叶斯公式,背后却隐含着非常深刻的原理。 2. 拼写纠正 经典著作《人工智能:现代方法》的作者之一PeterNorvig曾经写过一篇介绍如何写一个拼写检查/纠正器的文章(原文在这里,徐宥的翻译版在这里,这篇文章很深入浅出,强烈建议读一读),里面用到的就是贝叶斯方法,这里我们不打算复述他写的文章,而是简要地将其核心思想介绍一下。 首先,我们需要询问的是: 问题是什么? 问题是我们看到用户输入了一个不在字典中的单词,我们需要去猜测:这个家伙到底真正想输入的单词是什么呢?用刚才我们形式化的语言来叙述就是,我们需要求: P( 我们猜测他想输入的单词|他实际输入的单词) 这个概率。并找出那个使得这个概率最大的猜测单词。显然,我们的猜测未必是唯一的,就像前面举的那个自然语言的歧义性的例子一样;这里,比如用户输入:thew,那么他到底是想输入the,还是想输入thaw?到底哪个猜测可能性更大呢?幸运的是我们可以用贝叶斯公式来直接出它们各自的概率,我们不妨将我们的多个猜测记为h1h2..(h代表hypothesis),它们都属于一个有限且离散的猜测空间H(单词总共就那么多而已),将用户实际输入的单词记为D(D代表Data,即观测数据),于是 P( 我们的猜测1|他实际输入的单词) 可以抽象地记为: P(h1|D) 类似地,对于我们的猜测2,则是P(h2|D)。不妨统一记为: P(h|D) 运用一次贝叶斯公式,我们得到: P(h|D)=P(h)*P(D|h)/P(D) 对于不同的具体猜测h1h2h3..,P(D)都是一样的,所以在比较P(h1|D)和P(h2|D)的时候我们可以忽略这个常数。即我们只需要知道: P(h|D)P(h)*P(D|h)(注:那个符号的意思是正比例于,不是无穷大,注意符号右端是有一个小缺口的。) 这个式子的抽象含义是:对于给定观测数据,一个猜测是好是坏,取决于这个猜测本身独立的可能性大小(先验概率,Prior)和这个猜测生成我们观测到的数据的可能性大小(似然,Likelihood)的乘积。具体到我们的那个thew例子上,含义就是,用户实际是想输入the的可能性大小取决于the本身在词汇表中被使用的可能性(频繁程度)大小(先验概率)和想打the却打成thew的可能性大小(似然)的乘积。 下面的事情就很简单了,对于我们猜测为可能的每个单词计算一下P(h)*P(D|h)这个值,然后取最大的,得到的就是最靠谱的猜测。 一点注记 :Norvig的拼写纠正器里面只提取了编辑距离为2以内的所有已知单词。这是为了避免去遍历字典中每个单词计算它们的P(h)*P(D|h),但这种做法为了节省时间带来了一些误差。但话说回来难道我们人类真的回去遍历每个可能的单词来计算他们的后验概率吗?不可能。实际上,根据认知神经科学的观点,我们首先根据错误的单词做一个bottom-up的关联提取,提取出有可能是实际单词的那些候选单词,这个提取过程就是所谓的基于内容的提取,可以根据错误单词的一些模式片段提取出有限的一组候选,非常快地缩小的搜索空间(比如我输入explaination,单词里面就有充分的信息使得我们的大脑在常数时间内把可能性narrowdown到explanation这个单词上,至于具体是根据哪些线索如音节来提取,又是如何在生物神经网络中实现这个提取机制的,目前还是一个没有弄清的领域)。然后,我们对这有限的几个猜测做一个top-down的预测,看看到底哪个对于观测数据(即错误单词)的预测效力最好,而如何衡量预测效率则就是用贝叶斯公式里面的那个P(h)*P(D|h)了虽然我们很可能使用了一些启发法来简化计算。后面我们还会提到这样的bottom-up的关联提取。 3. 模型比较与奥卡姆剃刀 3.1 再访拼写纠正 介绍了贝叶斯拼写纠正之后,接下来的一个自然而然的问题就来了: 为什么? 为什么要用贝叶斯公式?为什么贝叶斯公式在这里可以用?我们可以很容易地领会为什么贝叶斯公式用在前面介绍的那个男生女生长裤裙子的问题里是正确的。但为什么这里? 为了回答这个问题,一个常见的思路就是想想: 非得这样吗? 因为如果你想到了另一种做法并且证明了它也是靠谱的,那么将它与现在这个一比较,也许就能得出很有价值的信息。那么对于拼写纠错问题你能想到其他方案吗? 不管怎样,一个最常见的替代方案就是,选择离thew的编辑距离最近的。然而the和thaw离thew的编辑距离都是1。这可咋办捏?你说,不慌,那还是好办。我们就看到底哪个更可能被错打为thew就是了。我们注意到字母e和字母w在键盘上离得很紧,无名指一抽筋就不小心多打出一个w来,the就变成thew了。而另一方面thaw被错打成thew的可能性就相对小一点,因为e和a离得较远而且使用的指头相差一个指头(一个是中指一个是小指,不像e和w使用的指头靠在一块神经科学的证据表明紧邻的身体设施之间容易串位)。OK,很好,因为你现在已经是在用最大似然方法了,或者直白一点,你就是在计算那个使得P(D|h)最大的h。 而贝叶斯方法计算的是什么?是P(h)*P(D|h)。多出来了一个P(h)。我们刚才说了,这个多出来的P(h)是特定猜测的先验概率。为什么要掺和进一个先验概率?刚才说的那个最大似然不是挺好么?很雄辩地指出了the是更靠谱的猜测。有什么问题呢?既然这样,我们就从给最大似然找茬开始吧我们假设两者的似然程度是一样或非常相近,这样不就难以区分哪个猜测更靠谱了吗?比如用户输入tlp,那到底是top还是tip?(这个例子不怎么好,因为top和tip的词频可能仍然是接近的,但一时想不到好的英文单词的例子,我们不妨就假设top比tip常见许多吧,这个假设并不影响问题的本质。)这个时候,当最大似然不能作出决定性的判断时,先验概率就可以插手进来给出指示既然你无法决定,那么我告诉你,一般来说top出现的程度要高许多,所以更可能他想打的是top)。 以上只是最大似然的一个问题,即并不能提供决策的全部信息。 最大似然还有另一个问题:即便一个猜测与数据非常符合,也并不代表这个猜测就是更好的猜测,因为这个猜测本身的可能性也许就非常低。比如MacKay在《InformationTheory:InferenceandLearningAlgorithms》里面就举了一个很好的例子:-13711你说是等差数列更有可能呢?还是-X^3/11+9/11*X^2+23/11每项把前项作为X带入后计算得到的数列?此外曲线拟合也是,平面上N个点总是可以用N-1阶多项式来完全拟合,当N个点近似但不精确共线的时候,用N-1阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上。你说到底哪个好呢?多项式?还是直线?一般地说肯定是越低阶的多项式越靠谱(当然前提是也不能忽视似然P(D|h),明摆着一个多项式分布您愣是去拿直线拟合也是不靠谱的,这就是为什么要把它们两者乘起来考虑。),原因之一就是低阶多项式更常见,先验概率(P(h))较大(原因之二则隐藏在P(D|h)里面),这就是为什么我们要用样条来插值,而不是直接搞一个N-1阶多项式来通过任意N个点的原因。 以上分析当中隐含的哲学是,观测数据总是会有各种各样的误差,比如观测误差(比如你观测的时候一个MM经过你一不留神,手一抖就是一个误差出现了),所以如果过分去寻求能够完美解释观测数据的模型,就会落入所谓的数据过配(overfitting)的境地,一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),显然就过犹不及了。所以P(D|h)大不代表你的h(猜测)就是更好的h。还要看P(h)是怎样的。所谓奥卡姆剃刀精神就是说:如果两个理论具有相似的解释力度,那么优先选择那个更简单的(往往也正是更平凡的,更少繁复的,更常见的)。 过分匹配的另一个原因在于当观测的结果并不是因为误差而显得不精确而是因为真实世界中对数据的结果产生贡献的因素太多太多,跟噪音不同,这些偏差是一些另外的因素集体贡献的结果,不是你的模型所能解释的噪音那是不需要解释一个现实的模型往往只提取出几个与结果相关度很高,很重要的因素(cause)。这个时候观察数据会倾向于围绕你的有限模型的预测结果呈正态分布,于是你实际观察到的结果就是这个正态分布的随机取样,这个取样很可能受到其余因素的影响偏离你的模型所预测的中心,这个时候便不能贪心不足地试图通过改变模型来完美匹配数据,因为那些使结果偏离你的预测的贡献因素不是你这个有限模型里面含有的因素所能概括的,硬要打肿脸充胖子只能导致不实际的模型,举个教科书例子:身高和体重的实际关系近似于一个二阶多项式的关系,但大家都知道并不是只有身高才会对体重产生影响,物理世界影响体重的因素太多太多了,有人身材高大却瘦得跟稻草,有人却是横长竖不长。但不可否认的是总体上来说,那些特殊情况越是特殊就越是稀少,呈围绕最普遍情况(胖瘦适中)的正态分布,这个分布就保证了我们的身高体重相关模型能够在大多数情况下做出靠谱的预测。但是刚才说了,特例是存在的,就算不是特例,人有胖瘦,密度也有大小,所以完美符合身高体重的某个假想的二阶多项式关系的人是不存在的,我们又不是欧几里德几何世界当中的理想多面体,所以,当我们对人群随机抽取了N个样本(数据点)试图对这N个数据点拟合出一个多项式的话就得注意,它肯定得是二阶多项式,我们要做的只是去根据数据点计算出多项式各项的参数(一个典型的方法就是最小二乘);它肯定不是直线(我们又不是稻草),也不是三阶多项式四阶多项式..如果硬要完美拟合N个点,你可能会整出一个N-1阶多项式来设想身高和体重的关系是5阶多项式看看? 3.2 模型比较理论(ModelComparasion)与贝叶斯奥卡姆剃刀(BayesianOccamsRazor) 实际上,模型比较就是去比较哪个模型(猜测)更可能隐藏在观察数据的背后。其基本思想前面已经用拼写纠正的例子来说明了。我们对用户实际想输入的单词的猜测就是模型,用户输错的单词就是观测数据。我们通过: P(h|D)P(h)*P(D|h) 来比较哪个模型最为靠谱。前面提到,光靠P(D|h)(即似然)是不够的,有时候还需要引入P(h)这个先验概率。奥卡姆剃刀就是说P(h)较大的模型有较大的优势,而最大似然则是说最符合观测数据的(即P(D|h)最大的)最有优势。整个模型比较就是这两方力量的拉锯。我们不妨再举一个简单的例子来说明这一精神:你随便找枚硬币,掷一下,观察一下结果。好,你观察到的结果要么是正,要么是反(不,不是少林足球那枚硬币:P),不妨假设你观察到的是正。现在你要去根据这个观测数据推断这枚硬币掷出正的概率是多大。根据最大似然估计的精神,我们应该猜测这枚硬币掷出正的概率是1,因为这个才是能最大化P(D|h)的那个猜测。然而每个人都会大摇其头很显然,你随机摸出一枚硬币这枚硬币居然没有反面的概率是不存在的,我们对一枚随机硬币是否一枚有偏硬币,偏了多少,是有着一个先验的认识的,这个认识就是绝大多数硬币都是基本公平的,偏得越多的硬币越少见(可以用一个beta分布来表达这一先验概率)。将这个先验正态分布p()(其中表示硬币掷出正面的比例,小写的p代表这是概率密度函数)结合到我们的问题中,我们便不是去最大化P(D|h),而是去最大化P(D|)*p(),显然=1是不行的,因为P(=1)为0,导致整个乘积也为0。实际上,只要对这个式子求一个导数就可以得到最值点。 以上说的是当我们知道先验概率P(h)的时候,光用最大似然是不靠谱的,因为最大似然的猜测可能先验概率非常小。然而,有些时候,我们对于先验概率一无所知,只能假设每种猜测的先验概率是均等的,这个时候就只有用最大似然了。实际上,统计学家和贝叶斯学家有一个有趣的争论,统计学家说:我们让数据自己说话。言下之意就是要摒弃先验概率。而贝叶斯支持者则说:数据会有各种各样的偏差,而一个靠谱的先验概率则可以对这些随机噪音做到健壮。事实证明贝叶斯派胜利了,胜利的关键在于所谓先验概率其实也是经验统计的结果,譬如为什么我们会认为绝大多数硬币是基本公平的?为什么我们认为大多数人的肥胖适中?为什么我们认为肤色是种族相关的,而体重则与种族无关?先验概率里面的先验并不是指先于一切经验,而是仅指先于我们当前给出的观测数据而已,在硬币的例子中先验指的只是先于我们知道投掷的结果这个经验,而并非先天。 然而,话说回来,有时候我们必须得承认,就算是基于以往的经验,我们手头的先验概率还是均匀分布,这个时候就必须依赖用最大似然,我们用前面留下的一个自然语言二义性问题来说明这一点: Thegirlsawtheboywithatelescope. 到底是Thegirlsaw-with-a-telescopetheboy这一语法结构,还是Thegirlsawthe-boy-with-a-telescope呢?两种语法结构的常见程度都差不多(你可能会觉得后一种语法结构的常见程度较低,这是事后偏见,你只需想想Thegirlsawtheboywithabook就知道了。当然,实际上从大规模语料统计结果来看后一种语法结构的确稍稍不常见一丁点,但是绝对不足以解释我们对第一种结构的强烈倾向)。那么到底为什么呢? 我们不妨先来看看MacKay在书中举的一个漂亮的例子: 图中有多少个箱子?特别地,那棵书后面是一个箱子?还是两个箱子?还是三个箱子?还是..你可能会觉得树后面肯定是一个箱子,但为什么不是两个呢?如下图: 很简单,你会说:要是真的有两个箱子那才怪了,怎么就那么巧这两个箱子刚刚好颜色相同,高度相同呢? 用概率论的语言来说,你刚才的话就翻译为:猜测h不成立,因为P(D|h)太小(太巧合)了。我们的直觉是:巧合(小概率)事件不会发生。所以当一个猜测(假设)使得我们的观测结果成为小概率事件的时候,我们就说才怪呢,哪能那么巧捏?! 现在我们可以回到那个自然语言二义性的例子,并给出一个完美的解释了:如果语法结构是Thegirlsawthe-boy-with-a-telecope的话,怎么那个男孩偏偏手里拿的就是望远镜一个可以被用来saw-with的东东捏?这也忒小概率了吧。他咋就不会拿本书呢?拿什么都好。怎么偏偏就拿了望远镜?所以唯一的解释是,这个巧合背后肯定有它的必然性,这个必然性就是,如果我们将语法结构解释为Thegirlsaw-with-a-telescopetheboy的话,就跟数据完美吻合了既然那个女孩是用某个东西去看这个男孩的,那么这个东西是一个望远镜就完全可以解释了(不再是小概率事件了)。 自然语言二义性很常见,譬如上文中的一句话: 参见《决策与判断》以及《RationalityforMortals》第12章:小孩也可以解决贝叶斯问题 就有二义性:到底是参见这两本书的第12章,还是仅仅是第二本书的第12章呢?如果是这两本书的第12章那就是咄咄怪事了,怎么恰好两本书都有第12章,都是讲同一个问题,更诡异的是,标题还相同呢? 注意,以上做的是似然估计(即只看P(D|h)的大小),不含先验概率。通过这两个例子,尤其是那个树后面的箱子的例子我们可以看到,似然估计里面也蕴含着奥卡姆剃刀:树后面的箱子数目越多,这个模型就越复杂。单个箱子的模型是最简单的。似然估计选择了更简单的模型。 这个就是所谓的 贝叶斯奥卡姆剃刀(BayesianOccamsRazor) ,因为这个剃刀工作在贝叶斯公式的似然(P(D|h))上,而不是模型本身(P(h))的先验概率上,后者是传统的奥卡姆剃刀。关于贝叶斯奥卡姆剃刀我们再来看一个前面说到的曲线拟合的例子:如果平面上有N个点,近似构成一条直线,但绝不精确地位于一条直线上。这时我们既可以用直线来拟合(模型1),也可以用二阶多项式(模型2)拟合,也可以用三阶多项式(模型3),..,特别地,用N-1阶多项式便能够保证肯定能完美通过N个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。然而,我们其实并不需要依赖于这个先验的奥卡姆剃刀,因为有人可能会争辩说:你怎么就能说越高阶的多项式越不常见呢?我偏偏觉得所有阶多项式都是等可能的。好吧,既然如此那我们不妨就扔掉P(h)项,看看P(D|h)能告诉我们什么。我们注意到越是高阶的多项式,它的轨迹弯曲程度越是大,到了八九阶简直就是直上直下,于是我们不仅要问:一个比如说八阶多项式在平面上随机生成的一堆N个点偏偏恰好近似构成一条直线的概率(即P(D|h))有多大?太小太小了。反之,如果背后的模型是一条直线,那么根据该模型生成一堆近似构成直线的点的概率就大得多了。这就是贝叶斯奥卡姆剃刀。 这里只是提供一个关于贝叶斯奥卡姆剃刀的科普,强调直观解释,更多理论公式请参考MacKay的著作《InformationTheory:InferenceandLearningAlgorithms》第28章。 3.3 最小描述长度原则 贝叶斯模型比较理论与信息论有一个有趣的关联: P(h|D)P(h)*P(D|h) 两边求对数,将右式的乘积变成相加: lnP(h|D)lnP(h)+lnP(D|h) 显然,最大化P(h|D)也就是最大化lnP(h|D)。而lnP(h)+lnP(D|h)则可以解释为模型(或者称假设、猜测)h的编码长度加上在该模型下数据D的编码长度。使这个和最小的模型就是最佳模型。 而究竟如何定义一个模型的编码长度,以及数据在模型下的编码长度则是一个问题。更多可参考Mitchell的《MachineLearning》的6.6节,或Mackay的28.3节) 3.4 最优贝叶斯推理 所谓的推理,分为两个过程,第一步是对观测数据建立一个模型。第二步则是使用这个模型来推测未知现象发生的概率。我们前面都是讲的对于观测数据给出最靠谱的那个模型。然而很多时候,虽然某个模型是所有模型里面最靠谱的,但是别的模型也并不是一点机会都没有。譬如第一个模型在观测数据下的概率是0.5。第二个模型是0.4,第三个是0.1。如果我们只想知道对于观测数据哪个模型最可能,那么只要取第一个就行了,故事到此结束。然而很多时候我们建立模型是为了推测未知的事情的发生概率,这个时候,三个模型对未知的事情发生的概率都会有自己的预测,仅仅因为某一个模型概率稍大一点就只听他一个人的就太不民主了。所谓的最优贝叶斯推理就是将三个模型对于未知数据的预测结论加权平均起来(权值就是模型相应的概率)。显然,这个推理是理论上的制高点,无法再优了,因为它已经把所有可能性都考虑进去了。 只不过实际上我们是基本不会使用这个框架的,因为计算模型可能非常费时间,二来模型空间可能是连续的,即有无穷多个模型(这个时候需要计算模型的概率分布)。结果还是非常费时间。所以这个被看作是一个理论基准。 4. 无处不在的贝叶斯 以下我们再举一些实际例子来说明贝叶斯方法被运用的普遍性,这里主要集中在机器学习方面,因为我不是学经济的,否则还可以找到一堆经济学的例子。 4.1 中文分词 贝叶斯是机器学习的核心方法之一。比如中文分词领域就用到了贝叶斯。Google研究员吴军在《数学之美》系列中就有一篇是介绍中文分词的,这里只介绍一下核心的思想,不做赘述,详细请参考吴军的文章(这里)。 分词问题的描述为:给定一个句子(字串),如: 南京市长江大桥 如何对这个句子进行分词(词串)才是最靠谱的。例如: 1.南京市/长江大桥 2.南京/市长/江大桥 这两个分词,到底哪个更靠谱呢? 我们用贝叶斯公式来形式化地描述这个问题,令X为字串(句子),Y为词串(一种特定的分词假设)。我们就是需要寻找使得P(Y|X)最大的Y,使用一次贝叶斯可得: P(Y|X)P(Y)*P(X|Y) 用自然语言来说就是这种分词方式(词串)的可能性乘以这个词串生成我们的句子的可能性。我们进一步容易看到:可以近似地将P(X|Y)看作是恒等于1的,因为任意假想的一种分词方式之下生成我们的句子总是精准地生成的(只需把分词之间的分界符号扔掉即可)。于是,我们就变成了去最大化P(Y),也就是寻找一种分词使得这个词串(句子)的概率最大化。而如何计算一个词串: W1,W2,W3,W4.. 的可能性呢?我们知道,根据联合概率的公式展开:P(W1,W2,W3,W4..)=P(W1)*P(W2|W1)*P(W3|W2,W1)*P(W4|W1,W2,W3)*..于是我们可以通过一系列的条件概率(右式)的乘积来求整个联合概率。然而不幸的是随着条件数目的增加(P(Wn|Wn-1,Wn-2,..,W1)的条件有n-1个),数据稀疏问题也会越来越严重,即便语料库再大也无法统计出一个靠谱的P(Wn|Wn-1,Wn-2,..,W1)来。为了缓解这个问题,计算机科学家们一如既往地使用了天真假设:我们假设句子中一个词的出现概率只依赖于它前面的有限的k个词(k一般不超过3,如果只依赖于前面的一个词,就是2元语言模型(2-gram),同理有3-gram、4-gram等),这个就是所谓的有限地平线假设。虽然这个假设很傻很天真,但结果却表明它的结果往往是很好很强大的,后面要提到的朴素贝叶斯方法使用的假设跟这个精神上是完全一致的,我们会解释为什么像这样一个天真的假设能够得到强大的结果。目前我们只要知道,有了这个假设,刚才那个乘积就可以改写成:P(W1)*P(W2|W1)*P(W3|W2)*P(W4|W3)..(假设每个词只依赖于它前面的一个词)。而统计P(W2|W1)就不再受到数据稀疏问题的困扰了。对于我们上面提到的例子南京市长江大桥,如果按照自左到右的贪婪方法分词的话,结果就成了南京市长/江大桥。但如果按照贝叶斯分词的话(假设使用3-gram),由于南京市长和江大桥在语料库中一起出现的频率为0,这个整句的概率便会被判定为0。从而使得南京市/长江大桥这一分词方式胜出。 一点注记 :有人可能会疑惑,难道我们人类也是基于这些天真的假设来进行推理的?不是的。事实上,统计机器学习方法所统计的东西往往处于相当表层(shallow)的层面,在这个层面机器学习只能看到一些非常表面的现象,有一点科学研究的理念的人都知道:越是往表层去,世界就越是繁复多变。从机器学习的角度来说,特征(feature)就越多,成百上千维度都是可能的。特征一多,好了,高维诅咒就产生了,数据就稀疏得要命,不够用了。而我们人类的观察水平显然比机器学习的观察水平要更深入一些,为了避免数据稀疏我们不断地发明各种装置(最典型就是显微镜),来帮助我们直接深入到更深层的事物层面去观察更本质的联系,而不是在浅层对表面现象作统计归纳。举一个简单的例子,通过对大规模语料库的统计,机器学习可能会发现这样一个规律:所有的他都是不会穿bra的,所有的她则都是穿的。然而,作为一个男人,却完全无需进行任何统计学习,因为深层的规律就决定了我们根本不会去穿bra。至于机器学习能不能完成后者(像人类那样的)这个推理,则是人工智能领域的经典问题。至少在那之前,声称统计学习方法能够终结科学研究(原文)的说法是纯粹外行人说的话。 4.2 统计机器翻译 统计机器翻译因为其简单,自动(无需手动添加规则),迅速成为了机器翻译的事实标准。而统计机器翻译的核心算法也是使用的贝叶斯方法。 问题是什么?统计机器翻译的问题可以描述为:给定一个句子e,它的可能的外文翻译f中哪个是最靠谱的。即我们需要计算:P(f|e)。一旦出现条件概率贝叶斯总是挺身而出: P(f|e)P(f)*P(e|f) 这个式子的右端很容易解释:那些先验概率较高,并且更可能生成句子e的外文句子f将会胜出。我们只需简单统计(结合上面提到的N-Gram语言模型)就可以统计任意一个外文句子f的出现概率。然而P(e|f)却不是那么好求的,给定一个候选的外文局子f,它生成(或对应)句子e的概率是多大呢?我们需要定义什么叫对应,这里需要用到一个分词对齐的平行语料库,有兴趣的可以参考《FoundationsofStatisticalNaturalLanguageProcessing》第13章,这里摘选其中的一个例子:假设e为:JohnlovesMary。我们需要考察的首选f是:JeanaimeMarie(法文)。我们需要求出P(e|f)是多大,为此我们考虑e和f有多少种对齐的可能性,如: John(Jean)loves(aime)Marie(Mary) 就是其中的一种(最靠谱的)对齐,为什么要对齐,是因为一旦对齐了之后,就可以容易地计算在这个对齐之下的P(e|f)是多大,只需计算: P(John|Jean)*P(loves|aime)*P(Marie|Mary) 即可。 然后我们遍历所有的对齐方式,并将每种对齐方式之下的翻译概率求和。便可以获得整个的P(e|f)是多大。 一点注记 :还是那个问题:难道我们人类真的是用这种方式进行翻译的?highlyunlikely。这种计算复杂性非常高的东西连三位数乘法都搞不定的我们才不会笨到去使用呢。根据认知神经科学的认识,很可能我们是先从句子到语义(一个逐层往上(bottom-up)抽象的folding过程),然后从语义根据另一门语言的语法展开为另一门语言(一个逐层往下(top-down)的具体化unfolding过程)。如何可计算地实现这个过程,目前仍然是个难题。(我们看到很多地方都有bottom-up/top-down这样一个对称的过程,实际上有人猜测这正是生物神经网络原则上的运作方式,对视觉神经系统的研究尤其证明了这一点,Hawkins在《OnIntelligence》里面提出了一种HTM(HierarchicalTemporalMemory)模型正是使用了这个原则。) 4.3 贝叶斯图像识别,AnalysisbySynthesis 贝叶斯方法是一个非常general的推理框架。其核心理念可以描述成:AnalysisbySynthesis(通过合成来分析)。06年的认知科学新进展上有一篇paper就是讲用贝叶斯推理来解释视觉识别的,一图胜千言,下图就是摘自这篇paper: 首先是视觉系统提取图形的边角特征,然后使用这些特征自底向上地激活高层的抽象概念(比如是E还是F还是等号),然后使用一个自顶向下的验证来比较到底哪个概念最佳地解释了观察到的图像。 4.4EM 算法与基于模型的聚类 聚类是一种无指导的机器学习问题,问题描述:给你一堆数据点,让你将它们最靠谱地分成一堆一堆的。聚类算法很多,不同的算法适应于不同的问题,这里仅介绍一个基于模型的聚类,该聚类算法对数据点的假设是,这些数据点分别是围绕K个核心的K个正态分布源所随机生成的,使用HanJiaWei的《DataMing:ConceptsandTechniques》中的图: 图中有两个正态分布核心,生成了大致两堆点。我们的聚类算法就是需要根据给出来的那些点,算出这两个正态分布的核心在什么位置,以及分布的参数是多少。这很明显又是一个贝叶斯问题,但这次不同的是,答案是连续的且有无穷多种可能性,更糟的是,只有当我们知道了哪些点属于同一个正态分布圈的时候才能够对这个分布的参数作出靠谱的预测,现在两堆点混在一块我们又不知道哪些点属于第一个正态分布,哪些属于第二个。反过来,只有当我们对分布的参数作出了靠谱的预测时候,才能知道到底哪些点属于第一个分布,那些点属于第二个分布。这就成了一个先有鸡还是先有蛋的问题了。为了解决这个循环依赖,总有一方要先打破僵局,说,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是EM算法。 EM的意思是Expectation-Maximazation,在这个聚类问题里面,我们是先随便猜一下这两个正态分布的参数:如核心在什么地方,方差是多少。然后计算出每个数据点更可能属于第一个还是第二个正态分布圈,这个是属于Expectation一步。有了每个数据点的归属,我们就可以根据属于第一个分布的数据点来重新评估第一个分布的参数(从蛋再回到鸡),这个是Maximazation。如此往复,直到参数基本不再发生变化为止。这个迭代收敛过程中的贝叶斯方法在第二步,根据数据点求分布的参数上面。 4.5 最大似然与最小二乘 学过线性代数的大概都知道经典的最小二乘方法来做线性回归。问题描述是:给定平面上N个点,(这里不妨假设我们想用一条直线来拟合这些点回归可以看作是拟合的特例,即允许误差的拟合),找出一条最佳描述了这些点的直线。 一个接踵而来的问题就是,我们如何定义最佳?我们设每个点的坐标为(Xi,Yi)。如果直线为y=f(x)。那么(Xi,Yi)跟直线对这个点的预测:(Xi,f(Xi))就相差了一个Yi=|Yif(Xi)|。最小二乘就是说寻找直线使得(Y1)^2+(Y2)^2+..(即误差的平方和)最小,至于为什么是误差的平方和而不是误差的绝对值和,统计学上也没有什么好的解释。然而贝叶斯方法却能对此提供一个完美的解释。 我们假设直线对于坐标Xi给出的预测f(Xi)是最靠谱的预测,所有纵坐标偏离f(Xi)的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对Xi给出的预测f(Xi)为中心,实际纵坐标为Yi的点(Xi,Yi)发生的概率就正比于EXP 。(EXP(..)代表以常数e为底的多少次方)。 现在我们回到问题的贝叶斯方面,我们要想最大化的后验概率是: P(h|D)P(h)*P(D|h) 又见贝叶斯!这里h就是指一条特定的直线,D就是指这N个数据点。我们需要寻找一条直线h使得P(h)*P(D|h)最大。很显然,P(h)这个先验概率是均匀的,因为哪条直线也不比另一条更优越。所以我们只需要看P(D|h)这一项,这一项是指这条直线生成这些数据点的概率,刚才说过了,生成数据点(Xi,Yi)的概率为EXP 乘以一个常数。而P(D|h)=P(d1|h)*P(d2|h)*..即假设各个数据点是独立生成的,所以可以把每个概率乘起来。于是生成N个数据点的概率为EXP *EXP *EXP *..=EXP {- }最大化这个概率就是要最小化(Y1)^2+(Y2)^2+(Y3)^2+..。熟悉这个式子吗? 5. 朴素贝叶斯方法 朴素贝叶斯方法是一个很特别的方法,所以值得介绍一下。我们用朴素贝叶斯在垃圾邮件过滤中的应用来举例说明。 5.1 贝叶斯垃圾邮件过滤器 问题是什么?问题是,给定一封邮件,判定它是否属于垃圾邮件。按照先例,我们还是用D来表示这封邮件,注意D由N个单词组成。我们用h+来表示垃圾邮件,h-表示正常邮件。问题可以形式化地描述为求: P(h+|D)=P(h+)*P(D|h+)/P(D) P(h-|D)=P(h-)*P(D|h-)/P(D) 其中P(h+)和P(h-)这两个先验概率都是很容易求出来的,只需要计算一个邮件库里面垃圾邮件和正常邮件的比例就行了。然而P(D|h+)却不容易求,因为D里面含有N个单词d1,d2,d3,..,所以P(D|h+)=P(d1,d2,..,dn|h+)。我们又一次遇到了数据稀疏性,为什么这么说呢?P(d1,d2,..,dn|h+)就是说在垃圾邮件当中出现跟我们目前这封邮件一模一样的一封邮件的概率是多大!开玩笑,每封邮件都是不同的,世界上有无穷多封邮件。瞧,这就是数据稀疏性,因为可以肯定地说,你收集的训练数据库不管里面含了多少封邮件,也不可能找出一封跟目前这封一模一样的。结果呢?我们又该如何来计算P(d1,d2,..,dn|h+)呢? 我们将P(d1,d2,..,dn|h+)扩展为:P(d1|h+)*P(d2|d1,h+)*P(d3|d2,d1,h+)*..。熟悉这个式子吗?这里我们会使用一个更激进的假设,我们假设di与di-1是完全条件无关的,于是式子就简化为P(d1|h+)*P(d2|h+)*P(d3|h+)*..。这个就是所谓的条件独立假设,也正是朴素贝叶斯方法的朴素之处。而计算P(d1|h+)*P(d2|h+)*P(d3|h+)*..就太简单了,只要统计di这个单词在垃圾邮件中出现的频率即可。关于贝叶斯垃圾邮件过滤更多的内容可以参考这个条目,注意其中提到的其他资料。 一点注记 :这里,为什么有这个数据稀疏问题,还是因为统计学习方法工作在浅层面,世界上的单词就算不再变多也是非常之多的,单词之间组成的句子也是变化多端,更不用说一篇文章了,文章数目则是无穷的,所以在这个层面作统计,肯定要被数据稀疏性困扰。我们要注意,虽然句子和文章的数目是无限的,然而就拿邮件来说,如果我们只关心邮件中句子的语义(进而更高抽象层面的意图(语义,意图如何可计算地定义出来是一个人工智能问题),在这个层面上可能性便大大缩减了,我们关心的抽象层面越高,可能性越小。单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。神经科学的发现也表明大脑的皮层大致有一种层级结构,对应着越来越抽象的各个层面,至于如何具体实现一个可放在计算机内的大脑皮层,仍然是一个未解决问题,以上只是一个原则(principle)上的认识,只有当computational的cortex模型被建立起来了之后才可能将其放入电脑。 5.2 为什么朴素贝叶斯方法令人诧异地好一个理论解释 朴素贝叶斯方法的条件独立假设看上去很傻很天真,为什么结果却很好很强大呢?就拿一个句子来说,我们怎么能鲁莽地声称其中任意一个单词出现的概率只受到它前面的3个或4个单词的影响呢?别说3个,有时候一个单词的概率受到上一句话的影响都是绝对可能的。那么为什么这个假设在实际中的表现却不比决策树差呢?有人对此提出了一个理论解释,并且建立了什么时候朴素贝叶斯的效果能够等价于非朴素贝叶斯的充要条件,这个解释的核心就是:有些独立假设在各个分类之间的分布都是均匀的所以对于似然的相对大小不产生影响;即便不是如此,也有很大的可能性各个独立假设所产生的消极影响或积极影响互相抵消,最终导致结果受到的影响不大。具体的数学公式请参考这篇paper。 6. 层级贝叶斯模型 层级贝叶斯模型是现代贝叶斯方法的标志性建筑之一。前面讲的贝叶斯,都是在同一个事物层次上的各个因素之间进行统计推理,然而层次贝叶斯模型在哲学上更深入了一层,将这些因素背后的因素(原因的原因,原因的原因,以此类推)囊括进来。一个教科书例子是:如果你手头有N枚硬币,它们是同一个工厂铸出来的,你把每一枚硬币掷出一个结果,然后基于这N个结果对这N个硬币的(出现正面的比例)进行推理。如果根据最大似然,每个硬币的不是1就是0(这个前面提到过的),然而我们又知道每个硬币的p()是有一个先验概率的,也许是一个beta分布。也就是说,每个硬币的实际投掷结果Xi服从以为中心的正态分布,而又服从另一个以为中心的beta分布。层层因果关系就体现出来了。进而还可能依赖于因果链上更上层的因素,以此类推。 6.1 隐马可夫模型(HMM) 吴军在数学之美系列里面介绍的隐马可夫模型(HMM)就是一个简单的层级贝叶斯模型: 那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做隐含马尔可夫模型(HiddenMarkovModel)来解决这些问题。以语音识别为例,当我们观测到语音信号o1,o2,o3时,我们要根据这组信号推测出发送的句子s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知o1,o2,o3,的情况下,求使得条件概率P(s1,s2,s3,|o1,o2,o3.)达到最大值的那个句子s1,s2,s3, 吴军的文章中这里省掉没说的是,s1,s2,s3,..这个句子的生成概率同时又取决于一组参数,这组参数决定了s1,s2,s3,..这个马可夫链的先验生成概率。如果我们将这组参数记为,我们实际上要求的是:P(S|O,)(其中O表示o1,o2,o3,..,S表示s1,s2,s3,..) 当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成 P(o1,o2,o3,|s1,s2,s3.)*P(s1,s2,s3,) 其中 P(o1,o2,o3,|s1,s2,s3.)表示某句话s1,s2,s3被读成o1,o2,o3,的可能性,而P(s1,s2,s3,)表示字串s1,s2,s3,本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为s1,s2,s3这个数列的可能性乘以s1,s2,s3..本身可以一个句子的可能性,得出概率。 这里,s1,s2,s3本身可以一个句子的可能性其实就取决于参数,也就是语言模型。所以简而言之就是发出的语音信号取决于背后实际想发出的句子,而背后实际想发出的句子本身的独立先验概率又取决于语言模型。 7. 贝叶斯网络 吴军已经对贝叶斯网络作了科普,请直接跳转到这里。更详细的理论参考所有机器学习的书上都有。 参考资料 一堆机器学习,一堆概率统计,一堆Google,和一堆Wikipedia条目,一堆paper。 部分书籍参考《机器学习与人工智能资源导引》。
个人分类: 机器学习|3543 次阅读|0 个评论
[转载]《和机器学习和计算机视觉相关的数学(from LinDahua)》
热度 2 ltl315 2010-1-6 12:57
From: http://dahua.spaces.live.com/default.aspx 1. 线性代数 (Linear Algebra) : 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于 Learning 是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是 Introduction to Linear Algebra (3rd Ed.) by Gilbert Strang. 这本书是 MIT 的线性代数课使用的教材,也是被很多其它大学选用的经典教材。它的难度适中,讲解清晰,重要的是对许多核心的概念讨论得比较透彻。我个人觉得,学习线性代数,最重要的不是去熟练矩阵运算和解方程的方法 —— 这些在实际工作中 MATLAB 可以代劳,关键的是要深入理解几个基础而又重要的概念: 子空间 (Subspace) ,正交 (Orthogonality) ,特征值和特征向量 (Eigenvalues and eigenvectors) ,和线性变换 (Linear transform) 。 从我的角度看来,一本线代教科书的质量,就在于它能否给这些根本概念以足够的重视,能否把它们的联系讲清楚。 Strang 的这本书在这方面是做得很好的。 而且,这本书有个得天独厚的优势。书的作者长期在 MIT 讲授线性代数课 (18.06) ,课程的 video 在 MIT 的 Open courseware 网站上有提供。有时间的朋友可以一边看着名师授课的录像,一边对照课本学习或者复习。 http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/CourseHome/index.htm 2. 概率和统计 (Probability and Statistics): 概率论和统计的入门教科书很多,我目前也没有特别的推荐。我在这里想介绍的是一本关于 多元统计 的基础教科书: Applied Multivariate Statistical Analysis (5th Ed.) by Richard A. Johnson and Dean W. Wichern 这本书是我在刚接触向量统计的时候用于学习的,我在香港时做研究的基础就是从此打下了。实验室的一些同学也借用这本书学习 向量统计 。这本书没有特别追求数学上的深度,而是以通俗易懂的方式讲述主要的基本概念,读起来很舒服,内容也很实用。对于 Linear regression, factor analysis, principal component analysis (PCA), and canonical component analysis (CCA ) 这些 Learning 中的基本方法也展开了初步的论述。 之后就可以进一步深入学习 贝叶斯统计和 Graphical models 。一本理想的书是 Introduction to Graphical Models (draft version). by M. Jordan and C. Bishop. 我不知道这本书是不是已经出版了(不要和 Learning in Graphical Models 混淆,那是个论文集,不适合初学)。这本书从基本的贝叶斯统计模型出发一直深入到复杂的统计网络的估计和推断,深入浅出, statistical learning 的许多重要方面都在此书有清楚论述和详细讲解。 MIT 内部可以 access ,至于外面,好像也是有电子版的。 3. 分析 (Analysis) : 我想大家基本都在大学就学过 微积分或者数学分析,深度和广度 则随各个学校而异了。这个领域是很多学科的基础,值得推荐的教科书莫过于 Principles of Mathematical Analysis, by Walter Rudin 有点老,但是绝对经典,深入透彻。缺点就是比较艰深 —— 这是 Rudin 的书的一贯风格,适合于有一定基础后回头去看。 在分析这个方向,接下来就是 泛函分析 (Functional Analysis) 。 Introductory Functional Analysis with Applications, by Erwin Kreyszig. 适合作为泛函的基础教材,容易切入而不失全面。我特别喜欢它对于 谱论和算子理论 的特别关注,这对于做 learning 的研究是特别重要的。 Rudin 也有一本关于 functional analysis 的书,那本书在数学上可能更为深刻,但是不易于上手,所讲内容和 learning 的切合度不如此书。 在分析这个方向,还有一个重要的学科是 测度理论 (Measure theory) ,但是我看过的书里面目前还没有感觉有特别值得介绍的。 4. 拓扑 (Topology) : 在我读过的基本拓扑书各有特色,但是综合而言,我最推崇: Topology (2nd Ed.) by James Munkres 这本书是 Munkres 教授长期执教 MIT 拓扑课的心血所凝。对于一般拓扑学 (General topology) 有全面介绍,而对于 代数拓扑 (Algebraic topology) 也有适度的探讨。此书不需要特别的数学知识就可以开始学习,由浅入深,从最基本的 集合论概念 (很多书不屑讲这个)到 Nagata-Smirnov Theorem 和 Tychonoff theorem 等较深的定理(很多书避开了这个)都覆盖了。讲述方式 思想性很强 ,对于很多定理,除了给出证明过程和引导你思考其背后的原理脉络,很多令人赞叹的亮点 —— 我常读得忘却饥饿,不愿释手。很多习题很有水平。 5. 流形理论 (Manifold theory) : 对于 拓扑和分析 有 一定把握 时,方可开始学习流形理论,否则所学只能流于浮浅 。我所使用的书是 Introduction to Smooth Manifolds. by John M. Lee 虽然书名有 introduction 这个单词,但是实际上此书涉入很深,除了讲授了基本的 manifold , tangent space , bundle , sub-manifold 等,还探讨了诸如 纲理论 (Category theory) , 德拉姆上同调 (De Rham cohomology) 和 积分流形 等一些比较高级的专题。对于 李群和李代数 也有相当多的讨论。行文通俗而又不失严谨,不过对某些记号方式需要熟悉一下。 虽然 李群论是建基于平滑流形的概念之 上,不过,也可能从 矩阵出发 直接学习 李群和李代数 —— 这种方法对于急需使用李群论解决问题的朋友可能更加实用。而且,对于一个问题从不同角度看待也利于加深理解。下面一本书就是这个方向的典范: Lie Groups, Lie Algebras, and Representations: An Elementary Introduction. by Brian C. Hall 此书从开始即从 矩阵切入 ,从代数而非几何角度引入矩阵李群的概念。并通过 定义运算的方式 建立 exponential mapping ,并就此引入李代数 。这种方式比起传统的通过 “ 左不变向量场 (Left-invariant vector field) “ 的方式定义李代数更容易为人所接受,也更容易揭示 李代数的意义 。最后,也有专门的论述把这种新的定义方式和传统方式联系起来。 ———————————————————————————— 无论是研究 Vision, Learning 还是其它别的学科, 数学终究是根基所在 。 学好数学是做好研究的基石 。 学好数学的关键归根结底是 自己的努力 ,但是选择一本好的书还是大有益处的。不同的人有不同的知识背景,思维习惯和研究方向,因此书的选择也因人而异, 只求适合自己,不必强求一致 。上面的书仅仅是从我个人角度的出发介绍的,我的阅读经历实在非常有限,很可能还有比它们更好的书(不妨也告知我一声,先说声谢谢了)。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Learning 中的 代数结构 的建立 Learning 是一个融会多种数学于一体的领域。说起与此有关的数学学科,我们可能会迅速联想到线性代数以及建立在向量空间基础上的统计模型 —— 事实上,主流的论文中确实在很大程度上基于它们。 R^n (n- 维实向量空间 ) 是我们在 paper 中见到最多的空间,它确实非常重要和实用,但是,仅仅依靠它来描述我们的世界并不足够。事实上,数学家们给我们提供了丰富得多的工具。 “ 空间 ”(space) ,这是一个很有意思的名词,几乎出现在所有的数学分支的基础定义之中。归纳起来,所谓空间就是指一个集合以及在上面定义的某种数学结构。关于这个数学结构的定义或者公理,就成为这个数学分支的基础,一切由此而展开。 还是从我们最熟悉的空间 ——R^n 说起吧。大家平常使用这个空间的时候,除了线性运算,其实还用到了别的数学结构,包括度量结构和内积结构。 · 第一,它是一个 拓扑空间 (Topological space) 。而且从拓扑学的角度看,具有 非常优良的性质 : Normal (implying Hausdorff and Regular) , Locally Compact , Paracompact , with Countable basis , Simply connected (implying connected and path connected) , Metrizable . · 第二,它是一个 度量空间 (Metric space) 。我们可以 计算上面任意两点的距离 。 · 第三,它是一个 有限维向量空间 (Finite dimensional space) 。因此,我们可以对里面的元素进行代数运算(加法和数乘),我们还可以赋予它一组有限的基,从而可以用有限维坐标表达每个元素。 · 第四,基于度量结构和线性运算结构,可以建立起 分析 (Analysis) 体系 。我们可以对连续函数进行微分,积分,建立和求解微分方程,以及进行傅立叶变换和小波分析。 · 第五,它是一个 希尔伯特空间 (也就是 完备的内积空间 ) ( Hilbert space, Complete inner product space ) 。它有一套很方便计算的内积 (inner product) 结构 —— 这个空间的度量结构其实就是从其内积结构诱导出来。更重要的,它是完备的 (Complete)—— 代表任何一个柯西序列 (Cauchy sequence) 都有极限 —— 很多人有意无意中其实用到了这个特性,不过习惯性地认为是理所当然了。 · 第六,它上面的 线性映射构成的算子空间 仍旧是 有限维 的 —— 一个非常重要的好处就是, 所有的线性映射都可以用矩阵唯一表示 。特别的,因为它是有限维完备空间,它的泛函空间和它本身是同构的,也是 R^n 。因而,它们的 谱结构 ,也就可以通过 矩阵的特征值和特征向量获得 。 · 第七,它是一个 测度空间 —— 可以计算 子集的大小(面积 / 体积) 。正因为此,我们才可能在上面建立 概率分布 (distribution) —— 这是我们接触的 绝大多数连续统计模型 的基础。 我们可以看到,这是一个非常完美的空间,为我们的应用在数学上提供了一切的方便,在上面,我们可以理所当然地认为它具有我们希望的各种良好性质,而无须特别的证明;我们可以直接使用它的各种运算结构,而不需要从头建立;而且很多本来不一样的概念在这里变成等价的了,我们因此不再需要辨明它们的区别。 以此为界, Learning 的主要工作分成两个大的范畴: 1. 建立一种表达形式,让它处于上面讨论的 R^n 空间里面。 2. 获得了有限维向量表达后,建立各种代数算法或者统计模型进行分析和处理。 这里只讨论第一个范畴。先看看,目前用得比较广泛的一些方法: 1. 直接基于原始数据建立表达 。我们关心的最终目标是一个个现实世界中的对象:一幅图片,一段语音,一篇文章,一条交易记录,等等。这些东西大部分本身没有附着一个数值向量的。为了构造一个向量表达,我们可以把传感器中记录的数值,或者别的什么方式收集的数值数据按照一定的顺序罗列出来,就形成一个向量了。如果有 n 个数字,就认为它们在 R^n 里面。 不过,这在数学上有一点小问题,在大部分情况下,根据数据产生的物理原理,这些向量的值域并不能充满整个空间。比如图像的像素值一般是正值,而且在一个有界闭集之中。这带来的问题是,对它们进行线性运算很可能得到的结果会溢出正常的范围 —— 在大部分 paper 中,可能只是采用某些 heuristics 的手段进行简单处理,或者根本不管,很少见到在数学上对此进行深入探讨的 —— 不过如果能解决实际问题,这也是无可厚非的,毕竟不是所有的工作都需要像纯数学那样追求严谨。 2. 量化 (quantization) 。这是在处理连续信号时被广泛采用的方式。只是习以为常,一般不提名字而已。比如一个空间信号( Vision 中的 image )或者时间信号,它们的 domain 中的值是不可数无限大的 (uncountably infinite) ,不要说表示为有限维向量,即使表达为无限序列也是不可能的。在这种情况下,一般在有限域内,按照一定顺序每隔一定距离取一个点来代表其周围的点,从而形成有限维的表达。这就是信号在时域或空域的量化。 这样做不可避免要丢失信息。但是,由于小邻域内信号的高度相关,信息丢失的程度往往并不显著。而且,从理论上说,这相当于在频域中的低通过率。对于有限能量的连续信号,不可能在无限高的频域中依然保持足够的强度,只要采样密度足够,丢失的东西可以任意的少。 除了表示信号,对于几何形体的表达也经常使用量化,比如表示 curve 和 surface 。 3. 找出有限个数充分表达一个对象也许不是最困难的 。不过 , 在其上面建立数学结构却未必了。一般来说,我们要对其进行处理,首先需要一个拓扑结构用以描述空间上的点是如何联系在一起。直接建立拓扑结构在数学上往往非常困难,也未必实用。因此,绝大部分工作采取的方式是首先建立度量结构。一个度量空间,其度量会自然地诱导出一个拓扑结构 —— 不过,很多情况下我们似乎会无视它的存在。 最简单的情况,就是使用原始向量表达的欧氏距离 (Euclidean distance) 作为 metric 。不过,由于原始表达数值的不同特性,这种方式效果一般不是特别好,未必能有效表达实际对象的相似性(或者不相似性)。因此,很多工作会有再此基础上进行度量的二次建立。方式是多种多样的,一种是寻求一个映射,把原空间的元素变换到一个新的空间,在那里欧氏距离变得更加合适。这个映射发挥的作用包括对信息进行筛选,整合,对某些部分进行加强或者抑制。这就是大部分关于 feature selection , feature extraction ,或者 subspace learning 的文章所要做的。另外一种方式,就是直接调节距离的计算方式(有些文章称之为 metric learning )。 这两种方式未必是不同的。如果映射是单射,那么它相当于在原空间建立了一个不同的度量。反过来,通过改变距离计算方式建立的度量在特定的条件下对应于某种映射。 4. 大家可能注意到,上面提到的 度量建立方法,比如欧氏距离,它需要对元素进行代数运算 。对于普通的向量空间,线性运算是天然赋予的,我们无须专门建立,所以可以直接进行度量的构造 —— 这也是大部分工作的基础。可是,有些事物其原始表达不是一个 n-tuple ,它可能是一个 set ,一个 graph ,或者别的什么特别的 object 。怎么建立代数运算呢? 一种方法是直接建立。就是给这些东西定义自己的加法和数乘。这往往不是那么直接(能很容易建立的线性运算结构早已经被建立好并广泛应用了),可能需要涉及很深的数学知识,并且要有对问题本身的深入了解和数学上的洞察力。不过,一个新的代数结构一旦建立起来,其它的数学结构,包括拓扑,度量,分析,以及内积结构也随之能被自然地诱导出来,我们也就具有了对这个对象空间进行各种数学运算和操作的基础。加法和数乘看上去简单,但是如果我们对于本来不知道如何进行加法和数乘的空间建立了这两样东西,其理论上的贡献是非常大的。 (一个小问题:大家常用各种 graphical model ,但是,每次这些 model 都是分别 formulate ,然后推导出 estimation 和 evaluation 的步骤方法。是否可能对 "the space of graphical model" 或者它的某个特定子集建立某种代数结构呢?(不一定是线性空间,比如群,环,广群, etc )从而使得它们在代数意义上统一起来,而相应的 estimation 或者 evaluation 也可以用过代数运算 derive 。这不是我的研究范围,也超出了我目前的能力和知识水平,只是我相信它在理论上的重要意义,留作一个远景的问题。事实上,数学中确实有一个分支叫做 Algebraic statistics 可能在探讨类似的问题,不过我现在对此了解非常有限。) 5. 回到我们的正题,除了 直接建立运算定义 ,另外一种方式就是 嵌入 (embedding) 到某个向量空间 ,从而继承其运算结构为我所用。当然这种 嵌入 也不是乱来,它 需要保持原来这些对象的某种关系 。最常见的就是 保距嵌入 (isometric embedding) ,我们 首先 建立 度量结构 ( 绕过向量表达,直接对两个对象的距离通过某种方法进行计算 ), 然后 把这个 空间嵌入到目标空间 ,通常是 有限维向量空间,要求保持度量不变。 “ 嵌入 ” 是一种在数学上应用广泛的手段,其 主要目标 就是 通过嵌入到一个属性良好,结构丰富的空间,从而利用其某种结构或者运算体系 。在拓扑学中, 嵌入到 metric space 是 对某个拓扑空间建立度量的重要手段 。而在这里,我们是已有度量的情况下,通过嵌入获取线性运算的结构。除此以来,还有一种就是前些年比较热的 manifold embedding ,这个是通过保持局部结构的嵌入,获取全局结构,后面还会提到。 6. 接下来的一个重要的代数结构,就是 内积 (inner product) 结构 。内积结构一旦建立,会直接诱导出一种性质良好的度量,就是范数 (norm) ,并且进而诱导出拓扑结构。一般来说,内积需要建立在线性空间的基础上,否则连一个二元运算是否是内积都无法验证。不过, kernel 理论指出,对于一个空间,只要定义一个正定核 (positive kernel)—— 一个符合正定条件的二元运算,就必然存在一个希尔伯特空间,其内积运算等效于核运算。这个结论的重要意义在于,我们可以绕开线性空间,通过首先定义 kernel 的方式,诱导出一个线性空间 ( 叫做再生核希尔伯特空间 Reproducing Kernel Hilbert Space) ,从而我们就自然获得我们所需要的度量结构和线性运算结构。这是 kernel theory 的基础。 在很多教科书中,以二次核为例子,把二维空间变成三维,然后告诉大家 kernel 用于升维。对于这种说法,我一直认为在一定程度上是误导的。事实上, kernel 的最首要意义是内积的建立(或者改造),从而诱导出更利于表达的度量和运算结构。对于一个问题而言,选择一个切合问题的 kernel 比起关注 “ 升维 ” 来得更为重要。 kernel 被视为非线性化的重要手段,用于处理非高斯的数据分布。这是有道理的。通过 nonlinear kernel 改造的内积空间,其结构和原空间的结构确实不是线性关联,从这个意义上说,它实施了非线性化。不过,我们还应该明白,它的最终目标还是要回到线性空间,新的内积空间仍旧是一个线性空间,它一旦建立,其后的运算都是线性的,因此, kernel 的使用就是为了寻求一个新的线性空间,使得线性运算更加合理 —— 非线性化的改造最终仍旧是要为线性运算服务。 值得一提的是, kernelization 本质上说还是一种嵌入过程:对于一个空间先建立内积结构,并且以保持内积结构不变的方式嵌入到一个高维的线性空间,从而继承其线性运算体系。 7. 上面说到的都是从全局的方式建立代数结构的过程,但是那必须以某种全局结构为基础(无论预先定义的是运算,度量还是内积,都必须适用于全空间。)但是,全局结构未必存在或者适合,而局部结构往往简单方便得多。这里就形成一种策略, 以局部而达全局 —— 这就是 流形 (manifold) 的思想 ,而其则根源于拓扑学。 从拓扑学的角度说,流形就是一个非常优良的拓扑空间:符合 Hausdorff 分离公理 ( 任何不同的两点都可以通过不相交的邻域分离 ), 符合第二可数公理( 具有可数的拓扑基 ) ,并且更重要的是,局部同胚于 R^n 。因此,一个正则 (Regular) 流形基本就具有了各种最良好的拓扑特性。而局部同胚于 R^n ,代表了它至少在局部上可以继承 R^n 的各种结构,比如线性运算和内积,从而建立分析体系。事实上,拓扑流形继承这些结构后形成的体系,正是现代流形理论研究的重点。继承了分析体系的流形,就形成了微分流形 (Differential manifold) ,这是现代微分几何的核心。而微分流形各点上的切空间 (Tangent Space) ,则获得了线性运算的体系。而进一步继承了局部内积结构的流形,则形成黎曼流形 (Riemann manifold) ,而流形的全局度量体系 —— 测地距离 (geodesics) 正是通过对局部度量的延伸来获得。进一步的,当流行本身的拓扑结构和切空间上的线性结构发生关系 —— 也就获得一簇拓扑关联的线性空间 —— 向量丛 (Vector bundle) 。 虽然 manifold theory 作为现代几何学的核心,是一个博大精深的领域,但是它在 learning 中的应用则显得非常狭窄。事实上,对于 manifold ,很多做 learning 的朋友首先反应的是 ISOMAP, LLE, eigenmap 之类的算法 。这些都属于 embedding 。当然,这确实是流形理论的一个重要方面。严格来说,这要求是 从原空间到其映像的微分同胚映射 ,因此,嵌入后的空间在局部上具有相同的分析结构,同时也获得了各种好处 —— 全局的线性运算和度量。不过,这个概念在 learning 的应用中被相当程度的放宽了 —— 微分同胚并不能被完全保证,而整个分析结构也不能被完全保持。大家更关注的是保持局部结构中的某个方面 —— 不过这在实际应用中的折衷方案也是可以理解的。事实表明,当原空间中的数据足够密集的情况下,这些算法工作良好。 Learning 中流形应用的真正问题在于它被过滥地运用于 稀疏空间 (Sparse space) ,事实上在高维空间中撒进去几千乃至几十万点,即使最相邻的几点也难称为局部了,局部的范围和全局的范围其实已经没有了根本差别,连局部的概念都立不住脚的时候,后面基于其展开的一切工作也都没有太大的意义。事实上, 稀疏空间有其本身的规律和法则 , 通过局部形成全局的流形思想 从本质上是不适合于此的。虽然,流形是一种非常美的理论,但是再漂亮的理论也需要用得其所 —— 它 应该用于解决具有密集数据分布的低维空间 。至于,一些 paper 所报告的在高维空间(比如人脸)运用流形方法获得性能提升,其实未必是因为 “ 流形 ” 本身所起的作用,而很可能是其它方面的因素。 8. 流形在实际应用中起重要作用的还有两个方面:一个是 研究几何形体的性质 (我们暂且不谈这个),还有就是 它和代数结构的结合形成的李群 (Lie group) 和李代数 (Lie algebra) 。 当我们研究的对象是变换本身的时候,它们构成的空间是有其 特殊性 的,比如 所有子空间投影形成了 Grassmann 流形,所有的可逆线性算子,或者仿射算子,也形成各自的流形 。对他们的 最重要操作是变换的结合 ,而不是加法数乘,因此,它们上面定义的更合适的代数结构应该是 群 和不是线性空间。而 群和微分流形的结合体 —— 李群 则成为它们最合适的描述体系 —— 而 其切空间 则构成了 一种加强的线性空间 : 李代数,用于描述其局部变化特性。 李代数和李群的关系是非常漂亮的。它 把 变换的微变化 转换成了 线性空间的代数运算 ,使得移植传统的基于 线性空间的模型和算法到李空间变得可能 。而且李代数中的矩阵比起变换本身的矩阵甚至更能反映变换的特性。 几何变换的李代数矩阵的谱结构 就能非常方便地用于 分析变换的几何特性 。 最后,回头总结一下关于嵌入这个应用广泛的策略,在 learning 中的 isometry, kernel 和 manifold embedding 都属于此范畴,它们分别 通过保持原空间的 度量结构,内积结构和局部结构 来获得到目标(通常是向量空间)的嵌入,从而获得全局的坐标表达,线性运算和度量,进而能被各种线性算法和模型所应用。 在获得这一系列好处的同时,也有值得我们注意的地方。 首先 , 嵌入只是一种数学手段 ,并不能取代 对问题本身的研究和分析 。一种不恰当的原始结构或者嵌入策略,很多时候甚至适得其反 —— 比如稀疏空间的流形嵌入,或者选取不恰当的 kernel 。另外, 嵌入适合于分析,而未必适合于重建或者合成 。这是因为 嵌入是一个 单射 (injection) ,目标空间不是每一个点都和原空间能有效对应的。嵌入之后的运算往往就打破了原空间施加的限制。比如 两个元素即使都是从原空间映射过来,它们的和却未必有原像,这时就不能直接地回到原空间了 。当然可以考虑在原空间找一个点它的映射与之最近,不过这在实际中的有效性是值得商榷的。 和 Learning 有关的数学世界是非常广博的,我随着学习和研究的深入,越来越发现在一些我平常不注意的数学分支中有着适合于问题的结构和方法。比如, 广群 (groupoid) 和广代数 (algebroid) 能克服李群和李代数在 表示连续变换过程 中的一些困难 —— 这些困难困扰了我很长时间。 解决问题和建立数学模型是相辅相成的 ,一方面,一个 清晰的问题将使我们有明确的目标去寻求合适的数学结构 ,另一方面, 对数学结构的深入理解对于指导问题的解决也是有重要作用的。 对于解决一个问题来说, 数学工具的选择 最重要的是 适合 ,而不是高深,但是如果在现有数学方法陷入困难的时候, 寻求更高级别的数学的帮助,往往能柳暗花明 。数学家长时间的努力解决的很多问题,并不都是理论游戏,他们的解决方案中很多时候蕴含着我们需要的东西,而且可能导致对更多问题的解决 —— 但是我们需要时间去学习和发现它们。 拓扑:游走于直观与抽象之间 近日来,抽空再读了一遍 点集拓扑 (Point Set Topology) ,这是我第三次重新学习这个理论了。我看电视剧和小说,极少能有兴致看第二遍,但是, 对于数学,每看一次都有新的启发和收获 。 代数,分析,和拓扑 ,被称为是 现代数学的 三大柱石 。最初读拓扑,是在两三年前,由于学习流形理论的需要。可是,随着知识的积累,发现它是很多理论的根基。可以说,没有拓扑,就没有现代意义的分析与几何。我们在各种数学分支中接触到的最基本的概念,比如, 极限,连续,距离(度量),边界,路径 ,在现代数学中,都 源于拓扑 。 拓扑学是一门非常奇妙的学科,它把最直观的现象和最抽象的概念联系在一起了。 拓扑描述的 是普遍使用的概念(比如 开集,闭集,连续 ),我们对这些概念习以为常,理所当然地使用着,可是,真要定义它,则需要对它们 本质的最深刻的洞察 。数学家们经过长时间的努力,得到了这些概念的现代定义。这里面很多第一眼看上去,会感觉惊奇 —— 怎么会定义成这个样子。 首先是开集 。在学习初等数学时,我们都学习开区间 (a, b) 。可是,这只是在一条线上的,怎么推广到二维空间,或者更高维空间,或者别的形体上呢?最直观的想法,就是 “ 一个不包含边界的集合 ” 。可是,问题来了,给一个集合,何谓 “ 边界 ” ?在拓扑学里面,开集 (Open Set) 是最根本的概念,它是定义在集合运算的基础上的。它要求开集符合这样的条件: 开集 的 任意并集和有限交集 仍为 开集 。 我最初的时候,对于这样的定义方式,确实百思不解。不过,读下去,看了和做了很多证明后,发现,这样的定义一个 很重要的意义 在于:它 保证了开集中每个点都有一个邻域包含在这个集合内 —— 所有点都和外界(补集)保持距离 。这样的理解应该比使用集合运算的定义有更明晰的几何意义。但是,直观的东西不容易直接形成严谨的定义,使用集合运算则更为严格。而集合运算定义中, 任意并集的封闭性 是对这个 几何特点的内在保证 。 另外一个例子就是 “ 连续函数 ”(Continuous Function) 。在学微积分时,一个耳熟能详的定义是 “ 对任意的 epsilon 0 ,存在 delta 0 ,使得 。。。。 ” ,背后最直观的意思就是 “ 足够近的点保证映射到任意小的范围内 ” 。可是, epsilon, delta 都依赖于实空间,不在实空间的映射又怎么办呢?拓扑的定义是 “ 如果一个映射的值域中任何开集的原象都是开集,那么它连续 。 ” 这里就没有 epsilon 什么事了。 “开集的原象是开集” 这里的关键在于,在拓扑学中,开集的最重要意义就是要传递 “ 邻域 ” 的意思 —— 开集本身就是所含点的邻域 。这样连续定义成这样就顺理成章了。稍微把说法调节一下,上面的定义就变成了 “ 对于 f(x) 的任意邻域 U ,都有 x 的一个邻域 V ,使得 V 里面的点都映射到 U 中 。 ” 这里面,我们可以感受到为什么开集在拓扑学中有根本性的意义。既然开 集传达 “ 邻域 ” 的意思 ,那么,它 最重要的作用 就是 要表达哪些点靠得比较近 。 给出一个拓扑结构,就是要指出哪些是开集,从而指出哪些点靠得比较近,这样就形成了一个聚集结构 —— 这就是拓扑 。 可是这也可以通过距离来描述,为什么要用开集呢,反而不直观了。 某种意义上说, 拓扑是 “ 定性 ” 的, 距离度量是 “ 定量 ” 的。随着连续变形,距离会不断变化,但是靠近的点还是靠近,因此本身固有的拓扑特性不会改变 。拓扑学研究的就是这种本质特性 —— 连续变化中的不变性。 在拓扑的基本概念中,最令人费解的,莫过于 “ 紧性 ”(Compactness) 。它 描述一个空间或者一个集合 “ 紧不紧 ” 。正式的定义是 “ 如果一个集合的任意开覆盖都有有限子覆盖,那么它是紧的 ” 。乍一看,实在有点莫名其妙。它究竟想描述一个什么东西呢?和 “ 紧 ” 这个形容词又怎么扯上关系呢? 一个 直观 一点的理解, 几个集合是 “ 紧 ” 的,就是说,无限个点撒进去,不可能充分散开 。无论邻域多么小,必然有一些邻域里面有无限个点。上面关于 compactness 的这个定义的玄机就在有限和无限的转换中。一个紧的集合,被无限多的小邻域覆盖着,但是,总能找到其中的有限个就能盖全。那么,后果是什么呢? 无限个点撒进去,总有一个邻域包着无数个点。 邻域们再怎么小都是这样 —— 这就保证了无限序列中存在极限点。 Compac t 这个概念虽然有点不那么直观,可是 在分析中有着无比重要的作用 。因为它 关系到极限的存在性 —— 这是数学分析的基础。了解泛函分析的朋友都知道, 序列是否收敛 ,很多时候就看它了。微积分中,一个重要的定理 —— 有界数列必然包含收敛子列 ,就是根源于此。 在学习拓扑,或者其它现代数学理论之前,我们的数学一直都在 有限维欧氏空间 之中,那是一个完美的世界,具有一切良好的属性, Hausdorff, Locally compact, Simply connected , Completed ,还有一 套线性代数结构 ,还有良好定义的 度量,范数,与内积 。可是,随着研究的加深,终究还是要走出这个圈子。这个时候,本来理所当然的东西,变得不那么必然了。 · 两个点必然能分开?你要证明空间是 Hausdorff 的。 · 有界数列必然存在极限点?这只在 locally compact 的空间如此。 · 一个连续体内任意两点必然有路径连接?这可未必。 一切看上去有悖常理,而又确实存在。从 线性代数 到 一般的群 ,从 有限维 到 无限维 ,从 度量空间 到 拓扑空间 ,整个认识都需要重新清理。而且,这些绝非仅是数学家的概念游戏,因为我们的世界不是有限维向量能充分表达的。当我们研究一些不是向量能表达的东西的时候,度量,代数,以及分析的概念,都要重新建立,而 起点就在 拓扑 。 和机器学习和计算机视觉相关的数学(转载) (以下转自一位 MIT 牛人的空间文章,写得很实际:) 作者: Dahua 感觉数学似乎总是不够的。这些日子为了解决 research 中的一些问题,又在图书馆捧起了数学的教科书。从大学到现在,课堂上学的和自学的数学其实不算少了,可是在研究的过程中总是发现需要补充新的数学知识。 Learning 和 Vision 都是很多种数学的交汇场。看着不同的理论体系的交汇,对于一个 researcher 来说,往往是非常 exciting 的 enjoyable 的事情。不过,这也代表着要充分了解这个领域并且取得有意义的进展是很艰苦的。 记得在两年前的一次 blog 里面,提到过和 learning 有关的数学。今天看来,我对于数学在这个领域的作用有了新的思考。 对于 Learning 的研究, 1 、 Linear Algebra ( 线性代数 ) 和 Statistics ( 统计学 ) 是最重要和不可缺少的。 这代表了 Machine Learning 中最主流的两大类方法的基础。一种是以 研究函数和变换 为重点的 代数方法 ,比如 Dimension reduction , feature extraction , Kernel 等,一种是以 研究统计模型和样本分布 为重点的 统计方法 ,比如 Graphical model, Information theoretical models 等。它们侧重虽有不同,但是常常是共同使用的, 对于 代数方法 ,往往需要 统计上的解释 ,对于 统计模型 ,其 具体计算则需要代数的帮助 。 以代数和统计为出发点,继续往深处走,我们会发现需要更多的数学。 2 、 Calculus ( 微积分 ) ,只是数学分析体系的基础。 其基础性作用不言而喻。 Learning 研究的大部分问题是在连续的度量空间进行的,无论代数还是统计,在研究优化问题的时候,对一个 映射的微分或者梯度的分析 总是不可避免。而在统计学中, Marginalization 和积分 更是密不可分 —— 不过,以解析形式把积分导出来的情况则不多见。 3 、 Partial Differential Equation (偏微分方程 ) , 这主要用于 描述动态过程 ,或者 仿动态过程 。这个学科在 Vision 中用得比 Learning 多,主要用于 描述连续场的运动或者扩散过程 。比如 Level set, Optical flow 都是这方面的典型例子。 4 、 Functional Analysis ( 泛函分析 ) , 通俗地,可以理解为 微积分 从 有限维 空间到 无限维 空间的 拓展 —— 当然了,它实际上远不止于此。在这个地方,函数以及其所作用的对象之间存在的对偶关系扮演了非常重要的角色。 Learning 发展至今,也在向无限维延伸 —— 从研究 有限维向量 的问题到 以无限维的函数 为 研究对象 。 Kernel Learning 和 Gaussian Process 是其中典型的例子 —— 其中的核心概念都是 Kernel 。很多做 Learning 的人把 Kernel 简单理解为 Kernel trick 的运用,这就把 kernel 的意义严重弱化了。在 泛函 里面, Kernel (Inner Product) 是 建立整个博大的代数体系的根本 ,从 metric, transform 到 spectrum 都根源于此。 5 、 Measure Theory ( 测度理论 ) , 这是和实分析关系非常密切的学科。但是测度理论并不限于此。从某种意义上说, Real Analysis 可以从 Lebesgue Measure (勒贝格测度) 推演,不过其实还有很多别的测度体系 —— 概率 本身就是一种 测度 。测度理论对于 Learning 的意义是根本的, 现代统计学 整个就是建立在 测度理论的基础之上 —— 虽然初级的概率论教科书一般不这样引入。在看一些统计方面的文章的时候,你可能会发现,它们会把统计的公式改用测度来表达,这样做有两个好处:所有的推导和结论不用分别给连续分布和离散分布各自写一遍了,这两种东西都可以用同一的测度形式表达: 连续分布的积分 基于 Lebesgue 测度 , 离散分布的求和 基于 计数测度 ,而且还能推广到那种既不连续又不离散的分布中去(这种东西不是数学家的游戏,而是已经在实用的东西,在 Dirchlet Process 或者 Pitman-Yor Process 里面会经常看到 ) 。而且,即使是连续积分,如果不是在欧氏空间进行,而是在更一般的拓扑空间(比如微分流形或者变换群),那么传统的黎曼积分(就是大学一年级在微积分课学的那种)就不 work 了,你可能需要它们的一些推广,比如 Haar Measure 或者 Lebesgue-Stieltjes 积分 。 6 、 Topology (拓扑学 ) , 这是学术中很基础的学科。它一般不直接提供方法,但是它的很多概念和定理是其它数学分支的基石。看很多别的数学的时候,你会经常接触这样一些概念: Open set / Closed set , set basis , Hausdauf, continuous function , metric space, Cauchy sequence, neighborhood, compactness, connectivity 。很多这些也许在大学一年级就学习过一些,当时是基于极限的概念获得的。如果,看过拓扑学之后,对这些概念的认识会有根本性的拓展。比如,连续函数,当时是由 epison 法定义的,就是无论取多小的正数 epsilon ,都存在 xxx ,使得 xxx 。这是需要一种 metric 去度量距离的,在 general topology 里面,对于连续函数的定义连坐标和距离都不需要 —— 如果 一个映射使得开集的原像是开集 ,它就是 连续 的 —— 至于开集是基于集合论定义的,不是通常的 开区间 的意思。这只是最简单的例子。当然,我们研究 learning 也许不需要深究这些数学概念背后的公理体系,但是,打破原来定义的概念的局限在很多问题上是必须的 —— 尤其是当你研究的东西它不是在欧氏空间里面的时候 —— 正交矩阵,变换群,流形,概率分布的空间 ,都属于此。 7 、 Differential Manifold ( 微分流形 ) , 通俗地说它研究的是平滑的曲面。一个直接的印象是它是不是可以用来 fitting 一个 surface 什么的 —— 当然这算是一种应用,但是这是非常初步的。 本质上说 , 微分流形研究的是 平滑的拓扑结构 。一个 空间构成微分流形 的基本要素是 局部平滑 :从 拓扑学 来理解,就是它的 任意局部都同胚于欧氏空间 ,从 解析 的角度来看,就是 相容的局部坐标系统 。当然,在全局上,它不要求和欧氏空间同胚。它除了可以用于刻画集合上的平滑曲面外,更重要的意义在于,它可以用于研究很多重要的集合。一个 n- 维线性空间的全部 k- 维子空间 (k 8 、 Lie Group Theory ( 李群论 ) , 一般意义的群论在 Learning 中被运用的不是很多,群论在 Learning 中用得较多的是它的一个重要方向 Lie group 。定义在平滑流形上的群,并且其群运算是平滑的话,那么这就叫李群。因为 Learning 和编码不同,更多关注的是连续空间,因为 Lie group 在各种群中对于 Learning 特别重要。各种子空间,线性变换,非奇异矩阵都基于通常意义的矩阵乘法构成李群。在李群中的映射,变换,度量,划分等等都对于 Learning 中代数方法的研究有重要指导意义。 9 、 Graph Theory (图论 ) , 图,由于它在表述各种关系的强大能力以及优雅的理论,高效的算法,越来越受到 Learning 领域的欢迎。经典图论,在 Learning 中的一个最重要应用就是 graphical models 了,它被成功运用于分析统计网络的结构和规划统计推断的流程。 Graphical model 所取得的成功,图论可谓功不可没。在 Vision 里面, maxflow (graphcut) 算法在图像分割, Stereo 还有各种能量优化中也广受应用。另外一个重要的图论分支就是 Algebraic graph theory ( 代数图论 ) ,主要运用于图的谱分析,著名的应用包括 Normalized Cut 和 Spectral Clustering 。近年来在 semi-supervised learning 中受到特别关注。 这是大牛们做的很好的综述啊! 据说,是 MIT 一牛人对数学在机器学习中的作用给的评述 ! 本人学习并整理于2010-01-01
个人分类: 生活点滴|19322 次阅读|3 个评论
List of Conferences and Workshops Where Transfer Learning Paper Appear
timy 2009-11-6 10:49
From: http://www.cse.ust.hk/~sinnopan/conferenceTL.htm List of Conferences and Workshops Where Transfer Learning Paper Appear This webpage will be updated regularly. Main Conferences Machine Learning and Artificial Intelligence Conferences AAAI 2008 Transfer Learning via Dimensionality Reduction Transferring Localization Models across Space Transferring Localization Models over Time Transferring Multi-device Localization Models using Latent Multi-task Learning Text Categorization with Knowledge Transfer from Heterogeneous Data Sources Zero-data Learning of New Tasks 2007 Transferring Naive Bayes Classifiers for Text Classification Mapping and Revising Markov Logic Networks for Transfer Learning Measuring the Level of Transfer Learning by an AP Physics Problem-Solver 2006 Using Homomorphisms to Transfer Options across Continuous Reinforcement Learning Domains Value-Function-Based Transfer for Reinforcement Learning Using Structure Mapping IJCAI 2009 Transfer Learning Using Task-Level Features with Application to Information Retrieval Transfer Learning from Minimal Target Data by Mapping across Relational Domains Domain Adaptation via Transfer Component Analysis Knowledge Transfer on Hybrid Graph Manifold Alignment without Correspondence Robust Distance Metric Learning with Auxiliary Knowledge Can Movies and Books Collaborate? Cross-Domain Collaborative Filtering for Sparsity Reduction Exponential Family Sparse Coding with Application to Self-taught Learning 2007 Learning and Transferring Action Schemas General Game Learning Using Knowledge Transfer Building Portable Options: Skill Transfer in Reinforcement Learning Transfer Learning in Real-Time Strategy Games Using Hybrid CBR/RL An Experts Algorithm for Transfer Learning Transferring Learned Control-Knowledge between Planners Effective Control Knowledge Transfer through Learning Skill and Representation Hierarchies Efficient Bayesian Task-Level Transfer Learning ICML 2009 Deep Transfer via Second-Order Markov Logic Feature Hashing for Large Scale Multitask Learning A Convex Formulation for Learning Shared Structures from Multiple Tasks EigenTransfer: A Unified Framework for Transfer Learning Domain Adaptation from Multiple Sources via Auxiliary Classifiers Transfer Learning for Collaborative Filtering via a Rating-Matrix Generative Model 2008 Bayesian Multiple Instance Learning: Automatic Feature Selection and Inductive Transfer Multi-Task Learning for HIV Therapy Screening Self-taught Clustering Manifold Alignment using Procrustes Analysis Automatic Discovery and Transfer of MAXQ Hierarchies Transfer of Samples in Batch Reinforcement Learning Hierarchical Kernel Stick-Breaking Process for Multi-Task Image Analysis Multi-Task Compressive Sensing with Dirichlet Process Priors A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning 2007 Boosting for Transfer Learning Self-taught Learning: Transfer Learning from Unlabeled Data Robust Multi-Task Learning with t-Processes Multi-Task Learning for Sequential Data via iHMMs and the Nested Dirichlet Process Cross-Domain Transfer for Reinforcement Learning Learning a Meta-Level Prior for Feature Relevance from Multiple Related Tasks Multi-Task Reinforcement Learning: A Hierarchical Bayesian Approach The Matrix Stick-Breaking Process for Flexible Multi-Task Learning Asymptotic Bayesian Generalization Error When Training and Test Distributions Are Different Discriminative Learning for Differing Training and Test Distributions 2006 Autonomous Shaping: Knowledge Transfer in Reinforcement Learning Constructing Informative Priors using Transfer Learning NIPS 2008 Clustered Multi-Task Learning: A Convex Formulation Multi-task Gaussian Process Learning of Robot Inverse Dynamics Transfer Learning by Distribution Matching for Targeted Advertising Translated Learning: Transfer Learning across Different Feature Spaces An empirical Analysis of Domain Adaptation Algorithms for Genomic Sequence Analysis Domain Adaptation with Multiple Sources 2007 Learning Bounds for Domain Adaptation Transfer Learning using Kolmogorov Complexity: Basic Theory and Empirical Evaluations A Spectral Regularization Framework for Multi-Task Structure Learning Multi-task Gaussian Process Prediction Semi-Supervised Multitask Learning Gaussian Process Models for Link Analysis and Transfer Learning Multi-Task Learning via Conic Programming Direct Importance Estimation with Model Selection and Its Application to Covariate Shift Adaptation 2006 Correcting Sample Selection Bias by Unlabeled Data Dirichlet-Enhanced Spam Filtering based on Biased Samples Analysis of Representations for Domain Adaptation Multi-Task Feature Learning AISTAT 2009 A Hierarchical Nonparametric Bayesian Approach to Statistical Language Model Domain Adaptation 2007 Kernel Multi-task Learning using Task-specific Features Inductive Transfer for Bayesian Network Structure Learning ECML/PKDD 2009 Relaxed Transfer of Different Classes via Spectral Partition Feature Selection by Transfer Learning with Linear Regularized Models Semi-Supervised Multi-Task Regression 2008 Actively Transfer Domain Knowledge An Algorithm for Transfer Learning in a Heterogeneous Environment Transferred Dimensionality Reduction Modeling Transfer Relationships between Learning Tasks for Improved Inductive Transfer Kernel-Based Inductive Transfer 2007 Graph-Based Domain Mapping for Transfer Learning in General Games Bridged Refinement for Transfer Learning Transfer Learning in Reinforcement Learning Problems Through Partial Policy Recycling Domain Adaptation of Conditional Probability Models via Feature Subsetting 2006 Skill Acquisition via Transfer Learning and Advice Taking COLT 2009 Online Multi-task Learning with Hard Constraints Taking Advantage of Sparsity in Multi-Task Learning Domain Adaptation: Learning Bounds and Algorithms 2008 Learning coordinate gradients with multi-task kernels Linear Algorithms for Online Multitask Classification 2007 Multitask Learning with Expert Advice 2006 Online Multitask Learning UAI 2009 Bayesian Multitask Learning with Latent Hierarchies Multi-Task Feature Learning Via Efficient L2,1-Norm Minimization 2008 Convex Point Estimation using Undirected Bayesian Transfer Hierarchies Data Mining Conferences KDD 2009 Cross Domain Distribution Adaptation via Kernel Mapping Extracting Discriminative Concepts for Domain Adaptation in Text Mining 2008 Spectral domain-transfer learning Knowledge transfer via multiple model local structure mapping 2007 Co-clustering based Classification for Out-of-domain Documents 2006 Reverse Testing: An Efficient Framework to Select Amongst Classifiers under Sample Selection Bias ICDM 2008 Unsupervised Cross-domain Learning by Interaction Information Co-clustering Using Wikipedia for Co-clustering Based Cross-domain Text Classification SDM 2008 Type-Independent Correction of Sample Selection Bias via Structural Discovery and Re-balancing Direct Density Ratio Estimation for Large-scale Covariate Shift Adaptation 2007 On Sample Selection Bias and Its Efficient Correction via Model Averaging and Unlabeled Examples Probabilistic Joint Feature Selection for Multi-task Learning Application Conferences SIGIR 2009 Mining Employment Market via Text Block Detection and Adaptive Cross-Domain Information Extraction Knowledge transformation for cross-domain sentiment classification 2008 Topic-bridged PLSA for cross-domain text classification 2007 Cross-Lingual Query Suggestion Using Query Logs of Different Languages 2006 Tackling Concept Drift by Temporal Inductive Transfer Constructing Informative Prior Distributions from Domain Knowledge in Text Classification Building Bridges for Web Query Classification WWW 2009 Latent Space Domain Transfer between High Dimensional Overlapping Distributions 2008 Can Chinese web pages be classified with English data source? ACL 2009 Transfer Learning, Feature Selection and Word Sense Disambiguation Graph Ranking for Sentiment Transfer Multi-Task Transfer Learning for Weakly-Supervised Relation Extraction Cross-Domain Dependency Parsing Using a Deep Linguistic Grammar Heterogeneous Transfer Learning for Image Clustering via the SocialWeb 2008 Exploiting Feature Hierarchy for Transfer Learning in Named Entity Recognition Multi-domain Sentiment Classification Active Sample Selection for Named Entity Transliteration Mining Wiki Resources for Multilingual Named Entity Recognition Multi-Task Active Learning for Linguistic Annotations 2007 Domain Adaptation with Active Learning for Word Sense Disambiguation Frustratingly Easy Domain Adaptation Instance Weighting for Domain Adaptation in NLP Biographies, Bollywood, Boom-boxes and Blenders: Domain Adaptation for Sentiment Classification Self-Training for Enhancement and Domain Adaptation of Statistical Parsers Trained on Small Datasets 2006 Estimating Class Priors in Domain Adaptation for Word Sense Disambiguation Simultaneous English-Japanese Spoken Language Translation Based on Incremental Dependency Parsing and Transfer CVPR 2009 Domain Transfer SVM for Video Concept Detection Boosted Multi-Task Learning for Face Verification With Applications to Web Image and Video Search 2008 Transfer Learning for Image Classification with Sparse Prototype Representations Workshops NIPS 2005 Workshop - Inductive Transfer: 10 Years Later NIPS 2005 Workshop - Interclass Transfer NIPS 2006 Workshop - Learning when test and training inputs have different distributions AAAI 2008 Workshop - Transfer Learning for Complex Tasks
个人分类: 机器学习|7650 次阅读|0 个评论
ZZ: 迁移学习( Transfer Learning )
timy 2009-11-6 09:46
转载于: http://apex.sjtu.edu.cn/apex_wiki/Transfer%20Learning 迁移学习( Transfer Learning ) 薛贵荣 在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型;然后利用这个学习到的模型来对测试文档进行分类与预测。然而,我们看到机器学习算法在当前的Web挖掘研究中存在着一个关键的问题:一些新出现的领域中的大量训练数据非常难得到。我们看到Web应用领域的发展非常快速。大量新的领域不断涌现,从传统的新闻,到网页,到图片,再到博客、播客等等。传统的机器学习需要对每个领域都标定大量训练数据,这将会耗费大量的人力与物力。而没有大量的标注数据,会使得很多与学习相关研究与应用无法开展。其次,传统的机器学习假设训练数据与测试数据服从相同的数据分布。然而,在许多情况下,这种同分布假设并不满足。通常可能发生的情况如训练数据过期。这往往需要我们去重新标注大量的训练数据以满足我们训练的需要,但标注新数据是非常昂贵的,需要大量的人力与物力。从另外一个角度上看,如果我们有了大量的、在不同分布下的训练数据,完全丢弃这些数据也是非常浪费的。如何合理的利用这些数据就是迁移学习主要解决的问题。迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。迁移学习(Transfer Learning)的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。因此,迁移学习不会像传统机器学习那样作同分布假设。 我们在迁移学习方面的工作目前可以分为以下三个部分:同构空间下基于实例的迁移学习,同构空间下基于特征的迁移学习与异构空间下的迁移学习。我们的研究指出,基于实例的迁移学习有更强的知识迁移能力,基于特征的迁移学习具有更广泛的知识迁移能力,而异构空间的迁移具有广泛的学习与扩展能力。这几种方法各有千秋。 1.同构空间下基于实例的迁移学习 基于实例的迁移学习的基本思想是,尽管辅助训练数据和源训练数据或多或少会有些不同,但是辅助训练数据中应该还是会存在一部分比较适合用来训练一个有效的分类模型,并且适应测试数据。于是,我们的目标就是从辅助训练数据中找出那些适合测试数据的实例,并将这些实例迁移到源训练数据的学习中去。在基于实例的迁移学习方面,我们推广了传统的 AdaBoost 算法,提出一种具有迁移能力的boosting算法:Tradaboosting ,使之具有迁移学习的能力,从而能够最大限度的利用辅助训练数据来帮助目标的分类。我们的关键想法是,利用boosting的技术来过滤掉辅助数据中那些与源训练数据最不像的数据。其中,boosting的作用是建立一种自动调整权重的机制,于是重要的辅助训练数据的权重将会增加,不重要的辅助训练数据的权重将会减小。调整权重之后,这些带权重的辅助训练数据将会作为额外的训练数据,与源训练数据一起从来提高分类模型的可靠度。 基于实例的迁移学习只能发生在源数据与辅助数据非常相近的情况下。但是,当源数据和辅助数据差别比较大的时候,基于实例的迁移学习算法往往很难找到可以迁移的知识。但是我们发现,即便有时源数据与目标数据在实例层面上并没有共享一些公共的知识,它们可能会在特征层面上有一些交集。因此我们研究了基于特征的迁移学习,它讨论的是如何利用特征层面上公共的知识进行学习的问题。 2.同构空间下基于特征的迁移学习 在基于特征的迁移学习研究方面,我们提出了多种学习的算法,如CoCC算法 ,TPLSA算法 ,谱分析算法 与自学习算法 等。其中利用互聚类算法产生一个公共的特征表示,从而帮助学习算法。我们的基本思想是使用互聚类算法同时对源数据与辅助数据进行聚类,得到一个共同的特征表示,这个新的特征表示优于只基于源数据的特征表示。通过把源数据表示在这个新的空间里,以实现迁移学习。应用这个思想,我们提出了基于特征的有监督迁移学习与基于特征的无监督迁移学习。 2.1 基于特征的有监督迁移学习 我们在基于特征的有监督迁移学习方面的工作是基于互聚类的跨领域分类 ,这个工作考虑的问题是:当给定一个新的、不同的领域,标注数据及其稀少时,如何利用原有领域中含有的大量标注数据进行迁移学习的问题。在基于互聚类的跨领域分类这个工作中,我们为跨领域分类问题定义了一个统一的信息论形式化公式,其中基于互聚类的分类问题的转化成对目标函数的最优化问题。在我们提出的模型中,目标函数被定义为源数据实例,公共特征空间与辅助数据实例间互信息的损失。 2.2 基于特征的无监督迁移学习:自学习聚类 我们提出的自学习聚类算法 属于基于特征的无监督迁移学习方面的工作。这里我们考虑的问题是:现实中可能有标记的辅助数据都难以得到,在这种情况下如何利用大量无标记数据辅助数据进行迁移学习的问题。自学习聚类 的基本思想是通过同时对源数据与辅助数据进行聚类得到一个共同的特征表示,而这个新的特征表示由于基于大量的辅助数据,所以会优于仅基于源数据而产生的特征表示,从而对聚类产生帮助。 上面提出的两种学习策略(基于特征的有监督迁移学习与无监督迁移学习)解决的都是源数据与辅助数据在同一特征空间内的基于特征的迁移学习问题。当源数据与辅助数据所在的特征空间中不同时,我们还研究了跨特征空间的基于特征的迁移学习,它也属于基于特征的迁移学习的一种。 3 异构空间下的迁移学习:翻译学习 我们提出的翻译学习 致力于解决源数据与测试数据分别属于两个不同的特征空间下的情况。在 中,我们使用大量容易得到的标注过文本数据去帮助仅有少量标注的图像分类的问题,如上图所示。我们的方法基于使用那些用有两个视角的数据来构建沟通两个特征空间的桥梁。虽然这些多视角数据可能不一定能够用来做分类用的训练数据,但是,它们可以用来构建翻译器。通过这个翻译器,我们把近邻算法和特征翻译结合在一起,将辅助数据翻译到源数据特征空间里去,用一个统一的语言模型进行学习与分类。 引文: . Wenyuan Dai, Yuqiang Chen, Gui-Rong Xue, Qiang Yang, and Yong Yu. Translated Learning: Transfer Learning across Different Feature Spaces. Advances in Neural Information Processing Systems 21 (NIPS 2008), Vancouver, British Columbia, Canada, December 8-13, 2008. . Xiao Ling, Wenyuan Dai, Gui-Rong Xue, Qiang Yang, and Yong Yu. Spectral Domain-Transfer Learning. In Proceedings of the Fourteenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD 2008), Pages 488-496, Las Vegas, Nevada, USA, August 24-27, 2008. . Wenyuan Dai, Qiang Yang, Gui-Rong Xue and Yong Yu. Self-taught Clustering. In Proceedings of the Twenty-Fifth International Conference on Machine Learning (ICML 2008), pages 200-207, Helsinki, Finland, 5-9 July, 2008. . Gui-Rong Xue, Wenyuan Dai, Qiang Yang and Yong Yu. Topic-bridged PLSA for Cross-Domain Text Classification. In Proceedings of the Thirty-first International ACM SIGIR Conference on Research and Development on Information Retrieval (SIGIR2008), pages 627-634, Singapore, July 20-24, 2008. . Xiao Ling, Gui-Rong Xue, Wenyuan Dai, Yun Jiang, Qiang Yang and Yong Yu. Can Chinese Web Pages be Classified with English Data Source? In Proceedings the Seventeenth International World Wide Web Conference (WWW2008), Pages 969-978, Beijing, China, April 21-25, 2008. . Xiao Ling, Wenyuan Dai, Gui-Rong Xue and Yong Yu. Knowledge Transferring via Implicit Link Analysis. In Proceedings of the Thirteenth International Conference on Database Systems for Advanced Applications (DASFAA 2008), Pages 520-528, New Delhi, India, March 19-22, 2008. . Wenyuan Dai, Gui-Rong Xue, Qiang Yang and Yong Yu. Co-clustering based Classification for Out-of-domain Documents. In Proceedings of the Thirteenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD 2007), Pages 210-219, San Jose, California, USA, Aug 12-15, 2007. . Wenyuan Dai, Gui-Rong Xue, Qiang Yang and Yong Yu. Transferring Naive Bayes Classifiers for Text Classification. In Proceedings of the Twenty-Second National Conference on Artificial Intelligence (AAAI 2007), Pages 540-545, Vancouver, British Columbia, Canada, July 22-26, 2007. . Wenyuan Dai, Qiang Yang, Gui-Rong Xue and Yong Yu. Boosting for Transfer Learning. In Proceedings of the Twenty-Fourth International Conference on Machine Learning (ICML 2007), Pages 193-200, Corvallis, Oregon, USA, June 20-24, 2007. . Dikan Xing, Wenyuan Dai, Gui-Rong Xue and Yong Yu. Bridged Refinement for Transfer Learning. In Proceedings of the Eleventh European Conference on Principles and Practice of Knowledge Discovery in Databases (PKDD 2007), Pages 324-335, Warsaw, Poland, September 17-21, 2007. (Best Student Paper Award) . Xin Zhang, Wenyuan Dai, Gui-Rong Xue and Yong Yu. Adaptive Email Spam Filtering based on Information Theory. In Proceedings of the Eighth International Conference on Web Information Systems Engineering (WISE 2007), Pages 159170, Nancy, France, December 3-7, 2007. Transfer Learning (2009-10-29 03:03:46由 grxue 编辑)
个人分类: 机器学习|7274 次阅读|0 个评论
统计学习理论和SVM的不足(0)
dataminer 2009-4-9 19:29
Vapnik的统计学习理论在理论上的最重要的贡献是提出了衡量学习器容量的VC维,根据VC维可以计算学习风险的上界。因此可以通过选择不同VC维的学习器来同时控制经验风险和结构风险。Vapnik的理论产生的最重要的应用成果就是SVM(Support Vector Machine)。SVM一直被认为是建立在坚实理论基础上的机器学习算法。 最近读了Vapnik的《统计学习理论》,虽然还没有读完,刚刚看完Vapnik关于指示函数的风险分析以及VC维的引出,后面还有相当多的部分包括实函数的风险分析,SVM等部分。Vapnik的理论是优美的,揭示了机器学习中的本质问题。其理论甚至有哲学上的意义, 如VC维无线意味着不可证伪性,如从特殊-一般-特殊的认识规律不一定比从特殊-特殊的方法好等等。 不过本人认为Vapnik的统计学习理论和SVM仍然有些不足。 1. VC 维是多次放松的界,并不是很紧的界。 2.对很多学习算法而言,VC维并不好计算(Decision Tree). 3. 对学习问题的定义就引入了Sampling 的Bias.对如何解决Skewed问题没有回答。 4. SVM只能用在复空间。对于一般的nominal feature的向量空间必须映射到复空间。 5 SVM对于缺失值的处理缺乏有效手段。 5.SVM 对于非线性问题,kernel的函数的选择是一个艺术问题。 ==================================== 1. 一般来说,VC维确定的学习风险的界过于悲观。首先从证明过程来说,VC维确定的风险界是通过多次不等式的放松而得到的,这就使得风险的界有可能放大。其次,VC维确定的界是基于学习样本的分布任意的一致界。对于小样本学习问题(此时很难从这么少的样本中准确的估计出样本的分布情况),这个界是很有意义的。但是对于样本较多的学习问题(此时能够比较准确估计样本的分布情况),这个一致的界就会变得太松。另一方面,VC维理论并未考虑学习器的解的分布情况。从数学形式上来看,我们无法预先知道解的分布,预先假设解的分布是没有意义的。但是对于实际问题,尤其是高维问题,解的分布常常是具有一些特征的。实际上为了解决不适定问题,引入正则化方法就是认为假设解的各维分布以0为中心点呈正态分布。对于不是定问题Vapnik的《统计学习理论》也有深入讨论,但是Vapnik是从解决积分函数不连续的这个角度来讨论的。另一方面,从近年来研究较多的矩阵分解方法和Comperessive Sensing方法的研究结果来看,一个对应实际问题,有意义的高维线性系统的解通常是非常稀疏的,即在大多数甚至是绝大多数维度上解的值都为0. 而VC维理论显然没有考虑这一点,将整个解空间平等的拿进来考虑,那些在实际问题中几乎不可能出现的解也被考虑进了学习器的容量中来,而这些解通常又造到了解空间的很大部分(稀疏的解只能是解空间中极小的部分),自然以此为基础估计出来的学习器的界往往就变得悲观了。 2. 用VC维还有一个缺点就是计算起来不方便。要确定一个学习器的VC维通常不是一件容易的事。有时在估计VC维的时候有可能再一次通过不等式放大VC维,从而进一步放松界。 3. 统计学习理论研究的风险的界是 可以用来确定学习器的风险
个人分类: 生活点滴|40 次阅读|0 个评论
聚类分析(Clustering Analysis)
热度 2 郭崇慧 2009-3-4 16:25
(博文后面的参考文献 是聚类分析方面非常好的三篇综述) 聚类作为数据挖掘与统计分析的一个重要的研究领域,近年来倍受关注。从机器学习的角度看,聚类是一种无监督的机器学习方法,即事先对数据集的分布没有任何的了解,它是将物理或抽象对象的集合组成为由类似的对象组成的多个类的过程。聚类方法作为一类非常重要的数据挖掘技术,其主要是依据样本间相似性的度量标准将数据集自动分成几个群组,且使同一个群组内的样本之间相似度尽量高,而属于不同群组的样本之间相似度尽量低的一种方法。聚类中的组不是预先定义的,而是根据实际数据的特征按照数据之间的相似性来定义的,聚类中的组也称为簇。一个聚类分析系统的输入是一组样本和一个度量样本间相似度(或距离)的标准,而输出则是簇集,即数据集的几个类,这些类构成一个分区或者分区结构。聚类分析的一个附加的结果是对每个类的综合描述,这种结果对于更进一步深入分析数据集的特性是尤其重要的。聚类方法尤其适合用来讨论样本间的相互关联从而对一个样本结构做一个初步的评价。数据挖掘中的聚类研究主要集中在针对海量数据的有效和实用的聚类方法上,聚类方法的可伸缩性、高维聚类分析、分类属性数据聚类、具有混合属性数据的聚类和非距离模糊聚类等问题是目前数据挖掘研究人员最为感兴趣的。 聚类已经被广泛应用于许多领域,例如生物学、药学、人类学、市场营销和经济学。聚类应用包括动植物分类、疾病分类、图像处理、模式识别和文本检索。例如,在商业方面,聚类分析可以帮助市场人员发现顾客群中所存在的不同特征的群组,并可以利用购买模式来描述这些具有不同特征的顾客组群。在生物学方面,聚类分析可以用来获取动物或植物所存在的层次结构,可根据基因功能对其进行分类以获得对人群中所固有的结构更深入的了解。聚类还可以从地球观测数据库中帮助识别具有相似的土地使用情况的区域,此外,还可以帮助分类识别互联网上的文档以便进行信息发现。 聚类分析是一个富有挑战性的研究领域,以下就是对数据挖掘中聚类分析的一些典型要求: (1) 可伸缩性(scalability)。实际应用要求聚类算法能够处理大数据集,且时间复杂度不能太高(最好是多项式时间),消耗的内存空间也有限。目前,为了将算法拓展到超大数据库(VLDB)领域,研究人员已经进行了许多有益的尝试,包括:增量式挖掘、可靠的采样、数据挤压(data squashing)等。其中,数据挤压技术首先通过扫描数据来获得数据的统计信息,然后在这些统计信息的基础上进行聚类分析。比如BIRCH 算法中使用CF树就是属于数据挤压技术。 (2) 能够处理不同类型的属性。现实中的数据对象己远远超出关系型数据的范畴,比如空间数据、多媒体数据、遗传学数据、时间序列数据、文本数据、万维网上的数据、以及目前逐渐兴起的数据流。这些数据对象的属性类型往往是由多种数据类型综合而成的。 (3) 能够发现任意形状的簇。 (4) 尽量减少用于决定输入参数的领域知识。 (5) 能够处理噪声数据及孤立点。 (6) 对输入数据记录的顺序不敏感。 (7) 高维性(high-dimensional)。一个数据集可能包含若干维。较高的维数给聚类分析带来两个问题:首先,不相关的属性削弱了数据汇聚的趋势,使得数据分布非常稀疏。尽管这种情况在低维空间中并不多见,但是随着维数的增加,不相关属性的出现概率及数量也会增加,最后导致数据空间中几乎不存在簇。其次,高维使得在低维中很有效的区分数据的标准在高维空间中失效了。如在高维空间中,数据点到最近邻点的距离与到其他点的距离没有多少分别,从而导致最近邻查询在高维空间中不稳定,此时若根据接近度来划分簇,结果是不可信的。 (8) 能够根据用户指定的约束条件进行聚类。 (9) 聚类结果具有可解释性和可用性。 上述的要求使目前聚类分析研究的热点集中在设计能够有效、高效地对大数据库进行聚类分析的方法上。相关的研究课题包括:聚类方法的可扩展性、复杂形状和复杂数据类型的聚类分析及其有效高效性、高维聚类技术,以及混合数值属性与符号属性数据库中的聚类分析方法等。 参考文献: 1. Jain A K, Murty M N, Flynn P J. Data Clustering: A Review. ACM Computing Surveys, 1999, 31(3): 264-323. 2. Xu Rui, Donald Wunsch Ⅱ, Survey of Clustering Algorithms, IEEE Transactions on Neural Networks, 2005, 16(3): 645-678. 3. Omran M G H, Engelbrecht A P, Salman A. An overview of clustering methods. Intelligent Data Analysis, 2007, 11, 583-605
个人分类: 科研笔记|15702 次阅读|9 个评论
数据挖掘与知识发现
郭崇慧 2009-2-1 19:03
数据每年都在成倍增长,但是有用的信息却好像在减少。在过去 20 年里出现的数据挖掘领域正致力于这个问题。它不仅是一个重要的研究领域,而且在现实世界中具有重大的潜在应用价值。 数据挖掘和数据库知识发现( Data Mining Knowledge Discovery in Database ,简称 DMKDD )是 20 世纪 90 年代兴起的一门信息技术领域的前沿技术,它是在数据和数据库急剧增长远远超过人们对数据处理和理解能力的背景下产生的,也是数据库、统计学、机器学习、最优化与计算技术等多学科发展融合的结果。 知识发现是从数据中识别有效的、新颖的、潜在有用的、最终可理解模式的一个复杂过程。数据挖掘是知识发现中通过特定的算法在可接受的计算效率限制内生成特定模式的一个步骤。知识发现是一个包括数据选择、数据预处理、数据变换、数据挖掘、模式评价等步骤,最终得到知识的全过程,而数据挖掘是其中的一个关键步骤。由于数据挖掘对于知识发现的重要性,目前,大多数知识发现的研究都集中在数据挖掘的算法和应用上,因此,很多研究者往往对数据挖掘与知识发现不作严格区分,把二者混淆使用。 目前数据挖掘研究和实践与 20 世纪 60 年代的数据库研究和实践的状态相似。当时应用程序员每次编写程序时,都必须建立一个完整的数据库环境。随着关系数据模型、查询处理和优化技术、事务管理策略和特定查询语言( SQL )与界面的发展,现在的环境已经迥然不同了。在未来几十年内,数据挖掘技术的发展可能会与数据库发展历程相似,就是使数据挖掘技术更易于使用和开发。 参考文献: 1.U. M. Fayyad, G. Piatetsky-Shapiro, P. Smyth, R. Uthurusamy. Advances in knowledge discovery and data mining. AAAI/MIT Press, 1996. 2. J. Han, M. Kamber. Data mining: concepts and techniques. Morgan Kaufmann Publishers, 2001. ( 2nd Edition, 2006 ) 3. M. H. Dunham. Data Mining: Introductory and Advanced Topics. Pearson Education, Inc., 2003. (郭崇慧,田凤占,靳晓明等译.数据挖掘教程 ( 世界著名计算机教材精选 ) .清华大学出版社, 2005 .)
个人分类: 科研笔记|9932 次阅读|0 个评论
统计学习理论与支持向量机
郭崇慧 2009-1-19 19:34
统计学习理论( Statistical Learning Theory , SLT )是一种专门研究有限样本情况下的统计理论 。该理论针对有限样本统计问题建立了一套新的理论体系,在这种体系下的统计推理规则不仅考虑了对渐近性能的要求,而且追求在现有有限信息的条件下得到最优结果。 V. Vapnik 等人从 20 世纪 70 年代开始致力于此方面研究,到 20 世纪 90 年代中期,随着其理论的不断发展和成熟,也由于神经网络等方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。统计学习理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架。 同时,在统计学习理论基础上发展了一种新的通用预测方法支持向量机( Support Vector Machines , SVM ),已初步表现出很多优于已有方法的性能 ,它能将很多现有方法(比如多项式逼近、径向基函数方法、多层感知器网络)纳入其中,有望帮助解决许多原来难以解决的问题(比如神经网络结构选择问题、局部极值问题等)。 SLT 和 SVM 正在成为继神经网络研究之后新的研究热点,并将推动数据挖掘与机器学习理论和技术的重大发展 。 参考文献: 1. V. Vapnik. The nature of statistical learning theory. Springer-Verlag, 1995. 2. V. Vapnik. Statistical learning theory. John Wiley and Sons, Inc., 1998. 3. B. E. Boser, I. Guyon, V. Vapnik. A training algorithm for optimal margin classifiers. In: D. Haussler, Editor, Proceedings of the Fifth Annual ACM Workshop of Computational Learning Theory, 144-152, ACM Press, 1992. 4. C. Cortes, V. Vapnik. Support-vector networks. Machine Learning, 1995, 20, 273-297 5. J. C. Burges. A tutorial on support vector machines for pattern recognition. Data Mining and Knowledge Discovery, 1998, 2(2), 121-167
个人分类: 科研笔记|8169 次阅读|2 个评论
机器学习与人工智能学习资源
热度 3 xiangzr1969 2008-10-6 21:23
第一个是人工智能的历史(History of Artificial Intelligence), 顺着 AI 发展时间线娓娓道来,中间穿插无数牛人故事,且一波三折大气磅礴,可谓事实比想象更令人惊讶。人工智能始于哲学思辨,中间经历了一个没有心理学(尤其是认知神经科学的)的帮助的阶段,仅通过牛人对人类思维的外在表现的归纳、内省,以及数学工具进行探索,其间最令人激动的是 Herbert Simon (决策理论之父,诺奖,跨领域牛人)写的一个自动证明机,证明了罗素的数学原理中的二十几个定理,其中有一个定理比原书中的还要优雅,Simon 的程序用的是启发式搜索,因为公理系统中的证明可以简化为从条件到结论的树状搜索(但由于组合爆炸,所以必须使用启发式剪枝)。后来 Simon 又写了 GPS (General Problem Solver),据说能解决一些能良好形式化的问题,如汉诺塔。但说到底 Simon 的研究毕竟只触及了人类思维的一个很小很小的方面 Formal Logic,甚至更狭义一点 Deductive Reasoning (即不包含 Inductive Reasoning , Transductive Reasoning (俗称 analogic thinking)。还有诸多比如 Common Sense、Vision、尤其是最为复杂的 Language 、Consciousness 都还谜团未解。还有一个比较有趣的就是有人认为 AI 问题必须要以一个物理的 Body 为支撑,一个能够感受这个世界的物理规则的身体本身就是一个强大的信息来源,基于这个信息来源,人类能够自身与时俱进地总结所谓的 Common-Sense Knowledge (这个就是所谓的 Emboddied Mind 理论。 ),否则像一些老兄直接手动构建 Common-Sense Knowledge Base ,就很傻很天真了,须知人根据感知系统从自然界获取知识是一个动态的自动更新的系统,而手动构建常识库则无异于古老的 Expert System 的做法。当然,以上只总结了很小一部分个人觉得比较有趣或新颖的,每个人看到的有趣的地方不一样,比如里面相当详细地介绍了神经网络理论的兴衰。所以建议你看自己一遍,别忘了里面链接到其他地方的链接。 第二个则是人工智能(Artificial Intelligence)。当然,还有机器学习等等。从这些条目出发能够找到许多非常有用和靠谱的深入参考资料。 然后是一些书籍 书籍: 1. 《Programming Collective Intelligence》,近年出的入门好书,培养兴趣是最重要的一环,一上来看大部头很容易被吓走的:P 2. Peter Norvig 的《AI, Modern Approach 2nd》(无争议的领域经典)。 3. 《The Elements of Statistical Learning》,数学性比较强,可以做参考了。 4. 《Foundations of Statistical Natural Language Processing》,自然语言处理领域公认经典。 5. 《Data Mining, Concepts and Techniques》,华裔科学家写的书,相当深入浅出。 6. 《Managing Gigabytes》,信息检索好书。 7. 《Information Theory:Inference and Learning Algorithms》,参考书吧,比较深。 相关数学基础(参考书,不适合拿来通读): 1. 线性代数:这个参考书就不列了,很多。 2. 矩阵数学:《矩阵分析》,Roger Horn。矩阵分析领域无争议的经典。 3. 概率论与统计:《概率论及其应用》,威廉费勒。也是极牛的书,可数学味道太重,不适合做机器学习的。于是讨论组里的 Du Lei 同学推荐了《All Of Statistics》并说到 机器学习这个方向,统计学也一样非常重要。推荐All of statistics,这是CMU的一本很简洁的教科书,注重概念,简化计算,简化与Machine Learning无关的概念和统计内容,可以说是很好的快速入门材料。 4. 最优化方法:《Nonlinear Programming, 2nd》非线性规划的参考书。《Convex Optimization》凸优化的参考书。此外还有一些书可以参考 wikipedia 上的最优化方法条目。要深入理解机器学习方法的技术细节很多时候(如SVM)需要最优化方法作为铺垫。 推荐几本书: 《Machine Learning, Tom Michell》, 1997. 老书,牛人。现在看来内容并不算深,很多章节有点到为止的感觉,但是很适合新手(当然,不能新到连算法和概率都不知道)入门。比如决策树部分就很精彩,并且这几年没有特别大的进展,所以并不过时。另外,这本书算是对97年前数十年机器学习工作的大综述,参考文献列表极有价值。国内有翻译和影印版,不知道绝版否。 《Modern Information Retrieval, Ricardo Baeza-Yates et al》. 1999 老书,牛人。貌似第一本完整讲述IR的书。可惜IR这些年进展迅猛,这本书略有些过时了。翻翻做参考还是不错的。另外,Ricardo同学现在是Yahoo Research for Europe and Latin Ameria的头头。 《Pattern Classification (2ed)》, Richard O. Duda, Peter E. Hart, David G. Stork 大约也是01年左右的大块头,有影印版,彩色。没读完,但如果想深入学习ML和IR,前三章(介绍,贝叶斯学习,线性分类器)必修。 还有些经典与我只有一面之缘,没有资格评价。另外还有两本小册子,论文集性质的,倒是讲到了了不少前沿和细节,诸如索引如何压缩之类。可惜忘了名字,又被我压在箱底,下次搬家前怕是难见天日了。 (呵呵,想起来一本:《Mining the Web - Discovering Knowledge from Hypertext Data》 ) 说一本名气很大的书:《Data Mining: Practical Machine Learning Tools and Techniques》。Weka 的作者写的。可惜内容一般。理论部分太单薄,而实践部分也很脱离实际。DM的入门书已经不少,这一本应该可以不看了。如果要学习了解 Weka ,看文档就好。第二版已经出了,没读过,不清楚。 信息检索方面,Du Lei 同学再次推荐: 信息检索方面的书现在建议看Stanford的那本《Introduction to Information Retrieval》,这书刚刚正式出版,内容当然up to date。另外信息检索第一大牛Croft老爷也正在写教科书,应该很快就要面世了。据说是非常pratical的一本书。 对信息检索有兴趣的同学,强烈推荐翟成祥博士在北大的暑期学校课程,这里有全slides和阅读材料: http://net.pku.edu.cn/~course/cs410/schedule.html maximzhao 同学推荐了一本机器学习: 加一本书:Bishop, 《Pattern Recognition and Machine Learning》. 没有影印的,但是网上能下到。经典中的经典。Pattern Classification 和这本书是两本必读之书。《Pattern Recognition and Machine Learning》是很新(07年),深入浅出,手不释卷。 最后,关于人工智能方面(特别地,决策与判断),再推荐两本有意思的书, 一本是《Simple Heuristics that Makes Us Smart》 另一本是《Bounded Rationality: The Adaptive Toolbox》 不同于计算机学界所采用的统计机器学习方法,这两本书更多地着眼于人类实际上所采用的认知方式,以下是我在讨论组上写的简介: 这两本都是德国ABC研究小组(一个由计算机科学家、认知科学家、神经科学家、经济学家、数学家、统计学家等组成的跨学科研究团体)集体写的,都是引起领域内广泛关注的书,尤其是前一本,後一本则是对 Herbert Simon (决策科学之父,诺奖获得者)提出的人类理性模型的扩充研究),可以说是把什么是真正的人类智能这个问题提上了台面。核心思想是,我们的大脑根本不能做大量的统计计算,使用fancy的数学手法去解释和预测这个世界,而是通过简单而鲁棒的启发法来面对不确定的世界(比如第一本书中提到的两个后来非常著名的启发法:再认启发法(cognition heuristics)和选择最佳(Take the Best)。当然,这两本书并没有排斥统计方法就是了,数据量大的时候统计优势就出来了,而数据量小的时候统计方法就变得非常糟糕;人类简单的启发法则充分利用生态环境中的规律性(regularities),都做到计算复杂性小且鲁棒。 关于第二本书的简介: 1. 谁是 Herbert Simon 2. 什么是 Bounded Rationality 3. 这本书讲啥的: 我一直觉得人类的决策与判断是一个非常迷人的问题。这本书简单地说可以看作是《决策与判断》的更全面更理论的版本。系统且理论化地介绍人类决策与判断过程中的各种启发式方法(heuristics)及其利弊(为什么他们是最优化方法在信息不足情况下的快捷且鲁棒的逼近,以及为什么在一些情况下会带来糟糕的后果等,比如学过机器学习的都知道朴素贝叶斯方法在许多情况下往往并不比贝叶斯网络效果差,而且还速度快;比如多项式插值的维数越高越容易overfit,而基于低阶多项式的分段样条插值却被证明是一个非常鲁棒的方案)。 在此提一个书中提到的例子,非常有意思:两个团队被派去设计一个能够在场上接住抛过来的棒球的机器人。第一组做了详细的数学分析,建立了一个相当复杂的抛物线近似模型(因为还要考虑空气阻力之类的原因,所以并非严格抛物线),用于计算球的落点,以便正确地接到球。显然这个方案耗资巨大,而且实际运算也需要时间,大家都知道生物的神经网络中生物电流传输只有百米每秒之内,所以 computational complexity 对于生物来说是个宝贵资源,所以这个方案虽然可行,但不够好。第二组则采访了真正的运动员,听取他们总结自己到底是如何接球的感受,然后他们做了这样一个机器人:这个机器人在球抛出的一开始一半路程啥也不做,等到比较近了才开始跑动,并在跑动中一直保持眼睛于球之间的视角不变,后者就保证了机器人的跑动路线一定会和球的轨迹有交点;整个过程中这个机器人只做非常粗糙的轨迹估算。体会一下你接球的时候是不是眼睛一直都盯着球,然后根据视线角度来调整跑动方向?实际上人类就是这么干的,这就是 heuristics 的力量。 相对于偏向于心理学以及科普的《决策与判断》来说,这本书的理论性更强,引用文献也很多而经典,而且与人工智能和机器学习都有交叉,里面也有不少数学内容,全书由十几个章节构成,每个章节都是由不同的作者写的,类似于 paper 一样的,很严谨,也没啥废话,跟《Psychology of Problem Solving》类似。比较适合 geeks 阅读哈。 另外,对理论的技术细节看不下去的也建议看看《决策与判断》这类书(以及像《别做正常的傻瓜》这样的傻瓜科普读本),对自己在生活中做决策有莫大的好处。人类决策与判断中使用了很多的 heuristics ,很不幸的是,其中许多都是在适应几十万年前的社会环境中建立起来的,并不适合于现代社会,所以了解这些思维中的缺点、盲点,对自己成为一个良好的决策者有很大的好处,而且这本身也是一个非常有趣的领域。 统计学习理论与支持向量机 统计学习理论(Statistical Learning Theory,SLT)是一种专门研究有限样本情况下的统计理论 。该理论针对有限样本统计问题建立了一套新的理论体系,在这种体系下的统计推理规则不仅考虑了对渐近性能的要求,而且追求在现有有限信息的条件下得到最优结果。V. Vapnik等人从20世纪70年代开始致力于此方面研究,到20世纪90年代中期,随着其理论的不断发展和成熟,也由于神经网络等方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。统计学习理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架。 同时,在统计学习理论基础上发展了一种新的通用预测方法支持向量机(Support Vector Machines,SVM),已初步表现出很多优于已有方法的性能 ,它能将很多现有方法(比如多项式逼近、径向基函数方法、多层感知器网络)纳入其中,有望帮助解决许多原来难以解决的问题(比如神经网络结构选择问题、局部极值问题等)。SLT和SVM正在成为继神经网络研究之后新的研究热点,并将推动数据挖掘与机器学习理论和技术的重大发展 。 参考文献: 1. V. Vapnik. The nature of statistical learning theory. Springer-Verlag, 1995. 2. V. Vapnik. Statistical learning theory. John Wiley and Sons, Inc., 1998. 3. B. E. Boser, I. Guyon, V. Vapnik. A training algorithm for optimal margin classifiers. In: D. Haussler, Editor, Proceedings of the Fifth Annual ACM Workshop of Computational Learning Theory, 144-152, ACM Press, 1992. 4. C. Cortes, V. Vapnik. Support-vector networks. Machine Learning, 1995, 20, 273-297 5. J. C. Burges. A tutorial on support vector machines for pattern recognition. Data Mining and Knowledge Discovery, 1998, 2(2), 121-167 http://www.support-vector-machines.org/SVM_soft.html SHOGUN - is a new machine learning toolbox with focus on large scale kernel methods and especially on Support Vector Machines (SVM) with focus to bioinformatics. It provides a generic SVM object interfacing to several different SVM implementations. Each of the SVMs can be combined with a variety of the many kernels implemented. It can deal with weighted linear combination of a number of sub-kernels, each of which not necessarily working on the same domain, where an optimal sub-kernel weighting can be learned using Multiple Kernel Learning. Apart from SVM 2-class classification and regression problems, a number of linear methods like Linear Discriminant Analysis (LDA), Linear Programming Machine (LPM), (Kernel) Perceptrons and also algorithms to train hidden markov models are implemented. The input feature-objects can be dense, sparse or strings and of type int/short/double/char and can be converted into different feature types. Chains of preprocessors (e.g. substracting the mean) can be attached to each feature object allowing for on-the-fly pre-processing. SHOGUN comes in different flavours, a stand-a-lone version and also with interfaces to Matlab(tm), R, Octave, Readline and Python. This is the R package.
个人分类: 学习论坛|10173 次阅读|3 个评论
机器学习与人工智能学习资源导引[zz]
timy 2008-9-16 18:00
转载于: http://bbs.byr.edu.cn/wForum/disparticle.php?boardName=PR_AIID=3229pos=12 我经常在 TopLanguage 讨论组上推荐一些书籍,也经常问里面的牛人们搜罗一些有关的资料,人工智能、机器学习、自然语言处理、知识发现(特别地,数据挖掘)、信息检索这些无疑是 CS 领域最好玩的分支了(也是互相紧密联系的),这里将最近有关机器学习和人工智能相关的一些学习资源归一个类: 首先是两个非常棒的 Wikipedia 条目,我也算是 wikipedia 的重度用户了,学习一门东西的时候常常发现是始于 wikipedia 中间经过若干次 google ,然后止于某一本或几本著作。 第一个是人工智能的历史(History of Artificial Intelligence),我在讨论组上写道: 而今天看到的这篇文章是我在 wikipedia 浏览至今觉得最好的。文章名为《人工智能的历史》,顺着 AI 发展时间线娓娓道来,中间穿插无数牛人故事,且一波三折大气磅礴,可谓事实比想象更令人惊讶。人工智能始于哲学思辨,中间经历了一个没有心理学(尤其是认知神经科学的)的帮助的阶段,仅通过牛人对人类思维的外在表现的归纳、内省,以及数学工具进行探索,其间最令人激动的是 Herbert Simon (决策理论之父,诺奖,跨领域牛人)写的一个自动证明机,证明了罗素的数学原理中的二十几个定理,其中有一个定理比原书中的还要优雅,Simon 的程序用的是启发式搜索,因为公理系统中的证明可以简化为从条件到结论的树状搜索(但由于组合爆炸,所以必须使用启发式剪枝)。后来 Simon 又写了 GPS (General Problem Solver),据说能解决一些能良好形式化的问题,如汉诺塔。但说到底 Simon 的研究毕竟只触及了人类思维的一个很小很小的方面 Formal Logic,甚至更狭义一点 Deductive Reasoning (即不包含 Inductive Reasoning , Transductive Reasoning (俗称 analogic thinking)。还有诸多比如 Common Sense、Vision、尤其是最为复杂的 Language 、Consciousness 都还谜团未解。还有一个比较有趣的就是有人认为 AI 问题必须要以一个物理的 Body 为支撑,一个能够感受这个世界的物理规则的身体本身就是一个强大的信息来源,基于这个信息来源,人类能够自身与时俱进地总结所谓的 Common-Sense Knowledge (这个就是所谓的 Emboddied Mind 理论。 ),否则像一些老兄直接手动构建 Common-Sense Knowledge Base ,就很傻很天真了,须知人根据感知系统从自然界获取知识是一个动态的自动更新的系统,而手动构建常识库则无异于古老的 Expert System 的做法。当然,以上只总结了很小一部分我个人觉得比较有趣或新颖的,每个人看到的有趣的地方不一样,比如里面相当详细地介绍了神经网络理论的兴衰。所以我强烈建议你看自己一遍,别忘了里面链接到其他地方的链接。 顺便一说,徐宥同学打算找时间把这个条目翻译出来,这是一个相当长的条目,看不动 E 文的等着看翻译吧:) 第二个则是人工智能(Artificial Intelligence)。当然,还有机器学习等等。从这些条目出发能够找到许多非常有用和靠谱的深入参考资料。 然后是一些书籍 书籍: 1. 《Programming Collective Intelligence》,近年出的入门好书,培养兴趣是最重要的一环,一上来看大部头很容易被吓走的:P 2. Peter Norvig 的《AI, Modern Approach 2nd》(无争议的领域经典)。 3. 《The Elements of Statistical Learning》,数学性比较强,可以做参考了。 4. 《Foundations of Statistical Natural Language Processing》,自然语言处理领域公认经典。 5. 《Data Mining, Concepts and Techniques》,华裔科学家写的书,相当深入浅出。 6. 《Managing Gigabytes》,信息检索好书。 7. 《Information Theory:Inference and Learning Algorithms》,参考书吧,比较深。 相关数学基础(参考书,不适合拿来通读): 1. 线性代数:这个参考书就不列了,很多。 2. 矩阵数学:《矩阵分析》,Roger Horn。矩阵分析领域无争议的经典。 3. 概率论与统计:《概率论及其应用》,威廉费勒。也是极牛的书,可数学味道太重,不适合做机器学习的。于是讨论组里的 Du Lei 同学推荐了《All Of Statistics》并说到 机器学习这个方向,统计学也一样非常重要。推荐All of statistics,这是CMU的一本很简洁的教科书,注重概念,简化计算,简化与Machine Learning无关的概念和统计内容,可以说是很好的快速入门材料。 4. 最优化方法:《Nonlinear Programming, 2nd》非线性规划的参考书。《Convex Optimization》凸优化的参考书。此外还有一些书可以参考 wikipedia 上的最优化方法条目。要深入理解机器学习方法的技术细节很多时候(如SVM)需要最优化方法作为铺垫。 王宁同学推荐了好几本书: 《Machine Learning, Tom Michell》, 1997. 老书,牛人。现在看来内容并不算深,很多章节有点到为止的感觉,但是很适合新手(当然,不能新到连算法和概率都不知道)入门。比如决策树部分就很精彩,并且这几年没有特别大的进展,所以并不过时。另外,这本书算是对97年前数十年机器学习工作的大综述,参考文献列表极有价值。国内有翻译和影印版,不知道绝版否。 《Modern Information Retrieval, Ricardo Baeza-Yates et al》. 1999 老书,牛人。貌似第一本完整讲述IR的书。可惜IR这些年进展迅猛,这本书略有些过时了。翻翻做参考还是不错的。另外,Ricardo同学现在是Yahoo Research for Europe and Latin Ameria的头头。 《Pattern Classification (2ed)》, Richard O. Duda, Peter E. Hart, David G. Stork 大约也是01年左右的大块头,有影印版,彩色。没读完,但如果想深入学习ML和IR,前三章(介绍,贝叶斯学习,线性分类器)必修。 还有些经典与我只有一面之缘,没有资格评价。另外还有两本小册子,论文集性质的,倒是讲到了了不少前沿和细节,诸如索引如何压缩之类。可惜忘了名字,又被我压在箱底,下次搬家前怕是难见天日了。 (呵呵,想起来一本:《Mining the Web - Discovering Knowledge from Hypertext Data》 ) 说一本名气很大的书:《Data Mining: Practical Machine Learning Tools and Techniques》。Weka 的作者写的。可惜内容一般。理论部分太单薄,而实践部分也很脱离实际。DM的入门书已经不少,这一本应该可以不看了。如果要学习了解 Weka ,看文档就好。第二版已经出了,没读过,不清楚。 信息检索方面,Du Lei 同学再次推荐: 信息检索方面的书现在建议看Stanford的那本《Introduction to Information Retrieval》,这书刚刚正式出版,内容当然up to date。另外信息检索第一大牛Croft老爷也正在写教科书,应该很快就要面世了。据说是非常pratical的一本书。 对信息检索有兴趣的同学,强烈推荐翟成祥博士在北大的暑期学校课程,这里有全slides和阅读材料: http://net.pku.edu.cn/~course/cs410/schedule.html maximzhao 同学推荐了一本机器学习: 加一本书:Bishop, 《Pattern Recognition and Machine Learning》. 没有影印的,但是网上能下到。经典中的经典。Pattern Classification 和这本书是两本必读之书。《Pattern Recognition and Machine Learning》是很新(07年),深入浅出,手不释卷。 最后,关于人工智能方面(特别地,决策与判断),再推荐两本有意思的书, 一本是《Simple Heuristics that Makes Us Smart》 另一本是《Bounded Rationality: The Adaptive Toolbox》 不同于计算机学界所采用的统计机器学习方法,这两本书更多地着眼于人类实际上所采用的认知方式,以下是我在讨论组上写的简介: 这两本都是德国ABC研究小组(一个由计算机科学家、认知科学家、神经科学家、经济学家、数学家、统计学家等组成的跨学科研究团体)集体写的,都是引起领域内广泛关注的书,尤其是前一本,後一本则是对 Herbert Simon (决策科学之父,诺奖获得者)提出的人类理性模型的扩充研究),可以说是把什么是真正的人类智能这个问题提上了台面。核心思想是,我们的大脑根本不能做大量的统计计算,使用fancy的数学手法去解释和预测这个世界,而是通过简单而鲁棒的启发法来面对不确定的世界(比如第一本书中提到的两个后来非常著名的启发法:再认启发法(cognition heuristics)和选择最佳(Take the Best)。当然,这两本书并没有排斥统计方法就是了,数据量大的时候统计优势就出来了,而数据量小的时候统计方法就变得非常糟糕;人类简单的启发法则充分利用生态环境中的规律性(regularities),都做到计算复杂性小且鲁棒。 关于第二本书的简介: 1. 谁是 Herbert Simon 2. 什么是 Bounded Rationality 3. 这本书讲啥的: 我一直觉得人类的决策与判断是一个非常迷人的问题。这本书简单地说可以看作是《决策与判断》的更全面更理论的版本。系统且理论化地介绍人类决策与判断过程中的各种启发式方法(heuristics)及其利弊(为什么他们是最优化方法在信息不足情况下的快捷且鲁棒的逼近,以及为什么在一些情况下会带来糟糕的后果等,比如学过机器学习的都知道朴素贝叶斯方法在许多情况下往往并不比贝叶斯网络效果差,而且还速度快;比如多项式插值的维数越高越容易overfit,而基于低阶多项式的分段样条插值却被证明是一个非常鲁棒的方案)。 在此提一个书中提到的例子,非常有意思:两个团队被派去设计一个能够在场上接住抛过来的棒球的机器人。第一组做了详细的数学分析,建立了一个相当复杂的抛物线近似模型(因为还要考虑空气阻力之类的原因,所以并非严格抛物线),用于计算球的落点,以便正确地接到球。显然这个方案耗资巨大,而且实际运算也需要时间,大家都知道生物的神经网络中生物电流传输只有百米每秒之内,所以 computational complexity 对于生物来说是个宝贵资源,所以这个方案虽然可行,但不够好。第二组则采访了真正的运动员,听取他们总结自己到底是如何接球的感受,然后他们做了这样一个机器人:这个机器人在球抛出的一开始一半路程啥也不做,等到比较近了才开始跑动,并在跑动中一直保持眼睛于球之间的视角不变,后者就保证了机器人的跑动路线一定会和球的轨迹有交点;整个过程中这个机器人只做非常粗糙的轨迹估算。体会一下你接球的时候是不是眼睛一直都盯着球,然后根据视线角度来调整跑动方向?实际上人类就是这么干的,这就是 heuristics 的力量。 相对于偏向于心理学以及科普的《决策与判断》来说,这本书的理论性更强,引用文献也很多而经典,而且与人工智能和机器学习都有交叉,里面也有不少数学内容,全书由十几个章节构成,每个章节都是由不同的作者写的,类似于 paper 一样的,很严谨,也没啥废话,跟《Psychology of Problem Solving》类似。比较适合 geeks 阅读哈。 另外,对理论的技术细节看不下去的也建议看看《决策与判断》这类书(以及像《别做正常的傻瓜》这样的傻瓜科普读本),对自己在生活中做决策有莫大的好处。人类决策与判断中使用了很多的 heuristics ,很不幸的是,其中许多都是在适应几十万年前的社会环境中建立起来的,并不适合于现代社会,所以了解这些思维中的缺点、盲点,对自己成为一个良好的决策者有很大的好处,而且这本身也是一个非常有趣的领域。 (完)
个人分类: 自然语言处理|5287 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 02:44

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部