6 Ứng dụng
4.1 So sánh mô hình Transformer và LSTM
Từ đó kiến trúc mô hình Transformer đã được ra đời tại bài báo “Attention Is All You Need” [16] để kết hợp các ưu điểm của hai mạng nêu trên. Tương tự như mô hình Attention-based Seq2Seq trong Mục 3.5, Transformer cũng dựa trên kiến trúc mã hóa - giải mã. Tuy nhiên, Transformer giải quyết được nhược điểm của mô hình tuần tự bằng việc thay thế các tầng hồi quy trong mô hình Attention-based Seq2Seq bằng các tầng tập trung đa đầu (Multi-head attention) và kết hợp các thông tin vị trí (thông qua biểu diễn vị trí - Positional Encoding) cùng với việc áp dụng chuẩn hóa tầng (Normalization Layer). Đây là mô hình dựa hoàn toàn vào cơ chế tập trung để tính toán ra được biểu diễn của chuỗi đầu vào và đầu ra mà không sử dụng đến các kiến trúc tuần tự như RNN hay LSTM.
Tại Hình 4.1 có thể thấy được rằng một trong những ưu điểm của Transformer là mô hình này có khả năng xử lý song song cho các từ. Bộ mã hóa của mô hình Transformer là một dạng mạng neuron lan truyền thuận (feedforward neural networks), bao gồm nhiều khối encoder khác, trong đó mỗi khối encoder này xử lý đồng thời các từ. Trong khi đó, với mô hình LSTM, thì các từ phải được xử lý tuần tự. Ngoài ra, mô hình Transformer còn xử lý câu đầu vào theo hai hướng mà không cần phải thêm một khối LSTM nữa như trong kiến trúc Bidirectional LSTM. Vì những lý do đó Transformer đã trở thành một mô hình tương thích với thời gian huấn luyện ngắn hơn đáng kể.
Cụ thể hơn về sự thay thế đã được đề cập có thể được mô tả khái quát như sau:
• Khối Transformer: Một tầng hồi quy trong mô hình Attention-based Seq2Seq được thay thế bởi một khối Transformer. Với bộ mã hóa, khối này chứa một tầng tập trung đa đầu (Multi-head Attention) và một mạng lan truyền thuận theo vị trí (Position-wise feedforward network) gồm hai tầng dày đặc. Đối với bộ giải mã, khối này có thêm một tầng tập trung đa đầu khác để nhận vào trạng thái của bộ mã hóa.
• Cộng và chuẩn hóa (Add and Norm layer): Đầu vào và đầu ra của tầng tập trung đa đầu hoặc mạng lan truyền thuận theo vị trí được xử lý bởi hai tầng
Hướng tiếp cận 42
“cộng và chuẩn hóa” gồm cấu trúc phần dư và tầng chuẩn hóa theo tầng.
• Biểu diễn vị trí (Positional encoding): Do tầng tự tập trung không phân biệt thứ tự phần tử trong một chuỗi, nên tầng biểu diễn vị trí được sử dụng để thêm thông tin vị trí vào từng phần tử trong chuỗi.
Điểm cốt lõi của phương pháp chúng tôi đã đề xuất đó là kiến trúc của mô hình Transformer. Về cơ bản, mô hình này sẽ được chúng tôi chọn sử dụng hoàn toàn, tuy nhiên Transformer đã đề xuất một vài module nhỏ giúp tạo ra sự gia tăng đáng kể về hiệu suất của nó. Do đó, chúng tôi sẽ giới thiệu tổng quan về kiến trúc và mô tả chi tiết hơn các module đã cấu thành nên nó trong mục tiếp theo.
4.1.2 Mô hình Transformer
Như đã được đề cập ở trên, mô trình Transformer dựa trên kiến trúc mã hóa - giải mã (Encoder - Decoder). Tại đây, đầu vào của bộ mã hóa là một chuỗi (x1, ..., xn) và chuỗi đầu ra của bộ mã hóa sẽ là z = (z1, ..., zn). Sau đó chuỗi z vừa nhận được sẽ được đi qua bộ giải mã để cho ra chuỗi đầu ra(y1, ..., yn). Hình 4.2 thể hiện kiến trúc tổng quan của mô hình Transformer.
Hình 4.2: Tổng quan về kiến trúc của mô hình Transformer, bao gồm hai phần Encoder và Decoder.
4.1.2.1 Cơ chế tự tập trung
Cơ chế tự tập trung (Self-attention) có ý nghĩa tương tự như cơ chế tập trung đã được trình bày ở Tiểu mục 3.5.2. Biểu diễn toán học cho cơ chế Self-attention được biểu hiện qua Hình 4.3.
Hướng tiếp cận 43
Hình 4.3: Biểu diễn toán học của cơ chế Self-attention (nguồn [18])
Trong Hình 4.3, X là chuỗi đầu vào và ba giá trị Q (Query - Truy vấn), K (Key - Từ khóa), vàV (Value - Giá trị) sẽ được tính từX. Trong đó:
• Query vector: Chứa thông tin của từ được tìm kiếm và so sánh.
• Key vector: Biểu diễn thông tin các từ được so sánh với từ cần tìm kiếm ở trên.
• Value vector: Biểu diễn nội dung, ý nghĩa của các từ.
Có thể nhận xét rằng cơ chế Self-attention giống như cơ chế tìm kiếm. Với một từ cho trước, cơ chế này sẽ cho phép mô hình tìm kiếm trong các từ còn lại, từ nào “giống” để sau đó thông tin sẽ được mã hóa dựa trên tất cả các từ trên. Cụ thể hơn, quá trình tính toán các vector tập trung có thể được tóm tắt làm ba bước như sau:
• Bước 1: Tính ma trận query, key, value bằng cách khởi tạo ba ma trận trọng số query, key, value. Sau đó nhân đầu vào X với các ma trận trọng số này để tạo thành ba ma trận tương ứng.
• Bước 2: Tính trọng số tập trung (attention weights). Nhân 2 ma trận key, query vừa được tính ở trên với nhau với ý nghĩa là so sánh giữa câu query và key để học mối tương quan. Sau đó thì chuẩn hóa về đoạn [0−1] bằng hàm softmax. Kết quả bằng 1 có nghĩa là câu query giống với key, 0 có nghĩa là không giống.
• Bước 3: Tính đầu ra. Nhân trọng số tập trung với ma trận value. Điều này đồng nghĩa với việc biểu diễn một từ bằng trung bình có trọng số (attention weights) của ma trận value.
Khi cả Query, Key và Value đều được lấy ra từ cùng một chuỗi đầu vào X thì cơ chế này sẽ được gọi là Tự tập trung (Self-Attention).
Công thức của cơ chế tự tập trung:
AttentionQ,K,V =sof tmax
QKT √ dk V (4.1) trong đó dk là số chiều dài của vectorK.
Hướng tiếp cận 44
4.1.2.2 Cơ chế tự tập trung đa đầu
Mục đích của cơ chế tập trung đa đầu (Multi-Head Self-Attention) là nhằm kết hợp các kiến thức khám phá được bởi nhiều đầu (head) chứ không phải chỉ một như những cách làm trước đây (Hình 4.4).
Hình 4.4: Scaled Dot-Product Attention (trái). Multi-Head Attention gồm nhiều lớp tập trung chạy song song (phải) (nguồn [16])
Hình 4.5: Minh họa một multi-head self-attention gồm có hai đầu1
Hình 4.5 minh họa cho một multi-head self-attention gồm có hai đầu. Trong đó query là từ “it” còn đầu thứ nhất tập trung chủ yếu vào “the animal” và đầu thứ hai tập trung chủ yếu vào “tired”. Như vậy ngữ cảnh cuối cùng của cơ chế tự tập trung này sẽ tập trung vào cả ba từ “the”, “animal” và “tired” và sẽ cho một kết quả tốt hơn so với việc ta chỉ sử dụng một đầu duy nhất (toàn bộ câu) như bình thường.
Hướng tiếp cận 45
4.1.2.3 Masked Attention
Masked Attention vẫn là cơ chế tập trung đã được chúng tôi đề cập ở trên. Tuy nhiên trên thực tế, trong suốt quá trình kiểm tra chúng ta không biết trước toàn bộ nhãn của dữ liệu như ở quá trình huấn luyện. Tại bước kiểm tra chúng ta chỉ được biết kí tự bắt đầu và kí tự kết thúc, và không có cơ sở để so sánh đối với các kí tự chưa được dự đoán đến. Vì vậy điểm khác biệt của masked attention so với attention bình thường là che đi các kí ở tương lai chưa được mô hình dự đoán đến, để làm việc này thì cần nhân với một vector chứa các giá trị 0 hoặc 1. Masked attention được thể hiện ở Hình 4.6 và sự khác nhau giữa self-attention với masked self-attention được thể hiện ở Hình 4.7.
Hình 4.6: Attention mask
Hình 4.7: So sánh self-attention với masked self-attention2
4.1.2.4 Bộ mã hóa
Bộ mã hóa (Encoder) (Hình 4.8) của mô hình Transformer có thể bao gồm nhiều khối mã hóa tượng tự nhau. Mỗi khối mã hóa lại bao gồm hai thành phần chính là multi-head attention đã được trình bày ở Tiểu mục 4.1.2.2 và mạng lan truyền thuận. Ngoài ra còn có cả skip connection và lớp normalization, các kiến thức này sẽ được chúng tôi giải thích kỹ hơn ở phần kiến trúc chi tiết của mô hình tổng quát.
2
Hướng tiếp cận 46
Hình 4.8: Khối encoder của mô hình Transformer (nguồn [16])
4.1.2.5 Bộ giải mã
Kiến trúc của bộ giải mã (Decoder) (Hình 4.9) gần như giống với bộ mã hóa, ngoại trừ có thêm một khối multi-head attention nằm ở giữa và khối multi-head attention đầu tiên có áp dụng thêm một lớp mặt nạ (masked) vào. Đối với khối multi-head attention ở giữa theo bình thường sẽ nhận vào Q, K, V nhưng tại đây sẽ nhận K, V là đầu ra của lớp cuối cùng của bộ mã hóa. Kết quả đầu ra của bộ giải mã sẽ được đưa qua một lớp tuyến tính để chuyển về cùng số chiều của lớp nhúng (ouput embedding) trong bộ giải mã, và sau đó cho qua một lớp softmax để chia xác suất của chúng.
Hình 4.9: Khối decoder của mô hình Transformer (nguồn [16])
4.1.2.6 Tổng kết về mô hình Transformer
• Transformer là một mô hình dựa trên kiến trúc Encoder - Decoder với cơ chế Self-attention (multi-head attention).
• Tầng tập trung đa đầu gồm có n tầng tập trung song song.
• Mạng lan truyền thuận theo vị trí gồm hai tầng kết nối đầy đủ được áp dụng trên chiều cuối cùng.
Hướng tiếp cận 47
4.2 Chi tiết kiến trúc mô hình tổng quát4.2.1 CNN Embedding 4.2.1 CNN Embedding
Bước này chúng tôi sẽ tiến hành trích xuất đặc trưng từ ảnh ba chiều. Chúng tôi đã tái sử dụng kiến trúc CNN như là VGG đã được huấn luyện trên dữ liệu ImageNet và áp dụng transfer learning.
• Đầu vào: Ảnh ba chiều có kích thướcH×W, trong đóH vàW lần lượt là chiều cao và chiều rộng của ảnh. Hình ảnh đầu vào sẽ không bị giới hạn về kích thước do sau đó sẽ có bước tiền xử lý để hình phù hợp với kiến trúc mô hình.
• Đầu ra: Các vector đặc trưng (feature maps): F(row, col) =f for f ∈Rdi với di
là chiều của vector đặc trưng sau khi được trích xuất bởi mạng CNN, 1 ≤ H′, 1≤W′ với H′ và W′ là chiều cao và chiều rộng của ảnh sau khi được giảm mẫu (down sampled).
Hình 4.10: Ví dụ về trích xuất đặc trưng
4.2.2 Mã hóa vị trí
Trong suốt quá trình huấn luyện, bởi vì cơ chế Self-attention trong bộ giải mã không có bất kỳ kết nối lặp lại nào nên nó không quan tâm đến vị trí của mỗi ký tự dẫn đến mất thông tin của chuỗi. Do đó, sự tập trung không tính đến vị trí của các ký tự trong một từ hay trong một câu dẫn đến không có mối tương quan giữa các vị trí trong chuỗi, nên nó có thể mất đi tính tuần tự trong câu.
Để khắc phục nhược điểm đáng kể này, tác giả của mô hình Transformer đã đề xuất một phương pháp đó là mã hóa vị trí (Positional encoding), tức là nó sẽ thêm vào vector đầu ra của Embedding để tạo ra tính tuần tự cho câu nhưng vẫn sử dụng Self-attention được. Công thức của Position Encoding (PE) được thể hiện như sau:
P E(pos,2i) = sin pos 10000dmodel2i , P E(pos,2i+1)= cos pos 10000dmodel2i (4.2)
Hướng tiếp cận 48
trong đó dmodel là kích thước Embedding của đặc trưng ảnh và text, pos là vị trí của từ đó trong chuỗi vài là vị trí chiều.
Tiếp theo, mã hóa vị trí sẽ thêm vào chuỗi đầu vào một phần tử như sau:
X =X+P E (4.3) Đối với hình ảnh, chúng tôi đã đề xuất một Positional Encoding 2D giống như cách tiếp cận ở trên, xem mỗi hàng là một chuỗi. Khi đó, mỗi hàng có cùng một mã hóa vị trí. Do đó, thông tin vị trí của các pixel trong cùng một cột là giống nhau và giữa các cột khác nhau thì khác nhau.
4.2.3 Mạng lan truyền thuận theo vị trí
Mạng lan truyền thuận theo vị trí (position-wise feed-forward network) là một thành phần quan trọng của Transfomer. Đây là một kỹ thuật để nâng cao vector ngữ cảnh, vector đầu ra của lớp tập trung, là cho nó đi qua một mạng neuron lan truyền thuận (feed-forward network). Mạng này được áp dụng trên từng bước và khác nhau giữa các lớp.
Cuối cùng, mỗi bước ci ∈Rdmodel của đầu ra của multi-head attention thì cung cấp tiếp cho mạng neuron truyền lan truyền thuận:
F F N(ci) = max(0, ciW1+b1)W2+b2 (4.4) Trong đó W1, W2, b1, b2 được học trong suốt quá trình huấn luyện.
4.2.4 Lớp add và norm
Kết quả đầu ra của lớp Self-attention sẽ được đưa vào các lớp feed-forward như đã đề cập. Tuy nhiên, trong mô hình Transformer thì xen giữa chúng là những lớp add và norm, và đây chính là lớp normalize vector sử dụng thêm residual connection. Residual connection sẽ có nhiệm vụ cộng đầu vào với đầu ra ở những lớp trước đó thay vì dùng normalize bình thường kết quả đầu ra, để đưa vào lớp normalize nhằm có thể hạn chế những đặc trưng không mang nhiều ích lợi và tránh việc bị overfit. Nó cũng là cách để mô hình có thể tăng số lượng lớp mà không sợ bị vấn đề biến mất đạo hàm.
Công thức của các khối add và norm được định nghĩa như sau:
y=x+LayerN orm(x) (4.5)
4.2.5 Hàm mất mát và optimizer
Tại thời gian dự đoán của mô hình, chúng tôi sử dụng các tham số của mô hình đã được huấn luyện để dự đoán từng ký tự tại mỗi bước. Do đó, chúng tôi sử dụng
Hướng tiếp cận 49
hàm mất mát Cross-Entropy, công thức của hàm được định nghĩa như sau:
L Y , Y˜ =−1 T T X t |L| X c Ytclog ˜Ytc (4.6) Ví dụ Y˜ = [˜y1,˜y2]T, Y = [y1,y2]T, |L|= 3, biết rằng: ˜ Y = " 0.2 0.1 0.6 0.1 0.1 0.7 0.1 0.1 # , Y = " 0 0 1 0 0 1 0 0 #
Thì hàm mất mát sẽ được tính như sau:
L Y , Y˜ = − 12 2 X t=1 4 X c=1 Ytclog ˜Ytc = − 1
2(0×log(0.2) + 0×log(0.1) + 1×log(0.6) + 0×log(0.1) + 0×log(0.1) + 1×log(0.7) + 0×log(0.1) + 0×log(0.1))
= − 12(log(0.6) + log(0.7)) = (−0.2218−0.1549) = 0.1884
Để tối ưu hàm mất mát L( ˜Y , Y) chúng tôi sử dụng Adam [10] optimizer.
4.2.6 Label smoothing
Transformer là một mô hình có đến hàng triệu tham số, nên việc overfitting dễ dàng xảy ra. Vì vậy để hạn chế overfitting, chúng tôi có sử dụng kỹ thuật label smoothing. Kỹ thuật này có thể được hiểu như sau, thay vì mã hóa nhãn là một one-hot vector, thì lúc này chúng tôi sẽ thay đổi nhãn này bằng cách phân bố một phần nhỏ xác suất vào các trường hợp còn lại.
4.2.7 Giải mã ký tự
Trong quá trình dự đoán, hệ thống phải dự đoán các ký tự từng bước một. Tại bước này chúng tôi tiếp cận theo giải thuật tham lam (Greedy algorithm). Tham lam là một cách tiếp cận đơn giản, chỉ cần chọn kí tự có xác suất cao nhất trong ký tự ở mỗi bước, sau đó ghép nối với các bước trước đó để tạo ra chuỗi đầu ra. Quá trình này được lặp lại cho đến khi đạt độ dài tối đa của chuỗi hoặc gặp kí tự kết thúc. Khi đó, phân phối xác suất ký tự ở bước t, tức là y˜t, đầu ra tương ứng yˆt được tính bằng công thức (4.7).
ˆ
Hướng tiếp cận 50
4.3 Quá trình huấn luyện và kiểm tra mô hình
Trong phần này, chúng tôi tóm tắt kiến trúc và luồng dữ liệu trong giai đoạn huấn luyện và kiểm tra.
4.3.1 Huấn luyện
Trong quá trình huấn luyện, hệ thống sẽ lần lượt nhận vào từng cặp gồm hình và nhãn tương ứng của nó (Hình 4.11).
Mục đích của giai đoạn huấn luyện là tối ưu hóa các tham số của mô hình bằng hàm mất mát thông qua dữ liệu hình ảnh và nhãn của chúng đã được cung cấp. Sau đó, bộ tham số này được sử dụng để phục vụ cho quá trình kiểm tra trên dữ liệu mới.
Hình 4.11: Tổng quan quá trình huấn luyện của mô hình
4.3.2 Kiểm tra
Không giống với giai đoạn huấn luyện mô hình, nhãn của dữ liệu sẽ không được cung cấp trong suốt quá trình kiểm tra. Tại giai đoạn này, tham số của mô hình đã được học qua quá trình huấn luyện được sử dụng để dự đoán đầu ra với đầu vào là một ảnh chứa dữ liệu chữ (Hình 4.12).
Hướng tiếp cận 51
4.4 Hậu xử lý
Hậu xử lý (post-processing) là bước được thực hiện sau khi đã nhận được kết quả dự đoán từ mô hình. Từ kết quả dự đoán đã có, chúng ta sẽ tiến hành xử lý trực tiếp trên đó để đạt được kết quả mong muốn (Hình 4.13).