Yan LeCun i inni argumentują w Efficient BackProp to
Konwergencja jest zwykle szybsza, jeśli średnia każdej zmiennej wejściowej w zestawie treningowym jest bliska zeru. Aby to zobaczyć, rozważ ekstremalny przypadek, w którym wszystkie dane wejściowe są dodatnie. Wagi dla określonego węzła w pierwszej warstwie wagi są aktualizowane o kwotę proporcjonalną do δx gdzie δ jest błędem (skalarnym) w tym węźle, a x jest wektorem wejściowym (patrz równania (5) i (10)). Gdy wszystkie składniki wektora wejściowego są dodatnie, wszystkie aktualizacje wag, które zasilają węzeł, będą miały ten sam znak (tj. Znak ( δ )). W rezultacie te ciężary mogą tylko zmniejszyć się lub wzrosnąć łączniedla danego wzorca wejściowego. Zatem, jeśli wektor ciężaru musi zmienić kierunek, może to zrobić tylko poprzez zygzakowanie, co jest nieefektywne, a zatem bardzo wolne.
Dlatego powinieneś znormalizować swoje dane wejściowe, aby średnia wynosiła zero.
Ta sama logika dotyczy warstw środkowych:
Tę heurystykę należy zastosować na wszystkich warstwach, co oznacza, że chcemy, aby średnia wyników węzła była bliska zeru, ponieważ te dane wyjściowe są danymi wejściowymi do następnej warstwy.
Postscript @craq wskazuje, że ten cytat nie ma sensu dla ReLU (x) = max (0, x), który stał się bardzo popularną funkcją aktywacyjną. Chociaż ReLU unika pierwszego zygzakowatego problemu wspomnianego przez LeCun, nie rozwiązuje tego drugiego punktu przez LeCun, który mówi, że ważne jest, aby przesunąć średnią na zero. Chciałbym wiedzieć, co LeCun ma do powiedzenia na ten temat. W każdym razie istnieje artykuł o nazwie Batch Normalization , który jest oparty na pracy LeCun i oferuje sposób rozwiązania tego problemu:
Od dawna wiadomo (LeCun i in., 1998b; Wiesler i Ney, 2011), że trening sieci zbiega się szybciej, jeśli jego dane wejściowe są bielone - tj. Liniowo przekształcane w celu uzyskania zerowych średnich i wariancji jednostek i dekorelowane. Ponieważ każda warstwa obserwuje nakłady wytwarzane przez poniższe warstwy, korzystne byłoby uzyskanie takiego samego wybielenia nakładów każdej warstwy.
Nawiasem mówiąc, ten film Siraja wyjaśnia wiele na temat funkcji aktywacyjnych w 10 zabawnych minut.
@elkout mówi „Prawdziwym powodem, dla którego tanh jest preferowany w porównaniu do sigmoidu (...), jest to, że pochodne tanh są większe niż pochodne sigmoidu”.
Myślę, że to nie jest problem. Nigdy nie widziałem, aby był to problem w literaturze. Jeśli przeszkadza Ci, że jedna pochodna jest mniejsza od innej, możesz ją po prostu skalować.
Funkcja logistyczna ma kształt σ(x)=11+e−kx . Zwykle używamyk=1, ale nic nie zabrania ci używania innej wartości dlakaby poszerzyć pochodne, jeśli to był twój problem.
Nitpick: tanh jest również funkcją sigmoidalną . Każda funkcja o kształcie S jest sigmoidem. To, co nazywacie sigmoid, to funkcja logistyczna. Powodem, dla którego funkcja logistyczna jest bardziej popularna, są przyczyny historyczne. Od dłuższego czasu jest używany przez statystyków. Poza tym niektórzy uważają, że jest to bardziej prawdopodobne biologicznie.