dogłębne uczenie się dla zadań niezwiązanych z obrazem i NLP


12

Do tej pory istnieje wiele interesujących aplikacji do głębokiego uczenia się w zakresie widzenia komputerowego lub przetwarzania języka naturalnego.

Jak to jest w innych bardziej tradycyjnych dziedzinach? Na przykład mam tradycyjne zmienne społeczno-demograficzne oraz być może wiele pomiarów laboratoryjnych i chcę przewidzieć pewną chorobę. Czy byłaby to aplikacja do głębokiego uczenia się, jeśli mam dużo obserwacji? Jak zbudowałbym tutaj sieć, myślę, że wszystkie fantazyjne warstwy (splotowe itp.) Nie są tak naprawdę konieczne ?! Po prostu zrób to głęboko?

Na moim konkretnym zestawie danych wypróbowałem niektóre popularne algorytmy uczenia maszynowego, takie jak losowe lasy, gbm itp., Uzyskując mieszane wyniki dotyczące dokładności. Mam ograniczone doświadczenie w głębokim uczeniu się z rozpoznawaniem obrazów.


1
Lepiej jest spojrzeć na inne podejście, np. XGBoost, w zależności od tego, ile kosztuje „dużo obserwacji”. Czy możesz wyjaśnić, czy Twoim celem jest wypróbowanie metod głębokiego uczenia się, czy uzyskanie najlepszej dokładności?
Neil Slater

@NeilSlater moim celem byłoby osiągnięcie wyższej dokładności niż ustalone metody, takie jak xgboost, jeśli jest to możliwe w takim przypadku
spore234

1
Jest to możliwe, ale z mojego doświadczenia nie jest prawdopodobne, chyba że naprawdę masz dużo danych.
Neil Slater,

Matlab zapewnia dokumentację na temat „Porad i wskazówek dotyczących głębokiego uczenia się”. Miałem to samo pytanie, a strona zawierała bardzo przydatny przewodnik po dobrych przykładach. na przykład możesz potrzebować klasyfikacji sekwencyjnej / klasyfikacji szeregów czasowych / regresji za pomocą głębokiego uczenia.
Sami Navesi,

Odpowiedzi:


10

Tak, możesz używać technik głębokiego uczenia się do przetwarzania danych innych niż obrazowe. Jednak inne klasy modeli są nadal bardzo konkurencyjne z sieciami neuronowymi poza przetwarzaniem sygnału i powiązanymi zadaniami.

Aby zastosować podejście do głębokiego uczenia się w przypadku danych niesygnałowych / niesekwencyjnych, zwykle używa się prostej wielowarstwowej sieci feed-forward. Nie ma potrzeby stosowania warstw splotowych ani warstw pulowania. Najlepszą architekturę inną niż ta należy zbadać z walidacją krzyżową, a odkrywanie jej może być czasochłonne, ponieważ głębokie sieci NN wymagają wielu obliczeń.

Z mojego doświadczenia próbuję korzystać z głębokich (-ish, zwykle ~ 5 warstw) sieci neuronowych w konkursach Kaggle:

  • Dropout jest nadal bardzo skuteczny w regularyzacji i zwiększaniu dokładności

  • Ważna jest normalizacja wejściowa - zwykle oznaczająca 0, odchylenie standardowe 1

  • Funkcje aktywacji ukrytej warstwy mogą mieć znaczenie. Chociaż ReLU zmniejsza pewne problemy z zanikającymi gradientami, z mojego doświadczenia wynika, że ​​jest mniej odporny na dane bez sygnału i będziesz potrzebować innej formy. Jeśli masz tylko kilka warstw, sigmoid lub tanh nadal działają OK. W przeciwnym razie spójrz na nieszczelne ReLU, PReLU, ELU i inne warianty ReLU, które próbują załatać swoje problemy z „martwymi” neuronami.

  • Skorzystaj z optymalizatorów zaprojektowanych do głębokiego uczenia się, takich jak Adam, Adagrad lub RMSProp

  • Użyj metody inicjalizacji wagi, która działa z głębokim uczeniem się, takiej jak Glorot.

  • Rozważ użycie warstw normalizacyjnych partii. Nie mam z tym dużego doświadczenia, ale widziałem, jak inni ludzie dobrze sobie radzą z tym podejściem.

Pomimo tego wszystkiego, XGBoost może rutynowo i łatwo pokonać głębokie sieci NN przy minimalnym wysiłku dostrajania i treningu w porównaniu (w zależności oczywiście od problemu i posiadanych danych). Jeśli dokładność jest dla Ciebie wszystkim, możliwe jest - choć nie jest to zagwarantowane - że zespół głębokich NN i innych modeli, takich jak XGBoost, będzie działał lepiej niż jedno z nich.


1

Sieć może być odpowiednia do celów klasyfikacji. W tym celu musisz mieć możliwość zdefiniowania zestawu szkoleniowego i zestawu testowego swoich danych, które reprezentują dane, które sieć zostanie poproszona o sklasyfikowanie w produkcji. Od tego zależy, czy można uzyskać złą, rozsądną lub dobrze działającą sieć.

Uważam pojęcia za „głębokie uczenie się” jako wprowadzające w błąd: sieć się nie uczy, można ją tylko szkolić.

Zakładając, że możesz stworzyć zestaw szkoleniowy i testowy, na wysokim poziomie możesz użyć

  • Wielowarstwowy: jeśli dane nie mają porządku, a struktury mają ustaloną pozycję.

  • Sieci rekurencyjne: jeśli kolejność danych ma znaczenie dla klasyfikacji

  • Konwolucja: jeśli dane mają struktury takie jak na obrazach, ale nie ma ustalonej pozycji.

Uzyskanie dobrej konfiguracji, podobnie jak liczby warstw, wymaga prób i błędów; to rodzaj czarnej magii.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.