Xin chào và chào mừng bạn trở lại khóa học về Học sâu.
Hôm nay chúng ta đang nói về giảm độ dốc ngẫu nhiên.
Trước đây, chúng tôi đã tìm hiểu về gradient descent và chúng tôi phát hiện ra rằng đó là một phương pháp rất hiệu quả để giải quyết vấn
đề tối ưu hóa của chúng tôi trong đó chúng tôi đang cố gắng giảm thiểu hàm chi phí.
Về cơ bản, chúng ta mất từ mười đến sức mạnh của 57 năm để giải quyết một vấn đề trong vòng vài phút hoặc vài giờ hoặc trong vòng một
ngày hoặc lâu hơn.
Và nó thực sự giúp đẩy nhanh tốc độ vì chúng ta có thể thấy đường nào đang xuống dốc và chúng ta có thể chỉ cần đi
theo hướng đó và thực hiện các bước và đạt mức tối thiểu nhanh hơn.
Nhưng vấn đề với thanh có độ dốc giảm dần là phương pháp này yêu cầu hàm chi phí
phải lồi.
Và như bạn có thể thấy ở đây, chúng tôi đã chọn cụ thể một hàm chi phí lồi.
Về cơ bản, hàm lồi có nghĩa là hàm trông tương tự như những gì chúng ta đang thấy bây giờ, nó chỉ lồi
theo một hướng và về bản chất, nó có một cực tiểu chung và đó là hàm mà chúng ta sẽ
tìm.
Nhưng nếu hàm của chúng ta không lồi thì sao?
Điều gì xảy ra nếu hàm chi phí của chúng ta không lồi?
Điều gì sẽ xảy ra nếu nó trông giống như thế này?
Trước hết, làm thế nào mà điều đó có thể xảy ra?
Chà, điều đó có thể xảy ra bởi vì nếu chúng ta, trước hết, chọn một hàm chi phí, không phải là sự khác biệt bình phương
giữa mũ và y, hoặc nếu chúng ta chọn hàm chi phí, tương tự như vậy, nhưng sau đó là trong một đa chiều
không gian, nó thực sự có thể biến thành một cái gì đó không lồi.
Và vì vậy điều gì sẽ xảy ra trong trường hợp này nếu chúng ta chỉ cố gắng áp dụng phương pháp giảm độ dốc bình thường của chúng ta?
Một cái gì đó như thế này có thể xảy ra.
Chúng tôi có thể tìm thấy mức tối thiểu cục bộ của hàm chi phí hơn là giá trị toàn cầu.
Vì vậy, cái này là cái tốt nhất và chúng tôi đã tìm ra cái sai.
Và do đó chúng tôi không có trọng lượng chính xác.
Chúng tôi không có mạng nơ-ron được tối ưu hóa, chúng tôi có mạng nơ-ron phụ.
Và vậy chúng ta phải làm gì trong trường hợp này?
Chà, câu trả lời ở đây là giảm độ dốc ngẫu nhiên.
Và hóa ra đường giảm độ dốc ngẫu nhiên không yêu cầu hàm chi phí phải lồi.
Vì vậy, chúng ta hãy xem xét hai sự khác biệt giữa độ dốc gradient bình thường mà chúng ta đã nói đến
và gradient ngẫu nhiên.
Vì vậy, giảm độ dốc bình thường là khi chúng ta lấy tất cả các hàng của mình, chúng ta cắm chúng vào mạng nơ-ron của mình.
Và một lần nữa ở đây, chúng tôi đã sao chép mạng nơ-ron nhiều lần, nhưng các hàng luôn
được cắm vào cùng một mạng nơ-ron đó.
Vì vậy, chỉ có một mạng nơ-ron.
Điều này chỉ dành cho mục đích hình dung.
Và khi chúng tôi đã cắm chúng vào, chúng tôi đã tính toán hàm chi phí của mình dựa trên
công thức ở bên phải và nhìn vào biểu đồ ở dưới cùng và sau đó chúng tôi điều chỉnh trọng số.
Sau đó, đây được gọi là phương pháp giảm độ dốc hoặc nó cũng có thuật ngữ thích hợp là phương pháp giảm độ dốc hàng loạt.
Vì vậy, chúng tôi lấy toàn bộ lô từ mẫu của chúng tôi, chúng tôi áp dụng nó và sau đó chúng tôi chạy mẫu đó.
Ở đây, phương pháp giảm độ dốc ngẫu nhiên có một chút khác biệt.
Chúng tôi lấy từng hàng một, vì vậy chúng tôi lấy hàng này, chúng tôi chạy mạng nơ-ron và sau đó chúng tôi điều chỉnh
trọng số.
Sau đó, chúng tôi chuyển sang hàng thứ hai, chúng tôi lấy hàng thứ hai, chúng tôi chạy mạng nơ-ron của mình, chúng tôi xem xét hàm chi
phí, và sau đó chúng tôi điều chỉnh trọng số một lần nữa.
Và sau đó chúng ta đi hàng khác, lấy hàng ba.
Chúng tôi điều hành mạng nơ-ron của mình.
Chúng ta sẽ xem xét hàm chi phí.
Chúng tôi chỉ là trọng lượng.
Vì vậy, về cơ bản chúng tôi đang xem xét chúng tôi đang điều chỉnh trọng lượng sau mỗi hàng đơn lẻ thay vì làm mọi thứ cùng nhau và
sau đó điều chỉnh trọng lượng theo các cách tiếp cận khác nhau.
Và bây giờ chúng ta sẽ chỉ so sánh hai bên cạnh nhau.
Vì vậy, chúng đây.
Đây là cách ghi nhớ chúng một cách trực quan.
Vì vậy, bạn đã có gốc gradient hàng loạt nơi bạn đang điều chỉnh trọng số sau khi bạn chạy chúng, sau khi bạn
đã chạy tất cả các hàng trong mạng nơ-ron của mình.
Và sau đó về cơ bản, bạn điều chỉnh trọng lượng và bạn chạy lại toàn bộ, lặp đi lặp lại, lặp đi lặp lại, lặp
đi lặp lại.
Trong phương pháp giảm độ dốc ngẫu nhiên, bạn chạy từng hàng một và bạn điều chỉnh trọng lượng, bạn điều chỉnh trọng lượng,
bạn điều chỉnh trọng lượng và sau đó bạn làm lại mọi thứ.
Và đó được gọi là thể loại này.
Trong phương pháp này.
Hai điểm khác biệt chính là phương pháp giảm độ dốc ngẫu nhiên giúp bạn tránh được vấn đề khi
bạn tìm thấy các điểm cực trị cục bộ hoặc điểm cực tiểu cục bộ thay vì điểm cực tiểu tổng thể chung.
Và lý do cho điều đó một cách đơn giản là SGD hoặc phương pháp giảm độ dốc ngẫu nhiên có dao động cao hơn
nhiều bởi vì nó có đủ khả năng chi trả.
Nó thực hiện một lần lặp lại hoặc một hàng tại một thời điểm, và do đó, dao động cao
hơn nhiều và có nhiều khả năng tìm thấy mức tối thiểu toàn cầu hơn là chỉ mức tối thiểu cục bộ.
Và điều khác về phương pháp giảm độ dốc ngẫu nhiên so với gradient hàng loạt là nó nhanh
hơn.
Giống như ấn tượng đầu tiên mà bạn có thể có là bởi vì nó đang làm mọi thứ.
Cùng một lúc.
Nó chậm hơn, nhưng trên thực tế, nó nhanh hơn vì nó không phải tải tất cả dữ liệu vào bộ nhớ
và chạy và đợi cho đến khi tất cả những thứ đó cuộn lại với nhau.
Nó chỉ có thể chạy từng cái một.
Vì vậy, nó là một thuật toán nhẹ hơn nhiều.
Nó nhanh hơn nhiều theo nghĩa đó.
Vì vậy, mặc dù nó có nhiều cách hơn và đó là những khía cạnh đó, nó có nhiều lợi thế hơn so với phương pháp giảm độ dốc
hàng loạt.
Ưu điểm chính của hoặc loại tương tự như chuyên nghiệp đối với phương pháp giảm độ dốc theo lô là nó
là một thuật toán xác định hoặc đúng hơn là giảm độ dốc ngẫu nhiên là một thuật toán ngẫu nhiên,
có nghĩa là nó ngẫu nhiên và là phương pháp giảm độ dốc tốt nhất miễn là bạn có trọng số ban đầu giống nhau
cho mạng nơ-ron của bạn, mỗi khi bạn chạy phương pháp giảm độ dốc hàng loạt, bạn sẽ nhận được các
lần lặp lại giống nhau, cùng kết quả cho cách thức cập nhật trọng số của bạn.
Đầu tiên là đối với phương pháp giảm độ dốc ngẫu nhiên.
Bạn sẽ không hiểu vì nó là một phương pháp ngẫu nhiên.
Bạn có thể chọn các hàng của mình một cách ngẫu nhiên và bạn đang cập nhật mạng nơ-ron của mình theo cách ngẫu
nhiên.
Và do đó, bạn sẽ chỉ thực hiện mỗi khi bạn chạy phương pháp giảm độ dốc ngẫu nhiên,
ngay cả khi bạn có cùng trọng số lúc bắt đầu, bạn sẽ có một quy trình khác và các lần lặp khác nhau
để đạt được điều đó.
Vì vậy, đó là tóm tắt những gì giảm độ dốc ngẫu nhiên là gì.
Ngoài ra, có một phương pháp ở giữa hai phương pháp này được gọi là phương pháp giảm độ dốc
hàng loạt nhỏ trong đó bạn kết hợp cả hai và về cơ bản bạn chạy thay vì chạy toàn bộ hoặc chạy một lúc, bạn chạy hàng loạt,
có thể từ 5 đến 10, 100 chúng khoáng chất.
Bạn quyết định đặt, bạn chạy những số hàng đó là thời gian.
Sau đó, bạn cập nhật trọng lượng của mình và bạn cập nhật trọng lượng của mình, v.v.
Và đó được gọi là phương pháp giảm độ dốc theo lô nhỏ.
Nếu bạn muốn tìm hiểu thêm về Gradient Descent, có một bài viết tuyệt vời mà bạn có thể xem
qua.
Nó được gọi là A Neural Network và 13 dòng Python Phần hai Gradient Descent của Andrew Trask và các liên kết
bên dưới.
Đó là trên GitHub 2015 bài viết rất hay được viết bằng những thuật ngữ rất đơn giản.
Nó có một số triết lý thú vị hoặc chỉ là những suy nghĩ thú vị về cách áp dụng độ dốc gradient, những ưu điểm và
nhược điểm là gì và làm thế nào để thực hiện mọi việc trong một số tình huống nhất định?
Vì vậy, anh ấy có một số mẹo, thủ thuật và hack rất hay, rất dễ đọc.
Vì vậy, hãy chắc chắn kiểm tra điều đó.
Và một cái khác, đọc nặng hơn một chút.
Đối với những người trong số các bạn đang theo học toán học, những người muốn tìm hiểu sâu hơn về toán học, tại
sao độ dốc gradient lại đặc biệt như vậy?
Các công thức đang điều khiển độ dốc là gì và nó được tính toán như thế nào, v.v.?
Kiểm tra các bài báo hoặc thực sự cuốn sách.
Đó là một cuốn sách trực tuyến miễn phí có tên Neural Networks and Deep Learning của Michael Nielsen cuốn sách năm 2015.
Về cơ bản, tất cả đều trực tuyến.
Bạn có thể tiếp tục và kiểm tra nó ở đó.
Và một lần nữa, giới thiệu rất nhẹ nhàng về toán học.
Nhưng sau đó đối với toán học.
Nhưng toán học khá nặng khi bạn đọc qua bài báo.
Nhưng đồng thời, nó khiến bạn rơi vào tâm trạng đó.
Tôi nghĩ nó giống như một chương khởi động, nơi đầu tiên bạn khởi động với toán học và sau đó bạn nhảy vào chúng.
Vì vậy, quan tâm đến toán học, sau đó đây là bài viết để đi đến đó và chúng ta đi.
Vì vậy, đó là một cách tóm tắt sự khác biệt giữa gốc lớn và dốc nghiêng ngẫu nhiên và cách hoạt
động.
Và trên lưu ý đó, chúng ta sẽ kết thúc phần hướng dẫn ngày hôm nay.
Tôi rất mong được gặp bạn trên chương trình tiếp theo.
Và cho đến lúc đó, hãy tận hưởng việc học sâu.