BiDAF在embedding部分也同時引入word-embedding與char-embedding兩種embedding方法,讓模型的輸入包含更多資訊。而其最大的特點,為在Interaction層中引入了雙向attention機制,計算Query2Context和Context2Query兩種query-aware表示,再利用雙向LSTM對兩種query-aware進行整合,可更加有效的得出文章與問題之間的關係。最後預測答案的方式,則與Match-LSTM同樣使用boundary model的方法。
RuminatingReader算是加強版的BiDAF模型。他將BiDAF的架構中Interaction的輸出經過Highway Network的處理,將資訊加入至原文與原問題中。之後把帶有資訊的文章與問題再次輸入Interaction層計算,得出新的query-aware表示,其餘部分則與BiDAF基本上相同。藉由二次的重複計算attention,將原本已計算出的文章與問題相互關係做再一次地確認與強化,能在文章中更加準確地預測答案位置。
Match-LSTM架構較為簡單,用單層的LSTM對embedding過的文字做雙向編碼,再引入attention機制,計算出每個詞的query-aware表示,最後導入Answer層計算答案。計算答案的方式分為sequence model或boundary model兩種方式,但在最後實驗證明了簡化的boundary model比sequence model有著更好的效果,所以之後也預設以boundary model作為預測答案的方式。
在QANet的架構中,便捨棄了傳統RNN的編碼方式,而使用self-attention的機制。為此建立了一名為encoder block的子區塊,內含多個卷積層、self-attention與FeedForward layer。在文章與問題經過embedding後便利用encoder block對其進行編碼,之後引用與BiDAF相同的Context-Query attention計算文章與問題之間的相互關係。最後在接上多個encoder block,便進入output layer計算答案位置。QANet的結果證實,以self-attention取代RNN,並增加層數的方式能得出更好的結果。
在Transformer之中存在一個問題,就是在計算attention時,能擷取的上下文長度為固定的,導致超過長度之外的資訊可能就無法獲得。所以提出Transformer-XL架構,特色為將計算的hidden state緩存起來,在之後計算新片段時,能夠將hidden state重複使用,擴展獲取的前文資訊。但與此同時又產生新的問題,在hidden state的位置資訊原本是採用絕對位置,但引入上述機制後會導致性能損失。對此,Transformer-XL的解決方法為使用相對位置編碼,相對於絕對位置更加直觀,且能解決上述性能耗損的問題。
同樣建立在seq2seq的基礎上,但在過程中捨棄RNN,使用多層的attention替代。整個架構可分成encoder與decoder,兩者皆由多個block組成。encoder的block包含一個Multi-Head Attention和一個Feed Forward Network,而decoder的block則是由兩個Multi-Head Attention和一個Feed Forward Network組成。其中每個Multi-Head Attention和Feed Forward Network都採取類似 ResNet 的方法,後面加上一層 Add & Norm。由於Transformer捨棄了舊有的RNN與attention組合,改為全attention的構成,因此缺少了位置資訊。也就是說(a, b, c, d)與(d, c, b, a)這兩種組合在Transformer中視沒有區別的。所以在input時,Transformer會多出一個名為positional embedding的輸入,保留各個文字的位置資訊。