W rachunku 101 dowiedzieliśmy się, jak zoptymalizować funkcję za pomocą „metody analitycznej”: wystarczy pobrać pochodną funkcji kosztu i ustawić pochodną na 0, a następnie rozwiązać równanie. To naprawdę problem z zabawkami i prawie nigdy nie zdarzy się w prawdziwym świecie.
W świecie rzeczywistym wiele funkcji kosztów nie ma pochodnych (funkcja kosztu może być dyskretna i w ogóle nie może zawierać pochodnych). Ponadto, nawet jeśli potrafisz obliczyć pochodną, nie możesz po prostu rozwiązać równania analitycznie (na przykład zastanów się, jak rozwiązać analitycznie? Mogę powiedzieć, że odpowiedź liczbowa to , ale nie znam rozwiązania analitycznego). Musimy zastosować pewne metody numeryczne (sprawdź dlaczego tutaj na przypadkach wielomianowych Twierdzenie Abla Ruffina ).x7+x3−52+ex+log(x+x2)+1/x=0x=1.4786
Metody iteracyjne są świetne w użyciu i bardzo intuicyjne w zrozumieniu. Załóżmy, że chcesz zoptymalizować jedną funkcję, zamiast rozwiązać równanie i uzyskać odpowiedź, próbujesz poprawić swoją odpowiedź o liczbę iteracji / kroków po wystarczającej iteracji, otrzymasz odpowiedź zbliżoną do „prawdziwej odpowiedzi”. Powiedzmy, że jeśli użyjesz rachunku różniczkowego do zminimalizowania , otrzymasz bezpośrednio , ale stosując metody numeryczne, możesz otrzymać .f(x)=x2x=0x=1.1234×10−20
Ważne jest, aby zrozumieć, jak działają te metody iteracyjne. Kluczową koncepcją jest wiedza o tym, jak zaktualizować parametry wejściowe, aby uzyskać lepsze rozwiązanie. Załóżmy, że chcesz zminimalizować(zauważ, że ta funkcja kosztu nie jest wszędzie różna, ale różniczkowalność ma w „większości miejsc”, jest to dla nas wystarczająco dobre, ponieważ wiemy, jak aktualizować w „większości miejsc”.), obecnie jesteś w , a koszt wynosi , teraz chcesz zaktualizować aby zmniejszyć funkcję celu. Jak byś to zrobił? Możesz powiedzieć, że chcę zmniejszyć zarówno , ale dlaczego? W rzeczywistości używasz niejawnief(x1,x2)=x21+x22+|x1+x2|(1,1)4.0(x1,x2)x1 x2pojęcie gradientu „zmiana małej ilości , co stanie się na ”. xy. W pochodna wynosi , więc ujemny gradient razy szybkość uczenia się mówi , wynosi , więc zaktualizowaliśmy nasze rozwiązanie z do które mają lepszy koszt.(1,1)(3,3)α=0.001(−0.003,−0.003)1,1(0.997,0.997)