重點解碼效果總結#####論文閱讀——《Towards a Human-like Open-Domain Chatbot》

Introduction

開放的chatbot API總結

主要貢獻

  • 模型架構:Evolved Transformer
    • 模型輸入:多輪對話(最多7輪)
    • 模型輸出:回覆
    • 最佳模型:2.6B參數,10.2PPL,8K BPE subword vocabulary, 訓練數據40B words
  • 評測指標
    • PPL
    • SSA(Sensibleness and Specificity Average)用來評估
      • whether make sense
      • whether specific
    • 人工評測使用static(1477個多輪對話)和interactive(想說啥就說啥)兩種數據集,發現SSA和PPL在這兩個數據集上高度相關
    • 模型在評測集的表現:
      • 0.72的SSA
      • 經過filtering mechanism 和 tuned decoding後有0.79的SSA,相比於人提供的0.86SSA的回覆已經很接近了
  • 方法的侷限性
    • 評測數據集的侷限性,不能解決所有領域的問題

對話機器人的評價

人工進行評測時的參考標準

  • Sensibleness
    • common sense
    • logical coherence
    • consistency
    • 人工評測時對於可打的標籤:confusing, illogical, out of context, factually wrong, make sense
    • 缺陷:對於安全的回答,如I don’t know,無法區分
  • Specificity
    • A: I love tennis. B: That’s nice 應該被標記爲not specific,如果 B:Me too, I can’t get enough of Roger Federer!則被標記爲specific
    • 已經被標記爲not sensible的直接標記爲not specific
  • SSA
    • 可以使用Sensibleness和Specificity標記在所有responses的比例來作爲參考標準
    • 使用SSA將Sensibleness和Specificity的比例進行了結合

可進行對比的幾個開源chatbot框架

構建靜態評測集

  • 從單輪開始:http://ai.stanford.edu/~quocle/QAresults.pdf
  • 增加一些個性化問題,如:Do you like cats?
    • A: Do you like movies?; B: Yeah. I like sci-fi mostly; A: Really? Which is your favorite?期待I love Back to the Future這樣的回答,對於I don’t like movies這樣的回覆應標記爲not sensible

進行動態評測

  • 機器人以Hi開始,評測人員自由與bot對話,並對每一個bot的回覆進行評測。每一個對話至少14輪,至多28輪。

Meena Chatbot

訓練數據

  • 來源於public social media
  • 清洗流程
    • 去掉 subword 數目<=2 或 subword 數目 >= 128
    • 去掉 字母比例<0.7
    • 去掉 包含URL
    • 去掉 作者名字bot
    • 去掉 出現100次以上
    • 去掉 跟上文n-gram重複比例過高
    • 去掉 敏感句子
    • 去掉 括號中內容
    • 當一個句子被刪除時,則上文全部被刪除
  • 共清洗出867M的(context, response)對
  • 使用sentence piece進行BPE分詞,得到8K的BPE vocab
  • 最終語料包含341GB的語料(40B word)

模型框架

  • Evolved Transformer
    • 2.6B parameter
    • 1 ET encoder + 13 ET decoder
  • 最大的模型可達到10.2的PPL
  • 最大的傳統Transformer模型(32層decoder)可達到10.7的PPL
  • hidden size: 2560
  • attention head: 32
  • 共享編碼、解碼、softmax的embedding
  • 編碼、解碼最長是128

訓練細節

  • 使用Adafactor optimizer,初始學習率0.01,在前10k step保持不變,使用inverse square root of the number of steps進行衰減
  • 使用https://github.com/tensorflow/tensor2tensor代碼進行訓練

解碼細節

  • 爲了避免產生乏味的回覆,可以使用多種方法進行解碼
    • reranking
    • 基於profiles, topics, and styles
    • 強化學習
    • 變分自編嗎
  • 當PPL足夠小時,可以使用sample-and-rank策略進行解碼
    • 使用temperature T隨機產生N個獨立的候選

      • T=1產生不經過修正的分佈
      • T越大,越容易產生不常見的詞,如相關的實體名詞,但可能產生錯誤的詞
      • T越小,越容易產生常見的詞,如冠詞或介詞,雖然安全但不specific
      • 解釋1
溫度是神經網絡的超參數,用於在應用softmax之前通過縮放對數來控制預測的隨機性。 例如,在TensorFlow的LSTM中,溫度代表在計算softmax之前將logit除以多少。


當溫度爲1時,我們直接在logits(較早層的未縮放輸出)上計算softmax,並使用溫度爲0.6的模型在logits/0.6上計算softmax,從而得出較大的值。 在更大的值上執行softmax可使LSTM 更加自信 (需要較少的輸入來激活輸出層),但在其樣本中也更加保守 (從不太可能的候選樣本中進行抽樣的可能性較小)。 使用較高的溫度會在各個類上產生較軟的概率分佈,並使RNN更容易被樣本“激發”,從而導致更多的多樣性和更多的錯誤 。


softmax函數通過確保網絡輸出在每個時間步長都在零到一之間,基於其指數值對候選網絡的每次迭代進行歸一化。


因此,溫度增加了對低概率候選者的敏感
      • 解釋2
當T很大時,即趨於正無窮時,所有的激活值對應的激活概率趨近於相同(激活概率差異性較小);而當T很低時,即趨於0時,不同的激活值對應的激活概率差異也就越大。
    • 發現使用beam-search解碼會產生重複且無趣的回覆,使用sample-and-rank產生的回覆會豐富一些
    • 使用N=20,T=0.88
  • response score的計算:logP/T,P是response的likelihood,T是token的個數
  • 解碼時增加detect cross turn repetitions
    • 當兩個turn的n-gram重複超過一定比例時,則從候選中刪除
  • 增加一個分類層,用來過濾掉敏感回覆

結論

SSA和PPL是相關的

  • 基本呈線性關係

效果的比較

  • 小冰:呈現出個性化的回覆,但有時也會無意義,且經常回復得太平常。小冰另一個特點就是具有同情心,可以在以後的評價指標中考慮這一點。小冰有near-human-level engagingness但not very close to human-level humanness,因此在我們的評測指標上SSA不高。
  • mitsuku:56%SSA(72%sensibility 40%specifity), 網站上的對話並不是它參加圖靈測試的版本
  • DialoGPT:48%SSA(57%sensibility 49%specifity)
  • CleverBot:在interactive評測表現比static上稍微好一些(56% interactive SSA,44% static SSA)。發現cleverbot更擅長將話題引入到它更擅長的領域中,缺少personality
  • Meena:base(72% SSA),full(79% SSA)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章