Tiếp tục với những kiến thức cơ sở về Đại số Tuyến tính, bài viết sau đây nói về ma trận và tensor.
Mục lục
0 chiều, 1 chiều, 2 chiều, và nhiều chiều (tiếp theo)
6. Ma trận (matrix)
7. Làm toán với ma trận
8. Tensor
9. 0 chiều, 1 chiều, 2 chiều, và nhiều chiều
Nguồn tham khảo
0 chiều, 1 chiều, 2 chiều, và nhiều chiều (tiếp theo)
6. Ma trận (matrix)
Ở bài viết trước, chúng ta đã biết vector là gì và các dữ liệu được mã hóa thông qua vector như thế nào. Trong thực tế, số lượng dữ liệu cần lưu trữ và xử lí là vô cùng lớn; sử dụng các thao tác lần lượt trên vector thì lại rườm rà. Vì thế, người ta mới nghĩ cách để sử dụng nhiều vector cùng một lúc: họ xếp tất cả các vector cột cùng độ dài cần xử lí cạnh nhau, tạo ra một bảng dữ liệu 2 chiều gọi là ma trận (matrix).
Tiếp tục với ví dụ ở phần 1 (scalar và vector), thay vì viết ra lần lượt 2 vector và
thể hiện tính chất của hai ngôi nhà, ta có thể viết chúng cùng một lúc với ma trận:
trong đó, cột bên trái thể hiện số liệu cho căn nhà , cột bên phải ứng với căn nhà
.
Cũng giống như ở vector, mỗi phần tử của một ma trận đều có địa chỉ và có thể được truy cập thông qua địa chỉ tương ứng.
Các địa chỉ của một ma trận bao gồm hai thành phần là dòng và cột. Cho phần tử của một ma trận
nào đó, ta có thể biết là phần tử này nằm ở dòng
(từ trên xuống dưới), cột
(từ trái sang phải) của ma trận đó. Khi nói đến một ma trận kích thước
, ta cũng biết rằng ma trận đó có
dòng và
cột. Ngoài ra, để có thể thao tác với ma trận, các phần tử của cùng một ma trận phải có chung kiểu dữ liệu (là
int hoặc float). Một ma trận có kiểu dữ liệu
float có thể được gọi là phần tử của .
Một số loại ma trận đặc biệt
Vector
Ma trận có nhiều dòng, nhiều cột được thì cũng có thể có 1 dòng hay 1 cột. Vector cũng được coi là ma trận với kích thước (vector hàng) hoặc
(vector cột).
Ma trận vuông
Hình ảnh trực quan của ma trận là bảng chữ nhật. Khi bảng chữ nhật này trở thành hình vuông, tức là chiều dài hai chiều của bảng bằng nhau, ta có được một ma trận vuông. Như vậy, những ma trận có số dòng bằng số cột (kích thước ) thì được gọi là ma trận vuông.
Ma trận không
Vector không là vector chứa giá trị tại tất cả vị trí. Cũng như vậy, ma trận không (hay ma trận null)
là ma trận kích thước
trong đó tất cả phần tử mang giá trị
.
Ma trận đơn vị
Có số thì cũng có số
. Có ma trận
thì sẽ có ma trận
thôi!
Ma trận đơn vị là ma trận vuông thỏa mãn một tính chất đặc biệt: tại ma trận đơn vị , ngoại trừ các phần tử trên đường chéo
cùng mang giá trị
, các phần tử còn lại đều mang giá trị
.
Ma trận đơn vị kích thước được gọi là ma trận đơn vị bậc
và có kí hiệu là
.
Ma trận đường chéo
Những con số trong ma trận đơn vị thật đơn sắc. Nếu không phải số
mà là số
, số
thì sao?
Ma trận vuông kích thước
được gọi là ma trận đường chéo khi tất cả phần tử nằm ngoài đường chéo
đều có giá trị là
.
7. Làm toán với ma trận
Ma trận chuyển vị
Phép chuyển vị cho phép “đổi dòng thành cột, đổi cột thành dòng”. Để thực hiện được điều này, phép chuyển vị biến phần tử ở dòng , cột
của một ma trận
thành phần tử ở dòng
, cột
ở ma trận
mới, với mỗi cặp
khả thi. Phát biểu Toán học, ma trận
là ma trận chuyển vị của ma trận
khi và chỉ khi
.
Lúc này, được ký hiệu là
.
Một số ví dụ:

Phép cộng ma trận
Phép cộng ma trận lấy input là 2 ma trận cùng kích thước, và trả ra một ma trận khác cũng cùng kích thước. Ma trận output có giá trị tại vị trí bất kì bằng tổng giá trị của các phần tử cùng vị trí của hai ma trận input.
với
và
.
Phép nhân ma trận với scalar
Tương tự như phép nhân vector với scalar, tại phép nhân ma trận với scalar, ta cũng nhân từng phần tử của ma trận với scalar ấy. Ví dụ:

Phép nhân hai ma trận
Phép nhân hai ma trận được thực hiện theo nguyên tắc dòng và cột. Giả sử tích của hai ma trận và
là
thì giá trị của phần tử
sẽ bằng với tích vô hướng của vector dòng
của
và vector cột
của
. Muốn thực hiện được, rõ ràng là dòng
bất kì của ma trận
phải có cùng độ dài với cột
bất kì của
. Nói cách khác, điều kiện để thực hiện phép nhân hai ma trận là số cột của ma trận đầu phải bằng số dòng của ma trận sau.
Gọi ma trận là tích của 2 ma trận
và
thì
Phép nhân Hadamard
Phép nhân Hadamard cùng với phép cộng ma trận là các phép toán được thực hiện theo từng cặp phần tử tương ứng của hai ma trận (element-wise). Phép nhân này lấy input là hai ma trận cùng kích thước và cũng trả ra một ma trận có cùng kích thước. Mỗi phần tử của ma trận output có giá trị là tích hai phần tử tương ứng từ hai ma trận input. Về mặt công thức thì
với
và
.
Ma trận nghịch đảo
Trong Toán sơ cấp, nghịch đảo của số là một số
sao cho
Trong ngôn ngữ của ma trận, số ở trên được thay bằng ma trận đơn vị; phép nhân scalar cũng được thay thế bằng phép nhân 2 ma trận.
Với
là một ma trận vuông, ta gọi
là ma trận nghịch đảo của
nếu
Có rất nhiều tính chất cho từng phép toán cho ma trận nói trên. Việc nắm được một số lượng nhất định trong số chúng sẽ giúp ích cho bạn trong quá trình tính toán và biến đổi với ma trận. Tuy nhiên việc liệt kê quá nhiều tính chất trong bài viết này là không cần thiết, do những tính chất ấy có thể dễ dàng tìm được trên nhiều nguồn tham khảo trực tuyến. Vì vậy, chúng mình sẽ chỉ đưa ra những nguồn tham khảo hữu ích cho bạn đọc.
Norm của ma trận
Khái niệm norm của ma trận có nhiều tương đồng với khái niệm norm của vector. Với là một scalar,
và
là các ma trận cùng kích thước của kiểu dữ liệu scalar tương ứng thì công thức norm ma trận
phải thỏa mãn những tính chất sau:
khi và chỉ khi
Tại đây mình đưa ra ví dụ công thức norm bậc 2 của ma trận, giống như công thức Euclidean norm của vector:
8. Tensor
Đã bao giờ bạn thắc mắc là làm thế nào mà những hình ảnh màu trên máy tính có thể tái hiện lại được chân thực những hình ảnh bạn quan sát được trong cuộc sống? Câu trả lời nằm ở điều kì diệu mang tên tensor.
Trước tiên hãy quay lại một chút về ma trận.
Mỗi tấm ảnh trắng đen đều mang thông tin dưới dạng một lưới các điểm ảnh nhỏ (pixel). Lưới pixel có thể được biểu diễn bởi một ma trận, trong đó mỗi phần tử mang dữ liệu về “độ trắng” (từ 0 đến 255) cho điểm ảnh ở vị trí tương ứng.

Ví dụ: 4 ảnh trắng đen phía trên được lấy từ bộ dữ liệu chữ số viết tay MNIST, mỗi ảnh có kích thước 28 * 28 pixel, tương ứng với ma trận chứa 28 * 28 con số trong khoảng từ 0 đến 255.
Nhưng bây giờ thì những bức ảnh trong cuộc sống hằng ngày của chúng ta đã mang nhiều màu sắc rực rỡ hơn chứ không chỉ gói gọn giữa trắng và đen! Để biểu diễn màu sắc, người ta dùng hệ thống gồm ba màu cơ bản là đỏ, lục, và lam. Mỗi màu sắc khác được tạo ra đều là tổ hợp của ba màu này với cường độ thích hợp. Ba màu sắc ứng với ba tấm màng lọc, mà trong đó mỗi tấm màng có nhiệm vụ không khác gì lưới pixel trong ảnh trắng đen: thể hiện “độ đỏ”, “độ lục”, hoặc “độ lam” bằng con số từ 0 đến 255 cho mỗi điểm ảnh.

Bạn đã biết rằng các vector xếp cạnh nhau tạo thành ma trận. Vậy thì việc xếp ba ma trận cạnh nhau để tạo thành một kiểu dữ liệu mới là chuyện hoàn toàn có thể. Người ta gọi tên kiểu dữ liệu ấy là tensor bậc 3. 3 chiều của dữ liệu bao gồm chiều sâu (sử dụng “màng lọc” nào), chiều dài (địa chỉ cột trong ma trận điểm ảnh), chiều rộng (địa chỉ dòng trong ma trận điểm ảnh). Bản thân các ma trận cũng là những tensor bậc 2, còn vector là tensor bậc 1.
Xếp những tensor bậc 3 cạnh nhau, ta được một tensor bậc 4. Lấy ví dụ, mỗi đoạn phim sẽ bao gồm nhiều khung ảnh chạy nối tiếp nhau. Mỗi khung ảnh màu là một tensor bậc 3, và ta sẽ có thêm địa chỉ thứ 4 để chỉ đến trình tự thời gian (khung ảnh nào đến trước, khung ảnh nào đến sau). Tương tự, ta có thể xây dựng nên các tensor bậc 5, bậc 6, … một cách đơn giản.

9. 0 chiều, 1 chiều, 2 chiều, và nhiều chiều
Đến thời điểm này, chúng mình đã điểm qua các khái niệm về scalar, vector, ma trận và tensor, cùng với một số phép toán được thực hiện trên những đối tượng này. Chặng đường chúng ta đã đi qua có tên gọi là “0 chiều, 1 chiều, 2 chiều, và nhiều chiều”. Từ những “con số” mang tên scalar, chúng ta đã đến với vector, đối tượng dữ liệu có phần tử được truy cập qua một chỉ số, và sau đó là ma trận, bảng hình chữ nhật có dòng và cột, và cuối cùng là tensor, kiểu dữ liệu tổng quát, bao trùm lên các đối tượng còn lại. Không phải trùng hợp khi trong lập trình, vector được gọi là “mảng một chiều”, ma trận là “mảng hai chiều”, và tensor có thể được coi là “mảng nhiều chiều”.
Phần tiếp theo của chuỗi bài “Machine Learning và Đại số Tuyến tính” nói về không gian vector sẽ sớm được hoàn thành. Hẹn gặp lại các bạn vào phần sau!
Nguồn tham khảo
- Báck khoa Toàn thư mở Wikipedia;
- Tài liệu giới thiệu về Đại số Tuyến tính, MaSSP Computer Science 2018;
- Tài liệu Đại số Tuyến tính, PiMA 2018;
- [Ma trận] Một số khái niệm cơ bản, Do Minh Hai;
- A brief survey of tensors, Berton Earnshaw.
Trong bài viết vừa rồi, những định nghĩa được đưa ra dựa trên nhiều nguồn tham khảo trên Internet và cả góc nhìn cá nhân của các tác giả, do đó có thể là không chuẩn xác. Bạn đọc có bất kì đóng góp nào xin vui lòng liên hệ Facebook page của blog hoặc tài khoản Facebook cá nhân của Minh.