Najlepsza odpowiedź
Istnieją różne typy funkcji zgniatania. Funkcja zgniatania jest zasadniczo definiowana jako funkcja, która ściska dane wejściowe na jednym z końców małego przedziału. W sieciach neuronowych można ich używać w węzłach w ukrytej warstwie, aby zmiażdżyć dane wejściowe. Wprowadza to nieliniowość do NN i pozwala NN być skutecznym. Możesz udowodnić, że bez wprowadzania nieliniowości na każdej warstwie, po prostu miałbyś po prostu serię transformacji liniowych, które byłyby tak samo efektywne jak jedno przekształcenie liniowe, więc NN byłoby bardziej jak regresja liniowa.
Popularne, które były używane, obejmują funkcję sigmoidalną, funkcję styczną hiperboliczną itp. Możesz znaleźć wiele z tych zasobów w Internecie.
Chociaż funkcje zgniatania odgrywają ważną rolę w NN, istnieje kilka problemów z użyciem jednego. Jednym z problemów jest to, że trudno jest uzyskać wartości pośrednie za pomocą funkcji zgniatających, ponieważ z definicji funkcje zgniatające próbują zgniatać funkcję do obu końców przedziału. Dlatego mogą być trudne w użyciu, a często funkcje zgniatania mogą być bardzo wrażliwe na zastosowane ciężary. To może sprawić, że trening będzie bardzo trudny, ponieważ musisz znaleźć bardzo precyzyjny zestaw obciążników, który zapewni zgniatanie dokładnie tak, jak chcesz (w przeciwnym razie wartości zostaną zgniecione – nie ma żadnego środka).
Inną kwestią jest problem znikającego gradientu. Podczas korzystania z propagacji wstecznej i kaskadowania błędu błąd ma tendencję do gwałtownego zmniejszania się, ponieważ jest on stale mnożony przez ułamek jedności z danych wyjściowych zgniatania i wag (które często są inicjowane jako ułamek jedności). Tak więc wcześniejsze warstwy trenują najwolniej i trudno je trenować.
Do niedawnej skuteczności NN-ów doprowadziło użycie funkcji ReLU zamiast funkcji zgniatania, która zamiast zgniatać input całkowicie, mapuje wejście na przedział [0, x]. Okazało się to znacznie skuteczniejsze w sieciach NN i doprowadziło do niedawnego sukcesu NN. Ludzie myśleli, początkowo, być może trochę naiwnie, że ponieważ funkcja nie jest różniczkowalna, nie byłaby tak skuteczna, ale okazało się, że tak nie jest.
Nawet w przypadku ReLU, problem znikającego gradientu nadal istnieje, a przy bardzo głębokich sieciach nadal stanowi problem. Obecnie pracujemy nad różnymi metodami, aby spróbować rozwiązać ten problem.
Odpowiedź
Bez funkcji zgniatania sieć neuronowa nie byłaby w stanie modelować relacji nieliniowych. W rzeczywistości, jeśli wszystkie neurony mają liniową funkcję odpowiedzi, sieć neuronowa, niezależnie od topologii, upraszcza się do regresji liniowej.
Jeśli masz neuron wyjściowy y zależy liniowo od warstwy pośredniej u
y = \ sum\_i \ gamma\_i u\_i
to z kolei zależy liniowo od neuronów wejściowych x
u\_i = \ sum\_j \ beta\_ {ij} x\_j
cała sieć neuronowa upraszcza się do
y = \ sum\_ {ij} \ gamma\_i \ beta\_ {ij} x\_j
Jeśli zoptymalizujesz kwadratowe wyrażenia błędów, otrzymasz regresję liniową.