-
Tuần 1 - Ngày 10 tháng 7 năm 2019
- Giới thiệu về khóa học
- Hướng dẫn viết chương trình Python trên web
- Hướng dẫn sử dụng PyCharm
- Tổng quan về Python
- Kỹ năng sử dụng Google search
- Viết tài liệu kỹ thuật dùng Markdown
- Hàm xây dựng sẵn trong Python – math và random
- Cài đặt các công thức toán cơ bản
- Xây dựng hàm trong python
- Điều kiện if-else
- Những lỗi thường gặp trong Python
- Reading assignment
-
Tuần 2 - Ngày 17 tháng 7 năm 2019
-
Tuần 3 - Ngày 24 tháng 7 năm 2019
-
Tuần 4 - Ngày 31 tháng 7 năm 2019
-
Tuần 5 - Ngày 7 tháng 8 năm 2019
-
Advanced Python
-
Tuần 6 - Ngày 14 tháng 8 năm 2019
-
Tuần 7 - Ngày 28 tháng 8 năm 2019
-
Tuần 8
-
Tuần 9
Đại số tuyến tính cơ bản
Giới thiệu
Đại số tuyến tính là toán của ma trận (matrix) và vectơ (vector). Cho \(n\) là một số nguyên dương và \(R\) là tập hợp các số thực. Vector \(\mathop {\overrightarrow v }\limits^{}\) có độ dài \(n\) chứa các số thực được ký hiệu \(\overrightarrow v \in R^n\). Ví dụ vector \(\mathop {\overrightarrow v }\limits^{}\) có 3 phần tử \(\mathop {\overrightarrow v }\limits^{} = \left( {v_1 ,v_2 ,v_3 } \right) \in \left( {R,R,R} \right) = R^3\).
Matrix \(A\) là một mảng hình chữ nhật và chứa các phần tử là số thực, với \(m\) dòng và \(n\) cột; được ký hiệu là \({\rm A} \in R^{m \times n}\). Ví dụ matrix có 3 dòng và 2 cột được biểu diễn như sau
$$
A = \left[ \begin{array}{l}
\begin{array}{*{20}c}
{a_{11} } & {a_{12} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{21} } & {a_{22} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{31} } & {a_{32} } \\
\end{array} \\
\end{array} \right] \in \left[ \begin{array}{l}
\begin{array}{*{20}c}
R & R \\
\end{array} \\
\begin{array}{*{20}c}
R & R \\
\end{array} \\
\begin{array}{*{20}c}
R & R \\
\end{array} \\
\end{array} \right] \equiv R^{3 \times 2}
$$
trong đó phần tử \(a_{ij}\) là phần tử tại dòng \(i\) và cột \(j\).
Để hiểu được đại số tuyến tính các bạn cần phải biết qua các khái niêm toán học về số, biến, phương trình, và cơ bản phép tính số học trên các số thực: Các kí hiệu được mô tả: dấu công (+), dấu trừ (-), dấu nhân (được hiểu ngầm), dấu chia (/).
Vector
Vector là một đoạn thẳng có hướng. Ngoài những toán tử bình thường như phép cộng, phép trừ, phép nhân, phép chia, vector còn có tính độ dài và nhân chéo. Cho 2 vector \(\overrightarrow u = \left( {u_1 ,u_2 ,u_3 } \right)\) và \(\overrightarrow v = \left( {v_1 ,v_2 ,v_3 } \right)\).
Phép cộng 2 vector
$$\overrightarrow u + \overrightarrow v = \left( {u_1 + v_1 ,u_2 + v_2 ,u_3 + v_3 } \right)$$
Phép trừ 2 vector
$$\overrightarrow u – \overrightarrow v = \left( {u_1 – v_1 ,u_2 – v_2 ,u_3 – v_3 } \right)$$
Phép nhân vector với một số
$$\alpha \overrightarrow u = \left( {\alpha u_1 ,\alpha u_2 ,\alpha u_3 } \right)$$
Tính độ dài của một vector
$$\left\| {\overrightarrow u} \right\| = \sqrt {u_1^2 + u_2^2 + u_3^2 }$$
Phép nhân 2 vector (dot product)
$$
\overrightarrow u .\overrightarrow v = u_1 v_1 + u_2 v_2 + u_3 v_3
$$
Các bạn có thể hiểu inner product và dot product là như nhau. Các bạn có thể đọc thêm ở đây để hiểu thêm về inner product và dot product: https://www.quora.com/Whats-the-difference-between-the-inner-product-and-the-dot-product
Phép nhân chéo 2 vector (cross-product)
$$
\overrightarrow u \times \overrightarrow v = \left( {u_2 v_3 – u_3 v_2 ,u_3 v_1 – u_1 v_3 ,u_1 v_2 – u_2 v_1 } \right)
$$
Hadamard product (Schur product)
Hadamard product là phép nhân giữa hai ma trận, trong đó các cặp phần tử tương ứng giữa hai ma trận nhân cho nhau. Công thức của Hadamard product được định nghĩa như sau
$$\overrightarrow u \odot \overrightarrow v = (u_1 v_1 ,u_2 v_2 ,u_3 v_3 )$$
Ví dụ cho 2 vector \(\vec{a}\) và \(\vec{b}\) có 3 phần tử như sau
$$
\mathop {\overrightarrow a }\limits^{} = \begin{bmatrix}
1\\
2\\
3
\end{bmatrix}
$$
$$
\mathop {\overrightarrow b }\limits^{} = \begin{bmatrix}
4\\
5\\
6
\end{bmatrix}
$$
Mặc định vector ở dạng vector cột, nên khi muốn viết ngắn gọn, chúng ta thường chuyển sang viết dạng vector dòng bằng phép chuyển vị (transpose) như sau
$$
\vec a^T = \begin{bmatrix}
1 & 2 & 3
\end{bmatrix}
$$
$$
\vec b^ = \begin{bmatrix}
4 & 5 & 6
\end{bmatrix}
$$
Cosine similarity
Cosine similarity giữa 2 vector là một metric, được dùng để tính mức độ giống nhau giữa 2 vector. Cosine similarity được định nghĩa như sau
$$
cos(\Theta) = \frac{\vec{u}\cdot \vec{v}}{\left \| \vec{u} \right \| \left \| \vec{v} \right \|}\\
\,\,\,\,\,\,\,\,\,\,\,\,\,\,= \frac{\sum_i u_iv_i}{\sqrt{\sum_i u_i^2}\sqrt{\sum_i v_i^2}}
$$
Matrix
Cho matrix A và matrix B với các phần tử bên trong A và B tương ứng là \(a_{ij}$ và $b_{ij}\).
Phép cộng 2 matrix: Các phần tử tương ứng cộng cho nhau
$$
C = A + B
$$
trong đó \(c_{ij} = a_{ij} + b_{ij}\).
Phép trừ 2 matrix: Các phần tử tương ứng trừ cho nhau
$$
C = A – B
$$
trong đó \(c_{ij} = a_{ij} – b_{ij}\).
Phép nhân 2 matrix: Nhân 2 matrix \(A \in R^{m \times n}\) và \(B \in R^{n \times k} \) cho ra kết quả là matrix \(C \in R^{n \times k}\) được xác định bởi công thức
$$
C = AB
$$
trong đó \(c_{ij} = \sum\limits_{l = 1,n} {a_{il} } b_{lj}\).
Cụ thể với 2 matrix A và B định nghĩa ở trên ta được
$$
\left[ \begin{array}{l}
\begin{array}{*{20}c}
{a_{11} } & {a_{12} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{21} } & {a_{22} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{31} } & {a_{32} } \\
\end{array} \\
\end{array} \right]\left[ {\begin{array}{*{20}c}
{b_{11} } & {b_{12} } \\
{b_{21} } & {b_{22} } \\
\end{array}} \right] = \left[ \begin{array}{l}
\begin{array}{*{20}c}
{a_{11} b_{11} + a_{12} b_{21} } & {a_{11} b_{12} + a_{12} b_{22} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{21} b_{11} + a_{22} b_{21} } & {a_{21} b_{12} + a_{22} b_{22} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{31} b_{11} + a_{32} b_{21} } & {a_{31} b_{12} + a_{32} b_{22} } \\
\end{array} \\
\end{array} \right]
$$
Matrix chuyển vị \(A^T\): Chuyển đổi từ dòng sang cột
$$
\left[ {\begin{array}{*{20}c}
{\alpha _1 } & {\alpha _2 } & {\alpha _3 } \\
{\beta _1 } & {\beta _2 } & {\beta _3 } \\
\end{array}} \right]^T = \left[ {\begin{array}{*{20}c}
{\alpha _1 } & {\beta _1 } \\
{\alpha _2 } & {\beta _2 } \\
{\alpha _3 } & {\beta _3 } \\
\end{array}} \right]
$$
Nhân matrix với vector: Matrix nhân với vector là trường hợp đặt biệt của 2 matrix nhân cho nhau. Kết quả của ma trận \(A \in R^{3 \times 2}\) và vector \(\overrightarrow x \in R^{2 \times 1}\) cho ra vector \(\overrightarrow y \in R^{3 \times 1}\) được xác định như sau
$$
\begin{array}{l}
\overrightarrow y = A\overrightarrow x \\
\Leftrightarrow \left[ {\begin{array}{*{20}c}
{y_1 } \\
{y_2 } \\
{y_3 } \\
\end{array}} \right] = \left[ \begin{array}{l}
\begin{array}{*{20}c}
{a_{11} } & {a_{12} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{21} } & {a_{22} } \\
\end{array} \\
\begin{array}{*{20}c}
{a_{31} } & {a_{32} } \\
\end{array} \\
\end{array} \right]\left[ {\begin{array}{*{20}c}
{x_1 } \\
{x_2 } \\
\end{array}} \right] \\
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, = \left[ {\begin{array}{*{20}c}
{a_{11} x_1 + a_{12} x_2 } \\
{a_{21} x_1 + a_{22} x_2 } \\
{a_{31} x_1 + a_{32} x_2 } \\
\end{array}} \right] \\
\end{array}
$$