Uma rede neural convolucional, ou CNN, é uma rede neural que procura pequenos padrões locais e depois os combina em padrões maiores. Em imagens, as camadas iniciais costumam detectar bordas ou cantos, as camadas intermediárias detectam texturas ou partes, e as camadas mais profundas usam esses sinais para sustentar uma predição final.
A ideia principal é o compartilhamento de pesos. Em vez de aprender um peso separado para cada par pixel-posição, uma CNN reutiliza o mesmo pequeno filtro em muitas posições. Isso a torna muito mais barata do que uma camada densa sobre a imagem bruta e ajuda a detectar o mesmo tipo de padrão em mais de um lugar.
O que uma rede neural convolucional faz
Em uma camada totalmente conectada, cada saída pode depender de todos os valores de entrada ao mesmo tempo. Uma CNN é mais estruturada. Ela usa pequenos kernels, frequentemente chamados de filtros, que observam um patch local por vez.
Para uma entrada de canal único e um kernel , uma entrada da saída pode ser escrita como
Essa é a ideia de soma ponderada local por trás de uma camada convolucional. Em muitas bibliotecas de machine learning, a operação implementada é tecnicamente correlação cruzada, e não uma convolução matemática invertida, mas a intuição prática é a mesma: o kernel percorre a entrada e produz um mapa de características.
O mapa de características mostra onde o padrão aprendido aparece com força.
Por que filtros compartilhados ajudam
Se a mesma borda vertical aparece perto do canto superior esquerdo de uma imagem ou perto do centro, normalmente queremos que o modelo a perceba de qualquer forma. Uma CNN permite isso ao reutilizar os mesmos parâmetros do filtro em diferentes posições.
Isso tem dois efeitos práticos:
- Reduz o número de parâmetros aprendidos em comparação com uma camada densa sobre a imagem bruta.
- Incentiva a rede a detectar padrões locais recorrentes em vez de memorizar uma única posição fixa.
Essa reutilização é uma das razões pelas quais CNNs se tornaram eficazes em tarefas com imagens.
Como é uma arquitetura básica de CNN
Uma CNN básica costuma seguir este padrão:
- camada convolucional
- ativação como ReLU
- pooling ou downsampling opcional
- mais blocos convolucionais
- camada final de predição
As camadas iniciais geralmente capturam estruturas locais simples. As camadas mais profundas combinam essas respostas em características maiores e mais específicas para a tarefa.
Pooling não é obrigatório, mas, quando é usado, reduz as dimensões espaciais para que as camadas posteriores possam trabalhar com uma representação mais compacta. Um exemplo comum é o max pooling, que mantém o maior valor em cada pequena região.
Se o stride é e o padding é , então uma entrada com um kernel produz uma saída . Essa regra de tamanho é útil para verificar se um exemplo resolvido faz sentido.
Exemplo resolvido: como um mapa de características de CNN é criado
Considere esta imagem de entrada :
Use este kernel :
Assuma stride e sem padding. Como a entrada é e o kernel é , a saída deve ser . Cada entrada da saída é a soma de um patch , porque cada entrada do kernel é igual a .
O valor de saída no canto superior esquerdo é
O patch um passo à direita é
então
Calculando todas as posições válidas, obtemos
Essa saída é o mapa de características. Valores altos mostram onde o kernel encontrou uma correspondência forte. Aqui, o filtro responde com mais força onde aparece um bloco claro completo de .
Se você agora aplicar ReLU, nada muda porque todas as entradas já são não negativas. Se depois usar max pooling com stride , a saída após pooling se torna
Isso não cria informação nova. Apenas mantém as respostas mais fortes próximas e reduz a grade espacial.
Este exemplo é simples, mas mostra claramente o mecanismo central: um filtro desliza, calcula somas ponderadas locais e cria um mapa de onde um padrão aparece.
O que uma CNN aprende durante o treinamento
O kernel acima foi escolhido manualmente, mas em uma CNN real os valores do filtro são aprendidos a partir dos dados. O treinamento ajusta esses valores para que os mapas de características resultantes se tornem úteis para a tarefa.
Se a tarefa for classificação de imagens, a rede aprende filtros que ajudam a separar classes. Se a tarefa for segmentação ou detecção, as camadas posteriores são treinadas para essas saídas. O mecanismo básico é o mesmo: forward pass, loss, backpropagation, atualização de parâmetros.
Erros comuns ao aprender CNNs
Pensar que CNN significa apenas "classificador de imagens"
Imagens são o exemplo padrão, mas CNNs na verdade tratam de estrutura local e filtros compartilhados. Se valores próximos importam, a mesma ideia pode ser útil além de imagens.
Supor que pooling é sempre obrigatório
É comum, não universal. Algumas arquiteturas reduzem o tamanho espacial com convoluções com stride, e algumas mantêm mais detalhe espacial por mais tempo.
Ignorar stride e padding
O tamanho do mapa de características depende dessas escolhas. Se você muda stride ou padding, muda não só o formato da saída, mas também quais vizinhanças locais cada unidade consegue ver.
Tratar a camada apenas como uma fórmula
A fórmula da convolução importa, mas a arquitetura também importa. Uma CNN funciona porque convolução, ativação, empilhamento e treinamento trabalham juntos.
Quando redes neurais convolucionais são úteis
CNNs são amplamente usadas em tarefas de visão computacional, como classificação de imagens, detecção de objetos e segmentação. Elas também aparecem em alguns contextos de processamento de sinais e sequências em que padrões locais são significativos.
Elas são especialmente úteis quando a entrada tem uma estrutura clara de grade ou de vizinhança ordenada. Se essa condição for fraca, outra arquitetura pode ser mais adequada.
Um modelo mental que facilita entender CNNs
Pense em uma CNN como um detector de padrões que começa pequeno e se torna mais abstrato com a profundidade. Uma camada pergunta: "Esse pequeno padrão aparece aqui?" Camadas posteriores perguntam: "Esses padrões mais simples se combinam em algo mais significativo?"
É por isso que CNNs ficam mais fáceis de entender quando você foca em mapas de características, e não apenas na palavra "convolução".
Tente sua própria versão
Mantenha a mesma entrada, mas mude o kernel para
Recalcule o mapa de características e veja quais regiões agora produzem respostas positivas ou negativas grandes. Essa pequena mudança deixa muito mais claro como filtros diferentes detectam padrões diferentes.
Precisa de ajuda com um problema?
Envie sua pergunta e receba uma solução verificada, passo a passo, em segundos.
Abrir GPAI Solver →