W wielu sieciach stosuje się funkcje aktywacji w postaci f(x) = x, czyli funkcja na wyjściu zwraca to samo co pobiera na wejście. Taka funkcja istnieje tylko formalnie, bo w praktyce nie wpływa na działanie sieci. Co więcej, sieci bez funkcji aktywaji uczą się bardzo szybko, bardzo dokładnie i w niektórych zadaniach stanowią najlepszy model. Też szybko działają. Więc pytanie: do czego są potrzebne, z praktycznego punktu widzenia zawiera błędne założenie, bo nie zawsze są potrzebne.
Natomiast formalnie są potrzebne do defniowania sieci, nawet jeśli to jest funkcja f(x)=x, to wiemy od razu z jaką siecią mamy do czynienia.
Jeśli stosujemy funkcję aktywacji f(x)=x, to kolejne warstwy sieci nie zwiększają możliwości (tejże sieci).
W przypadku innych funkcji aktywacji (nieliniowych) zwiększamy teoretyczne możliwości sieci, np. w klasycznym perceptronie wielowarstwowym można zwiększać ilość warstw dzięki zastosowaniu nieliniowej funkcji aktywacji. Od możliwości teoretycznych do praktycznych nie zawsze jest prosta droga.
Podsumowując:
funkcje nieliniowe; f(x) = y
- znacznie zwiększają możliwości sieci
- pojawia się sens robienia splotów
- komplikują model
- metody regularyzacji są bardzo trudne
- bardzo trudno znaleźć optymalny model
- trudno dobrać algorytmy uczenia
- najlepiej jak mamy ogromną ilość danych
- utrudniają ekstrakcję wiedzy z wyuczonych sieci
- znacznie wydłużają czas uczenia
- pojawia się problem przeuczenia
- pojawia się problem utykania w minimach lokalnych (raczej w rozległych punktach siodłowych).
funkcje liniowe f(x) = x (czyli tak jakby bez funkcji aktywacji)
- mają ograniczone możliowści
- rozwiązanie zawsze może być optymalne w sensie średnich kwadratów
- łatwo wyliczyć pochodną z kwadratu wag i znaleźć optymalne rozwiązanie też w tym sensie
- uczenie jest jednoprzebiegowe, czas jest około M * N^2 + 0.5 * N^3 (m - ilość danych, n - ilość synaps)
- w związku z powyższym: nie wpadają w minima lokalne
- też można uczyć iteracyjnie i przerwać uczenie przed przeuczeniem
- można zwiększyć możliwości tych sieci przez rozszerzenie funkcjonalne Pao, ale szukanie rozszerzenia
też jest bardzo trudne - chyba że coś wiemy o modelu.
Ale to nie wyczerpuje tematu, są np. sieci na bazie funkcji radialnych, są sieci z mieszanymi funkcjami aktywacji, itd.
Pozdrawiam
Edit, z tymi splotami przesadziłem, w sieciach liniowych (bez funkcji aktywacji) też można stosować sploty, ale to robi się tylko wtedy, gdy mamy bardzo mało danych i gdy wiemy, że splatane wejścia korelują z sobą, najlepiej gdy splatane wejścia zawierają losowy szum a poza tym są skorelowane z sobą (najlepiej skorelowane liniowo, bo używamy modelu liniowego).