Lý thuyết toán ma trận sử dụng trong các thuật toán Machine Learning

Bài viết được sự cho phép của tác giả Kien Dang Chung

Machine learning là một tập hợp rất nhiều các thuật toán khác nhau và nó có liên hệ rất mật thiết với toán học, đặc biệt là toán cao cấp. Chúng ta ai đã mài đũng quần trên giảng đường đại học đều không còn xa lạ với Đại số tuyến tính và đây cũng là kiến thức nền tảng của rất nhiều các thuật toán sẽ được giới thiệu trong Machine Learning.

  9 hiểu lầm "ngớ ngẩn" về machine learning
  Chia sẻ cơ bản sử dụng machine learning để giải quyết bài toán.

1. Một số khái niệm cơ bản

1.1 Vô hướng (Scalar)

Scalar (mathematics), an element of a field, which is used to define a vector space, usually the field of real numbers

Một đại lượng vô hướng là một phần tử của một trường được sử dụng để xác định một không gian vector, thông thường ở đây là trường số thực.

Wiki

Tóm lại đại lượng vô hướng (Scalar) là một số bất kì thuộc tập số nào đó. Khi định nghĩa một số ta phải chỉ rõ tập số mà nó thuộc vào. Ví dụ, nn là số tự nhiên sẽ được kí hiệu: nNn∈N, hoặc rr là số thực sẽ được kí hiệu: rRr∈R. Một số thường có thể định nghĩa được bằng một kiểu dữ liệu nguyên thủy của các ngôn ngữ lập trình. Như số tự nhiên có thể là kiểu int, số thực có thể là kiểu float trong Python.

1.2 Véc tơ (Vector)

Vector là 1 mảng của các đại lượng vô hướng tương tự như mảng 1 chiều trong các ngôn ngữ lập trình. Các phần tử trong vector được đánh địa chỉ và có thể truy cập nó qua các địa chỉ tương ứng của nó. Trong toán học, một vector có thể là vector cột nếu các nó được biểu diễn dạng cột, hoặc có thể là vector hàng nếu nó được biểu diễn dưới dạng cột của các phần tử.

Một véc-tơ cột có dạng như sau:

x=⎡⎣⎢⎢⎢⎢x1x2xn⎤⎦⎥⎥⎥⎥x=[x1x2⋮xn]


Một véc-tơ hàng có dạng như sau:

x=[x1x2xn]x=[x1x2⋯xn]

Trong đó, x1x1x2x2, …, xnxn là các phần tử thứ 1, thứ 2, … thứ n của vector.

1.3 Ma trận (Matrix)

Ma trận trên trường K là một bảng liệt kê các số như: số thực, số phức hay một hàm số,… được sắp xếp theo một trật tự nhất định gốm có m dòng và n cột

A=⎡⎣⎢⎢⎢⎢⎢a11a21am1a12a22am2a1na2namn⎤⎦⎥⎥⎥⎥⎥A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮am1am2⋯amn]

Trong đó aijaij là phần tử dòng i cột j, phần tử này có thể là số thực hoặc số phức. Ma trận này được ký hiệu là A=(aij)mxnRm×nA=(aij)mxn∈Rm×n

Như vậy véc tơ là trường hợp đặc biệt của ma trận:

  • m = 1 chúng ta có ma trận A=(aij)1xnA=(aij)1xn là véc tơ hàng.
  • n = 1 chúng ta có ma trận A=(aij)mx1A=(aij)mx1 là véc tơ cột.

Ma trận tương ứng với mảng 2 chiều trong các ngôn ngữ lập trình. Véc tơ tương ứng với mảng 1 chiều.

1.4 Ten-xơ (Tensor)

Ten-xơ là một mảng đa chiều, nó là trường hợp tổng quát khi biểu diễn trường số đa chiều. Như vậy, ma trận, véc tơ và vô hướng chỉ là những trường hợp cụ thể của ten-xơ:

  • Ma trận là ten-xơ 2 chiều.
  • Véc tơ là ten-xơ 1 chiều.
  • Vô hướng là ten-xơ 0 chiều.

Các phần tử trong ten-xơ được xác định bằng các chỉ số trên từng chiều của ten-xơ, ví dụ một ten-xơ 3 chiều A=(aijk)mxnxpA=(aijk)mxnxp khi đó phần tử aijkaijk sẽ ở hàng i, cột j và mặt phẳng k.

2. Một số ma trận đặc biệt

2.1 Ma trận không

Ma trận không là ma trận mà các phần tử bên trong đều bằng 0, aij=0,i,jaij=0,∀i,j. Ma trận không được ký hiệu là 

=⎡⎣⎢⎢⎢⎢⎢000000000⎤⎦⎥⎥⎥⎥⎥∅=[00⋯000⋯0⋮⋮⋱⋮00⋯0]

2.2 Ma trận đơn vị

Ma trận đơn vị là ma trận vuông có các phần tử trên đường chéo từ bên trên tay trái xuống bên dưới tay phải bằng 1, còn các phần tử khác bằng 0. Ma trận đơn vị thường được ký hiệu là InIn trong đó nn là số hàng và số cột của ma trận:

{aij=0,ijaij=1,i=j{aij=0,∀i≠jaij=1,∀i=j

In=⎡⎣⎢⎢⎢⎢⎢100010001⎤⎦⎥⎥⎥⎥⎥In=[10⋯001⋯0⋮⋮⋱⋮00⋯1]

2.3 Ma trận vuông

Ma trận vuông là ma trận có số hàng bằng với số cột A=(aij)n×nA=(aij)n×naijRn×naij∈Rn×n. Trong ma trận vuông, đường chéo từ trên bên trái xuống dưới bên phải được gọi là đường chéo chính {aij}i=j{aij}∀i=j.

Ví dụ một ma trận vuông:

A=⎡⎣⎢132309255⎤⎦⎥A=[13−2−305−295]

2.4 Ma trận nghịch đảo

Cho một ma trận vuông A=(aij)n×nRn×nA=(aij)n×n∈Rn×n, nếu có ma trận B=(bij)n×nRn×nB=(bij)n×n∈Rn×n sao cho A×B=InA×B=In với InIn là ma trận đơn vị có kích thước nn thì ta nói rằng:

  • Ma trận AA là khả nghịch.
  • Ma trận BB là ma trận nghịch đảo của AA và được thường ký hiệu là A1A−1

Ma trận nghịch đảo thường được sử dụng để tìm lời giải cho phương trình tuyến tính dạng A×x=BA×x=B với A=(aij)n×nRn×nA=(aij)n×n∈Rn×nx=[x1x2...xn]x=[x1x2…xn] và B=(bij)n=[b1b2...bn]RnB=(bij)n=[b1b2…bn]∈Rn.

Phương trình tuyến tính này có thể viết dưới dạng chi tiết như sau:

⎧⎩⎨⎪⎪⎪⎪⎪⎪a11x1+a12x2+...+a1nxn=b1a21x1+a22x2+...+a2nxn=b2...an1x1+an2x2+...+annxn=bn{a11x1+a12x2+…+a1nxn=b1a21x1+a22x2+…+a2nxn=b2…an1x1+an2x2+…+annxn=bn

Để giải phương trình này ta chỉ cần tìm ma trận nghịch đảo A1A−1, thật vậy:

A1×A×x=A1×Bx=A1×BA−1×A×x=A−1×B⇒x=A−1×B

2.5 Ma trận chuyển vị

Ma trận chuyển vị, ký hiệu ATAT là ma trận được thành lập từ ma trận ban đầu bằng cách chuyển dòng thành cột và ngược lại:

AT=⎡⎣⎢⎢⎢⎢⎢a11a21an1a12a22am2a1ma2manm⎤⎦⎥⎥⎥⎥⎥AT=[a11a12⋯a1ma21a22⋯a2m⋮⋮⋱⋮an1am2⋯anm]

Chú ý: Đôi khi, người ta định nghĩa véc tơ cột từ véc tơ dòng như sau:

x=[x1,x2,,xn]x=[x1,x2,…,xn]⊺

Ma trận đối xứng:

Nếu một ma trận bằng chính ma trận chuyển vị của nó thì ma trận đó được gọi là ma trận đối xứng.

A=AA=A⊺ thì AA được gọi là ma trận đối xứng.

2.6 Ma trận liên hợp

Nếu ma trận A=(aij)m×nA=(aij)m×naijCm×naij∈Cm×n có các phần tử là số phức thì khi vừa thực hiện chuyển đổi hàng thành cột và lấy liên hợp phức các phần tử chúng ta được ma trận liên hợp Hermitian, được ký hiệu là AHAH.

Nói cách khác, ta có ma trận A=(aij)m×nA=(aij)m×naijCaij∈C thì ma trận B=(bij)n×mB=(bij)n×mbijCbij∈C là ma trận liên hợp phức nếu:

bij=aji¯¯¯¯¯¯,i=1,n¯¯¯¯¯¯¯¯,j=1,m¯¯¯¯¯¯¯¯¯bij=aji¯,∀i=1,n¯,j=1,m¯

Ví dụ, ta có ma trận sau:

A=[12i23+4ii]A=[1−2i3+4i2−i]

thì ma trận liên hợp phức của A sẽ là:

AH=[1+2i34i2i]AH=[1+2i23−4ii]

Khi AA là ma trận số thực (ARm×nA∈Rm×n) thì ta có AH=AAH=A⊺.

Ma trận Hermitian:

Nếu ma trận A=(aij)m×nCm×nA=(aij)m×n∈Cm×n thì ma trận A được gọi là ma trận Hermitian nếu AH=AAH=A.

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

3.1 Nhân ma trận với một số

Nhân ma trận với một số (vô hướng) là cách thực hiện phép nhân từng phần tử của ma trận với số đó.

α×A=(α×aij)m×nα×A=(α×aij)m×n

α×A=⎡⎣⎢⎢⎢⎢⎢α×a11α×a21α×an1α×a12α×a22α×am2α×a1mα×a2mα×anm⎤⎦⎥⎥⎥⎥⎥α×A=[α×a11α×a12⋯α×a1mα×a21α×a22⋯α×a2m⋮⋮⋱⋮α×an1α×am2⋯α×anm]

Nhân ma trận với một số có những tính chất như sau:

  • Giao hoán: α×A=A×αα×A=A×α
  • Tính chất kết hợp: α(βA)=(αβ)Aα(βA)=(αβ)A
  • Tính chất phân phối: (α+β)A=αA+βA(α+β)A=αA+βA

Ví dụ:

A=⎡⎣⎢⎢⎢5703328061219535⎤⎦⎥⎥⎥A=[536−9−72150−82−33015]

Thì:

2×A=⎡⎣⎢⎢⎢⎢2×52×(7)2×02×32×32×22×(8)2×02×62×12×22×12×(9)2×52×(3)2×5⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢10140664160122421810610⎤⎦⎥⎥⎥2×A=[2×52×32×62×(−9)2×(−7)2×22×12×52×02×(−8)2×22×(−3)2×32×02×12×5]=[10612−18−1442100−164−660210]

3.2 Phép cộng hai ma trận

Phép cộng hai trận chỉ thực hiện được khi cùng cấp, ví dụ A=(aij)m×nA=(aij)m×n có thể cộng với B=(bij)m×nB=(bij)m×n:

A+B=(aij)m×n+(bij)m×n=(aij+bij)m×nA+B=(aij)m×n+(bij)m×n=(aij+bij)m×n

Viết một cách chi tiết như sau:

A+B=⎡⎣⎢⎢⎢⎢⎢a11a21am1a12a22am2a1na2namn⎤⎦⎥⎥⎥⎥⎥+⎡⎣⎢⎢⎢⎢⎢b11b21bm1b12b22bm2b1nb2nbmn⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢a11+b11a21+b21am1+bm1a12+b12a22+b22am2+bm2a1n+b1na2n+b2namn+bmn⎤⎦⎥⎥⎥⎥⎥A+B=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮am1am2⋯amn]+[b11b12⋯b1nb21b22⋯b2n⋮⋮⋱⋮bm1bm2⋯bmn]=[a11+b11a12+b12⋯a1n+b1na21+b21a22+b22⋯a2n+b2n⋮⋮⋱⋮am1+bm1am2+bm2⋯amn+bmn]

Phép cộng hai ma trận có một số tính chất như sau:

  • Cộng với ma trận không bằng chính nó: A+=AA+∅=A
  • Tính giao hoán: A+B=B+AA+B=B+A
  • Tính kết hợp: A+(B+C)=(A+B)+CA+(B+C)=(A+B)+C
  • Tính phân phối: α(A+B)=αA+αBα(A+B)=αA+αB

3.3 Phép nhân hai ma trận

Cho hai ma trận A=(aij)m×nA=(aij)m×n và B=(bij)n×pB=(bij)n×p. Phép nhân hai ma trận cho kết quả là một ma trận C=(cij)m×pC=(cij)m×p với:

cij=k=1naik×bkj,i=1,m¯¯¯¯¯¯¯¯¯;j=1,p¯¯¯¯¯¯¯cij=∑k=1naik×bkj,∀i=1,m¯;j=1,p¯

Chú ý: Để nhân được hai ma trận thì số cột của ma trận thứ nhất phải bằng số hàng của ma trận thứ hai trong phép nhân.\

Một số tính chất của phép nhân hai ma trận:

  • Nhân ma trận với ma trận đơn vị không làm thay đổi ma trận đó: A×I=AA×I=A
  • Không có tính chất giao hoán trong phép nhân: A×BB×AA×B≠B×A, trong nhiều trường hợp phép nhân B×AB×A còn không tồn tại do số cột của B khác số hàng của A.
  • Tính kết hợp: A×(B×C)=(A×B)×CA×(B×C)=(A×B)×C.
  • Tính phân phối: A×(B+C)=A×B+A×CA×(B+C)=A×B+A×C và (A+B)×C=A×C+B×C(A+B)×C=A×C+B×C.
  • Chuyển vị của một tích bằng tích các chuyển vị theo thứ tự ngược lại: (A×B)=B×A(A×B)⊺=B⊺×A⊺.
  • Liên hợp phức của một tích bằng tích các liên hợp phức theo thứ tự ngược lại: (A×B)H=BH×AH(A×B)H=BH×AH.

4. Giải tích ma trận

4.1 Hàm đa biến số

Như chúng ta đã biết các phương trình đường thẳng y=ax+by=ax+b (có thể viết dạng ax+by+c=0ax+by+c=0) hay phương trình mặt phẳng ax+by+cz+d=0ax+by+cz+d=0. Tổng quát hóa, một siêu mặt phẳng trong không gian n chiều có phương trình như sau:

a1x1+a2x2+...+anxn+a0=0a1x1+a2x2+…+anxn+a0=0

Hàm số đa biến số là một hàm phụ thuộc vào nhiều biến số f(x):RnRf(x):Rn→R. Viết một các chi tiết hơn:

(x1,x2,...,xn)f(x1,x2,...,xn)R(x1,x2,…,xn)→f(x1,x2,…,xn)∈R

Ví dụ, z=x2+y2z=x2+y2 là một hàm số của biến x,yx,y.

Trong machine learning, các vấn đề chúng ta gặp phải không chỉ có đầu ra là một số (vô hướng) mà có thể là một vector, tổng quát hơn có thể là ma trận hoặc tensor. Do đó hàm số đa biến sẽ ở dạng tổng quát hơn, còn gọi là hàm véc tơ như sau:

f(x):RnRmf(x):Rn→Rm

Ví dụ một hàm vector có ba biến số như sau f(x,y,z):R3R2f(x,y,z):R3→R2:

f(x,y,z)=[x2+sin(y)+xzcos(x)+y2z]f(x,y,z)=[x2+sin(y)+xzcos(x)+y2z]

4.2 Đạo hàm riêng

Đạo hàm riêng của một hàm nhiều biến số là đạo hàm theo biến số đó với giả thuyết các biến số khác là hằng số. Ký hiệu fx(x0,y0)fx′(x0,y0) hoặc f(x0,y0)x∂f(x0,y0)∂x, đây là đạo hàm riêng theo biến xx, còn đạo riêng theo biến yy sẽ viết như sau: fy(x0,y0)fy′(x0,y0) hoặc f(x0,y0)y∂f(x0,y0)∂y.

Ví dụ: với hàm số ở phần trên ta có đạo hàm riêng theo các biến x,y,zx,y,z như sau:

f(x,y,z)x=[2x+zsin(x)]f(x,y,z)x′=[2x+z−sin(x)]

f(x,y,z)y=[cos(y)2yz]f(x,y,z)y′=[cos(y)2yz]

f(x,y,z)z=[xy2]

Bài viết gốc được đăng tải tại allaravel.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev