Ôn tập về Đại số Tuyến tính

Có thể nói, toán là trung tâm của bất kỳ thuật toán Machine Learning nào. Từ các mô hình Machine Learning cơ bản cho đến các mô hình Deep Learning phức tạp đều được xây dựng và phát triển dựa trên công thức toán học. Vì vậy, khi nắm vững kiến thức toán chúng ta có thể hiểu được và tinh chỉnh mô hình Machine Learning hay Deep Learning trở nên tốt hơn. Hình dưới đây sẽ cho chúng ta thấy được tầm quan trọng của toán học trong lĩnh vực Machine Learning, Deep Learning.

Trong chuỗi bài viết này, chúng ta sẽ cùng tìm hiểu về các khái niệm:

  • Đại số tuyến tính
  • Xác suất thống kê
  • Giải tích

Đầu tiên chúng ta sẽ tìm hiểu các kiến thức về đại số tuyến tính – một môn học rất quen thuộc đối với sinh viên chúng ta ngay từ năm nhất. Theo cuốn sách Pro Deep Learning có viết: “Đại số tuyến tính là một lĩnh vực của toán học nhằm xử lý các vector và sự biến đổi của chúng từ không gian vector này sang không gian vector khác”. Trong Machine Learning và Deep Learning thì chúng ta sẽ thường xuyên sử dụng và thao tác trên dữ liệu đa chiều vì vậy đại số tuyến tính càng đóng một vai trò quan trọng trong hầu hết các thuật toán thuộc lĩnh vực này.

1. Vector

Yếu tố căn bản và cốt lõi của Đại số tuyến tính là các vector. Vì vậy, chúng ta cần phải hiểu chính xác vector là gì?

Một vector có thể là bất cứ thứ gì có các tính chất hợp lý về phép cộng hai vector và phép nhân vector với một số vô hướng trong không gian vector đó. Khái niệm về hai tính chất này sẽ xuất hiện nhiều lần trong bài viết này và đóng một vai trò quan trọng trong việc định nghĩa không gian vector và ánh xạ tuyến tính.

Trong Khoa học máy tính, vector là một mảng các giá trị liên tục hoặc rời rạc. Một vector có thể biểu diễn theo chiều ngang hoặc chiều dọc. Ký hiệu:

\vec{a} = (x_1, x_2, x_3, .., x_n), \vec{b} = \begin{pmatrix} x_1\\ x_2\\ x_3\\ …\\ x_n \end{pmatrix}

Ví dụ: Muốn dự đoán xem, một người có béo phì hay không, chúng ta cần dựa vào features như tuổi, giới tính, chiều cao và cân nặng. Anh chàng Bob có độ tuổi là 20, cao 1m65, cân nặng là 60. Bạn nữ Alice có độ tuổi 18, cao 1m5, cân nặng là 65. Ta sẽ biểu diễn chúng dưới dạng vector:

Bob = (20, Nam, 1.65, 60) và Alice = (18, Nữ, 1.5, 65)

, rõ ràng thông tin của Alice và Bob khi được biểu diễn dưới dạng vector sẽ ngắn gọn hơn. Nhưng máy tính chỉ có thể xử lý số, ta cần phải chuyển thông tin về dạng số bằng cách mã hóa nữ thành 0 và nam thành 1. Vậy ta có được:

Bob = (20, 1, 1.65, 60) và Alice = (18, 0, 1.5, 65)

Với bằng các biểu diễn trên, thông tin sẽ ngắn gọn và máy tính có thể hiểu được, quá trình tính toán cũng dễ dàng hơn.

Để xây dựng mô hình Machine Learning, trước tiên bao giờ hết là ta phải có dữ liệu. Để máy tính có thể xử lý được dữ liệu, ta cần phải vector hóa dữ liệu.

2. Không gian vector (Không gian tuyến tính)

Đối tượng ban đầu của Đại số tuyến tính là việc giải và biện luận các hệ phương trình tuyến tính. Tuy vậy, để có thể hiểu thấu đáo điều kiện đảm bảo cho một hệ phương trình tuyến tính có nghiệm và cấu trúc nghiệm của nó, người ta đã đưa ra khái niệm không gian vector khái niệm này đã trở thành một trong những trụ cột của Đại số tuyến tính. Không gian vector sau này đã được sử dụng phổ biến trong mọi lĩnh vực như: Cơ học, Hóa học, Khoa học máy tính và nhiều nghành kỹ thuật khác.

Tập hợp những vector, tạo thành không gian vector. Hay nói cách khác, không gian chứa các vector được gọi là không gian vector. Kích thước của không gian vector có thể là hữu hạn hoặc vô hạn, nhưng với hầu như các vấn đề trong Machine Learning hoặc data science thì chúng đều giải quyết các vector có độ dài cố định.

Trong Machine Learning, bộ dữ liệu của chúng ta gồm nhiều mẫu dữ liệu, và những mẫu này đều có chung lượng n feature và thứ tự. Khi này, mỗi mẫu dự liệu là một vector và những vector này đều có n chiều. Tập hợp những vector, ta sẽ tạo ra được một không gian vector n chiều, không gian mà chứa những vector này. Ta cũng có thể xem một vector như một điểm trong không gian. Những điểm cùng lớp, sẽ gần nhau hơn. Những điểm khác lớp sẽ xa nhau hơn. Chính vì vậy, mà người ta đó tạo ra được những thuật toán K-NN, K-Mean, SVM,…Và model được huấn luyện có tốt hay không tùy thuộc features có tốt hay không.

Ví dụ: ta tiếp tục ví dụ về dự đoán xem một người có béo phì hay không. Bộ dữ liệu của chúng ta chứa thông tin về những feature như tuổi, giới tính, chiều cao, cân nặng của nhiều người. Và như ví dụ trên, thông tin của một người được biểu diễn dưới dạng một vector. Với thông tin của nhiều người, ta sẽ có nhiều vector. Những vector này sẽ tạo ra một được không gian vector gồm 4 chiều, với mỗi chiều tương ứng là tuổi, giới tính, chiều cao, cân nặng.

2.1. Khái niệm

Tập hợp V ∉ ∅ được gọi là không gian vector trên K. Nếu nó được trang bị hai phép toán gồm:

(a) Phép cộng 2 vector:  

+ : V \times V \rightarrow V(\alpha, \beta) \rightarrow \alpha + \beta

(b)Phép nhân vector với vô hướng:   

\cdot : K \times V \rightarrow V (a, \alpha) \rightarrow a\alpha

Các phép toán trên thỏa mãn những điều kiện (tiên đề) sau :

(\alpha + \beta) + \gamma = \alpha + (\beta + \gamma) \\ \exists 0 \in V: 0 + \alpha=\alpha + 0= \alpha\\ \forall \alpha \in V, \exists {a}’\in V: \alpha + {\alpha}’={\alpha}’+\alpha =0\\ \alpha +\beta=\beta+\alpha\\ (a+b)\alpha=a\alpha + b\alpha\\ a(\alpha +\beta)=a\alpha +a\beta\\ a(b\alpha)=(ab)\alpha\\ 1\alpha=\alpha\\ \forall a,b \in K, \forall \alpha, \beta, \gamma \in V

Với các phần tử của được gọi là các vector, các phần tử của được gọi là các vô hướng (scalars).

Với khái niệm trên đã cho ta biết rằng, không phải một tập gồm những vector nào cũng tạo ra không gian vector. Điều kiện cần là những vector này phải cùng chiều. Và điều kiện đủ là hai phép toán cộng hai vector và phép nhân vô hướng với vector phải thỏa 8 tiên đề trên.

Ví dụ:

  • Gọi Kn là tập hợp gồm tất cả các cột n-thành phần , ∀ xi ∈ K. Nó cũng lập nên một không gian vector với các phép toán:
  • \begin{pmatrix} x_1\\ \cdots \\ x_n \end{pmatrix} + \begin{pmatrix} y_1\\ \cdots \\ y_n \end{pmatrix} = \begin{pmatrix} x_1+y_1\\ \cdots \\ x_n+y_n \end{pmatrix}, a\begin{pmatrix} x_1\\ \cdots \\ x_n \end{pmatrix}=\begin{pmatrix} ax_1\\ \cdots \\ ax_n \end{pmatrix}
  • Bộ dữ liệu gồm nhiều mẫu dữ liệu, và những mẫu dữ liệu đều phải có cùng chung những feature và thứ tự . Khi đó, những vector này mới có thể được chứa trong cùng một không gian vector A có chiều cùng với chiều của những mẫu dữ liệu. Nếu có một vector khác, không cùng chiều hoặc cùng chiều nhưng khác feature thì không gian vector A sẽ không chứa được vector này. Do vậy mẫu dữ liệu để huấn luyện hoặc cần dự đoán của chúng ta, phải là một vector có thể biểu diễn được trên không gian vector A.

Tính chất:

  • Vector θ là vector duy nhất.
  • Vector đối của vector x ∈ V là duy nhất, ( -1.x = -x )
  • ∀ vector x ∈ V, ta có 0.x = θ
  • ∀ k ∈ R, ta có k.θ = θ
  • ∀ x ∈ V và k ∈ R, ta có kx = θ khi và chỉ khi k = 0 hoặc x = θ

2.2. Tổ hợp tuyến, độc lập tuyến tính, phụ thuộc tuyến tính

Hình 2: Ví dụ về tổ hợp tuyến tính.

Tổ hợp tuyến tính

Cho không gian vector V ∉ ∅ và tập S = {v1, v2, …, vn} là một tập hữu hạn các vector bất kỳ thuộc V. Khi đó, tổ hợp tuyến tính của S là một tổng của các vector của các vector của S nhân với các hệ số vô hướng có dạng như sau:

\vec{u} = a_{1}\vec{v_{1}} + a_{2}\vec{v_{2}} + … + a_{n}\vec{v_{n}} = \sum_{i = 1}^{n} a_{i}\vec{v_{i}}

Ví dụ:

  • Hình H1.2, ta có không gian vector Euclid trên R3. Ta chọn ra 1 tập gồm 2 vector là S = {v1, v2}. Vậy tổ hợp tuyến tính của S là vector u = a1[-2, -3, 4] + a1[2, 3, 2]. Với 1 bộ số a = (a1, a2) bất kỳ, ta sẽ tạo ra được 1 tổ hợp tuyến tính bất kỳ. Giả sử với bộ số a= (1/2, 3/2), ta tạo ra được một vector u = (2, 3, 5). Ta nói, vector u được tạo ra bởi tổ hợp tuyến tính của hệ S.
  • Cho bộ dữ liệu có chứa thông tin về tuổi, huyết áp, lượng đường, luợng cholesterol của nhiều người. Ta sử dụng thuật toán Perceptron Learning Algorithm để huấn luyện model để đưa ra dự đoán sức khỏe người đó tốt hay không. Ta sẽ có hệ phương trình như sau:
    \begin{cases} w_1x_{11} + w_2x_{21} + w_3x_{31} + w_4x_{41} = y_{pr_1} \\ w_1x_{12} + w_2x_{22} + w_3x_{32} + w_4x_{42} = y_{pr_2} \\ ….\\ w_1x_{1n} + w_2x_{2n} + w_3x_{3n} + w_4x_{4n} = y_{pr_n} \\ \end{cases}
    ,với xji là giá trị feature thứ j của người thứ i và ta không thể thay đổi chúng, wj là trọng số của feature thứ j. Khi ta huấn luyện model có nghĩa là ta đi tìm những trọng số wj để đưa ra giá trị dự đoán cho từng mẫu dữ liệu yprei sao cho giống với nhãn hoàn toàn. Thay vì viết kiểu hệ phương trình như trên, ta đưa chúng về dạng tổ hợp tuyến tính như sau:
    \begin{bmatrix} w_1\\ w_2\\ w_3\\ w_4\\ \end{bmatrix}^T. \begin{bmatrix} x_{11} & x_{12} & … & x_{1n}\\ x_{21} & x_{22} & … & x_{2n}\\ x_{31} & x_{32} & … & x_{3n}\\ x_{41} & x_{42} & … & x_{4n}\\ \end{bmatrix} = \begin{bmatrix} y_{pre_1}\\ y_{pre_2}\\ …\\ y_{pre_n}\\ \end{bmatrix}
    Rõ ràng khi ta biểu diễn như vậy, nó sẽ ngắn gọn hơn. Máy tính cũng có thể xử lý dễ dàng hơn.

Bao tuyến tính

Cho không gian vector V và tập S = {v1, v2, …, vn} là một tập hữu hạn các vector thuộc V. Tập hợp của tất cả các tổ hợp tuyến tính của S được gọi là Không gian con sinh bởi S hay là Bao tuyến tính của S, ký hiệu span(S)span(S)V.

Ví dụ: hình H1.2, ta có không gian vector Euclid trên R3. Ta chọn ra 1 tập gồm 2 vector là S = {v1, v2}. Vậy tổ hợp tuyến tính của S là vector u = a1[-2, -3, 4] + a1[2, 3, 2], với 1 bộ số a = (a1, a2) bất kỳ, ta sẽ tạo ra được 1 tổ hợp tuyến tính của S bất kỳ. Với toàn bộ những bộ số a có thể có, ta sẽ tạo ra được tập hợp của tất cả các tổ hợp tuyến tính của S. Không gian vector chứa tất cả các tổ hợp tuyến tính này được gọi là không gian con sinh bởi S hay là bao tuyến tính của S và span(S) này thuộc không gian vector Euclid trên R3. Ứng với ví dụ này, bao tuyến tính của S là mặt phẳng màu xanh, chứa vector v1, v2 và cả v3( vì v3 là 1 tổ hợp tuyến tính của S).

Phụ thuộc tuyến tính

Một vector được gọi là Phụ thuộc tuyến tính vào những vector khác nếu nó được tạo bởi sự tổ hợp tuyến tính của những vector khác đó.

Cho không gian vector V, và tập S = {v1, v2, …, vn} thuộc V. Tập S được gọi là phụ thuộc tuyến tính nếu trong tập S tồn tại ít nhất vector nào phụ thuộc vào các vector còn lại trong tập S . Với phương trình:

\theta = a_1\vec{v_1} + a_2\vec{v_2} + … + a_n\vec{v_n}

nếu bộ số a không đồng thời bằng 0, thì ta nói tập S phụ thuộc tuyến tính.

  • Ví dụ 1: Trong không gian Euclid trên R3. Tập S = {[1, 0, 0], [0, 1, 0], [0, 0, 1]} là 3 vector đơn vị của không gian euclude trên R3. Ta xét tập S là toàn bộ vector trong không gian vector này trừ 3 vector đơn vị. Khi đó, những vector trong S đều sẽ phụ thuộc tuyến tính vào hệ 3 vector đơn vị.
  • Ví dụ 2: Hình H1.2, ta có hệ {v1, v2}. Xét xem vector u có phụ thuộc tuyến tính vào hệ trên hay không?Gỉai: vector u = [2, 3, 5] = a1v1 + a1v1 = a1[-2, -3, 4] + a2[2, 3, 2], tồn tại bộ số a = (1/2, 3/2) là nghiệm của phương trình trên. Vậy vector u là 1 tổ hợp tuyến tính của hệ này. Ta nói, vector phụ thuộc tuyến tính vào hệ {v1, v2}.

Độc lập tuyến tính

Một vector được gọi là độc lập tuyến tính từ những vector khác nếu nó không được tạo bởi sự tổ hợp tuyến tính của những vector khác đó.

Cho không gian vector V, và tập S = {v1, v2, …, vn} thuộc V. Tập S được gọi là độc lập tuyến tính nếu trong tập S không tồn tại một vector nào phụ thuộc vào các vector còn lại trong tập S . Với phương trình:

\theta = a_1\vec{v_1} + a_2\vec{v_2} + … + a_n\vec{v_n}

nếu bộ số a đồng thời bằng 0, thì ta nói tập S độc lập tuyến tính.

Ví dụ

  • Trong không gian Euclid trên R3. Tập S = {[1, 0, 0], [0, 1, 0], [0, 0, 1]} là 3 vector đơn vị của không gian Euclid trên R3. Rõ ràng, mỗi vector trong tập S đều không là tổ hợp tuyến của 2 vector còn lại.
  • hình H1.2, ta có hệ {v1, v2}. Xét xem vector b = [2, 1, 1] có độc lập tuyến tính từ hệ trên hay không? Gỉai: vector b = [2, 1, 1] = a1v1 + a2v2 = a1[-2, -3, 4] + a2[2, 3, 2], không tồn tại bộ số a = (a1, a2) nào là nghiệm của phương trình trên. Vậy vector không là 1 tổ hợp tuyến tính của hệ này. Ta nói, vector b độc lập tuyến tính từ hệ {v1, v2}.

2.3. Cơ sở và số chiều

Số chiều của một không gian vector là chỉ số đo độ “lớn”, độ “thoải mái” của không gian vector đó.

Giả sử V là một không gian vector, ta có hai khái niệm sau:

Hệ sinh

Một hệ vector của V được gọi là một hệ sinh của V nếu mọi vector của V đều biểu thị tuyến tính được qua hệ đó.

Tức là giả sử S = {v1, v2, …, vn} là tập con của V, nếu span(S) = V hay mọi x ∈ V đều có thể biểu diễn là:

x=c_1x_1,\dots, c_nx_n

thì ta nói họ S sinh ra V hay họ S là một hệ sinh của V

Cơ sở

Một hệ vector của V được gọi là một cơ sở của V nếu mọi vector của V đều biểu thị tuyến tính duy nhất qua hệ này.

Nhận xét:

  • Mỗi cơ sở đều là một hệ sinh.
  • Một hệ vector của không gian V được gọi là độc lập tuyến tính cực đại nếu nó độc lập tuyến tính và nếu thêm bất kỳ vector nào của V vào hệ đó thì hệ mới thu được trở thành phụ thuộc tuyến tính. Như vậy cơ sở của V vừa là một hệ sinh độc lập tuyến tính của V vừa là một hệ vector độc lập tuyến tính cực đại của V .
Số chiều

Số phần tử của mỗi cơ sở của K-không gian vector hữu hạn sinh V ≠ {0} được gọi là số chiều của V trên trường K , và được ký hiệu là dimV .

Ví dụ:

  • Trong R3, A là cơ sở chính tắc với:
B = \left \{ \begin{bmatrix} 1\\ 0\\ 0 \end{bmatrix}, \begin{bmatrix} 1\\ 1\\ 0 \end{bmatrix}, \begin{bmatrix} 1\\ 1\\ 1 \end{bmatrix} \right \} ,C = \left \{ \begin{bmatrix} 0.5\\ 0.8\\ 0.4 \end{bmatrix}, \begin{bmatrix} 1.8\\ 0.3\\ 0.3 \end{bmatrix}, \begin{bmatrix} -2.2\\ -1.3\\ 3.5 \end{bmatrix} \right \}
  • Tập D ∈ R4:
D = \left \{ \begin{bmatrix} 1\\ 2\\ 3\\ 4 \end{bmatrix}, \begin{bmatrix} 2\\ -1\\ 0\\ 2 \end{bmatrix}, \begin{bmatrix} 1\\ 1\\ 0\\ -4 \end{bmatrix} \right \}

Tập D là một tập độc lập tuyến tính nhưng không phải là hệ sinh (và không là cơ sở) của R4 vì hạng (rank) của tập D(3)<4 . Khái niệm về hạng (rank) sẽ được trình bày trong hạng của ma trận/hệ vector.

2.4. Không gian con, hạng của hệ vector

Không gian con

Tập con không rỗng W ⊂ V được gọi là một không gian vector con của V nếu W khép kín đối với hai phép toán trên V , nghĩa là:

\alpha +\beta \in W, \forall \alpha, \beta \in W
a\alpha\in W, \forall a \in K,\forall \alpha \in W
Hạng của hệ vector

Ta gọi một tập con của X là độc lập tuyến tính cực đại trong X nếu tập đó độc lập tuyến tính và nếu thêm bất kỳ vector nào của X vào tập đó thì ta thu được một tập Phụ thuộc tuyến tính. Vậy hạng của tập vector X bằng số vector của mỗi tập con độc lập tuyến tính cực đại trong X.

Theo như cuốn sách Dive into Deep Learning có viết hạng (rank) của một ma trận là số chiều của không gian vector mà ma trận này ánh xạ đến không gian đó.

If we have a general n×m matrix, it is reasonable to ask what dimension space the matrix maps into. A concept known as the rank will be our answer.

Ví dụ:

A= \begin{bmatrix} 1 &0 &1 \\ 0 &1 &1 \\ 0 &0 &0 \end{bmatrix}
  • Ma trận A chỉ có 2 vector độc lập tuyến tính (cột hoặc dòng) và 2 là số vector độc lập tuyến tính cực đại của A, nên rank(A)=2 .
  • Tập D ở ví dụ trên (Cơ sở và số chiều) tuy có số chiều là 4 nhưng số vector (cột hoặc dòng) độc lập tuyến tính cực đại = 3, tức rank(D)=3 nên sẽ chỉ biểu thị tuyến tính được trên R3.

2.5. Các phép toán với Vector

Vector Dot Product

Chúng ta có thể tính tổng các phần tử nhân của hai vector có cùng độ dài để được kết quả vô hướng. Dot product là công cụ chính để tính toán các phép chiếu vector (vector projection), phân tách vector (vector decomposition) và xác định tính trực giao (orthogonality). (dot = 0 = > trực giao)

Phép Dot product cho ta biết giữa hai vector, nó có những mối liên hệ gì lẫn nhau không. Hai vector là vuông góc, cùng chiều hay ngược chiều nhau,…

Công thức:
c = a . b
c = (a1 * b1 + a2 * b2 + a3 * b3 + a4 * b4)

Scalar và phép nhân vector vô hướng ( Vector-Scalar Multiplication )

Một vector một chiều được gọi là scalar (giá trị vô hướng). Scalar là một đại lượng chỉ có độ lớn và không có hướng.

Chúng ta có thể nhân rộng độ lớn của vector bằng cách lấy chính vector đó nhân với một giá trị vô hướng.

c=s∗v \\ hay \, c=s*v c=(s∗v1,s∗v2,s∗v3,s∗v4)

Vector Norm

Độ dài của vector là một số không âm mô tả phạm vi của vector trong không gian và còn được gọi là độ lớn vector (norm). Việc tính toán độ lớn của vector thường được dùng như một phép chuẩn hóa trong Machine Learning, hoặc là một phần của các phép toán vector hoặc matrix. Việc tính độ lớn của vector đơn giản là ta tính khoảng cách giữa hai điểm tạo thành vector. Ví dụ trong không gian một chiều, ta tính khoảng cách này bằng cách lấy trị tuyệt đối của hiệu hai điểm này. Hay sử dụng khoảng cách euclid để tính khoảng cách giữa hai điểm trong không gian hai chiều. L1 norm: Tính tổng các giá trị tuyệt đối của vector và L2 norm: Căn bậc 2 của tổng các giá trị bình phương của vector.

Vector L1 norm
L^1(v) = ||v||_{1}\\ ||v||_{1} = |a_{1}| + |a_{2}| + |a_{3}|
Vector L2 norm
L^2(v) = ||v||_{2} \\ ||v||_{2} = \sqrt{a_{1}^2 + a_{2}^2 + a_{3}^2}

Từ chuẩn L2 ta có thể nghĩ đến chuẩn có số mũ cao hơn. Chuẩn Lp với 1 < p < ∞ của một vector được định nghĩa:

L^p = (|x_1|^p + |x_2|^p + … + |x_n|^p)^{1/p}

Và khi p -> ∞ thì chúng ta sẽ có một khái niệm là chuẩn max như sau:

\lim\limits_{x \to \infty} ||x||_p = \lim\limits_{x \to \infty} (|x_1|^p + |x_2|^p + … + |x_n|^p)^{1/p} = max(x_1, x_2, …, x_n) = L_{inf}(v)

Với Norm chúng ta sẽ có các tính chất sau:

  • f(x)=0=>x=0
  • f(x+y)<=f(x)+f(y) (bất đẳng thức tam giác)
  • ∀α∈R,f(αx)=|α|f(X)

Norm được ứng dụng rất nhiều trong Machine Learning. Dùng Norm để đo khoảng cách giữa những vector, từ đó suy ra những vector nào gần nhau hơn hay xa nhau hơn. Như trong K-NN, dùng Norm để tìm ra K vector nào gần nhất với điểm đang xét. Hay trong Linear Regression, hàm Loss của nó là MSE cũng dùng Norm để đo được độ sai số giữa siêu phẳng cần tìm và những mẫu dữ liệu. …

3. Ánh xạ tuyến tính

Cấu trúc của các không gian vector chỉ lộ rõ khi chúng ta nghiên cứu chúng không phải như những đối tượng riêng rẽ, mà trái lại đặt chúng trong mối liên hệ với nhau. Công cụ dùng để xác lập mối liên hệ giữa các không gian vector là các ánh xạ tuyến tính. Ngôn ngữ giúp cho việc mô tả cụ thể các ánh xạ tuyến tính là các ma trận.

3.1. Khái niệm

Giả sử V và W là các không gian vector trên trường K . Ánh xạ f:V→W được gọi là một ánh xạ tuyến tính nếu:

f(\alpha+\beta)=f(\alpha)+f(\beta),\\ f(a\alpha)=af(\alpha), \forall \alpha, \beta \in V, a \in K

Vậy hai điều kiện trong định nghĩa ánh xạ tuyến tính tương đương với điều kiện sau:

f(a\alpha +b\beta)=f(a\alpha)+f(b\beta), \forall \alpha, \beta \in V, a, b \in K

Ví dụ:

  • Ánh xạ 0:V→W xác định bởi công thức 0(α)=0 mọi α∈V là một ánh xạ tuyến tính.
  • Đạo hàm hình thức:
\frac{d}{dX}:K[X]\rightarrow K[X] \\ \frac{d}{dX}(a_n{X}^n+\cdots+a_1{X}^1 +a_0)=na_n{X}^{n-1}+\cdots +a_1

là một ánh xạ tuyến tính.

  • Phép liên hợp phức c:C→C , z↦z¯ là một ánh xạ tuyến tính.

3.2. Ánh xạ tuyến tính và ma trận

Giả sử V và W là các không gian vector với các cơ sở tương ứng là (α1,…,αn) và (β1,…,βn) . Ta có phép ánh xạ tuyến tính f:V → W được xác định duy nhất bởi f(α1),…,f(αn) của W :

f(\alpha_j)=\sum_{i=1}^{m}a_{ij}\beta_j (j=1,\dots,n),

trong đó aij∈K . Nói gọn lại thì ánh xạ tuyến tính f:V→W được xác định duy nhất bởi hệ thống các vô hướng {aij|1≤i≤m,1≤j≤n}, chúng được xếp thành ma trận sau đây:

A = \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix} = (a_{ij})_{m\times n}

Ta gọi A là ma trận của ánh xạ tuyến tính f: V→W trong cặp cơ sở (α1,…,αn) và (β1,…,βn)

4. Ma Trận

4.1. Khái niệm

Ma trận là một mảng hay chiều các giá trị vô hướng với một hoặc nhiều cột và dòng (Một ma trận là một mảng hay chiều các số). Kích thước của ma trận được xác định bằng số lượng hàng và cột của chính nó.

  • Tên một ma trận ký hiệu là chữ in hoa.
  • Một ma trận được có thể biểu diễn theo chiều ngang và chiều dọc.
A = ((a_{1,1}, a_{1,2}, …, a_{1,n}), (a_{2,1}, a_{2,2}, …, a_{2,n}, (a_{m,1}, a_{m,2}, …, a_{m,n})) \\ A = \begin{pmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} & a_{m,2} & \cdots & a_{m,n} \end{pmatrix}
  • Những vector thuộc cùng một không gian vector tạo thành một ma trận.
Ví dụ:
  • Trong Machine Learning, bộ dữ liệu của chúng ta khi đưa vào máy tính để xử lý thì ta sẽ biểu diễn bộ dữ liệu này dưới dạng ma trận. Người ta thường biểu diễn, mỗi hàng của ma trận là một mẫu dữ liệu, mỗi cột của ma trận là một feature của những mẫu dữ liệu đó.
  • Hình ảnh trên máy tính cũng được biểu diễn dưới dạng ma trận. Một tấm ảnh xám có kích cỡ 600*800 được biểu diễn như một ma trận có 600 hàng và 800 cột, mỗi phần tử ma trận như một pixel trong tấm ảnh. Phần tử này giữ một con số nguyên từ 0 tới 255 đại diện cho độ mức xám của pixel.

4.2. Các phép toán với ma trận

Cộng hai ma trận

Phép cộng hai ma trận A và B được xác định bằng phép cộng element-wise. Chúng ta chỉ có thể thực hiện phép cộng hai ma trận với điều kiện hai ma trận này có cùng kích thước với nhau. Nếu C là tổng của hai ma trận A và B thì ta có:

c_{ij} = a_{ij} + b_{ij}, \forall i \in \{1, 2, …, m\}, \forall j \in \{1, 2, …, n\} \\where: a_{ij} \in A, b_{ij} \in B, c_{ij} \in C

Ví dụ:

A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix}, B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix} \\ A + B = \begin{bmatrix} 1+5 & 2+6 \\ 3+7 & 4+8 \\ \end{bmatrix} = \begin{bmatrix} 6 & 8 \\ 10 & 12 \\ \end{bmatrix}

Tính chất:

  • A + B = B + A
  • A + O = O + A = A
  • (A + B) + C = A + (B + C)
  • Hiệu của hai ma trận: A – B = A + (-B)
  • A – A = A + (-A) = O
Phép nhân (Product)

Với phép element-wise khi ta thực hiện tính toán trên ma trận thì điều kiện của hai ma trận phải cùng kích thước với nhau. Đến đây chúng ta còn có một khái niệm khác đó là Product of Two Matrices. Nhân hai ma trận A ∈ Rmxn và B ∈ Rpxq với điều kiện n phải bằng với p. Kết quả trả về là một ma trận C ∈ Rmxq với công thức như sau:

c_{ij} = \displaystyle\sum_{k=1}^{n} a_{ik}b_{kj} \\ where: \forall i \in \{1, 2, …, m\}, \forall j \in \{1, 2, …, q\}

Bây giờ chúng ta cùng xét một ví dụ với phép nhân hai ma trận A,B ∈ R2,2 với:

A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix}, B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix}\\ c_{11} = \begin{bmatrix} 1 & 2 \end{bmatrix} \begin{bmatrix} 5 \\ 7 \end{bmatrix} = 1*5+2*7=19 \\ c_{12} = \begin{bmatrix} 1 & 2 \end{bmatrix} \begin{bmatrix} 6 \\ 8 \end{bmatrix} = 1*6+2*8=22 \\ c_{21} = \begin{bmatrix} 3 & 4 \end{bmatrix} \begin{bmatrix} 5 \\ 7 \end{bmatrix} = 3*5+4*7=43 \\ c_{22} = \begin{bmatrix} 3 & 4 \end{bmatrix} \begin{bmatrix} 6 \\ 8 \end{bmatrix} = 3*6+4*8=50\\ C = \begin{bmatrix} c_{11} & c_{12} \\ c_{21} & c_{22} \\ \end{bmatrix} = \begin{bmatrix} 19 & 22 \\ 43 & 50 \\ \end{bmatrix}

Tương tự nhân ma trận A ∈ R3×2 với B ∈ R2×2 ta sẽ được ma trận C ∈ R3×2 :

A = \begin{bmatrix} a_{1,1} & a_{1,2} \\ a_{2,1} & a_{2,2} \\ a_{3,1} & a_{3,2} \end{bmatrix} \\ B = \begin{bmatrix} b_{1,1} & b_{1,2} \\ b_{2,1} & b_{2,2} \\ \end{bmatrix} \\ C = \begin{bmatrix} a_{1,1} * b_{1,1} + a_{1,2} * b_{2,1} & a_{1,1} * b_{1,2} + a_{1,2} * b_{2, 2} \\ a_{2,1} * b_{1,1} + a_{2,2} * b_{2,1} & a_{2,1} * b_{1,2} + a_{2,2} * b_{2, 2} \\ a_{3,1} * b_{1,1} + a_{3,2} * b_{2,1} & a_{3,1} * b_{1,2} + a_{3,2} * b_{2, 2} \end{bmatrix}

Tính chất:

  • AB ≠ BA
  • A(B + C) = AB + AC
  • (A + B)C = AC + BC
  • A(BC) = (AB)C
  • λ(AB) = (λA)B = A(λB), λ ∈ R
  • A.I = I.A = A
  • A.O = O.B = O
  • On = O, n >= 1
  • In = I
Matrix-Scalar Multiplication

Có thể nhân ma trận với một giá trị vô hướng. Sử dụng dấu . giữa ma trận và giá trị vô hướng.

C = A.s hoặc C = As

Tính chất:

  • λ(A + B) = λA + λB
  • (λ + β)A = λA + βA
  • λ(βA) = (λβ)A
  • 1.A = A; -1.A = -A; 0.A = O

4.3. Phân loại ma trận

Ma trận vuông

  • Là một ma trận mà số dòng bằng số cột: n = m.
  • Ví dụ: ma trận vuông A ∈ R4*4 có 4 dòng và 4 cột
A = \begin{bmatrix} 1 & 2 & 3 & 4\\ 5 & 6 & 7 & 8\\ 9 & 10 & 11 & 12\\ 13 & 14 & 15 & 16 \end{bmatrix}

Ma trận đối xứng

  • Là một ma trận vuông bằng chính ma trận chuyển vị của nó (A = AT).
  • Ví dụ: ma trận A ∈ R3*3 là ma trận vuông và có ma trận A = AT, nên là ma trận đối xứng.
A = \begin{bmatrix} 1 & 2 & 3\\ 2 & 4 & -5\\ 3 & -5 & 6 \end{bmatrix} = A^T = \begin{bmatrix} 1 & 2 & 3\\ 2 & 4 & -5\\ 3 & -5 & 6 \end{bmatrix}

Ma trận tam giác

  • Là một loại ma trận vuông mà tất cả các phần tử ở upper-right hoăc lower-left có giá trị và phần còn lại là chứa giá trị 0.
  • Một ma trận tam giác với các giá trị chỉ nằm trên đường chéo chính thì được gọi là ma trận tam giác trên (upper trianguler matrix). Trong khi đó, một ma trận tam giác với các giá trị chỉ nằm dưới đường chéo chính gọi là ma trận tam giác dưới (lower trianguler matrix).
  • Ví dụ: cho A là ma trận tam giác trên và B là ma trận tam giác dưới
A = \begin{bmatrix} 1 & -5 & 7 & 4\\ 0 & 6 & 7 & 9\\ 0 & 0 & 13 & 12\\ 0 & 0 & 0 & 16 \end{bmatrix}, B = \begin{bmatrix} 1 & 0 & 0 & 0\\ -3 & 9 & 0 & 0\\ 7 & 0 & 13 & 0\\ 13 & 15 & 25 & 9 \end{bmatrix}

Ma trận đường chéo

  • Là ma trận vuông mà các giá trị ngoài đường chéo chính đều bằng 0.
  • Được biểu diễn bằng biến D, có thể viết đầy đủ ma trận hoặc viết gọn dưới dạng một vector các giá trị. (viết dưới dạng là một vector để tiết kiệm bộ nhớ).
  • Ví dụ:
C = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 6 & 0 & 0\\ 0 & 0 & 13 & 0\\ 0 & 0 & 0 & 25 \end{bmatrix}

Ma trận đơn vị

  • Là ma trận vuông không thay đổi một vector khi nhân vector với ma trận này. Các giá trị của identify matrix được xác định giá trị trên đường chéo chính bằng 1 còn những giá trị ngoài đường chéo chính bằng 0.
  • Ký hiệu: In
  • Ví dụ:
I^4 = \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 13 & 0 & 0\\ 0 & 0 & 25 & 0\\ 0 & 0 & 0 & 6 \end{bmatrix}

4.4. Xử lý ma trận

Chuyển vị

Một ma trận có thể được chuyển vị để tạo thành một ma trận mới với số dòng thành số cột và ngược lại. Ký hiệu: AT

a_{ij}^{‘} = a_{ij} \forall i \in \{1, 2, …, m\}, \forall j \in \{1, 2, …, n\} \\ where: a_{ij}^{‘} \in A^T, and, a_{ij} \in A
A = \begin{bmatrix} a_{11} & a_{12} & … & a_{1n} \\ a_{21} & a_{22} & … & a_{2n} \\ … & … & … & … \\ a_{m1} & a_{m2} & … & a_{mn} \end{bmatrix} => A^T = \begin{bmatrix} a_{11} & a_{21} & … & a_{m1} \\ a_{12} & a_{22} & … & a_{m2} \\ … & … & … & … \\ a_{1n} & a_{2n} & … & a_{mn} \end{bmatrix}

Ví dụ:

A = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}=> A^T = \begin{bmatrix} 1 & 4 & 7 \\ 2 & 5 & 8\\ 3 & 6 & 9 \end{bmatrix}

Với phép chuyển vị thì chúng ta có một tính chất là chuyển vị của phép nhân product của hai ma trận A và B tương đương với phép nhân product giữa chuyển vị của ma trận B và chuyển vị của ma trận A.

(AB)^T = B^TA^T

Để chứng minh tính chất trên ta sẽ xét ví dụ sau:

A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} , B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix} \\ AB = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix}
Ta có: AB = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix} = \begin{bmatrix} 19 & 22\\ 43 & 50\\ \end{bmatrix}=> (AB)^T = \begin{bmatrix} 19 & 43\\ 22 & 50\\ \end{bmatrix} (1)\\ A^T = \begin{bmatrix} 1 & 3 \\ 2 & 4 \\ \end{bmatrix}, B^T = \begin{bmatrix} 5 & 7\\ 6 & 8\\ \end{bmatrix} => B^TA^T = \begin{bmatrix} 19 & 43\\ 22 & 50\\ \end{bmatrix} (2)

Từ (1)(2) suy ra được (AB)T = BTAT

Nghịch đảo

  • Ma trận nghịch đảo là một quá trình tìm một ma trận mà khi nhân ma trận này với một ma trận khác sẽ có kết quả là một ma trận đơn vị. Cho ma trận A (vuông), tìm ma trận B, sao cho: AB = In hoặc BA = In
  • Ma trận nghịch đảo B từ A: B = A-1
  • Ví dụ: cho hai ma trận AB
A = \begin{bmatrix} 4 & 3\\ 3 & 2 \end{bmatrix}, B = \begin{bmatrix} -2 & 3\\ 3 & -4 \end{bmatrix}\\ AB = \begin{bmatrix} 4 & 3\\ 3 & 2 \end{bmatrix}\begin{bmatrix} -2 & 3\\ 3 & -4 \end{bmatrix} = BA = \begin{bmatrix} -2 & 3\\ 3 & -4 \end{bmatrix} \begin{bmatrix} 4 & 3\\ 3 & 2 \end{bmatrix}=\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}

=> Vậy B là ma trận nghịch đảo của A.

Trace

  • Tổng các phần tử trên đường chéo chính của ma trận vuông gọi là Trace.
tr(A) = a_{1,1} + a_{2,2} + a_{3,3} + … +a_{n,n} = \sum_{i=1}^n a_{i,i}
  • Ví dụ:
A = \begin{bmatrix} 1 & 2 & 3 & 4\\ 5 & 6 & 7 & 8\\ 9 & 8 & 9 & 10\\ 11 & 12 & 13 & 14 \end{bmatrix}\\ => tr(A) = a_{1,1} + a_{2,2} + a_{3,3} + a_{4, 4}= 1 + 6 + 9 + 14 = 30

Định thức

Định thức của ma trận vuông A là một giá trị vô hướng, được tính như sau:

  • Với A là ma trận vuông cấp 1:
det(A) = a_{1,1}
  • Với A là ma trận vuông cấp 2:
det(A) = \begin{bmatrix} a_{1,1} & a_{1,2} \\ a_{2,1} & a_{2,2} \end{bmatrix} = a_{11}a_{22} – a_{12}a_{21}
  • Với A là ma trận vuông cấp 3:
A = \begin{pmatrix} a_{1,1} & a_{1,2} & a_{1,3} \\ a_{2,1} & a_{2,2} & a_{2,3} \\ a_{3,1} & a_{3,2} & a_{3,3} \\ \end{pmatrix}
Hình 3: Định thức ma trận được tính theo quy tắc Sarius
det(A) = a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32} – a_{13}a_{22}a_{31} – a_{12}a_{21}a_{33} – a_{11}a_{23}a_{32}

Tính chất:

  • Định thức không đổi dấu qua phép chuyển vị.
  • Nếu đổi chỗ 2 hàng thì định thức đổi dấu.
  • Một định thức có 2 hàng giống nhau, thì định thức bằng 0.
  • Một định thức có 1 hàng bằng 0 (tức mọi phần tử hàng đó bằng 0) thì định thức bằng 0.
  • Một định thức có 2 hàng tỉ lệ thì định thức đó bằng 0.
  • Nếu nhân 1 hàng với một số k, thì được 1 một định thức mới bằng định thức cũ nhân với k.
  • Nếu cộng vào một hàng một bội của hàng khác thì định thức không đổi.

4.5. Hạng của ma trận

  • Hạng ma trận là ước tính số lượng hàng hoặc cột độc lập tuyến tính (không phụ thuộc) trong ma trận vuông.
  • Độc lập tuyến tính: các tính chất độc lập nhau.
  • Phụ thuộc tuyến tính: từ 1 thuộc tính, tính toán nội suy ra các đại lượng khác.
  • Ví dụ: Cho ma trận A &in; R3×3
A = \begin{bmatrix} 1 & 3 & 4\\ 2 & 5 & 7\\ 3 & 7 & 10 \end{bmatrix}
Ta có vector cột [1, 2, 3]T và [3, 5, 7]T là độc lập tuyến tính. Nhưng vector cột [4, 7, 10]T không phải độc lập tuyến tính, bởi vì nó là một tổ hợp tuyến tính của 2 hai vector kia, [1, 2, 3]T + [3, 5, 7]T = [4, 7, 10]T. Do vậy rank của ma trận là 2 bởi vì nó chỉ có 2 vector cột độc lập tuyến tính, nên tổ hợp tuyến tính của những vector cột trong ma trận này chỉ có thể tạo ra không gian con 2 chiều trong không gian vector 3 chiều.

Tạm kết

Bài viết này là bài mở đầu của chuỗi bài viết về Toán học trong lĩnh vực Machine Learning. Nội dung bài viết giới thiệu cho bạn đọc về các khái niệm cơ bản của Vector, Không gian vector, Ánh xạ tuyến tính và Ma trận. Hi vọng các bạn đã có thể nắm vững các kiến thức nêu trên bởi nó rất quan trọng trong chuỗi bài viết này.

Nếu có thắc mắc hay bất kì sai sót nào trong bài, các bạn có thể đóng góp ý kiến bằng cách để lại bình luận phía dưới bài viết để chúng mình giải đáp nhé.

Xin chào và hẹn gặp lại các bạn trong các bài viết sau!

Tài liệu tham khảo

  1. Math – machinelearningcoban
  2. Mathematics for Deep Learning – Dive into Deep Learning
  3. Mathematics for Machine Learning
  4. Pro Deep Learning with Tensorflow
  5. Deep Learning: Adaptive Computation And Machine Learning
  6. Dive into Deep Learning

An Minh Hùng – KHCL2017.1

Cát Văn Tài – KHCL2019.3

Mai Đức ThuậnKHDL2019

kadikoy moto kurye umraniye moto kurye tuzla moto kurye atasehir moto kurye moto kurye moto kurye moto kurye moto kurye

Leave a Reply

Your email address will not be published. Required fields are marked *