Jeśli chodzi o żargon sieci neuronowej (y = waga * x + odchylenie), skąd mam wiedzieć, które zmienne są ważniejsze od innych?
Mam sieć neuronową z 10 wejściami, 1 ukrytą warstwą z 20 węzłami i 1 warstwą wyjściową, która ma 1 węzeł. Nie jestem pewien, jak się dowiedzieć, które zmienne wejściowe mają większy wpływ niż inne zmienne. Myślę, że jeśli dane wejściowe są ważne, to będą miały wysoce ważone połączenie z pierwszą warstwą, ale waga może być dodatnia lub ujemna. Mogę więc wziąć bezwzględną wartość wag wejściowych i zsumować je. Ważniejsze dane wejściowe miałyby wyższe kwoty.
Na przykład, jeśli długość włosów jest jednym z danych wejściowych, to powinna mieć 1 połączenie z każdym węzłem w następnej warstwie, a więc 20 połączeń (a zatem 20 ciężarów). Czy mogę po prostu wziąć wartość bezwzględną każdej masy i zsumować je?
źródło
Odpowiedzi:
To, co opisujesz, jest rzeczywiście jednym standardowym sposobem kwantyfikacji znaczenia danych wejściowych sieci neuronowej. Należy jednak pamiętać, że aby to zadziałało, zmienne wejściowe muszą być w jakiś sposób znormalizowane. W przeciwnym razie wagi odpowiadające zmiennym wejściowym, które zwykle mają większe wartości, będą proporcjonalnie mniejsze. Istnieją różne schematy normalizacji, takie jak na przykład odejmowanie średniej zmiennej i dzielenie przez jej odchylenie standardowe. Jeśli zmienne nie zostały znormalizowane w pierwszej kolejności, można dokonać korekty samych wag w obliczeniach ważności, takich jak pomnożenie przez odchylenie standardowe zmiennej.
Tutaj jest standardowym odchyleniem tego wejścia, jest tym znaczeniem wejścia, jest wagą łączącą ty sygnał wejściowy z tym ukrytym węzłem w pierwszej warstwie, a to liczba ukrytych węzłów w pierwszej warstwie.σi i Ii i wij i j nhidden
Inną techniką jest użycie pochodnej mapowania sieci neuronowej w odniesieniu do danych wejściowych, uśrednionych względem danych wejściowych.
Tutaj jest tym wejściem, jest wyjściem, a wartość oczekiwana jest brana w odniesieniu do wektora wejść .xi i y x
źródło
Nieco brutalna siła, ale skuteczne rozwiązanie:
Spróbuj „upuścić” wejście, używając stałej dla jednej z funkcji wprowadzania. Następnie wytrenuj sieć dla każdego z możliwych przypadków i zobacz, jak spada Twoja dokładność. Ważne dane wejściowe zapewnią największą korzyść ogólnej dokładności.
źródło
W przypadku sieci płytkich, to daje przykład zdefiniować znaczenie zmiennej.
W naprawdę głębokiej sieci ludzie nie mówią zbyt wiele o zmiennym znaczeniu. Ponieważ dane wejściowe są funkcjami poziomu pierwotnego, takimi jak piksele na obrazie.
źródło
To, co znalazłem na ten temat, jest szczegółowo wymienione na tej stronie, a dokładniej można na to spojrzeć . Jeśli mówisz tylko o modelach liniowych, musisz znormalizować wagi, aby umożliwić ich interpretację, ale nawet to może wprowadzać w błąd bardziej na ten temat na wspomnianym linku. Niektórzy próbowali tworzyć złożone funkcje wag, aby interpretować ważność danych wejściowych (Garsona, Gedeona i Milne'a), ale nawet to może być mylące, możesz dowiedzieć się więcej na ten temat po przewinięciu pierwszego linku, o którym wspomniałem. Ogólnie radziłbym, aby zinterpretować wyniki z odrobiną soli.
zgodziłby się z odpowiedzią @ rhadar, ale chciałby dodać, że zamiast używać ciągłej próby, użyj wartości średniej dla tego wejścia i nie zapomnij o ponownym przeszkoleniu sieci.
PS: przepraszam, nie mogę opublikować więcej linków lub komentarzy tutaj nie ma dobrej reputacji.
źródło
Biorąc pod uwagę, że masz:
Czy ktoś próbował:
W takim przypadku myślę, że wyjście będzie liczbą oznaczającą „ważność” cechy, ponieważ wyjście to reprezentuje również wyjście ścieżki tego 1 sygnału w sieci.
To tak, jakby zapalić tylko jedną żarówkę w labiryncie i zmierzyć światło wychodzące na wyjściu.
źródło