Giới thiệu

Trước khi Google ra mắt bài báo về Transformers (Attention Is All You Need), đa số các tác vụ xử lý ngôn ngữ tự nhiên, nhất là dịch vật dụng (Machine Translation) sử dụng kiến trúc Recurrent Neural Networks (RNNs). Điểm yếu của cách thức này là rất khó bắt được sự dựa vào xa giữa những từ vào câu và vận tốc huấn luyện lờ đờ do phải xử lý đầu vào tuần tự. Transformers hiện ra để giải quyết và xử lý 2 vấn đề này; và những biến thể của chính nó như BERT, GPT-2 tạo thành state-of-the-art mới cho các tác vụ tương quan đến NLP. Các chúng ta có thể tham khao thêm nội dung bài viết BERT- bước đột phá mới trong công nghệ xử lý ngôn ngữ tự nhiên của Google của người sáng tác Phạm Hữu Quang để hiểu thêm về BERT nhé.

*

Mô hình Sequence-to-Sequence dấn input là một trong những sequence và trả lại output đầu ra cũng là 1 trong những sequence. Ví dụ bài toán Q&A, input là câu hỏi "how are you ?" với output là câu vấn đáp "I am good". Cách thức truyền thống áp dụng RNNs cho cả encoder (phần mã hóa input) với decoder (phần giải thuật input và đưa ra output tương ứng). Điểm yếu thứ nhất của RNNs là thời gian train khôn xiết chậm, đến mức người ta phải thực hiện phiên bạn dạng Truncated Backpropagation nhằm train nó. Mặc dù vậy, vận tốc train vẫn vô cùng chậm bởi phải áp dụng CPU, ko tận dụng được tính toán song tuy vậy trên GPU.

Bạn đang xem: Sion người máy biến hình

*

Điểm yếu trang bị hai là nó cách xử trí không xuất sắc với hồ hết câu nhiều năm do hiện tượng Gradient Vanishing/Exploding. Khi con số units càng lớn, gradient bớt dần ở các units cuối do công thức Đạo hàm chuỗi, dẫn cho mất thông tin/sự phụ thuộc vào xa giữa các units.

*

Ra đời năm 1991, Long-short Term Memory (LSTM) cell là 1 trong biến thể của RNNs nhằm giải quyết và xử lý vấn đề Gradient Vanishing bên trên RNNs. LSTM cell tất cả thêm một nhánh C được cho phép toàn bộ thông tin trải qua cell, giúp gia hạn thông tin cho gần như câu dài.

*

Có vẻ bọn họ đã xử lý phần làm sao vẫn đề Gradient Vanishing, tuy vậy LSTM lại phức hợp hơn RNNs khôn xiết nhiều, với hiển nhiên nó cũng train chậm trễ hơn RNN đáng kể

*

Vậy có cách như thế nào tận dụng khả năng giám sát song song của GPU nhằm tăng tốc độ train mang đến các quy mô ngôn ngữ, đồng thời khắc phục nhược điểm xử lý câu nhiều năm không? Transformers đó là câu vấn đáp

*

Kiến trúc Transformers cũng áp dụng 2 phần Encoder với Decoder khá tương tự RNNs. Điểm biệt lập là đầu vào được đẩy vào cùng một lúc. Đúng vậy đó, và một lúc; và sẽ không thể khái niệm timestep vào Transformers nữa. Vậy hiệ tượng nào đã sửa chữa cho sự "recurrent" của RNNs? Đó chính là Self-Attention, và này cũng là lý do tên paper là "Attention Is All You Need" (fun fact: thương hiệu này đặt theo tập phim "Love is all you need"

*

2. Positional Encoding

Word embeddings phần nào đến giúp ta màn biểu diễn ngữ nghĩa của một từ, tuy nhiên cùng một từ nghỉ ngơi vị trí không giống nhau của câu lại mang chân thành và ý nghĩa khác nhau. Đó là nguyên nhân Transformers có thêm 1 phần Positional Encoding nhằm inject thêm tin tức về vị trí của một từ

PE(pos,2i)=sin⁡(pos/100002i/dmodel)PE(pos,2i+1)=cos⁡(pos/100002i/dmodel)eginalignedP E_(p o s, 2 i) &=sin left(p o s / 10000^2 i / d_mathrmmodel ight) \P E_(p o s, 2 i+1) &=cos left(p o s / 10000^2 i / d_mathrmmodel ight)endalignedPE(pos,2i)​PE(pos,2i+1)​​=sin(pos/100002i/dmodel​)=cos(pos/100002i/dmodel​)​

Trong kia pospospos là vị trí của từ trong câu, PE là giá bán trị phần tử thứ iii vào embeddings bao gồm độ nhiều năm dmodeld_mathrmmodeldmodel​. Kế tiếp ta cộng PE vector và Embedding vector:

*

3. Self-Attention

Self-Attention là hiệ tượng giúp Transformers "hiểu" được sự liên quan giữa các từ trong một câu. Ví như từ "kicked" trong câu "I kicked the ball" (tôi đang đá quả bóng) liên quan ra sao đến những từ khác? ví dụ nó tương quan mật thiết tới từ "I" (chủ ngữ), "kicked" là thiết yếu nó lên sẽ luôn luôn "liên quan mạnh" với "ball" (vị ngữ). Ngoài ra từ "the" là giới từ phải sự liên kết với từ bỏ "kicked" gần như không có. Vậy Self-Attention trích xuất hầu như sự "liên quan" này như vậy nào?

*

Quay trở lại với loài kiến trúc toàn diện và tổng thể ở trên, các chúng ta cũng có thể thấy đầu vào của những module Multi-head Attention (bản hóa học là Self-Attention) tất cả 3 mũi tên, đó chính là 3 vectors Querys (Q), Keys (K) cùng Values (V). Từ 3 vectors này, ta công thêm vector attention Z cho một từ theo cách làm sau:

Z=softmax⁡(Q⋅KTDimension of vector Q,K or V)⋅VZ=operatornamesoftmaxleft(fracQ cdot K^TsqrtD i m e n s i o n ~ o f ~ v e c t o r ~ Q, K ext or V ight) cdot VZ=softmax(Dimension of vector ​Q,K or VQ⋅KT​)⋅V

Công thức này khá đối chọi giản, nó được triển khai như sau. Đầu tiên, để có được 3 vectors Q, K, V, input đầu vào embeddings được nhân cùng với 3 ma trận trọng số tương xứng (được tune trong quy trình huấn luyện) WQ, WK, WV.

*

Lúc này, vector K đóng vai trò như một khóa thay mặt cho từ, và Q vẫn truy vấn đến các vector K của những từ vào câu bằng phương pháp nhân chập với các vector này. Mục tiêu của phép nhân chập để giám sát độ liên quan giữa các từ với nhau. Theo đó, 2 từ liên quan đến nhau sẽ sở hữu được "Score" to và ngược lại.

Bước thứ 2 là cách "Scale", đơn giản và dễ dàng chỉ là phân tách "Score" đến căn bậc nhì của số chiều của Q/K/V (trong hình chia 8 vì Q/K/V là 64-D vectors). Việc này giúp cho giá trị "Score" không nhờ vào vào độ dài của vector Q/K/V

Bước đồ vật 3 là softmax các công dụng vừa rồi để đạt được một phân bố phần trăm trên các từ.

Bước sản phẩm công nghệ 4 ta nhân phân bố phần trăm đó cùng với vector V để sa thải những tự không cần thiết (xác suất nhỏ) với giữ lại phần đông từ quan trọng đặc biệt (xác suất lớn).

Xem thêm:

Ở cách cuối cùng, các vectors V (đã được nhân cùng với softmax output) cùng lại với nhau, tạo thành vector attention Z cho 1 từ. Lặp lại quy trình trên cho toàn bộ các từ bỏ ta được ma trận attention cho 1 câu.

*

4. Multi-head Attention

Vấn đề của Self-attention là attention của một từ sẽ luôn "chú ý" vào chủ yếu nó. Điều này rất phù hợp thôi vì cụ thể "nó" phải liên quan đến "nó" các nhất

*

Nhưng chúng ta không mong ước điều này, mẫu ta muốn là sự việc tương tác giữa những từ KHÁC NHAU trong câu. Tác giả đã ra mắt một phiên bạn dạng nâng cấp cho hơn của Self-attention là Multi-head attention. Ý tưởng rất đơn giản dễ dàng là cụ vì áp dụng 1 Self-attention (1 head) thì ta sử dụng nhiều Attention khác nhau (multi-head) cùng biết đâu từng Attention sẽ chăm chú đến 1 phần khác nhau vào câu

*

5. Residuals

Các bạn cũng có thể thấy trong mô hình tổng quan sống trên, từng sub-layer đều là một trong residual block. Cũng như residual blocks vào Computer Vision, skip connections vào Transformers cho phép thông tin đi qua sub-layer trực tiếp. Thông tin này (x) được cộng với attention (z) của nó và tiến hành Layer Normalization.

*

6. Feed Forward

Sau lúc được Normalize, các vectors zzz được gửi qua mạng fully connected trước khi đẩy qua Decoder. Vì những vectors này không dựa vào vào nhau bắt buộc ta hoàn toàn có thể tận dụng được đo lường và thống kê song song cho tất cả câu.

*

Decoder

1. Masked Multi-head Attention

Giả sử bạn muốn Transformers thực hiện bài toán English-France translation, thì các bước của Decoder là lời giải thông tin từ bỏ Encoder và hiện ra từng từ tiếng Pháp dựa vào NHỮNG TỪ TRƯỚC ĐÓ. Vậy nên, trường hợp ta thực hiện Multi-head attention bên trên cả câu như nghỉ ngơi Encoder, Decoder đã "thấy" luôn luôn từ tiếp sau mà nó cần dịch. Để phòng điều đó, khi Decoder dịch đến từ thứ iii, phần sau của câu tiếng Pháp sẽ bị che lại (masked) cùng Decoder chỉ được phép "nhìn" thấy phần nó sẽ dịch trước đó.

*

2. Quy trình decode

Quá trình decode về cơ bạn dạng là tương đương với encode, chỉ không giống là Decoder decode từng xuất phát điểm từ 1 và input của Decoder (câu tiếng Pháp) bị masked. Sau thời điểm masked input đưa qua sub-layer #1 của Decoder, nó sẽ không còn nhân cùng với 3 ma trận trọng số để tạo thành Q, K, V nữa mà chỉ nhân với cùng một ma trận trọng số WQ. K và V được rước từ Encoder cùng rất Q từ bỏ Masked multi-head attention đưa vào sub-layer #2 cùng #3 tương tự như như Encoder. Cuối cùng, các vector được đẩy vào lớp Linear (là 1 mạng Fully Connected) theo sau bươi Softmax làm cho ra xác suất của trường đoản cú tiếp theo.

Hai hình sau đây mô tả trực quan quy trình Transformers encode cùng decode

Encoding:

*

Decoding:

*

Kết luận

Trên trên đây mình đã ra mắt với các bạn về quy mô Transformers - một mô hình mà bản thân thấy rất lôi cuốn và đáng để kiếm tìm hiểu. Hiện thời Transformers, những biến thể của nó, với pretrained models đã có tích đúng theo trong tương đối nhiều packages cung ứng tensorflow, keras với pytorch. Tuy nhiên nếu bạn muốn implement từ đầu thì có thể tham khảo hướng dẫn rất chi tiết Transformer mã sản phẩm for language understanding của tensorflow.