Reti neurali. Dove sta andando tutto questo?

L'articolo è composto da due parti:

  1. Una breve descrizione di alcune architetture di rete per il rilevamento di oggetti nelle immagini e la segmentazione delle immagini con i collegamenti alle risorse per me più comprensibili. Ho provato a scegliere spiegazioni video e preferibilmente in russo.
  2. La seconda parte è un tentativo di comprendere la direzione di sviluppo delle architetture di reti neurali. E le tecnologie basate su di essi.

Reti neurali. Dove sta andando tutto questo?

Figura 1 – Comprendere le architetture delle reti neurali non è facile

Tutto è iniziato realizzando due applicazioni demo per la classificazione e il rilevamento di oggetti su un telefono Android:

  • Demo di back-end, когда данные обрабатываются на сервере и передаются на телефон. Классификация изображений (image classification) трех типов медведей: бурого, черного и плюшевого.
  • Demo front-endquando i dati vengono elaborati sul telefono stesso. Rilevamento di oggetti (rilevamento oggetti) di tre tipi: nocciole, fichi e datteri.

C'è una differenza tra i compiti di classificazione delle immagini, rilevamento di oggetti in un'immagine e segmentazione delle immagini. Поэтому появилась необходимость узнать, какие архитектуры нейросетей обнаруживают объекты на изображениях и какие могут сегментировать. Нашел следующие примеры архитектур с самыми понятными для меня ссылками на ресурсы:

  • Una serie di architetture basate su R-CNN (Rregioni con Convolution Neuro Nfunzionalità delle reti): R-CNN, Fast R-CNN, R-CNN più veloce, Maschera R-CNN. Per rilevare un oggetto in un'immagine, i riquadri di delimitazione vengono allocati utilizzando il meccanismo RPN (Region Proposal Network). Inizialmente, veniva utilizzato il meccanismo di ricerca selettiva più lento invece di RPN. Quindi le regioni limitate selezionate vengono alimentate all'ingresso di una rete neurale convenzionale per la classificazione. L'architettura R-CNN prevede cicli “for” espliciti su regioni limitate, per un totale di fino a 2000 corse attraverso la rete interna AlexNet. I cicli "for" espliciti rallentano la velocità di elaborazione delle immagini. Il numero di loop espliciti che attraversano la rete neurale interna diminuisce con ogni nuova versione dell'architettura e vengono apportate dozzine di altre modifiche per aumentare la velocità e sostituire il compito di rilevamento degli oggetti con la segmentazione degli oggetti in Mask R-CNN.
  • YOLO (You Only LOOK Once) – первая нейронная сеть, которая распознавала объекты в реальном времени на мобильных устройствах. Отличительная особенность: различение объектов за один прогон (достаточно один раз посмотреть). То есть в архитектуре YOLO нет явных циклов «for», из-за чего сеть работает быстро. Например, такая аналогия: в NumPy при операциях с матрицами тоже нет явных циклов «for», которые в NumPy реализуются на более низких уровнях архитектуры через язык программирования С. YOLO использует сетку из заранее заданных окон. Чтобы один и тот же объект не определялся многократно, используется коэффициент перекрытия окон (IoU, Iintersezione over Union). Questa architettura opera su una vasta gamma e ha un'elevata robustezza: Un modello può essere addestrato sulle fotografie ma può comunque ottenere buoni risultati sui dipinti disegnati a mano.
  • SSD (Single SMultiBox caldo Detector) – vengono utilizzati gli “hack” di maggior successo dell’architettura YOLO (ad esempio, la soppressione non massima) e ne vengono aggiunti di nuovi per far funzionare la rete neurale più velocemente e con maggiore precisione. Caratteristica distintiva: distinguere gli oggetti in una sequenza utilizzando una determinata griglia di finestre (casella predefinita) sulla piramide dell'immagine. La piramide dell'immagine è codificata in tensori di convoluzione attraverso successive operazioni di convoluzione e pooling (con l'operazione di max-pooling, la dimensione spaziale diminuisce). In questo modo vengono determinati sia gli oggetti grandi che quelli piccoli in un unico percorso di rete.
  • SSD mobile (MobileNetV2+ SSD) è una combinazione di due architetture di rete neurale. Prima rete MobileNetV2 funziona rapidamente e aumenta la precisione del riconoscimento. MobileNetV2 viene utilizzato al posto di VGG-16, originariamente utilizzato in articolo originale. La seconda rete SSD determina la posizione degli oggetti nell'immagine.
  • Spremere rete – una rete neurale molto piccola ma precisa. Di per sé, non risolve il problema del rilevamento degli oggetti. Tuttavia, può essere utilizzato in una combinazione di diverse architetture. E utilizzato nei dispositivi mobili. La caratteristica distintiva è che i dati vengono prima compressi in quattro filtri convoluzionali 1×1 e poi espansi in quattro filtri convoluzionali 1×1 e quattro 3×3. Una di queste iterazioni di compressione-espansione dei dati è chiamata "Modulo Fire".
  • Deeplab (Semantic Image Segmentation with Deep Convolutional Nets) – segmentazione degli oggetti nell'immagine. Caratteristica distintiva dell'architettura è la convoluzione dilatata, che preserva la risoluzione spaziale. Segue una fase di post-elaborazione dei risultati utilizzando un modello probabilistico grafico (campo casuale condizionale), che consente di rimuovere piccoli disturbi nella segmentazione e migliorare la qualità dell'immagine segmentata. Dietro il formidabile nome di “modello grafico probabilistico” si nasconde un filtro gaussiano convenzionale, approssimato di cinque punti.
  • Ho cercato di capire il dispositivo PerfezionaDet (Colpo singolo Raffinarement Neural Network for Object essoection), но мало чего понял.
  • Ho anche osservato come funziona la tecnologia “attenzione”: video1, video2, video3. Una caratteristica distintiva dell'architettura "attenzione" è la selezione automatica delle regioni di maggiore attenzione nell'immagine (RoI, Regioni of Iinteresse) utilizzando una rete neurale chiamata Unità di Attenzione. Le regioni di maggiore attenzione sono simili ai riquadri di delimitazione, ma a differenza di essi non sono fisse nell'immagine e possono avere confini sfocati. Quindi, dalle regioni di maggiore attenzione, vengono isolati i segni (caratteristiche), che vengono “alimentati” a reti neurali ricorrenti con architetture LSDM, GRU или Vanilla RNN. Le reti neurali ricorrenti sono in grado di analizzare la relazione delle caratteristiche in una sequenza. Le reti neurali ricorrenti sono state inizialmente utilizzate per tradurre testi in altre lingue, e ora per la traduzione immagini in testo и testo in immagine.

Mentre esploriamo queste architetture Mi sono reso conto che non capisco niente. E non è che la mia rete neurale abbia problemi con il meccanismo dell’attenzione. La creazione di tutte queste architetture è come una sorta di enorme hackathon, in cui gli autori competono negli hack. Hack è una soluzione rapida a un problema software difficile. Cioè, non esiste una connessione logica visibile e comprensibile tra tutte queste architetture. Tutto ciò che li unisce è una serie di hack di maggior successo che prendono in prestito gli uni dagli altri, più uno comune per tutti операция свертки с обратной связью (errore di backpropagation, backpropagation). NO pensiero sistemico! Non è chiaro cosa cambiare e come ottimizzare i risultati esistenti.

A causa della mancanza di connessione logica tra gli hack, questi sono estremamente difficili da ricordare e applicare nella pratica. Questa è una conoscenza frammentata. Nella migliore delle ipotesi, vengono ricordati alcuni momenti interessanti e inaspettati, ma la maggior parte di ciò che è compreso e incomprensibile scompare dalla memoria entro pochi giorni. Sarà bello se tra una settimana ricordi almeno il nome dell'architettura. Ma sono state trascorse diverse ore e persino giorni di lavoro leggendo articoli e guardando video di recensioni!

Reti neurali. Dove sta andando tutto questo?

Figura 2 - Zoo delle Reti Neurali

La maggior parte degli autori di articoli scientifici, a mio personale parere, fa tutto il possibile affinché anche questa conoscenza frammentata non venga compresa dal lettore. Ma le frasi partecipative in frasi di dieci righe con formule prese "dal nulla" sono un argomento per un articolo separato (problema pubblica o muori).

Per questo motivo è necessario sistematizzare le informazioni utilizzando le reti neurali e, quindi, aumentare la qualità della comprensione e della memorizzazione. Pertanto, l'argomento principale dell'analisi delle singole tecnologie e architetture delle reti neurali artificiali è stato il seguente compito: scoprire dove sta andando tuttoe non il dispositivo di una specifica rete neurale separatamente.

Dove sta andando tutto questo? Risultati principali:

  • Numero di startup di machine learning negli ultimi due anni è caduto bruscamente. Possibile motivo: “le reti neurali non sono più una novità”.
  • Chiunque può creare una rete neurale funzionante per risolvere un semplice problema. Per fare ciò, prendi un modello già pronto dallo "zoo modello" e addestra l'ultimo strato della rete neurale (trasferire l'apprendimento) su dati già pronti da Ricerca set di dati di Google o fuori 25mila set di dati Kaggle в бесплатном taccuino Jupyter nuvola.
  • Cominciarono a creare grandi produttori di reti neurali "zoo modello" (zoo modello). Usandoli puoi creare rapidamente un'applicazione commerciale: Hub TF per TensorFlow, MMDtection per PyTorch, rivelatore per Caffè2, chainer-modelzoo per Chainer e altrui.
  • Reti neurali in funzione tempo reale (real-time) на мобильных устройствах. От 10 до 50 кадров в секунду.
  • L'uso delle reti neurali nei telefoni (TF Lite), nei browser (TF.js) e in articoli casalinghi (IoT, Internet of Tcerniere). Soprattutto nei telefoni che supportano già le reti neurali a livello hardware (acceleratori neurali).
  • “Ogni dispositivo, capo di abbigliamento e forse anche il cibo avrà Indirizzo IPv6 e comunicare tra loro" - Sebastiano Thrun.
  • Il numero di pubblicazioni sull’apprendimento automatico ha iniziato a crescere superare la legge di Moore (raddoppiando ogni due anni) dal 2015. Ovviamente, abbiamo bisogno di reti neurali per analizzare gli articoli.
  • Le seguenti tecnologie stanno guadagnando popolarità:
    • PyTorch – la popolarità sta crescendo rapidamente e sembra stia superando TensorFlow.
    • Selezione automatica degli iperparametri AutoML – La popolarità sta crescendo senza intoppi.
    • Diminuzione graduale della precisione e aumento della velocità di calcolo: logica sfocata, algoritmi potenziamento, calcoli inesatti (approssimativi), quantizzazione (quando i pesi della rete neurale vengono convertiti in numeri interi e quantizzati), acceleratori neurali.
    • traduzione immagini in testo и testo in immagine.
    • creazione Oggetti XNUMXD da video, ora in tempo reale.
    • La cosa principale di DL è che ci sono molti dati, ma raccoglierli ed etichettarli non è facile. Pertanto, l'automazione del markup si sta sviluppando (annotazione automatizzata) per le reti neurali che utilizzano reti neurali.
  • Con le reti neurali, l'informatica è improvvisamente diventata scienza sperimentale e si alzò Crisi di riproducibilità.
  • Il denaro dell’IT e la popolarità delle reti neurali sono emersi contemporaneamente quando l’informatica è diventata un valore di mercato. L’economia sta cambiando da un’economia basata sull’oro e sulla valuta a calcolo della valuta dell'oro. Vedi il mio articolo su ecofisica e il motivo della comparsa del denaro IT.

A poco a poco ne appare uno nuovo Metodologia di programmazione ML/DL (Machine Learning & Deep Learning), che si basa sulla rappresentazione del programma come un insieme di modelli di reti neurali addestrati.

Reti neurali. Dove sta andando tutto questo?

Figura 3 – ML/DL come nuova metodologia di programmazione

Tuttavia, non è mai apparso "teoria della rete neurale", all'interno del quale puoi pensare e lavorare in modo sistematico. Ciò che oggi chiamiamo “teoria” sono in realtà algoritmi sperimentali ed euristici.

Collegamenti alla mia e ad altre risorse:

Grazie!

Fonte: habr.com

Aggiungi un commento