💡 Ý tưởng phát triển: Xây dựng một trò chơi được điều khiển bằng AI

Mục tiêu của dự án này là sử dụng một mô-đun AI để tạo ra một trò chơi (game) chạy tự động (autonomous game player), trong đó trò chơi có thể chạy và học một cách hoàn toàn tự động mà không cần sự can thiệp của con người.

Thông qua dự án này, chúng ta có thể hiểu rõ hơn cách khái niệm Học tăng cường (Reinforcement Learning - RL) hoạt động trong thực tế như thế nào, và đồng thời khám phá việc sử dụng ứng dụng AI từ một góc nhìn khác so với các lĩnh vực quen thuộc như nhận dạng hình ảnh hay xử lý ngôn ngữ tự nhiên.

Dự án này là một bước thực hành trực tiếp giúp bạn có thể hiểu hơn về việc xây dựng một tác nhân thông minh (intelligent agent).

Học tăng cường (Reinforcement Learning - RL) là một lĩnh vực của machine learning, nơi một tác nhân (agent) học cách đưa ra các quyết định bằng cách thực hiện các hành động trong một môi trường và nhận được phần thưởng (hoặc hình phạt) làm phản hồi.

🎮 Lựa chọn game được mô phỏng: Trò chơi Khủng long của Chrome

ezgif-717203fc88c6cf.gif

Trò chơi Khủng long Chrome (còn được biết đến là Trò chơi T-Rex hoặc Dino game) là một trò chơi cổ điển mang tính biểu tượng — trò chơi xuất hiện khi mạng internet của bạn bị ngắt kết nối. Đó là một trò chơi đơn giản, và dễ gây nghiện, chỉ với một chú khủng long chạy không ngừng trên con đường sa mạc, và cố gắng né tránh các chướng ngại vật như cây xương rồng và thằn lằn bay.

Chính sự đơn giản này đã làm cho nó trở thành một sân tập luyện AI hoàn hảo vì :

  • Độ phức tạp thấp: Các hành động có thể có là tối thiểu — Chạy, Nhảy, hoặc Cúi người.
  • Hình ảnh đơn giản: Không cần nhận dạng hình ảnh phức tạp hoặc đồ họa nặng; chúng ta có thể tập trung hoàn toàn vào logic học tập.
  • Mục tiêu rõ ràng: Mục tiêu là không mơ hồ — tránh va chạm và tối đa hóa điểm số.

Tóm lại, Trò chơi Dino mang đến cho chúng ta một môi trường đủ đơn giản để hiểu, nhưng đủ thách thức để một AI có thể học được hành vi thông minh.
Đây là bản dịch sang tiếng Việt:


🧠 Phân tích Trò chơi

Trước khi xây dựng AI, điều quan trọng là phải hiểu game sẽ được trông như thế nào ở dưới hai góc độ:

  • Góc nhìn của con người (Human view): Những gì người chơi thấy — một con khủng long đang chạy và phản ứng với các chướng ngại vật.
  • Góc nhìn của hệ thống (Sytems view): Những gì mô hình AI cần — các con số mô tả tình huống hiện tại.

Đây là trọng tâm của dự án — kết nối nhận thức của con người và logic của máy móc.

1. Vấn đề cốt lõi

Chúng ta có thể định hình lại trò chơi thành theo một quá trình ra quyết định liên tiếp (Sequential Decision-Making Problem) :

Vấn đề :
Ngay tại tình huống hiện tại trong trò chơi, khủng long cần thực hiện hành động nào ngay bây giờ — NHẢY , CÚI NGƯỜI, hay CHẠY?

Để trả lời câu hỏi này liên tục (hàng trăm lần mỗi giây), AI cần xác định hai thành phần cốt lõi:

  1. Một mô tả được miêu tả chính xác, máy có thể đọc được về tình huống hiện tại — trạng thái (state).
  2. Một hệ thống ra có thể ra quyết định — mô hình AI — ánh xạ mỗi trạng thái đến một hành động tối ưu (optimal action).

Như vậy, chúng ta sẽ có câu hỏi trọng tâm :

Làm thế nào chúng ta có thể chuyển đổi những gì đang xảy ra trên màn hình thành các đầu vào có cấu trúc, bằng số để mô hình có thể đưa ra quyết định?

2. Chuyển đổi Game dưới dạng Số học

Thay vì dựa vào dữ liệu pixel thô (vốn đòi hỏi xử lý hình ảnh phức tạp), chúng ta có thể trích xuất các biến có cấu trúc trực tiếp từ logic của trò chơi.

Những biến này tạo thành một vector đặc trưng (feature vector) — một danh sách các con số mô tả trạng thái hiện tại của trò chơi.

Chúng ta có thể định nghĩa quan sát tại thời điểm $t$, được ký hiệu là:

$$o(st)=[dino_y,obs_x,obs_y,dist(dino,obs),speed]∈R^5.$$

Biến Đặc trưng Tên Biến Mô tả Vai trò trong Quyết định
$y_{dino}$ dino.rect.y Vị trí dọc của khủng long (trên mặt đất, đang nhảy, hoặc đang cúi). Xác định trạng thái hiện tại và các hành động khả dụng.
$x_{obs}$ obstacle.rect.x Vị trí ngang của chướng ngại vật tiếp theo. Đo lường mức độ khẩn cấp — mối đe dọa gần đến mức nào.
$y_{obs}$ obstacle.rect.y Chiều cao hoặc vị trí dọc của chướng ngại vật. Phân biệt khi nào cần nhảy (chướng ngại vật cao) hay cúi người (chim bay thấp).
$d_{impact}$ distance(dino, obs) Khoảng cách Euclid giữa khủng long và chướng ngại vật. Đại diện cho thời gian-tới-va-chạm và mức độ khẩn cấp cần phản ứng.
$s_{game}$ game_speed Tốc độ cuộn hiện tại của trò chơi. Ảnh hưởng đến thời gian phản ứng và thời gian nhảy.

Để đảm bảo quá trình học ổn định, chúng ta chuẩn hóa tất cả các đặc trưng về phạm vi $[0, 1]$, sử dụng các giới hạn màn hình và giá trị tốc độ tối đa đã biết.Bước chuẩn hóa này giúp các đầu vào nhất quán và ngăn mạng nơ-ron đánh giá quá cao bất kỳ biến đơn lẻ nào.

3. Liên kết các đặc trưng (Mapping features) sang hàng động

Khi trạng thái của game đã được biểu diễn dưới các dạng đặc trưng số (numeric features), chúng ta cần một cách để AI quyết định nên làm gì — nhảy, cúi người, hay tiếp tục chạy. Quá trình ra quyết định này sẽ được xử lý bởi một mạng nơ-ron truyền thẳng (feed-forward neural network) nhỏ, thường được gọi là mạng lưới chính sách (policy network).

Mạng lưới chính sách nhận vector trạng thái $o(s_t)$ làm đầu vào và đưa ra điểm hành động (action scores):
$$ h = \text{ReLU}(W\,o(s_t)), \quad y = W_2\,h $$

Sau đó, hành động được chọn $a_t$ là hành động có điểm cao nhất:
$$ a_t = \arg\max(y_0,y_1,y_2)\ \in \ \{\text{NHẢY},\text{CÚI\ NGƯỜI},\text{CHẠY}\}. $$
Nói một cách đơn giản hơn:

  • Lớp thứ nhất ($W$) trích xuất các mẫu cơ bản từ dữ liệu đầu vào.
  • Hàm kích hoạt ReLU tạo ra tính phi tuyến tính để mô hình có thể học các ngưỡng phức tạp (ví dụ: "chỉ nhảy khi cây xương rồng ở khoảng cách này").
  • Lớp cuối cùng ($W_2$) tạo ra ba giá trị đầu ra — một giá trị cho mỗi hành động.
  • Hành động có giá trị cao nhất sẽ được chọn.

=> Lưu ý: Chúng ta chỉ truy vấn chính sách khi khủng long được phép hành động — ví dụ, không phải khi đang nhảy giữa đường — để tránh dao động nhanh chóng giữa các hành động.

4. Xác định Kết quả — Thế nào là Thành công?

Để quá trình học tập diễn ra, tác nhân cần có phản hồi để biết AI có đang làm tốt hay không.

Chúng ta định nghĩa điều này thông qua các trạng thái chuyển đổi (transitions)phần thưởng (rewards):

  1. Chuyển đổi / Kết thúc: * Bộ máy vật lý của game (Pyhsics engine) tiến thêm một khung hình; nếu xảy ra va chạm vào chướng ngại vật thì vòng chơi kết thúc.
  2. Phần thưởng (hoặc Sự thích nghi - Fitness) :
    * $+1$ cho mỗi đơn vị thời gian mà khủng long sống sót.
    * $+0.1$ (hoặc giá trị nhỏ hơn) cho các nhảy hoặc cúi thành công.
    * $0$ (hoặc giá trị âm) khi khủng long va chạm và trò chơi kết thúc.

Thiết kế này khuyến khích nhân vật chạy an toàn càng lâu càng tốt, và chỉ hành động khi thực sự cần thiết — mô phỏng phản xạ của con người.

Theo thời gian, một bộ tối ưu hóa (chẳng hạn như Thuật toán Di truyền (Genetic Algorithm) hoặc phương pháp Học tăng cường (Reinforcement Learning) — sẽ điều chỉnh trọng số của mạng nơ-ron, nhằm tối đa hóa điểm sống sót (survival score).

5. Bản thảo cách triển khai:

Dưới đây là phiên bản đơn giản hóa mô phỏng logic của hệ thống bằng mã Python:

# Quan sát (vector trạng thái)
obs = [
    dino.rect.y,
    obstacle.rect.x,
    obstacle.rect.y,
    distance((dino.rect.x, dino.rect.y), obstacle.rect.midtop),
    game_speed
]

# Quyết định (mạng lưới chính sách)
h = relu(W @ obs)
y = W2 @ h
action = argmax(y)  # 0=NHẢY, 1=CÚI NGƯỜI, 2=CHẠY

# Hành động
if action == 0:
    dino.jump()
elif action == 1:
    dino.duck()
# else: tiếp tục chạy

Bản mô phỏng thu nhỏ này thể hiện bản chất của toàn hệ thống bao gồm:

  • Quan sát (Observe): $\rightarrow$ thu thập trạng thái trò chơi hiện tại.
  • Quyết định (Decide): $\rightarrow$ tính toán điểm/xác suất hành động bằng cách sử dụng mạng lưới
  • Hành động (Act): $\rightarrow$ thực hiện động tác đã chọn.

Tóm tắt

Giờ đây, chúng ta đã chuyển đổi Dino game thành một bài toán máy học có thể huấn luyện bằng AI, thông qua::

  • Mã hóa mỗi khung hình thành một vector trạng thái gọn nhẹ: $[dino_y, obs_x, obs_y, \text{dist}, speed]$.
  • Ánh xạ vector thông qua một mạng lưới chính sách nơ-ron (policy network) nhỏ.
  • Sử dụng phần thưởng dựa trên khả năng sống sót (survival-based rewards) để dần cải thiện hiệu suất

Qua nhiều thế hệ (generations) hay còn được hiều là các màn chơi , AI sẽ phát triển từ các chuyển động ngẫu nhiên thành phản xạ chính xác, biết khi nào nên nhảy, cúi, hoặc tiếp tục chạy để sống sót lâu nhất có thể.


Từ Hình ảnh đến Hành động: Cách AI đưa ra Quyết định

Chúng ta đã định nghĩa Trạng thái (State) (năm con số đầu vào) và Hành động (Actions) (Nhảy, Cúi người, Chạy) cho AI Khủng long của chúng ta.

Nhưng một câu hỏi lớn vẫn còn:

Làm thế nào máy móc thực sự chuyển đổi 5 con số đầu vào (input) đó thành một hành động dứt khoát — trong thời gian thực?

Câu trả lời nằm ở hai thành phần quan trọng: các Ma trận Trọng số ($W_1$ và $W_2$), mà khi kết hợp lại, tạo thành bộ não mạng nơ-ron của AI.

1. Giải phẫu Mạng Nơ-ron của AI Dino Game

AI của chúng ta sử dụng một Mạng Nơ-ron Truyền thẳng (Feedforward Neural Network) đơn giản nhưng mạnh mẽ, hoàn toàn phù hợp với cơ chế tối giản của trò chơi Khủng long.

$$\text{5 Đầu vào (input)} \rightarrow \text{64 Đơn vị Ẩn (Hidden units)} \rightarrow \text{3 Đầu ra (output)}$$

Thành phần Kích thước Vai trò
Trạng thái Đầu vào ($x$) $5 \times 1$ Năm giá trị cảm biến (vị trí, khoảng cách, tốc độ).
Ma trận Trọng số $W_1$ $64 \times 5$ Bộ trích xuất đặc trưng: Học các mẫu hữu ích từ dữ liệu đầu vào thô.
Lớp Ẩn ($h$) $64 \times 1$ Mã hóa các "khái niệm" đã được xử lý, ví dụ: "Điều kiện nhảy là cao."
Ma trận Trọng số $W_2$ $3 \times 64$ Bộ ra quyết định: Chuyển đổi các mẫu nội bộ thành điểm hành động.
Đầu ra ($q$) $3 \times 1$ Điểm dự đoán (Giá trị Q) cho mỗi hành động.

Kiến trúc nhỏ gọn này có thể chạy trong thời gian thực — lý tưởng cho một trò chơi nơi các quyết định xảy ra chỉ trong vài mili giây.

2. Quá trình ra quyết định (Forward Pass)

Với mỗi khung hình của trò chơi, AI thực hiện một Lượt truyền tới (Forward Pass) — tức là một phép tính nhanh xác định hành động tiếp theo.

Bước 1: Trích xuất Đặc trưng — Vai trò của $W_1$

Vector trạng thái thô $\mathbf{x}$ trước tiên được nhân với ma trận trích xuất đặc trưng $W_1$:

$$ \mathbf{h}_{\text{raw}} = W_1 \times \mathbf{x} $$
Có thể hiểu
* $\mathbf{h}_{\text{raw}}$: Vector kích hoạt thô của lớp ẩn.
* $\mathbf{W}_1$: Ma trận Trọng số nối lớp đầu vào với lớp ẩn. Đây là Bộ trích xuất Đặc trưng.
* $\mathbf{x}$: Vector Trạng thái Đầu vào (năm con số cảm biến trong dự án Dino game).

Sau đó, chúng ta áp dụng hàm kích hoạt ReLU (Rectified Linear Unit) để đưa vào tính phi tuyến tính:

$$\mathbf{h} = \text{ReLU}(\mathbf{h}_{\text{raw}}) = \mathbf{\text{np.maximum}}(\mathbf{h}_{\text{raw}}, 0)$$

Ở đây :
* $\mathbf{h}$: Vector đã được kích hoạt cuối cùng của lớp ẩn.
* $\text{ReLU}$: Hàm kích hoạt Đơn vị Tuyến tính Chỉnh lưu.
* $\mathbf{h}_{\text{raw}}$: Vector thô đầu ra từ bước trước ($\mathbf{W}_1 \times \mathbf{x}$).
* $\text{np.maximum}(\mathbf{h}_{\text{raw}}, 0)$: Định nghĩa toán học của ReLU, đặt mọi giá trị âm trong $\mathbf{h}_{\text{raw}}$ về 0, trong khi giữ nguyên các giá trị dương.

Điều gì đang xảy ra về mặt khái niệm?

  • Mỗi hàng của $W_1$ hoạt động như một "bộ phát hiện quy tắc" nhỏ.
  • Ví dụ, một nơ-ron có thể học được quy tắc: "Nếu chướng ngại vật gần và cao, hãy kích hoạt nơ-ron này mạnh hơn."
  • Bước ReLU đảm bảo rằng chỉ kích hoạt nơ-ron có ý nghĩa ( nơ-ron dương) — cho phép mạng lưới hình thành các quy tắc NẾU/THÌ linh hoạt.

Kết quả, $\mathbf{h}$, là một vector 64 chiều đại diện cho sự hiểu biết nội bộ của AI về cảnh trò chơi.

Bước 2: Chấm điểm các Hành động Khả thi — Vai trò của $W_2$

Tiếp theo, vector đặc trưng tinh chỉnh $\mathbf{h}$ được truyền đến lớp quyết định, được đại diện bởi $W_2$:

$$ \mathbf{q} = W_2 \times \mathbf{h} $$

  • $\mathbf{q}$: Vector Đầu ra (hoặc Giá trị Q). Vector này chứa điểm dự đoán cho mỗi hành động khả thi (Nhảy, Cúi người, Chạy).
  • $\mathbf{W}_2$: Ma trận Trọng số thứ hai. Đây là Bộ ra Quyết định chuyển đổi các đặc trưng tinh chỉnh thành điểm hành động.
  • $\mathbf{h}$: Vector Lớp Ẩn đã được Kích hoạt (đầu ra từ hàm ReLU).

Mỗi hàng của $W_2$ tương ứng với một hành động khả thi — Nhảy, Cúi người hoặc Chạy.

  • Hàng "Nhảy" học cách tạo ra điểm cao chỉ khi hành động nhảy là có lợi.
  • Tương tự, hàng "Cúi người" được kích hoạt khi một chướng ngại vật thấp xuất hiện.
  • Hàng "Chạy" chiếm ưu thế khi an toàn để tiếp tục tiến lên.

Vector kết quả:

$$\mathbf{q} = [Q_{\text{Jump}}, Q_{\text{Duck}}, Q_{\text{Run}}]$$
- $\mathbf{q}$: đại diện cho điểm tự tin (Giá trị Q) cho mỗi hành động.
- $Q_{\text{Jump}}, Q_{\text{Duck}}, Q_{\text{Run}}$ : Các Q-Value — điểm tin cậy (confidence score) cho từng hành động mà Dino AI có thể chọn.

Bước 3: Thực hiện Quyết định

Cuối cùng, AI chọn hành động có điểm cao nhất:

$$ \text{hành\ động} = \arg\max(\mathbf{q}) \in \{0, 1, 2\} $$
* $\text{hành\ động}$: Hành động cuối cùng, đã được chọn mà AI Khủng long sẽ thực hiện trong trò chơi.
* $\arg\max$: Hàm "Đối số của Giá trị Lớn nhất". Thao tác này tìm ra chỉ số (vị trí) của giá trị lớn nhất trong một danh sách hoặc vector.
* $\in \{0, 1, 2\}$: Kết quả sẽ là một trong các chỉ số này, tương ứng với các hành động: $0 = \text{Nhảy}, 1 = \text{Cúi\ người}, 2 = \text{Chạy}$.

Ví dụ: nếu $\mathbf{q} = [2.5, -0.3, 1.1]$, thì ta có $\arg\max(\mathbf{q}) = 0 \Rightarrow \text{Action = Jump}$

Code của game sẽ được thể hiện:

if action == 0:
    dino.jump()
elif action == 1:
    dino.duck()
# else: tiếp tục chạy

3. Cách AI Học: Tối ưu hóa Bộ não $\mathbf{W}_1$ và $\mathbf{W}_2$

Toàn bộ mục đích của quá trình đào tạo là tìm ra tập hợp các con số tối ưu bên trong hai ma trận trọng số — $\mathbf{W}_1$ và $\mathbf{W}_2$.

Các ma trận này nắm giữ tất cả kiến thức của AI Dino, quyết định cách nó phản ứng, sống sót và thích nghi.

Quá trình đào tạo nhằm mục đích điều chỉnh các trọng số này để tối đa hóa thời gian sống sót của Khủng long.

Dù sử dụng Deep Q-Network (DQN) hay Genetic Algorithm (GA), thì trọng tâm vẫn là liên tục tinh chỉnh hai ma trận này để giúp AI hành động ngày càng chính xác hơn.

Vai trò của Ma trận và Mục tiêu Học

Ma trận Kích thước Vai trò Điều mà nó học được
$\mathbf{W}_1$ $64 \times 5$ Bộ trích xuất Đặc trưng Xác định đầu vào nào quan trọng nhất — ví dụ: tốc độ thay đổi khoảng cách quan trọng hơn chiều cao của chướng ngại vật.
$\mathbf{W}_2$ $3 \times 64$ Bộ ra Quyết định Học cách tổ hợp đặc trưng nào dự đoán tốt nhất sự thành công — ví dụ: nếu khoảng cách nhỏ và chiều cao chướng ngại vật cao $\rightarrow$ Nhảy.

Trong quá trình huấn luyện, thuật toán được chọn sẽ liên tục cập nhật các trọng số này:

  • DQN: giảm thiểu sai số dự đoán thông qua backpropagation (lan truyền ngược).
  • GA: tối đa hóa độ thích nghi (fitness) bằng cách cải thiện dần qua tiến hóa.

Vai trò của Bộ tối ưu hóa: Học tập thông qua Tiến hóa

Đối với các trò chơi đơn giản, dựa trên phản xạ như Dino game, Thuật toán Di truyền (Genetic Algorithm - GA) cung cấp một cách trực quan, mạnh mẽ để huấn luyện AI — mà không cần đến phép tính vi phân hay gradient.

Nó đối xử với mỗi AI như một cơ thể sống học hỏi thông qua chọn lọc tự nhiên.

  • Quần thể (Population): Bắt đầu với hàng trăm AI Khủng long, mỗi AI có các ma trận trọng số $\mathbf{W}_1$ và $\mathbf{W}_2$ được khởi tạo ngẫu nhiên.
  • Đánh giá Sự thích nghi (Fitness Evaluation): Cho phép mỗi AI chơi trò chơi; điểm số của nó (thời gian sống sót) trở thành mức độ thích nghi của nó.
  • Chọn lọc & Lai ghép (Selection & Crossover): Giữ lại những cá thể có hiệu suất cao nhất và "nhân giống" các ma trận trọng số của chúng bằng cách pha trộn và kết hợp chúng để tạo ra thế hệ tiếp theo.
  • Đột biến (Mutation): Áp dụng các thay đổi ngẫu nhiên, nhỏ cho các trọng số mới, khuyến khích việc khám phá các chiến lược mới.

Qua hàng trăm hoặc hàng nghìn thế hệ, các ma trận này sẽ tiến hóa thành một chính sách có hiệu quả cao, có thể căn thời gian nhảy và cúi người giống như một người chơi lành nghề.

Kết luận: một trò chơi nhỏ, một bài học lớn

Về bản chất, $\mathbf{W}_1$ và $\mathbf{W}_2$ là bộ não của AI Dino. Chúng lưu trữ tất cả kinh nghiệm đã học — tinh lọc lại ký ức của bản thân về những gì dẫn đến sự sống sót và những gì dẫn đến va chạm.

Điều này cho thấy trí thông minh và hành vi phức tạp có thể phát triển từ những cấu phần rất cơ bản như :

  • một vector trạng thái gọn nhẹ,
  • một mạng nơ-ron truyền thẳng (chính sách) nhẹ, và
  • một vòng lặp huấn luyện dựa trên sự thích nghi hiệu quả.

=> Kết quả: một chú khủng long tự học có thể chạy mãi mãi — một minh chứng thú vị nhưng đầy mạnh mẽ về cách học tập và tiến hóa tạo ra trí thông minh.


🌟 Tìm hiểu thêm: Bước ra khỏi Dino game

AI Dino của chúng ta đã giải mã thành công logic sinh tồn trên sa mạc Chrome. Nhưng đây mới chỉ là sự khởi đầu. Câu hỏi tiếp theo một cách tự nhiên là: Liệu trí thông minh này có thể được “chuyển giao” sang môi trường khác không?

Câu trả lời ngắn gọn là . Nguyên lý của Reinforcement Learning (RL – Học tăng cường), được sử dụng cho nền tảng cho Dino AI, chính là gốc rễ của mọi thứ — từ các trò chơi kinh điển như Flappy Bird cho đến những hệ thống ra quyết định phức tạp trong xe và robot tự động.

🎮 Tại sao Dino Game là "bài kiểm tra" RL hoàn hảo

Trước khi chúng ta leo lên những tầng phức tạp, điều quan trọng là phải hiểu được sự đơn giản hoàn hảo của điểm khởi đầu này. Dino Game đã cô lập thử thách cốt lõi của RL, cho phép chúng ta tập trung vào việc học, chứ không phải chỉ là xử lý dữ liệu.

Đặc điểm Chính (Key Trait) Mô tả (Description) Lợi ích cho Huấn luyện (Benefit for Training)
Không gian Trạng thái Nhỏ (Small State Space) Thế giới được mô tả chỉ bằng một vài con số (khoảng cách, tốc độ, vị trí). Đơn giản và xử lý cực kỳ nhanh chóng.
Không gian Hành động Hạn chế (Limited Action Space) Chỉ có 3 hành động rõ ràng: Nhảy (Jump), Cúi người (Duck), hoặc Chạy (Run). Một đầu ra dễ quản lý, đơn giản cho mạng lưới.
Hàm Phần thưởng Rõ ràng (Clear Reward Function) Sống sót lâu hơn = điểm cao hơn. Không có sự mơ hồ. Cung cấp một tín hiệu nhất quán, hoàn hảo cho việc học.
Vật lý Xác định (Deterministic Physics) Cùng một hành động trong cùng một trạng thái sẽ tạo ra cùng một kết quả. Giúp quá trình huấn luyện dễ dự đoán, ổn định và hiệu quả.

=> Như vậy, nền tảng này cho phép chúng ta thiết lập một logic cốt lõi mạnh mẽ, vừa đáng tin cậy vừa dễ dàng chuyển giao.

🖼️ Thế tiến thoái lưỡng nan của Kiến trúc sư: Vector Trạng thái (State vector) so với Ảnh chụp Màn hình (Screen images)

Bạn có thể tự hỏi: "Nếu chúng ta muốn AI nhìn thấy như một con người, tại sao không cung cấp ảnh chụp màn hình cho nó?"

Mặc dù điều này là khả thi, nhưng việc sử dụng pixel thô (raw pixel) thường giống như dùng "dao mổ trâu để giết gà" — hiệu quả nhưng không cần thiết. Việc chúng ta chọn Vector Trạng thái (State Vector) là một quyết định thiết kế có chủ ý nhằm đạt được hiệu suất cao.

Tại sao Pixel Thô (raw pixel) là một lựa chọn tốn kém (Phương pháp CNN)

Việc sử dụng ảnh chụp màn hình buộc AI phải giải quyết một bài toán thị giác (vision problem) trước khi nó có thể bắt đầu học trò chơi. Cần có một Mạng Nơ-ron Tích chập (Convolutional Neural Network - CNN), dẫn đến một quy trình phức tạp:

# Ví dụ: Xử lý ảnh chụp màn hình 84x84 pixel
state = screenshot(game)  # 7.056 giá trị đầu vào!
conv_layers = CNN(state)  # Các lớp phức tạp để tìm kiếm mẫu
output = Dense(3)(flatten(conv_layers))  # Quyết định hành động

Cách tiếp cận này làm tăng đáng kể chi phí chung (overhead):

  • Phình to về Tính toán (Computational Bloat): Cần hàng triệu tham số.
  • Thời gian Huấn luyện Dài: Việc chỉ mất vài phút với vector trạng thái có thể mất hàng ngày hoặc hàng tuần.
  • Yêu cầu về Phần cứng: Cần có GPU mạnh thay vì một máy tính xách tay tiêu chuẩn.

Khi nào thì nên dùng loại dữ liệu nào ?

Loại Đầu vào (Input Type) Khi nào nên sử dụng Ví dụ lý tưởng
Vector Trạng thái có Cấu trúc (Structured State Vector) Môi trường đơn giản, trạng thái bên trong có thể truy cập được và bạn cần kết quả nhanh chóng, hiệu quả. Trò chơi Dino, Flappy Bird, các trò chơi 2D tùy chỉnh, các hệ thống điều khiển gọn nhẹ.
Hình ảnh Thô (CNN) (Raw Images) Môi trường phức tạp về mặt hình ảnh, 3D, hoặc logic bên trong của nó là một "hộp đen" (không truy cập được). Điều cần thiết khi bản thân nhiệm vụ liên quan đến nhận dạng. Super Mario, StarCraft, Grand Theft Auto, bất kỳ robot nào phải dựa vào thị giác camera.

🌍 Ứng dụng Thực tế: Nơi Logic của khủng long Dino được nâng tầm

Đối với các dự án giáo dục và nhiều hệ thống thực tế, Vector Trạng thái là Vua vì nó đại diện cho bản chất của vấn đề mà không bị lẫn bởi nhiễu.

Nguyên tắc cốt lõi — ánh xạ một trạng thái rõ ràng thành một hành động tối ưu — là nền tảng của các hệ thống tự hành hiện đại. Dưới đây là cách hành trình của chú khủng long Dino của chúng ta mở rộng ra thế giới thực:

🤖 1. Robot và hệ thống dẫn đường:

Cơ chế né chướng ngại vật của Dino tương đương trực tiếp với bài toán điều hướng của robot.
* Xe Tự hành & Máy bay không người lái (Drone): "Vector trạng thái" của chúng là sự kết hợp của dữ liệu cảm biến (LIDAR, camera, GPS). "Hành động" của chúng là Tăng tốc, Phanh, hoặc Rẽ để điều hướng an toàn.
* Robot Nhà máy: Chúng sử dụng trạng thái nội bộ để xác định các đường đi tối ưu và thực hiện tránh va chạm trong các nhà kho năng động, giống như chú khủng long né xương rồng.

💹 2. Bot Giao dịch Tài chính

Một bot giao dịch là Khủng long của thị trường tài chính. "Trạng thái" của nó là một vector các chỉ số thị trường (giá, khối lượng, độ biến động), và "hành động" của nó là Mua, Bán, hoặc Giữ.

⚠️ Lưu ý: Không giống như trò chơi xác định của chúng ta, thị trường là một môi trường ngẫu nhiên và đối nghịch. Thành công đòi hỏi phải xử lý việc Quá khớp (Overfitting) với dữ liệu lịch sử, Chi phí Giao dịch (Transaction Costs)Trượt giá (Slippage).

🎮 3. AI Game Nâng cao & Hành vi NPC

Học tăng cường (RL) là động cơ thúc đẩy một thế hệ nhân vật động lực mới trong game.

  • NPC Thích ứng: Kẻ thù học hỏi và chống lại phong cách chơi cụ thể của bạn, khiến trò chơi trở nên thách thức độc đáo.
  • AI kể chuyện: NPC có "bộ nhớ" và "tính cách" phát triển dựa trên sự tương tác của bạn, tạo ra những câu chuyện cá nhân, mới lạ sâu sắc.

💡 Bài học Rút ra: Bản thiết kế cho Trí thông minh

Dự án AI Khủng long không chỉ là một thử nghiệm thú vị — nó là một tiểu vũ trụ của trí thông minh tự hành. Chúng ta đã xây dựng và khám phá một bản thiết kế cơ bản cho việc học: Cảm nhận môi trường → Hành động → Nhận phản hồi → Cải thiện qua thời gian.

Từ chú khủng long pixel nhảy qua xương rồng, đến robot trong kho hàng tránh vật cản, hay thuật toán giao dịch vượt qua biến động thị trường —
vòng lặp cốt lõi vẫn không đổi: học từ kinh nghiệm, phản ứng theo phản hồi, và ngày càng thông minh hơn theo thời gian.