Gradient Descent là cụm từ được nghe rất nhiều khi học về MLP, Neuron Network, hay CNN. Quen em nó nhau lâu rồi, nhìn mặt nhau miết, tưởng mình đã hiểu nhau, mà tới nay mới vẽ lẽ vừa không hiểu và vừa hiểu sai em nó quá trời… Nay nhờ hoàn cảnh đưa đẩy mà mình hiểu thêm được em nó chút xíu.
Đang xem: Gradient là gì
Contents
Gradient – em nó là ai ?
Gradient của một hàm $f(x_1, x_2, …, x_n)$, được ký hiệu $
abla f$ là một vector $n$ chiều, mà mỗi thành phần trong vector đó là một đạo hàm riêng phần (partial derivative) theo từng biến của hàm đó:$$box<20px,border:1px solid black> {
abla f=(frac{df}{dx_1}, frac{df}{dx_1}, …, frac{df}{dx_n})}$$
Sau đây là 2 điều mình mới hiểu ra:
1. Vector gradient tại một điểm cho mình biết từ điểm đó, hướng nào làm tăng giá trị $f$ nhiều nhất có thể. Tại sao lại là tăng ?
Chấp nhận điều này lâu rồi, tự nhiên hôm qua mới ngớ ra: Tại sao lại là hướng tăng (Hình 1) mà không phải là hướng giảm ?
Hình 1. Hướng của vector gradient luôn chỉ về phía cao hơn
Wow wow, là vì do ông nào định nghĩa nó như vậy :v. Mỗi thành phần của vector gradient là một đạo hàm riêng phần, giờ thử xét $frac{df}{dx}$.Định nghĩa đạo hàm theo <1>:$$frac{df}{dx} = frac{f(x+epsilon)-f(x)}{epsilon}$$với $epsilon>0$ và đủ nhỏ. Mấu chốt đều nằm ở ông $epsilon$, vì $ epsilon>0$, nên chiều của $frac{df}{dx}$ chỉ còn phụ thuộc vào tử số.
Từ đó ta xét 2 trường hợp $vec{AB}$ và $vec{CD}$ sẽ hiểu:
Vector AB: $$frac{df}{dx}=frac{f(A) – f(B)}{x_A – x_B}$$Vì $f(A)Vector CD: $$frac{df}{dx}=frac{f(D) – f( C)}{x_D – x_C}$$Vì $f( C)
Vì vậy mà $frac{df}{dx}$ luôn chỉ về hướng $f$ tăng.
2. Vector gradient trực giao (perpendicular) với contour line của hàm
Điều này nghe bực mình + rối rắm kinh khủng khi cứ nhớ lớp 12, được học đạo hàm của hàm $y = f(x)$ tại $x_0$ chính là pháp tuyến của $f(x)$ tại $x_0$. Rà lại, đọc về đạo hàm (derivative) thấy đâu đâu cũng vẽ hình tiếp tuyến <1>, cái khỉ gì giờ lại là trực giao ? Với vừa nãy ở trên mới nói là hướng làm tăng $f$, sao giờ lại có chuyện trực giao ở đây ?
Mấu chốt nằm ở khái niệm contour line. Nó có vài tên khác nhau: contour line, level set, level curve. Định nghĩa ở đây cả <2>. Đại khái một contour line là tập hợp những điểm làm cho hàm có cùng một giá trị $y_0$ nào đó. Hàm có miền vô hạn thì cũng có nghĩa là có vô số contour line.
Xem thêm: Cách Nhập Sử Dụng Các Giftcode Thời Loạn Mobile, Chơi Game Thời Loạn
Vậy là Hình 2.a và 2.b đang biểu diễn hai đường khác nhau: đường màu đen trong hình 2.a là đồ thị biểu diễn sự phụ thuộc $y$ theo $x$ qua hàm $y=f(x)$, đường màu xanh trong hình 2.b là một đường contour line biểu diễn của hàm $g(x)=0$. Mình bị nhầm lẫn bởi vì lâu nay học các hàm $y=f(x)$, đa số đều là hàm đơn biến, biểu diễn đồ thị của nó bằng tọa độ 2 chiều. Nhưng với các hàm đa biến (từ 2 biến trở lên), người ta khó biểu diễn đồ thị của hàm trên tọa độ 2 chiều nữa, nên người ta nghĩ ra cái contour line dễ biểu diễn hơn.
Khi học về Linear Regression, $y=WX + b$, người ta thường lấy ví dụ $W$ và $X$ có 2 chiều, cụ thể $y=w_1x_1 + w_2x_2 + w_0$, điều này khiến mình liên tưởng đến hàm $y=ax + b$ hồi xưa có học, chỉ là chuyển vế qua thì $x$, $y$ tương ứng $w_1$, $w_2$. Điều này sai hoàn toàn, SAI ÁC LIỆT LUÔN. Chính từ đây dẫn tới những nhầm lẫn khi đọc đến vector gradient.
Nói chính xác thì $y=ax+b$ chỉ là một phần tử trong tập contour line của $y=w_1x_1 + w_2x_2 + w_0$. Và nhiệm vụ của Linear Regression là đi tìm một contour line trong tập các contour line ở trên.
Về chuyện ngày lớp 12 được dạy rằng đạo hàm của hàm $y=f(x)$ là một vector có phương tiếp tuyến với đồ thị $f(x)$. Điều này được giải thích như sau: Hàm $y=f(x)$ là hàm một biến. Nếu vẽ theo kiểu contour line, mỗi contour line sẽ là 1 điểm (hoặc một vài điểm). Vì vậy mà đương nhiên nó thoải điều kiện vector gradient trực giao với đường contour line. Không có mâu thuẫn gì ở đây cả.
Xem thêm: Là Gì? Nghĩa Của Từ Subtotal Là Gì ? Tìm Hiểu Nghĩa Và Tác Dụng Của “Subtotal”
P.s: Viết ra mới thấy, tuy đã hiểu, đã nắm được cái bản chất, mà muốn thể hiện nó ra vẫn khó thiệt. Bài này quá lủng cũng.