循环神经网络:一个词一个词地读懂一句评价

「这门课很清楚」是好评,「这门课不太清楚」就成了差评;「很难懂但是非常实用」要看后半句。 光数有哪些词不够,还得记住前面读过什么。循环神经网络每读一个词,就把新词和自己的「记忆」(8 个格子的隐藏状态) 揉在一起,更新记忆,再传给下一步。点「读下一个词」,看记忆和判断怎么一步步变。

① 拼一句评价(点词加到句尾),或选一句现成的:
② 展开看每一步(同一个 RNN 单元重复用了 0 次)

记忆格子为正 为负颜色越深,数越大

读完之后的判断

循环神经网络—
词袋模型(只数词,不管顺序)—

两个模型考试成绩

循环网络 / 词袋
不带「不」的简单句—
带「不」的句子—
没见过的「但是」转折句—

词袋模型在简单句上并不差,它到今天还是常用的基线。但它只会数词:句子里一出现「不」就全错, 而「很难懂但是实用」和「很实用但是难懂」两句用的词完全一样,它只能瞎猜。

记忆传得越远越淡(示意)

这个滑块是单独的示意参数,和本页 RNN 的真实权重无关, 只用来看「每传一步打个折」累计起来有多快。

模型由本页配套的 train.py 训练:句子全部由程序按一个很小的语法合成(4 个主语、18 个词),不含任何真实评价, 所以它只认识这 18 个词,也只会这种句式,句式一超纲就可能判错。训练时每一步都给了目标(读到好坏词之后是这半句的倾向, 还没读到时是 50%),所以「读到这里时的判断」这条曲线才有意义。
本页由 AI 教学改革实践研究计划独立编写(算法为公开知识),可自由嵌入、修改与再分发(CC BY-NC 4.0)。 AI 课程公益资源