• Nenhum resultado encontrado

3. Redes Neurais Artificiais

3.3. Redes Neurais Convolucionais

3.3.1. Camadas Convolucionais

A camada convolucional usa filtro de aprendizado e cada filtro responde a um subconjunto ou uma pequena região do conjunto de entrada (um pequeno quadrado em uma imagem poderia ser considerado como uma pequena região) e as pequenas regiões coletivamente cobrem o conjunto de entrada como um todo. Ou seja, para cada um destes filtros, um neurônio está conectado a apenas um subconjunto dos neurônios na camada anterior. Os filtros são gerados a partir de uma pequena região denominada campo receptivo local e o resultado da aplicação destes filtros são denominados mapas de características (ou

feature maps).

Um mapa de características é obtido efetuando a convolução de uma matriz de entrada (que em aplicações de visão computacional pode ser uma imagem ou para aplicações

27

envolvendo PLN podem ser word embeddings, como é o caso específico desta tese) por um filtro linear. A convolução é um tipo de operação linear e pode ser considerada como uma característica básica para se identificar uma CNN, ou seja, para ser considerada uma CNN é preciso que a rede neural utilize a convolução em pelo menos uma de suas camadas. O processo de convolução utilizado nas redes CNNs é apresentado na figura 3.5. Na figura, a matriz de entrada é representado por uma matriz de tamanho 5x5 (pixels de intensidade de uma imagem, por exemplo) e o filtro apresentado é um filtro específico de tamanho 3x3, denominado filtro edge (PARKER, 2010) que é responsável por detecção de bordas nas imagens. O objetivo dos filtros utilizados nas CNNs é detectar determinadas características nos dados de entrada, sendo assim diferentes valores de filtros podem produzir diferentes mapas de características para um mesmo tipo de dado (imagem ou texto).

Figura 3.5 - Exemplo de Convolução 2D – A matriz de saída é denominada mapa de características (features maps)

Na figura 3.5 é realizada uma operação de convolução em uma imagem como entrada e um filtro que é deslizado a um pixel (hiperparâmetro da CNN conhecido como stride e discutido nas próximas seções) em toda a imagem. Para cada janela que desliza sobre a imagem, o produto entre cada elemento do filtro ou Kernel (também conhecido como conjuntos de pesos sinápticos) e o elemento de entrada que ele sobrepõe é calculado e os resultados são somados para obter a saída correspondente aquela localização analisada. O resultado final deste procedimento é denominado mapa de características.

28

As redes CNNs apresentam determinadas características que contrastam com certos paradigmas que fazem parte dos modelos de arquiteturas rasas, como as redes MLPs por exemplo. São elas: conectividade esparsa, campos receptivos locais e compartilhamento de parâmetros.

• Conectividade esparsa: este tipo de conectividade acontece devido ao fato de que o filtro (kernel) que é utilizado no processo de convolução apresenta dimensões muito menores do que a matriz de entrada. Isto permite uma correlação espacial local através da aplicação de um padrão de conectividade local entre neurônios de camadas adjacentes. Nas arquiteturas de redes MLPs, cada neurônio da camada de saída interage com cada neurônio da camada de entrada através de um processo de multiplicação de matrizes gerando uma conectividade global entre os parâmetros. Na figura 3.6 apresentada a seguir é possível verificar os dois tipos de conectividades (global e esparsa) para os dois tipos de arquiteturas (MLP e CNN). Analisando apenas a entrada x3 é possível verificar que quando o modelo faz uso da multiplicação de matrizes (conectividade global – MLP) todas as unidades de saída (N1 a N5) são afetadas pela entrada x3. Isto não ocorre quando o modelo faz uso da camada convolucional, neste caso utilizando um kernel de tamanho 3 por exemplo, apenas três unidades da camada de saída (N2, N3 e N4) são afetadas pela entrada x3.

• Campos receptivos locais: cada região (conforme citado anteriormente, um pequeno quadrado em uma imagem pode ser considerado como uma região) na matriz de entrada que representa o tamanho do filtro utilizado vai corresponder a um único neurônio na camada escondida. Cada deslocamento desta região ao longo da matriz de entrada representará um novo neurônio na camada escondida. Este procedimento está representado na figura 3.7. Analisando na figura os neurônios de entrada x1 a x17 (neurônios destacados em preto na figura) e o neurônio N1 da primeira camada escondida e um filtro de convolução de tamanho 3x3 é possível verificar que somente a região destacada em preto na figura afeta o neurônio de saída N1. A esta região destacada é que se dá o nome de campo receptivo local do neurônio de saída N1. O mesmo acontece para o neurônio de saída N2.

• Compartilhamento de parâmetros: os mesmos filtros são aplicados em diferentes locais da matriz de entrada. Isto faz com que os padrões que ocorrem com frequência na matriz de entrada e que estejam localizados em qualquer parte da

29

entrada possam ser aprendidos (HAFEMANN et al., 2015). Na figura 3.8 pode ser visualizado como acontece o compartilhamento de parâmetros nas camadas convolucionais.

Figura 3.6 - Conectividade global e esparsa das redes MLPs e CNNs respectivamente. Adaptado de (GOODFELLOW et al., 2016)

Figura 3.7 - Exemplo do campo receptivo local das CNNs. Adaptado de (NIELSEN, 2016)

Figura 3.8 - Compartilhamento de parâmetros. Conexões na mesma cor representam pesos (ou elementos do Kernel) sendo compartilhados

30

Para (GOODFELLOW et al., 2016) o uso das características citadas anteriormente (conexões esparsas, campos receptivos locais e compartilhamento de parâmetros) permitem as redes CNNs armazenarem menos parâmetros, o que reduz os requisitos de memória do modelo e melhora a sua eficiência estatística. Além disso, a geração dos resultados obtidos requer menos operações, o que possibilita uma grande melhoria na eficiência destes modelos de rede.

Os resultados obtidos ao efetuar o processo de convolução em uma matriz de entrada juntamente com a adição de um termo de bias são utilizados como entrada para uma função de ativação não linear. Conforme citado anteriormente e também em (JARRETT et al. 2009; GLOROT et al., 2011; NAIR et al., 2010) a melhor função de ativação a ser utilizada em modelos de RNAs é a função ReLu descrita na equação 3.8, entretanto funções de ativação tangente hiperbólica (equação 3.7) e sigmoide (equação 3.6) também podem ser utilizadas tanto em modelos de rede MLP como em modelos de rede CNN.

Por fim, cabe ressaltar dois hiperparâmetros muito importantes em relação aos filtros utilizados nas camadas convolucionais, a saber, wide ou narrow convolution e o stride. O primeiro deles define a forma como aplicar o filtro, ou seja, dada uma matriz de dados, como aplicar o filtro aos elementos que não possuem vizinhos (elementos na borda da matriz). Uma abordagem comumente utilizada é a utilização do padding (preenchimento) que visa expandir matriz de entrada. Em casos onde se faz uso do padding, ou seja, quando há adição de elementos na borda da matriz de entrada com valor zero este hiperpârametro é conhecido

wide convolution. O mesmo permite aplicar o filtro em todos os elementos da matriz de

entrada. No caso contrário, onde não há utilização do padding, o hiperparâmetro é conhecido como narrow convolution. Stride (ou passo) é outro hiperparâmetro a ser definido (também pode ser utilizado nas camadas de pooling) e é responsável por determinar qual o tamanho do deslocamento do filtro a cada passo. Geralmente em aplicações envolvendo reconhecimento de imagens é comum o uso de stride igual a 1, ou seja, o filtro é deslocado pela imagem um pixel por vez.