Rede neural convolucional

alt=Rede neural convolucional|miniatura|384x384px|Esquema dunha rede neural convolucional.
As **redes neurais convolucionais** (tamén chamadas **CNN** polas súas siglas en inglés: *Convolutional Neural Networks*) son un tipo especializado de redes neurais para procesar datos que teñen unha topoloxía coñecida en forma de cuadrícula. Caracterízanse por servir para detectar diferentes características en imaxes, aínda que se poden utilizar en moitos outros ámbitos. Están formadas por unha secuencia de capas convolucionais e funcións de activación. Este tipo de redes neurais foron creadas por Yann LeCun e o seu equipo no ano 1989, tendo éxito en moitas aplicacións prácticas. O seu nome indica que para o seu funcionamento emprega unha operación matemática chamada convolución, polo que se pode dicir que este tipo de redes son simplemente redes neurais que utilizan a convolución en lugar da multiplicación xeral de matrices como mínimo nalgunha das súas capas.

## Motivación 
alt=Filtro dunha rede neuronal convolucional|miniatura|A operación convolución funciona como un produto escalar cos valores do filtro e da entrada.|429x429px
As redes neurais convolucionais caracterízanse por estaren localmente conectadas e pola compartición de pesos.

Nas redes neurais tradicionais, cada neurona está conectada a tódalas neuronas da seguinte capa, é dicir, a rede está totalmente conectada. No caso das redes convolucionais, en vez da multiplicación usual de matrices, utilízase o filtro da convolución, que consegue que cada neurona só estea conectada a un número reducido de neuronas na capa seguinte, o que dá lugar a unha rede **localmente conectada**. Nestas redes, os pesos dos arcos interprétanse como un filtro que vai pasando ao longo da rede, conseguindo unha saída final, que é o valor das neuronas da seguinte capa. Esta operación pódese interpretar como un produto escalar.

Hai dúas vantaxes claras das redes localmente conectadas. Por unha banda, precisamos almacenar menos parámetros que se se tratase dunha rede totalmente conectada, o que reduce a memoria do modelo e mellora a súa eficiencia estatística. Por outra banda, ao haber menos parámetros, calcular a saída require menos operacións, o que se traduce nun tempo computacional menor. Se a nosa rede ten m entradas e n saídas, a multiplicación de matrices precisa m \times n parámetros, e os algoritmos utilizados na práctica adoitan ter orde O(m \times n). Polo tanto, se cada neurona está conectada a k neuronas da capa seguinte, k, a complexidade é menor.

A **compartición de pesos** refírese a repetir os pesos dos arcos en diferentes neuronas. Isto distínguese na figura que describe a operación convolución cos filtros, onde os pesos x, z, t e u utilízanse para calcular as sumas ponderadas de moitos grupos de neuronas. Esta compartición de pesos non afecta ao tempo de execución, mais reduce considerablemente o almacenamento dos parámetros.

## Agrupamento 
alt=Exemplo de agrupamento máximo (max pooling).|miniatura|379x379px|Exemplo de agrupamento máximo con tamaño de filtro 2 e salto 2.
Unha rede neural convolucional típica consta de 3 etapas por capa. A primeira etapa consiste en aplicar convolucións. Na segunda, pásase a saída por unha función de activación (xeralmente ReLU). Na terceira etapa, aplícase unha función de agrupamento (tamén coñecida como *pooling*, do inglés).

Unha función de agrupamento substitúe a saída dunha rede nunha certa localización por un resumo estatístico das neuronas próximas. Por exemplo, unha función de agrupamento comunmente usada é a de agrupamento máximo, que colle o valor máximo do conxunto de neuronas a agrupar. Outras funcións de agrupamento coñecidas son as de facer a media con tódolos valores, a norma ou unha suma ponderada baseada na distancia ao píxel central.
* ResNet: utiliza un bloque de cálculo máis eficiente, sumándolle o valor inicial ao valor de saída da capa. Utiliza filtros de tamaño 3 salvo o primeiro, que é de tamaño 7. Ao principio de cada bloque de convolucións fai unha operación de agrupamento e incrementa o número de filtros en 2. Só é totalmente conectada a última capa.
* ResNeXt: engade o concepto de cardinalidade, que se refire a incrementar o número de camiños que hai en cada bloque de cálculo.

## Aplicacións 
As redes neurais convolucionais destacan no recoñecemento de imaxes. Foron moi utilizadas no recoñecemento facial, chegando a ter precisións do 97,6% na detección de sorrisos. Tamén se utilizaron no recoñecemento xeral de obxectos, competindo en moitos concursos de rendemento, para detectar obxectos pequenos ou que están a longa distancia, por exemplo.

A análise de vídeos por redes convolucionais é menos común que en imaxes, por ter a compoñente do tempo, mais seguíronse diversas estratexias para ter unha boa análise con este tipo de arquitecturas. Utilizáronse tamén para a detección de obxectos en vídeos.

Outra aplicación destas redes é no procesamento da linguaxe natural, onde se estudaron para o modelado de oracións, a clasificación e a predición, entre outros. As redes convolucionais comparáronse coas súas predecesoras neste campo, as redes recorrentes, onde nalgunhas situacións eran mellores as primeiras, e noutras, as segundas.

Ademais de aplicacións tecnolóxicas, as redes neurais convolucionais tamén serven para o descubrimento de fármacos. Investigadores de Atomwise publicaron no 2015 un artigo onde presentaban a primeira rede neural convolucional profunda baseada en estruturas, AtomNet. Estaba deseñada para predicir a bioactividade de pequenas moléculas para aplicacións de descubrimento de fármacos. No artigo explican como aplicar os conceptos convolucionais de localidade de características e composición xerárquica ao modelado de bioactividade e interaccións químicas. Esta rede predicía con éxito novas moléculas activas para obxectivos sen moduladores previamente coñecidos.

Ademais de nestes campos, estas redes pódense utilizar en moitos outros campos, dependendo da natureza do problema.

## Notas 
## Véxase tamén 
### Outros artigos 
* Rede neural artificial
* Rede neural recorrente
* Normalización por lotes
* Convolución