Vi phân của hàm một biến
Chuỗi Taylor
Chuỗi Taylor của một hàm số f là tổng vô hạn của các phần tử biểu diễn bằng các đạo hàm của hàm số f tại điểm x 0 Định nghĩa 1.1.3 (Đa thức Taylor) Đa thức Taylor bậcncủaf : R → R tại x 0 được định nghĩa là
X k=0 f (k) (x 0 ) k! (x−x 0 ) k , (1.4) trong đó f (k) (x 0 ) là đạo hàm thứ k của f tại x 0 và f
(k)(x 0 ) k! là các hệ số của đa thức.
Ví dụ 1.1.2 (Đa thức Taylor) Cho đa thức f(x) = x 4 (1.5)
Tìm đa thức Taylor T 6 tại x 0 = 1. Đầu tiên, tính hệ số f (k) (1) với k = 0, ,6: f(x) = x 4 ⇒f(1) = 1 4 = 1 (1.6a) f ′ (x) = 4x 3 ⇒f ′ (1) = 4.1 3 = 4 (1.6b) f ′′ (x) = 12x 2 ⇒f ′′ (1) = 12.1 2 = 12 (1.6c) f (3) (x) = 24x ⇒f (3) (1) = 24.1 = 24 (1.6d) f (4) (x) = 24 ⇒f (4) (1) = 24 (1.6e) f (5) (x) = 0 ⇒f (5) (1) = 0 (1.6f) f (6) (x) = 0 ⇒f (6) (1) = 0 (1.6g)
Do đó, đa thức Taylor T 6 tại x 0 = 1 là
= 1 + 4(x−1) + 6(x−1) 2 + 4(x−1) 3 + (x−1) 4 + 0 (1.7c) Để kiểm tra T 6 (x) có phải là biểu diễn của hàm số ban đầu hay không bằng cách khai triển đa thức (1.7c), ta được
= x 4 = f(x), (1.8d) tức là nhận được một biểu diễn chính xác của hàm số ban đầu.
Hình 1.1: Đa thức Taylor Hàm số ban đầu f(x) = sin(x) + cos(x) (đen, nét liền) được xấp xỉ bằng đa thức Taylor (nét đứt) tại x 0 = 0 Đa thức Taylor bậc cao xấp xỉ hàm số f chính xác hơn T 10 tương tự với f trong [−4; 4]. Định nghĩa 1.1.4 (Chuỗi Taylor) Cho hàm trơn f ∈ C ∞ , f : R → R, chuỗi Taylor của f tại x 0 được định nghĩa
Khi x 0 = 0, chúng ta nhận được chuỗi Maclaurin - trường hợp đặc biệt của chuỗi Taylor Nếuf(x) = T ∞ (x) thì f được gọi là hàm giải tích.
Nhận xét 1.1.5 Đa thức Taylor bậc nlà xấp xỉ của một hàm số, không nhất thiết phải là một đa thức Đa thức Taylor tương tự với f trong lân cận xung quanh x 0 Tuy nhiên, đa thức Taylor bậc n là một biểu diễn chính xác của đa thức f bậc k ≤ n vì mọi đạo hàm f (i) , i > k đều bằng 0.
Ví dụ 1.1.3 (Chuỗi Taylor) Xét hàm số f(x) = sinx + cosx ∈ C ∞ (xem Hình 1.1) Tìm khai triển chuỗi Taylor của hàm số f tại x 0 = 0.Khai triển chuỗi Taylor của hàm số f tại x 0 = 0 chính là khai triển chuỗi Maclaurin của f.
Ta có các đạo hàm sau f(x) = sinx+ cosx ⇒f(0) = sin 0 + cos 0 = 1 (1.10a) f ′ (x) = cosx−sinx ⇒f ′ (0) = cos 0−sin 0 = 1 (1.10b) f ′′ (x) = −sinx−cosx ⇒f ′′ (0) = −sin 0−cos 0 = −1 (1.10c) f (3) (x) =−cosx+ sinx ⇒f (3) (0) = −cos 0 + sin 0 = −1 (1.10d) f (4) (x) = sinx+ cosx ⇒f (4) (0) = sin 0 + cos 0 = 1 (1.10e)
Ta thấy hệ số trong chuỗi Taylor chỉ có giá trị là 1 hoặc −1 (vì sin 0 = 0), mỗi hệ số xảy ra hai lần trước khi chuyển sang hệ số khác. Hơn nữa, f (k+4) (0) = f (k) (0).
Do đó, khai triển chuỗi Taylor đầy đủ của f tại x 0 = 0 là
= cosx+ sinx, (1.11e) trong đó chúng tôi sử dụng các biểu diễn chuỗi lũy thừa cosx ∞
Từ Hình 1.1 ta thấy các đa thức Taylor đầu tiênT n ứng vớin = 0,1,5,10.
Nhận xét 1.1.6 Chuỗi Taylor là trường hợp đặc biệt của chuỗi lũy thừa f(x) ∞
X k=0 a k (x−c) k , (1.14) trong đó a k là hệ số và c là hằng số, có dạng đặc biệt trong Định nghĩa
Các quy tắc tính đạo hàm
Kí hiệu đạo hàm của hàm số f là f ′ Các quy tắc tính đạo hàm là
Quy tắc dây xích: (g(f(x))) ′ = (g ◦f) ′ (x) = g ′ (f(x))f ′ (x) (1.18) trong đó, g ◦f là kí hiệu của hàm hợp từ hai hàm số f và g, được biểu thị x 7→f(x) 7→ g(f(x)).
Ví dụ 1.1.4 (Quy tắc tính đạo hàm) Tìm đạo hàm của hàm sốh(x) = (2x+ 1) 4 bằng cách sử dụng quy tắc dây xích.
Ta có h(x) = (2x+ 1) 4 = g(f(x)), (1.19) f(x) = 2x+ 1, (1.20) g(f) = f 4 (1.21) Đạo hàm của hàm số f(x) và g(x) là f ′ (x) = 2, g ′ (f) = 4f 3
Do đó đạo hàm của hàm số h(x) là h ′ (x) (1.18) = g ′ (f)f ′ (x) = 4f 3
Đạo hàm riêng và gradient
Đạo hàm riêng
Định nghĩa 1.2.1 (Đạo hàm riêng) Cho hàm sốf : R n → R, x → f (x), x ∈ R n n biến x 1 , , x n Các đạo hàm riêng được định nghĩa là
(1.22) và viết tập hợp chúng thành một vectơ hàng
∈ R 1×n , (1.23) trong đó n là số biến và 1 là số chiều của ảnh/phạm vi/tên miền của f. Chúng ta xác định vectơ cột x = [x 1 , , x n ] ⊤ ∈ R n Vectơ hàng trong (1.23) được gọi làgradient củaf hoặc Jacobi Như vậy, gradient của hàm số f theo x là một vectơ gồm n đạo hàm riêng.
Nhận xét 1.2.2 Định nghĩa Jacobi nói trên là một trường hợp đặc biệt của định nghĩa Jacobi tổng quát cho các hàm giá trị vectơ là tập hợp các đạo hàm riêng Điều này sẽ được trình bày cụ thể trong phần 2.1.
Ví dụ 1.2.1 (Đạo hàm riêng sử dụng quy tắc dây xích) Cho hàm số f(x, y) = x+ 2y 3 2
Tìm đạo hàm riêng của hàm số f(x, y) theo x và y.
Sử dụng quy tắc dây xích (1.17) ta được các đạo hàm riêng của hàm số f(x, y) theo x và y là
Nhận xét 1.2.3 (Gradient dưới dạng vectơ hàng) Chúng ta thường gặp trong các tài liệu, định nghĩa vectơ gradient là vectơ cột, tuân theo quy ước rằng vectơ nói chung là vectơ cột Tuy nhiên, vectơ gradient còn được định nghĩa là một vectơ hàng, điều này sẽ được tường minh trong phần 2.1 Chúng tôi tổng quát gradient thành các hàm giá trị vectơ f : R n → R m (khi đó gradient trở thành một ma trận), sau đó áp dụng quy tắc dây xích cho nhiều biến mà không cần quan tâm đến số chiều của gradient.
Ví dụ 1.2.2 (Gradient) Cho f(x 1 , x 2 ) = x 2 1 x 2 +x 1 x 3 2 ∈ R. Đạo hàm riêng (đạo hàm của f theo x 1 và x 2 ) là
∂x 2 = x 2 1 + 3x 1 x 2 2 , và gradient là df dx ∂f(x 1 , x 2 )
Các quy tắc cơ bản của đạo hàm riêng
Trong trường hợp nhiều biến x ∈ R n , các quy tắc tính đạo hàm trong mục (1.1.2) vẫn được áp dụng Tuy nhiên, khi tính đạo hàm theo vectơ x ∈ R n cần chú ý:
Các gradient liên quan đến vectơ và ma trận;
Phép nhân ma trận thì không giao hoán, nghĩa là thứ tự quan trọng. Các quy tắc cơ bản của đạo hàm riêng:
∂x (1.26) trong đó, g ◦f là kí hiệu của hàm hợp từ hai hàm số f và g, được biểu thị x 7→f(x) 7→ g(f(x)).
Quy tắc dây xích
Xét hàm số f : R 2 → R theo hai biến x 1 , x 2 ; x 1 (t), x 2 (t) là các hàm số của t Để tính gradient của f đối với t, chúng ta áp dụng quy tắc dây xích (1.26) cho hàm số nhiều biến df dt ∂f
∂t , (1.27) trong đó, d kí hiệu gradient và ∂ kí hiệu đạo hàm riêng.
Ví dụ 1.2.3 Xét hàm số f(x 1 , x 2 ) = x 2 1 + 2x 2 , trong đó x 1 = sint và x 2 = cost.
Khi đó đạo hàm của hàm số f theo t là df dt = ∂f
Nếu f(x 1 , x 2 ) là một hàm số của x 1 và x 2 , trong đó x 1 (s, t) và x 2 (s, t) là các hàm số của hai biến s và t, thì quy tắc dây xích áp dụng cho đạo hàm riêng là
∂t , (1.30) và gradient thu được bằng cách nhân hai ma trận là df d(s, t) = ∂f
Nhận xét 1.2.4 Đạo hàm riêng được định nghĩa là giới hạn của tỷ sai phân (xem 1.22), có thể sử dụng khi kiểm tra bằng số tính đúng đắn của gradient trong chương trình máy tính: Khi tính gradient và khai triển chúng, có thể sử dụng sai phân hữu hạn để kiểm tra số và khai triển Chúng tôi chọn giá trị h nhỏ (ví dụ h = 10 −4 ) và so sánh xấp xỉ sai phân hữu hạn từ (1.22) với khai triển (phân tích) của gradient Nếu sai số nhỏ, khai triển gradient ở trên có thể đúng "Nhỏ" có nghĩa là sP i(dh i −df i ) 2
P i(dh i +df i ) 2 < 10 −6 , trong đó dh i là xấp xỉ sai phân hữu hạn và df i là khai triển gradient của f đối với biến thứ i.
Gradient của hàm vectơ và hàm giá trị ma trận
Trong chương này chúng tôi trình bày định nghĩa, một số tính chất, ví dụ về gradient của hàm vectơ và hàm giá trị ma trận, cùng với một số đồng nhất thức gradient hữu ích Kiến thức sử dụng trong chương được tham khảo trong các tài liệu [1], [3] và [4].
Gradient của hàm vectơ
Hàm vectơ
Đạo hàm riêng và gradient của hàm sốf : R n → R đã được nghiên cứu ở chương 1 Trong phần này, chúng tôi sẽ tổng quát khái niệm gradient thành các hàm vectơ (trường vectơ) f : R n →R m , với n ≥ 1 và m > 1. Đối với hàm f : R n → R m và vectơ x= [x 1 , , x n ] ⊤ ∈ R n , các vectơ tương ứng của giá trị hàm số đã cho là f(x)
Viết hàm vectơ theo cách trên cho chúng ta xem hàm vectơf : R n → R m như vectơ của hàm [f 1 , , f m ] ⊤ , f i :R n → R ánh xạ lên R Các quy tắc cơ bản của đạo hàm riêng ở phần 1.2 vẫn được áp dụng với mọi f i
Do đó, đạo hàm riêng của hàm vectơf : R n → R m ứng vớix i ∈ R, i = 1, , n,
13 được cho dưới dạng vectơ
Từ (1.23), chúng ta biết rằng gradient của f ứng với một vectơ là vectơ hàng của các đạo hàm riêng Trong (2.2), mỗi đạo hàm riêng ∂f
∂x là một vectơ cột Do đó, gradient của f : R n → R m với x ∈ R n là một ma trận thuộc R m×n gồm tập hợp các đạo hàm riêng: df(x) dx ∂f(x)
Jacobi
Định nghĩa 2.1.1 (Jacobi) Tập hợp tất cả các đạo hàm riêng cấp một của hàm vectơ f : R n →R m được gọi là Jacobi Jacobi J là một ma trận m×n được sắp xếp như sau
J= ∇ x f = df(x) dx df(x) dx 1 df(x) dx n
Trường hợp đặc biệt của (2.5), nếu f :R n → R 1 , ánh xạ vectơ x ∈ R n lên một đại lượng vô hướng (ví dụ f(x) n
X i=1 x i ) thì Jacobi nhận được là một vectơ hàng (ma trận 1×n), xem (1.23).
Nhận xét 2.1.2 Chúng tôi sử dụng cách sắp xếp tử số (numerator layout) của đạo hàm, nghĩa là đạo hàm df dx của f ∈ R m ứng với x ∈ R n là một ma trận m×n, các phần tử của f xác định các hàng và các phần tử x xác định các cột của Jacobi tương ứng, xem (2.5) Trong đó cũng tồn tại cách sắp xếp mẫu số (denominator layout) - chuyển vị của cách sắp xếp tử số Trong Đề án, chúng tôi sẽ sử dụng cách sắp xếp tử số.
Hai cách tiếp cận để xác định ánh xạ biến hình vuông đơn vị này thành hình vuông kia
đơn vị này thành hình vuông kia
Hình 2.1: Định thức của Jacobi của f có thể được sử dụng để tính độ phóng đại giữa vùng màu xanh và vùng màu cam
Chúng ta sử dụng định thức để tính diện tích hình bình hành Cho hai vectơ b 1 = [1,0] ⊤ và b 2 = [0,1] ⊤ là các cạnh của hình vuông đơn vị (màu xanh, xem hình 2.1) Khi đó, diện tích hình vuông là det "
Cho hình bình hành có các cạnh c 1 = [−2,1] ⊤ và c 2 = [1,1] ⊤ (màu cam trong hình 2.1) Khi đó, diện tích hình bình hành được cho dưới dạng giá trị tuyệt đối của định thức det "
= 3, (2.8) nghĩa là diện tích hình bình hành gấp 3 lần diện tích hình vuông đơn vị Chúng ta có thể tìm được hệ số tỉ lệ này bằng cách tìm một ánh xạ biến hình vuông đơn vị này thành hình vuông kia Trong Đại số tuyến tính, có thể dễ dàng thực hiện phép biến đổi từ (b 1 ,b 2 ) sang (c 1 ,c 2 ). Trong trường hợp trên, ánh xạ là tuyến tính và giá trị tuyệt đối của định thức ánh xạ này cung cấp chính xác hệ số tỉ lệ mà chúng ta đang tìm kiếm.
Hai cách tiếp cận để xác định ánh xạ biến hình vuông đơn vị này thành hình vuông kia sẽ được trình bày cụ thể dưới đây:
Cách thứ nhất, sử dụng phương pháp Đại số tuyến tính.
Cách thứ hai, sử dụng đạo hàm riêng.
Cách tiếp cận thứ nhất: Dùng phương pháp Đại số tuyến tính
Bằng phương pháp Đại số tuyến tính, chúng tôi xác định được (b 1 ,b 2 ) và (c 1 ,c 2 ) là cơ sở của R 2 Vì (b 1 ,b 2 ) là ma trận đơn vị nên ma trận chuyển cơ sở từ (b 1 ,b 2 ) sang (c 1 ,c 2 ) là
, (2.9) khi đó Jb 1 = c 1 và Jb 2 = c 2
Giá trị tuyệt đối của định thức của J chính là hệ số tỉ lệ mà chúng tôi đang tìm kiếm, được cho là |detJ| = 3, nghĩa là diện tích hình vuông có cạnh (c 1 ,c 2 ) lớn gấp 3 lần diện tích hình vuông có cạnh (b 1 ,b 2 ).
Cách tiếp cận thứ hai: Sử dụng đạo hàm riêng
Phương pháp Đại số tuyến tính chỉ dùng cho các phép biến đổi tuyến tính, đối với các phép biến đổi phi tuyến tính, chúng tôi thực hiện cách tiếp cận tổng quát hơn bằng cách sử dụng các đạo hàm riêng. Đối với cách tiếp cận này, chúng tôi xét hàm số hai biến f :R 2 →R 2 Trong ví dụ, ánh xạ f biểu diễn tọa độ của vectơ x ∈ R 2 ứng với (b 1 ,b 2 ) lên biểu diễn tọa độ y ∈ R 2 ứng với (c 1 ,c 2 ) Ánh xạ này cho phép chúng tôi tính diện tích (hoặc thể tích) khi nó bị biến đổi bởi f Vậy f(x) thay đổi như thế nào khi x thay đổi? Để trả lời được điều này, bằng cách sử dụng ma trận Jacobi df dx ∈ R 2×2 , ta có thể viết y 1 = −2x 1 +x 2 , (2.10) y 2 = x 1 + x 2 (2.11) Đạo hàm riêng của y 1 và y 2 lần lượt theo hai biến x 1 và x 2 là
∂x 2 = 1, (2.12) và tạo thành Jacobi là
Jacobi đại diện cho phép biến đổi tọa độ mà chúng tôi tìm kiếm Nếu phép biến đổi tọa độ là tuyến tính thì Jacobi chính là phép biến đổi tọa độ và (2.13) chính là ma trận chuyển cơ sở trong (2.9) Nếu phép biến đổi tọa độ là phi tuyến tính thì Jacobi biểu diễn xấp xỉ phép biến đổi phi tuyến tính này với một phép biến đổi tuyến tính Giá trị tuyệt đối của định thức Jacobi |detJ| là hệ số tỉ lệ của diện tích (hoặc thể tích) khi thực hiện phép biến đổi tọa độ Như đã tính ở trước, |detJ|= 3.
Trong bối cảnh huấn luyện mạng nơ-ron sâu (deep neural networks) bằng cách sử dụng thủ thuật tham số hóa (reparametrization trick) (còn được gọi là phân tích nhiễu loạn vô hạn - infinite perturbation analysis), định thức Jacobi, phép biến đổi các biến ngẫu nhiên và phân phối xác suất được dùng trong Máy học.
Trong chương 1, chúng tôi đã trình bày đạo hàm riêng của hàm số. Hình 2.2 tổng hợp số chiều của các đạo hàm riêng đó.
Nếu f : R → R thì gradient là một đại lượng vô hướng (phía trên bên trái).
Hình 2.2: Số chiều của đạo hàm riêng
Nếu f : R D → R thì gradient là một vectơ hàng 1×D (phía trên bên phải).
Nếu f : R → R E thì gradient là một vectơ cột E×1 (phía dưới bên trái).
Nếu f : R D → R E thì gradient là một ma trận E ×D (phía dưới bên phải).
Một số ví dụ
Ví dụ 2.1.1 (Gradient của hàm vectơ) Cho f(x) = Ax,f(x) ∈ R M ,
A ∈ R M×N , x ∈ R N Tính gradient df dx. Đầu tiên, để tính gradient df dx, chúng ta xác định số chiều của df dx.
Thứ hai, để tính gradient df dx, chúng ta xác định các đạo hàm riêng của f theo x j : f i (x) N
∂x j = A ij (2.14) Đưa các đạo hàm riêng vào trong ma trận Jacobi, và nhận được gradient là df dx
Ví dụ 2.1.2 (Quy tắc dây xích) Cho hàm số h : R →R, h(t) = (f◦g)(t) với f : R 2 →R, (2.16) g : R → R 2 , (2.17) f(x) = e x 1 x 2 2 , (2.18) x " x 1 x 2
∂t ∈ R 2×1 (2.20) Áp dụng quy tắc dây xích ta tính được gradient dh dt = ∂f
, (2.21c) trong đó x 1 = tcost và x 2 = tsint, xem (2.19).
Ví dụ 2.1.3 (Gradient của hàm mất mát (loss function) bình phương nhỏ nhất trong mô hình tuyến tính) Xét mô hình tuyến tính y = Φθ, (2.22) trong đó θ ∈ R D là một vectơ tham số, Φ ∈ R N ×D là các đặc tính đầu vào (input features) vày ∈ R N là các quan sát tương ứng (corresponding observations) Chúng tôi định nghĩa các hàm
L(e) := ∥e∥ 2 , (2.23) e(θ) := y−Φθ (2.24) Áp dụng quy tắc dây xích và tính được ∂L
∂θ L được gọi là hàm mất mát bình phương nhỏ nhất. Đầu tiên, xác định số chiều của gradient
Chúng tôi tính được gradient bằng cách sử dụng quy tắc dây xích
∂θ, (2.26) trong đó phần tử thứ d được cho bởi
Hơn nữa, ta lại có
∂θ = −Φ ∈ R N ×D , (2.29) do đó chúng tôi tính được đạo hàm là
Nhận xét 2.1.3 Chúng ta sẽ thu được kết quả tương tự mà không cần sử dụng quy tắc dây xích bằng cách xét trực tiếp hàm L 2 với
L 2 (θ) := ∥y−Φθ∥ 2 = (y−Φθ) ⊤ (y−Φθ) (2.31)Tuy nhiên, cách tiếp cận này chỉ có thể thực hành đối với các hàm đơn giản như L 2 mà sẽ khó khăn với các hàm phức tạp hơn.
Gradient của hàm giá trị ma trận
Trong nhiều trường hợp, chúng ta cần lấy gradient của ma trận đối với vectơ (hoặc ma trận khác), kết quả nhận được là một tenxơ đa chiều Có thể xem tenxơ này như một hệ đa chiều bằng cách thu thập các đạo hàm riêng Ví dụ, nếu tính gradient của một ma trận A cỡ m×n với ma trận
B cỡ p×q thì kết quả Jacobi là (m×n)×(p×q) Điều đó đồng nghĩa với việc chúng ta nhận được một tenxơ J 4 chiều, có các phần tử được cho là J ijkl = ∂A ij
Vì các ma trận biểu diễn các ánh xạ tuyến tính nên thực tế có một đẳng cấu của không gian vectơ (ánh xạ tuyến tính, khả nghịch) giữa không gian R m×n của ma trận m×n và không gian R mn của mn vectơ Do đó, chúng ta có thể tạo hình lại các ma trận thành các vectơ có độ dài lần lượt mn và pq Gradient sử dụng mn vectơ này là một Jacobi có kích thước mn × pq Hình 2.3, 2.4, 2.5 trực quan hóa cả hai cách tiếp cận Trong các ứng dụng thực tế, người ta thường định hình lại ma trận thành một vectơ và tiếp tục làm việc với ma trận Jacobi: Quy tắc dây xích (1.26) rút gọn thành phép nhân ma trận đơn giản, trong khi đó đối với trường hợp Jacobi tenxơ, cần phải chú ý đến số chiều mà chúng ta cần tổng hợp. Chúng tôi sẽ trực quan hóa gradient của ma trận A ∈ R 4×2 ứng với vectơ x ∈ R 3 Đầu tiên, trực quan hóa A ∈ R 4×2 và x ∈ R 3 như sau
Hình 2.3: Trực quan hóa A ∈ R 4×2 và x ∈ R 3
Cách tiếp cận 1: Các đạo hàm riêng ∂A
4×2 và tập hợp chúng thành 4×2×3 tenxơ.
Cách tiếp cận 2: Làm phẳng A ∈ R 4×2 thành vectơ Ae ∈ R 8 , sau đó, tính gradient dAe dx ∈ R 8×3 , chúng tôi nhận được gradient tenxơ bằng cách tạo hình lại gradient này như hình minh họa.
Hình 2.4: Trực quan hóa cách tiếp cận 1
Hình 2.5: Trực quan hóa cách tiếp cận 2
Ví dụ 2.2.1 (Gradient của vectơ đối với ma trận) Cho f = Ax, f ∈ R M , A ∈ R M ×N , x ∈ R N (2.32) Tìm gradient df dA.
Số chiều của gradient là df dA ∈ R M ×(M×N ) (2.33) Theo định nghĩa, gradient là tập hợp các đạo hàm riêng: df dA
∂A ∈ R 1×(M×N ) (2.34) Để tính các đạo hàm riêng, chúng ta sẽ tính phép nhân vectơ ma trận: f i N
A ij x j , i = 1, , M, (2.35) và các đạo hàm riêng được cho dưới dạng
∂A iq = x q (2.36) Điều này cho phép chúng tôi tính các đạo hàm riêng của f i đối với một hàng của A, được cho bởi
∂A k̸=i,: = 0 ⊤ ∈ R 1×1×N , (2.38) trong đó chúng ta phải chú ý đến số chiều Vì f i ánh xạ lên R và mỗi hàng của A có kích thước 1×N nên tenxơ có kích thước 1×1×N là đạo hàm riêng của f i đối với một hàng của A.
Chúng tôi nhận được gradient trong (2.34) bằng cách xếp các đạo hàm riêng (2.38) như sau
Ví dụ 2.2.2 (Gradient của ma trận đối với ma trận) Xét ma trận
Gradient có số chiều dK dR ∈ R (N ×N )×(M×N ) , (2.41) là một tenxơ Hơn nữa, dK pq dR ∈ R 1×M ×N , (2.42) vớip, q = 1, , N, trong đóK pq là lối vào(entry)thứ(p, q)củaK = f(R). Cột thứ i của R bởi mỗi lối vào r i của K được cho bởi tích hai cột của
Khi đó, đạo hàm riêng ∂K pq
∂R ij R mp R mq = ∂ pqij , (2.44) Suy ra,
Từ (2.41), ta biết rằng gradient có số chiều (N × N) × (M × N) và mọi lối vào đơn của tenxơ này được cho bởi ∂ pqij trong (2.45), trong đó p, q, j = 1, , N và i = 1, , M.
Một số đồng nhất thức gradient
Trong phần này chúng tôi trình bày một số đồng nhất thức hữu dụng để tớnh toỏn gradient Chỳng tụi ký hiệu tr(ã) cho hàm vết, det(ã) cho hàm định thức, và f(X) −1 ký hiệu cho nghịch đảo của f(X).
∂s(x−As) ⊤ W(x−As) =−2(x−As) ⊤ WA đối xứng W (2.55) Nhận xét 2.3.1 Trong Đề án, chúng tôi chỉ đề cập đến vết và chuyển vị của ma trận Tuy nhiên, nếu đạo hàm là tenxơ đa chiều thì vết và chuyển vị thông thường không xác định được Trong trường hợp đó, vết của tenxơ D×D×E×F là một ma trận (E×F) - chiều Đây là trường hợp đặc biệt của phép co tenxơ (tensor contraction).
Tương tự, khi "chuyển vị" một tenxơ, chúng ta đang hoán đổi hai chiều đầu tiên của nó Cụ thể, trong (2.46) đến (2.49), chúng tôi thực hiện các phép tính liên quan đến tenxơ khi làm việc với các hàm đa biến f(ã) và tớnh đạo hàm theo ma trận (và khụng chọn cỏch biến chỳng thành vectơ như đã trình bày trong phần 2.2).
Một số ứng dụng của đạo hàm vectơ trong Máy học
Trong chương này chúng tôi trình bày một số ứng dụng của đạo hàm trong Học sâu và trong việc tính vi phân tự động Kiến thức sử dụng trong chương được tham khảo trong tài liệu [1], [2] và [3].
Gradient trong Học sâu
Quy tắc dây xích được sử dụng rất nhiều trong Học sâu Giá trị của hàm số y được tính dưới dạng hợp thành của nhiều hàm số qua nhiều lớp y = (f K ◦f K−1 ◦ ã ã ã ◦f 1 ) (x) = f K (f K−1 (ã ã ã(f 1 (x))ã ã ã)), (3.1) trong đó x là đầu vào (ví dụ: hình ảnh), y là các quan sát (ví dụ: nhãn lớp) và mỗi hàm số f i , i = 1, , K, có tham số riêng của nó.
Trong mạng nơ-ron có nhiều lớp, chúng ta có các hàm f i (x i−1 ) σ(A i−1 x i−1 + b i−1 ) ở lớp thứ i Trong đó, x i−1 là đầu ra của lớp i−1 và σ là hàm kích hoạt, chẳng hạn như hàm sigmoid 1
2x −1 e 2x + 1 hoặc hàm đơn vị tuyến tính chỉnh lưu ReLU (ReLU(z) = max(z,0)). Để huấn luyện các mô hình này, chúng ta cần gradient của hàm lỗi L ứng với tất cả các mô hình tham số A j ,b j với j = 1, , K Điều này bắt buộc chúng ta phải tính gradient của L đối với đầu vào của mỗi lớp.
Ví dụ, nếu chúng ta có đầu vào x, các quan sát y và cấu trúc mạng được
Hình 3.1: Chuyển tiếp trong mạng nơ-ron nhiều lớp để tính hàm lỗi L như một hàm của các đầu vào x và các tham số A j , b j
Tìm A j ,b j với j = 0, , K −1 sao cho hàm lỗi bình phương là nhỏ nhất
L(θ) =∥y−f K (θ,x)∥ 2 , (3.4) trong đó θ = {A 0 ,b 0 , ,A K−1 ,b K −1 }. Để có được các gradient ứng với tập tham số θ, chúng ta cần tìm đạo hàm riêng của L ứng với các tham số θ j = {A j ,b j } của mỗi lớp j = 0, , K −1 Áp dụng quy tắc dây xích, ta có các đạo hàm riêng
Các số hạng màu đỏ là đạo hàm riêng của đầu ra của một tầng (layer) ứng với các đầu vào của nó, trong khi đó các số hạng màu xanh là đạo hàm riêng của đầu ra của một tầng ứng với các tham số của nó. Giả sử, chúng ta tính các đạo hàm riêng ∂L
∂θ i+1 thì hầu hết các phép tính có thể được sử dụng lại để tính ∂L
∂θ i Các số hạng cần tính toán được thêm vào biểu thị bằng các hộp Hình 3.2 cho thấy các gradient được truyền ngược qua mạng.
Hình 3.2: Truyền ngược trong mạng nơ-ron nhiều lớp để tính gradient của hàm lỗi.
Tính vi phân tự động
Lan truyền ngược là một trường hợp đặc biệt của kĩ thuật chung trong giải tích số được gọi là tính vi phân tự động Chúng ta có thể xem tính vi phân tự động như một tập hợp các kĩ thuật để đánh giá bằng số gradient chính xác của một hàm số bằng cách làm việc với các biến trung gian và áp dụng quy tắc dây xích Tính vi phân tự động áp dụng cho các phép toán số học cơ bản, ví dụ: cộng và nhân các hàm số cơ bản như sin, cos, exp, log Áp dụng quy tắc dây xích, gradient của các hàm số phức tạp được tính tự động Tính vi phân tự động áp dụng cho các chương trình máy tính nói chung và có chế độ chuyển tiếp (forward mode) và chế độ đảo ngược (reverse mode).
Hình 3.3: Biểu đồ đơn giản minh họa luồng dữ liệu từ x đến y thông qua các biến trung gian a và b.
Hình 3.3 cho thấy một đồ thị đơn giản minh họa luồng dữ liệu từ đầu vào x đến đầu ra y thông qua một số biến trung gian a và b Áp dụng quy tắc dây xích đạo hàm dy dx được tính là dy dx = dy db db da da dx (3.9)
Ta thấy, chế độ chuyển tiếp và đảo ngược khác nhau theo thứ tự nhân.
Do tính kết hợp của phép nhân ma trận, chúng ta có thể chọn một trong hai phương trình dưới đây dy dx dy db db da da dx, (3.10) dy dx = dy db db da da dx
Phương trình 3.10 là chế độ đảo ngược (reverse mode) vì gradient là lan truyền ngược thông qua đồ thị, nghĩa là đảo ngược luồng dữ liệu. Phương trình 3.11 là chế độ chuyển tiếp (forward mode), trong đó gra- dient chảy với dữ liệu từ trái sang phải thông qua đồ thị.
Tiếp theo, chúng tôi phân tích chế độ đảo ngược của tính vi phân tự động, được gọi là lan truyền ngược Trong bối cảnh của mạng nơ-ron, kích thước đầu vào thường cao hơn nhiều so với kích thước của nhãn, chế độ đảo ngược rẻ hơn đáng kể so với chế độ chuyển tiếp.
Ví dụ 3.2.1 Xét hàm số f(x) =p x 2 +e x 2 + cos(x 2 +e x 2 ) (3.12)
Chúng tôi sẽ tính đạo hàm của hàm số f(x) bằng hai cách.
Cách 1: Sử dụng quy tắc dây xích. Áp dụng quy tắc dây xích, gradient tính được là df dx = 2x+ 2xe x 2
Viết gradient theo cách rõ ràng như trên thường không thực tế vì nó dẫn đến một biểu thức rất dài Trong thực tế, việc triển khai gradient có thể đắt hơn đáng kể so với việc tính toán hàm số, điều này áp đặt chi phí không cần thiết Để huấn luyện các mô hình mạng nơ-ron sâu, chúng ta sử dụng thuật toán lan truyền ngược để tính toán gradient của hàm lỗi ứng với các tham số của mô hình.
Cách 2: Sử dụng các biến trung gian. Đặt a = x 2 , (3.14) b= e a , (3.15) c = a+b, (3.16) d= √ c, (3.17) e= cos(c), (3.18) f = d+e (3.19)
Hình 3.4: Đồ thị tính toán với đầu vào x, giá trị hàm số f và các biến trung gian a, b, c, d, e
Quá trình thực hiện khi sử dụng các biến trung gian sẽ ít thao tác hơn so với cách thực hiện trực tiếp hàm số f(x) như trong (3.13) Đồ thị tính toán tương ứng trong hình 3.4 cho thấy luồng dữ liệu và phép tính cần thiết để có được giá trị của hàm số f.
Tập hợp các phương trình bao gồm các biến trung gian được xem là một đồ thị tính toán, được sử dụng rộng rãi trong việc triển khai các thư viện phần mềm nơ-ron Chúng ta có thể tính trực tiếp đạo hàm của các biến trung gian đối với đầu vào tương ứng của chúng
Dựa vào đồ thị tính toán Hình 3.4, chúng ta có thể tính ∂f
∂x bằng cách tính ngược từ đầu ra và sử dụng quy tắc dây xích
∂a ã2x (3.29) Ở cách tính này, chúng ta thấy rằng gradient vừa tính được cũng khá phức tạp như cách tính đầu tiên Vì vậy, chúng ta sẽ sử dụng tính vi phân tự động để giải quyết những bài toán có hàm số phức tạp như 3.12.
Cho x 1 , , x d là các biến đầu vào của hàm số, x d+1 , , x D−1 là các biến trung gian và x D là biến đầu ra Đồ thị tính toán được biểu thị
For i = d+ 1, , D : x i = g i (x P a(x i ) ), (3.30) trong đú, g i (ã) là cỏc hàm số cơ bản và x P a(x i ) là cỏc nỳt xuất phỏt của biến x i trong đồ thị.
Sử dụng quy tắc dây xích để tính đạo hàm của hàm số:
∂x i , (3.32) trong đó, P a(x j ) là tập hợp các nút xuất phát của x j trong đồ thị tính toán.
Phương trình (3.30) là sự lan truyền xuôi của hàm số, trong khi (3.32) là sự lan truyền ngược của gradient thông qua đồ thị tính toán Như vậy, lan truyền xuôi lần lượt tính và lưu trữ các biến trung gian từ đầu vào đến đầu ra trong đồ thị tính toán được định nghĩa bởi mạng nơ-ron, còn lan truyền ngược lần lượt tính và lưu trữ các gradient của biến trung gian và tham số mạng nơ-ron theo chiều ngược lại Khi huấn luyện các mạng nơ-ron, lan truyền xuôi và lan truyền ngược phụ thuộc lẫn nhau.
Mọi hàm số được biểu diễn dưới dạng đồ thị tính toán đều có thể sử dụng tính vi phân tự động, trong đó các hàm số cơ bản là khả vi Trên thực tế, hàm số có thể không phải là hàm số toán học mà là một chương trình máy tính Tuy nhiên, không phải tất cả chương trình máy tính đều có thể tính vi phân tự động được, chẳng hạn như trong trường hợp chúng ta không tìm được vi phân của các hàm số cơ bản Các cấu trúc lập trình như vòng lặp For và câu lệnh if cũng được dùng nhiều hơn.
Trong Đề án "Đạo hàm vectơ và một số ứng dụng trong Máy học" chúng tôi đã đạt được một số kết quả sau đây:
(1) Trình bày được một số kiến thức về vi phân, đạo hàm và gradient, ; đặc biệt là gradient của hàm vectơ và hàm giá trị ma trận.
(2) Tìm hiểu, trình bày được một số ứng dụng của đạo hàm vectơ trong Máy học, trong đó có ứng dụng của đạo hàm vectơ trong Học sâu và ứng dụng trong việc tính vi phân tự động.