Khám phá phương pháp Gradient Descent trong Machine Learning | Tác giả: Idil Ismiguzel

Idil Ismiguzel

#SựKiệnNgàyHômNay học machine learning và gradient descent

Gradient Descent là một trong những thuật toán tối ưu hóa phổ biến trong machine learning, được sử dụng trong các mô hình như hồi quy tuyến tính và mạng thần kinh. Trong bài viết của Idil Ismiguzel trên Bapt, chúng ta sẽ tìm hiểu sâu về giảm độ dốc và cách thực hiện các phép tính bằng Python.

Đầu tiên, chúng ta cần tìm hiểu về hàm mất mát, là phép đo lỗi trong các mô hình dự đoán. Tiếp đó, chúng ta sẽ đi sâu vào lý thuyết toán học của giảm dần độ dốc và khám phá các triển khai khác nhau như Giảm dần độ dốc hàng loạt, Giảm dần độ dốc ngẫu nhiên và Giảm dần độ dốc hàng loạt nhỏ. Chúng ta cũng sẽ đánh giá hiệu quả của từng triển khai trên các trường hợp thử nghiệm khác nhau.

Quá trình giảm độ dốc có thể được chia thành các bước chính: Chọn một điểm bắt đầu cho các tham số mô hình, xác định độ dốc của hàm chi phí đối với các tham số và liên tục điều chỉnh các giá trị tham số thông qua các bước lặp để giảm thiểu hàm chi phí.

Tuy nhiên, khi sử dụng độ dốc giảm dần, chúng ta cần nhận thức được thách thức tiềm ẩn khi dừng lại ở mức tối thiểu cục bộ hoặc trên một cao nguyên. Do đó, việc chọn số lần lặp lại và tốc độ học thích hợp là rất quan trọng.

Ngoài ra, tỷ lệ học tập cũng là siêu tham số quan trọng để xác định kích thước của bước học. Với learning_rate quá cao, có thể dẫn đến các giá trị tổn thất lớn hơn điểm bắt đầu, trong khi learning_rate quá thấp có thể kéo dài quá trình tính toán và khó để đạt được hội tụ.

Với đọc bài viết này của Idil Ismiguzel, bạn có thể tìm hiểu thêm về Gradient Descent và cách sử dụng nó trong machine learning bằng Python.

Nguồn: https://techtoday.co/understanding-gradient-descent-for-machine-learning-by-idil-ismiguzel-may-2023/

bản tin

Sed ut perspiciatis unde.

Đặt mua

Tìm hiểu sâu về các thuật toán Giảm độ dốc hàng loạt, ngẫu nhiên và hàng loạt nhỏ bằng Python

Idil Ismiguzel

Hướng tới khoa học dữ liệu

Ảnh của Lucas Clara trên Bapt

Độ dốc gốc là một thuật toán tối ưu hóa phổ biến được sử dụng trong các mô hình học máy và học sâu như hồi quy tuyến tính, hồi quy logistic và mạng lưới thần kinh. Nó sử dụng các đạo hàm bậc nhất lặp đi lặp lại để giảm thiểu hàm chi phí bằng cách cập nhật các hệ số mô hình (đối với hồi quy) và trọng số (đối với mạng thần kinh).

Trong bài viết này, chúng ta sẽ đi sâu vào lý thuyết toán học về giảm dần độ dốc và khám phá cách thực hiện các phép tính bằng Python. Chúng tôi sẽ kiểm tra các triển khai khác nhau bao gồm Giảm dần độ dốc hàng loạt, Giảm dần độ dốc ngẫu nhiên và Giảm dần độ dốc hàng loạt nhỏ, đồng thời đánh giá hiệu quả của chúng trên một loạt các trường hợp thử nghiệm.

Trong khi theo dõi bài viết, bạn có thể xem Jupyter Notebook trên GitHub của tôi để biết mã và phân tích đầy đủ.

Trước khi tìm hiểu sâu về giảm dần độ dốc, trước tiên chúng ta hãy tìm hiểu về hàm mất mát.

Sự mất mát hoặc trị giá được sử dụng thay thế cho nhau để mô tả lỗi trong một dự đoán. Giá trị mất mát cho biết dự đoán khác với giá trị thực tế như thế nào và hàm mất mát tổng hợp tất cả các giá trị mất mát từ nhiều điểm dữ liệu thành một số.

Bạn có thể thấy trong hình bên dưới, mô hình bên trái có độ suy hao cao trong khi mô hình bên phải có độ suy hao thấp và phù hợp với dữ liệu hơn.

Tổn thất cao so với tổn thất thấp (đường màu xanh lam) từ đường hồi quy tương ứng màu vàng.

Hàm mất mát (J) được sử dụng làm phép đo hiệu suất cho các thuật toán dự đoán và mục tiêu chính của mô hình dự đoán là giảm thiểu hàm mất mát của nó, được xác định bởi các giá trị của tham số mô hình (ví dụ: θ0 và θ1).

Ví dụ: các mô hình hồi quy tuyến tính thường sử dụng tổn thất bình phương để tính toán giá trị tổn thất và sai số bình phương trung bình là hàm tổn thất tính trung bình tất cả các tổn thất bình phương.

Giá trị tổn thất bình phương (L2 Loss) và Lỗi bình phương trung bình (MSE)

Mô hình hồi quy tuyến tính hoạt động ngầm bằng cách trải qua một số lần lặp lại để tối ưu hóa các hệ số của nó và đạt được sai số bình phương trung bình thấp nhất có thể.

Gốc Gradient là gì?

Thuật toán giảm dần độ dốc thường được mô tả bằng phép loại suy núi:

⛰ Hãy tưởng tượng bạn đang đứng trên đỉnh núi, tầm nhìn bị hạn chế và bạn muốn chạm tới mặt đất. Trong khi đi xuống, bạn sẽ gặp những con dốc và vượt qua chúng bằng những bước lớn hơn hoặc nhỏ hơn. Khi bạn đã đến một con dốc gần như bằng phẳng, bạn sẽ biết rằng mình đã đến điểm thấp nhất. ⛰

Về mặt kỹ thuật, dốc đề cập đến những con dốc này. Khi độ dốc bằng 0, điều đó có thể cho biết rằng bạn đã đạt đến giá trị tối thiểu hoặc tối đa của hàm.

Giống như trong tương tự núi, GD giảm thiểu giá trị tổn thất bắt đầu bằng cách thực hiện các bước lặp lại theo hướng ngược lại của độ dốc để giảm hàm tổn thất.

Tại bất kỳ điểm nào trên một đường cong, độ dốc của độ dốc có thể được xác định bằng một đường tiếp tuyến — một đường thẳng chạm vào điểm (các đường màu đỏ trong hình trên). Tương tự như đường tiếp tuyến, độ dốc của một điểm trên hàm mất mát được tính theo các tham số và một bước nhỏ được thực hiện theo hướng ngược lại để giảm tổn thất.

Tóm lại, quá trình giảm độ dốc có thể được chia thành các bước sau:

  1. Chọn một điểm bắt đầu cho các tham số mô hình.
  2. Xác định độ dốc của hàm chi phí đối với các tham số và liên tục điều chỉnh các giá trị tham số thông qua các bước lặp để giảm thiểu hàm chi phí.
  3. Lặp lại bước 2 cho đến khi hàm chi phí không giảm nữa hoặc đạt đến số lần lặp tối đa.

Chúng ta có thể kiểm tra phép tính độ dốc cho hàm chi phí (tổn thất) đã xác định trước đó. Mặc dù chúng tôi đang sử dụng hồi quy tuyến tính với hệ số chặn và hệ số, lý do này có thể được mở rộng cho các mô hình hồi quy kết hợp một số biến.

Hàm hồi quy tuyến tính với 2 tham số, hàm chi phí và hàm mục tiêu

Đạo hàm từng phần tính toán tham số mô hình wrt

💡 Đôi khi, điểm đạt được có thể chỉ là một địa phương tối thiểu hoặc một cao nguyên. Trong những trường hợp như vậy, mô hình cần tiếp tục lặp lại cho đến khi đạt đến mức tối thiểu chung. Rất tiếc, việc đạt được mức tối thiểu toàn cầu không được đảm bảo nhưng với số lần lặp lại và tỷ lệ học tập phù hợp, chúng tôi có thể tăng cơ hội.

Khi sử dụng độ dốc giảm dần, điều quan trọng là phải nhận thức được thách thức tiềm ẩn khi dừng ở mức tối thiểu cục bộ hoặc trên một cao nguyên. Để tránh điều này, điều cần thiết là chọn số lần lặp lại và tốc độ học thích hợp. Chúng ta sẽ thảo luận thêm về điều này trong các phần sau.

Learning_rate là siêu tham số của độ dốc giảm dần để xác định kích thước của bước học. Nó có thể được điều chỉnh bằng kỹ thuật điều chỉnh siêu tham số.

  • Nếu learning_rate được đặt quá cao, nó có thể dẫn đến một bước nhảy tạo ra giá trị tổn thất lớn hơn điểm bắt đầu. Một cao learning_rate có thể gây ra độ dốc giảm xuống phân ra, khiến nó liên tục nhận được các giá trị tổn thất cao hơn và ngăn không cho nó tìm thấy giá trị tối thiểu.

Trường hợp ví dụ: Tỷ lệ học tập cao khiến GD phân hóa
  • Nếu learning_rate được đặt quá thấp, nó có thể dẫn đến một quá trình tính toán kéo dài trong đó quá trình giảm độ dốc lặp lại qua nhiều vòng tính toán độ dốc để đạt được hội tụ và khám phá giá trị tổn thất tối thiểu.

Trường hợp ví dụ: Tỷ lệ học tập thấp khiến GD mất quá nhiều thời gian để hội tụ

Giá trị của bước học tập được xác định bởi độ dốc của đường cong, có nghĩa là khi chúng ta tiến gần đến điểm tối thiểu, các bước học tập sẽ trở nên nhỏ hơn.

Khi sử dụng tỷ lệ học tập thấp, tiến độ đạt được sẽ ổn định, trong khi tỷ lệ học tập cao có thể dẫn đến tiến bộ theo cấp số nhân hoặc bị kẹt ở điểm thấp.

Hình ảnh được điều chỉnh từ https://cs231n.github.io/neural-networks-3/


Leave a Reply

Your email address will not be published. Required fields are marked *