11. Convolutional
Introdução às Redes Neurais Convolucionais (CNNs)
Redes Neurais Convolucionais (CNNs) são uma classe de redes neurais profundas comumente usadas para reconhecimento de imagens, análise de vídeo e outras tarefas envolvendo dados em grade (ex: pixels em imagens). Ao contrário de redes totalmente conectadas, as CNNs exploram hierarquias espaciais por meio de convoluções, que aplicam filtros (kernels) aprendíveis a regiões locais da entrada. Isso reduz parâmetros, permite invariância à translação e captura features como bordas, texturas ou objetos.
Uma arquitetura típica de CNN inclui:
- Camadas convolucionais: Extraem features via convolução.
- Funções de ativação (ex: ReLU): Introduzem não-linearidade.
- Camadas de pooling (ex: max pooling): Reduzem dimensões espaciais e a carga computacional.
- Camadas totalmente conectadas: Para classificação ou regressão final.
- Camada de saída: Frequentemente softmax para classificação.
O treinamento envolve a passagem direta (computando previsões) e a passagem reversa (retropropagação para atualizar pesos via gradientes). A seguir, focamos na matemática para a camada convolucional, que é o núcleo das CNNs. Assumimos convolução 2D para imagens (formato de entrada: batch_size × canais × altura × largura).
Passagem Direta em uma Camada Convolucional
A passagem direta computa o mapa de features de saída deslizando um kernel sobre a entrada.
Notações Principais:
- Entrada: \( X \in \mathbb{R}^{B \times C_{in} \times H_{in} \times W_{in}} \) (tamanho do batch \( B \), canais de entrada \( C_{in} \), altura \( H_{in} \), largura \( W_{in} \)).
- Kernel (pesos): \( W \in \mathbb{R}^{C_{out} \times C_{in} \times K_h \times K_w} \) (canais de saída \( C_{out} \), altura do kernel \( K_h \), largura \( K_w \)).
- Bias: \( b \in \mathbb{R}^{C_{out}} \) (um por canal de saída).
- Stride: \( s \) (tamanho do passo para deslizar o kernel).
- Padding: \( p \) (zeros adicionados às bordas para controlar o tamanho da saída).
- Saída: \( Y \in \mathbb{R}^{B \times C_{out} \times H_{out} \times W_{out}} \), onde \( H_{out} = \lfloor \frac{H_{in} + 2p - K_h}{s} \rfloor + 1 \).
Operação de Convolução:
Para cada posição \( (i, j) \) no mapa de features de saída, para o item de batch \( b \) e canal de saída \( c_{out} \):
Este é essencialmente um produto escalar entre o kernel e um patch local da entrada, somado sobre os canais de entrada, mais o bias.
Após a convolução, aplica-se ativação: \( Y' = f(Y) \), ex: ReLU: \( f(x) = \max(0, x) \).
O pooling (ex: max pooling) sobre uma janela (tamanho \( k \), stride \( s \)) retém o valor máximo em cada patch, reduzindo dimensões.
Passagem Reversa em uma Camada Convolucional
A passagem reversa computa gradientes para pesos, biases e entradas usando a regra da cadeia, para minimizar a perda \( L \) via gradiente descendente.
Gradiente do Bias:
Soma simples sobre dimensões espaciais e batch:
Gradiente dos Pesos:
Correlaciona a entrada com o gradiente de saída:
Gradiente da Entrada:
Convolução "completa" do kernel rotacionado com o gradiente de saída (para propagar o erro de volta):
Para pooling, a passagem reversa realiza upsampling do gradiente (ex: para max pooling, coloca o gradiente apenas na posição máxima).
Adicional
Quando uma Rede Neural é Considerada "Profunda"?
O termo "profundo" no contexto de redes neurais refere-se à profundidade da arquitetura, especificamente o número de camadas (particularmente camadas ocultas) que permitem à rede aprender representações hierárquicas e abstratas dos dados. Não há um limiar mínimo universalmente acordado que divida estritamente redes "rasas" de "profundas", pois pode depender do contexto, da tarefa e do uso histórico na pesquisa. No entanto, com base em definições estabelecidas e consenso de especialistas em aprendizado de máquina, uma rede neural é geralmente considerada profunda se tiver pelo menos duas camadas ocultas (além das camadas de entrada e saída).
-
Redes Rasas vs. Profundas
- Uma rede neural rasa tipicamente tem 0 ou 1 camada oculta. São suficientes para tarefas simples, mas têm dificuldades com padrões de dados complexos e hierárquicos.
- Redes profundas, por contraste, empilham múltiplas camadas ocultas para capturar features progressivamente mais abstratas (ex: bordas nas camadas iniciais para reconhecimento de imagem, evoluindo para objetos nas camadas mais profundas).
-
Base Histórica e Teórica
- Modelos iniciais de aprendizado profundo, como os do grupo de Geoffrey Hinton nos anos 2000, apresentavam três camadas ocultas.
- O teorema da aproximação universal mostra que mesmo uma única camada oculta pode teoricamente aproximar qualquer função, mas na prática, redes mais profundas são mais eficientes para tarefas complexas.
-
Limiares Comuns
- A maioria dos pesquisadores e livros didáticos concorda em pelo menos 2 camadas ocultas como mínimo para "profundo".
- Na prática, redes profundas modernas (ex: CNNs ou transformers) têm dezenas ou centenas de camadas.
Interativo: Visualizador de Filtro Convolucional
Selecione um filtro e veja-o deslizar sobre uma imagem sintética, produzindo o mapa de features.