Você está na página 1de 32

UNIVERSIDADE FEDERAL DO MARANHÃO

CAMPUS BALSAS
BACHARELADO INTERDISCIPLINAR EM CIÊNCIA E TECNOLOGIA

Helio Silva dos Santos


Josielton Ferreira da Silva Sousa
Railson Botelho Guida

Reconhecimento de Dígitos Numéricos em Imagens Digitais Utilizando


Técnicas de Redes Neurais Artificiais

Balsas - MA
2016
1

Helio Silva dos Santos


Josielton Ferreira da Silva Sousa
Railson Botelho Guida

Reconhecimento de Dígitos Numéricos em Imagens Digitais Utilizando


Técnicas de Redes Neurais Artificiais

Projeto submetido a disciplina de Trabalho de


Contextualização e Integração Curricular I como
requisito para obtenção de aprovação do projeto de
pesquisa com o título: Reconhecimento de dígitos
numéricos em imagens digitais utilizando técnicas
de redes neurais artificiais
Orientador: Prof. M.e Jefferson Fontinele da Silva

Balsas – MA
2016
2

Helio Silva dos Santos


Josielton Ferreira da Silva Sousa
Railson Botelho Guida

Reconhecimento de Dígitos Numéricos em Imagens Digitais Utilizando


Técnicas de Redes Neurais Artificiais

Projeto submetido a disciplina de Trabalho de


Contextualização e Integração Curricular I como
requisito para obtenção de aprovação do projeto de
pesquisa com o título: Reconhecimento de dígitos
numéricos em imagens digitais utilizando técnicas
de redes neurais artificiais
Orientador: Prof. M.e Jefferson Fontinele da Silva

Aprovada em: ____/____/____

Banca Examinadora

Prof. M.e Jefferson Fontinele da Silva


Orientador / UFMA

Prof. M.e Bruno Roberto Silva de Morais


Docente / UFMA

Prof. M.e Gustavo Araújo de Andrade


Docente / UFMA

Balsas – MA
2016
3

AGRADECIMENTOS

Primeiramente à Deus pela oportunidade de realização deste trabalho;


Agradecemos ao nosso orientador M.e Jefferson Fontinele da Silva, pela sua colaboração e
compartilhamento de conhecimentos, o que nos enriqueceu intelectualmente;
Agradecemos à Universidade Federal do Maranhão, pela concessão de uso de seu espaço físico
para realização de nossas atividades;
Agradecemos a nossos familiares e amigos que, direta ou indiretamente contribuíram para
realização desse trabalho.
4

RESUMO
Devido à grande necessidade de transformar dados de imagens digitais em dados
estruturados, este artigo apresenta uma forma de reconhecimento de dígitos numéricos em
imagens, utilizando técnicas de redes neurais artificiais, com a finalidade de melhorar e tornar
mais preciso o processo de aprendizagem de dados pela máquina. O objetivo, além de
identificar os dígitos numéricos, consiste em identificar os métodos de detecção e
processamento de imagens na atualidade. Os resultados obtidos no treinamento na base de
dados foram de 100% para o conjunto de treinamento e 99,25% para o conjunto de teste.
Palavras-chave: Aprendizado de Máquina; Rede Neural Convolucional;
Processamento de Imagens; Reconhecimento de Dígitos.
5

ABSTRACT
Due to the great need to transform digital image data into structured data, this article
presents a form of recognition of numeric digits in images, using techniques of artificial neural
networks, in order to improve and make more precise the data learning process by machine.
The goal, in addition to identify the numeric digits, is to identify the methods of detection and
image processing today. The results obtained in training the database were 100% for the training
set and 99.25% for the test set.
Keywords: Machine Learning; Convolutional Neural Network; Image processing;
Recognition Digits.
6

LISTA DE FIGURAS

Figura 1 ................................................................................................................................... 11
Figura 2 ................................................................................................................................... 12
Figura 3 ................................................................................................................................... 14
Figura 4 ................................................................................................................................... 14
Figura 5 ................................................................................................................................... 22
Figura 6 ................................................................................................................................... 22
Figura 7 ................................................................................................................................... 23
Figura 8 ................................................................................................................................... 23
7

LISTA DE TABELAS

Tabela 1 ................................................................................................................................... 17
Tabela 2 ................................................................................................................................... 23
Tabela 3 ................................................................................................................................... 24
Tabela 4 ................................................................................................................................... 24
Tabela 5 ................................................................................................................................... 11
Tabela 6 ................................................................................................................................... 12
8

LISTA DE QUADROS

Quadro 1 .................................................................................................................................. 19
9

LISTA DE GRÁFICOS

Gráfico 1 .................................................................................................................................. 28
10

SUMÁRIO

INTRODUÇÃO ...................................................................................................................... 11

1 BASE DE DADOS UTILIZADO NA CLASSIFICAÇÃO .......................................... 12

2 CLASSIFICADORES DE DADOS ............................................................................... 13

2.1 Knn - Kth Nearest Neighbor (K- ésimo vizinho mais próximo) ................................ 13

2.2 Rede Neural Convolucional ................................................................................... 14

3 GRADIENTE DESCENDENTE ESTOCÁSTICO ...................................................... 18

4 ALGORITMO BACK-PROPAGATION ..................................................................... 19

5 MEDIDAS DE AVALIAÇÃO ........................................................................................ 21

5.1 Precisão e Cobertura ............................................................................................. 21

5.2 Medida F ou Média Harmônica .............................................................................. 21

5.3 Área Sobre a Curva ROC (Receiver Operating Characteristic) .............................. 22

6 FERRAMENTA .............................................................................................................. 23

6.1 Torch (Aprendizado de Máquina) ........................................................................... 23

6.2 Scikit Learn ............................................................................................................ 23

6.3 Itorch Notebook ..................................................................................................... 23

7 PRÉ-PROCESSAMENTO ............................................................................................. 23

8 RESULTADOS E DISCUSSÕES .................................................................................. 26

CONCLUSÕES....................................................................................................................... 29

REFERÊNCIAS ..................................................................................................................... 30
11

INTRODUÇÃO

Os avanços nas pesquisas na área de reconhecimento de caracteres, e na extração de


características manuais vem sendo substituído por algoritmos de aprendizado de máquina. Um
dos métodos que tem se mostrado mais eficaz é aprendizagem baseada em gradiente.
Segundo EIKVIL (1993), “o reconhecimento de caracteres ópticos tornou-se uma das
aplicações mais bem-sucedida da tecnologia no campo de reconhecimento de padrões e
inteligência artificial”. Existe uma variedade de aplicações, no entanto as máquinas ainda não
são capazes de competir com a capacidade de leitura humana.
Segundo LeCun (1998), “a aprendizagem baseada em Gradiente baseia-se no fato de
que geralmente é muito mais fácil minimizar uma função contínua, do que uma função discreta
(combinatória) ”. O método de gradiente vem sendo usado desde o século passado, no entanto
não vinham se mostrando eficaz, mas em estudos mais recentes, tem se mostrado um método
simples e eficiente em aprendizagem de máquina.
Segundo LeCun (1998), “as melhores redes neurais, são as redes convolucionais, que
são projetadas para aprender a extrair características relevantes dos pixels das imagens”. No
entanto, quanto ao reconhecimento de escrita, o mais difícil não é apenas reconhecer caracteres
individuais, mas sim separar letras de um conjunto de palavras ou frase, processo esse chamado
de segmentação.
Dentre as várias soluções que se tem em reconhecimento de padrões, como funções de
base radial (RBF), KNN (K-ésimo vizinho mais próximo), “o uso de redes neurais
convolucionais são uma das melhores alternativas devido ao seu bom desempenho global, e
também é um método que permite economias em relação a custos computacionais”, (LeCun,
1998).
As redes neurais convolucional são projetadas para reconhecer padrões visuais a partir
do pré-processamento de imagens, estas podem reconhecer padrões com extrema variabilidade
como caracteres escritos à mão, com distorções e transformações geométricas simples. Segundo
LeCun (1998), “a LeNet-5 é um exemplo de rede convolucional projetada para o
reconhecimento de caracteres manuscritos e impressos”.
No aprendizado supervisionado à necessidade de uma base de dados para treinamento
de uma rede neural, a base de dados MNIST de dígitos, disponibiliza 70.000 exemplares de
imagens digitais de dígitos manuscritos, com estes dados treinados é possível determinar o
processamento e reconhecimento de padrões contido nestas.
12

A implementação de algoritmos utilizados para o processamento dos dados foi feita na


linguagem de programação Python e LUA. Tendo em vista a presença de algumas imperfeições
e irregularidades nas imagens, foram aplicados alguns filtros com a finalidade de preparar a
base para o posterior processamento.
Foi utilizado o método de convolução para modificar a entrada, de modo que esta possa
ser representada por um vetor de baixa dimensão ou uma cadeia curta de símbolos tornando o
dado de fácil comparação e baixa variância.
A realização dessa pesquisa objetivou construir um sistema de aprendizado de máquina
para detecção de dígitos manuscritos advindos de imagens digitais, bem como identificar
dígitos numéricos individuais a partir de imagens digitais. A posteriori analisou-se a taxa de
erros e a eficiência existentes nos métodos adotados.

1 BASE DE DADOS UTILIZADO NA CLASSIFICAÇÃO


13

A base de dados utilizada MNIST, composta com 70.000 exemplos de imagens de


dígitos manuscritos, onde 60.000 imagens são de treinamento e 10.000 para testes, todas as
imagens possui um tamanho normalizado e centrada a um tamanho fixo de 28x28 pixels, os
pixels do conjunto de dados assume valores de 0 a 255, onde 0 corresponde a cor preta e 255 a
cor branca. A base de dados possui 10 classes, com números de 0 a 9.
Figura 1: Exemplos da base de dados do MNIST.

MNIST Database

Segundo Goldschmidt (2003), “A classificação consiste em descobrir uma função que


mapeie um conjunto de registros em um conjunto de rótulos categóricos pré-definidos,
denominadas classes”. O primeiro passo para o aprendizado de máquina no processo de
reconhecimento de dígitos consiste na classificação prévia dos dados. A máquina necessita de
informações prévias acerca de cada dado recebido para fazer a classificação destes dados.

2 CLASSIFICADORES DE DADOS

2.1 Knn - Kth Nearest Neighbor (K- ésimo vizinho mais próximo)

KNN é um classificador bastante simples, consiste em encontrar um número predefinido


de amostras de treinamento que estão mais próximos de um novo ponto no espaço n-
dimensional, e prever a classe deste com base em uma amostra conhecida. É um dos algoritmos
mais populares para reconhecimento de padrões.
Para determinar a classe de um elemento que não pertença ao conjunto de treinamento,
o classificador KNN procura K elementos do conjunto de treinamento que estejam mais
próximos deste elemento desconhecido, ou seja, que tenham a menor distância.
14

Segundo Salama (2012), “a classificação é feita através de similaridade dos elementos,


no qual cada ponto é classificado pelos k-vizinhos mais próximos, através de medidas de
distâncias”. No cálculo de distância entre dois pontos, o método mais utilizado é a distância
Euclidiana.
Considerando 𝑥 = (𝑥1 , 𝑥2 , . . . , 𝑥𝑛 ) e 𝑦 = (𝑦1 , 𝑦2 , . . . , 𝑦𝑛 ), dois pontos do 𝑅 𝑛 , a distância
Euclidiana é dada por:
𝐷(𝑥, 𝑦) = √(𝑥1 − 𝑦1 )2 + (𝑥2 − 𝑦2 )2 +, . . . , (𝑥𝑛 − 𝑦𝑛 )2 (1)
A figura 1 abaixo é constituída por duas classes, quadrado em verde e triângulos em
azul. No qual o hexágono no centro da figura representa algo novo a ser classificado, quando
K é igual a 3, este possui uma vizinhança de dois triângulos e um quadrado, logo ele é
classificado como triângulo, porém se o K é igual a 5, este possuirá em sua vizinhança 5
quadrados e 2 triângulos, então o hexágono será classificado como quadrado.

Figura 2: Exemplo de classificação KNN, composta por duas classes, quadrados verdes,
triângulos azuis e o hexágono é algo a ser classificado.

Segundo Lee (1991), “o simples classificador KNN também pode executar o


reconhecimento de dígitos manuscritos, mas requer uma quantidade proibitivamente grande de
memória e é muito mais lento na classificação”. Mas a simplicidade do algoritmo e velocidade
de treinamento torna o classificador KNN uma ótima opção na classificação de dígitos.

2.2 Rede Neural Convolucional


15

As redes neurais convolucionais têm proporcionado um excelente desempenho na


classificação de dígitos manuscrito, demonstrando ser uma rede excepcional em classificação
visual.
A estrutura das redes neurais consiste numa ligação em cascata de um número
de estruturas modulares, no qual a estrutura é composta por duas camadas de
células ligadas numa cascata, onde a primeira camada consiste em S-células,
de células simples ou células ordenadas hipercomplexa de acordo com a
classificação de Hubel e Wiesel, (Fukushima,1981).

Segundo LeCun (1998), “redes convolucionais combina três ideias arquitetônicas para
garantir algum grau de mudança, na escala e invariância distorção: campos receptivos locais,
pesos compartilhados e subamostragem espacial ou temporal”. Os neurônios podem extrair
características visuais elementares, tais como bordas orientadas, pontos finais, cantos ou outras
características semelhantes, às distorções ou turnos da entrada pode fazer variar a posição das
características mais salientes. Uma das redes convolucionais que revolucionou o
reconhecimento de caracteres é a LeNet-5.

As redes convolucionais como LeNet-5 que tem grande potencial de reconhecimento de


padrões visuais, podem reconhecer padrões com robustez, distorções e transformações
geométricas simples (LeCun 1998). As camadas das redes convolucionais são organizadas em
planos onde todas as unidades compartilham os mesmos conjuntos de pesos. Uma camada de
convolução completa é composta de diferentes características de vetores de peso, na leNet-5 a
primeira camada oculta é composta por 6 planos, que são os mapas de características.

Segundo LeCun (1997), “em LeNet-5 a segunda camada é subamostragem, no qual é


composta por um mapa de características, onde cada unidade calcula a média de suas entradas
e multiplica por um coeficiente treinável, e o resultado passa pela função sigmóide”. Na rede
neural os pesos são compartilhados ao longo de uma dimensão temporal, no qual sucessivas
camadas de convoluções e de subamostragem são alternados, e em cada camada o número de
características aumenta e a resolução espacial é reduzida. O compartilhamento de peso reduz o
número de parâmetros livres, reduzindo assim diferença entre o erro de teste e o erro de
treinamento.
∑3𝑖=0 ∑3𝑗=0 𝐴𝑖𝑗 𝐵𝑖𝑗
𝑋𝑥𝑦 = (16)
9
No processo de execução da rede neural, cada neurônio artificial recebe do conjunto de
entrada características numéricas de cada pixel de imagem, então através da função supracitada,
é realizado o somatório do produto escalar entre a entrada e os pesos, dividido pelo número de
entradas, no caso citado 9 entradas por vez. O resultado desta operação é um produto escalar
que representa a média de características de cada pixel submetido a aplicação dos pesos, que
são ajustáveis. Tal procedimento tem como objetivo normalizar a imagem minimizando os
16

ruídos presentes na mesma, através de uma correção numérica dos valores dos pixels que estão
muito distantes da média, como descreve a imagem abaixo:
Figura 3: Produto interno entre matriz, a entrada em azul é multiplicado pelos os filtros em vermelho,
e a soma é compensada com o Bias.

CS231n Convolutional Neural Networks for Visual Recognition, acesso em 8 de setembro de 2016.

Os parâmetros das camadas de uma rede convolucional consistem em um conjunto de


filtros ao longo de uma altura, largura e profundidade. No qual o processamento de cada filtro
ao longo da altura e largura consiste em calcular o produto de pontos entre as camadas de filtros
e a entrada em qualquer posição. A extensão de ligação ao longo do eixo de profundidade é
sempre igual a profundidade do volume de entrada, como mostra a imagem a seguir:
Figura 4: À esquerda: rede neural com 3 camadas. A direita: As 3 dimensões da rede convolucional
(largura, altura e profundidade).

CS231n Convolutional Neural Networks for Visual Recognition, acesso em 8 de setembro de 2016.
17

Para a base de dados com volume de entrada [32x32x3] e filtro de tamanho [3x3], a
camada da rede convolucional terá pesos para cada região igual a [3x3x3], um total de 27
ligações para o volume de entrada.
Em redes convolucionais, três hiperparâmetros controlam o volume de saída:
profundidade, passo e preenchimento com zero. A profundidade corresponde aos números de
filtros, o passo é o processamento dos filtros, por exemplo, se o passo for 1, o processamento
do filtro é um pixel de cada vez, e o preenchimento com zero permite ter um controle espacial
no volume de saída. Para obter a quantidade de neurônios utiliza-se a seguinte relação:
(𝑊−𝐹+2𝑃)
(17)
𝑆+1

Onde W é o volume de entrada, F é o tamanho do campo receptivo ou (filtro), P é a


quantidade de preenchimento com zero e o S é o passo no qual é aplicado o processamento.
Em cada camada ao ser executado o algoritmo back-propagation, cada neurônio calcula
o gradiente de seus pesos, e estes são somados em cada camada, atualizando os pesos. Quanto
à camada de profundidade pode ser considerada como uma convolução de pesos com o volume
de entrada.
Como a rede convolucional consiste basicamente numa sequência de camadas, cada
camada transforma um conjunto de ativações para outra camada através de uma função
diferenciável.
Uma rede neural simples geralmente possui uma arquitetura composta de 5 camadas:
[INPUT - CONV - Relu - POOL - FC].
● INPUT - É a camada de entrada de dados, a qual recebe imagens com largura, altura e
canais definidos, mantendo os mesmos valores de pixels recebidos;
● CONV - Nesta camada serão calculadas as saídas dos neurônios que estão ligados
diretamente à entrada. Este cálculo entre os valores pontuais e os pesos ajustáveis
resulta em um volume diferente dos valores de entrada, que é variável de acordo com a
quantidade de filtros aplicados;
● Relu - A camada Relu aplica uma função de ativação pontual, de elemento a elemento
resultando em um valor para cada elemento, portanto o tamanho do volume nessa
camada permanece inalterado;
● POOL - Na camada POOL é realizada uma amostragem descendente ao longo das
dimensões espaciais (largura e altura), deixando o tamanho do volume menor nas
dimensões espaciais e inalterado no canal;
● FC - Constitui a camada de saída da rede, onde seus valores estão conectados, direta ou
indiretamente com todos os outros valores processados anteriormente. Nesta camada
são calculadas as pontuações de cada classe resultando em um volume vetorial do tipo
[1 x 1 x CANAL].
18

As redes convolucionais transforma a camada da imagem original, a partir dos valores


originais de pixel para as pontuações de cada classe. Algumas camadas contêm parâmetros e
outras não, as camadas CONV/FC executa a função de ativação do volume de entrada, e
também os pesos e desvios dos neurônios. Nas camadas CONV/FC são treinadas com o
gradiente descendente para que as pontuações de cada classe sejam consistentes com os dígitos
do conjunto de treinamento.

3 GRADIENTE DESCENDENTE ESTOCÁSTICO

O método gradiente descendente estocástico é uma aproximação estocástica do método


de otimização gradiente descendente para minimizar uma função, em outras palavras encontrar
o mínimo da função. Segundo LeCun (1998), “o método gradiente descendente estocástico
diferente de outros, é geralmente muito mais rápido e também pode ser atualizado para aprender
on-line”.
Segundo Sopyła (2015), “uma das questões mais importantes no método gradiente
descendente estocástico, quando se considera a convergência do algoritmo, é determinar uma
atualização do passo de decaimento adequada”. A busca pelo mínimo da função ocorrerá
sempre na direção negativa do gradiente. Uma equação frequentemente utilizada de forma
regularizada, tal como a que segue abaixo, sempre tem uma solução única e estável
numericamente:

𝜆 2
(𝑄𝜆 (𝑤) = 𝐸𝑥,𝑦 𝜙(𝑤 𝑇 𝑋, 𝑌 + ||𝑤|| 2) (2)
2

Onde 𝐸𝑥,𝑦 denota a expectativa com respeito ao verdadeiro. A função de perda 𝜙(𝑄, 𝑤)é
2
uma função convexa. No qual ||𝑤|| 2 = 𝑤 𝑇 𝑤 e 𝜆 é um parâmetro de regularização positivo, se

𝜆 = 0, o problema não estará regularizado.


Semelhante ao método Perceptron, o algoritmo gradiente estocástico de descida atualiza
o vetor de pesos W a cada interação. Onde em cada etapa t, é observado (𝑥𝑡 , 𝑦𝑡 )e os pesos são
𝜕
atualizados 𝑊𝑡 −1 usando a fórmula (𝑊𝑡 = 𝑊𝑡−1 − 𝜂𝑡 𝑆𝑡−1 𝐿𝜙(𝑊𝑡−1 , 𝑥𝑡 , 𝑦𝑡 )), onde 𝜂𝑡 >0 é
𝜕𝑤

um parâmetro da taxa de aprendizagem, e 𝑆𝑡 é uma matriz utilizada como um pré-condicionador,


o que acelera a taxa de convergência, desta maneira a equação de atualização fica desta forma:

𝑇
𝑤𝑡 = 𝑤𝑡 −1 − 𝜂𝑡𝑆 −1 (𝜆𝑤𝑡−1 + 𝜙1 (𝑤𝑡−1 𝑥𝑡 , 𝑦𝑡 )𝑥𝑡 ) (3)
19

O algoritmo do método gradiente descendente estocástico de acordo com os parâmetros


anteriores pode ficar desta maneira:

Quadro 1: Algoritmo Gradiente Descendente Estocástico (SGD)


Initialize 𝑊0
for 𝑡 = 1,2, . ..
draw (𝑥𝑡 , 𝑦𝑡 )
update 𝑊𝑡 −1como:
𝑇
𝑤𝑡 = 𝑤𝑡 −1 − 𝜂𝑡𝑆 −1 (𝜆𝑤𝑡−1 + 𝜙1 (𝑤𝑡−1 𝑥𝑡 , 𝑦𝑡 )𝑥𝑡 )
End

O método gradiente descendente estocástico é de grande complexidade, e assim é muito


difícil implementá-lo de forma analítica, fato que torna indispensável o uso de computadores
para melhor eficiência na sua implementação.

4 ALGORITMO BACK-PROPAGATION

O algoritmo back-propagation é um método numérico muito estudado por diferentes


comunidades de pesquisa em diferentes áreas, tornando-se um dos algoritmos mais utilizado
para aprendizagem de redes neurais. Este algoritmo tem como principal objetivo, o aprendizado
supervisionado de determinada rede dada uma série de padrões.
Segundo LeCun (1998), “A ideia do algoritmo back-propagation é que os gradientes
podem ser calculados de forma eficiente por retro-propagação a partir da saída para a entrada”.
O processo do método back-propagation é um processo de aprendizagem de redes neurais de
multicamadas, Feedforward assim podendo resolver problemas não linearmente separáveis.
Umas das soluções para minimizar o erro na aprendizagem de rede, é a combinação do
algoritmo back-propagation que procura o mínimo de uma função de erro utilizando o método
do gradiente descendente estocástico.
O método back-propagation requer o cálculo do gradiente da função de erro em cada
iteração, mantendo a sua continuidade e diferenciabilidade da função de erro (Rojas,1990). Para
manter continuidade a cada interação é preciso ter uma função de ativação para a rede, a função
de ativação Perceptron não é possível ser utilizada devido a sua descontinuidade. Uma função
de ativação muito utilizada no método back-propagation é a sigmóide dada da seguinte forma:
1
𝑠𝑐(𝑥) = (4)
1+ 𝑒 −𝑐𝑥
20

Segundo Rojas (1990), “a derivada da sigmóide sempre será positiva, pelo o fato da
função de erro apontar para uma direção a ser seguida”. A saída da sigmóide segue estritamente
o intervalo entre 0 e 1, que são os extremos. Logo dados os pesos 𝑊1 , 𝑊2 , . . . , 𝑊𝑛 e um Bias -𝜃,
a sigmóide calcula para uma entrada 𝑋1 , 𝑋2 , . . . , 𝑋𝑛 a saída será:
1
𝑛 (5)
1+𝑒 (𝛴𝑖=0 𝑤𝑖 𝑥𝑖 − 𝜃)
Dado um conjunto de pontos de dados de treinamento 𝑑𝑗 e camada de saída 𝑦𝑗 , o cálculo
de erro pode ser dado da seguinte forma:

1
𝐸 = ∑𝑘𝜖𝐾 ( 𝑦𝑗,𝑐 − 𝑑𝑗,𝑐 )2 (6)
2

Camada de saída
𝜕𝐸 𝜕 1
= ∑𝑘𝜖𝐾( 𝑦𝑗 − 𝑑𝑗 )2 (7)
𝜕𝑊𝑗𝑘 𝜕𝑊𝑗𝑘 2

𝜕𝐸
= 𝑦𝑗 𝛿𝑘 (8)
𝜕𝑊𝑗 𝑘

Onde
𝛿𝑘 = 𝑦𝑘 (1 − 𝑦𝑘 )(𝑦𝑘 − 𝑑𝑘 ) (9)

Camadas ocultas
𝜕𝐸
= 𝑦𝑗 𝜕𝑘 (10)
𝜕𝑊𝒋𝒌

Onde
𝛿𝑘 = 𝑦𝑗 (1 − 𝑦𝑗 ) ∑𝑘𝜖𝐾 𝜕𝑘 𝑊𝑗𝑘 (11)
Para cada pesos e bias, temos
𝛥𝑊 = −𝜂𝛿𝑙 𝑦𝑙−1 (12)
𝛥𝜃 = 𝜂𝛿𝑙 (13)
Aplicado
𝑊 + 𝛥𝑊 → 𝑊 (14)
𝜃 + 𝛥𝜃 → 𝜃 (15)
Para ensinar uma rede neural é preciso de um conjunto de dados de treinamento, o
treinamento da rede é um processo interativo, onde a cada interação os pesos dos coeficientes
são atualizados com novos dados do conjunto de treinamento, com este processo é possível
determinar os sinais de saída para cada neurônio das camadas da rede.
21

5 MEDIDAS DE AVALIAÇÃO

5.1 Precisão e Cobertura

Segundo Makhoul (1999), “a precisão tem sido utilizada regularmente para medir o
desempenho de sistemas de recuperação e extração de informação”. A precisão também é
utilizada como revocação (conhecida como cobertura), são medidas muito utilizada para avaliar
quantidade dos resultados em diversas áreas. A precisão é uma medida de muita veracidade,
enquanto revocação é uma medida de totalidade.

Segundo Monard e Baranauskas (2003), “uma medida de desempenho muito utilidade


é a taxa de erro de um classificador (h), denotado por err(h). O complemento da taxa de erro, a
precisão do classificador, é denotada por acc(h) dado por:

𝑎𝑐𝑐(ℎ) = 1 − 𝑒𝑟𝑟(ℎ) (18)


Precisão é uma porcentagem de amostras positivas classificadas corretamente sobre o
total de amostras classificadas como positivas dada da seguinte forma:

𝑇𝑝
𝑃 = 𝑇𝑝+𝐹𝑝 (19)

Segundo Monard e Baranauskas (2003), “considerando uma regra L -> R, que


satisfazem a parte L da regra constituem o seu conjunto de cobertura, no qual os exemplos que
são cobertos pela regra ou que a regra dispara para esses exemplos”. No entanto os exemplos
que satisfazem tanto a condição L como a conclusão R são cobertos corretamente pela regra.
Porém os exemplos que satisfazem a condição L, mas não a conclusão R são cobertos
incorretamente pela regra. Contudo os exemplos que não satisfazem a condição L não são
cobertos pela regra.

5.2 Medida F ou Média Harmônica

A medida-F é umas das medidas mais utilizadas em Recuperação de Informação,


Processamento de Língua Natural e aprendizado de máquina. O termo medida-F é equivalente
a uma média harmônica ponderada da precisão e da revocação.
22

Segundo David (2015), “em medida F, a revocação é a frequência com que os


documentos pertinentes são recuperados por um sistema”. A precisão é a frequência com que
os documentos recuperados ou previsões são relevantes, também conhecida como valor
preditivo positivo ou precisão positiva verdadeira. A medida F pode ser dada pela seguinte
relação:

𝑝𝑟𝑒𝑐𝑖𝑠ã𝑜 𝑥 𝑟𝑒𝑣𝑜𝑐𝑎çã𝑜
𝑚𝑒𝑑𝑖𝑑𝑎 𝐹 = 2 . 𝑝𝑟𝑒𝑐𝑖𝑠ã𝑜 + 𝑟𝑒𝑣𝑜𝑐𝑎çã𝑜 (20)

5.3 Área Sobre a Curva ROC (Receiver Operating Characteristic)

A curva ROC é uma representação gráfica que ilustra um desempenho de um


classificador. Uma ferramenta muito utilizada pela comunidade de aprendizado de máquina,
para visualização e seleção de classificadores baseado no seu desempenho.

Segundo Prati (2008), “gráficos ROC são originalmente utilizados em detecção de


sinais, para se avaliar a qualidade de transmissão de um sinal em um canal com ruído”. Um dos
primeiros a utilizar a área sobre a curva em ROC em aprendizado de máquina foi Spackman em
1989, onde o autor demonstra a utilidade das curvas ROC em avaliação e comparação entre
algoritmos. A análise ROC é utilizado em diversas áreas, como na medicina, na psicologia por
exemplo é utilizado para avaliar a capacidade de indivíduos distinguirem entre estímulo e não
estímulo.

Segundo Silva (2006), “atualmente há um grande crescimento no uso de gráficos ROC


na comunidade de aprendizado por máquina, em parte pelo uso desta técnica na análise de
classificadores”. A curva ROC é uma ferramenta muito utilizada pela comunidade de
aprendizado de máquina para a visualizar desempenho de classificadores.

A análise ROC, é uma ferramenta muito útil e poderosa em domínios nos quais existe
uma grande desproporção entre as classes ou quando se deve levar em consideração diferentes
custos/benefícios para diferentes erros/acertos de classificação (Prati, 2008).
23

6 FERRAMENTA

6.1 Torch (Aprendizado de Máquina)

Torch é uma ferramenta livre, que possui uma estrutura de computação científica com
amplo suporte para algoritmos de aprendizado de máquina, potencializando a GPU (unidade de
processamento gráfico). É fácil de ser usado e eficiente, é uma linguagem com base em LUA
(linguagem de programação), e implementação subjacente em C/CUDA.

6.2 Scikit Learn

Scikit-learn é um modulo em Python para aprendizagem de máquina construída em cima


de sobre NumPy, SciPy e Matplotlib. É uma ferramenta simples e eficiente para mineração e
análise de dados.

6.3 Itorch Notebook

ITorch é um núcleo IPython para Torch, com plotagem, visualização de imagens, vídeo
e áudio. ITorch no modo notebook funciona como qualquer outro notebook IPython.

7 PRÉ-PROCESSAMENTO

O primeiro treinamento da base MNIST, foi realizado como o algoritmo KNN, com a
base de dados treinado, preparou-se a base para aprendizagem das classes, temos como
exemplos a captura de um dígito da base de dados.

Figura 5: exemplo de dígitos do conjunto de dados MINIST.


24

Utilizando-se das técnicas de redes neurais convolucionais, foi realizado o treinamento


da base de dados com auxílio da ferramenta Torch, foi utilizado o iTorch Notebook para
carregar a base de dados já treinada, para construir o algoritmo da rede convolucional. Para
testar a eficiência de reconhecimento de dígitos a necessidade de carregar uma imagem
contendo as classes.
Uma das características das redes convolucionais é aplicação de um filtro na imagem
para retirar sujeiras ou ruídos, que possam confundir a rede com alguma classe. O primeiro
passo é aplicação de um filtro [5,5], deixando a imagem em tons de cinza como segue abaixo.

Figura 6. Processamento e aplicação de filtros para detecção de dígitos.

Para acentuar cada classe na imagem, a necessidade de aplicação de um limiar, no qual


captura os pixels de maior energia que estão variando de 0 a 255, onde zero corresponde a cor
preta e 255 a cor preta, como é exemplificado na imagem abaixo.

Figura 7. Processamento e aplicação de um limiar capturando pixels de maior energia.

Para capturar os contornos de cada dígito, foi aplicado o limiar novamente, para fazer
um recorte através das bordas externas de cada classe.
25

Figura 8. Processamento e aplicação de um limiar para recortar contornos externos.

O processo de segmentação das classes pode ser poder ser observado na tabela 1, o
recorte das classes individuais. Após o processo de segmentação, segue uma camada de
convolução onde é calculada as saídas dos neurônios a partir da entrada.

Os resultados de avaliação do treinamento seguem na tabela 1, é importante ressaltar


que os resultados obtidos na classificação das classes, estão com uma margem de certeza acima
de 90 %, se o valor da precisão de uma classe estiver menor que 90 %, foi determinado que a
rede não irá classificar a classe.

Tabela 1. Segmentação e classificação das classes utilizando rede neural convolucional.

7 8 9 ? 0

3 4 2 5 6
26

8 RESULTADOS E DISCUSSÕES

Os resultados da classificação como o algoritmo KNN para cada classe foram os


seguintes:
Tabela 2. Classificação das classes com o algoritmo KNN.
[3 8 6 9 6 4 5 3 8 4]
[3 8 6 9 6 9 5 3 8 4]

A precisão de acertos com os exemplos de testes foi de 97,21 % de acertos, resultados


estes dentro do esperado, pois estão de acordo com a literatura, o algoritmo KNN é atraente pela
sua simplicidade e pela velocidade de treinamento, mas muito se perde na sua precisão
comparado a redes neurais.
Com a rede neural convolucional com distorções foi realizado o processo de treinamento
da base de dados. Os primeiros resultados de treinamento podem ser observados na matriz de
confusão na tabela 2 e 3.

A matriz de confusão é modelo de classificação, no qual mostra o número de


classificações corretas versus as classificações preditas para cada classe. O número de acertos
para cada classe, se encontra na diagonal principal da matriz, os outros elementos são os erros
na classificação dos dados. Quando a matriz de confusão possui fora da diagonal principal todos
os elementos iguais a zero, isso significa que não cometeu erros.

Tabela 3. Matriz de confusão: treinamento da base de dados Mnist para o conjunto de treinamento

No primeiro resultado de execução, matriz de confusão na tabela 2, o conjunto para


treinamento na epoch 1, é observável em cada classe sua respectiva porcentagem de acertos. a
primeira classe que é representada pelo número 0, no qual o número de acertos para cada classe
é representado pela diagonal principal da matriz de confusão, logo, foi obtido que 5807 foi
reconhecido como 0 de um total de 5923, o que nos dá 98.042% de acertos.
27

Os resultados obtidos pela Matriz de confusão de treinamento na tabela 2, no geral as


porcentagens de erros para todas as classes estão muito elevadas, no entanto sabe-se com a
sequência do treinamento a porcentagem de erros tende a ser próxima de zero, para o conjunto
utilizado para treinar a base de dados.

Tabela 4. Matriz de confusão: treinamento da base de dados Mnist para o conjunto de teste.

Os resultados para o conjunto de testes obtidos em epoch 1, na matriz de confusão de


teste, de um conjunto de 10.000 imagem podemos observar que na primeira classe, por exemplo
foi reconhecido 975 como número 0 de um total de 980, o que nos dá 99.490% de acertos.
As classes seguintes na matriz, as porcentagens de erros são semelhantes, apenas para a
classe 7 que corresponde ao número 6, que possui uma porcentagem bem abaixo da média de
acertos globais.

Nas tabelas 3 e 4 abaixo segue os resultados finais do treinamento para os dois conjuntos
após epoch 141.

Tabela 5. Matriz de confusão: treinamento da base de dados Mnist para o conjunto de treinamento.

No fim do treinamento com 100% de acertos para todas as classes, do conjunto de


treinamento com 60.000 imagens, obteve-se este êxito com o conjunto para treinamento, no
qual foi obtido 100% para todas as classes do conjunto de treinamento MNIST.
Quanto ao conjunto de teste após o término do treinamento, depois de 141 epochs, foram
obtidos os resultados que podem ser observados pela tabela 4 que segue abaixo.
28

Tabela 6. Matriz de confusão: treinamento da base de dados Mnist para o conjunto de teste.

A análise da matriz de confusão de teste da tabela 4, nos mostra as porcentagens de


acertos após o fim do treinamento. Para cada classe houve um aumento relevante na
porcentagem de acertos em comparação com a primeira matriz de confusão de teste da tabela 2,
no início do treinamento da base de dados.
O processo de treinamento da base pode ser melhor observado pelo no gráfico 1 abaixo:

Gráfico 1. Acentuação curva do conjunto de treinamento e teste, base de dados MNIST.

No gráfico 1, observamos a acentuação das duas curvas do conjunto de treinamento


utilizado para treinar e testar a base de dados, onde é fácil observar que entre a epoch 0 até
epoch 20, o conjunto utilizado para treinamento das classes já havia almejado os 100% de
acertos. A curva do conjunto de teste após o treinamento, observamos o aumento na
porcentagem de acertos globais, variando horizontalmente a cada epoch, almejando em média
99,25% de acertos.
29

CONCLUSÕES

Após realização de todas as etapas traçadas no corpo deste trabalho, os resultados


apresentados se mostraram satisfatório pelo fato de estar dentro dos padrões literários para rede
neural convolucional sem distorções que é de 0.95 de LeCun em 1998. Então é viável ressaltar
que os métodos adotados e o objetivo de construir um sistema de aprendizado para detecção de
dígitos foi realizado com sucesso.
Com o desenvolvimento de hardware e software cada vez mais eficiente possibilitará
um maior poder de processamento e extração de padrões em imagens, o que irá permitir o
desenvolvimento de ferramentas em diversas aplicações.
Os resultados na classificação das classes ajudam a estabelecer principalmente o método
de a aprendizagem baseada em gradiente, descrito aqui como um dos métodos mais eficaz
quando utilizado em reconhecimento de padrões e aprendizado de máquina.
O sucesso no treinamento da base de dados, proporcionou uma boa performance no
reconhecimento das classes, obtendo resultados similares aos apresentados na literatura
utilizando a rede convolucional com apenas uma convolução, o melhor resultado alcançado é
utilizando a rede convolucional com 35 convoluções, que é de 0.23 de Ciresan em 2012. Como
trabalho futuro espera-se utilizar o modelo treinado para auxiliar no desenvolvimento de uma
ferramenta para interpretação de expressões matemáticas.
30

REFERÊNCIAS

C. Y. Suen, C. Nadal, R. Legault, T. A. Mai e L. Lam. Proceedings of the IEEE, Special issue
on Optical Character Recognition, vol. 80, no. 7, pp. 1162-1180, julho 1992.

Convolucionais Redes Neurais (CNNs / ConvNets). Disponível em:


<http://cs231n.github.io/convolutional-networks/> acesso em 25 de agosto de 2016.

CS231n Convolutional Neural Networks for Visual Recognition. Disponível em:


<http://cs231n.github.io/convolutional-networks> acesso em 8 de setembro de 2016.
D. Green and J. A. Swets, Signal Detection Theory and Psychophysics. Los Altos, USA:
Península Publishing, 1989.

FARIA, Mauricio Mendes; MONTEIRO, Ana Maria. Investigação sobre Técnicas de


Detecção de Intrusões em Redes de Computadores com base nos Algoritmos Knn e K-
Means. Universidade Anhembi Morumbi, são paulo, 2011.

Lee, Yuchun. "Handwritten digit recognition using k nearest-neighbor, radial-basis


function, and backpropagation neural networks." Neural computation3.3 (1991): 440-449.

Krizhevsky, A., Sutskever, Ilya.,Hinton, G. E., ImageNet Classification with Deep


Convolutional Neural Networks. University of Toronto em 2010.

Makhoul, John, et al. "Performance measures for information extraction." Proceedings of


DARPA broadcast news workshop. 1999.

Monard, Maria Carolina, and José Augusto Baranauskas. "Conceitos sobre aprendizado de
máquina." Sistemas Inteligentes-Fundamentos e Aplicações 1.1 (2003).

P. L. Bartlett, E. Hazan, and A. Rakhlin. Adaptive online gradient descent. In Advances in


Neural Information Processing Systems 20, 2007.

Prati, R. C., G. E. A. P. A. Batista, and M. C. Monard. "Curvas ROC para avaliação de


classificadores." Revista IEEE América Latina 6.2 (2008): 215-222.

Rumeihart, D. E., Hinton, G. E., e Williams, R. J. Learning Internal Representations by


Error Propagation. In Rumeihart, D. E. e McClelland, J. L. (editor), Parallel Distributed
Processing: Explorations in the Microstructure of Cognition, cap. 8. MTT Press, Cambridge,
MA, e Londres, Inglaterra, 1986.

R. Collobert, S. Bengio, and J. Mariéthoz, Torch: A Modular Machine Learning Software


Library, tech. rep., 2002.

S. I. Amari, “A theory of adaptive pattern classifiers”, IEEE Transactions on Electronic


Computers, vol. EC-16, pp. 299-307, 1967.

Sopyła Krzysztof, Stochastic Gradient Descent with Barzilai–Borwein update step for
SVM, vol. 316, pp. 218–233, setembro 2015.
31

Salama, G. I., Abdelhalim, M., e Zeid, M. A.-e. (2012). Breast cancer diagnosis on three
different datasets using multi-classifiers. Breast Cancer (WDBC),32(569):2. Citado nas
páginas 39.

SORIANO, Raúl Rojas. The Backpropagation Algorithm. In: Neural Networks, Springer-
Verlag, Berlim, 1996. P. 149 - 180.

Sousa, Junior Silva. Identificação de viabilidade de leveduras com corante vital utilizando
histogramas de palavras visuais em imagens coloridas. Universidade Federal do Mato
Grosso do Sul, 2015.

Spackman, Kent A. "Signal detection theory: Valuable tools for evaluating inductive
learning." Proceedings of the sixth international workshop on Machine learning. Morgan
Kaufmann Publishers Inc., 1989.

Y. LeCun, L. Bottou, Y. Bengio and P. Haffner: Gradient-Based Learning Applied to


Document Recognition, Proceedings of the IEEE, 86(11):2278-2324, November 1998.

Zhang, Tong. "Solving large scale linear prediction problems using stochastic gradient
descent algorithms." Proceedings of the twenty-first international conference on Machine
learning. ACM, 2004.

Você também pode gostar