---
title: "Đại số tuyến tính cho AI Engineer - linear map, rank, least squares, eigenvalue, SVD và PCA"
description: "Khóa học đại số tuyến tính cho AI Engineer trang bị cách nhìn ma trận là phép biến đổi vector qua các chủ đề linear map, rank, least squares, eigenvalue, SVD và PCA. Bạn tính tay trên ma trận nhỏ rồi đọc đúng shape layer, rank LoRA, biểu đồ PCA và sai số giải hệ ở fp16 kèm điều kiện đi kèm."
canonical: "https://200lab.io/courses/linear-algebra-for-ai-engineers"
type: "course"
course_type: "course"
learning_type: "free_form"
published: "2026-10-22T02:51:13Z"
students: 28
---

## Khóa học này mang lại gì cho bạn

Ở khóa Toán học cơ bản cho AI Engineer, bạn đã làm quen với vector như một dãy số và ma trận như một bảng số có shape. Khóa học này tiếp tục mở rộng góc nhìn đó: mỗi ma trận được hiểu là một phép biến đổi vector, và bạn học cách đọc trọn vẹn phép biến đổi ấy. Mỗi công cụ toán học đều gắn liền với các tình huống thực tế khi bạn train, fine-tune hoặc đánh giá model.

- **Xem layer là linear map** — Bạn đọc shape **2.048** × **512** của layer `nn.Linear(512, 2048)` và kiểm tra tính tương thích shape khi ghép nối hai layer. Bạn nhận biết hai layer không có bias và không có hàm kích hoạt phi tuyến như ReLU ở giữa thì gộp được thành một ma trận duy nhất, còn layer có bias khác 0 là affine map.
- **Chọn thước đo khoảng cách** — Bạn phân biệt norm L1, norm L2 và cosine theo đơn vị cùng đặc tính của dữ liệu. Bạn xác định được điều kiện để khoảng cách L2 và độ tương đồng cosine xếp hạng các embedding theo cùng một thứ tự khi mọi vector đã đưa về độ dài 1.
- **Đếm tham số LoRA theo rank** — Với cấu hình LoRA rank **8** trên ma trận weight **4.096** × **4.096**, bạn tính ra chính xác **65.536** tham số học thêm và hiểu rõ giá trị 8 trong cấu hình chỉ là mức trần cho rank của phần cập nhật.
- **Giải và đọc least squares** — Bạn phân rã vector thành hình chiếu và residual vuông góc với hướng chiếu, rồi thiết lập normal equations để tìm đường thẳng khớp dữ liệu nhất. Khi các cột của ma trận dữ liệu phụ thuộc tuyến tính, bạn biết lý do không nên đọc riêng rẽ từng weight mà thư viện trả về.
- **Đọc eigenvalue và SVD** — Bạn tính eigenvalue của ma trận **2** × **2**, nhận biết điểm yên ngựa qua dấu của các eigenvalue trên ma trận độ cong của loss tại điểm dừng, và phân tích SVD thành các hướng kéo giãn không gian kèm dãy singular value giảm dần.
- **Chọn số thành phần giữ lại** — Bạn xác định số singular value cần giữ khi nén ma trận weight bằng truncated SVD, tính số lượng tham số phải lưu và sai số theo norm Frobenius. Với PCA, bạn chọn số trục dựa vào tỉ lệ explained variance cộng dồn và chỉ ra những giới hạn mà tỉ lệ này chưa phản ánh.
- **Ước lượng sai số khi giải hệ** — Bạn tính condition number từ tỉ số giữa singular value lớn nhất và nhỏ nhất, qua đó xác định cận trên cho sai số tương đối của nghiệm khi giải hệ vuông mà vector vế phải chịu sai số làm tròn ở định dạng fp16 hay bf16.

Khóa học thuộc nhánh toán ứng dụng cho nghề AI Engineer và không đi sâu vào chứng minh định lý; bạn tính tay trên các ma trận nhỏ để nắm vững bản chất, rồi dùng cách đọc đó cho ma trận weight, embedding và cấu hình fine-tune thực tế.

## Khóa học cung cấp những nền tảng nào

Xuyên suốt chương trình là cách nhìn thống nhất: mỗi ma trận đại diện cho một phép biến đổi vector. Rank cho biết không gian kết quả trải ra bao nhiêu chiều độc lập, còn singular value đo mức độ co giãn của vector theo từng hướng xác định. Cách nhìn này giúp bạn đọc hiểu bản chất của layer, phần cập nhật trong LoRA và ma trận hiệp phương sai của embedding. Bạn có thể tham khảo thêm ba nguồn tài liệu đi cùng khóa học: loạt video [Essence of Linear Algebra của 3Blue1Brown](https://www.3blue1brown.com/lessons/linear-transformations), bài giảng [phép chiếu và least squares của MIT 18.06](https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/resources/lecture-16-projection-matrices-and-least-squares/) và [paper LoRA của Hu và cộng sự](https://arxiv.org/abs/2106.09685).

### 1. Vector, norm và linear map

Bắt đầu từ việc xác định vị trí hai tiệm trên bản đồ khu phố ô bàn cờ, bạn thấy khoảng cách thay đổi theo norm L1, norm L2 và phụ thuộc vào đơn vị đo của từng trục. Cùng nguyên lý đo độ dài ấy giải thích cơ chế của dòng cấu hình `max_grad_norm = 1.0` khi gradient clipping giữ nguyên hướng và ghìm độ dài vector gradient về ngưỡng an toàn. Qua việc kéo giãn và xoay bản vẽ căn phòng, phép nhân ma trận hiện lên như sự kết hợp liên tiếp giữa các phép biến đổi, trong đó thứ tự thực hiện quyết định vị trí điểm đến. Khi xét hai layer liền nhau có kích thước **512** và **2.048**, bạn nhận biết điều kiện để gộp chúng thành một ma trận duy nhất với **262.144** weight nếu không có bias và không có ReLU ở giữa, hoặc thành một affine map khi có bias.

### 2. Span, rank, phép chiếu và least squares

Hình ảnh pha màu từ bốn tuýp sơn làm rõ khái niệm span và cơ sở, giúp bạn phát hiện các cột feature dư thừa như điểm phạt tính từ lỗi hay các cột one-hot đi kèm cột toàn số 1. Từ cuốn sổ ghi số đo ba mảnh vườn, bạn thấy rank của bảng chỉ bằng 2 và hiểu vì sao phần cập nhật của LoRA rank **8** trên ma trận **4.096** × **4.096** chỉ có rank tối đa là 8. Khi đạp xe đón một cơn gió xiên **5 m/s**, bạn tách vận tốc thành hình chiếu dọc đường và residual vuông góc, tương tự như cách lọc bỏ một hướng định sẵn khỏi vector embedding. Phép chiếu vuông góc ấy dẫn thẳng tới normal equations của least squares, giúp bạn tìm đường tăng trưởng **1,6 cm/tuần** của cây đậu và hiểu kết quả hàm `np.linalg.lstsq` trả về khi train linear probe trên **5.000** embedding **768** chiều.

### 3. Eigenvalue, ma trận đối xứng và SVD

Sự dịch chuyển của **300** chiếc xe giữa hai trạm sau mỗi đêm minh họa cho eigenvector và eigenvalue, nơi tỉ lệ phân bố **200** xe ở trạm A và **100** xe ở trạm B được giữ nguyên qua thời gian. Với ma trận **2** × **2**, bạn tính nhanh eigenvalue từ tổng đường chéo cùng định thức, rồi đọc ma trận độ cong của loss tại điểm dừng để nhận biết điểm yên ngựa khi xuất hiện cả eigenvalue dương lẫn âm. Hình ảnh chiếc vòng chun bán kính **1 cm** bị kéo thành hình elip giải thích bản chất ba bước của SVD: đổi hướng (có thể kèm phản chiếu), co giãn theo các trục vuông góc rồi đổi hướng tiếp. Khi singular value lớn nhất của một layer tăng từ **1,8** lên **5,4** giữa hai checkpoint, bạn hiểu mức kéo giãn mạnh nhất tăng gấp **3** lần và nắm được cơ chế của spectral normalization khi chia weight cho giá trị này.

### 4. Low-rank approximation, PCA và condition number

Lưới ảnh **3** × **3** có rank 1 cho thấy ma trận lớn có thể nén thành tích của các vector mỏng, lưu **6** số thay vì **9** ô. Với dãy singular value giảm nhanh, việc giữ lại hai giá trị đầu tiên giúp gom xấp xỉ **98,9%** tổng bình phương năng lượng nhưng sai số Frobenius tương đối vẫn ở mức xấp xỉ **10,3%**, khẳng định LoRA không phải kỹ thuật nén ma trận gốc. Khảo sát điểm số của 4 thí sinh chỉ ra cách PCA xoay trục theo hướng trải rộng nhất và cảnh báo nguy cơ trục chính bị lệch khi thay đổi thang đo đơn vị. Cuối cùng, qua ví dụ mua cam quýt với condition number xấp xỉ **402**, bạn ước tính cận trên sai số tương đối chừng **20%** khi giải hệ vuông bằng fp16 và hiểu lý do không nên giải normal equations qua $M^T M$ trên máy tính.

## Vì sao 200Lab tạo ra khóa học này

Trong công việc hằng ngày của một AI Engineer, đại số tuyến tính xuất hiện ở những vị trí rất cụ thể: con số rank **8** trong cấu hình LoRA, phổ singular value của ma trận weight trong bài báo nghiên cứu, hay hai tỉ lệ phần trăm ghi cạnh trục của biểu đồ PCA. Các bài báo khoa học và model card thường mặc định người đọc đã quen thuộc với những khái niệm này, trong khi các công cụ train chỉ in ra kết quả số liệu mà không kèm theo điều kiện để đọc đúng. Khi thiếu nền tảng tính toán bên dưới, bạn dễ suy đoán ý nghĩa của thuật ngữ theo thói quen ngôn ngữ đời thường, chẳng hạn xem rank thấp là biểu hiện của model kém, hay coi LoRA là một phương pháp nén ma trận.

Những cách hiểu lệch ấy thường dẫn đến các quyết định kỹ thuật tốn kém trong các dự án thực tế. Khóa học phân tích những ngộ nhận thường thấy như việc chọn rank cho LoRA theo cảm tính thay vì tính toán lượng tham số học thêm, tin vào các cụm phân tách trên biểu đồ PCA chỉ giữ **19%** phương sai, hoặc vội vàng kết luận lỗi tràn số là do số điều kiện khi train model ở định dạng fp16. Nếu tìm lại các giáo trình đại số tuyến tính đại học, bạn sẽ gặp các chứng minh trừu tượng về không gian vector trước khi chạm vào một bài toán thực tế. Ngược lại, tài liệu hướng dẫn framework lại dùng thẳng SVD hay condition number mà không giải thích cơ chế biến đổi đằng sau.

200Lab xây dựng khóa học này để bắc nhịp cầu thực tế giữa hai nguồn tài liệu đó. Mỗi khái niệm toán học đều bắt đầu từ một tình huống gần gũi như bản đồ khu phố ô bàn cờ, cuốn sổ ghi chép hay chiếc vòng chun, nơi bạn tự tay tính toán trên ma trận chỉ vài hàng, vài cột. Khi nắm chắc bản chất hình học, bạn sẽ tự tin bước vào model để đọc shape của layer, chọn rank phù hợp khi fine-tune và biết chính xác điều kiện nào cần thỏa mãn để số liệu trong báo cáo thực sự đáng tin cậy.

## Những vấn đề thường gặp khi đọc ma trận và vector trong model

Khi quan sát các số liệu ma trận trong model, người làm kỹ thuật thường có phản xạ nhìn vào tên gọi của hàm hoặc giá trị lớn nhất rồi đưa ra kết luận ngay. Phép tính bản chất và các giả định toán học phía sau bị bỏ qua, khiến nhận định đưa ra vượt quá những gì số liệu thực tế đo đạc được.

- LoRA rank **8** trên ma trận weight **4.096** × **4.096** có **65.536** tham số và được ghi chú là nén ma trận còn xấp xỉ **0,39%** — LoRA giữ nguyên toàn bộ **16.777.216** tham số của ma trận gốc và học thêm phần cập nhật, nên **0,39%** là tỉ lệ tham số học thêm chứ không phải tỉ lệ nén.
- Số 8 trong cấu hình LoRA được coi là rank thực tế của phần cập nhật sau khi fine-tune — Giá trị này chỉ là mức trần cho rank; phần cập nhật là tích của hai ma trận nhỏ, và khi bắt đầu fine-tune một trong hai ma trận được khởi tạo bằng 0 nên rank ban đầu bằng 0.
- Layer khai báo bằng `nn.Linear` có bias được xem là linear map và hai layer có ReLU ở giữa vẫn được coi là gộp được — Layer có bias khác 0 là affine map, còn sự xuất hiện của hàm kích hoạt phi tuyến như ReLU khiến hai layer nói chung không thể gộp thành một ma trận duy nhất.
- Singular value lớn nhất tăng từ **1,8** lên **5,4** và báo cáo ghi nhận mọi vector qua layer đều bị kéo dài gấp ba — Giá trị này chỉ đo mức kéo dài lớn nhất theo một hướng duy nhất, còn sự biến đổi theo các hướng khác cần được xác định từ toàn bộ dãy singular value.
- Biểu đồ PCA của **2.000** embedding xuất hiện ba cụm tách rời và được kết luận là dữ liệu chia thành ba nhóm rõ rệt — Hai trục hiển thị chỉ giữ **19%** phương sai trong khi **81%** phương sai còn lại nằm ở các chiều không gian bị ẩn đi, nên các điểm sát nhau trên hình vẫn có thể cách xa nhau trong không gian **768** chiều.
- Trục đầu tiên của PCA giữ xấp xỉ **99,6%** phương sai khiến người đọc tin rằng trục này đã chứa gần đủ thông tin cho nhiệm vụ phân loại — Tỉ lệ áp đảo có thể chỉ phản ánh sự chênh lệch thang đo đơn vị giữa các cột, và PCA chỉ đo độ trải hình học của dữ liệu chứ không tính đến nhãn của bài toán.
- Weight của cột số ngày lớn hơn weight của cột số tuần và được nhận định là ngày quan trọng hơn tuần — Cột ngày bằng **7** lần cột tuần khiến các cột phụ thuộc tuyến tính, bài toán least squares có vô số nghiệm và từng weight riêng lẻ không phản ánh mức độ quan trọng của biến.
- Bước giải hệ vuông bằng fp16 có condition number xấp xỉ **400** và lỗi NaN xuất hiện được quy kết do số điều kiện này — Condition number chỉ đo mức độ phóng đại sai số làm tròn của nghiệm, trong khi NaN thường bắt nguồn từ hiện tượng tràn số khi giá trị tính toán vượt quá giới hạn **65.504** của kiểu fp16.

Mỗi vấn đề nêu trên đều được làm sáng tỏ trong từng bài học tương ứng, nơi bạn tự tay tính toán lại trên các ma trận nhỏ trước khi áp dụng vào model.

## Bạn sẽ học theo cách nào

- **Tính tay trên ma trận nhỏ** — Mỗi bài học khái niệm mở đầu bằng một tình huống đời thường như bản đồ khu phố hay trạm xe đạp, nơi bạn trực tiếp tính tay trên ma trận vài hàng vài cột trước khi đối chiếu với model ở cuối bài.
- **Kéo hoặc bấm để xem** — Với các chủ đề ghép phép biến đổi, phép chiếu, eigenvector, xấp xỉ hạng thấp, PCA và condition number, bạn tương tác trực tiếp trên hình vẽ để quan sát kết quả thay đổi theo từng thông số.
- **Trọn vẹn một khái niệm** — Sau ví dụ trực quan là định nghĩa chặt chẽ kèm điều kiện áp dụng, các cách hiểu sai thường gặp cùng nguyên nhân, và bài tập nhỏ để bạn thực hành ngay trên dữ liệu của mình.
- **Bài nền đặt đúng chỗ** — Hai bài học về vector và ma trận từ khóa Toán học cơ bản cho AI Engineer được đặt ngay trước các nội dung cần sử dụng, giúp bạn ôn lại kiến thức cần thiết hoặc đi tiếp ngay nếu đã hoàn thành khóa trước.
- **Quiz ngắn cuối bài** — Mỗi bài học kết thúc bằng một bài trắc nghiệm ngắn giúp bạn củng cố kiến thức, trong đó có những câu hỏi mời bạn dự đoán kết quả trước khi bắt tay vào tính.

## Khóa học dành cho ai

1. **AI Engineer** — Bạn cần đọc chính xác shape của layer, chọn rank phù hợp cho LoRA, giải thích biểu đồ PCA của embedding và kiểm soát sai số số học khi train model với kiểu dữ liệu fp16 hay bf16.
2. **Vibe coder muốn đi sâu** — Bạn muốn làm chủ kỹ thuật fine-tune hoặc triển khai embedding cho ứng dụng, đồng thời cần nền tảng toán học ở chương 1 và chương 4 để đọc hiểu tài liệu kỹ thuật cùng model card.
3. **AI/Agent Builder** — Bạn cần đánh giá phương pháp luận trong các bài báo nghiên cứu để chọn model nền tảng, thiết lập cấu hình tinh chỉnh và tối ưu hóa không gian lưu trữ embedding cho hệ thống agent.

## Những điều cần lưu ý

- **Phạm vi thuật toán phân rã** — Gram-Schmidt, QR hay Cholesky chỉ xuất hiện như tên gọi thuật toán, và eigenvalue chỉ tính tay trên ma trận **2** × **2**; bù lại, bạn hiểu bản chất các giá trị mà thư viện trả về và biết rõ điều kiện để sử dụng chúng an toàn.
- **Kiến thức toán cần chuẩn bị** — Bạn cần nắm vững các phép tính cơ bản như giải phương trình một ẩn, đọc đồ thị hàm số, tính tích vô hướng ở **2-3** chiều, nhân ma trận đến **3** × **3**, chuyển vị ma trận và tính phương sai; những kiến thức này đều đã được trang bị đầy đủ trong khóa Toán học cơ bản cho AI Engineer.
- **Khóa xác suất không bắt buộc** — Khái niệm ma trận hiệp phương sai được tóm tắt gọn trong một định nghĩa đủ để bạn tính toán với PCA; nếu muốn hiểu sâu bản chất thống kê, bạn có thể tham khảo khóa Xác suất thống kê cho AI Engineer mà không bắt buộc phải học trước.
- **Mã nguồn và số liệu minh họa** — Các đoạn mã Python với NumPy trong bài được thiết kế để bạn đọc hiểu luồng tính toán, và các số liệu model mang tính chất minh họa; tuy vậy, bạn có thể đưa ngay số liệu từ dự án của mình vào cùng cấu trúc tính toán ấy.

## Bắt đầu từ đâu

Ở bài mở đầu, bạn tiếp cận một báo cáo fine-tune giả định với bốn dòng số liệu thực tế, từ cấu hình LoRA rank **8** đến số điều kiện xấp xỉ **400**, để nhận diện khái niệm toán học đứng sau từng chỉ số. Chỉ bằng các phép tính nhân, chia và cộng thông thường, bạn tự tay tính ra **65.536** tham số học thêm của LoRA và nhận ra hai trục PCA chỉ giữ **19%** phương sai. Bài học này được xếp đầu tiên nhằm giúp bạn thấy ngay ứng dụng thực tế của toàn bộ bốn chương mà chưa cần đòi hỏi bất kỳ công thức toán phức tạp nào.

## Chương trình

- Đại số tuyến tính và số liệu trong báo cáo kết quả fine-tune (miễn phí)

### Vector, norm và linear map

- Vector, cosine và cách embedding search xếp hạng tài liệu · quiz
- Vector, norm và gradient clipping khi train model (miễn phí) · quiz
- Ma trận, phép nhân ma trận và số tham số của model · quiz
- Linear map, composition và cách các layer của model biến đổi vector (miễn phí) · quiz

### Span, rank, phép chiếu và least squares

- Span, basis và những feature không thêm thông tin cho model (miễn phí) · quiz
- Rank, null space và rank r trong LoRA · quiz
- Phép chiếu, residual và việc tách một hướng khỏi vector embedding · quiz
- Least squares và trọng số khớp dữ liệu nhất trong linear regression · quiz

### Eigenvalue, ma trận đối xứng và SVD

- Eigenvalue, eigenvector, ma trận đối xứng và độ cong của bề mặt loss · quiz
- SVD, singular value và các hướng mà ma trận trọng số kéo giãn vector · quiz

### Low-rank approximation, PCA và condition number

- Low-rank approximation và sai số khi nén ma trận trọng số · quiz
- PCA, explained variance và cách đọc biểu đồ PCA của embedding · quiz
- Condition number và độ nhạy của nghiệm khi tính bằng fp16 hoặc bf16 · quiz
