文字生成模型

使用 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)

但不是真正的分類模型

與分類的差異:

  • 計算損失,不計效能指標(accuracy)
    • 由人觀察結果並評估效能。
    • 若不佳,延長訓練輪數或提高模型複雜度(增加記憶單元、加層等)。
  • 依任務搭配生成規則
    • 生成下一個字元
    • 生成一個單字
    • 生成一句話
    • 生成一段文字
使用 Keras 建立語言模型的循環神經網路(RNN)

其他應用

  • 名稱產生
    • 嬰兒名字
    • 新的恆星名稱等
  • 產生標記文本
    • LaTeX
    • Markdown
    • XML 等
    • 程式碼
  • 新聞文章
  • 聊天機器人
使用 Keras 建立語言模型的循環神經網路(RNN)

資料前處理

呈現文字生成任務的資料前處理流程。將文字轉為數字序列,並把訓練集切成 X 與 Y:X 為固定長度序列,Y 為其下一個字元。

使用 Keras 建立語言模型的循環神經網路(RNN)

一起來練習吧!

使用 Keras 建立語言模型的循環神經網路(RNN)

Preparing Video For Download...