Tự học ML | Stochastic Gradient Descent (SGD) » https://blogchiase247.net

Create by : https://globalizethis.org

1. Gradient Descent là gì ?

Trước khi lý giải Stochastic Gradient Descent ( SGD ), thứ nhất tất cả chúng ta hãy diễn đạt Gradient Descent là gì. Gradient Descent là một kỹ thuật tối ưu hóa thông dụng trong ML và Học sâu và nó hoàn toàn có thể được sử dụng với hầu hết, nếu không phải tổng thể, những thuật toán học tập. Gradient là độ dốc của một hàm. Nó thống kê giám sát mức độ biến hóa của một biến để phân phối với những biến hóa của một biến khác. Về mặt toán học, Gradient Descent là một hàm lồi có đầu ra là đạo hàm riêng của một tập những tham số nguồn vào của nó. Gradient càng lớn thì độ dốc càng lớn .

Bắt đầu từ một giá trị ban đầu, Gradient Descent được chạy lặp đi lặp lại để tìm các giá trị tối ưu của các tham số để tìm giá trị nhỏ nhất có thể có của chi phí hàm đã cho.

Bạn đang đọc: Tự học ML | Stochastic Gradient Descent (SGD) » https://globalizethis.org/

2. Các loại Gradient Descent :

Thông thường, có ba loại Gradient Descent :

  • Batch Gradient Descent
  • Stochastic Gradient Descent
  • Đổ dốc màu theo lô nhỏ

Trong bài viết này, tất cả chúng ta sẽ bàn luận về Stochastic Gradient Descent hoặc SGD .

3. Stochastic Gradient Descent ( SGD ) :

Từ ‘ stochastic ‘ có nghĩa là một mạng lưới hệ thống hoặc một quy trình được link với một Phần Trăm ngẫu nhiên. Do đó, trong Stochastic Gradient Descent, một vài mẫu được chọn ngẫu nhiên thay vì hàng loạt tập tài liệu cho mỗi lần lặp. Trong Gradient Descent, có một thuật ngữ gọi là “ batch ”, biểu lộ tổng số mẫu từ tập dữ liệu được sử dụng để giám sát gradient cho mỗi lần lặp. Trong tối ưu hóa Gradient Descent nổi bật, như Batch Gradient Descent, lô được coi là hàng loạt tập dữ liệu. Mặc dù, việc sử dụng hàng loạt tập dữ liệu thực sự hữu dụng để đi đến cực tiểu theo cách ít ồn ào hơn và ít ngẫu nhiên hơn, nhưng yếu tố phát sinh khi tập tài liệu của tất cả chúng ta lớn hơn .
Giả sử, bạn có một triệu mẫu trong tập tài liệu của mình, thế cho nên nếu bạn sử dụng kỹ thuật tối ưu hóa Gradient Descent nổi bật, bạn sẽ phải sử dụng toàn bộ một triệu mẫu để triển khai xong một lần lặp trong khi triển khai Gradient Descent, và nó phải được triển khai cho mỗi lần lặp cho đến khi đạt đến cực tiểu. Do đó, nó trở nên rất tốn kém về mặt thống kê giám sát để thực thi .
Vấn đề này được xử lý bằng Stochastic Gradient Descent. Trong SGD, nó chỉ sử dụng một mẫu duy nhất, tức là kích cỡ lô của một mẫu, để triển khai mỗi lần lặp. Mẫu được trộn lẫn ngẫu nhiên và được chọn để thực thi lặp lại .

Xem thêm :  Yêu Em Thật Lòng Anh Đi Trong Anh Em Là Gì, Lời Bài Hát Yêu Em Thật Đấy

Thuật toán SGD:


Vì vậy, trong SGD, tất cả chúng ta tìm ra gradient của ngân sách hàm của một ví dụ duy nhất tại mỗi lần lặp thay vì tổng gradient của hàm ngân sách của toàn bộ những ví dụ .
Trong SGD, vì chỉ có một mẫu từ tập dữ liệu được chọn ngẫu nhiên cho mỗi lần lặp, nên đường dẫn mà thuật toán triển khai để đến cực tiểu thường ồn ào hơn so với thuật toán Gradient Descent nổi bật của bạn. Nhưng điều đó không quan trọng lắm vì đường đi của thuật toán không quan trọng, miễn là tất cả chúng ta đạt đến cực tiểu và với thời hạn giảng dạy ngắn hơn đáng kể .

Đường dẫn được thực hiện bởi Batch Gradient Descent –

Xem thêm: Downtown Là Gì? Uptown Là Gì ? Uptown Là Gì? Phân Biệt Downtown Và Uptown


Đường dẫn được thực thi bởi Stochastic Gradient Descent –

Một điều cần chú ý quan tâm là, vì SGD nói chung ồn hơn so với Gradient Descent nổi bật, nên nó thường mất 1 số ít lần lặp lại cao hơn để đạt đến cực tiểu, vì tính ngẫu nhiên trong tài liệu của nó. Mặc dù nó nhu yếu số lần lặp lại cao hơn để đạt đến cực tiểu so với Gradient Descent truyền thống cuội nguồn, nhưng về mặt giám sát nó vẫn ít tốn kém hơn nhiều so với Gradient Descent truyền thống lịch sử. Do đó, trong hầu hết những trường hợp, SGD được ưu tiên hơn Batch Gradient Descent để tối ưu hóa thuật toán học tập .

Xem thêm :  PTI container lạnh là gì? | Hướng dẫn cách PTI container lạnh

Mã giả cho SGD bằng Python:

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: [email protected]
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
def SGD(f, theta0, alpha, num_iters): 
    """  
       Arguments: 
       f -- the function to optimize, it takes a single argument 
            and yield two outputs, a cost and the gradient 
            with respect to the arguments 
       theta0 -- the initial point to start SGD from 
       num_iters -- total iterations to run SGD for 
       Return: 
       theta -- the parameter value after SGD finishes 
    """
    start_iter = 0
    theta = theta0 
    for iter in xrange(start_iter + 1, num_iters + 1): 
        _, grad = f(theta) 
   
        # there is NO dot product ! return theta 
        theta = theta - (alpha * grad)  

Chu kỳ lấy những giá trị và kiểm soát và điều chỉnh chúng dựa trên những tham số khác nhau để giảm hàm mất mát được gọi là Viral ngược .

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và có ích, bạn hoàn toàn có thể tham gia những kênh sau của cafedev để nhận được nhiều hơn nữa :
Chào thân ái và quyết thắng !

Xem thêm: Valentino (công ty) – Wikipedia tiếng Việt

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!


Khi copy nhớ ghi nguồn : https://globalizethis.org nhé . Chúc bạn may mắn

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.