Giải mã “Đôi mắt” của Trí tuệ nhân tạo: Ma trận và Tích vô hướng!

Trần Lương Anh – Toán Tin 03 – K68

Video minh họa: Xem tại đây

bài viết trước, chúng ta đã khám phá cách Đại số tuyến tính “dọn dẹp” dữ liệu ảnh thô thông qua các phép biến đổi sắc độ, nắn chỉnh không gian Affine và chuẩn hóa số liệu về khoảng. Bức ảnh số lúc này đã sẵn sàng. Nhưng làm thế nào để thực sự mở mắt cho máy tính? Làm thế nào để thuật toán nhận diện được chữ số viết tay ngệch ngoạc của con người và tự tin tuyên bố: “Đây là số 4!”?

Câu trả lời tiếp tục nằm ở Đại số tuyến tính: Phép toán Tích chập (Convolution)Phép Tích vô hướng (Dot Product).

1. Máy tính “nhìn” ảnh như thế nào?

Khi nhìn vào một chữ số viết tay, con người gần như nhận ra ngay lập tức đây là số 4. Chúng ta không hề tính toán, cũng chẳng đo góc hay nhân ma trận. Bộ não chỉ đơn giản nhận ra những đường nét quen thuộc.

Nhưng với AI thì hoàn toàn khác. AI không nhìn thấy số 4 như con người. Đối với nó, bức ảnh chỉ là một ma trận gồm hàng nghìn giá trị số biểu diễn độ sáng của từng điểm ảnh.

Nhiệm vụ của AI là phân tích ma trận số này để tìm ra những đặc trưng (features) quan trọng như cạnh dọc, cạnh ngang, góc giao nhau hay đường cong. Chính những đặc trưng này sẽ được kết hợp lại để AI đưa ra dự đoán cuối cùng.

Để thực hiện việc trích xuất đặc trưng đó, AI sử dụng một bộ lọc nhỏ (Filter/Kernel) liên tục quét qua toàn bộ bức ảnh.

Kernel 3x3 trượt trên ảnh

Kernel 3×3 trượt trên ảnh và tính giá trị tại từng vị trí để tạo Feature Map.

Trong GIF minh họa trên, bộ lọc được thiết kế để phát hiện cạnh phải. Khi Kernel quét đến những vùng có nét giống với mẫu này, kết quả tính toán sẽ cho giá trị lớn và được thể hiện bằng màu đỏ trên Feature Map. Điều đó cho thấy AI không còn lưu giữ toàn bộ bức ảnh, mà chỉ làm nổi bật những đặc trưng mà bộ lọc quan tâm.

Vậy tại sao chỉ từ một ma trận 3×3, AI lại biết được đâu là cạnh phải?

Bí mật nằm ở phép toán được thực hiện mỗi khi Kernel dừng lại tại một vị trí. AI sẽ lấy đúng vùng ảnh 3×3 tương ứng (gọi là Patch) và sử dụng một phép toán của Đại số tuyến tính để đo mức độ tương đồng giữa Patch và Kernel.

Phép tích chập

Quan sát hình trên, có thể thấy mỗi lần Kernel dừng lại, AI sẽ lấy từng phần tử của Patch (Window) nhân với phần tử tương ứng trong Filter/Kernel, sau đó cộng tất cả các kết quả lại để tạo thành một giá trị duy nhất (Output).

Thoạt nhìn, đây chỉ giống như một phép nhân rồi cộng thông thường. Tuy nhiên, dưới góc nhìn của Đại số tuyến tính, phép tính này lại có một cái tên rất quen thuộc: Tích vô hướng giữa hai ma trận.

Trong đó, A là ma trận Patch được lấy từ ảnh, còn K là Kernel. Công thức trên thực hiện đúng những gì chúng ta vừa quan sát trong GIF và hình minh họa: nhân từng cặp phần tử tương ứng rồi cộng lại thành một giá trị duy nhất.

Tại sao chỉ với phép “nhân từng phần tử rồi cộng lại”, AI lại biết được đâu là cạnh dọc hay cạnh phải?

Thực chất, phép tích vô hướng không chỉ tạo ra một con số. Nó còn đóng vai trò như một thước đo mức độ tương đồng giữa vùng ảnh (Patch) và mẫu mà Kernel đang tìm kiếm.

Nếu hai ma trận có cấu trúc càng giống nhau, kết quả phép tính sẽ càng lớn. Ngược lại, nếu chúng khác biệt, giá trị thu được sẽ nhỏ hoặc gần bằng 0.

Điều này trở nên rõ ràng hơn nếu ta trải phẳng hai ma trận 3×3 thành hai vector gồm 9 phần tử:

Trải phẳng ma trận  

Về mặt Toán học, tích vô hướng của hai vector được tính bằng công thức: A · B = |A| × |B| × cos(θ). Giá trị này phụ thuộc vào cả độ lớn của vector (tương ứng với độ sáng của điểm ảnh) và góc θ giữa chúng.

Tuy nhiên, vì dữ liệu đầu vào thường đã được chuẩn hóa (giới hạn độ lớn), yếu tố cốt lõi quyết định mức độ khớp “đặc trưng” chính là góc θ. Có thể hiểu đơn giản rằng, góc càng nhỏ thì hai vector càng “cùng hướng”, tức là cấu trúc của vùng ảnh càng giống với mẫu của Kernel.

Góc giữa 2 vector
  • Góc θ ≈ 0°: Hai vector gần như cùng hướng, nghĩa là các giá trị trong Patch có xu hướng giống với Kernel. Khi đó cos(θ) ≈ 1, tích vô hướng đạt giá trị lớn. Trên Feature Map, những vị trí này sẽ có phản hồi mạnh (màu đỏ trong GIF), cho thấy bộ lọc đã phát hiện được đặc trưng mong muốn.
  • Góc θ ≈ 90°: Hai vector gần như vuông góc nên cos(θ) ≈ 0. Tích vô hướng cũng gần bằng 0, chứng tỏ vùng ảnh hầu như không chứa đặc trưng mà Kernel đang tìm kiếm.
  • Góc θ ≈ 180°: Hai vector ngược hướng nên cos(θ) ≈ -1. Khi đó tích vô hướng mang giá trị âm, thể hiện rằng cấu trúc của Patch trái ngược với mẫu của Kernel.

Quay trở lại GIF ở đầu mục, mỗi ô màu đỏ trên Feature Map chính là vị trí mà Patch có mức độ tương đồng cao với Kernel, tức là hai vector tạo với nhau một góc nhỏ và cho giá trị tích vô hướng lớn. Nhờ liên tục thực hiện phép so sánh này trên toàn bộ bức ảnh, AI dần xây dựng được một bản đồ đặc trưng (Feature Map), làm nổi bật những vùng chứa cạnh phải và loại bỏ các vùng không liên quan.

2. Từ một Kernel đến cả mạng CNN: LeNet-5

Dù sử dụng Kernel 3×3 hay 5×5, bản chất của phép tích chập vẫn không thay đổi: AI liên tục thực hiện phép tích vô hướng giữa Patch và Kernel. Tuy nhiên, một Kernel chỉ có thể phát hiện một loại đặc trưng. Để nhận diện được cả một chữ số, AI cần phối hợp nhiều Kernel trong một mạng CNN hoàn chỉnh.

Kiến trúc LeNet-5

Hình trên minh họa kiến trúc của LeNet-5. Từ một ảnh đầu vào, dữ liệu lần lượt đi qua các lớp Convolution, Downsampling, Fully Connected và cuối cùng là Output Layer để đưa ra dự đoán.

Trong số các thành phần này, trọng tâm của bài viết là các lớp Convolution, bởi đây chính là nơi AI thực hiện phép tích chập, hay dưới góc nhìn của Đại số tuyến tính là hàng triệu phép tích vô hướng giữa Patch và Kernel để trích xuất đặc trưng từ ảnh.

Quan sát Hình trên (từ dưới lên):

  • Convolutional Layer 1: Là tầng tích chập đầu tiên sau ảnh đầu vào. Tầng này sử dụng nhiều Kernel 5×5 hoạt động song song để phát hiện các đặc trưng cơ bản như cạnh, nét thẳng, đường cong và tạo ra các Feature Map đầu tiên.
  • Convolutional Layer 2: Nằm ở tầng thứ 4, lớp này tiếp tục áp dụng các Kernel 5×5 lên các Feature Map đã tạo ở lớp trước. Nhờ đó, mạng có thể kết hợp những đặc trưng đơn giản thành các đặc trưng phức tạp hơn, chẳng hạn như giao điểm giữa các nét hoặc một phần của chữ số.
  • Downsampling Layer: Nằm ngay sau của lớp Convolution, có nhiệm vụ giảm kích thước Feature Map, loại bỏ thông tin dư thừa và giảm số lượng phép tính, đồng thời vẫn giữ lại các đặc trưng quan trọng.
  • Fully Connected Layer và Output Layer: Nằm ở các tầng cuối của mạng. Các đặc trưng đã học được sẽ được tổng hợp để tính xác suất thuộc về từng chữ số (0–9), từ đó đưa ra kết quả nhận diện cuối cùng.

Dù kiến trúc CNN có nhiều lớp và nhiều thành phần khác nhau, cốt lõi của quá trình trích xuất đặc trưng vẫn là phép tích chập. Mỗi lớp Convolution đều lặp lại phép toán này trên hàng triệu vùng ảnh nhỏ để từng bước giúp AI “nhìn” và hiểu được nội dung của bức ảnh.

3. Cuộc cách mạng kích thước: Tại sao 3×3 đánh bại 5×5?

Ở mục trước, chúng ta đã thấy LeNet-5 sử dụng các Kernel 5×5 để trích xuất đặc trưng. Tuy nhiên, nếu quan sát các kiến trúc CNN hiện đại như VGG hay ResNet, bạn sẽ thấy phần lớn chúng đều chuyển sang sử dụng Kernel 3×3.

Điều thú vị là sự thay đổi này không làm giảm khả năng “nhìn” của AI, mà ngược lại còn giúp mô hình hiệu quả hơn. Điều này xuất phát từ hai lý do chính: trường thụ cảm (Receptive Field)số lượng tham số cần học.

Về mặt hình học: Giữ nguyên trường thụ cảm

Hai lớp tích chập 3×3 liên tiếp sẽ có trường thụ cảm (Receptive Field) tương đương với một lớp 5×5. Nói cách khác, AI vẫn có thể “quan sát” cùng một vùng ảnh như khi dùng Kernel 5×5, nhưng thông qua hai bước xử lý liên tiếp.

Về mặt tối ưu tham số: Ít tham số hơn

Lợi ích lớn nhất nằm ở số lượng trọng số cần lưu trữ và học. Nếu Feature Map có C kênh, thì số lượng trọng số phải lưu của Conv 5×5 và chồng 2 lớp Conv 3×3 lần lượt là:

Công thức số lượng trọng số

Hãy nhìn vào một ví dụ thực tế: Xét với độ sâu C = 128 thì ta có:

Ví dụ tham số

Chúng ta đã tiết kiệm được tới hơn 114,000 con số phải lưu trữ cho GPU chỉ trong duy nhất một lớp mạng!

Nhờ giảm số lượng tham số mà vẫn giữ nguyên trường thụ cảm, hai lớp 3×3 trở thành lựa chọn hiệu quả hơn so với một lớp 5×5. Đây là lý do các kiến trúc CNN hiện đại như VGG và ResNet đều ưu tiên sử dụng các Kernel 3×3.

4. Kết luận

Vậy, AI thực sự “nhìn” hình ảnh như thế nào?

Câu trả lời là AI không nhìn bằng mắt như con người. Thay vào đó, mỗi bức ảnh được biểu diễn dưới dạng ma trận các giá trị độ sáng, sau đó các Kernel liên tục quét qua từng vùng ảnh và sử dụng phép tích vô hướng của Đại số tuyến tính để đo lường mức độ khớp với những đặc trưng cần tìm. Qua nhiều lớp Convolution, các đặc trưng đơn giản như cạnh và đường cong dần được kết hợp thành những biểu diễn phức tạp hơn, giúp AI cuối cùng nhận diện được toàn bộ đối tượng trong ảnh.

Điều thú vị là, những khái niệm từng xuất hiện trong môn Đại số tuyến tính như vector, ma trận và tích vô hướng không chỉ nằm trên giấy hay trong phòng học. Chúng chính là nền tảng giúp các mô hình Computer Vision “nhìn thấy” và hiểu được thế giới xung quanh.

Và hy vọng sau bài viết này, khi ngồi trong lớp Đại số tuyến tính và đối mặt với những ma trận hay vector tưởng chừng khô khan, các bạn sinh viên Toán – Tin sẽ mỉm cười và nhận ra rằng: mình đang học một trong những kiến thức nền tảng đứng sau thị giác máy tính và rất nhiều công nghệ AI hiện đại.

Xem thêm