Chcę lepiej zrozumieć sieci neuronowe i ich zalety w porównaniu z innymi algorytmami uczenia maszynowego. Rozumiem poniżej i moje pytanie brzmi:
Czy możesz poprawić i uzupełnić moje zrozumienie, proszę? :)
Moje zrozumienie:
(1) Sztuczne sieci neuronowe = funkcja, która przewiduje wartości wyjściowe na podstawie wartości wejściowych. Zgodnie z uniwersalnym twierdzeniem aproksymacyjnym ( https://en.wikipedia.org/wiki/Universal_approximation_theorem ), zwykle możesz mieć dowolną możliwą (choć powinna się dobrze zachowywać) funkcję predykcji, biorąc pod uwagę wystarczającą liczbę neuronów.
(2) To samo dotyczy regresji liniowej, przyjmując wielomiany wartości wejściowych jako dodatkowe wartości wejściowe, ponieważ można przybliżać (porównywać ekspansję Taylora) każdą funkcję dobrze za pomocą wielomianów.
(3) Oznacza to, że (w pewnym sensie, w odniesieniu do najlepszych możliwych wyników), te 2 metody są równoważne.
(4) Stąd ich główna różnica polega na tym, która metoda umożliwia lepszą implementację obliczeniową. Innymi słowy, z jaką metodą można znaleźć, na podstawie przykładów treningowych, szybsze dobre wartości parametrów, które ostatecznie definiują funkcję predykcji.
Z zadowoleniem przyjmuję wszelkie przemyślenia, komentarze i rekomendacje do innych linków lub książek w celu poprawy mojego myślenia.
źródło
Odpowiedzi:
Oto oferta:
Technicznie napisałeś prawdziwe zdania (oba modele mogą przybliżyć dowolną funkcję „niezbyt szaloną” przy wystarczających parametrach), ale zdania te nigdzie cię nie prowadzą!
Dlaczego? Cóż, spójrz bliżej na uniwersalną teorię aproksymacji lub inny formalny dowód, że sieć neuronowa może obliczyć dowolny f (x), jeśli istnieją wystarczające neurony.
Wszystkie tego rodzaju dowody, które widziałem, wykorzystują tylko jedną ukrytą warstwę.
Rzuć okiem tutaj http://neuralnetworksanddeeplearning.com/chap5.html dla pewnej intuicji. Istnieją prace pokazujące, że w pewnym sensie liczba potrzebnych neuronów rośnie wykładniczo, jeśli używasz tylko jednej warstwy.
Tak więc, choć teoretycznie masz rację, w praktyce nie masz nieskończonej ilości pamięci, więc tak naprawdę nie chcesz trenować sieci 2 ^ 1000 neuronów, prawda? Nawet jeśli miałeś nieskończoną ilość pamięci, ta sieć na pewno się przepełni.
Moim zdaniem najważniejszym punktem ML jest punkt praktyczny! Rozwińmy trochę na ten temat. Prawdziwym dużym problemem tutaj nie jest tylko to, jak wielomiany bardzo szybko zwiększają / zmniejszają się poza zestawem treningowym. Ani trochę. Jako szybki przykład piksel dowolnego obrazu mieści się w bardzo określonym zakresie ([0,255] dla każdego koloru RGB), dzięki czemu możesz mieć pewność, że każda nowa próbka znajdzie się w zakresie wartości twojego zestawu treningowego. Nie. Najważniejsze jest to, że porównanie to nie jest przydatne na początek (!).
Sugeruję, abyś trochę poeksperymentował z MNIST i spróbował zobaczyć rzeczywiste wyniki, które możesz wymyślić, używając tylko jednej warstwy.
Praktyczne sieci wykorzystują znacznie więcej niż jedną ukrytą warstwę, czasem dziesiątki (cóż, Resnet nawet więcej ...) warstw. Z powodu. Ten powód nie został udowodniony i ogólnie wybór architektury sieci neuronowej jest gorącym obszarem badań. Innymi słowy, chociaż wciąż musimy wiedzieć więcej, oba modele, które porównałeś (regresja liniowa i NN z tylko jedną ukrytą warstwą), dla wielu zestawów danych, nie są w ogóle przydatne!
Nawiasem mówiąc, na wypadek, gdybyś dostał się do ML, istnieje inne bezużyteczne twierdzenie, które w rzeczywistości jest obecnym „obszarem badań” - PAC (prawdopodobnie w przybliżeniu poprawny) / wymiar VC. Rozbuduję to jako bonus:
Jeśli uniwersalne przybliżenie zasadniczo stwierdza, że biorąc pod uwagę nieskończoną liczbę neuronów, możemy przybliżyć dowolną funkcję (dziękuję bardzo?), W praktyce mówi PAC, biorąc pod uwagę (praktycznie!) Nieskończoną liczbę oznakowanych przykładów, które możemy zbliżyć tak blisko, jak to możliwe chcą najlepszej hipotezy w naszym modelu. To było absolutnie zabawne, kiedy obliczyłem rzeczywistą liczbę przykładów potrzebnych do tego, aby praktyczna sieć mieściła się w pewnym praktycznym pożądanym poziomie błędu z pewnym prawdopodobieństwem w przybliżeniu :) To było więcej niż liczba elektronów we wszechświecie. PS, aby go zwiększyć, zakłada również, że próbki są IID (co nigdy nie jest prawdą!).
źródło
Prawdą jest, że dowolną funkcję można dowolnie zamknąć w przybliżeniu zarówno przez coś, co liczy się jako sieć neuronowa, jak i przez coś, co liczy się jako wielomian.
Przede wszystkim pamiętaj, że dotyczy to wielu konstrukcji. Możesz przybliżyć dowolną funkcję, łącząc sinus i cosinus (transformaty Fouriera), lub po prostu dodając wiele „prostokątów” (niezbyt dokładna definicja, ale mam nadzieję, że rozumiesz).
Po drugie, podobnie jak odpowiedź Yoni, za każdym razem, gdy trenujesz sieć lub dopasowujesz regresję do wielu mocy, liczba neuronów lub liczba mocy są ustalone. Następnie zastosujesz jakiś algorytm, może zejście gradientu lub coś takiego, i dzięki temu znajdziesz najlepsze parametry. Parametry to wagi w sieci i współczynniki dla dużego wielomianu. Maksymalna moc pobierana przez wielomian lub liczba użytych neuronów nazywane są hiperparametrami. W praktyce wypróbujesz kilka z nich. Oczywiście możesz stwierdzić, że parametr jest parametrem, ale w praktyce tak się nie dzieje.
Chodzi o to, że w uczeniu maszynowym tak naprawdę nie potrzebujesz funkcji, która idealnie pasuje do twoich danych. W rzeczywistości nie byłoby to zbyt trudne. Chcesz czegoś, co dobrze pasuje, ale prawdopodobnie również działa na punkty, których jeszcze nie widziałeś. Zobacz to zdjęcie, na przykład zaczerpnięte z dokumentacji dla
scikit-learn
.Linia jest zbyt prosta, ale najlepsze przybliżenie nie jest po prawej stronie, jest na środku, mimo że funkcja po prawej stronie najlepiej pasuje. Funkcja po prawej stronie stworzyłaby dość dziwne (i prawdopodobnie nieoptymalne) prognozy dla nowych punktów danych, szczególnie jeśli spadną one w pobliżu krętych bitów po lewej stronie.
Ostatecznym powodem, dla którego sieci neuronowe z kilkoma parametrami działają tak dobrze, jest to, że mogą one coś zmieścić, ale tak naprawdę nie są nadrzędne. Ma to również wiele wspólnego ze sposobem ich szkolenia, z pewną formą stochastycznego spadku.
źródło
Ponieważ nie udzielono jeszcze odpowiedzi (choć zaakceptowałbym komentarz użytkownika 1952009, który został opublikowany jako odpowiedź), pozwólcie mi podzielić się tym, czego się nauczyłem w międzyczasie:
(1) Wydaje mi się, że ogólnie rozumiem, ale diabeł tkwi w szczegółach.
(2) Jedną z rzeczy, które przeoczyły „moje rozumienie”: jak dobrze sparametryzowana hipoteza uogólnia się na dane spoza zestawu treningowego? Nie-wielomianowy charakter prognoz sieci neuronowej może być tam lepszy niż prosta regresja liniowa / wielomianowa (pamiętaj, jak wielomian bardzo szybko rośnie / zmniejsza się poza zestawem treningowym).
(3) Link, który dodatkowo wyjaśnia znaczenie szybkiego obliczania parametrów: http://www.heatonresearch.com/2017/06/01/hidden-layers.html
źródło
Może ten artykuł może ci pomóc:
Regresja wielomianowa jako alternatywa dla sieci neuronowych
Streszczenie mówi:
źródło