Noções básicas de rede neural convolucional: o que você precisa saber
Publicados: 2024-09-10Redes neurais convolucionais (CNNs) são ferramentas fundamentais em análise de dados e aprendizado de máquina (ML). Este guia explica como funcionam as CNNs, como elas diferem de outras redes neurais, suas aplicações e as vantagens e desvantagens associadas ao seu uso.
Índice
- O que é uma CNN?
- Como funcionam as CNNs
- CNNs vs. RNNs e transformadores
- Aplicações de CNNs
- Vantagens
- Desvantagens
O que é uma rede neural convolucional?
Uma rede neural convolucional (CNN) é uma rede neural integral ao aprendizado profundo, projetada para processar e analisar dados espaciais. Ele emprega camadas convolucionais com filtros para detectar e aprender automaticamente recursos importantes na entrada, tornando-o particularmente eficaz para tarefas como reconhecimento de imagem e vídeo.
Vamos descompactar um pouco essa definição. Dados espaciais são dados em que as partes se relacionam entre si por meio de sua posição. As imagens são o melhor exemplo disso.
Em cada imagem acima, cada pixel branco está conectado a cada pixel branco circundante: eles formam o dígito. A localização dos pixels também informa ao visualizador onde o dígito está localizado na imagem.
Recursos são atributos presentes na imagem. Esses atributos podem ser qualquer coisa, desde uma borda levemente inclinada até a presença de um nariz ou olho, até uma composição de olhos, bocas e narizes. Crucialmente, as características podem ser compostas por características mais simples (por exemplo, um olho é composto por algumas bordas curvas e uma mancha escura central).
Os filtros são a parte do modelo que detecta esses recursos na imagem. Cada filtro procura uma característica específica (por exemplo, uma borda curvada da esquerda para a direita) em toda a imagem.
Finalmente, o “convolucional” na rede neural convolucional refere-se a como um filtro é aplicado a uma imagem. Explicaremos isso na próxima seção.
As CNNs têm mostrado forte desempenho em diversas tarefas de imagem, como detecção de objetos e segmentação de imagens. Um modelo da CNN (AlexNet) desempenhou um papel significativo na ascensão do aprendizado profundo em 2012.
Como funcionam as CNNs
Vamos explorar a arquitetura geral de uma CNN usando o exemplo de determinação de qual número (0–9) está em uma imagem.
Antes de alimentar a imagem no modelo, a imagem deve ser transformada em uma representação numérica (ou codificação). Para imagens em preto e branco, cada pixel recebe um número: 255 se for totalmente branco e 0 se for totalmente preto (às vezes normalizado para 1 e 0). Para imagens coloridas, cada pixel recebe três números: um para a quantidade de vermelho, verde e azul que ele contém, conhecido como valor RGB. Portanto, uma imagem de 256×256 pixels (com 65.536 pixels) teria 65.536 valores em sua codificação em preto e branco e 196.608 valores em sua codificação de cores.
O modelo então processa a imagem através de três tipos de camadas:
1 Camada convolucional:Esta camada aplica filtros à sua entrada. Cada filtro é uma grade de números de tamanho definido (por exemplo, 3×3). Esta grade é sobreposta na imagem começando no canto superior esquerdo; os valores de pixel das linhas 1–3 nas colunas 1–3 serão usados. Esses valores de pixel são multiplicados pelos valores no filtro e depois somados. Essa soma é então colocada na grade de saída do filtro na linha 1, coluna 1. Em seguida, o filtro desliza um pixel para a direita e repete o processo até cobrir todas as linhas e colunas da imagem. Ao deslizar um pixel por vez, o filtro pode encontrar características em qualquer lugar da imagem, uma propriedade conhecida como invariância translacional. Cada filtro cria sua própria grade de saída, que é então enviada para a próxima camada.
2 Camada de pooling: esta camada resume as informações de recursos da camada de convolução. A camada convolucional retorna uma saída maior que sua entrada (cada filtro retorna um mapa de características aproximadamente do mesmo tamanho que a entrada e há vários filtros). A camada de pooling pega cada mapa de feições e aplica outra grade a ele. Esta grade pega a média ou o máximo dos valores contidos nela e gera isso. No entanto, esta grelha não move um pixel de cada vez; ele irá pular para o próximo patch de pixels. Por exemplo, uma grade de agrupamento 3×3 funcionará primeiro nos pixels nas linhas 1–3 e nas colunas 1–3. Então, ele permanecerá na mesma linha, mas passará para as colunas 4–6. Depois de cobrir todas as colunas no primeiro conjunto de linhas (1–3), ele descerá para as linhas 4–6 e abordará essas colunas. Isso reduz efetivamente o número de linhas e colunas na saída. A camada de pooling ajuda a reduzir a complexidade, torna o modelo mais robusto a ruídos e pequenas alterações e ajuda o modelo a focar nos recursos mais significativos.
3 Camada totalmente conectada: Após várias rodadas de camadas convolucionais e de pooling, os mapas de recursos finais são passados para uma camada de rede neural totalmente conectada, que retorna a saída que nos interessa (por exemplo, a probabilidade de a imagem ser um número específico). Os mapas de características devem ser nivelados (cada linha de um mapa de características é concatenada em uma linha longa) e depois combinados (cada linha longa do mapa de características é concatenada em uma mega linha).
Aqui está uma representação visual da arquitetura CNN, ilustrando como cada camada processa a imagem de entrada e contribui para o resultado final:
Algumas notas adicionais sobre o processo:
- Cada camada convolucional sucessiva encontra recursos de nível superior. A primeira camada convolucional detecta bordas, manchas ou padrões simples. A próxima camada convolucional toma a saída agrupada da primeira camada convolucional como entrada, permitindo detectar composições de recursos de nível inferior que formam recursos de nível superior, como nariz ou olho.
- O modelo requer treinamento. Durante o treinamento, uma imagem passa por todas as camadas (inicialmente com pesos aleatórios) e a saída é gerada. A diferença entre o resultado e a resposta real é usada para ajustar ligeiramente os pesos, aumentando a probabilidade de o modelo responder corretamente no futuro. Isso é feito por gradiente descendente, onde o algoritmo de treinamento calcula quanto cada peso do modelo contribui para a resposta final (usando derivadas parciais) e o move ligeiramente na direção da resposta correta. A camada de pooling não possui pesos, portanto não é afetada pelo processo de treinamento.
- As CNNs podem funcionar apenas em imagens do mesmo tamanho daquelas para as quais foram treinadas. Se um modelo foi treinado em imagens com 256×256 pixels, então qualquer imagem maior precisará ser reduzida e qualquer imagem menor precisará ser aumentada.
CNNs vs. RNNs e transformadores
Redes neurais convolucionais são frequentemente mencionadas junto com redes neurais recorrentes (RNNs) e transformadores. Então, como eles diferem?
CNNs x RNNs
RNNs e CNNs operam em domínios diferentes. As RNNs são mais adequadas para dados sequenciais, como texto, enquanto as CNNs se destacam com dados espaciais, como imagens. RNNs possuem um módulo de memória que rastreia partes de uma entrada vistas anteriormente para contextualizar a próxima parte. Em contraste, as CNNs contextualizam partes da informação observando os seus vizinhos imediatos. Como as CNNs não possuem um módulo de memória, elas não são adequadas para tarefas de texto: elas esqueceriam a primeira palavra de uma frase quando chegassem à última palavra.
CNNs vs. transformadores
Os transformadores também são muito usados para tarefas sequenciais. Eles podem usar qualquer parte da entrada para contextualizar novas entradas, tornando-as populares para tarefas de processamento de linguagem natural (PNL). No entanto, recentemente, os transformadores também foram aplicados a imagens, na forma de transformadores de visão. Esses modelos captam uma imagem, dividem-na em patches, direcionam a atenção (o mecanismo central nas arquiteturas de transformadores) sobre os patches e, em seguida, classificam a imagem. Os transformadores de visão podem superar as CNNs em grandes conjuntos de dados, mas carecem da invariância translacional inerente às CNNs. A invariância translacional nas CNNs permite que o modelo reconheça objetos independentemente de sua posição na imagem, tornando as CNNs altamente eficazes para tarefas onde a relação espacial das características é importante.
Aplicações de CNNs
CNNs são frequentemente usadas com imagens devido à sua invariância translacional e características espaciais. Mas, com um processamento inteligente, as CNNs podem funcionar em outros domínios (muitas vezes convertendo-as primeiro em imagens).
Classificação de imagens
A classificação de imagens é o principal uso das CNNs. CNNs grandes e bem treinadas podem reconhecer milhões de objetos diferentes e trabalhar em quase todas as imagens que recebem. Apesar do surgimento dos transformadores, a eficiência computacional das CNNs os torna uma opção viável.
Reconhecimento de fala
O áudio gravado pode ser transformado em dados espaciais por meio de espectrogramas, que são representações visuais do áudio. Uma CNN pode usar um espectrograma como entrada e aprender a mapear diferentes formas de onda para palavras diferentes. Da mesma forma, uma CNN pode reconhecer batidas e samples musicais.
Segmentação de imagens
A segmentação de imagens envolve identificar e traçar limites em torno de diferentes objetos em uma imagem. As CNNs são populares para esta tarefa devido ao seu forte desempenho no reconhecimento de vários objetos. Depois que uma imagem é segmentada, podemos entender melhor seu conteúdo. Por exemplo, outro modelo de aprendizagem profunda poderia analisar os segmentos e descrever esta cena: “Duas pessoas estão caminhando em um parque. Há um poste à direita e um carro na frente deles.” Na área médica, a segmentação de imagens pode diferenciar tumores de células normais em exames. Para veículos autônomos, ele pode identificar marcações de faixas, sinais de trânsito e outros veículos.
Vantagens das CNNs
As CNNs são amplamente utilizadas na indústria por vários motivos.
Forte desempenho de imagem
Com a abundância de dados de imagens disponíveis, são necessários modelos que tenham bom desempenho em vários tipos de imagens. As CNNs são adequadas para esse propósito. Sua invariância translacional e capacidade de criar recursos maiores a partir de recursos menores permitem detectar recursos em uma imagem. Não são necessárias arquiteturas diferentes para diferentes tipos de imagens, pois uma CNN básica pode ser aplicada a todos os tipos de dados de imagem.
Sem engenharia manual de recursos
Antes das CNNs, os modelos de imagem de melhor desempenho exigiam um esforço manual significativo. Os especialistas do domínio tiveram que criar módulos para detectar tipos específicos de recursos (por exemplo, filtros para bordas), um processo demorado e sem flexibilidade para diversas imagens. Cada conjunto de imagens precisava de seu próprio conjunto de recursos. Em contraste, a primeira CNN famosa (AlexNet) poderia categorizar 20.000 tipos de imagens automaticamente, reduzindo a necessidade de engenharia manual de recursos.
Desvantagens das CNNs
É claro que existem desvantagens no uso de CNNs.
Muitos hiperparâmetros
Treinar uma CNN envolve a seleção de muitos hiperparâmetros. Como qualquer rede neural, existem hiperparâmetros como número de camadas, tamanho do lote e taxa de aprendizado. Além disso, cada filtro requer seu próprio conjunto de hiperparâmetros: tamanho do filtro (por exemplo, 3×3, 5×5) e passo (o número de pixels a serem movidos após cada etapa). Os hiperparâmetros não podem ser ajustados facilmente durante o processo de treinamento. Em vez disso, você precisa treinar vários modelos com diferentes conjuntos de hiperparâmetros (por exemplo, conjunto A e conjunto B) e comparar seu desempenho para determinar as melhores escolhas.
Sensibilidade ao tamanho da entrada
Cada CNN é treinada para aceitar uma imagem de um determinado tamanho (por exemplo, 256×256 pixels). Muitas imagens que você deseja processar podem não corresponder a esse tamanho. Para resolver isso, você pode aumentar ou diminuir suas imagens. No entanto, esse redimensionamento pode resultar na perda de informações valiosas e degradar o desempenho do modelo.