![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Vào năm 2017, một nhóm các nhà nghiên cứu (từ Google và Đại học Toronto) đã giới thiệu một cách mới để xử lý các tác vụ xử lý ngôn ngữ tự nhiên (NLP). Bài báo mang tính cách mạng của họ “ Attention is All You Need ” đã trình bày mô hình Transformer, một kiến trúc từ đó đã trở thành nền tảng của nhiều hệ thống AI tiên tiến ngày nay. Hiệu suất, khả năng mở rộng và tính linh hoạt của mô hình đã dẫn đến việc áp dụng rộng rãi, tạo thành xương sống của các mô hình tiên tiến như BERT (Bidirectional Encoder Representations) và GPT (Generative Pre-trained Transformers).
Trước mô hình Transformer, hầu hết các mô hình AI xử lý ngôn ngữ đều dựa nhiều vào một loại mạng nơ-ron gọi là Mạng nơ-ron hồi quy (RNN) hoặc phiên bản cải tiến của nó, Mạng bộ nhớ dài hạn ngắn hạn (LSTM). Đặc biệt, các vấn đề như mô hình hóa ngôn ngữ và dịch máy (còn gọi là chuyển đổi chuỗi). Các mô hình này xử lý các từ theo trình tự, từng từ một, từ trái sang phải (hoặc ngược lại). Mặc dù cách tiếp cận này có ý nghĩa vì các từ trong câu thường phụ thuộc vào các từ trước đó, nhưng nó có một số nhược điểm đáng kể:
Ý tưởng chính: Chú ý đến kiến trúc
Ý tưởng cốt lõi đằng sau mô hình Transformer là thứ gọi là "sự chú ý". Nói một cách đơn giản, sự chú ý giúp mô hình tập trung vào các phần cụ thể của câu khi cố gắng hiểu ý nghĩa/bối cảnh của một từ. Hãy xem xét câu "Chiếc xe đỗ trong gara có màu xanh lam". Khi bạn nghĩ về từ "blue", bạn tự nhiên tập trung vào từ "car" trước đó trong câu vì nó cho bạn biết màu xanh lam là gì. Các mô hình dịch máy sẽ gặp khó khăn trong việc xác định xem "màu xanh lam" ám chỉ đến xe hơi hay gara. Đây chính là chức năng của self-attention - chức năng này giúp mô hình tập trung vào các từ có liên quan, bất kể chúng ở đâu trong câu.
Lưu ý rằng sự chú ý không phải là một khái niệm mới và đã được sử dụng song song với RNN. Transformer là mô hình chuyển đổi đầu tiên chỉ dựa vào sự chú ý, do đó loại bỏ nhu cầu về mạng nơ-ron. Điều này mang lại những lợi thế sau:
Như bạn có thể thấy, mô hình mới không chỉ loại bỏ mọi nhược điểm của mạng nơ-ron mà còn cải thiện hiệu suất dịch máy nữa!
Vì bài báo gốc có thể hơi khó hiểu, sau đây là lời giải thích đơn giản hơn về kiến trúc mô hình được mô tả trong bài báo.
Bộ mã hóa và bộ giải mã : Bộ chuyển đổi bao gồm một bộ mã hóa (bên trái) và một bộ giải mã (bên phải). Bộ mã hóa chuyển đổi chuỗi đầu vào (như một câu) thành một tập hợp các biểu diễn liên tục, trong khi bộ giải mã chuyển đổi các biểu diễn này thành một chuỗi đầu ra (như một bản dịch). Đối với mỗi bộ mã hóa, từ dưới lên trên, sau đây là các thành phần cốt lõi của mô hình được giải thích bằng một ví dụ.
Xử lý câu đầu vào trong bộ mã hóa
Đầu vào : Văn bản bạn muốn dịch. Ví dụ: "Chiếc xe đỗ trong gara có màu xanh lam".
Nhúng đầu vào : Chuyển đổi các từ thành các biểu diễn số có độ dài cố định (vectơ) được gọi là nhúng. Các nhúng này nắm bắt ý nghĩa ngữ nghĩa của các từ theo cách mà mô hình có thể hiểu được. Từ ví dụ của chúng tôi:
"The" -> [0,9, -0,4, 0,2, ...]
"xe hơi" -> [0,5, 0,1, -0,7, ...]
"đó" -> [-0,8, 0,2, 0,8, ...]
và tương tự với mỗi từ trong câu trên.
Mã hóa vị trí : Vì mô hình xử lý các nhúng đầu vào không có thứ tự nào nên cần có cách để hiểu thứ tự các từ trong câu. Mã hóa vị trí thêm thông tin này về vị trí của từng từ trong chuỗi vào nhúng của nó.
"The" ở vị trí 1 có thể được điều chỉnh thành [0,9 + P1, -0,4 + P1, 0,2 + P1, ...], trong đó P1 biểu thị mã hóa vị trí cho vị trí đầu tiên, do đó tạo ra một nhúng mới duy nhất cho vị trí P1.
Cơ chế tự chú ý : Như đã mô tả trước đó, điều này cho phép mô hình tập trung vào các từ khác nhau trong một câu tùy thuộc vào ngữ cảnh. Đối với mỗi từ, cơ chế tự chú ý sẽ tính toán điểm số biểu thị mức độ tập trung nên dành cho các từ khác khi mã hóa từ hiện tại.
Đối với từ “car”, sự chú ý có thể xác định rằng “parked”, “gara” và “blue” đặc biệt liên quan đến việc hiểu ngữ cảnh của nó.
Sự chú ý nhiều đầu : Phần mới của mô hình máy biến áp. Sự chú ý nhiều đầu chỉ đơn giản là nhiều lớp/hoạt động tự chú ý chạy song song và nối tiếp nhau theo tuyến tính.
Ví dụ, một câu có thể tập trung vào chủ ngữ chính (“car”) và đặc điểm của nó (“blue”), trong khi câu khác có thể tập trung vào mệnh đề quan hệ (“that was parked in the garage”).
Mô-đun chú ý đa đầu cung cấp cho mô hình khả năng hiểu rằng "màu xanh" có liên quan nhiều hơn đến ô tô so với gara.
Mạng nơ-ron truyền thẳng : Sau lớp tự chú ý, đầu ra được truyền qua mạng nơ-ron truyền thẳng được áp dụng cho từng vị trí riêng biệt và giống hệt nhau (một lần nữa, có thể chạy song song!). Mạng này bao gồm hai phép biến đổi tuyến tính với một kích hoạt ReLU ở giữa.
Add & Norm : Các kết nối còn lại (add) được sử dụng để thêm đầu vào của một lớp vào đầu ra của nó, sau đó được chuẩn hóa (norm). Điều này giúp đào tạo các mạng sâu bằng cách ngăn chặn các gradient biến mất hoặc bùng nổ.
Tạo bản dịch trong bộ giải mã
Trong NLP, thông thường người ta sẽ biểu thị phần bắt đầu của mã thông báo bắt đầu chuỗi bằng ký tự đặc biệt <SOS> và phần kết thúc của chuỗi bằng <EOS>. Bộ giải mã lấy dữ liệu đầu vào đã xử lý từ bộ mã hóa và tạo ra bản dịch tiếng Pháp "La voiture qui était garée dans le garage est bleue." Đây là cách phần này hoạt động:
Đầu vào cho Bộ giải mã : Bộ giải mã bắt đầu bằng biểu diễn được mã hóa của câu tiếng Anh từ bộ mã hóa. Nếu bạn để ý, bộ giải mã cũng lấy đầu ra của chính nó làm đầu vào. Vì nó sẽ không có đầu vào cho từ đầu tiên, chúng ta chèn mã thông báo <SOS> vào đầu (do đó dịch chuyển sang phải) và xóa từ cuối cùng. Chuỗi dịch chuyển này là thứ được đưa vào bộ giải mã.
Tự chú ý có mặt nạ : Trong bộ giải mã, cơ chế tự chú ý có mặt nạ đảm bảo rằng mỗi từ trong chuỗi đầu ra chỉ có thể chú ý đến các từ trước nó. Điều này ngăn mô hình nhìn về phía trước và đảm bảo nó tạo ra bản dịch từng từ một từ một từ từ trái sang phải.
Ví dụ, khi bộ giải mã chuẩn bị tạo ra từ “La” (từ đầu tiên trong tiếng Pháp), nó chỉ biết ngữ cảnh từ <SOS> chứ không biết các từ tương lai như “Voiture”.
Mạng nơ-ron truyền thẳng : Bộ giải mã áp dụng một mạng nơ-ron truyền thẳng khác để xử lý thông tin này thêm nữa, tinh chỉnh bản dịch từng bước.
Trong bộ giải mã, sau khi xử lý câu đầu vào thông qua nhiều lớp chú ý tự che giấu, chú ý mã hóa-giải mã và mạng lưới truyền thẳng, chúng ta thu được một chuỗi các biểu diễn liên tục (vectơ của các số thực) cho mỗi vị trí trong câu mục tiêu (trong trường hợp của chúng ta là tiếng Pháp). Các biểu diễn này cần được chuyển đổi thành các từ thực tế. Đây là nơi lớp tuyến tính và softmax cuối cùng phát huy tác dụng.
Bộ giải mã về cơ bản thực hiện điều này:
Bằng cách kết hợp các bước này, Transformer có thể hiểu toàn bộ cấu trúc và ý nghĩa của câu hiệu quả hơn các mô hình trước đây. Cơ chế tự chú ý và xử lý song song cho phép Transformer nắm bắt hiệu quả các sắc thái và cấu trúc của cả ngôn ngữ nguồn và ngôn ngữ đích, giúp nó có khả năng thực hiện các tác vụ như dịch máy.