2013-06-25 26 views
5

Tôi đã học được độ dốc gốc thông qua các tài nguyên trực tuyến (cụ thể là học máy tại coursera). Tuy nhiên, thông tin được cung cấp chỉ cho biết để lặp lại gradient gốc cho đến khi nó hội tụ.Hội tụ gốc dốc Làm thế nào để quyết định hội tụ?

Định nghĩa hội tụ của chúng là sử dụng biểu đồ hàm chi phí liên quan đến số lần lặp lại và xem khi biểu đồ giãn ra. Vì vậy, tôi cho rằng tôi sẽ làm như sau:

if (change_in_costfunction > precisionvalue) { 
      repeat gradient_descent 
} 

Ngoài ra, tôi đã tự hỏi nếu một cách khác để xác định tụ là để xem cách tiếp cận hệ số đó là giá trị đúng:

if (change_in_coefficient_j > precisionvalue) { 
      repeat gradient_descent_for_j 
} 
...repeat for all coefficients 

Vì vậy, được hội tụ dựa trên chức năng chi phí hoặc các hệ số? Và làm cách nào để chúng tôi xác định giá trị chính xác? Nó có nên là một% của hệ số hoặc tổng hàm chi phí không?

+2

tụ luôn là "không thay đổi" (hoặc một sự thay đổi quá nhỏ) trong các biến tối ưu hóa của bạn, nên phản ánh trực tiếp chi phí của bạn trong hầu hết các trường hợp. –

Trả lời

5

Bạn có thể tưởng tượng cách Gradient Descent (GD) hoạt động nghĩ rằng bạn ném đá cẩm thạch vào trong một cái bát và bạn bắt đầu chụp ảnh. Đá cẩm thạch sẽ dao động cho đến khi ma sát sẽ dừng nó ở phía dưới. Bây giờ hình ảnh bạn đang ở trong môi trường ma sát quá nhỏ nên đá cẩm thạch mất một thời gian dài để dừng hoàn toàn, vì vậy chúng ta có thể giả định rằng khi các dao động đủ nhỏ, đá cẩm thạch đã chạm đáy (mặc dù nó có thể tiếp tục dao động). Trong hình dưới đây, bạn có thể thấy tám bước đầu tiên (hình ảnh của đá cẩm thạch) của GD.

enter image description here

Nếu chúng tôi tiếp tục chụp ảnh bằng đá cẩm thạch không làm cho phong trào đáng, bạn nên phóng to hình ảnh:

enter image description here

Chúng ta có thể tiếp tục chụp ảnh và các phong trào sẽ có nhiều irrelevants. Vì vậy, đạt đến một điểm trong đó GD thực hiện những thay đổi rất nhỏ trong chức năng mục tiêu của bạn được gọi là hội tụ, điều đó không có nghĩa là nó đã đạt đến kết quả tối ưu (nhưng nó thực sự khá gần, nếu không có nó).

Giá trị chính xác có thể được chọn là ngưỡng mà bạn lặp đi lặp lại liên tục của GD là gần như giống nhau:

grad(i) = 0.0001 
grad(i+1) = 0.000099989 <-- grad has changed less than 0.01% => STOP 
+0

Tôi chấp nhận câu trả lời của bạn, nhưng bạn không nói rõ ràng liệu GD có phải là hàm chi phí hay hệ số. Lời bình luận của Thomas Jungblut nói rằng đó là sự hội tụ của các hệ số sẽ phản ánh trong chức năng chi phí, vì vậy nó nghe có vẻ như 'nó không quan trọng' ... Cảm ơn câu trả lời chi tiết! –

+0

GD là một thuật toán chung để tìm kiếm minimun trong một hàm lồi. Hàm đó có thể là hàm chi phí của một vấn đề ML hoặc bất kỳ hàm nào khác. – jabaldonedo

+0

Tôi cũng có một số nhầm lẫn về điều này, và vẫn không thể tìm thấy câu trả lời rõ ràng như bước này (kiểm tra hội tụ) là bị mất trong tất cả các bài viết tôi tìm thấy cho đến nay. Chúng tôi có thể tính toán chức năng chi phí trong từng bước để xem liệu nó có thay đổi rất nhiều từ bước này sang bước khác hay không. Nhưng tính toán chi phí chức năng có thể tốn kém quá. Có thuật toán stochastic gradient descent nơi chúng ta có thể sử dụng một phần dữ liệu để tính toán gốc, nhưng chúng ta vẫn cần tất cả dữ liệu để tính toán hàm chi phí? Vẫn chưa rõ với tôi. – Vadim

Các vấn đề liên quan