Sieci neuronowe. Dokąd to wszystko zmierza

Artykuł składa się z dwóch części:

  1. Krótkie opisy niektórych architektur sieci do wykrywania obiektów na obrazach oraz segmentacji obrazów z najłatwiej dostępnymi dla mnie linkami do zasobów. Starałem się wybierać filmiki instruktażowe, najlepiej w języku polskim.
  2. Druga część polega na próbie zrozumienia kierunku rozwoju architektur sieci neuronowych i technologii opartych na nich.

Sieci neuronowe. Dokąd to wszystko zmierza

Rysunek 1 – Zrozumienie architektur sieci neuronowych nie jest proste

Wszytko zaczęło się od stworzenia dwóch aplikacji demonstracyjnych do klasyfikacji i wykrywania obiektów na telefonie z Androidem:

  • Demo back-end, kiedy dane są przetwarzane na serwerze i przesyłane na telefon. Klasyfikacja obrazów (image classification) trzech typów niedźwiedzi: brązowego, czarnego i pluszowego.
  • Demo front-end, kiedy dane są przetwarzane na samym telefonie. Wykrywanie obiektów (object detection) trzech typów: orzechy leszne, figi i daktyle.

Jest różnica między zadaniami klasyfikacji obrazów, wykrywania obiektów na obrazach i segmentacją obrazów. Dlatego narodziła się potrzeba dowiedzenia się, jakie architektury sieci neuronowych wykrywają obiekty na obrazach i które mogą je segmentować. Znalazłem następujące przykłady architektur z najłatwiej dostępnymi dla mnie linkami do zasobów:

  • Seria architektur opartych na R-CNN (Rregiony z Ckonwolucyjnych Nsieci Nneuronowych): R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN. Do wykrywania obiektów na obrazie za pomocą mechanizmu Region Proposal Network (RPN) wyodrębniane są ograniczone regiony (bounding boxes). Początkowo zamiast RPN stosowany był wolniejszy mechanizm Selective Search. Następnie wyodrębnione ograniczone regiony są podawane do zwykłej sieci neuronowej celem klasyfikacji. W architekturze R-CNN są wyraźne pętle „for” przeszukujące ograniczone regiony, w sumie do 2000 przejść przez wewnętrzną sieć AlexNet. Z powodu wyraźnych pętli „for” spowolniona jest prędkość przetwarzania obrazów. Liczba wyraźnych pętli, przejść przez wewnętrzną sieć neuronową, zmniejsza się z każdą nową wersją architektury, a także wprowadzane są dziesiątki innych zmian w celu zwiększenia prędkości i zmiany zadania wykrywania obiektów na segmentację obiektów w Mask R-CNN.
  • YOLO (Ymożna Otylko Lspojrzeć OYOLO – pierwsza sieć neuronowa, która rozpoznaje obiekty w czasie rzeczywistym na urządzeniach mobilnych. Jej wyróżniająca cecha to rozróżnianie obiektów za jednym przewinięciem (wystarczy raz spojrzeć). W architekturze YOLO nie ma wyraźnych pętli „for”, co sprawia, że sieć działa szybko. Przykład: w NumPy przy operacjach na macierzach również nie ma wyraźnych pętli „for”, które w NumPy realizowane są na niższych poziomach architektury przy użyciu języka programowania C. YOLO wykorzystuje siatkę z wcześniej określonymi oknami. Aby ten sam obiekt nie był identyfikowany wielokrotnie, zastosowano współczynnik nakładania okien (IoU, Iprzecięcie ozbiór Uunie). Ta architektura działa w szerokim zakresie i charakteryzuje się wysoką odpornością: model może być szkolony na zdjęciach, ale także dobrze działa na obrazach namalowanych.
  • SSD (Spojedynczy Sdetektor MultiBox Dwykorzystuje najbardziej skuteczne „sztuczki” architektury YOLO (np. tłumienie maksymalne) oraz dodaje nowe, aby sieć neuronowa działała szybciej i dokładniej. Wyróżniającą cechą jest rozróżnianie obiektów za jednym przewinięciem przy użyciu zdefiniowanej siatki okien (default box) na piramidzie obrazów. Piramida obrazów jest kodowana w konwolucyjnych tensorach podczas kolejnych operacji konwolucji i pooling (podczas operacji max-pooling przestrzenna wielkość maleje). W ten sposób identyfikowane są zarówno duże, jak i małe obiekty za jednym przejściem sieci.
  • MobileSSD (MobilneNetV2 + SSD) – kombinacja dwóch architektur sieci neuronowych. Pierwsza sieć MobileNetV2 działa szybko i zwiększa dokładność rozpoznawania. MobileNetV2 jest stosowana zamiast VGG-16, która pierwotnie była używana w oryginalnym artykule. Druga sieć SSD określa lokalizację obiektów na obrazie.
  • SqueezeNet to bardzo mała, ale dokładna sieć neuronowa. Sama w sobie nie rozwiązuje problemu wykrywania obiektów. Może być jednak stosowana w połączeniu z różnymi architekturami. I wykorzystywana w urządzeniach mobilnych. Jej wyróżniającą cechą jest to, że dane są najpierw kompresowane do czterech filtrów konwolucyjnych 1×1, a następnie rozszerzane do czterech filtrów 1×1 i czterech 3×3. Jedna taka iteracja kompresji-rozszerzenia danych nazywana jest „Modułem Ognia”.
  • DeepLab (Segmentacja obrazów z użyciem głębokich sieci konwolucyjnych) – segmentacja obiektów na obrazach. Charakterystyczną cechą architektury jest rozrzedzona (rozciągnięta konwolucja), która zachowuje rozdzielczość przestrzenną. Następnie następuje etap przetwarzania wyników z wykorzystaniem graficznego modelu probabilistycznego (warunkowe pole losowe), co pozwala usunąć niewielkie szumy w segmentacji i poprawić jakość wysegregowanego obrazu. Za groźnie brzmiącą nazwą „graficzny model probabilistyczny” kryje się zwykły filtr Gaussa, który został przybliżony na pięciu punktach.
  • Próbowałem zrozumieć działanie RefineDet (Jednoetapowa Refinement Neural Network for Object Detekcja), ale niewiele zrozumiałem.
  • Zobaczyłem także, jak działa technologia „uwagi” (attention): wideo1, wideo2, wideo3. Charakterystyczną cechą architektury „uwagi” jest automatyczne wyodrębnianie obszarów o podwyższonej uwadze na obrazie (RoI, Rregions of Interest) za pomocą sieci neuronowej o nazwie Attention Unit. Obszary o podwyższonej uwadze przypominają ograniczone obszary (bounding boxes), ale w przeciwieństwie do nich nie są uświadomione na obrazie i mogą mieć rozmyte krawędzie. Następnie z obszarów o podwyższonej uwadze wyodrębniane są cechy (features), które są „przekazywane” do rekurencyjnych sieci neuronowych o architekturze LSDM, GRU lub Vanilla RNN. Rekurencyjne sieci neuronowe potrafią analizować wzajemne relacje cech w sekwencji. Rekurencyjne sieci neuronowe początkowo wykorzystywane były do tłumaczenia tekstu na inne języki, a teraz także do tłumaczenia obrazów na tekst i tekstu na obrazy.

W miarę zgłębiania tych architektur zdałem sobie sprawę, że nic nie rozumiem. I nie chodzi o to, że moja sieć neuronowa ma problemy z mechanizmem uwagi. Stworzenie wszystkich tych architektur przypomina jakiś ogromny hackathon, w którym twórcy rywalizują w haku. Hack – szybkie rozwiązanie trudnego problemu programowania. To znaczy, że między tymi wszystkimi architekturami nie ma widocznego ani zrozumiałego logicznego związku. Wszystko, co je łączy to zestaw najbardziej udanych haków, które zapożyczają od siebie nawzajem, plus wspólna dla wszystkich operacja konwolucji z sprzężeniem zwrotnym (wsteczna propagacja błędu, backpropagation). Nie ma myślenia systemowego! Nie wiadomo, co zmieniać i jak optymalizować istniejące osiągnięcia.

Wynik braku logicznego powiązania między hackami sprawia, że są one niezwykle trudne do zapamiętania i zastosowania w praktyce. To fragmentaryczna wiedza. W najlepszym przypadku zapamiętuje się kilka interesujących i niespodziewanych momentów, ale większość zrozumianych i niezrozumianych informacji znika z pamięci już po kilku dniach. Dobrze byłoby, gdyby po tygodniu przypomniano sobie przynajmniej nazwę architektury. A przecież na czytanie artykułów i oglądanie przeglądowych filmów poświęcono kilka godzin, a nawet dni roboczych!

Sieci neuronowe. Dokąd to wszystko zmierza

Rysunek 2 – Zoo sieci neuronowych

Moim zdaniem, większość autorów artykułów naukowych robi wszystko, co w ich mocy, aby nawet ta fragmentaryczna wiedza nie była zrozumiała dla czytelnika. Ale zdania z degerundami w dziesięciu linijkowych zdaniach z formułami, które są wzięte "z sufitu", to temat na osobny artykuł (problem publish or perish).

Z tego powodu zaistniała potrzeba usystematyzowania informacji na temat sieci neuronowych i tym samym zwiększenia jakości zrozumienia i zapamiętywania. Dlatego głównym tematem analizy poszczególnych technologii i architektur sztucznych sieci neuronowych stała się następująca kwestia: dowiedzieć się, dokąd to wszystko zmierza, a nie do zaprezentowania działania jakiejkolwiek konkretnej sieci neuronowej z osobna.

Dokąd to wszystko zmierza. Główne wyniki:

  • Liczba startupów w dziedzinie uczenia maszynowego w ciągu ostatnich dwóch lat znacząco spadła. Możliwy powód: „sieci neuronowe przestały być czymś nowym”.
  • Każdy będzie mógł stworzyć działającą sieć neuronową do rozwiązania prostego zadania. W tym celu weźmie gotowy model z „zoo modeli” (model zoo) i wytrenuje ostatnią warstwę sieci neuronowej (transfer learning) na gotowych danych z Google Dataset Search lub z 25 tysięcy zestawów danych Kaggle w bezpłatnym chmurze Jupyter Notebook.
  • Ewentualni producenci sieci neuronowych zaczęli tworzyć „zoo modeli” (model zoo). Dzięki nim można szybko stworzyć komercyjną aplikację: TF Hub dla TensorFlow, MMDetection dla PyTorch, Detectron dla Caffe2, chainer-modelzoo dla Chainer oraz inne.
  • Sieci neuronowe działające w czasie rzeczywistym (real-time) na urządzeniach mobilnych. Od 10 do 50 klatek na sekundę.
  • Zastosowanie sieci neuronowych w telefonach (TF Lite), w przeglądarkach (TF.js) oraz w przedmiotach codziennego użytku (IoT, Iinternet of Trzeczy). Szczególnie w telefonach, które już wspierają sieci neuronowe na poziomie „sprzętu” (neuroakceleratory).
  • „Każde urządzenie, odzież, a może nawet jedzenie będą miały adres IP v6 i będą się komunikować między sobą” – Sebastian Thrun.
  • Wzrost liczby publikacji na temat uczenia maszynowego zaczął przekraczać prawo Moor'a (podwajanie co dwa lata) od 2015 roku. Oczywiście potrzebne są sieci neuronowe do analizy artykułów.
  • Następujące technologie zyskują na popularności:
    • PyTorch – popularność rośnie błyskawicznie i wydaje się, że wyprzedza TensorFlow.
    • Automatyczne dobieranie hiperparametrów AutoML – popularność rośnie płynnie.
    • Stopniowe zmniejszanie dokładności i zwiększanie prędkości obliczeń: logika rozmyta, algorytmy boostingu, obliczenia nieścisłe (przybliżone), kwantyzacja (kiedy wagi sieci neuronowej przekształca się na liczby całkowite i kwantyzuje), neuroakceleratory.
    • Tłumaczenie obrazów na tekst i tekstu na obrazy.
    • Tworzenie trójwymiarowych obiektów z video, teraz już w czasie rzeczywistym.
    • Podstawą w DL są duże zbiory danych, ale ich zbieranie i oznaczanie nie jest proste. Dlatego rozwija się automatyzacja oznaczania (automated annotation) dla sieci neuronowych przy użyciu sieci neuronowych.
  • Z sieciami neuronowymi Informatyka nagle stała się nauką eksperymentalną i pojawił się kryzys reprodukowalności.
  • Pieniądze IT i popularność sieci neuronowych pojawiły się jednocześnie, gdy obliczenia stały się rynkową wartością. Ekonomia z wartości złota staje się złoto-walutowo-obliczeniową. Zobacz mój artykuł na temat ekonofizyki i przyczyn powstania pieniędzy IT.

Stopniowo pojawia się nowa metodologia programowania ML/DL (Machine Learning & Deep Learning), która opiera się na przedstawieniu programu jako zbioru wytrenowanych modeli sieci neuronowych.

Sieci neuronowe. Dokąd to wszystko zmierza

Rysunek 3 – ML/DL jako nowa metodologia programowania

Jednak nie pojawiła się „teoria sieci neuronowych”, w ramach której można myśleć i pracować systemowo. To, co teraz nazywane jest „teorią”, w rzeczywistości są eksperymentalne, heurystyczne algorytmy.

Linki do moich i nie tylko zasobów:

Dziękuję za uwagę!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster