Zbudowałem sztuczną sieć neuronową w Pythonie za pomocą funkcji optymalizacji scipy.optimize.minimize (gradient sprzężony).
Wdrożyłem sprawdzanie gradientu, podwójnie sprawdziłem wszystko itp. Jestem pewien, że działa poprawnie.
Uruchomiłem go kilka razy i osiąga on „Optymalizacja zakończona pomyślnie”, ale kiedy zwiększę liczbę ukrytych warstw, koszt hipotezy wzrasta (wszystko inne pozostaje takie samo) po pomyślnym zakończeniu.
Intuicyjnie wydaje się, że koszt powinien się zmniejszyć, gdy liczba ukrytych warstw wzrośnie, ponieważ jest w stanie wygenerować bardziej złożoną hipotezę, która lepiej pasuje do danych, jednak wydaje się, że tak nie jest.
Byłbym zainteresowany, aby zrozumieć, co się tutaj dzieje, lub jeśli nieprawidłowo zaimplementowałem sieć neuronową?
źródło
Zwiększenie liczby ukrytych warstw dla standardowej sieci neuronowej w rzeczywistości nie poprawi wyników w większości przypadków. Zmieni się rozmiar ukrytej warstwy.
Fakt ten (fakt, że liczba ukrytych warstw robi bardzo niewiele) został zauważony w przeszłości i jest motywacją do głębszego uczenia się. Głębokie uczenie się to skutecznie sprytne sposoby szkolenia wielowarstwowych sieci neuronowych, na przykład poprzez izolowanie podzbiorów cech podczas szkolenia różnych warstw.
Dobry film wprowadzający na ten temat na YouTube
źródło