Introdução ao Deep Learning

Allan Handan
bawilabs
Published in
5 min readSep 11, 2017

Dando continuidade ao assunto apresentando no artigo Desmitificando Machine Learning, serão apresentados aqui alguns conceitos importantes sobre o Deep Learning. Não se preocupe, não entraremos muito na matemática do assunto :P

Primeiramente, vamos falar sobre o data set, que representa os dados que serão utilizados durante o treinamento e avaliação da rede. O data set é dividido em training set, validation set e test set.

O training set representa os dados que serão utilizados na etapa de treinamento. Nesta etapa, uma determinada entrada passa pela rede gerando uma resposta que será comparada com o resultado esperado, permitindo estimar o erro e a correção sobre os pesos da rede através do backpropagation (calma que já já veremos este termo!).

As entradas do validation set tambem são utilizadas na etapa de treinamento, porém sua saída não é utilizada para realizar a correção da rede, mas sim para determinar se o treinamento está sendo eficiente e se está ocorrendo overfitting no treinamento.

Por fim, diferentemente do training set e do validation set, o test set não é utilizado na etapa de treinamento. Aliás, ele JAMAIS deve ser utilizado durante o treinamento, pois ele será usado como entrada para a avaliação da accuracy da rede.

Uma rede convencionalmente apresenta 3 tipos de camadas:

Input Layer

Esta camada representa a entrada da rede. É importante entender que cada nó nesta camada representa uma feature da entrada que passará pela rede. Como exemplo podemos imaginar uma rede que tenta determinar a personalidade de uma pessoa, então uma entrada seria um conjunto de dados sobre a pessoa. Deste modo, cada característica desta pessoa seria uma feature dessa entrada. Em uma matriz de entradas da rede, temos que cada linha representa uma entrada, já cada coluna representa uma feature.

Identificação da Input Layer

Hidden Layer

Na verdade, esta não é apenas uma camada, pois a estrutura da sua rede pode ter N hidden layers. Essa camada é responsável por abstrair as informações contidas nas entradas, de modo a permitir que a rede interprete os dados ao aplicar pesos às entradas.

Cada hidden layer é representada por uma matriz de pesos. Essa matriz possui uma coluna para cada nó desta camada e uma linha para cada entrada desta camada. Neste caso, as entradas podem ser as features da input layer ou as saídas de uma hidden layer anterior.

Identificação da Hidden Layer

Output Layer

Esta é a camada de saída da sua rede, nela é obtida a previsão ou avaliação realizada por sua rede. A quantidade de nós presentes depende da arquitetura de sua rede, podendo ser apenas um nó no caso de uma avaliação quantitativa ou binária simples, ou possuir N nós, de modo que cada nó represente uma possivel avaliação de sua entrada.

Esta camada também é representada por uma matriz de pesos, possuindo uma coluna para cada nó de saída e uma linha para cada entrada (lembrando que neste caso as entradas do Output Layer são as saídas de uma Hidden Layer).

Identificação da Output Layer

Tanto os nós da hidden layer quanto os da output layer podem apresentar uma função de ativação. Essa função tem como entradas: um bias e o somatório da multiplicação de cada entrada com seu respectivo peso.

Existem vários tipos de funções de ativação, como por exemplo, a sigmoide, que é uma função exponencial cuja a saída é limitada entre 0 e 1. Assim, caso um nó possua uma função de ativação, sua saída será o resultado dessa função.

Agora vamos finalmente entender como que a rede aprende!

Durante o treinamento, sua rede faz suas previsões de acordo com as features das entradas. Essa previsão é comparada com o resultado esperado, a fim de analisar se a rede acertou ou errou. Com isso, fazemos uso de uma função de erro quadrática, a qual realiza a somatória do quadrado dos erros. Dessa forma, passamos a ter o custo da rede, que significa o quão boas ou ruins estão as previsões da rede. O próximo passo é usar o erro para realizar o backpropagation.

Backpropagation

Esta é a etapa do treinamento em que são realizadas as correções dos pesos em cada uma das matrizes de peso, tanto da output layer quanto das hidden layers.

É essa correção dos pesos que realiza o aprendizado da rede, deste modo, a rede vai se adaptando ao contexto. Essa correção ocorre com a propagação do erro no sentido contrário, ou seja, da output layer até a primeira hidden layer, daí o nome backpropagation. Nesta etapa é calculada uma variação para os pesos através de uma técnica chamada Gradiente Descendente.

Gradiente Descendente

Aqui é feita uma derivada parcial da função de erro da rede com relação aos pesos. Ou seja, é medida a variação do erro da rede com base nos pesos, deste modo é obtido um vetor para correção dos pesos que aponta para a região de erro mínimo. Simplificando, essa técnica permite que os pesos sejam atualizados para uma direção correta, evitando a realização de correções com valores randômicos. O gradiente descendente aumenta muito a capacidade da rede convergir para resultados mais satisfatórios.

Resumindo, sua rede é representada por uma série de matrizes de entrada e de pesos. Durante a etapa de treinamento de sua rede, o aprendizado se dá através do backpropagation e do gradiente descendente, que realiza a correção dos pesos presentes nas matrizes das hidden layers e da output layer. A medida que as gerações (em inglês, epochs) de treinamento vão passando, os pesos vão sendo ajustados e a rede vai se adaptando ao cenário. Por fim, analisa-se a eficência da rede passando o seu test set por ela.

Espero que este artigo ajude a entender um pouco mais alguns conceitos do Deep Learning! Até a próxima!

--

--