(1)
循环神经网络, 在文字处理上的表现, 只是小荷才露尖尖角.
自然语言处理, 英文是 Natural Language Processing (NLP).其基本定义为: 把一段文字, 转化成一个数据结构, 力求清晰无误地表达文字的意义.
自然语言处理包括对自然语言的理解和生成, 典型应用如机器翻译, 文字分类, 聊天机器人等等. 通过语言沟通, 是智人和其它动物的最重要区别, 这是人工智能技术的重要基石.
衡量 NLP 表现的一个重要变量是所谓语言模型 (Language Model, 简称 LM) 的perplexity (困惑度). 困惑度,是一个用概率计算的基准, 借用了信息论创始人, 著名科学家香农的信息熵的概念.
通俗地说, 用语言模型来评估一段测试语句的概率时, 困惑度和概率成反比, 概率越高, 困惑度越低, 语言模型越好.
打个比方, 如果有这样一段话:
"今天我吃了西红柿炒__ "
对一个好的语言模型, 这句话后面出现的词是"鸡蛋"的概率可能是 30%, "土豆"的概率是 5%, "豆腐"的概率是 5%, 但"石头"的概率则应当几乎为零.
如果神经网络的计算模型, 输出一些胡言乱语 (语法,逻辑和语意上的各种错误),那么这往往意味着这个模型,对一些不恰当的词语,给予了过高的几率, 它的困惑度, 还不够优化.
换言之, 聊天机器人使用的语言模型, 如果困惑度足够低,那么它就能够写出流利通顺和逻辑清晰的语句.
借用韩愈老师在<师说>里的话:“机器非生而知之者,孰能无惑?". 语言模型里进一步解惑的工具,则来自更多的数据和更精巧的算法.
(2)
深度学习之前,传统的基于统计算法的语言模型,在测试时困惑度大多都在 80以上 (人工语言处理的困惑度的理论最低点大约在 10-20 之间).一方面是算法的局限,另一方面是来自培训语句数量规模的限制.
2013年,以 Ciprian Chelba 为首的来自谷歌的团队推出了一个叫做"十亿单词基准"(One Billion Word Benchmark) 的语料库.这个语料库包含了接近十亿个英文单词组成的不同语句, 用来培训和测试不同的算法模型. 这个数据规模, 是先前流行的所谓 "Penn Treebank" 的包含四百五十万英文单词的语料库的大约两百倍.
Chelba 的团队, 使用一个包含二百亿个自由参数的循环神经网络的模型, 模型的训练消耗了十天的时间, 把困惑度下降到了 51 左右. (同期使用传统的统计算法, 最佳结果是 67)
2016年二月, 以 Rafal Jozefowicz 为第一作者的谷歌大脑的团队, 发表论文, "探索语言模型的极限" (Exploring the limits of language modeling). 该团队, 使用了 RNN/ LSTM 和所谓 "字母层面的卷积神经网络" (Character-Level Convolutional Neural Network) 的技术结合的模型, 在"十亿单词基准"的测试上把困惑度降低到了 30. 而相应的模型自由参数的数目降到了只有十亿 (相当于 Chelba 团队的模型的百分之五), 计算量大大降低.
更有意思的是,当把十个经过微调的不同参数的LSTM模型综合起来,取其均值, 对测试数据验证时, 其困惑度最低达 23.7.
机器越来越懂人话, 越来越会说人话了.
(未完待续)
0
推荐