文本生成模型

使用 Keras 构建语言建模的循环神经网络(RNN)

David Cecchini

Data Scientist

类似分类模型

文本生成模型:

  • 将词表作为类别
  • 最后一层为词表大小的 softmax
  • 损失函数用 categorical_crossentropy
使用 Keras 构建语言建模的循环神经网络(RNN)

Keras 示例模型

model = Sequential()

model.add(LSTM(units, input_shape=(chars_window, n_vocab), dropout=0.15, recurrent_dropout=0.15, return_sequences=True))
model.add(LSTM(units, dropout=dropout, recurrent_dropout=0.15, return_sequences=False))
model.add(Dense(n_vocab, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
使用 Keras 构建语言建模的循环神经网络(RNN)

但不完全是分类模型

与分类的区别:

  • 只计算损失,不算性能指标(准确率)
    • 由人观看结果并评估性能。
    • 若效果不佳,可训练更多轮或加大模型复杂度(更多记忆单元、加层等)。
  • 搭配任务相应的生成规则
    • 生成下一个字符
    • 生成一个词
    • 生成一句话
    • 生成一段话
使用 Keras 构建语言建模的循环神经网络(RNN)

其他应用

  • 名称生成
    • 婴儿名
    • 新的恒星名等
  • 生成标记文本
    • LaTeX
    • Markdown
    • XML 等
    • 程序代码
  • 新闻文章
  • 聊天机器人
使用 Keras 构建语言建模的循环神经网络(RNN)

数据准备

展示文本生成的数据准备流程:将文本转为数字序列,并将训练集拆分为 X 与 Y;X 为固定长度序列,Y 为其后一个字符。

使用 Keras 构建语言建模的循环神经网络(RNN)

开始练习!

使用 Keras 构建语言建模的循环神经网络(RNN)

Preparing Video For Download...