66
Introdução a Inteligência Artificial Classificação de caracteres numéricos escritos a mão utilizando REDES NEURAIS

Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Introdução aInteligência Artificial

Classificação de caracteres numéricos escritos a mão utilizando REDES NEURAIS

Page 2: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O PROBLEMA OU A APLICAÇÃO

Page 3: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Definição do problemaDados imagens de caracteres numéricos escritos a mão descritos em um arquivo texto numérico com valores entre 0 e 255, onde 0 (zero) corresponde a preto e 255 a branco (ESCALA DE CINZA) e os valores intermediários correspondem a escalas de cinza, um sistema de redes neurais deve identificar cada valor dentro de um intervalo de certeza razoável.

Exemplo de alguns caracteres

Page 4: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Formatação de cada

caractere numérico

Introdução a inteligência artificial (REDES NEURAIS)

ALVOArquivo MNIST (github)

Arquivo (lista) com imagens de 100 caracteres escritos a mão

com 28 x 28 pontos cada caractere (784 pontos)

Page 5: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

No contexto dessa aplicação as redes neurais utilizam o sistema de aprendizado supervisionado.

Antes da realização de qualquer classificação, ou predição a rede deve ser treinada para reconhecer todos os padrões possíveis (rótulos ou aspectos) que podem ser aplicados a entrada

Nesse sistema uma massa de dados contendo uma série de conjuntos de informações específicas dos elementos que se deseja classificar ou prever, é aplicada a entrada da rede neural.

A meta do algoritmo de classificação é estimar com a maior probabilidade possível se um determinado conjunto de dados (pontos de imagem) de entrada corresponde a um aspecto ou rótulo específico.

Page 6: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Classificação e prediçãoProcesso de classificação não é muito diferente de um processo de predição uma vez que o sistema recebe uma entrada e faz uma predição de qual deve ser a saída.A predição é refinada pelo ajuste de parâmetros internos (as ponderações e polarizações no caso das redes neurais) através dos erros obtidos no processo de comparação com os rótulos ou aspectos

Tomemos como exemplo um processo de classificação de insetos encontrados comumente nos jardins.Queremos determinar se um novo inseto for incorporado ao grupo o mesmo é uma joaninha ou uma lagarta em função da largura e comprimento do mesmo.Para fazer isso devemos especificar um parâmetro de classificação que defina claramente a separação entre os dois grupos em função de seus pespectivoscomprimentos e larguras.

Page 7: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O treinamento para o estabelecimento de um parâmetro de classificação permite determinar se um novo inseto incorporado ao conjunto de insetos é uma joaninha ou uma lagarta.

A rede neural deve ser treinada para estabelecer as ponderações e polarizações necessárias para se obter parâmetros ótimos de classificação.

(Nesse caso específico temos um classificador linear).

Page 8: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Tabela de aspectos joaninhas lagartas

comprimento 1 3

largura 3 1

Exemplo muito simples do

treinamento das redes neurais utilizando um classificador

linear

Page 9: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝐸𝑟𝑟𝑜𝑥=3 = 𝑡 − 𝑦 = 1,1 − 0,25 × 3 = 0,35 ⇒ Δ𝐴 =𝐸𝑟𝑟𝑜𝑥𝑥

=0,35

3= 0,1167

𝐸𝑟𝑟𝑜𝑥 = 𝑡 − 𝑦 = 𝐴 + Δ𝐴 𝑥 − 𝐴𝑥 = Δ𝐴 × 𝑥 ⇒ Δ𝐴 =𝐸𝑟𝑟𝑜𝑥𝑥

Ponto (3,1)

y = 0,25.x

0,25 arbitrário

Note que 0,25+0,1167 = 0,3667 = 1,1/3 que é a declividade da reta que passa por (x,y) = (0,0) e (x,y) = (3 , 1.1).

O treinamento da rede neural

Page 10: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝑦𝑥=1 = 0,3667 × 1 = 0,3667 ⇒ 𝐸𝑟𝑟𝑜𝑥=1 = 2,9 − 0,3667 = 2,5333 ⇒ Δ𝐴 =𝐸𝑟𝑟𝑜𝑥=1

1= 2,5333

O treinamento da rede neural

y=2,5333.x

Portanto o classificador linear com o uso do critério analisado é dado pela expressão:

Classificador refinado

Page 11: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O treinamento da rede neural

Vamos revisar o mesmo problema introduzindo uma taxa de aprendizado L no processo.

Δ𝐴 = 𝐿𝐸𝑟𝑟𝑜

𝑥Vamos adotar L=0,5 e voltar a passo inicial anterior:No ponto (1,3) (x=3, y=0,25.3=0,75

Δ𝐴 = 0,51,1 − 0,75

3= 0,0583

𝐴𝑛𝑜𝑣𝑜1 = 0,25 + 0,0583 = 0,3085 ⇒ 𝑦𝑛𝑜𝑣𝑜𝑥=3 = 0,3085 × 3 = 0,9350

Esse valor de y é menor que 1,1 o que significa que esse coeficiente de reta é uma mau classificador linear.

Digite a equação aqui.Vamos verificar o ponto (1,3) onde x=1 com Ainicial=0,3085

𝑦𝑥=1 = 0,3085 × 1 = 0,3085

Δ𝐴 = 0,52,9 − 0,3085

1= 1,2958

𝐴𝑛𝑜𝑣𝑜2 = 0,3085 + 1,2958 ⇒ 𝑦𝑛𝑜𝑣𝑜𝑥=1 = 1,6043

Page 12: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O treinamento

da rede neural

Page 13: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A TEORIA QUE SUPORTA A SOLUÇÃOIntrodução as redes neurais

Page 14: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Nas redes neurais as poderações (pesos) e a polarizações (biases) iniciais são definidas arbitrariamente por um processo aleatório (randômico) que pode (e é) ser gerado por software.Uma vez estabelecidos esses parâmetros, ele são ajustados continuamente na fase de treinamento pra minimizar sua capacidade de detectar cada rótulo definido previamente (APRENDIZADO SUPERVISIONADO). Cada rótulo ou aspecto de saída deve ser fornecido nessa fase para evitar enganos da rede neural. Note que o processo de identificação ou previsão é probabilístico.

Page 15: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Na fase de identificação cada aspecto possível recebe um valor relativo a probabilidade de que possa ser um determinado aspecto, ao final o algoritmo escolhe o aspecto de maior probabilidade como sendo o possível resultado da classificação.

As Redes Neurais podem cometer e cometem erros e isso pode ser medido relacionando as taxas de acerto em relação aos erros, o que gera um valor de desempenho que pode ser porcentual, quais mais próximo de 100% melhor é o desempenho da rede neural.

Page 16: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A rede estudada nesse curso não utiliza de parâmetros de polarizações bij, mas apenas de ponderações ou pesos wij

Os parâmetros wij são ajustados continuamente no processo de treinamento da rede neural, de modo que cada aspecto possível de entrada fica muito bem definido por um determinado grupo de parâmetros wij.

Page 17: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Rede Neural com 3 camadas de entrada, 3 camadas

escondidas e 3 camadas de saída

Wih são as ponderações (pesos) entre a camada de entrada e a camada de saídaWho são as ponderações entre as camadas escondidas e as camadas de saída

Topologia de uma rede neural de 3 camadas de entrada, 3 camadas escondidas e 3 camadas de saída

Page 18: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Preparaçãopara o

treinamentoda rede

𝒙𝒉𝟏 = 𝒘𝒊(𝟏,𝟏)𝑰𝟏 +𝒘𝒊(𝟐,𝟏)𝑰𝟐 +𝒘𝒊(𝟑,𝟏)𝑰𝟑

𝒙𝒉𝟐 = 𝒘𝒊(𝟏,𝟐)𝑰𝟏 +𝒘𝒊(𝟐,𝟐)𝑰𝟐 +𝒘𝒊(𝟑,𝟐)𝑰𝟑

𝒙𝒉𝟑 = 𝒘𝒊(𝟏,𝟑)𝑰𝟏 +𝒘𝒊(𝟐,𝟑)𝑰𝟐 +𝒘𝒊(𝟑,𝟑)𝑰𝟑

Produto escalar(dot product) da camada escondida(inputs hidden)

Informações de entrada

para treinamento

Page 19: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝑥ℎ1𝑥ℎ2𝑥ℎ3

=

𝑤𝑖(1,1) 𝑤𝑖(2,1) 𝑤𝑖(3,1)

𝑤𝑖(1,2) 𝑤𝑖(2,2) 𝑤𝑖(3,2)

𝑤𝑖(1,3) 𝑤𝑖(2,3) 𝑤𝑖(3,3)

𝐼1𝐼2𝐼3

Matricialmente, temos:

𝒙𝒉𝟏, 𝒙𝒉𝟐 e 𝒙𝒉𝟏Correspondem as inputs hidden da rede neural e são os valores que devem entrar na primeira função de

ativação

Page 20: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A maior ou menor significância do valor definido pela soma dos produtos das ponderações e as variáveis a elas associados é definido pela função de ativação. A função de ativação define a relevância do valor introduzido em um determinado nó ou camada, por suas respectivas entradas (e valores dos parâmetros de ponderação).

Page 21: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝒚𝒊𝒉𝟏 =𝟏

𝟏 + 𝒆−𝒙𝒉𝟏

𝒚𝒊𝒉𝟐 =𝟏

𝟏 + 𝒆−𝒙𝒉𝟐

𝒚𝒊𝒉𝟑 =𝟏

𝟏 + 𝒆−𝒙𝒉𝟑

A função de ativação e as

inputs hidden

Camada escondida(hidden layer)

Funções de ativação das

inputs hidden

𝒙𝒉𝟏 = 𝒘𝒊(𝟏,𝟏)𝑰𝟏 +𝒘𝒊(𝟐,𝟏)𝑰𝟐 +𝒘𝒊(𝟑,𝟏)𝑰𝟑𝒙𝒉𝟐 = 𝒘𝒊(𝟏,𝟐)𝑰𝟏 +𝒘𝒊(𝟐,𝟐)𝑰𝟐 +𝒘𝒊(𝟑,𝟐)𝑰𝟑𝒙𝒉𝟑 = 𝒘𝒊(𝟏,𝟑)𝑰𝟏 +𝒘𝒊(𝟐,𝟑)𝑰𝟐 +𝒘𝒊(𝟑,𝟑)𝑰𝟑

Page 22: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝒚 =𝟏

𝟏 + 𝒆−𝒙Quanto maior x, menor é o gradiente e menor é a aprendizagem

A sigmoide

Page 23: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

As regiões relacionadas a sigmoide sigmoide

Fora da faixa de atuação da função de ativação

𝒚 =𝟏

𝟏 + 𝒆−𝒙A função de ativação opera entre os valores 0 e 1

y

x

Page 24: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A relação entre a camada escondida e a camada de saída

Page 25: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝒚𝒐𝟏 =𝟏

𝟏 + 𝒆−𝒙𝒉𝒐𝟏

𝒚𝒐𝟐 =𝟏

𝟏 + 𝒆−𝒙𝒉𝒐𝟐

𝒚𝒐𝟑 =𝟏

𝟏 + 𝒆−𝒙𝒉𝒐𝟑

A função de ativação e as

saídas (outputs)

Camada escondida(hidden layer)

𝒙𝒉𝒐𝟏 = 𝒘𝒉(𝟏,𝟏)𝒚𝒊𝒉𝟏 +𝒘𝒉(𝟐,𝟏)𝒚𝒊𝒉𝟐 +𝒘𝒉(𝟑,𝟏)𝒚𝒊𝒉𝟑𝒙𝒉𝒐𝟐 = 𝒘𝒉(𝟏,𝟐)𝒚𝒊𝒉𝟏 +𝒘𝒉(𝟐,𝟐)𝒚𝒊𝒉𝟐 +𝒘𝒉(𝟑,𝟐)𝒚𝒊𝒉𝟑𝒙𝒉𝒐𝟑 = 𝒘𝒉(𝟏,𝟑)𝒚𝒊𝒉𝟏 +𝒘𝒉(𝟐,𝟑)𝒚𝒊𝒉𝟐 +𝒘𝒉(𝟑,𝟑)𝒚𝒊𝒉𝟑

Funções de ativação das

saídas

Page 26: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O efeito dos erros sobre os parâmetros de ponderação na

fase de treinamento

Page 27: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O ajuste dos parâmetros de ponderação é realizado até que o erro seja zero, mas é óbvio

que o comportamento dos parâmetros de ponderação não é linear, mas sim um grupo de

funções complexas interdependentes e portanto esse ajuste deve ser feito utilizando

técnicas de otimização.

Page 28: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Em geral os processos de otimização são realizados no espaço L2 (Espaço de Hilbert -> Topologia matemática e espaços funcionais) que em geral está relacionado com a energia dos sinais, mas nesse caso é

utilizado no processo de otimização para obtenção dos valores de ponderações das redes neurais.

Portanto a preocupação aqui é minimizar a expressão:

𝐸𝑘2 = 𝑡𝑘 − 𝑂𝑘

2

De modo que:

𝝏𝒇(𝑬𝟐)

𝝏𝒘𝒋𝒌=𝝏𝒇(𝒕𝒌 − 𝒐𝒌)

𝟐

𝝏𝒘𝒋𝒌= 𝟎

Page 29: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

O ajuste dos parâmetros de ponderaçãoO ajuste é feito pela minimização do erro entre os valores de saída de

cada camada e o alvo ou valores intermediários definidos por esse alvo

Um método bastante utilizado para a execução disso é uma variação do método de Newton-Rapson denominado GRADIENT DESCENT.

Se a inclinação do gradiente (derivada em termos planos) for menor que zero os passos deve avançar, ou seja:

𝑥𝑖+1 = 𝑥𝑖 + 𝑝𝑎𝑠𝑠𝑜𝑑𝑦

𝑑𝑥< 0Se Então:

Page 30: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Se a inclinação do gradiente (derivada em termos planos) for menor que zero os passos deve avançar, ou seja:

𝑥𝑖+1 = 𝑥𝑖 − 𝑝𝑎𝑠𝑠𝑜𝑑𝑦

𝑑𝑥> 0Se Então:

𝑑𝑦

𝑑𝑡=0

Corresponde a um mínimo,

porém esse mínimopode ser um mínimolocal.

Page 31: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Função com dois mínimos locais além

do mínimo global dentro da faixa

operacional

[-5,+5]

Page 32: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A busca por um mínimo global de um grupo de dados pode caracterizar-se como uma funçãode fácil definição (testes), ou de difícil definição (até mesmo impossível) é tema de uma sériede algoritmos de otimização, entre os quais podemos destacar, alem do método do gradiente:a) Algoritmos genéticos -> baseados na teoria da evolução via mutação cromossômica.b) Busca de harmonia -> baseado em adaptação musical de bandas de jazz.c) Algoritmos das formigas -> baseado no comportamento das formigasd) Algoritmo dos pirilampos -> baseados no comportamento dos vagalumese) etc

Comportamento do método do gradiente descent

Page 33: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A aplicação do método do gradiente descente para a minimização do erro das redes neurais em relação aos parâmetro de ponderação.

Queremos minimizar: 𝑓 𝐸2 = 𝑓(𝑡𝑘 − 𝑜𝑘)2

Onde tk é o aspecto alvo k e ok é a saída k da rede neural.

Aplicando o método do gradient descent

𝝏𝒇(𝑬𝟐)

𝝏𝒘𝒋𝒌=𝝏𝒇(𝒕𝒌 − 𝒐𝒌)

𝟐

𝝏𝒘𝒋𝒌= 𝟎

𝝏𝒇(𝒕𝒌 − 𝒐𝒌)𝟐

𝝏𝒘𝒋𝒌= −𝟐(𝒕𝒌 − 𝒐𝒌)

𝝏𝒐𝒌𝝏𝒘𝒋𝒌

Page 34: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝒐𝒌 =𝟏

𝟏 + 𝒆− σ𝒋𝒘𝒋𝒌𝒐𝒋= 𝒔𝒊𝒈𝒎𝒐𝒊𝒅

𝒋

𝒘𝒋𝒌 𝒐𝒋Onde:

𝝏𝒇(𝒕𝒌−𝒐𝒌)𝟐

𝝏𝒘𝒋𝒌= −𝟐(𝒕𝒌 − 𝒐𝒌)

𝝏

𝝏𝒘𝒋𝒌𝒔𝒊𝒈𝒎𝒐𝒊𝒅 σ𝒋𝒘𝒋𝒌 𝒐𝒋

Portanto:

𝝏𝒇(𝒕𝒌 − 𝒐𝒌)𝟐

𝝏𝒘𝒋𝒌= −𝟐(𝒕𝒌 − 𝒐𝒌)

−𝟏

𝟏 + 𝒆− σ𝒋𝒘𝒋𝒌𝒐𝒋𝟐

𝝏 𝒆− σ𝒋𝒘𝒋𝒌𝒐𝒋

𝝏𝒘𝒋𝒌

𝝏𝒇(𝒕𝒌 − 𝒐𝒌)𝟐

𝝏𝒘𝒋𝒌= − 𝒕𝒌 − 𝒐𝒌 × 𝒔𝒊𝒈𝒎𝒐𝒊𝒅

𝒋

𝒘𝒋𝒌𝒐𝒋 × 𝟏 − 𝒔𝒊𝒈𝒎𝒐𝒊𝒅

𝒋

𝒘𝒋𝒌𝒐𝒋 × 𝒐𝒋 = 𝟎

Page 35: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

INTRODUÇÃO A PARTE INICIAL EM TERMOS NUMÉRICOS

Page 36: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

FA=Função de Ativação

Page 37: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝑥ℎ1′

𝑥ℎ2′

𝑥ℎ3′

=0,7 0,2 0,40,2 0,8 0,60,1 0,3 0,2

0,90,10,8

=0,970,740,28

=0,97

=0,74

=0,28

Operações nacamada

escondida:A soma das

ponderações e os nós de entrada

Dentro da camada escondida

Page 38: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝒙𝒉𝟏 = 𝟏 + 𝒆−𝟎,𝟗𝟕 = 1,379𝒙𝒉𝟐 = 𝟏 + 𝒆−𝟎,𝟕𝟒 = 𝟏, 𝟒𝟕𝟕𝒙𝒉𝟑 = 𝟏 + 𝒆−𝟎,𝟐𝟖 = 𝟏, 𝟕𝟓𝟔

=1,379

=1,477

=1,756

A matemáticapor traz das

redes neurais: A função de ativação da

camadaescondida

Dentro da camada escondida

Page 39: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 40: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

𝑥𝑜1′

𝑥𝑜2′

𝑥𝑜3′

=

𝑤𝑜ℎ(1,1) 𝑤𝑜ℎ(1,2) 𝑤𝑜ℎ(1,3)𝑤𝑜ℎ(2,1) 𝑤𝑜ℎ(2,2) 𝑤𝑜ℎ(2,3)𝑤𝑜ℎ(3,1) 𝑤𝑜ℎ(3,2) 𝑤𝑜ℎ(3,3)

𝑥ℎ1𝑥ℎ2𝑥ℎ3

𝑥𝑜1′

𝑥𝑜2′

𝑥𝑜3′

=0,1 0,3 0,40,5 0,4 0,10,4 0,7 0,55

1,3791,4771,756

=1,2841,4562,551

Funções de ativação da camada de saída

𝑭𝑨𝒐𝟏 ⇒ 𝒙𝒐𝟏 =𝟏

𝟏 + 𝒆−𝟏,𝟐𝟖𝟒= 𝟎, 𝟕𝟖𝟑𝟏

𝑭𝑨𝒐𝟐 ⇒ 𝒙𝒐𝟏 =𝟏

𝟏 + 𝒆−𝟏,𝟒𝟓𝟔= 𝟎, 𝟖𝟏𝟎𝟗

𝑭𝑨𝒐𝟑 ⇒ 𝒙𝒐𝟏 =𝟏

𝟏 + 𝒆−𝟐,𝟓𝟓𝟏= 𝟎, 𝟗𝟐𝟕𝟔

Produto da matriz de Ponderações entre as camadas escondida e de saída e a saída da camada escondida

Page 41: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A LINGUAGEM PYTHON

Page 42: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A PYTHON é uma linguagem interpretada (a linguagem C é compilada) construída sobre a linguagem C.

A linguagem é suportada (pode ser utilizada) pelos sistemas operacionais WINDOWS, LINUX e MAC (Aple)E contém uma quantidade apreciável de pacotes de suporte, sendo os principais, os principais:

➢ NUMPY – Suporta uma gama bastante grande de operações numéricas e de abertura e salvamento de arquivos

➢ SCIPY – Complementa a NUMPY➢ MATPLOTLIB – É uma biblioteca de suporte a operações gráficas bi e

tridimensionais.

𝑵𝑼𝑴𝑷𝒀 + 𝑺𝑪𝑰𝑷𝒀 + 𝑴𝑨𝑻𝑷𝑳𝑶𝑻𝑳𝑰𝑩 ≅ 𝑴𝑨𝑻𝑳𝑨𝑩 (𝒃á𝒔𝒊𝒄𝒐)

Porém PYTHON é gratuíta

Page 43: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

A PYTHON suporta tanto a programação baseada emobjetos como a programaçãobaseada em procedimentos

Page 44: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

ESPECIFICAÇÃO E INSTANCIAMENTO DA REDE NEURALCamadas de entrada (input layers)=784 (número pontos de cada caractere do arquivo de imagem )

Camadas escondidas (hidden layers)=200Camadas de saída (output layers)=10 (conjunto dos caracteres numéricos)

Taxa de aprendizado da rede neural (learning_rate)=0.3

# número de nós de entrada, escondidos e de saídainput_nodes = 784hidden_nodes = 200output_nodes = 10

# Define a taxa de aprendizadolearning_rate = 0.03

# Crie uma instância da rede neuraln = neuralNetwork(input_nodes,hidden_nodes,output_nodes, learning_rate)

Page 45: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

28 pontos

28 pontos

Imagem de um caractere numérico com 28 pontos de altura e 28 pontos de largura em escala de cinza, ou seja cada pixel da imagem tem intensidade entre 0 (preto) e 255 (branco).O número total de pontos é 28 x 28 = 784

Page 46: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

➢ Carregar o arquivo de dados de treinamento➢ Passe o arquivo para a forma de lista e salve-o➢ Feche o arquivo

➢ Elimine as vírgulas da lista➢ Carregue todos valores da lista separando os a partir

posição da vírgula.➢ Leia o primeiro elemento da lista que corresponde ao

caractere efetivo que será usado para verificação do competência da rede neural.

➢ Fixe as entradas da rede neural ajustando todos os valores da lista para a faixa operacional da função de ativação.

➢ Gere um arranjo de zeros para o ALVO de saída (=10).➢ Fixe todos os valores do ALVO em 0.01.➢ Fixe todos os valores relativos ao valor correto do ALVO

em 0.99.➢ Treine a rede neural

Preparaçãopara o

treinamentoda rede

Page 47: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,18,18,126,136,175,26,166,255,247,127,0,0,0,0,0,0,0,0,0,0,0,0,30,36,94,154,170,253,253,253,253,253,225,172,253,242,195,64,0,0,0,0,0,0,0,0,0,0,0,49,238,253,253,253,253,253,253,253,253,251,93,82,82,56,39,0,0,0,0,0,0,0,0,0,0,0,0,18,219,253,253,253,253,253,198,182,247,241,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,156,107,253,253,205,11,0,43,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,1,154,253,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,253,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,190,253,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,241,225,160,108,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,240,253,253,119,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,186,253,253,150,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,93,252,253,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,253,249,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,130,183,253,253,207,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,148,229,253,253,253,250,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,114,221,253,253,253,253,201,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,66,213,253,253,253,253,198,81,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,171,219,253,253,253,253,195,80,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,172,226,253,253,253,253,244,133,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,253,253,253,212,135,132,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Imagens do caractere “5” e o conteúdo numérico relativo a primeira imagem.

Page 48: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,148,210,253,253,113,87,148,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,232,252,253,189,210,252,252,253,168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,57,242,252,190,65,5,12,182,252,253,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,252,183,14,0,0,92,252,252,225,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,253,252,146,14,0,0,0,215,252,252,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,253,247,176,9,0,0,8,78,245,253,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,252,176,0,0,0,36,201,252,252,169,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,252,252,30,22,119,197,241,253,252,251,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,231,252,253,252,252,252,226,227,252,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,235,253,217,138,42,24,192,252,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,255,253,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,253,252,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,255,253,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,252,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,252,189,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,184,252,170,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,147,252,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Imagens do caractere “9” e o conteúdo numérico relativo a primeira imagem.

Page 49: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

➢ Elimine as vírgulas da lista➢ Carregue todos valores da lista separando os a partir posição

da vírgula.➢ Leia o primeiro elemento da lista que corresponde ao caractere

efetivo que será usado para verificação do competência da rede neural.

➢ Fixe as entradas da rede neural ajustando todos os valores da lista para a faixa operacional da função de ativação.

➢ Gere as saídas da rede a partir das entrada utilizando a função de consulta (query).

➢ Leia a resposta mais provável fornecida pela rede a partir dos 10 nós de saída.

➢ Avalie o desempenho da rede neural comparando a resposta da mesma com o elemento efetivo fornecido pelo arquivo original.

➢ Carregar o arquivo de dados para classificação➢ Passe o arquivo para a forma de lista e salve-o➢ Feche o arquivo

CAMADA DE TÔPO DO

SISTEMA DE CLASSIFICAÇÂO UTILIZANDO A REDE NEURAL

Page 50: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

TREINAMENTODurante o

treinamento as poderações são

ajustadas para um nível ótimo de

previsão.

CLASSIFICAÇÃOOs valoresótimos das

ponderaçõestreinadas sãoutilizados no processo de classificação

OPERAÇÃO DA REDE NEURAL

Page 51: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 52: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

TREINAMENTO DA REDE NEURAL

#load o arquivo mnist para o treinamento da rede em uma lista#load o arquivo mnistf = open("D://NN_data/mnist100.txt", "r")training_data_list=f.readlines()f.close()

# treine a rede neural

# epochs é o número de vezes que o conjunto de dados de treinamento#é utlizado para treinamento

epochs = 10

for e in range(epochs):# Obtenha todos os records dos dados de treinamentofor record in training_data_list:

# separe os dados utilizando as vírgulas ‘ , ' all_values = record.split(',')# escalone os valores e desloque para uso com a função de ativaçãoinputs = (np.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01# obtenha os valores alvo das saídas fixando os em 0,99 e o restante do record em 0.01targets = np.zeros(output_nodes) + 0.01# all_values[0] é o rótulo dos valores corretos de cada record (all_values)targets[int(all_values[0])] = 0.99n.train(inputs, targets) #treine a rede neuralpass

pass

Page 53: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Definição dos pacotes a serem utilizados no programa.

Page 54: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 55: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 56: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 57: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 58: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 59: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 60: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 61: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 62: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 63: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos

Tabela de saídagerada pela rede

neural com as classificações

mais prováveis de cada charactere

analisado.

As três últimas classificações estão corretas, mas a primeira classificação está incorreta o que mostra que o desempenho da rede para essa taxa de aprendizado e esse valor de epochs tem desempenho menor de um.

PERFORMANCE=0,96

3

Page 64: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 65: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos
Page 66: Introdução a Inteligência Artificialmetaheuro.com.br › ... › Introdu%E7%E3o%20a%20Intelig%EAncia%20… · Inteligência Artificial Classificação de caracteres numéricos