MyException - 我的异常网
当前位置:我的异常网» 人工智能 » 【Deep Learning学习札记】Modeling Documents with

【Deep Learning学习札记】Modeling Documents with a Deep Boltzmann Machine_Hinton_uai2013

www.MyException.Cn  网友分享于:2013-10-09  浏览:106次
【Deep Learning学习笔记】Modeling Documents with a Deep Boltzmann Machine_Hinton_uai2013

题目:Modeling Documents with a Deep Boltzmann Machine

作者:HInton

发表于:UAI 2013


主要内容:

这篇文章写用神经网络来对文本(文章)进行建模的。在Replicated Softmax model的基础上,增加了一个隐含层,但是并不增加参数,用来提升模型性能。与标准RSM和LDA模型相比较,作者这个模型性能更好。


1. Replicated Softmax model

实质上是一个RBM(玻尔兹曼机)模型。两层网络,如图:


左图施展开模型,两层神经网络,输入层各个节点代表词语(如果词语是用向量表示的,则每个节点代表一个向量),中间隐含层的节点是0-1随机变量,表示文本topic。整体上,沿用RBM的模型,训练算法也用CD-k算法。不过,与标准RBM有两点不同:1. 输入层的节点个数不确定——节点个数由一篇文章的词数决定,而文章长度不确定,词数也不确定;2. 也是为了解决1所带来的问题——输入层都不确定,网络权重是由输入层和隐含层共同决定的,网络权重个数也不确定,那还怎么训练?!所以作者要求,网络权重仅仅由隐含层决定,所有输入层节点与某一个隐含层节点的关联权重都相同。作者在文中称为每一篇文本建立一个RBM,有点言过其实了——就是每个文章的长度不同、输入节点数目不同,网络结构显得不同罢了。

右图是另一种解释方式,即只有一个输入节点,与各个隐含节点相关联。这个输入节点表示一个随机变量,该随机变量sample N次(N是文本长度)。注意,如果每个词语用向量表示,则输入层(单个词语)与隐含层的节点还是用二维矩阵表示。

根据右图,我们也能了解该模型的训练方法。初步的,文本中每个词语相当于右图输入节点sample的结果,这些词语sample的结果(如N个词语表示向量)共同作用于隐含层,此时再套用CD-k算法,就可以训练了。

记得朴素贝叶斯用于文本分类在实现中也有两种模型,一种是标准模型,又称为多项式模型;另一种是专门处理变长文本的,叫做贝努利模型,实际操作也就是随机变量sample N次(N是文本长度),由每一次sample的结果来决定文本的分类。


2. Over-Replicated Softmax Model

作者在Replicated Softmax Model的基础上提出的一种模型,在隐含层基础上增加了一个top layer(实际上也是一个隐含层)。但是隐含层和top layer之间的权重沿用隐含层和输入层之间的权重,所以总体参数个数并没有增加。如图:


很奇葩的模型。隐含层和输入层之间也用RBM逻辑,隐含层和top layer之间也是RBM逻辑,都是auto-encoder。top layer的节点个数严格等于隐含层的节点个数,权重也都一样。思路就是用top layer的auto-encoder来修正隐含层和输入层的训练结果。三层网络,两个auto-encoder,算是stack auto-encoder了,正常应该用两个CD-k分别训练。不过文章中对网络权重的限制,使得用一个CD-k就能解决。

总有疑问就是作者为什么这么做(增加了一个隐含层)?如果这么做效果好的话,为什么不多增加几个隐含层?


3. 实验

在文本perplexity和信息检索上做的实验。没细看,怎么把topic转成词语ngram的概率,且计算perplexity的。


由于神经网络输入输出的形式,用来表示文本还是不常见的。不过最近Deep Learning这么火,自然连Hinton这样的牛人都要去尝试。这篇文章的思路还是auto-encoder的思路。


4. 再说两句

关于Replicated Softmax model的原始文章是Hinton在2009年在NIPS会议上的一个文章,标题为“Replicated Softmax: an Undirected Topic Model”。基本思路就上上面说的那样。不过当时Hinton没有用CD-k训练算法,而是用了一种基于蒙塔卡罗抽样(其实CD-k也是一种简化的蒙塔卡罗抽样算法)的AIS算法。AIS是把Replicated Softmax model看成了一种产生式模型。



文章评论

科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
代码女神横空出世
代码女神横空出世
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
Java程序员必看电影
Java程序员必看电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的鄙视链
程序员的鄙视链
鲜为人知的编程真相
鲜为人知的编程真相
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
 程序员的样子
程序员的样子
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
旅行,写作,编程
旅行,写作,编程
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个调试和排错的小建议
10个调试和排错的小建议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
我的丈夫是个程序员
我的丈夫是个程序员
中美印日四国程序员比较
中美印日四国程序员比较
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
老程序员的下场
老程序员的下场
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
如何成为一名黑客
如何成为一名黑客
我是如何打败拖延症的
我是如何打败拖延症的
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员必看的十大电影
程序员必看的十大电影
漫画:程序员的工作
漫画:程序员的工作
程序员都该阅读的书
程序员都该阅读的书
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员和编码员之间的区别
程序员和编码员之间的区别
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有