8 Tổng kết
4.2 Mô hình tổng quan của QANet
mỗi khối.
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP
Input Embedding Layer: tầng mã hóa từ ngữ là thiết yếu cho các bài toán xử lý ngôn ngữ
tự nhiên hầu như mọi mô hình đều được đưa qua các bộ mã hóa như: word2vec, glove,... Các mô hình xử lý ngôn ngữ tự nhiên trước đây chỉ dùng một bộ mã hóa ở mức từ ngữ, sẽ tốt hơn nếu ta cho mô hình hiểu được các tiền tố, hậu tốt hoặc cấu tạo của từ đó. Ví dụ trong tập dữ liệu huấn luyện có các từ“understand”, “misunderstand”,“lead”liệu rằng mô hình có thể biết được từ
“mislead”trong lúc kiểm thử mô hình? Mô hình QANet ở tầng Embedding Layer sẽ dùng cả 2 thành phần: biểu diễn từ ở mức kí tự và biểu diễn từ ở mức từ ngữ. Trong đó biểu diễn ở mức kí tự giúp mô hình hiểu được cấu tạo của từ.
Trong đó biểu diễn từ ngữ ở mức kí tự mô hình QANet sử dụng bộ mã hóa GLoVe, mỗi từ được biểu diễn bởi vector có chiều dàip1,p1có thể là 100 hoặc 300. Những trường hợp mà các từ không nằm trong bộ mã hóa GLoVe thì từ đó sẽ được xem là <OOV> (out of vocabulary) và sẽ được khởi tạo với vector có tất cả các giá trị bằng 0. Ở mức kí tự thì mỗi từ sẽ được xét mặc định có chiều dài là 16 kí tự, chiều dài vector ở mức kí tự ta có thể dùng các pre-train ở mức kí tự hoặc có thể khởi tạo bằng vector 0 sau đó sẽ sẽ huấn luyện các vector này, thường thì mỗi vector biểu diễn kí tự sẽ được chọn có chiều dài là 64.
Tiếp đến thì ma trận biểu diễn từ ở mức kí tự có kích thướcp2×64 sẽ được đưa qua một tầng gồm các phép tích chập sau đó lấy gía trị lớn nhất ở mỗi cột để thu được vector có chiều dài là 64. Tiếp đến ta sẽ nối 2 vector này lại với nhau [xc, xw] để biểu diễn mỗi từ x trong văn bản và câu hỏi, x∈Rp1+p2. Tiếp đến ta sẽ đưa vector x này qua một tầng highway network để xem rằng liệu rằng thành phần nào trong 2 thành phần (mức kí từ và mức từ ngữ) sẽ ảnh hưởng đến vector đầu ra nhiều hơn.
Embedding Encoder Layer: tầng này là các khối encoder xếp chồng lên nhau mỗi khối có
[convolution-layer×# + self-attention-layer + feed-forward-layer] như mô tả trên hình 4.1 (bên phải). Ở tầng này tầng tích chập được dùng là depthwise convolution chứ không phải phép tích chập thông thường; phép tích chập này dùng kernel có kích thước là 7, số bộ lọc là 128; số lượng tầng tích chập là 4.
Mỗi từ sau khi đi qua tầng Embedding Layer thì đã biết được biểu diễn trong chiều không gian như thế nào. Nhưng đoạn văn (câu hỏi) có nghĩa khi là tập hợp của các từ xây dựng nên, do vậy các từ cũng cần phải biết được những từ xung quanh nó trong toàn bộ văn bản. Lớp self-attention giúp mỗi từ trong văn bản (câu hỏi) hướng sự chú ý đến những từ có liên quan với nó trong toàn bộ văn bản (câu hỏi). Tầng này tương ứng với tầngContextual Embedding Layer trong BiDAF nhưng thay vì dùng một mạng LSTM thì QANet sử dụng cơ chế self- attention giải quyết bằng các phép toán nhân ma trận. Ở tầng self-attention, nhóm tác giả dùng cơ chế Multihead Attention, việc dùng cơ chế này có thể hiểu là học được nhiều đặc trưng của văn bản với giả sử rằng mỗi head sẽ học được một đặc trưng. Tổng số head được dùng ở tầng self-attention này là 8.
Mỗi tầng tính toán (tích chập, self-attention, feed forward-layer) đều được nằm trong residual block (hình 4.1 bên phải). Với mỗi đầu vào x và phép toàn f, đầu ra sẽ là f(layernorm(x)) +x, có một đường truyền thẳng từ đầu vào đến đầu ra và tầng chuẩn hóa trước khi thực hiện phép toán f. Tầng này với mỗi từ x là vector có kích thước p1+p2 chiều sau được chuyển đổi thành vector có kích thước 128 chiều.
Context-Query Attention Layer: Sau khi đi qua tầng thứ 2 của mô hình QANet đã giúp
mỗi từ biết được những từ xung quanh chúng, tầng này sẽ giúp mỗi từ biết rằng từ đó quan trọng như thế nào với mỗi từ trong câu hỏi.
Tầng này có thiết kế và tính toán giống nhưContextual Embedding Layertrong mô hình BiDAF [18]. Gọi H và U là ma trận đã được mã hóa tương ứng với văn bản và câu hỏi. Đầu tiên ta sẽ tính ma trận tương quan S, S∈Rnxm. Phép toán tương quan được tính qua hàm:
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP Trong đóW0là ma trận sẽ được học trong quá trình huấn luyện, [;] là phép nối vector, và⊙là phép element-wise.
Ta sẽ lấy một ví dụ với văn bản là "Singapore is small country in Southest Aisa" và câu hỏi là "Where is Singapore situated?". Ma trận S có thể có dạng như sau: Giá trị ở phần tửS64hàng
Hình 4.3: Ma trận tương quan S3
thứ 6 và cột thứ 4 biểu diễn sự tương quan giữa hai từ "located" và "situated". Ma trận tương quan S sẽ được dùng để tính các bước tiếp theo: Context-to-Query và Query-to-Context.
• Context-to-Query: ở bước này sẽ tìm từ nào trong câu hỏi sẽ liên quan nhất với mỗi từ
trong văn bản. Tính toán Context-to-Query giống như tính toán ở bước thứ 3 ở cơ chế attention của mô hình "sequence-to-sequence", cơ chế attention ban đầu được phát minh ra để giải quyết bài toán dịch máy dùng một mạng neuron gồm 2 thành phần là decoder và encoder, decoder và encoder được xây dựng dựa trên các khối LSTM, cơ chế attention giúp tầng decoder tập trung vào từ liên qua nhất trong dữ liệu đầu vào. Ví dụ như từ đầu tiên trong văn bản dịch sẽ tập trung vào từ đầu tiên của văn bản gốc, từ cuối cùng trong văn bản dịch tập trung vào các từ cuối cùng của văn bản gốc.
Đầu tiên từ các giá trị vô hướng trong ma trận S, ta sẽ tính attention distribution (phân phối chú ý) bằng cách tính row-wise softmax của ma trận S.
Ma trận A có kích thước giống như ma trận S, chỉ ra rằng từ nào trong các từ trong câu hỏi liên quan nhất đến từ trong văn bản.
Chúng ta sẽ lấy từng dòng trong ma trận A để được attention distribution,At: có kích thước 1xm (với m là chiều dài câu query).At: phản ánh sự quan trọng của mỗi từ trong câu query với từ thứ t trong văn bản. Với mỗi hàng ta có tính chất sau: ΣAt j =1 với mỗi giá trị t. Những giá trị cóAt j càng lớn thể hiện từ thứ j trong câu hỏi có sự tương quan lớn với từ thứ t trong đoạn văn.
Tiếp theo ta tính trung bình có trọng số ma trận Q. Kết quả của bước này sẽ là ma trậnUˆ, có kích thước 2dxn (trong đó n là chiều dài của văn bản).
ˆ
U giống như ma trận H (ma trận mã hóa của văn bản). Tuy nhiênUˆ chứa thông tin khác H. Trong khi H chứa ý nghĩa, cú pháp của mỗi từ trong văn bản ,Uˆ còn chứa đựng thông tin 3Tham khảo tại: An Illustrated Guide to Bi-Directional Attention Flow
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP
Hình 4.4: Ma trận row-wise softmax A4 của từng từ trong câu hỏi ảnh hướng đến mỗi từ trong văn bản.
• Query-to-Context: ở bước tính toán này mục đích sẽ tìm xem từ nào trong văn bản là liên
quan nhất đến câu hỏi và đó là từ quan trọng để trả lời câu hỏi.
Đầu tiên chúng ta sẽ lấy giá trị lớn nhất của mỗi hàng của ma trận S (S là ma trận tương quan giữa các từ trong văn bản và các từ trong câu hỏi), thu được một vector cột. Giả sử gọi vector này là z, z có thể xem là các giá trị attention , tiếp tục lấy softmax vector z này để thu được attention distribution (phân phối attention) gọi vector này là vector b. Tổng kết lại b được tính toán như sau: b = softmax(maxrow(S)), b∈Rn.
Sau đó thực hiện trung bình có trọng số ma trận H với vector b, thu được vector hˆ. Bước cuối cùng là sao chép vectorhˆ này n lần thu được ma trậnHˆ có kích thước 2dxn.
Cuối cùng là bước kết hợp, từ ma trận biểu diễn văn bản H, ma trận context-to-queryUˆ và và ma trận query-to-contextHˆ sẽ được dùng làm đầu vào để tính toán ma trận G:
G:i=β(H:i,Hˆ:i,Uˆ:i) (4.2) Trong đó hàmβ = (h,uˆ,hˆ) = [h,uˆ, h⊙uˆ, h⊙hˆ]∈R4d. Ma trận G sẽ có kích thước 4d x n. Ma trận G sẽ là input cho tầng tiếp theo là tầng Model Encoder Layer.
Model Encoder Layer: Ở tầng Context-Query Attention giúp cho mỗi từ trong văn bản
hiểu được tầm quan trọng của chúng cho câu trả lời. Nhưng như thế chưa đủ, các từ này cần phải
"thảo luận"với nhau xem rằng những từ nào sẽ được chọn để làm kết quả cho câu trả lời. Các tham số học của tầng này như tầng Encoder, cũng gồm các thành phần như tích chập, self-attention, feed-forwar. Tuy nhiên số phép tích chập là 2. Tầng Model Encoder Layer có nhiều tầng Encoder Block hơn, cấu hình lúc công bố bài báo thì tầng này có 7 Encoder Block. 7 tầng này sẽ được dùng chung để tính toán các ma trậnM0, M1,M2. 3 ma trận này sẽ giúp mô hình dự đoán ra từ đầu tiên và từ kết thúc nằm trong văn bản, văn bản nằm từ đoạn đầu tiên đến kết thúc là câu trả lời cho câu hỏi.
Output Layer: Ở tầng này sẽ tính ra 2 vector p1, p2 là phân phối xác suất của vị trí bắt đầu
và vị trí kết thúc của câu trả lời, vector này có chiều dài bằng chiều dài của văn bản. Công thức 4Tham khảo tại: An Illustrated Guide to Bi-Directional Attention Flow
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP tính được định nghĩa như sau:
p(1)=so f tmax(wTp1[M0,M1])
p(2)=so f tmax(wTp2[M0,M2]) (4.3) Trong đówTp1,wTp2∈R8d là 2 vector cần học của tâng này.
Hàm mất mát của mô hình được tính toán bằng tổng mất mát negative log-likelihood của 2 vector p1,p2: L(θ) =−1 N N ∑ 1 log(p1 y1i) +log(p2 y2i) (4.4)
trong đóy1i,y2i là vị trí thực tế bắt đầu và kết thúc của văn bản của mẫu dữ liệu i. p(y1)
i((1) có giá trị càng gần 1 thì hàm mất mát càng tiến về 0.
4.3 Đề xuất ý tưởng cải tiến
4.3.1 QANet với kiến trúc Universal Transformer
Mô hình QANet được xây dựng trên kiến trúc Transformer, đều gồm các khối Encoder Block. Các mô hình sau này như BERT [5] đều được xây dựng trên các khối Encoder Block này, nhưng có số lượng lớn hơn vớiBERTbase gồm 12 tầng Encoder Block,BERTlarge gồm 24 tầng Encoder Block. Mô hình BERT được đưa ra để giải quyết các bài toán tổng quát, sau đó với từng bài toán cụ thể sẽ dùng mô hình này fine-tune để giải quyết.
Ở mô hình ALBERT [11] mà nhóm khảo sát được, nhóm tác giả đề xuất ý tưởng thu giảm số lượng tham số của mô hình BERT (mô hình BERT có thể đến vài trăm triệu hoặc một tỷ tham số cần học tùy theo mô hình BERT cơ bản hay lớn). Mô hình này đề xuất hai ý tưởng để giảm tham số mô hình: factorized embedding parameterization và cross-layer parameter sharing. Trong đó ý tưởng của cross-layer parameter sharing đó là thực hiện chia sẻ tham số giữa các khối Encoder Block thay vì các tham số này độc lập với nhau giữa các khối.
Model Parameters Layers Hidden Embedding Parameter-sharing BERT largebase 108M334M 1224 1024768 1024768 FalseFalse ALBERT
base 12M 12 768 128 True
large 18M 24 1024 128 True
xlarge 60M 24 2046 128 True
xxlarge 235M 12 4096 128 True
Bảng 4.1: Cấu hình tham số của mô hình ALBERT so với mô hình BERT
Việc chia sẻ tham số của mô hình ALBERT sẽ giảm kết quả so với mô hình gốc là BERT. Tuy nhiên việc thay đổi các hàm mất mát và bỏ đi tầng dropout, huấn luyện thêm nhiều dữ liệu thì mô hình ALBERT có kết quả state-of-the-art trên SQuAD và RACE benchmarks.
Trong mô hình ALBERT nhóm tác giả có đề cập đến 2 kĩ thuật cross-layer parameter sharing đó là: Universal Transformer (UTs) [4] và Deep Equilibrium Models [1]. Trong đó nhóm chọn mô hình mô hình Universal Transformer vì tính khả thi và có thể hiện thực được.
Universal TransformerMặc dù những mô hình Transformer đạt nhiều kết quả tốt trên nhiều bài toán khác nhau xong vẫn có một vài điểm hạn chế:
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP
Hình 4.5: ALBERT đạt state-of-the-art trên SQuAD và RACE benchmarks
• No Recurrent Inductive Bias:mô hình Transformer đã đánh đổi giữa việc song song hóa
vớirecurrent inductive biastrong mạng RNN thông thường. Tuy nhiên tính chất này là yếu tố quan trọng cho tính tổng quát hóa trên các bài toán tuần tự (sequence modeling tasks). Ví dụ như mô hình cho một bài toán có thể học được cấu trúc của dữ liệu đầu vào.
• Lack of Conditional Computation: mô hình Transformer áp dụng số lần tính toán như
nhau lên toàn bộ dự liệu đầu vào. Tuy nhiên, không phải tất cả dữ liệu đầu vào cần chung số lần tính toán và có thể được tính toán một cách có điều kiện trên dữ liệu đầu vào.
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP Sự khác biệt cơ bản giữa mô hình Universal Transformer và mô hình Transformer gồm những điểm sau đây:
• Mô hình Universal Transformer áp dụng encoder cho một số lượng biến thiên cho mỗi token (T lần), trong khi đó mô hình Transformer áp dụng chính xác 6 tầng encoder.
• Universal Transformer có một sự thay đổi nhỏ khi biểu diễn dữ liệu đầu vào: thêm vào “timestep embedding” cùng với “positional embedding”
Hình 4.7: Trạng thái tính toán6của khối Encoder Block trong Universal Transformer Sự khác biệt ở 2 ý đầu tiên, lượng biến thiên số lượng tính toán đạt được bằng cách dùng cơ chế “Adaptive Computation Time” [7], có thể giải thích ngắn gọn rằng “Adaptive Computation Time” là một cơ chế động trên từng vị trí dừng tính toán, cho phép số lượng khác nhau số lần tính toán của mỗi kí tự. Hình 4.7 diễn tả cách tính toán trong mỗi khối Encoder trong mô hình Universal Transformer.
Một ví dụ tại sao cơ chế tính toán trên Universal Transformer lại hữu ích. Xét câu sau: “I arrived at the bank after crossing the river”. Trong trường hợp này, từ “bank” cần nhiều quá trình tính toán để suy diễn hơn là các từ ít tối nghĩa như “I” hay là “river”. Khi encode câu này với mô hình Transformer cơ bản, số lần tính toán được áp dụng một cách không điều kiện lên tất cả các từ. Đối với cơ chế của UT sẽ cho phép mô hình thực hiện tăng số lần tính toán với các từ tối nghĩa: ví dụ tính toán nhiều hơn từ “bank” để làm sáng tỏ nghĩa, trong khi thực hiện ít tính toán trên các từ đã rõ nghĩa.
Cơ chế ACT1[7] có thể được hiểu một cách tóm tắt như sau.
• Ở mỗi bước chúng ta có những tham số như sau:
– Vector xác suất Halting probabilities và trạng thái biểu diễn trước của các từ (được khởi tạo bởi các giá trị 0).
– Mỗi biến scalar gọi là giá trị ngưỡng halt có giá trị ở giữa 0 và 1 (giá trị này là do chúng ta chọn để dừng tính toán)
• Đầu tiên chúng ta sẽ tính toán trạng thái mới cho mỗi vị trí dùng Universal Transformer. 5Tham khảo tại: Universal Transformer [4]
6Tham khảo tại:https://glassboxmedicine.com/2019/09/07/universal-transformers/
1Tham khảo code hiện thực: https://github.com/cfiken/universal_transformer/blob/master/ model/ut.py
KIẾN TRÚC MÔ HÌNH HỎI-ĐÁP
Hình 4.8: Mô hình QANet với kiến trúc Transformer
• Tiếp đến chúng ta tính toán giá trị “pondering” sử dụng một tầng fully-connected để chuyển vector trạng về giá trị scala. Đây là giá trị “pondering”, giá trị này sẽ giúp mô hình ước tính cần thêm bao nhiêu tính toán cho mỗi giá trị đầu vào.
• Chúng ta sẽ quyết định dừng tính toán cho mỗi vị trí mà vượt giá trị halt:
– Dừng tính toán nếu: halting probability + pondering) > halt threshold
– Tiếp tục tính toán: (halting probability + pondering) halt threshold
• Với những vị trí tiếp tục tính toán, cập nhật vector halting probabilities: halting probability += pondering
• Cập nhật vector biểu diễn cho các ví trị còn lại cho đến khi mô hình dừng tính toán trên tất cả vị trí hoặc đạt đến giá trị ngưỡng số lần tính toán tối đa.