MinAI - Về trang chủ
Lý thuyết
15/2150 phút
Đang tải...

Attention Mechanism

Tìm hiểu Attention - cơ chế giúp AI 'chú ý' vào những phần quan trọng, nền tảng của ChatGPT

0

🎯 Mục tiêu bài học

TB5 min

Sau bài này, bạn sẽ:

✅ Hiểu Attention là gì và tại sao quan trọng

✅ Hiểu Query, Key, Value qua ví dụ thực tế

✅ Biết Self-Attention hoạt động như thế nào

✅ Hiểu Multi-Head Attention

Đây là nền tảng của ChatGPT, BERT và tất cả AI hiện đại!

Ôn lại bài trước

Bài trước (LSTM) ta đã học:

  • RNN có vấn đề với câu dài (quên thông tin xa)
  • LSTM cải thiện bằng cách có "bộ nhớ"
  • Nhưng vẫn xử lý tuần tự từ trái sang phải

Vấn đề: Xử lý tuần tự = chậm, không tận dụng được GPU song song

Giải pháp: Attention - có thể "nhìn" mọi nơi cùng lúc!

1

🎯 Attention là gì?

TB5 min

Analogy: Đọc sách

Khi bạn đọc câu: "Con mèo ngồi trên thảm vì mệt"

Để hiểu "nó" là gì, bạn phải nhìn lại các từ trước.

Bạn không đọc lại từ đầu, mà chú ý vào "con mèo" → Đó là Attention!

Định nghĩa đơn giản

Attention = Khả năng chú ý vào những phần quan trọng của input.

So sánh với RNN/LSTM

RNN/LSTMAttention
Cách xử lýTuần tự (từ trái sang phải)Song song (nhìn tất cả cùng lúc)
Câu dàiDễ quên thông tin xaNhớ được mọi thứ
Tốc độChậm (không song song)Nhanh (song song trên GPU)
Ví dụĐọc sách từng trangNhìn bao quát cả trang

Minh họa

RNN/LSTM vs AttentionRNN/LSTM: Đọc tuần tựTôiyêuViệtNamContext từ trái → phảiHiểu "Nam" dựa vào context trước⏳ Tuần tự, chậmAttention: Nhìn tất cảTôiyêuViệtNamNhìn TẤT CẢ cùng lúc!Hiểu từng từ dựa vào TẤT CẢ các từ khác⚡ Song song, nhanh

Checkpoint

Bạn đã hiểu Attention = "khả năng chú ý"?

2

🔑 Query, Key, Value - Tìm kiếm Google

TB5 min

Analogy: Google Search

Khi bạn search Google:

  1. Query (Q): Từ khóa bạn gõ vào ("best pizza hanoi")
  2. Key (K): Tiêu đề các trang web
  3. Value (V): Nội dung các trang web

Google so sánh Query với Keys → Tìm Keys khớp nhất → Trả về Values tương ứng!

Trong Attention

Thuật ngữÝ nghĩaAnalogy Google
Query (Q)"Tôi đang tìm gì?"Từ khóa search
Key (K)"Có những gì?"Tiêu đề trang
Value (V)"Thông tin cần lấy"Nội dung trang

Ví dụ cụ thể

Ví dụ Attention: "Con mèo ngồi trên thảm vì nó mệt"Query: "nó""đại từ này chỉ ai?"Keys (các từ trong câu)ConmèongồitrênthảmmệtAttention Scores0.1Con0.6mèo0.05ngồi0.02trên0.05thảm0.030.10.05mệt→ "nó" lấy nhiều thông tin từ "mèo" nhất! (score = 0.6)

Công thức (đơn giản)

Công thức Attention đơn giảnQuery so với Key giống bao nhiêu? → Lấy Value tương ứng1ScoreQ × KĐo độ giống2WeightSoftmax(Score)Chuẩn hóa thành %3OutputWeight × VLấy theo trọng sốQ= Tôi cần gì?K= Có gì ở đây?V= Lấy thông tin gì?

Không cần nhớ công thức! Chỉ cần nhớ:

  • Q = Tôi cần gì?
  • K = Có gì ở đây?
  • V = Lấy thông tin gì?

Checkpoint

Bạn đã hiểu Query, Key, Value?

3

👀 Self-Attention - Tự Chú Ý

TB5 min

Định nghĩa

Self-Attention = Mỗi từ "nhìn" tất cả các từ khác trong cùng câu.

"Self" vì Q, K, V đều từ cùng một input.

Minh họa

Self-Attention cho từ "love"Câu: "I love Vietnam"IloveVietnamSelf-Attention cho "love":"I"0.25 "love"0.3 (chính mình)"Vietnam"0.45 (object)"love" chú ý nhiều nhất vào "Vietnam" (object)

Tại sao Self-Attention mạnh?

Lợi íchGiải thích
Nhìn xaTừ đầu câu vẫn "thấy" từ cuối câu
Song songMọi từ tính toán cùng lúc (nhanh!)
Linh hoạtTự học nên chú ý vào đâu

Code đơn giản

python.py
1import tensorflow as tf
2from tensorflow.keras import layers
3
4# Self-Attention trong Keras
5class SimpleSelfAttention(layers.Layer):
6 def __init__(self, d_model=64):
7 super().__init__()
8 self.d_model = d_model
9 # Q, K, V projections
10 self.wq = layers.Dense(d_model)
11 self.wk = layers.Dense(d_model)
12 self.wv = layers.Dense(d_model)
13
14 def call(self, x):
15 # x shape: (batch, seq_len, d_model)
16 Q = self.wq(x)
17 K = self.wk(x)
18 V = self.wv(x)
19
20 # Attention scores
21 scores = tf.matmul(Q, K, transpose_b=True) # Q × K^T
22 scores = scores / tf.sqrt(tf.cast(self.d_model, tf.float32)) # Scale
23
24 # Softmax → weights
25 weights = tf.nn.softmax(scores, axis=-1)
26
27 # Output = weights × V
28 output = tf.matmul(weights, V)
29
30 return output, weights
31
32# Demo
33self_attn = SimpleSelfAttention(d_model=64)
34x = tf.random.normal((2, 5, 64)) # 2 câu, 5 từ mỗi câu, 64-dim
35
36output, weights = self_attn(x)
37print(f"Input: {x.shape}")
38print(f"Output: {output.shape}")
39print(f"\nAttention weights (câu 1):")
40print(weights[0].numpy().round(2))
Expected Output
1Input: (2, 5, 64)
2Output: (2, 5, 64)
3
4Attention weights (câu 1):
5[[0.21 0.19 0.20 0.20 0.20]
6 [0.19 0.22 0.20 0.19 0.20]
7 [0.20 0.20 0.21 0.19 0.20]
8 [0.20 0.19 0.19 0.22 0.20]
9 [0.20 0.20 0.20 0.20 0.20]]

Checkpoint

Bạn đã hiểu Self-Attention = "mỗi từ nhìn tất cả từ khác"?

4

🔀 Multi-Head Attention - Nhiều Góc Nhìn

TB5 min

Analogy: Xem phim với nhiều camera

Một camera chỉ quay được một góc.

Nhiều camera (Multi-Head) quay nhiều góc khác nhau → Hiểu toàn cảnh hơn!

Tương tự, Multi-Head Attention = Nhiều "attention head" song song, mỗi head học một kiểu quan hệ khác nhau.

Mỗi Head học gì?

HeadCó thể họcVí dụ
Head 1Ngữ pháp"sat" → chú ý vào subject "cat"
Head 2Đại từ"it" → chú ý vào "cat"
Head 3Vị tríTừ gần nhau chú ý nhau
Head 4NghĩaTừ cùng chủ đề chú ý nhau

Minh họa

Multi-Head AttentionInput: "The cat sat on the mat"Head 1AttentionNgữ phápHead 2AttentionĐại từHead 3AttentionVị tríHead 4AttentionNghĩaConcatOutputMỗi head nhìn từ một góc khác nhau!

Code với Keras

python.py
1import tensorflow as tf
2from tensorflow.keras import layers
3
4# Multi-Head Attention có sẵn trong Keras!
5mha = layers.MultiHeadAttention(
6 num_heads=4, # 4 heads
7 key_dim=64, # Dimension của mỗi head
8)
9
10# Input
11x = tf.random.normal((2, 10, 256)) # 2 câu, 10 từ, 256-dim
12
13# Self-Attention (Q=K=V=x)
14output = mha(query=x, key=x, value=x)
15
16print(f"Input shape: {x.shape}")
17print(f"Output shape: {output.shape}")
Expected Output
1Input shape: (2, 10, 256)
2Output shape: (2, 10, 256)

Tin vui: Keras có sẵn MultiHeadAttention!

Bạn chỉ cần gọi: layers.MultiHeadAttention(num_heads=8, key_dim=64)

Checkpoint

Bạn đã hiểu Multi-Head = "nhiều góc nhìn cùng lúc"?

5

🎭 Attention Mask - Che Thông Tin

TB5 min

Tại sao cần Mask?

Có 2 lý do cần "che" một số positions:

  1. Padding Mask: Câu ngắn phải pad thêm → Không muốn attention vào padding
  2. Look-ahead Mask: Khi generate text, không được "nhìn trước" tương lai

Padding Mask & Look-ahead Mask

Attention MasksPadding MaskCâu 1: "I love AI" + [PAD] [PAD]IloveAIPADPADMask:111000 = không attention vào đâyIloveAIPADPADKhông attention vào padding tokensLook-ahead Mask (Causal)Bước 1: Có "I"[I][love][AI]Bước 2: Có "I love"[I][love][AI]Bước 3: Có "I love AI"[I][love][AI]Mask Matrix:IloveAIIloveAIKhông được nhìn trước tương lai

Code tạo mask

python.py
1import tensorflow as tf
2import numpy as np
3
4def create_padding_mask(seq):
5 """Mask cho padding tokens (giá trị 0)"""
6 mask = tf.cast(tf.equal(seq, 0), tf.float32)
7 return mask[:, tf.newaxis, tf.newaxis, :]
8
9def create_look_ahead_mask(size):
10 """Mask không cho nhìn tương lai"""
11 mask = 1 - tf.linalg.band_part(tf.ones((size, size)), -1, 0)
12 return mask
13
14# Demo
15seq = tf.constant([[1, 2, 3, 0, 0]]) # Câu có 3 từ + 2 padding
16
17padding_mask = create_padding_mask(seq)
18print("Padding mask shape:", padding_mask.shape)
19print("Padding mask:\n", padding_mask[0, 0, 0].numpy())
20
21look_ahead = create_look_ahead_mask(5)
22print("\nLook-ahead mask:\n", look_ahead.numpy())
Expected Output
1Padding mask shape: (1, 1, 1, 5)
2Padding mask:
3 [0. 0. 0. 1. 1.]
4
5Look-ahead mask:
6[[0. 1. 1. 1. 1.]
7 [0. 0. 1. 1. 1.]
8 [0. 0. 0. 1. 1.]
9 [0. 0. 0. 0. 1.]
10 [0. 0. 0. 0. 0.]]

Checkpoint

Bạn đã hiểu Attention Mask dùng để làm gì?

6

🎯 Tổng kết

TB5 min

Những điểm cần nhớ

Khái niệmMột câu giải thíchAnalogy
AttentionChú ý vào phần quan trọngHighlight khi đọc sách
Q, K, VQuery hỏi, Key khớp, Value trảGoogle Search
Self-AttentionMỗi từ nhìn tất cả từ khácHọp nhóm, ai cũng nghe ai
Multi-HeadNhiều attention song songNhiều camera quay phim
MaskChe thông tin không cầnBịt mắt không nhìn đáp án

Attention giải quyết vấn đề gì?

Vấn đề của RNNAttention giải quyết
Quên thông tin xaNhìn được mọi vị trí
Xử lý tuần tựXử lý song song
ChậmNhanh hơn nhiều

Bài tiếp theo

Transformer Architecture - Kiến trúc kết hợp Attention để tạo ra BERT, GPT, ChatGPT!

🎉 Tuyệt vời! Bạn đã hiểu Attention - nền tảng của AI hiện đại!

Fun fact: ChatGPT, BERT, Google Translate đều dùng Attention. Bạn vừa học cơ chế cốt lõi của chúng!