---
presentation
theme: beige.css
slideNumber: true
width: 1024
height: 768
---
## Aprendizado de Máquina
#### Redes convolucionais
#### Prof. Ronaldo Cristiano Prati
[ronaldo.prati@ufabc.edu.br](mailto:ronaldo.prati@ufabc.edu.br)
Bloco A, sala 513-2
### Rede neural densamente conectada
- Em aulas passadas, nós vimos a rede MLP, que é uma rede densamente conectada
### Representação de imagem
![](image.png)
### Rede neural densamente conectada
- Em muitos problemas, como imagens ou séries temporais, o tamanho da entrada é enorme:
- Um celular com uma resolução de 12MP tem 36M de elementos
- Uma rede neural com uma única camada de 100 neurônios teria 3.6 bilhões de parâmetros
### Rede neural densamente conectada
- Quantidade grande de parâmetros
- risco de overfitting
- Inadequadas a imagens de alta resolução
- requer muitas imagens
- Tempo para computar as ativações/pré-ativações.
### Rede neural densamente conectada
- Ignoram a estrutura espacial existente em imagens
- Se as imagens são linearizadas os pixels próximos e os localizados em regiões distantes tratados indistintamente.
- A própria rede teria que detectar as dependências existentes na estrutura espacial da distribuição próximas às imagens de entrada.
### Instabilidade do Gradiente
- Uma rede desse tamanho poder ter problemas para convergir
- "Desaparecimento do gradiente": gradiente fica muito pequeno (muito próximo de zero) - muito tempo e muitos dados para treinar
- "Explosão do gradiente": gradiente muito grande que não converge
### Função de ativação
- Usar outras funções pode ajudar a evitar evitar o desaparecimento do gradiente
- A função de ativação RELU (rectified linear unit) evita o desaparecimento do gradiente
- Entretanto, pode "matar" a entrada (maioria das saídas é igual a zero)
### Função Gradiente
![](activation.png)
### Redes Convolucionais (CNN)
- Uma CNN é adaptada para explorar a correlação espacial existente em imagens
- Inspirada no funcionamento do cérebro (córtex visual).
![](relu1.png)
### Conceitos e Operações
- Conceitos:
- campos receptivos locais (local receptive fields)
- mapas de características (feature maps, activation maps)
- compartilhamento de pesos (shared weights).
- Operações
- convolução (convolution)
- subamostragem (subsampling, pooling)
- zero-padding
### Campos receptivos locais
- Neurônios em uma CONV utilizam conectividade local (em vez de conectividade global)
- cada neurônio está conectado a uma região contígua de unidades da camada anterior.
- Essa região é o campo receptivo local dessa unidade.
### Campos receptivos locais
- Por meio de seu campo receptivo, cada neurônio pode detectar **características visuais elementares**
- (e.g., arestas orientadas, extremidades, cantos)
- ... que podem então ser combinadas por camadas subsequentes para detectar **características visuais mais complexas**
- (e.g., olhos, bicos, rodas, etc.)
![](features.png)
### Operação de convolução
- O tipo de camada principal em uma CNN é a camada de convolução (convolution layer, CONV).
- Cada neurônio em uma CONV aplica um operador de convolução (filter, kernel) sobre seu campo receptivo.
- Um operador de convolução é uma matriz!
- Objetivo: extrair características(features) da imagem de forma automática durante o treinamento.
### Operação de convolução
![](convolution.gif)
### Operação de convolução
- *Analogia:* a convolução corresponde a mover uma lanterna da direita para a esquerda, e de cima para baixo, até chegar ao canto inferior direito da imagem de entrada.
- A cada região iluminada, o filtro da convolução é aplicado na tentativa de detectar alguma característica visual.
### Operação de convolução
- No contexto de uma CNN, a aplicação de uma convolução corresponde a computar o produto escalar (dot product) entre a entrada e o filtro.
- A definição geral é mais complexa...
- Resultado: outra matriz!
- mapa de ativação (activation map) ou mapa de características (feature map)
### Operação de convolução
![](filter-0.png)
### Operação de convolução
![](filter-1.png)
### Operação de convolução
![](filter-2.png)
### Operação de convolução
![](filter-3.png)
### Operação de convolução
![](filter-4.png)
### CONVs
- Uma CONV é um arranjo tridimensional (tensor) de neurônios: altura, largura, profundidade.
![](tensor.jpeg)
### CONVs
- Os neurônios em uma CONV aplica um filtro (operação de convolução) ao
seu campo receptivo
- Neurônios de uma mesma camada de profundidade aplicam o mesmo filtro.
- O objetivo de cada filtro é ativar quando detecta um tipo particular de característica na entrada.
### CONVs
- Durante a propagação adiante (forward pass), cada filtro é aplicado (convolved) através do volume de entrada.
### CONVs
- O volume de saída de uma CONV é uma sequência de mapas de ativação
- A sequência de mapas de ativação de um volume forma a dimensão de profundidade (depth) desse volume.
### CONVs
- Neurônios de uma mesma coluna de profundidade estão conectados à mesma região da entrada.
- Idealmente cada fatia irá aprender um tipo de filtro diferente durante o treinamento da CNN.
### CONVs
- Cada entrada em um volume de saída é resultante da computação de um neurônio que analisa uma pequena região na entrada e
- compartilha parâmetros com neurônios no mesmo mapa de ativação.
### CONVs
![](volume.png)
### CONVs
- As convoluções utilizam de maneira diferente os elementos que estão nos cantos, bordas e no meio da imagem
- Os elementos dos cantos e bordas podem ser "subutilizados"
### CONVs
![](padding.gif)
### Zero padding
- Corresponde a adicionar simetricamente zeros a cada fatia (depth slice) do volume de entrada.
- Aumenta as dimensões da entrada.
### Zero padding
Uma imagem com 32x32 pixels é preenchida com zeros para aplicar uma máscara de 3x3
![](zp.png)
### Stride
- O passo (stride, S) é um hiperparâmetro que controla de que forma o filtro é “deslizado” pelo volume de entrada durante a convolução
### Stride
![](stride.gif)
### Camada de pooling
- Por vezes encontrada entre duas camadas CONVs sucessivas para reduzir a complexidade do modelo (mitigar overfitting).
- **Objetivo:** reduzir dimensões espaciais (largura x altura) do volume de entrada para a próxima CONV.
- Aplicada a cada fatia de profundidade do volume de entrada.
- Profundidade do volume de saída igual à do volume de entrada.
### Camada de pooling
![](pooling.gif)
### Camada de pooling
![](downsample.png)
## Backpropagation
- O princípio é similar ao backpropagation em redes neurais completamente conectadas.
- Entretanto, deve-se levar em consideração os operadores de convolulção e pooling
- Identificar quais células participam de cada operação
## Backpropagation
![](backconv.gif)
## Backpropagation
## Backpropagation
- Em uma CNN, encontramos um ou mais **estágios**, cada qual composto por camadas:
- de convolução (CONV),
- de subamostragem (POOL),
- outras...
- Ao final, é comum encontrar uma ou mais camadas completamente conectadas seguida de camada softmax (módulo de classificação).
### Arquitetura típica
![](tipical.png)
### Breakthrough
- Competição ILSVRC (ImageNet Challenge)
- ~1,2M de imagens de alta resolução para treinamento;
- ~1000 imagens por classe; 1000 classes!
- Ganhou a edição 2012
- Até então, soluções incluiam características produzidas manualmente, estudadas e melhoradas por décadas.
### Breakthrough
![](break.png)
### Inception
![](inception.png)