Um bloco de gargalo é um bloco residual especializado usado em redes neurais profundas, particularmente na arquitetura ResNet. Foi introducido em 2015 por pesquisadores da Microsoft Research (incluindo Kaiming He, Xiangyu Zhang, Shaoqing Ren e Jian Sun) para reconhecimento de imagens, e a rede resultante venceu o ImageNet Large Scale Visual Recognition Challenge (ILSVRC) daquele ano. O bloco é projetado para reduzir o custo computacional enquanto mantiene o poder representacional, tornando possível treinar redes muito profundas com centenas de camadas.
O bloco de gargalo é um refinamento do bloco residual padrão. Em um bloco residual padrão, a função \(F(x)\) é tipicamente uma pilha de duas ou três camadas convolucionais. O bloco de gargalo substituye isso com uma pilha de três camadas: uma convolução 1x1 que reduz a dimensão dos canais, uma convolução 3x3 que opera na dimensão reduzida, e outra convolução 1x1 que restaura a dimensão original dos canais. Este design reduz o número de parâmetros e operações de ponto flotante (FLOPs) em comparação com o uso direto de duas convoluciones 3x3, enquanto preserva a capacidade de aprender características complexas.
Arquitectura
Um bloco de gargalo consiste em três camadas convolucionais. A primeira camada é uma convolução 1x1 que reduz o número de canais por um fator (tipicamente 4). Por exemplo, se a entrada tem 256 canais, a primeira convolução 1x1 o reduz a 64 canais. A segunda camada é uma convolução 3x3 que opera nesses 64 canais, realizando extração espacial de características. A terceira camada é outra convolução 1x1 que aumenta a contagem de canais de volta a 256. A entrada do bloco é adicionada à saída através de uma conexión residual, que é um mapeo de identidade que contorna as camadas convolucionais.
La conexión residual é definida como \(y = F(x) + x\), onde \(F(x)\) é a saída da pilha de três camadas. Esta adición é possível porque a entrada e a saída têm as mesmas dimensões. Se as dimensões de entrada e saída diferem (por exemplo, quando o bloco cambia o número de canais), uma conexión de proyección é usada: \(y = F(x) + P(x)\), onde \(P(x)\) é tipicamente uma convolução 1x1 com um passo de 2 para igualar as dimensões espaciais.
O bloco de gargalo é usado em ResNet-50, ResNet-101 e ResNet-152, que são variantes mais profundas do ResNet-34 original. Nestas redes, o bloco de gargalo substituye os blocos residuais de duas camadas usados em versões menos profundas. A redução em computação permite que a rede tenha mais camadas sem um aumento proporcional no tempo de treinamento ou uso de memória.
Motivação
A motivação principal para o bloco de gargalo é a eficiencia computacional. Em um bloco residual padrão com duas convoluciones 3x3, o número de parâmetros para uma contagem de canais de entrada \(C\) é \(2 \times 9 \times C^2 = 18C^2\). Em um bloco de gargalo, a contagem de parâmetros é \(1 \times 1 \times C \times (C/4) + 3 \times 3 \times (C/4) \times (C/4) + 1 \times 1 \times (C/4) \times C = C^2/4 + 9C^2/16 + C^2/4 = (8/16 + 9/16)C^2 = 17C^2/16\), que é aproximadamente 1.06C^2, ou cerca de 6% dos parâmetros do bloco padrão. Esta redução é significativa para contagens de canales grandes.
O design de gargalo também ajuda com a estabilidad do treinamento. Ao reduzir o número de parâmetros, o bloco reduz o risco de sobreajuste e permite redes más profundas. A conexión residual, que é um componente clave do bloco, ajuda a mitigar o problema de gradiente desvanecido, permitendo o treinamento efetivo de redes com centenas de camadas.
Relação com Redes Residuais
O bloco de gargalo é uma implementação específica do conceito de bloco residual. A conexión residual foi introducida no artigo original de ResNet, que mostrou que adicionar mapeos de identidade às camadas de uma rede permite o treinamento de redes muito profundas. O bloco de gargalo é uma optimización desta ideia, fazendo prático treinar redes com 50, 101 ou 152 camadas.
Em uma rede residual, as camadas aprenden funções residuais com referência às entradas das camadas. O bloco de gargalo segue este princípio: as três camadas convolucionais aprenden um residual \(F(x)\), e a saída é \(F(x) + x\). Isto permite que a rede aprenda mapeos de identidade se necessário, o que é benéfico para a optimización.
O sucesso do bloco de gargalo em ResNet influenciou muitas arquitecturas subsequentes. Por exemplo, U-Net usa conexiones residuais em sua estrutura de codificador-decodificador, e modelos Transformer usan conexiones residuais em suas camadas de atenção e feed-forward. O conceito de gargalo também foi adaptado em outros domínios, como modelos de linguagem grandes e modelos de IA generativa.
Eficiencia Computacional
A eficiencia computacional do bloco de gargalo é medida em termos de FLOPs (operaciones de ponto flotante). Para um tensor de entrada de tamanho \(H \times W \times C\), um bloco residual padrão com duas convoluciones 3x3 requer aproximadamente \(2 \times 9 \times C^2 \times H \times W\) FLOPs. Um bloco de gargalo com um fator de redução de 4 requer aproximadamente \(1 \times 1 \times C \times (C/4) \times H \times W + 3 \times 3 \times (C/4) \times (C/4) \times H \times W + 1 \times 1 \times (C/4) \times C \times H \times W = (C^2/4 + 9C^2/16 + C^2/4) \times H \times W = (17C^2/16) \times H \times W\). Isto é cerca de 6% dos FLOPs do bloco padrão.
Esta redução é particularmente importante para treinar em hardware com memória ou computação limitada, como instâncias de AWS ou TPUs de Google Cloud. Também permite inferencia más rápida, o que é crítico para aplicações em tempo real como os carros autónomos de Waymo ou Tesla Autopilot.
Variantes e Melhoras
Várias variantes do bloco de gargalo foram propostas. Uma variante comum é o gargalo de pré-activación, onde a normalización por lotes e as funções de activación são aplicadas antes das convoluciones em lugar de depois. Isto foi mostrado para melhorar o treinamento e a regularización em trabalhos posteriores.
Outra variante é o gargalo invertido, usado em modelos como MobileNetV2. Neste design, a convolução 1x1 expande a dimensão dos canales primeiro, depois uma convolução 3x3 de profundidade opera na dimensão expandida, e outra convolução 1x1 o reduz de volta. Isto é oposto ao gargalo padrão, mas é más eficiente para dispositivos móviles e embebidos.
Em normalización por lotes e normalización de capas, o bloco de gargalo frequentemente incluye capas de normalización entre convoluciones. A conexión residual ajuda a estabilizar a varianza das entradas das capas, e alguns trabalhos sugeren escalar a conexión residual por \(1/L\), onde \(L\) é o número total de capas residuais, para estabilizar ainda más o treinamento.
Aplicações
O bloco de gargalo é usado em muitos modelos de última generación. Em visão por computador, é o bloco de construção central de ResNet, que é amplamente usado para classificação de imágenes, detección de objetos e segmentación. Por exemplo, Intuitive Surgical usa aprendizado profundo para análise de imágenes médicas, e Fermata usa visão por computador para agricultura.
Em processamento de linguagem natural, conexiones residuais são usadas em modelos Transformer, que são a fundação de modelos de linguagem grandes como GPT de OpenAI e Claude de Anthropic. Embora estes modelos não usen convoluciones 1x1, o conceito de conexión residual é emprestado de ResNet.
Em aprendizado por reforzo, a arquitectura ResNet com blocos de gargalo foi usada em sistemas como AlphaGo Zero e AlphaStar de DeepMind, que usan redes residuais para processar estados de tablero ou pantallas de juego.
Impacto no Aprendizado Profundo
O bloco de gargalo teve um impacto significativo no campo do aprendizado profundo. Ao permitir o treinamento de redes muito profundas, contribuiu ao progresso rápido em reconhecimento de imágenes e outras tarefas. A ideia de usar convoluciones 1x1 para reduzir computação foi adotada em muitas arquitecturas subsequentes, incluindo U-Net e vários modelos generativos.
A conexión residual, que é um componente clave do bloco de gargalo, se tornou um motivo padrão no design de redes neurais. É usada em modelos Transformer, modelos de linguagem grandes e muitas outras arquitecturas. O bloco de gargalo é um exemplo primordial de como inovações arquitectónicas podem levar a melhoras significativas em desempeño e eficiencia.