财新传媒
位置:博客 > 王川 > 文章归档 > 2016年五月
2016年05月27日 13:43

深度学习有多深?(十五)自然语言的困惑

深度学习有多深?(十五)自然语言的困惑

(1)

循环神经网络, 在文字处理上的表现, 只是小荷才露尖尖角.

自然语言处理, 英文是 Natural Language Processing (NLP).其基本定义为: 把一段文字, 转化成一个数据结构, 力求清晰无误地表达文字的意义.

自然语言处理包括对自然语言的理解和生成, 典型应用如机器翻译, 文字分类, 聊天机器人等等. 通过语言沟通, 是智人和其它动物的最重要区别, 这是人工智能技术的重要基石.

衡量 NLP 表现的一个重要变量是所谓语言模型 (Language Model, 简称 LM) 的perplexity (困惑度). 困惑度,是一个用概率计算的基准, 借用了信息论创始人, 著名科学家香农的信息熵的概念.

通俗地说, 用语言......

阅读全文>>
2016年05月23日 14:36

深度学习有多深?(十四)循环神经网络和言情小说

深度学习有多深?(十四)循环神经网络和言情小说

(1)
循环神经网络 (RNN)的本质, 是可以处理一个长度变化的序列的输出和输入 (多对多). 广义的看, 如果传统的前馈神经网络做的事, 是对一个函数的优化 (比如图像识别). 那么循环神经网络做的事, 则是对一个程序的优化,应用空间宽阔得多.

长短期记忆 (LSTM)的架构, 使有用的历史信息, 可以保留下来,很久以后仍然可以读取.

一个有趣的应用, 是把大量文字作为输入培训 RNN, 让它掌握语言的规律, 自己也可以写文章了.

斯坦福大学的计算机博士 Andrej Kapathy 在他的博客中写道:
"有时我的模型的简单程度, 和高质量的输出相比,反差如此之大,远远超越我的......

阅读全文>>
2016年05月18日 11:14

深度学习有多深?学了究竟有几分?(十三)

深度学习有多深?学了究竟有几分?(十三)

(1)

2012年十月, Geoffrey Hinton, 邓力和其他几位代表四个不同机构 (多伦多大学, 微软, 谷歌, IBM) 的研究者, 联合发表论文, "深度神经网络在语音识别的声学模型中的应用: 四个研究小组的共同观点" (Deep Neural Networks for Acoustic Modelling in Speech Recognition: The Shared Views of Four Research Groups ).

研究者们借用了Hinton 使用的"限制玻尔兹曼机" (RBM) 的算法 (这个系列的第四篇有介绍过), 对神经网络进行了"预培训". 深度神经网络模型 (DNN), 在这里, 替代了高斯混合模型 (GMM), 来估算识别文字的几率.

在许多不同的语音识别的基准测试里, 深度神经网络和隐......

阅读全文>>
2016年05月12日 16:43

深度学习有多深?学了究竟有几分?(十二)

深度学习有多深?学了究竟有几分?(十二)

(1)

RNN 和 LSTM 发挥威力的重要应用之一, 是语音识别.

一直到2009年之前, 主流的语音识别技术, 依靠的是统计学上的两个算法模型, 高斯混合模型 (Gaussian Mixture Model)和隐藏马尔科夫模型 (Hidden Markov Model).

马尔科夫模型, 是一个概率的模型. 其核心思想, 就是一个系统, 下一个时间点的状态, 只取决于当前的状态, 而和更早的时间点 (昨天, 前天, 大前天)的状态无关.

这么一个简单的概念,被俄国数学家马尔科夫老师最早系统性的提出, 所以他的大名也随着该模型的推广而传遍世界. 由此可见, 在学术界出名, 开创性的研究至关重要, 即使概念简单也没有关系.  从另外一个角度看......

阅读全文>>
2016年05月04日 15:37

深度学习有多深? 学了究竟有几分? (十一)

深度学习有多深? 学了究竟有几分? (十一)

(1)

迄今为止我们讨论的神经网络模型, 都属于一种叫做前馈网络 (feedforward network) 的东西. 简而言之, 前馈网络, 信息从底层不断往前单向传输,故而得名.

RNN (Recurrent Neural Network), 也称循环神经网络, 多层反馈神经网络, 则是另一类非常重要的神经网络.

本质上, RNN 和前馈网络的区别是, 它可以保留一个内存状态的记忆, 来处理一个序列的输入, 这对手写字的识别, 语音识别和自然语言处理上, 尤为重要.

在分析一段语句时, 知道上文, 知道它前面的那些单词,非常关键. RNN 之所以叫 Recurrent (循环), 是因为对于一个序列的每个元素, 它都要做同样的处理, 通过一个内存原件记住当前状态, 然后将其引......

阅读全文>>