logo

LSTM 生成文本

王哲峰 / 2022-07-15


目录

LSTM 生成文本

本节将会探讨如何将循环神经网络用于生成序列数据。将以文本生成为例, 但同样的 技术也可以推广到任何类型的序列数据, 可以将其应用于音符序列来生成新音乐, 也可以应用于笔画数据的时间序列, 以此类推

序列数据生成绝不仅限于艺术内容生成。它已经成功应用与语音合成和聊天机器人的对话生成。 Google 于 2016 年发布的 Smart Reply (智能回复)功能, 能够对电子邮件或短信自动生成 一组快速回复, 采用的也是相似的技术

生成式循环网络简史

截至 2014 年年底, 还没什么人见过 LSTM 这一缩写, 即使在机器学习领域也不常见。 用循环网络生成序列数据的成功应用在 2016 年才开始出现在主流领域。但是, 这些技术都 有着相当长的历史, 最早的是 1997 年开发的 LSTM 算法。这一算法早期用于逐字符的生成文本

如何生成序列数据

采样策略的重要性

生成文本时, 如何选择下一个字符至关重要:


Note:


为了在采样的过程中控制随机性的大小, 可以引入一个叫做 softmax 温度(softmax temperature) 的参数, 用于表示采样概率分布的熵, 即表示所选择的下一个字符会有多么出人意料或多么可预测。给定一个 temperature 值, 按照下列方法对原始概率分布(即模型的 softmax 输出)进行加权, 计算得到一个新的概率值

import numpy as np

def reweight_distribution(original_distribution, temperature = 0.5):
    distribution = np.log(original_distribution) / temperature
    distribution = np.exp(distribution)
    return distribution / np.sum(distribution)

实现字符级的 LSTM 文本生成

任务:训练一个语言模型, 这个模型是针对尼采的一些已被翻译为英文的作品的写作风格和主题的模型

总结