您的位置:首页 > 其它

Deep Learning与自然语言处理学习笔记

2014-03-18 14:42 218 查看
在NLP中使用Deep Learning的还很少,有一种说法是认为语言(词、句子、篇章等)属于人类认知过程中产生的高层认知抽象实体,而语音和图像属于较为底层的原始输入信号,所以后两者更适合做deep learning来学习特征。但是高度抽象并不意味着没有可能,可以在这个方面进行有益的尝试。

文档的表示

文档的表示是为了把文档的符号内容数字化。最简单的是使用布尔向量来表示文档,每个词的出现和不出现表现为1和0,可以使用稀疏存储或者哈希表的方式来实现存储。但是这样的处理建设在一个假设之上,那就是任意两个词都是独立的。这看似问题不大,但是当处理的是多义词,同义词,近义词,相关词的时候这将对结果造成很大影响。因为将吃的“苹果”与用的“苹果”认为是同一件东西,或者将“计算机”和“电脑”认为是完全不同的两个不一样的概念,都是会造成对语义判断的错误。所以,这种词向量的表示方式是不可行的。

用信息论的角度来看,如果所有词都是平等概率产生的随机概念,那么去研究自然语言处理的意义是0,当然那样也不能称之为语言,所有人都在随意发出声音随意组合符号,那就不存在交流的可能性了。在此基础上发展一下,认为人是有理性的,语言是有规律的,为了简化假设词是独立的,那么就可以各个词统计在对话和文本中不同的词的出现概率。这时可以使用布尔模型,生成词向量,或者计算TF-IDF增强表示效果。到了这里我们基本可以知道一篇文档A中如果其中出现了很多次“计算机”这个词,那么它可能就跟我们用的计算机有关,但在考察这篇文档和另一篇文档B出现很多次“电脑”这个词的相似度时,它并不比一篇讨论“原子弹”的文档得分更高。因为假设了“计算机”,“电脑”和“原子弹”是相互独立的三个词,“计算机”和“原子弹”计算相似度时对“电脑”来说是等价的。这个时候如果我们希望可以加强“计算机”与“电脑”的关系,使它们的数字化表达上更相近,我们可以采取哪些办法?第一个办法是做一个词典,标注所有多义词、近义词、同义词、相关词,使它们存在某种包含,相似或者等价的关系。我们有这样的表WordNet,HowNet或者同义词林都是在试图完成这个功能。我说“试图”是因为语言覆盖的范围太大,变化的太快,维持一两个语种的词典都是异常困难的,想为所有语言制作出实时更新的词典是不可能的。而且词典里面的主观因素很大,在制作时就已经有信息的损失了,所以这个方法有效但是也是有限的。第二个办法是发展人工智能,通过机器学习的方式从海量的数据中得到隐藏的关系,在这条路上有神经网络,主题模型这样的方法。就火热了很长时间的主题模型的方法来说,通过概率生成模型把词的表示映射到一种隐藏的主题向量的上,在此基础上可以计算词和词的相似度进而得到文档和文档的相似度。事实证明,这种方法是可行的,效果比TF-IDF好很多。但是目前的主题模型方法都还不是完美的,都存在或多或少的问题,比如PLSA的过拟合,LDA的主题数确定,HDP的类似马太效应的主题分布聚集等。所以,在这一步来说,还是有可以发展和改善的地方。

说的有点远了,回到DL上来说。DL也提供了一种词向量的表示方法,叫做Distributed Representation,翻译过来叫做“分布式表征”(还不如不翻译呢)。这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, ...],维度以 50 维和 100 维比较常见,类似与主题模型中使用主题分布来表示词的方式。在此基础上有计算相似度也好于TF_IDF那个层次的表达。

DL的基本概念

从生理学得知的大脑认知过程得知,人脑认识事物是分层次的,神经-中枢-大脑的工作过程,是一个不断迭代、不断抽象的过程。从原始信号,做低级抽象,逐渐向高级抽象迭代。

一个人在看一个文档的时候,眼睛看到的是字,由这些字在大脑里自动切词形成词,再按照概念组织的方式,先验的学习,得到主题,然后再进行高层次的学习。从这个角度来看,当我们面对一篇文档的时候,我们并不是靠一个一个字来获得信息的,最低一层的我们看到的是词(所以我们说文档的最基本单元是词,TF-IDF也是对词进行处理才改善了性能),然后由词上升到主题层次,最后我们在主题的基础上再抽象获得对一篇文档的概念。

确定了层次的结构后需要选择特征。众所周知,特征越多,给出的参考信息就越多,准确性会得到提升。但因为逐层的抽象会涉及到大量的特征参数的计算,特征多也会带来很多问题,最严重的就是维数灾难,使计算无法继续。所以需要控制特征的维数,使用低维的词向量会是一个很好的选择。

这里需要说明,当提到从词获得主题的时候,似乎和主题模型的形式是一样的。其实我觉得主题模型可以看成是深度学习的一种简化模型,就好像万有引力定律是相对论在低速情况下的简化一样。并不是说主题模型不对,反而它的出现就代表了一种进步。但是受到认知的限制,那一次的进步是有限的。可能很多年后看,DL也只是人类认知迈出的一小步,但是这是有意义的。所以,还是得继续学习本世纪目前为止人类设计出来的最先进的模型。

对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入,在此过程中尽量避免信息损失,使得输入与输出的差别可以尽可能地小。通过这种方式,就可以实现对输入信息进行分级表达了。

DL是相对之前的浅层机器学习而言的。浅层学习的成果包括BP,SVM,LR等,但是由于理论分析的难度大,训练方法又需要很多经验和技巧,浅层学习没有获得很大的发展。深度学习起源于06年的Science,基本假设是1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)

深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段, “特征学习”是目的。 区别于传统的浅层学习, 深度学习的不同在于:1)强调了模型结构的深度,通常有 5 层、6 层,甚至 10 多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。

参考文献

http://licstar.net/archives/328

http://blog.csdn.net/zouxy09

深度学习研究综述 2012

深度学习结构和算法比较分析

Representation Learning_A Review and New Perspectives
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: