Minh họa Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
là bản dịch tiếng Việt của The Illustrated Transformer, Bản gốc được viết bởi Jay Alammar ( @JayAlammar ), hiện được sử dụng tại các lớp học tại MIT. Bản dịch được sửa đổi một phần không đáng kể để phù hợp hơn với bạn đọc.
Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
được đề xuất trong paper Attention is All You Need. Mã cài đặt TensorFlow của nó được công bố dưới dạng một thành phần của gói Tensor2Tensor. Nhóm NLP
NLP
Natural language processing - Xử lý ngôn ngữ tự nhiên là một lĩnh vực của khoa học máy tính và trí tuệ nhân tạo liên quan đến sự tương tác giữa máy tính và con người thông qua ngôn ngữ.
của Havard cũng tạo ra một bản hướng dẫn chú giải bài báo với PyTorch. Trong bài này, chúng ta sẽ cố gắng đơn giản hóa hết mức mọi thứ và giới thiệu từng khái niệm. Hi vọng rằng cách tiếp cận này sẽ giúp mọi người hiểu một cách dễ dàng hơn mà không cần đến các kiến thức chuyên sâu liên quan.
Kiến trúc tổng quan
Hãy nhìn mô hình như một hộp đen
Hộp đen
Trong khoa học, điện toán và kỹ thuật, hộp đen là một thiết bị, hệ thống hoặc đối tượng có thể được xem xét theo các yếu tố đầu vào và đầu ra, mà không quan tâm về hoạt động bên trong của nó.
. Trong một ứng dụng dịch máy, nó sẽ nhận vào một câu trong một ngôn ngữ và sinh ra bản dịch của nó trong một ngôn ngữ khác.
Nếu mở hộp đen
Hộp đen
Trong khoa học, điện toán và kỹ thuật, hộp đen là một thiết bị, hệ thống hoặc đối tượng có thể được xem xét theo các yếu tố đầu vào và đầu ra, mà không quan tâm về hoạt động bên trong của nó.
ra, ta sẽ thấy một thành phần mã hóa, và một thành phần giải mã, và một kết nối giữa chúng.
Thành phần mã hóa là một ngăn xếp encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
(các encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
xếp chồng lên nhau) (bài báo gốc sử dụng 6 encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
– đây không phải là một con số đặc biệt, ta hoàn toàn có thể thử nghiệm với các cấu hình khác). Thành phần giải mã là một ngăn xếp decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
với cùng số lượng.
Các encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
có kiến trúc giống nhau (nhưng không có cùng trọng số). Mỗi encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
lại được tạo nên bởi hai lớp con:
Đầu vào của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
đầu tiên sẽ đi qua một lớp self-attention – một lớp giúp cho encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
nhìn vào các từ khác khi đang mã hóa một từ cụ thể. Chúng ta sẽ phân tích kỹ self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
ở đoạn sau của bài viết.
Đầu ra của self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
được truyền vào một mạng nơ ron
Nơ ron
Một nơ ron hay tế bào thần kinh nhân tạo (còn được gọi là perceptron) là một hàm toán học. Nó là tổng của một hoặc nhiều yếu tố đầu vào được nhân với các trọng số. Giá trị này sau đó được chuyển đến một hàm phi tuyến tính, được gọi là hàm kích hoạt, để trở thành đầu ra của nơ ron.
truyền thẳng (feed-forward). Tất cả các vị trí khác nhau đều sử dụng chung một mạng truyền thẳng.
Decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
cũng có hai thành phần đó nhưng nằm giữa chúng là một lớp attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
giúp decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
tập trung vào phần quan trọng của câu đầu vào.
Minh họa các Tensor
Chúng ta đã nắm được các thành phần chính của mô hình, tiếp theo, hãy cùng nhìn vào chi tiết các ví dụ về véc tơ và tensor để hiểu rõ luồng thông tin giữa các thành phần để dịch từ đầu vào thành câu đầu ra hoàn chỉnh.
Như cách tiếp cận thông thường của NLP
NLP
Natural language processing - Xử lý ngôn ngữ tự nhiên là một lĩnh vực của khoa học máy tính và trí tuệ nhân tạo liên quan đến sự tương tác giữa máy tính và con người thông qua ngôn ngữ.
, đầu tiên, ta chuyển đầu vào thành các véc tơ sử dụng thuật toán embedding.
Mỗi từ được biểu diễn bằng một véc tơ có kích thước 512. Để tiện minh họa, ta sẽ biểu diễn mỗi véc tơ như hình trên.
Embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
chỉ được thực hiện ở encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
dưới cùng trong mạng. Mọi encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
đều nhận vào một danh sách các véc tơ có kích thước 512. Tại encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
dưới cùng, đầu vào của nó là word embedding
Word embedding
Word embedding là một trong những phương pháp biểu diễn phổ biến nhất của từ vựng làm đầu vào cho các mô hình học máy. Nó có khả năng nắm bắt ngữ cảnh của một từ trong tài liệu, sự tương đồng về ngữ nghĩa và cú pháp so với các từ khác. [Tìm hiểu thêm]
, nhưng các encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
khác, nó nhận vào đầu ra của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
ngay phía dưới nó. Kích thước của danh sách véc tơ là một siêu tham số
Siêu tham số
Trong học máy, siêu tham số là một tham số có giá trị được đặt trước khi quá trình học bắt đầu. Ngược lại, các giá trị của các tham số khác có được thông qua huấn luyện.
, ta có thể thiết đặt – thông thường, nó là độ dài của câu dài nhất trong dữ liệu huấn luyện.
Thông tin đi qua encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
bản chất là đi qua hai lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
và feed forward như đã mô tả phía trên.
Chúng ta bắt đầu quan sát được tính chất quan trọng của Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
, đó là thông tin của các từ ở vị trí khác nhau sẽ có các luồng riêng độc lập trong encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
. Tồn tại sự liên hệ và ràng buộc giữa các luồng này tại lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
. Mặc dù vậy, lớp feed-forward không có thông tin về sự ràng buộc đó. Tính chất này cho phép các luồng khác nhau có thể được tính song song khi đi qua lớp feed-forward.
Tiếp theo, hãy cùng theo dõi một ví dụ ngắn hơn để hiểu được điều gì xảy ra tại các lớp con của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
.
Bắt đầu mã hóa
Như đã đề cập trước đó, một encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
nhận vào một danh sách các véc tơ và xử lý chúng bằng cách truyền các véc tơ này qua lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
và lớp feed-forward. Đầu ra của nó được gửi tới encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
tiếp theo.
Self-Attention một cách trực quan
Giả sử câu sau là câu đầu vào mà chúng ta cần dịch:
”The animal didn't cross the street because it was too tired”
Từ “it” trong câu trên đại diện cho cái gì? “Con vật” (animal) hay “đường phố” (street)? Câu hỏi này đơn giản với con người nhưng không đơn giản với các thuật toán.
Khi mô hình xử lý từ “it”, self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
cho phép nó liên kết “it” với “animal”.
Khi mô hình xử lý từng từ (từng vị trí trong cầu đầu vào), self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
cho phép nó quan sát các vị trí khác trong câu để tìm ra ý tưởng cho việc mã hóa từ hiện tại tốt hơn.
Nếu bạn quen với các mạng RNN
RNN
Mạng nơ ron hồi quy (RNN) là một lớp các mạng nơ ron nhân tạo trong đó đầu ra từ bước trước được cung cấp làm đầu vào cho bước hiện tại.
, hãy nghĩ về cách RNN
RNN
Mạng nơ ron hồi quy (RNN) là một lớp các mạng nơ ron nhân tạo trong đó đầu ra từ bước trước được cung cấp làm đầu vào cho bước hiện tại.
duy trì một trạng thái ẩn cho phép nó kết hợp biểu diễn của từ/véc tơ trước đó với từ mà nó đang xử lý. Self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
là cách mà Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
sử dụng để duy trì hiểu biết về các từ khác có liên quan đến từ hiện tại.
Hãy ghé thăm Tensor2Tensor notebook, bạn có thể nạp một mô hình Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
, thử nghiệm với nó một cách trực quan.
Chi tiết về Self-Attention
Đầu tiên, hãy cùng xem cách tính self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
sử dụng các véc tơ, sau đó ta sẽ xem cách cài đặt thực tế sử dụng các ma trận.
Bước đầu tiên để tính self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
là tạo ra ba véc tơ từ mỗi véc tơ đầu vào của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
(trong trường hợp này là embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
của mỗi từ). Với mỗi từ, ta sẽ tạo một véc tơ truy vấn (Query), một vếc tơ khóa (Key), và một véc tơ giá trị (Value). Các véc tơ này được tạo ra bằng cách nhân embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
với ba ma trận được cập nhật trong quá trình huấn luyện.
Chú ý rằng, các véc tơ mới này có chiều nhỏ hơn véc tơ embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
. Chiều của chúng là 64, trong khi véc tơ embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
cũng như đầu vào và đầu ra của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
có chiều 512. Mặc dù chiều của chúng không nhất thiết phải nhỏ hơn, đây là một lựa chọn trong kiến trúc để việc tính toán multiheaded attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
(gần như) cố định.
Các véc tơ “truy vấn”, “khóa”, và “giá trị” là gì?
Đó là các khái niệm trừu tượng hữu ích cho việc tính toán và nghĩ về attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
. Khi bạn đã đọc cách mà attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
được tính, bạn sẽ hiểu vai trò của từng véc tơ trong bộ ba này.
Bước thứ hai để tính self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
là tính điểm. Giả sử chúng ta tính self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
cho từ đầu tiên trong ví dụ, “Thinking”. Ta cần tính điểm cho mỗi từ trong câu đầu vào so với từ này. Điểm sẽ quyết định cần chú ý bao nhiêu vào các phần khác của câu đầu vào khi ta đang mã hóa một từ cụ thể.
Điểm được tính bằng phép nhân vô hướng giữa véc tơ truy vấn với véc tơ khóa của từ mà ta đang tính điểm. Nếu ta tiến hành self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
cho từ ở vị trí thứ nhất, điểm đầu tiên sẽ là tích vô hướng của q1 và k1. Điểm thứ hai là tích vô hướng của q1 và k2.
Bước thứ ba và bước thứ tư là chia điểm cho 8 (căn bậc hai của số chiều của véc tơ khóa trong bài báo gốc – 64. Điều này giúp cho độ dốc ổn định hơn. Có thể có các giá trị khả dĩ khác, nhưng đây là giá trị mặc định), và truyền kết quả qua một phép softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
. Softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
chuẩn hóa các điểm để chúng là các số dương có tổng bằng 1.
Điểm softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
sẽ quyết định mỗi từ sẽ được thể hiện nhiều hay ít tại vị trí hiện tại. Rõ ràng là từ tại vị trí này sẽ có điểm softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
cao nhất, nhưng đôi khi, chú ý đến các từ khác là cần thiết để hiểu từ hiện tại.
Bước thứ năm là nhân mỗi véc tơ giá trị với điểm softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
(trước khi cộng chúng lại). Một cách trực giác, việc này bảo toàn giá trị của các từ mà ta muốn chú ý và bỏ qua các từ không liên quan (nhân chúng với một số rất nhỏ, ví dụ 0.001).
Bước thứ sáu là cộng các véc tơ giá trị đã được nhân trọng số. Kết quả chính là đầu ra của lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
tại vị trí hiện tại (từ đầu tiên trong ví dụ của ta).
Đến đây là kết thúc việc tính toán self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
. Véc tơ kết quả có thể được gửi tới mạng truyền thẳng. Trong cài đặt thực tế, việc tính toán này được thực hiện với ma trận để đảm bảo tốc độ. Ta sẽ tiếp tục theo dõi cách thực hiện việc này sau khi đã hiểu một cách trực quan cách tính trên mức từ.
Tính self-attention bằng ma trận
Bước đầu tiên là tính các ma trận Truy vấn, Khóa, và Giá trị. Ta thực hiện điều này bằng cách gộp các embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
vào ma trận X, và nhân chúng với ma trận trọng số sẽ được huấn luyện (WQ, WK, WV).
Cuối cùng, do ta đang thực hiện trên ma trận, ta có thể gộp bước từ 2 đến 6 trong một công thức duy nhất để tính đầu ra của lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
.
Quái vật nhiều đầu
Bài báo làm mịn lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
bằng cơ chế mang tên “multi-headed” (nhiều đầu) attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
. Cơ chế này cải thiện hiệu năng của lớp attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
theo hai khía cạnh:
Nó mở rộng khả năng của mô hình trong việc tập trung vào các vị trí khác nhau. Trong ví dụ phía trên, z1 chứa một số thông tin mã hóa từ các vị trí khác, nhưng bị lấn át bởi từ ở chính vị trí đó. Khi ta dịch câu “The animal didn’t cross the street because it was too tired”, ta muốn biết chính xác “it” dùng để chỉ cái gì.
Nó mang lại cho lớp attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
nhiều không gian con để biểu diễn. Như chúng ta sắp theo dõi, với multi-headed attention
Multi-headed attention
Là cơ chế sử dụng nhiều đầu self-attention để có thể học ra những tầng ý nghĩa khác nhau của các tổ hợp tạo bởi các từ trong câu.
chúng ta không chỉ có một mà nhiều bộ ma trận trọng số Query/Key/Value (Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
sử dụng tám đầu attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
, do đó ta sẽ có 8 bộ cho mỗi encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
/decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
). Mỗi bộ được khởi tạo ngẫu nhiên. Sau đó, kết thúc huấn luyện, mỗi bộ được dùng để phản ánh embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
đầu vào (hoặc véc tơ từ các encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
/decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
phía dưới) trong một không gian con riêng biệt.
Nếu ta thực hiện self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
như đã vạch ra bên trên, với 8 lần tính với các ma trận khác nhau, ta có 8 ma trận Z khác nhau.
Điều này mang lại một khó khăn nhỏ. Mạng truyền thẳng không phù hợp để nhận vào 8 ma trận, thay vào đó nó cần 1 ma trận duy nhất (mỗi từ một véc tơ). Do đó, ta cần biến đổi 8 ma trận về 1 ma trận duy nhất.
Vậy làm thế nào? Ta nối các ma trận lại và nhân chúng với một ma trận trọng số được bổ sung WO.
Như vậy là khá đầy đủ cho multi-headed self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
. Có khá nhiều ma trận. Ta sẽ gộp chúng vào cùng một chỗ.
Giờ ta đã chạm tới các đầu attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
, hãy cùng xem lại ví dụ trước đây để xem các đầu attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
tập trung vào vị trí nào khi mã hóa từ “it” trong câu ví dụ:
Nếu ta gộp hết các đầu attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
vào cùng một hình ảnh, mọi chuyện có thể trở nên khó giải thích hơn:
Biểu diễn thứ tự trong chuỗi với Positional Encoding
Một điều chưa được đề cập đến trong mô hình của chúng ta là cách xử lý thứ tự của các từ trong chuỗi đầu vào.
Để giải quyết vấn đề này, transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
thêm một véc tơ vào mỗi embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
đầu vào. Các véc tơ này tuân theo một mẫu cố định mà mô hình học được, giúp nó xác định vị trí của từng từ hoặc khoảng cách của các từ khác nhau trong chuỗi. Ý tưởng ở đây là việc thêm các giá trị đó sẽ cung cấp thông tin về khoảng cách giữa các véc tơ embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
khi chúng được phản ánh thông qua các véc tơ Q/K/V và thông qua phép lấy tích vô hướng.
Nếu giả định embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
có chiều bằng 4, các véc tơ mã hóa vị trí sẽ trông như sau:
Mẫu cố định này trông như thế nào?
Ở hình phía dưới, mỗi hàng ứng với mã hóa vị trí của một véc tơ. Hàng đầu tiên là véc tơ được cộng với véc tơ embedding
Embedding
Phương pháp chuyển đầu vào thành một biểu diễn khác dễ dàng xử lý hơn đối với máy tính (thường là các véc tơ).
của từ đầu tiên của chuỗi đầu vào. Mỗi hàng chứa 512 giá trị – mỗi giá trị trong khoảng 1 và -1. Chúng ta đưa chúng lên giải màu để có thể quan sát được mẫu này.
Công thức của positional encoding được mô tả trong bài báo (phần 3.5). Bạn có thể xem code sinh positional encoding tại get_timing_signal_1d(). Đây không phải phương pháp duy nhất để mã hóa vị trí. Mặc dù vậy, nó tạo ra lợi thế trong việc mở rộng cho các độ dài chưa biết (ví dụ trong trường hợp mô hình cần phải dịch một câu dài hơn so với các ví dụ trong tập huấn luyện).
Cập nhật Tháng 7 2020: Positional encoding phía trên là từ cài đặt Tranformer2Transformer của Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
. Phương pháp trong bài báo có một chút khác biệt. Hai tín hiệu không được nối với nhau mà được đan xen. Hình dưới đây minh họa cách mã hóa vị trí này. Đây là code để sinh ra nó:
Kết nối residual
Một chi tiết nữa trong kiến trúc của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
cần phải nhắc đến là trong mỗi lớp con (self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
, mạng truyền thẳng) của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
có kết nối residual xung quanh chúng, và sau đó là bước chuẩn hóa lớp.
Nếu trực quan hóa véc tơ và phép chuẩn hóa lớp liên quan đến self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
, nó sẽ trông như sau:
Điều này cũng được thực hiện ở decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
. Nếu ta coi Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
là 2 găn xếp encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
và decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
, nó sẽ trông như sau:
Phía Decoder
Ta đã đi qua đa số các khái niệm của phía encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
, và cũng nằm được một cách cơ bản các thành phần của decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
. Giờ hãy xem chúng hoạt động như thế nào.
Encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
bắt đầu bằng việc xử lý câu đầu vào. Kế quả của encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
trên cùng được chuyển thành một bộ các véc tơ attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
K và V. Chúng được sử dụng bởi mỗi decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
trong lớp “encoder-decoder
encoder-decoder
Kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được decoder sử dụng để sinh chuỗi đầu ra.
attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
” để giúp decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
tập trung vào phần quan trọng trong chuỗi đầu vào.
Các bước dưới đây được lặp lại cho đến khi gặp một ký tự đặc biệt đánh dấu việc decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
đã kết thúc việc giải mã. Đầu ra của mỗi bước được đưa vào decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
dưới cùng của bước tiếp theo và decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
trả về kết quả tương tự như những gì encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
thực hiện. Và cũng như những gì ta làm với đầu vào encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
, ta thực hiện nhúng từ và thêm positional encoding cho đầu vào của decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
để xác định vị trí của từng từ.
Các lớp self attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
của decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
hoạt động hơi khác so với tại encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
:
Trong decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
, lớp self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
chỉ cho phép chú ý lên các vị trí phía trước của chuỗi đầu ra. Điều này được thực hiện bằng cách che đi các vị trí phía sau thông qua masking (đặt chúng về -inf) trước bước softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
khi tính self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
.
Lớp “Encoder-Decoder
encoder-decoder
Kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được decoder sử dụng để sinh chuỗi đầu ra.
Attention
Attention
Có thể dịch nôm là Cơ chế chú ý. Đây là kỹ thuật dựa trên khái niệm về sự chú ý trong nhận thức của con người, kỹ thuật này giúp mô hình tập trung vào những yếu tố đặc biệt nhất định trong dữ liệu.
” hoạt động như self-attention
Self-attention
Là cơ chế attention liên quan đến các vị trí khác nhau của một chuỗi để tính toán biểu diễn của chuỗi đó.
nhiều đầu, ngoại trừ việc nó tạo các ma trận Q từ lớp phía dưới và lấy các ma trận K và V từ đầu ra của ngăn xếp encoder
encoder
Bộ mã hóa trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
.
Lớp Tuyến tính cuối cùng và Softmax
Ngăn xếp decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
đưa ra véc tơ của các số thực. Làm sao ta chuyển chúng thành các từ? Đó là việc của lớp tuyến tính cuối cùng và lớp Softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
.
Lớp tuyến tính là một mạng kết nối đầy đủ đơn giản, ánh xạ véc tơ được tạo bởi ngăn xếp decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
thành một véc tơ lớn hơn rất nhiều, được gọi là véc tơ logit.
Giả sử mô hình biết 10K từ tiếng Anh (tập từ vựng đầu ra của mô hình) được học từ bộ huấn luyện. Nó sẽ tạo ra véc tơ logit có độ rộng 10K ô – mỗi ô tương ứng với một điểm của một từ. Đó là cách chúng ta phiên dịch đầu ra của mô hình sau khi đi qua lớp tuyến tính.
Lớp softmax
Softmax
Trong toán học, hàm softmax, còn được gọi là hàm mũ mềm hoặc hàm mũ chuẩn hóa, là hàm nhận vào một vectơ của chứa K số thực và chuẩn hóa nó thành phân phối xác suất chứa K xác suất tỷ lệ thuận với lũy thừa của các số đầu vào.
sau đó chuyển các điểm này thành xác suất (các số dương có tổng bằng 1). Ô với xác suất cao nhất được chọn, và từ ứng với nó là đầu ra của bước hiện tại.
Tóm tắt quá trình huấn luyện
Chúng ta đã nắm được toàn bộ quá trình truyền thẳng thông qua một Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
đã được huấn luyện, ta cũng nên xem xét cách huấn luyện mô hình.
Khi huấn luyện, mô hình ban đầu cũng có luồng thông tin truyền thẳng y như đã nói phía trên. Nhưng vì huấn luyện trên một bộ dataset
Dataset
Bộ dữ liệu - Một tập các thông tin về các thực thể (thường có cùng kiểu, có liên quan đến nhau) là đối tượng của một bài toán hoặc nhiệm vụ học máy.
có nhãn, ta có thể so sánh đầu ra của nó với nhãn đúng của dữ liệu.
Để minh họa, hãy giả sử tập từ vựng đầu ra chỉ bao gồm 6 từ (“a”, “am”, “i”, “thanks”, “student”, và “<eos>” (viết tắt của ‘end of sentence’ – ‘kết thúc câu’)).
Khi đã định nghĩa tập từ vựng đầu ra, ta có thể sử dụng một véc tơ có độ rộng cố định để biểu diễn các từ trong đó, gọi là one-hot
One-hot
Trong các mạch kỹ thuật số và học máy, one-hot là một nhóm các bit trong đó các tổ hợp giá trị cho phép là các bit có một bit cao (1) và tất cả các bit khác thấp (0). Một khái niệm gần gũi với nó là one-cold, theo đó tất cả các bit là '1' ngoại trừ một bit '0'.
encoding. Ví dụ, ta có thể biểu diễn từ “am” với véc tơ như sau:
Sau phần tóm tắt này, hãy cùng thảo luận về hàm loss
Loss
Máy tính học thông qua hàm loss. Đây là một phương pháp đánh giá xem mô hình biểu diễn dữ liệu đã cho tốt đến đâu. Mô hình biểu diễn càng tốt thì giá trị loss càng nhỏ.
– độ đo để ta tối ưu mô hình trong quá trình huấn luyện.
Hàm Loss
Huấn luyện mô hình, giả sử như trong bước đầu tiên, ta huấn luyện nó dịch một ví dụ đơn giản, từ “merci” sang “thanks”.
Điều này nghĩa là gì? Nó có nghĩa là ta muốn phân bố xác suất chỉ ra từ “thanks”. Nhưng vì mô hình chưa được huấn luyện, điều này khó có thể xảy ra.
Chú ý rằng đây là một ví dụ đã được đơn giản hóa tối đa. Thực tế, ta sẽ sử dụng các câu có nhiều hơn một từ. Ví dụ đầu vào: “je suis étudiant” và đầu ra mong muốn: “i am a student”. Ta muốn mô hình có thể đưa ra được phân bố xác suất mà:
Mỗi phân bố xác suất biểu diễn bởi một véc tơ có chiều cố định là vocab_site (6 trong ví dụ, và 30K hay 50K trong thực tế)
Phân bố đầu tiên có xác suất cao nhất tại ô ứng với từ “i”
Phân bố thứ hai có xác suất cao nhất tại ô ứng với từ “am”
Cứ như vậy, cho đến khi phân bố thứ 5 chỉ ra ký tự ‘<end of sentence>’, nó cũng có một ô ứng với nó từ bộ từ vựng 10K phần tử.
Sau khi huấn luyện mô hình với một bộ dữ liệu đủ to, ta hi vọng sẽ có được phân bố xác suất như sau:
Với các từ đầu ra của decoder
decoder
Bộ giải mã trong kiến trúc sử dụng bộ mã hóa và bộ giải mã, thường thấy trong các mô hình seq2seq. Encoder mã hóa chuỗi đầu vào thành một biểu diễn gọi là "vectơ ngữ cảnh". Vectơ này được Decoder sử dụng để sinh chuỗi đầu ra.
, ta có thể sử dụng giải thuật tham lam hoặc beam search để có được câu đầu ra cuối cùng.
Hi vọng thông qua bài viết Minh họa Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
các bạn đã hiểu kỹ và hiểu rõ hơn về Transformer
Transformer
Transformer là mô hình học sâu được giới thiệu vào năm 2017, được sử dụng chủ yếu trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP).
và cách thức hoạt động của nó. Bài viết không thể hoàn thành nếu không có tư liệu quý giá của Jay Alammar (@JayAlammar). Hãy theo dõi tác giả để thể hiện sự trân trọng đối với công sức của bạn ấy.
Thank you very much Jay Alammar!
trituenhantao.io
Nếu bạn thấy bài viết hữu ích, hãy chia sẻ với những người quan tâm, và hãy thường xuyên truy cập website để có được những kiến thức mới, chuyên sâu về lĩnh vực!