A camada convolucional é o principal componente de uma CNN e onde ocorre a maior parte dos cálculos. Ela precisa de alguns componentes: os dados de input, um filtro e um mapa de funcionalidades. Suponha que o input seja uma imagem colorida, composta por uma matriz tridimensional de pixels. Isso significa que o input terá três dimensões: altura, largura e profundidade, que correspondem aos canais RGB em uma imagem. Também há um detector de funcionalidades, conhecido como kernel ou filtro, que percorre os campos receptivos da imagem para verificar a presença da funcionalidade. Esse processo é chamado de convolução.
O detector de funcionalidades é uma matriz bidimensional de pesos, que representa uma parte da imagem. Embora o tamanho possa variar, o filtro geralmente é uma matriz 3x3, o que também define o tamanho do campo receptivo. O filtro é aplicado a uma região da imagem, e o produto escalar entre os pixels de input e o filtro é calculado. Esse produto escalar é então inserido em uma matriz de saída. Em seguida, o filtro se desloca conforme o valor do deslocamento, repetindo o processo até percorrer toda a imagem. O resultado final da sequência de produtos escalares entre o input e o filtro é chamado de mapa de funcionalidades, mapa de ativação ou funcionalidade convoluída.
Os pesos do detector de funcionalidades permanecem fixos ao longo do deslocamento na imagem, processo conhecido como compartilhamento de parâmetros. Alguns parâmetros, como os valores dos pesos, são ajustados durante o treinamento por meio da retropropagação e do gradiente descendente. No entanto, três hiperparâmetros afetam o tamanho do volume de saída e precisam ser definidos antes do início do treinamento da rede neural. Esses hiperparâmetros incluem:
1. O número de filtros afeta a profundidade da produção. Por exemplo, três filtros distintos resultariam em três mapas de recursos diferentes, criando uma profundidade de três.
2. Stride é a distância, ou número de pixels, que o kernel se move sobre a matriz de input. Embora valores de stride de dois ou mais sejam raros, um stride maior tem uma produção menor.
3. Zero-padding é geralmente usado quando os filtros não se encaixam na imagem de input. Isso define todos os elementos que ficam fora da matriz de input como zero, produzindo uma produção de tamanho maior ou igual. Existem três tipos de padding:
- Padding válido: também conhecido como no padding. Neste caso, a última convolução é descartada se as dimensões não se alinharem.
- Padding igual: este padding garante que a camada de produção tenha o mesmo tamanho que a camada de input.
- Padding completo: Este tipo de padding aumenta o tamanho da produção adicionando zeros à borda do input.
Após cada operação de convolução, uma CNN aplica uma transformação de Unidade Linear Retificada (ReLU) no mapa de feição, introduzindo não linearidade no modelo.