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.[2]
Motivación
[editar | editar a fonte]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.[2]
Variando os valores dos filtros, pódense detectar os eixes verticais e horizontais das imaxes, o que serviría, por exemplo, para diferenciar obxectos dentro dunha imaxe.[3]
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 entradas e saídas, a multiplicación de matrices precisa parámetros, e os algoritmos utilizados na práctica adoitan ter orde . Polo tanto, se cada neurona está conectada a neuronas da capa seguinte, , 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 e 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.[2]
Filtros
[editar | editar a fonte]Profundando máis nos filtros, hai diferentes parámetros que se poden variar neles á hora de percorrer a imaxe.
En primeiro lugar, pódese mudar o tamaño do filtro, engadindo máis parámetros para que abranga máis neuronas de entrada. En segundo lugar, pódese modificar o salto que realiza o filtro cando cambia de neuronas. Por exemplo, na figura da convolución, estase dando un salto de 1, pois o filtro vai recorrendo tódalas combinacións posibles. Porén, se o salto fose de 2, o grupo de neuronas non se analizaría, pasando directamente ao grupo . Nese mesmo exemplo, non se podería facer un salto de 3, pois o filtro sairíase da imaxe.
Para calcular os parámetros dos filtros hai unha fórmula que nos indica a relación entre todos eles. Sexan o tamaño de saída (supoñemos imaxes cadradas de tamaño ), o tamaño de entrada, o tamaño do filtro e o salto do filtro. Tense entón a relación:
Despexando os parámetros que queiramos calcular, podemos obter os valores correctos en función dos dados.[4]
Recheo
[editar | editar a fonte]O recheo (tamén coñecido como padding, do inglés) consiste en engadir ceros no bordo da imaxe, o que modifica o tamaño da imaxe de entrada. Isto adóitase facer para ter unha imaxe de saída do mesmo tamaño que a de entrada, é dicir, non modificar o número de neuronas a medida que se van aplicando capas convolucionais. Neste caso, chamándolle ao recheo, a relación que hai é a seguinte:
Para un salto de 1 (), se , o tamaño de entrada é o mesmo que o de saída ().[4]
Capa convolucional
[editar | editar a fonte]Nunha capa convolucional, máis xeralmente, se é o número de neuronas de largo da imaxe, é o número de neuronas de alto, e é o número de filtros de entrada, o tamaño de entrada é , téndose as seguintes relacións:
- , sendo o largo da imaxe.
- , sendo o alto da imaxe.
- número de filtros de saída.
O tamaño de saída é .
Ademais, o número de parámetros é , onde é o número de parámetros por filtro, ao que se lle suma unha constante. Todo isto queda multiplicado polo número de filtros que apliquemos na seguinte capa. Polo tanto, haberá tantos mapas de características (saída dunha convolución) como número de filtros que se apliquen.[4]
Agrupamento
[editar | editar a fonte]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.[2]
O agrupamento reduce o tamaño de saída da rede, o que deriva en redes máis pequenas onde se usa menos memoria e menos operación. Ademais, o agrupamento opera sobre cada mapa de características individualmente, mentres que a convolución opera sobre todos os mapas á vez.
Neste caso, as relacións entre a entrada e a saída son as seguintes:
A operación de agrupamento non precisa parámetros adicionais.[4]
Normalización por lotes
[editar | editar a fonte]Usualmente, antes de aplicar a función de activación, realízase unha normalización. A máis usada nas redes neurais convolucionais é a normalización por lotes. Esta normalización é aprendida pola rede e utilízase para manter os valores dentro dun rango razoable. Ademais, non utiliza media 0 e varianza 1, por seren valores demasiado restritivos.
Os datos normalízanse en capas, onde cada dimensión é independente, é dicir, para tódalas imaxes faise a normalización coa media e varianza de tódolos exemplos por canle.[4]
Dilución
[editar | editar a fonte]Para adestrar á rede, adóitase utilizar o proceso de dilución (ou drop-out, en inglés), que consiste en desactivar aleatoriamente certas neuronas de cada capa. Isto é eficaz para que a rede non se adapte demasiado aos exemplos que se lle introducen na fase de adestramento.
O valor do hiperparámetro de dilución neste tipo de redes está arredor do 0,5, aínda que dependendo da rede que esteamos a adestrar, pódense probar diferentes valores para ver cal se axusta mellor á rede en cuestión.[4]
Tipos de redes neurais convolucionais
[editar | editar a fonte]Existen numerosas arquitecturas que utilizan redes neurais convolucionais. En xeral, as redes convolucionais adoitan ter algunhas capas totalmente conectadas ao final da rede. Ademais, moitas destas redes están xa previamente adestradas con conxuntos de datos como o ImageNet ou CIFAR-10. Algunhas destas redes son:
- VGG: unha rede profunda con filtros pequenos (). O número de filtros dóbrase despois de cada operación de agrupamento. VGG16: 138 millóns de parámetros.[5]
- 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.[6]
- 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.[7]
Aplicacións
[editar | editar a fonte]As redes neurais convolucionais destacan no recoñecemento de imaxes. Foron moi utilizadas no recoñecemento facial,[8] chegando a ter precisións do 97,6% na detección de sorrisos.[9] 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.[10]
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.[11] Utilizáronse tamén para a detección de obxectos en vídeos.[12]
Outra aplicación destas redes é no procesamento da linguaxe natural, onde se estudaron para o modelado de oracións,[13] a clasificación[14] e a predición,[15] 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.[16]
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.[17]
Ademais de nestes campos, estas redes pódense utilizar en moitos outros campos, dependendo da natureza do problema.
Notas
[editar | editar a fonte]- ↑ "NN-SVG". alexlenail.me. Consultado o 05-09-2024.
- ↑ 2,0 2,1 2,2 2,3 Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "9". Deep Learning [Aprendizaxe profunda] (en inglés) (1ª ed.). The MIT Press. ISBN 9780262035613.
- ↑ 3Blue1Brown (18 de novembro de 2022). But what is a convolution? [Pero que é unha convolución?] (YouTube) (en inglés).
- ↑ 4,0 4,1 4,2 4,3 4,4 4,5 Li, Fei-Fei; Johson, Justin; Yeung, Serena (2018). Convolutional Neural Networks for Visual Recognition [Redes neurais convolucionais para o recoñecemento visual] (en inglés). Stanford University.
- ↑ Simonyan, Karen; Zisserman, Andrew (2015). Very Deep Convolutional Networks for Large-Scale Image Recognition [Redes convolucionais moi profundas para o recoñecemento de imaxes a grande escala] (en inglés).
- ↑ He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (2016). Deep Residual Learning for Image Recognition [Aprendizaxe residual profunda para o recoñecemento de imaxes] (en inglés).
- ↑ Xie, Saining; Girshick, Ross; Dollár, Piotr; Tu, Zhuowen; He, Kaiming (2017). Aggregated Residual Transformations for Deep Neural Networks [Transformacións residuais engadidas para redes neurais profundas] (en inglés).
- ↑ Lawrence, S.; Giles, C.L.; Ah Chung Tsoi; Back, A.D. (Xaneiro do 1997). "Face recognition: a convolutional neural-network approach" [Recoñecemento facial: unha aproximación por redes neurais convolucionais]. IEEE Transactions on Neural Networks (en inglés) 8 (1): 98–113. ISSN 1045-9227. doi:10.1109/72.554195.
- ↑ Matsugu, Masakazu; Mori, Katsuhiko; Mitari, Yusuke; Kaneda, Yuji (01-06-2003). "Subject independent facial expression recognition with robust face detection using a convolutional neural network" [Recoñecemento facial independente do suxeito con detección de rostro robusta mediante una rede neural convolucional]. Neural Networks. Advances in Neural Networks Research: IJCNN '03 (en inglés) 16 (5): 555–559. ISSN 0893-6080. doi:10.1016/S0893-6080(03)00115-1.
- ↑ Szegedy, Christian; Liu, Wei; Jia, Yangqing; Sermanet, Pierre; Reed, Scott; Anguelo, Dragomir; Erhan, Dumitru; Vanhoucke, Vincent; Rabinovich, Andrew (15 de outubro do 2015). "Going deeper with convolutions" [Indo máis a fondo coas convolucións]. 2015 IEEE Conference on Computer Vision and Pattern Recognition (en inglés).
- ↑ Ji, Shuiwang; Xu, Wei; Yang, Ming; Yu, Kai (6 de marzo do 2012). "3D Convolutional Neural Networks for Human Action Recognition" [Redes neurais convolucionais 3D para o recoñecemento de accións humanas]. IEEE (en inglés) 35: 221–231.
- ↑ Cores Costa, Daniel (2022). "Spatio-temporal convolutional neural networks for video object detection" [Redes neurais espazo-temporais convolucionais para a detección de obxectos en vídeos]. USC (en inglés) (Universidade de Santiago de Compostela).
- ↑ Kalchbrenner, Nal; Grefenstette, Edward; Blunsom, Phil (8 de abril do 2014). "A Convolutional Neural Network for Modelling Sentences" [Unha rede neural convolucional para o modelado de oracións]. arXiv (en inglés).
- ↑ Kim, Yoon (25 de agosto do 2014). "Convolutional Neural Networks for Sentence Classification" [Redes neurais convolucionais para a clasificación de oracións]. arXiv (en inglés).
- ↑ Collobert, Ronan; Weston, Jason (5 de xullo do 2008). "A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning" [Unha arquitectura unificada para o procesamento da linguaxe natural: redes neurais con aprendizaxe multitarefa]. ICML '08: Proceedings of the 25th international conference on Machine learning (en inglés): 160–167.
- ↑ Yin, Wenpeng; Kann, Katharina; Yu, Mo; Schütze, Hinrich (7 de febreiro do 2017). "Comparative Study of CNN and RNN for Natural Language Processing" [Estudo comparativo das redes neurais convolucionais e as redes neurais recorrentes para o procesamento da linguaxe natural]. arXiv (en inglés).
- ↑ Wallach, Izhar; Dzamba, Michael; Heifets, Abraham (10-10-2015). "AtomNet: A Deep Convolutional Neural Network for Bioactivity Prediction in Structure-based Drug Discovery" [AtomNet: unha rede neural convolucional para a predición da bioactividade no descubrimento de fármacos baseados en estruturas]. arXiv.org (en inglés). Consultado o 05-09-2024.