什么是 LSTM 网络?
LSTM (Long Short Term Memory, 长短期神经网络)是一种特殊的循环神经网络(RNN, Recurrent neural networks)。LSTM 能够通过更新单元状态来学习参数间的长期依赖关系,目前在机器翻译、语言识别等领域有着广泛应用。
LSTM 网络工作示意图
LSTM 的使用背景
当你读这篇文章的时候,你可以根据你对前面所读单词的理解来理解上下文。你不会从一开始或者从中间部分阅读就能够直接理解文本意义,而是随着你阅读的深入,你的大脑才最终形成上下文联系,能够理解文本意义。
传统神经网络的一个主要不足在于不能够真正地像人类大脑的神经元一样工作运行,往往只能够利用短期记忆或者信息。一旦数据序列较长,就难以将早期阶段信息传递至后面阶段
考虑下面两个句子。如果我们要预测第一句中“<..>”的内容,那么最好的预测答案是“Telugu”。因为根据上下文,该句谈论的是 Hyderabad 的母语。这样的预测对于人类来说是很基础的,但是对于人工神经网络而言则非常困难。
“Hyderabad” 单词指明其语言应该是“Telugu”。但是“Hyderabad”出现在句首。所以神经网络要准确进行预测,就必须记忆单词的所以序列。而这正是 LSTM 可以做到的。
编程实现 LSTM
本文将通过 LSTM 网络开发一个故事生成器模型。主要使用自然语言处理(NLP)进行数据预处理,使用双向LSTM进行模型构建。
Step 1:数据集准备
创建一个包含有各种题材类型的短篇小说文本库,保存为“stories.txt”。文本库中的一个片段如下:
Frozen grass crunched beneath the steps of a shambling man. His shoes were crusted and worn, and dirty toes protruded from holes in the sides. His quivering eye scanned the surroundings: a freshly paved path through the grass, which led to a double swingset, and a picnic table off to the side with a group of parents lounging in bundles, huddled to keep warm. Squeaky clean-and-combed children giggled and bounced as they weaved through the pathways with their hot breaths escaping into the air like smoke.