Redes neurais. Para onde tudo isso vai dar?

O artigo consiste em duas partes:

  1. Uma breve descrição de algumas arquiteturas de rede para detecção de objetos em imagens e segmentação de imagens com os links de recursos mais compreensíveis para mim. Tentei escolher explicações em vídeo e de preferência em russo.
  2. A segunda parte é uma tentativa de compreender a direção do desenvolvimento das arquiteturas de redes neurais. E tecnologias baseadas neles.

Redes neurais. Para onde tudo isso vai dar?

Figura 1 – Compreender arquiteturas de redes neurais não é fácil

Tudo começou fazendo dois aplicativos de demonstração para classificação e detecção de objetos em um telefone Android:

  • Demonstração de back-end, quando os dados são processados ​​no servidor e transmitidos ao telefone. Classificação de imagens de três tipos de ursos: pardos, pretos e de pelúcia.
  • Demonstração de front-endquando os dados são processados ​​no próprio telefone. Detecção de objetos (detecção de objetos) de três tipos: avelãs, figos e tâmaras.

Existe uma diferença entre as tarefas de classificação de imagens, detecção de objetos em uma imagem e segmentação de imagem. Portanto, houve a necessidade de descobrir quais arquiteturas de redes neurais detectam objetos em imagens e quais podem segmentar. Encontrei os seguintes exemplos de arquiteturas com os links de recursos mais compreensíveis para mim:

  • Uma série de arquiteturas baseadas em R-CNN (Rregiões com Convolução Neural Nrecursos de rede): R-CNN, Fast R-CNN, R-CNN mais rápida, Máscara R-CNN. Para detectar um objeto em uma imagem, caixas delimitadoras são alocadas usando o mecanismo Region Proposal Network (RPN). Inicialmente, o mecanismo mais lento de Pesquisa Seletiva foi usado em vez do RPN. Em seguida, as regiões limitadas selecionadas são alimentadas na entrada de uma rede neural convencional para classificação. A arquitetura R-CNN possui loops “for” explícitos em regiões limitadas, totalizando até 2000 execuções através da rede interna AlexNet. Loops “for” explícitos diminuem a velocidade de processamento de imagens. O número de loops explícitos executados na rede neural interna diminui a cada nova versão da arquitetura, e dezenas de outras alterações são feitas para aumentar a velocidade e substituir a tarefa de detecção de objetos pela segmentação de objetos no Mask R-CNN.
  • YOLO (You Only Look Once) é a primeira rede neural que reconhece objetos em tempo real em dispositivos móveis. Característica distintiva: distinguir objetos em uma corrida (basta olhar uma vez). Ou seja, na arquitetura YOLO não existem loops “for” explícitos, razão pela qual a rede funciona rapidamente. Por exemplo, esta analogia: no NumPy, ao realizar operações com matrizes, também não há loops “for” explícitos, que no NumPy são implementados em níveis inferiores da arquitetura por meio da linguagem de programação C. YOLO usa uma grade de janelas predefinidas. Para evitar que o mesmo objeto seja definido várias vezes, o coeficiente de sobreposição de janela (IoU) é usado. Iinterseção over Uíon). Esta arquitetura opera em uma ampla faixa e tem alta robustez: Um modelo pode ser treinado em fotografias, mas ainda assim ter um bom desempenho em pinturas desenhadas à mão.
  • SSD (Single SMultiBox quente Detector) – os “hacks” mais bem-sucedidos da arquitetura YOLO são usados ​​(por exemplo, supressão não máxima) e novos são adicionados para fazer a rede neural funcionar com mais rapidez e precisão. Característica distintiva: distinguir objetos em uma execução usando uma determinada grade de janelas (caixa padrão) na pirâmide de imagens. A pirâmide de imagens é codificada em tensores de convolução através de sucessivas operações de convolução e pooling (com a operação max-pooling, a dimensão espacial diminui). Desta forma, objetos grandes e pequenos são determinados em uma execução de rede.
  • SSD Móvel (Móvel EsteiraRedeV2+ SSD) é uma combinação de duas arquiteturas de rede neural. Primeira rede MobileNetV2 funciona rapidamente e aumenta a precisão do reconhecimento. MobileNetV2 é usado em vez de VGG-16, que foi originalmente usado em artigo original. A segunda rede SSD determina a localização dos objetos na imagem.
  • SqueezeNet – uma rede neural muito pequena, mas precisa. Por si só, não resolve o problema de detecção de objetos. No entanto, pode ser usado em uma combinação de diferentes arquiteturas. E usado em dispositivos móveis. A característica distintiva é que os dados são primeiro compactados em quatro filtros convolucionais 1×1 e depois expandidos em quatro filtros convolucionais 1×1 e quatro filtros convolucionais 3×3. Uma dessas iterações de compressão-expansão de dados é chamada de “Módulo Fire”.
  • DeepLab (Semantic Image Segmentation with Deep Convolutional Nets) – segmentação de objetos na imagem. Uma característica distintiva da arquitetura é a convolução dilatada, que preserva a resolução espacial. Segue-se uma etapa de pós-processamento dos resultados por meio de um modelo gráfico probabilístico (campo aleatório condicional), que permite remover pequenos ruídos na segmentação e melhorar a qualidade da imagem segmentada. Por trás do formidável nome “modelo gráfico probabilístico” esconde-se um filtro gaussiano convencional, que é aproximado por cinco pontos.
  • Tentei descobrir o dispositivo RefinarDet (Tiro único Refinarment Rede Neural para Objeto Deteção), mas não entendi muito.
  • Também observei como funciona a tecnologia de “atenção”: vídeo1, vídeo2, vídeo3. Uma característica distintiva da arquitetura de “atenção” é a seleção automática de regiões de maior atenção na imagem (RoI, Regiões of Iinteresse) usando uma rede neural chamada Unidade de Atenção. As regiões de maior atenção são semelhantes às caixas delimitadoras, mas, diferentemente delas, não são fixas na imagem e podem ter limites desfocados. Então, das regiões de maior atenção, são isolados sinais (recursos), que são “alimentados” para redes neurais recorrentes com arquiteturas LSDM, GRU ou Vanilla RNN. As redes neurais recorrentes são capazes de analisar o relacionamento dos recursos em uma sequência. Redes neurais recorrentes foram inicialmente usadas para traduzir textos para outros idiomas e agora para tradução imagens para texto и texto para imagem.

À medida que exploramos essas arquiteturas percebi que não entendo nada. E não é que minha rede neural tenha problemas com o mecanismo de atenção. A criação de todas essas arquiteturas é como uma espécie de grande hackathon, onde os autores competem em hacks. Hack é uma solução rápida para um problema difícil de software. Ou seja, não existe uma conexão lógica visível e compreensível entre todas essas arquiteturas. Tudo o que os une é um conjunto dos hacks de maior sucesso que eles emprestam uns aos outros, além de um comum para todos operação de convolução em circuito fechado (retropropagação de erro, retropropagação). Não sistemas a pensar! Não está claro o que mudar e como otimizar as conquistas existentes.

Como resultado da falta de conexão lógica entre os hacks, eles são extremamente difíceis de lembrar e aplicar na prática. Este é um conhecimento fragmentado. Na melhor das hipóteses, alguns momentos interessantes e inesperados são lembrados, mas a maior parte do que é compreendido e incompreensível desaparece da memória em poucos dias. Será bom se em uma semana você lembrar pelo menos o nome da arquitetura. Mas várias horas e até dias de trabalho foram gastos lendo artigos e assistindo vídeos de resenhas!

Redes neurais. Para onde tudo isso vai dar?

Figura 2 - Zoológico de Redes Neurais

A maioria dos autores de artigos científicos, na minha opinião pessoal, fazem todo o possível para que mesmo esse conhecimento fragmentado não seja compreendido pelo leitor. Mas frases participativas em sentenças de dez linhas com fórmulas tiradas “do nada” são um tópico para um artigo separado (problema publique ou pereça).

Por esse motivo, existe a necessidade de sistematizar as informações por meio de redes neurais e, assim, aumentar a qualidade de compreensão e memorização. Portanto, o principal tema de análise de tecnologias e arquiteturas individuais de redes neurais artificiais foi a seguinte tarefa: descubra para onde tudo está indo, e não o dispositivo de qualquer rede neural específica separadamente.

Para onde tudo isso vai dar? Resultados principais:

  • Número de startups de aprendizado de máquina nos últimos dois anos caiu bruscamente. Possível motivo: “redes neurais não são mais algo novo”.
  • Qualquer um pode criar uma rede neural funcional para resolver um problema simples. Para fazer isso, pegue um modelo pronto do “zoológico modelo” e treine a última camada da rede neural (transferir aprendizado) em dados prontos de Pesquisa de conjunto de dados do Google ou de 25 mil conjuntos de dados Kaggle de graça Caderno Jupyter em nuvem.
  • Grandes fabricantes de redes neurais começaram a criar "zoológicos modelo" (zoológico modelo). Usando-os você pode criar rapidamente um aplicativo comercial: Centro TF para TensorFlow, Detecção de MM para PyTorch, Detetron para Caffe2, modelo-chainerzoo para Chainer e outros.
  • Redes Neurais trabalhando em tempo real (tempo real) em dispositivos móveis. De 10 a 50 quadros por segundo.
  • O uso de redes neurais em telefones (TF Lite), em navegadores (TF.js) e em coisas de casa (IoT, Internet of Tcoisas). Principalmente em telefones que já suportam redes neurais em nível de hardware (aceleradores neurais).
  • “Todos os dispositivos, peças de roupa e talvez até alimentos terão Endereço IP-v6 e comunicar uns com os outros" - Sebastian Thrun.
  • O número de publicações sobre aprendizado de máquina começou a crescer exceder a lei de Moore (dobrando a cada dois anos) desde 2015. Obviamente, precisamos de redes neurais para analisar artigos.
  • As seguintes tecnologias estão ganhando popularidade:
    • PyTorch – a popularidade está crescendo rapidamente e parece estar ultrapassando o TensorFlow.
    • Seleção automática de hiperparâmetros AutoML – a popularidade está crescendo suavemente.
    • Diminuição gradual na precisão e aumento na velocidade de cálculo: lógica difusa, algoritmos impulsionando, cálculos inexatos (aproximados), quantização (quando os pesos da rede neural são convertidos em números inteiros e quantizados), aceleradores neurais.
    • Tradução imagens para texto и texto para imagem.
    • criação Objetos 3D de vídeo, agora em tempo real.
    • O principal da EAD é que há muitos dados, mas coletá-los e rotulá-los não é fácil. Portanto, a automação de marcação está se desenvolvendo (anotação automatizada) para redes neurais usando redes neurais.
  • Com as redes neurais, a Ciência da Computação de repente se tornou ciência experimental e surgiu crise de reprodutibilidade.
  • O dinheiro da TI e a popularidade das redes neurais surgiram simultaneamente quando a computação se tornou um valor de mercado. A economia está a mudar de uma economia de ouro e moeda para computação em moeda de ouro. Veja meu artigo sobre econofísica e a razão do aparecimento do dinheiro de TI.

Aos poucos um novo aparece Metodologia de programação ML/DL (Machine Learning & Deep Learning), que se baseia na representação do programa como um conjunto de modelos de redes neurais treinados.

Redes neurais. Para onde tudo isso vai dar?

Figura 3 – ML/DL como nova metodologia de programação

Porém, nunca apareceu "teoria das redes neurais", dentro do qual você pode pensar e trabalhar sistematicamente. O que agora é chamado de “teoria” são, na verdade, algoritmos heurísticos experimentais.

Links para meus e outros recursos:

Obrigado!

Fonte: habr.com

Adicionar um comentário