Machine Studying cơ bản

Trong trang này:

  • 1. Giới thiệu
    • Gradient Descent
  • 2. Gradient Descent cho hàm 1 biến
    • Thí dụ đơn giản có Python
      • Điểm khởi tạo khác nhau
      • Studying fee khác nhau
  • 3. Gradient Descent cho hàm nhiều biến
    • Quay lại có bài toán Linear Regression
    • Sau đây là thí dụ trên Python và 1 vài lưu ý lúc lập trình
      • Đánh giá đạo hàm
        • Giải thích bằng hình học
        • Giải thích bằng giải tích
        • Có hàm nhiều biến
      • Đường đồng mức (degree units)
  • 4. 1 thí dụ khác
  • 5. Thảo luận
  • 6. Tài liệu tham khảo

1. Giới thiệu

Quý khách hẳn thấy hình vẽ dưới đây quen thuộc:

Điểm màu sắc xanh lục là điểm native minimal (cực tiểu), và cũng là điểm khiến cho hàm số đạt giá trị bé nhất. Từ đây trở đi, tôi sẽ dùng native minimal để thay đổi cho điểm cực tiểu, international minimal để thay đổi cho điểm mà tại ấy hàm số đạt giá trị bé nhất. World minimal là 1 trường hợp đặc biệt của native minimal.

Giả sử chúng ta đang chú ý tới 1 hàm số 1 biến có đạo hàm mọi nơi. Xin cho tôi được nhắc lại vài điều đã quá quen thuộc:

  1. Điểm native minimal (x^*) của hàm số là điểm có đạo hàm (f’(x^*)) bằng 0. Hơn thế nữa, trong lân cận của nó, đạo hàm của những điểm phía bên trái (x^*) là ko dương, đạo hàm của những điểm phía bên buộc phải (x^*) là ko âm.

  2. Đường tiếp tuyến có đồ thị hàm số ấy tại 1 điểm bất kỳ có hệ số góc chính bằng đạo hàm của hàm số tại điểm ấy.

Trong hình phía trên, những điểm bên trái của điểm native minimal màu sắc xanh lục có đạo hàm âm, những điểm bên buộc phải có đạo hàm dương. Và đối có hàm số này, càng xa về phía trái của điểm native minimal thì đạo hàm càng âm, càng xa về phía buộc phải thì đạo hàm càng dương.

Gradient Descent

Trong Machine Studying nói riêng và Toán Tối Ưu nói chung, chúng ta thường xuyên buộc phải tìm giá trị bé nhất (hoặc đôi lúc là lớn nhất) của 1 hàm số nào ấy. Thí dụ như những hàm mất mát trong 2 bài Linear Regression và Ok-means Clustering. Nhìn chung, việc tìm international minimal của những hàm mất mát trong Machine Studying là siêu phức tạp, thậm chí là bất khả thi. Thay đổi vào ấy, người ta thường cố gắng tìm những điểm native minimal, và trên 1 mức độ nào ấy, coi ấy là nghiệm cần tìm của bài toán.

Xem Thêm  Tìm hiểu FLM Coin là gì? Chia sẻ cụ thể tin tức về đồng FLM

Những điểm native minimal là nghiệm của phương trình đạo hàm bằng 0. Trường hợp bằng 1 phương pháp nào ấy có thể tìm được toàn bộ (hữu hạn) những điểm cực tiểu, ta chỉ cần thay đổi từng điểm native minimal ấy vào hàm số rồi tìm điểm khiến cho hàm có giá trị bé nhất (đoạn này nghe siêu quen thuộc, đúng ko?). Tuy nhiên, trong gần như những trường hợp, việc giải phương trình đạo hàm bằng 0 là bất khả thi. Nguyên nhân có thể tới từ sự phức tạp của dạng của đạo hàm, từ việc những điểm dữ liệu có số chiều lớn, hoặc từ việc có quá nhiều điểm dữ liệu.

Hướng tiếp cận phổ thông} nhất là xuất phát từ 1 điểm mà chúng ta coi là sắp có nghiệm của bài toán, tiếp tục dùng 1 phép toán lặp để tiến dần tới điểm cần tìm, tức tới lúc đạo hàm sắp có 0. Gradient Descent (viết gọn là GD) và những biến thể của nó là 1 trong những phương pháp được dùng nhiều nhất.

Vì tri thức về GD khá rộng nên tôi xin phép được chia thành 2 phần. Phần 1 này giới thiệu ý tưởng phía sau thuật toán GD và 1 vài thí dụ đơn giản giúp người mua khiến quen có thuật toán này và vài khái niệm new. Phần 2 sẽ nói về những phương pháp cải tiến GD và những biến thể của GD trong những bài toán mà số chiều và số điểm dữ liệu lớn. Những bài toán như vậy được gọi là large-scale.

Xem Thêm  Nhận định sapphire là gì

2. Gradient Descent cho hàm 1 biến

Quay trở lại hình vẽ ban đầu và 1 vài xem tôi đã nêu. Giả sử (x_{t}) là điểm ta tìm được sau vòng lặp thứ (t). Ta cần tìm 1 thuật toán để đưa (x_{t}) về càng sắp (x^*) càng phải chăng.

Trong hình trước tiên, chúng ta lại có thêm 2 xem nữa:

  1. Trường hợp đạo hàm của hàm số tại (x_{t}): (f’(x_{t}) > 0) thì (x_{t}) nằm về bên buộc phải so có (x^*) (và ngược lại). Để điểm tiếp theo (x_{t+1}) sắp có (x^*) hơn, chúng ta cần vận động (x_{t}) về phía bên trái, tức về phía âm. Nói những khác, chúng ta cần vận động ngược dấu có đạo hàm: [ x_{t+1} = x_{t} + Delta ] Trong ấy (Delta) là 1 đại lượng ngược dấu có đạo hàm (f’(x_{t})).

  2. (x_{t}) càng xa (x^*) về phía bên buộc phải thì (f’(x_{t})) càng lớn hơn 0 (và ngược lại). Vậy, lượng vận động (Delta), 1 phương pháp trực quan nhất, là tỉ lệ thuận có (-f’(x_{t})).

2 nhận xét phía trên cho chúng ta 1 phương pháp cập nhật đơn giản là: [ x_{t+1} = x_{t} – eta f’(x_{t}) ]

Trong ấy (eta) (đọc là eta) là 1 số dương được gọi là studying fee (tốc độ học). Dấu trừ biểu lộ việc chúng ta buộc phải đi ngược có đạo hàm (Đây cũng chính là nguyên nhân phương pháp này được gọi là Gradient Descent – descent nghĩa là đi ngược). Những xem đơn giản phía trên, dù rằng ko buộc phải đúng cho toàn bộ những bài toán, là ứng dụng cho siêu nhiều phương pháp tối ưu nói chung và thuật toán Machine Studying nói riêng.

Thí dụ đơn giản có Python

Xét hàm số (f(x) = x^2 + 5sin(x)) có đạo hàm (f’(x) = 2x + 5cos(x)) (1 nguyên nhân tôi chọn hàm này vì nó ko dễ tìm nghiệm của đạo hàm bằng 0 như hàm phía trên). Giả sử khởi đầu từ 1 điểm (x_{0}) nào ấy, tại vòng lặp thứ (t), chúng ta sẽ cập nhật như sau: [ x_{t+1} = x_{t} – eta(2x_{t} + 5cos(x_{t})) ]

Xem Thêm  Product Backlog là gì? Đặc điểm cơ bản của 1 Product Backlog

Như thường lệ, tôi khai báo vài thư viện quen thuộc

Tiếp theo, tôi viết những hàm số :

  1. grad để tính đạo hàm
  2. value để tính giá trị của hàm số. Hàm này ko dùng trong thuật toán nhưng thường được dùng để đánh giá việc tính đạo hàm của đúng ko hoặc để xem giá trị của hàm số có giảm theo từng vòng lặp hay ko.
  3. myGD1 là phần chính thực hành thuật toán Gradient Desent nêu phía trên. Đầu vào của hàm số này là studying fee và điểm khởi đầu. Thuật toán ngừng lại lúc đạo hàm có độ lớn đủ bé.

Điểm khởi tạo khác nhau

Sau thời điểm có những hàm cần thiết, tôi thử tìm nghiệm có những điểm khởi tạo khác nhau là (x_{0} = -5) và (x_{0} = 5).

Vậy là có những điểm ban đầu khác nhau, thuật toán của chúng ta tìm được nghiệm sắp giống nhau, dù rằng có tốc độ hội tụ khác nhau. Dưới đây là hình ảnh minh họa thuật toán GD cho bài toán này (xem phải chăng trên Desktop trên chế độ full màn hình).

Machine Learning cơ bản Machine Learning cơ bản

Từ hình minh họa trên ta thấy rằng trên hình bên trái, tương ứng có (x_{0} = -5), nghiệm hội tụ nhanh hơn, vì điểm ban đầu (x_0) sắp có nghiệm ( x^* approx -1) hơn. Hơn nữa, có (x_{0} = 5 ) trên hình bên buộc phải, đường đi của nghiệm có chứa 1 khu vực có đạo hàm khá bé sắp điểm có hoành độ bằng 2. Điều này khiến cho cho thuật toán la cà trên đây khá nhiều ngày. Lúc vượt qua được điểm này thì mọi việc diễn ra siêu phải chăng đẹp.

Studying fee khác nhau

Tốc độ hội tụ của GD ko những phụ thuộc vào điểm khởi tạo ban đầu mà còn phụ thuộc vào studying fee. Dưới đây là 1 thí dụ có cùng điểm khởi tạo (x_{0} = -5) nhưng studying fee khác nhau:

Machine Learning cơ bản Machine Learning cơ bản