Transformer and Its Applications
1. Normalization Techniques
Overview
2. Review transformer.
Word embedding using neural network
[!NOTE] Word Embedding là kỹ thuật biểu diễn từ ngữ dưới dạng vector số thực, giúp máy học hiểu được mối quan hệ ngữ nghĩa giữa các từ. Các mạng nơ-ron có thể học các embedding này thông qua các kiến trúc như Word2Vec, FastText hoặc các mô hình hiện đại hơn như BERT.
Positional encoding

Dựa vào binary representation của các bit ta có thể thấy được. các số 0 với 1 theo các dimeson khác nhau sẽ có tần số lặp lại khác nhau.
Trên ý tưởng đó người ta ứng dụng vào positional encoding.
Sinusoidal Positional Encoding
Mỗi line đại diện cho một chiều, tương đương để theo dõi một cột (vị trí trong bit) trỏng bảng bit table được đề cập ở phần trước. Dim 0 có dao động nhanh, thay đổi theo mọi vị trí. Điều này giống y hệt với bit ngoài cùng trong nhị phân, lật theo mỗi lần đếm. Dim 21 (đường màu cam) thay đổi chậm hơn nhiều, tương tự như cách các bit bên trái trong biểu diễn nhị phân của chúng ta lật ít thường xuyên hơn.
Simulation:
[!NOTE]
pos
,i
phải nhỏ hơn L/2.d
là số chiều của vector.
- Kết hợp position với word embedding:
3. Transformer Encoder: Review.
Attention Motivation
Trong này từ
it
có mối quan hệ với từ pizza
bởi vì it
thay thế cho từ pizza
trong câu. Và từ it
sẽ có mối quan hệ kém hơn với các từ như oven
, tasted
. Như các bài trước chúng ta sẽ tách thành các token
và sẽ embedding
thành các vector.
Trọng số của từ pizza
với các từ được tính bằng dot product
giữa vector của từ pizza
và các từ còn lại, để tốt nhất chúng ta phải normalization
.
4. Transformer Decoder: Review.
Overview transformer decoder
Cách hoạt động của transformer decoder
Giả sử bên decoder chúng ta bật [EOS]
lên 1 và các từ còn lại là 0. Chúng ta sẽ dự đoán từ tiếp theo dựa vào từ trước đó. Để dự đoán từ tiếp theo chúng ta sẽ sử dụng attention
giữa từ trước đó và các từ còn lại.
Ouput ta cho qua một lớp mạng để dự đoán từ tiếp theo được dự đoán.
5. Transformer for Text Classification
Requirements
6. Transformer for Time-Series
Requirements
Informer
7. Transformer for Image Classification
Vision Transformer
Mặc dù Transformer là một kiến trúc cực kỳ mạnh mẽ và tiềm năng, song thời điểm nghiên cứu ban đầu chỉ thực hiện trên dữ liệu văn bản. Điều này đã thôi thúc các nhà nghiên cứu tìm cách áp dụng Transformer cho các kiểu dữ liệu khác, đặc biệt là dữ liệu hình ảnh. Trong số các công trình đã được thực hiện, Vision Transformer (ViT) là một điểm nổi bật.
Ý tưởng cốt lõi của ViT là chuyển đổi hình ảnh thành một chuỗi các vùng ảnh nhỏ, gọi là “patch”, tương tự như cách một câu được chia thành các từ trong ngôn ngữ. Sau khi chia hình ảnh thành các patch
, mỗi patch
được chuyển đổi tuyến tính (linear projection)
thành một vector biểu diễn (embedding)
, tương tự như cách các token embedding
được sử dụng trong Transformer gốc. Các vector này sau đó được kết hợp với thông tin vị trí (positional encoding)
để tạo thành một chuỗi các embedding
, đóng vai trò là đầu vào cho Transformer.
Khi đã có chuỗi các vector embedding
này, ViT
áp dụng gần như tương tự các bước tính toán như trong encoder
của Transformer. Cụ thể, ViT sử dụng cơ chế self-attention để tính toán mối liên hệ giữa các patch trong toàn bộ bức ảnh, cho phép mô hình hiểu được các đặc trưng không gian và mối quan hệ giữa các vùng khác nhau trong hình ảnh. Quá trình này giúp ViT tận dụng sức mạnh tính toán song song và khả năng học các mối quan hệ dài hạn của Transformer, đồng thời thích ứng hoàn hảo với dữ liệu hình ảnh. Với cách tiếp cận này, ViT không chỉ kế thừa sức mạnh từ Transformer mà còn mở ra một hướng đi mới trong xử lý hình ảnh, nơi dữ liệu hình ảnh được biểu diễn và phân tích theo cách giống như dữ liệu ngôn ngữ. Đây chính là bước tiến quan trọng, đặt nền móng cho việc ứng dụng Transformer vào các lĩnh vực thị giác máy tính.
Để hiểu rõ cách hoạt động của ViT, chúng ta sẽ tìm hiểu từng bước xử lý mà ViT cần thực hiện trong một lần forward dữ liệu đầu vào để lấy kết quả dự đoán. Theo đó, với pipeline xử lý tổng quát của ViT, như được minh họa trong hình trên, chúng ta sẽ khám phá cách xử lý dữ liệu cho một ảnh và một batch ảnh.
Cách hoạt động cụ thể
- Bước 1:
Trong bước đầu tiên của pipeline Vision Transformer (ViT), chúng ta cần định nghĩa rõ cấu trúc của ảnh đầu vào và cách chia ảnh thành các patch nhỏ. Một ảnh đơn sẽ được biểu diễn dưới dạng tensor với kích thước $H * W * C$, trong đó H, W, C lần lượt là chiều cao, chiều rộng và số kênh (channel).
Đối với batch ảnh, tensor sẽ có kích thước $B * H * W * C$, với B là số lượng ảnh trong batch. Kích thước patch được quy định là $P * P$, và tổng số lượng patch N trên mỗi ảnh được tính theo công thức.
$$N = \frac{H * W}{P * P}$$
Như vậy, $\textbf{bước đầu tiên}$ sẽ nhận đầu vào (input) là một ảnh hoặc một batch ảnh. Với đầu vào là một ảnh đơn, ảnh được biểu diễn dưới dạng tensor $\mathbf{I} \in \mathbb{R}^{H \times W \times C}$, trong đó $H, W,$ và $C$ lần lượt là chiều cao, chiều rộng và số kênh (channel) của ảnh. Đối với batch ảnh, đầu vào được biểu diễn dưới dạng tensor $\mathbf{I}_{\text{batch}} \in \mathbb{R}^{B \times H \times W \times C}$, với $B$ là số lượng ảnh trong batch.
Kết quả đầu ra (output) của bước này là ảnh hoặc batch ảnh đã được xử lý, chia thành các patch nhỏ ở bước tiếp theo.
- Bước 2:
Tiếp tục với việc chia tensor đầu vào $\mathbf{I}$ thành $N$ patch nhỏ. Mỗi patch có kích thước $P \times P \times C$, và sau đó được làm phẳng (flatten) để chuyển thành một vector với chiều dài $P^2 C$. Quá trình này giúp tổ chức lại thông tin từ ảnh gốc dưới dạng các vector nhỏ hơn, chuẩn bị cho các bước xử lý tiếp theo. Đầu ra cho một ảnh được biểu diễn như sau:
$$ \mathbf{X}_{\text{patch}} \in \mathbb{R}^{N \times (P^2C)}. $$
Đối với batch ảnh $\mathbf{I}_{\text{batch}}$, quá trình này được áp dụng cho từng ảnh trong batch. Sau khi chia, batch ảnh được sắp xếp lại thành một tensor với kích thước:
$$ \mathbf{X}_{\text{patch}} \in \mathbb{R}^{B \times N \times (P^2C)}. $$
- Bước 3:
Liên quan đến quá trình Patch Embedding, trong đó các patch được ánh xạ từ không gian $\mathbb{R}^{P^2C}$ sang không gian $\mathbb{R}^{D}$ bằng cách sử dụng một tầng tuyến tính (Linear Layer). Quá trình này được thực hiện thông qua công thức chính, với $W_E \in \mathbb{R}^{(P^2C) \times D}$ là trọng số và $b_E \in \mathbb{R}^{D}$ là bias của tầng embedding:
$$ \mathbf{E} = \mathbf{X}_{\text{patch}} \cdot W_E + b_E. $$
Đối với batch ảnh, công thức trên được áp dụng cho toàn bộ batch, cụ thể:
$$ \mathbf{E}{\text{batch}} = \mathbf{X}{\text{patch_batch}} \cdot W_E + b_E. $$
Đầu vào của bước này bao gồm tensor $\mathbf{X}{\mathrm{patch}} \in \mathbb{R}^{N \times (P^2C)}$ đối với một ảnh và tensor $\mathbf{X}{\mathrm{patch_batch}} \in \mathbb{R}^{B \times N \times (P^2C)}$ đối với batch ảnh. Kết quả đầu ra là tensor $\mathbf{E} \in \mathbb{R}^{N \times D}$ cho một ảnh và tensor $\mathbf{E}_{\mathrm{batch}} \in \mathbb{R}^{B \times N \times D}$ cho batch ảnh. Quá trình này đảm bảo rằng các patch đã được ánh xạ sang không gian mới để phù hợp với các bước tiếp theo trong pipeline Vision Transformer.