
455
第 16 章
使用 RNN 和注意力机制
进行自然语言处理
当艾伦
·
图灵(Alan Turing)在 1950 年想象他著名的图灵测试
注 1
时,他的目标是评估
一台机器的能力来匹配人类的智能。他可以测试很多东西,例如识别图片中的猫、下
棋、作曲或逃脱迷宫等的能力,但有趣的是,他选择了一个语言任务。更具体地讲,他
设计了一个聊天机器人,能够欺骗其对话者以为它是人类
注 2
。此测试确实有其弱点:一
组硬编码规则可以欺骗毫无戒心或天真的人(例如,机器可以给出模糊的预定义回答来
回应某些关键字,也可以假装是在开玩笑或喝醉了来通过这个测试,或者通过应答自己
的问题来逃避棘手的问题),人类智力的许多方面都被完全忽略了(例如,解释非语言
交流(例如面部表情)的能力,或学习手工任务的能力)。但是测试确实突出了这样一
个事实,即掌握语言可以说是智人最大的认知能力。我们可以建造一台可以读写自然
语言的机器吗?
12
自然语言任务的常见方法是使用循环神经网络。我们继续探索 RNN(在第 15 章中介绍),
从字符 RNN 开始,经过训练可以预测句子中的下一个字符。这将使我们能够生成一些
原始文本,在此过程中,我们将了解如何在很长的序列上构建 TensorFlow 数据集。我
们首先使用无状态 RNN(在每次迭代时,处理文本的随机部分,而在文本的其余部分上
没有任何信息),然后我们将创建一个有状态 RNN(在 RNN 训练迭代之间保留隐藏状
态,并继续从中断处读取内容,从而允许其学习更长的模式)。接下来,我们将构建一
个 RNN