Machine Learning – 1.4 – Matrices and Vectors

Bài viết thứ 4 trong loạt bài tự học Machine Learning trên Coursera của giáo sư Andrew Ng.

Trong bài viết này, ta sẽ nói về Matrix và Vector, cùng các phép toán của chúng.

Xem các bài viết khác tại Machine Learning Course Structure

1. Các ký hiệu

1.1. Matrix

Matrix là một mảng 2 chiều (có thể mở rộng ra n chiều).

\begin{bmatrix}a & b & c \\d & e & f \\g & h & i \\j & k & l \end{bmatrix}

Matrix bên trên có 4 dòng và 3 cột, ký hiệu là R^{4x3}.

1.2. Vector

Vector là một matrix chỉ có 1 cột và nhiều dòng.

\begin{bmatrix} w \\ x \\ y \\ z \end{bmatrix}

Vector trên là một matrix 4×1.

1.3. Ký hiệu

  • A_{ij} là phần tử ở dòng i và cột j của matrix.
  • Vector A với ‘n’ dòng sẽ là một Vector có n chiều.
  • v_{i} là phần tử ở dòng i của vector.

Bình thường, vector và matrix sẽ dùng index bắt đầu từ 1. Trong đa số các ngôn ngữ lập trình, mảng thường bắt đầu từ phần tử 0.

  • Matrix thường được ký hiệu bằng chữ cái in hoa, vector thường được ký hiệu bằng chữ cái in thường.
  • Scalar nghĩa là một vật thể là một giá trị, không phải vector hay matrix.
  • \mathbb{R} được ký hiệu cho tập các số thực.
  • \mathbb{R}^n được ký hiệu cho tập các vector số thực n chiều.

2. Phần mềm

Để thử nghiệm nhanh chóng các giả thuyết – thuật toán liên quan tới toán học trong Machine Learning, ta có thể dùng một phần mềm mang tên Octave

Bạn có thể chạy đoạn code dưới đây trong Octave hoặc Matlab

% The ; denotes we are going back to a new row.
A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]

% Initialize a vector
v = [1;2;3]

% Get the dimension of the matrix A where m = rows and n = columns
[m,n] = size(A)

% You could also store it this way
dim_A = size(A)

% Get the dimension of the vector v
dim_v = size(v)

% Now let's index into the 2nd row 3rd column of matrix A
A_23 = A(2,3)

3. Các phép tính

3.1. Phép cộng và phép nhân matrix số thực

Đối với phép cộng và nhân, chỉ cần đơn giản cộng và nhân với mỗi phần tử của matrix.

\begin{bmatrix} a & b \\ c & d \\ \end{bmatrix} +\begin{bmatrix} w & x \\ y & z \\ \end{bmatrix} =\begin{bmatrix} a+w & b+x \\ c+y & d+z \\ \end{bmatrix}

Tương tự đối với phép nhân và chia:

\begin{bmatrix} a & b \\ c & d \\ \end{bmatrix} * x =\begin{bmatrix} a*x & b*x \\ c*x & d*x \\ \end{bmatrix}

\begin{bmatrix} a & b \\ c & d \\ \end{bmatrix} / x =\begin{bmatrix} a /x & b/x \\ c /x & d /x \\ \end{bmatrix}

3.2. Nhân matrix với vector

Để nhân một matrix với một vector, nhân mỗi phần tử rồi cộng kết quả:

\begin{bmatrix} a & b \\ c & d \\ e & f \end{bmatrix} *\begin{bmatrix} x \\ y \\ \end{bmatrix} =\begin{bmatrix} a*x + b*y \\ c*x + d*y \\ e*x + f*y\end{bmatrix}

Một matrix m x n nhân với một vector n x 1 sẽ ra kết quả là một vector m x 1.

Kiến thức về matrix này có thể áp dụng vào hàm hypothesis của linear regression:

Ta có bộ input các giá trị của x như sau:

x1 = 21
x2 = 30
x3 = 25
x4 = 22

hàm hypothesis:

h_{0} = -40 + 0.25x

Để tính nhanh các giá trị dự đoán của y, ta có thể tạo ra matrix x và vector hypothesis, và tạo thành phép tính như sau:

\begin{bmatrix} 1 & 21 \\ 1 & 30 \\ 1 & 25 \\ 1 & 22 \end{bmatrix} * \begin{bmatrix} -40 \\ 0.25 \end{bmatrix}

Phép tính này có thể dễ dàng tính toán bằng Octave

A = [1,21;1,30;1,25;1,22]
B = [-40;0.25]

mul_AB = A * B

Kết quả:

A =
1   21
1   30
1   25
1   22

B =
-40.00000
0.25000

mul_AB =
-34.750
-32.500
-33.750
-34.500

3.3. Nhân 2 matrix với nhau

Tương tự như việc nhân 1 matrix với 1 vector, bạn chỉ cần tách phép nhân 2 matrix thành nhiều phép nhân matrix với vector.

\begin{bmatrix} a & b \\ c & d \\ e & f \end{bmatrix} *\begin{bmatrix} w & x \\ y & z \\ \end{bmatrix} =\begin{bmatrix} a*w + b*y & a*x + b*z \\ c*w + d*y & c*x + d*z \\ e*w + f*y & e*x + f*z\end{bmatrix}

Một matrix m x n khi nhân với một matrix n x o sẽ cho ra kết quả là một matrix m x o.

3.4. Các tính chất của phép nhân matrix

Phép nhân 2 số thực có một số tính chất không thể áp dụng với phép nhân 2 matrix.

Gọi AB là 2 matrix, ta có:

  • A \times B \neq B \times A
  • A \times B \times C = A \times (B \times C) = (A \times B) \times C

3.5. Identity Matrix

Một matrix bất kỳ khi nhân với một Identity matrix phù hợp sẽ có kết quả là chính nó.

Ký hiệu: I hoặc I_{n \times n}

Ví dụ:

I_{1 \times 1} = \begin{bmatrix} 1 \end{bmatrix}

I_{2 \times 2} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}

I_{3 \times 3} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

Lưu ý: A \times I = I \times A

4. Inverse (nghịch đảo) và Transpose (chuyển vị)

4.1. Inverse (nghịch đảo)

Một ví dụ với số thực

3 là một số thực. Ta có: 3 \times (3^{-1}) = 1

Tổng quát: a \times (a^{-1}) = 1

Ta có matrix A:

A \times A^{-1} = A^{-1} \times A = I

Matrix gồm toàn các phần tử 0 không có nghịch đảo

4.2. Transpose (chuyển vị)

Gọi B là matrix chuyển vị của A, ta có:

A = \begin{bmatrix} a & b \\ c & d \\ e & f \end{bmatrix}

A^T = \begin{bmatrix} a & c & e \\ b & d & f \end{bmatrix}

Hay nói cách khác:

A_{ij} = A^T_{ji}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.