神经网络不应视为模型,推理过程当为机器学习问题一等公民

首发于论智
关注专栏写文章
神经网络不应视为模型,推理过程当为机器学习问题一等公民

神经网络不应视为模型,推理过程当为机器学习问题一等公民

编者按:Microsoft Semantic Machines资深研究科学家、UC Berkeley计算机科学博士Jacob Andreas指出,神经网络不应视为模型,因为神经网络的模型和推理过程不可分割。应该将推理过程视为机器学习问题的一等公民。

在大多数介绍人工智能的材料中,模型推理过程的区分很关键。例如,HMM(隐马尔可夫模型)是一类模型;维特比算法则是用于推理过程的一种算法,前向传播算法是另一种推理算法,粒子滤波又是一种推理算法。

很多人将神经网络描述为一类模型(他们大概也把神经网络视作模型)。我主张这种观点很有误导性,将神经网络看成纠缠不清的模型-推理对(model-inference pairs)会更有用。“模型-推理对”是一个长而拗口的词,看起来现在也没有什么很好的现成的简称,因此我将用模推(monferences)来指代这一概念。我主张我们应该将神经网络视为模推的一个例子。(搭配某种特定的HMM参数的维特比算法的一种实现,同样是模推。)

我将引用一些现有的论文,这些论文自然而然地符合将神经网络视为模推这一视角——看起来这一想法对许多人来说已经是显然的了。但我认为这一想法未曾被命名,也未曾经过系统的处理。我希望其他人会像我一样,觉得下面的内容是有用的(或者至少厘清了一些东西)。

将神经网络视作模型的后果是什么?让我举一个自己的例子来说明:

我第一次看到循环神经网络的时候,我觉得“这是一个有趣的模型,搭配一个糟糕的推理过程”。循环网络看起来像HMM。HMM有离散的隐藏状态,而循环网络有隐藏状态向量。在HMM中进行推理时,我们保持和输出分布相一致的隐藏状态,但在循环网络中进行推理时,我们仅仅保持单个向量——单个假设,加上贪婪推理过程。如果采用某种建模不确定性的方法,不是更好吗?为什么不像卡尔曼滤波一样对待RNN推理?

这完全了。探索为什么这是错的,正是本文剩下部分的目标。

简单来说,将循环网络的隐藏状态视作单个假设是毫无理由的。毕竟,一个足够大的隐藏向量可以轻而易举地表示前向传播算法中的整张概率表——甚至可以表示粒子滤波的状态。“HMM隐藏状态 = RNN隐藏状态”这一类比不好;“HMM解码器状态 = RNN隐藏状态”这一类比更好。

让我们通过实验来探索这一点。(本节中的完整代码见git.io/fN91L)。

我随机生成了一个HMM,从中取样了一组序列,并应用经典的最小化风险过程。最终得到的“在线标签”精确度为62.8

针对这一在线标签问题,另一种完全可以接受(但某种程度上更费力)的生成模推的方法是从HMM中抽取更多样本,然后使用(观测, 隐藏)序列作为RNN网络的训练数据(x, y)

(其中每个箭头表示内积加ReLU激活或log损失)。这一情形下取得的精确度为62.8

两个精确度是一样的,这仅仅是个巧合?让我们查看一些预测:

所以,甚至当两个模推犯错的时候,都犯了一样的错。

当然,我们知道,就这一问题而言,如果我们应用完整的前向-后向算法,并且同样做出最大化边际概率的预测,能得到稍好的结果。改进的经典过程得到的精确度为63.3。如我们所料,这比上面两种在线模型的表现要好。另一方面,在取自HMM的样本上训练一个双向循环网络同样得到63.3的精确度。

预测取样:

注意,我们这里使用的神经网络没有编码任何关于经典消息传递的规则,并且绝对没有编码任何HMM内部的生成过程。然而在两种情形下,神经网络都成功取得了和结构相同的经典消息传递过程一样好(但没有更好)的精确度。实际上,该神经训练过程相当于一段代码,这段代码和前向-后向算法做出一致的预测,却对前向-后向算法毫无所知!

神经网络不是魔法——当我们的数据实际上是由HMM生成的时候,我们无法指望神经模推击败(信息论上最优的)经典模推。但经验告诉我们,两者的表现一样好。随着我们增强神经架构,以匹配更强大的经典推理过程的算法结构,它们的表现提升了。双向循环网络优于前向循环网络;每个“真”隐藏向量间具有多层的双向网络(arXiv:1602.08210)可能在一些任务上表现更好。

更妙的是,我们也许可以少操心更困难的情形,也就是原本需要手工调整某种逼近推理方案的情形。(例如:假设我们的转移矩阵是一个巨大的排列组合。在经典推理中,重复相乘可能非常昂贵,而尝试取得转移矩阵的低秩逼近则会损失信息。而一个神经模推却具备紧凑地表达模型动力学的潜力。)

目前为止我们讨论的是序列,但在更多结构化数据上同样存在对应。就树形问题而言,我们可以应用某种类似固定树上的内向算法(aclweb/P13-1045),或者整个稀疏化解析表上的内向-外向算法(aclweb/D15-1137)。而对任意图而言,我们可以应用“图卷积”(arXiv:1509.09292),随着图卷积的重复,它开始看起来像是置信传播。

这里有一条一般原则:任何保持离散状态分布的推理算法,都可以转换:

  1. 将表单元或离散分布替换为向量
  2. 将单元间的信息替换为循环网络
  3. 展开“推理”过程(选择一个合适的迭代数)
  4. 通过反向传播进行训练

所得的模推至少和相应的经典过程具备同样的表达能力。在有必要逼近的地方,我们可以(至少从经验上说)通过在数据上端到端地训练,学习正确的逼近。

这种通过反向传播逼近推理过程,但并不尝试学习推理函数本身的想法已经提出了有一段时间了。(doi/10.1.1.207.9392、 arXiv:1508.02375)

我认为结合这一框架的各部分至少可以写一篇句法分析的论文,而图结构数据方面还有很多工作可以做。

我说明了模推这一角度是有用的。但是果真如此吗?神经网络确实是模推,而不是模型,这有准确的意义吗?

不。这里有一个基础性的可识别问题——我们无法真正区分“酷炫的模型搭配微不足道的推理”和“神秘的模型搭配复杂的推理”。因此,给定训练好的神经网络,询问它进行推理的模型是哪个同样毫无意义。另一方面,通过蒸馏法训练的神经网络(arXiv:1503.02531)看起来倒挺像“同一模型,不同模推”的良好人选。同时,将神经网络视作模型这一角度也不应该完全忽略:它形成了成果累累的系列工作,将CRF中的对数线性回归模型替换为神经网络(arXiv:1507.03641)。尽管这些方法通常的卖点之一是“你可以保留动态程序”,我们之前论证了这一点在恰当组织的神经网络上同样成立。

不管怎么说,由于机器学习社区这一角落的研究重点在向计划、推理和困难算法问题(nips2015/4G4h)转变,我认为将神经网络视作模推的角度将占统治地位。

除此以外,当我们回顾十年前的“深度学习革命”时,我认为最重要的经验教训是端到端训练解码器的重要性和推理过程,甚至在几乎看起来完全不像是神经网络的系统(arXiv:1601.01705)中也是如此。所以在创建学习系统的时候,不要问:“我的变量的概率关系是什么?”而问:“我如何逼近我的问题的推理函数?”,并尝试直接学习这一逼近。为了高效地达成这一点,我们可以使用我们所知道的关于经典推理过程的一切知识。不过,我们同时也应该开始将推理视作学习问题的一等公民。

感谢Matt Gormley(他的EMNLP演讲让我开始思考这一问题),以及Robert Nishihara和Greg Durrett的反馈。

同样感谢Jason Eisner的金玉良言:“一个拙劣的混成词,因为monference应该是一个像model一样的可数名词,但它的后缀却取自inference这个集合名词。我可没说infedel要好太多……”

发布于 2018-08-23
神经网络
深度学习(Deep Learning)

原文链接:https://zhuanlan.zhihu.com/p/42747299

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019最全BAT资深Java面试题答案合集,建议收藏~

马上进入求职招聘高峰,总结了一份BAT(阿里、百度等)资深Java相关的面试题答案合集给到大家。 该板块的各面试章节,后续会持续迭代更新最新一线互联网公司的面试题目,建议收藏该页面,不定期更新查看~ Java…

中国古代诗词文本挖掘项目

PoemMining 项目地址:https://github.com/liuhuanyong/PoemMining Chinese Classic Poem Mining Project including corpus buiding by spyder and content analysis by nlp methods, 基于爬虫与nlp的中国古代诗词文本挖掘项目 项目介绍 中国古代诗词文化无疑是…

推荐系统的价值观

一只小狐狸带你解锁炼丹术&NLP秘籍 前言 推荐系统作为满足人类不确定性需求的一种有效工具,是具有极大价值的,这种价值既体现在提升用户体验上,又体现在获取商业利润上。对绝大多数公司来说,提升用户体验的最终目标也是为了获…

POJ1003/1004/1005/1207/3299/2159/1083/3094/2388解题(刷一波水题)

POJ 1003 题目链接 http://poj.org/problem?id1003 大意&#xff1a;长度1/21/3…1/n&#xff0c;给定长度值&#xff0c;求n #include<iostream> using namespace std; int main() {float len 0,sum;int n;while(cin >> len && len ! 0){for(n2,sum0;s…

论文浅尝 | 远程监督关系抽取的生成式对抗训练

动机远程监督关系抽取方法虽然可以使用知识库对齐文本的方法得到大量标注数据&#xff0c;但是其中噪声太多&#xff0c;影响模型的训练效果。基于 bag 建模比基于句子建模能够减少噪声的影响&#xff0c;但是仍然无法克服 bag 全部是错误标注的情形。为了换机噪声标注&#xf…

谷歌最强NLP模型BERT官方代码来了!GitHub一天3000星

新智元报道 来源&#xff1a;GitHub 作者&#xff1a;Google Research 编辑&#xff1a;肖琴 【新智元导读】谷歌AI团队终于开源了最强NLP模型BERT的代码和预训练模型。从论文发布以来&#xff0c;BERT在NLP业内引起巨大反响&#xff0c;被认为开启了NLP的新时代。 BERT的官方…

Java经典基础与高级面试36题和答案

在Java面试的首轮&#xff0c;经常会问很多关于Java面试基础以及高级的问题&#xff0c;今天收集相关Java面试36题和答案分享出来。 1.”static”关键字是什么意思&#xff1f;Java中是否可以覆盖&#xff08;override&#xff09;一个private或者是static的方法&#xff1f; …

论文浅尝 | 问题生成(QG)与答案生成(QA)的结合

本文转载自公众号&#xff1a;徐阿衡。梳理一下 MSRA 3 篇关于 QG 的 paper&#xff1a;Two-Stage Synthesis Networks for Transfer Learning in Machine ComprehensionQuestion Answering and Question Generation as Dual TasksA Joint Model for Question Answering and Qu…

卖萌屋算法岗面试手册上线!通往面试自由之路

一只小狐狸带你解锁 炼丹术&NLP 秘籍作为算法工程师&#xff0c;基础知识的重要性自然不必多说。虽然在有些项目中比较难感受到基础的作用&#xff0c;但扎实的coding能力&#xff0c;对算法本质和适用情况的理解&#xff0c;始终是决定工作效率与未来发展的重要feature。这…

2019头条抖音Java 3面真题,含面试题答案!

一面&#xff1a; hashmap&#xff0c;怎么扩容&#xff0c;怎么处理数据冲突&#xff1f;怎么高效率的实现数据迁移&#xff1f; Linux的共享内存如何实现&#xff0c;大概说了一下。 socket网络编程&#xff0c;说一下TCP的三次握手和四次挥手 同步IO和异步IO的区别&#…

深入理解XGBoost

本文的主要内容概览&#xff1a;1 XGBoost简介XGBoost的全称是eXtreme Gradient Boosting&#xff0c;它是经过优化的分布式梯度提升库&#xff0c;旨在高效、灵活且可移植。XGBoost是大规模并行boosting tree的工具&#xff0c;它是目前最快最好的开源 boosting tree工具包&am…

会议 | ESWC2018 见闻

本文转载自公众号&#xff1a;南大Websoft 。 ESWC2018于2018年6月2日在希腊克里特岛上的伊拉克利翁举行。会议包括两天的前会(workshops, tutorials) 和三天的正会&#xff0c;参会人数约300人。KeynotesKeynote1: Structural S…

POJ 1804 逆序数 解题(归并排序)

文章目录解法1&#xff1a;直接双重循环求解&#xff0c;n*n复杂度解法2&#xff1a;采用归并排序求解&#xff0c;复杂度nlgn题目链接 http://poj.org/problem?id1804题目大意&#xff1a;让一串无序数&#xff0c;在只能相邻数字交换的前提下&#xff0c;最短的次数变成有序…

史上最全memcached面试26题和答案

Memcached是什么&#xff0c;有什么作用&#xff1f; Memcached是一个开源的&#xff0c;高性能的内存绶存软件&#xff0c;从名称上看Mem就是内存的意思&#xff0c;而Cache就是缓存的意思。Memcached的作用&#xff1a;通过在事先规划好的内存空间中临时绶存数据库中的各类数…

深度学习笔记(六):Encoder-Decoder模型和Attention模型

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/u014595019/article/details/52826423 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_h…

会议 | 2018年全国知识图谱与语义计算大会(CCKS 2018)

2018年全国知识图谱与语义计算大会China Conference on Knowledge Graph and Semantic Computing (CCKS 2018)2018年8月14日-17日&#xff0c;天津征稿截止: 2018年5月18日全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and Semantic Comp…

C++ Primer 第11章 泛型算法 学习总结

文章目录11.2 算法11.2.1 只读算法**1.find函数****2.accumulate函数****3.find_first_of 函数**11.2.2 写容器元素算法1.fill函数2.fill_n函数3.back_inserter插入迭代器4.copy函数5.算法的 _copy 版本11.2.3 排序算法sort&#xff08;起始&#xff0c;结束&#xff09;&#…

到底什么是生成式对抗网络GAN?

时间&#xff1a;2017-05-11 男&#xff1a;哎&#xff0c;你看我给你拍的好不好&#xff1f; 女&#xff1a;这是什么鬼&#xff0c;你不能学学XXX的构图吗&#xff1f; 男&#xff1a;哦 …… 男&#xff1a;这次你看我拍的行不行&#xff1f; 女&#xff1a;你看看你的…

分布式缓存Redis+Memcached经典面试题和答案

Redis相比memcached有哪些优势&#xff1f; &#xff08;1&#xff09; memcached所有的值均是简单的字符串&#xff0c;redis作为其替代者&#xff0c;支持更为丰富的数据类型 &#xff08;2&#xff09; redis的速度比memcached快很多 &#xff08;3&#xff09; redis可以…

卖萌屋福利场:《机器阅读理解》免费送送送!

一只小狐狸带你解锁 炼丹术&NLP 秘籍在送书之前&#xff0c;先来了解一下机器阅读理解是什么&#xff5e;已经很熟悉的小伙伴可以快速下拉进入福利场~机器阅读理解是什么机器阅读理解&#xff08;Machine Reading Comprehension&#xff0c;MRC&#xff09;是一种利用算法使…