·
Engenharia Elétrica ·
Outros
Send your question to AI and receive an answer instantly
Preview text
1 21 Redes Neurais Artificiais Aspectos computacionais 2 21 Aspectos computacionais Nessa aula vamos discutir um pouco os aspectos computacionais que envolvem a implementação e aplicação de um Perceptron Os exemplos e trechos de códigos apresentados utilizarão o software Octave entretanto os conceitos podem ser facilmente transportados para outros ambientes e linguagens de programação O GNU Octave é um software voltado para aplicações científicas com uma sintaxe de programação focada em manipulação matemática sendo muito útil em muitas disciplinas ao longo do curso 3 21 O software Octave Imagens tiradas do site oficial do Octave httpswwwoctaveorg em 05032023 Exemplo da sintaxe do Octave 4 21 Aspectos para implementação Relembrando o perceptron tem as seguintes partes básicas que devemos considerar Vamos discutir os aspectos computacionais de cada um deles separadamente Fonte da figura Redes Neurais Artificiais para Engenharia e Ciências Aplicadas Silva I N Spatti D H e Flauzino R A Artliber 2ª ed 2016 5 21 Os dados de entrada Para a utilização na rede perceptron os dados de entrada que foram coletados em campo devem ser normalizados Isso impede que os cálculos sejam feitos com diferentes ordens de grandeza o que diminui sua precisão 6 21 O limiar Uma vez que temos os dados de entrada normalizados o próximo passo é considerar o parâmetro do limiar de ativação A utilização desse parâmetro no perceptron é implementada de forma muito simples uma vez que a equação de atualização dos pesos é igual para ambos 7 21 O limiar Dessa forma podemos simplesmente transformar o limiar de ativação em uma entrada adicional ao nosso perceptron Isso é feito acrescentando um sinal de entrada com o valor 1 para todas as amostras de modo que ele seja subtraído na somatória 8 21 O limiar Por exemplo suponha que temos uma aplicação onde desejamos treinar uma rede perceptron com três entradas e para isso levantamos quatro amostras em campo Amostra 1 01 04 07 Classe B Amostra 2 03 07 02 Classe A Amostra 3 06 09 08 Classe A Amostra 4 05 07 01 Classe B Consideraremos nesse exemplo que a classe A é representada pela saída 1 e a classe B pela saída 1 9 21 O limiar Nessa situação nossos dados de entrada serão Sinais do limiar X0 Amostra 1 Amostra 2 Amostra 3 Amostra 4 X1 X2 X3 10 21 A importância do limiar Antes de discutirmos a implementação do limiar de ativação e dos pesos sinápticos vamos discutir um pouco seus significados matemáticos e sua importância Considerando um neurônio com apenas duas entradas Fonte da figura Redes Neurais Artificiais para Engenharia e Ciências Aplicadas Silva I N Spatti D H e Flauzino R A Artliber 2ª ed 2016 11 21 A importância do limiar Dissemos que a fronteira das entradas ponderadas tornase uma reta em um gráfico de x1 por x2 dividindo as amostras em duas classes Vamos agora mostrar como isso acontece e aproveitar para investigar qual é o papel que o limiar de ativação θ exerce no perceptron Primeiro considerando a equação sem o limiar de ativação teremos que é a equação de uma reta em um plano 12 21 A importância do limiar Com o código abaixo podemos visualizar a reta obtida para valores de w1 02 e w2 03 Imagem gerada no GNU Octave 13 21 A importância do limiar Note que temos um problema pois para qualquer valor de peso que coloquemos em w1 e w2 a reta sempre passará pela origem Imagem gerada no GNU Octave ww11 02 e w 02 e w22 03 03 ww11 05 e w 05 e w22 01 01 ww11 03 e w 03 e w22 06 06 ww11 07 e w 07 e w22 04 04 14 21 A importância do limiar Se acrescentamos o parâmetro θ teremos então a seguinte equação Imagem gerada no GNU Octave ww11 02 w 02 w22 03 e 03 e θθ 0 0 ww11 02 w 02 w22 03 e 03 e θθ 02 02 ww11 02 w 02 w22 03 e 03 e θθ 04 04 ww11 02 w 02 w22 03 e 03 e θθ 06 06 ww11 02 w 02 w22 03 e 03 e θθ 06 06 ww11 02 w 02 w22 03 e 03 e θθ 04 04 ww11 02 w 02 w22 03 e 03 e θθ 02 02 15 21 Implementando a rede O primeiro passo é limpar os registradores do programa o que pode ser feito pelos comandos Para entrar com os dados no software podemos utilizar diferentes métodos O primeiro é digitar diretamente os dados no script conforme Imagem gerada no GNU Octave 16 21 Implementando a rede Outra possibilidade é pedir para o Octave ler os dados de um arquivo externo Supondo que nosso banco de dados esteja em um arquivo de texto podemos usar o seguinte comando onde ascii referese ao fato de usarmos um arquivo de texto codificado com caracteres ASCII e dadostxt é o nome do arquivo Caso ele não esteja na pasta usada como diretório pelo Octave é necessário colocar o caminho completo do arquivo Imagem gerada no GNU Octave 17 21 Implementando a rede Para codificar os dados como arquivo de texto é necessário separar os dados usando tab sem strings de texto Outros tipos de formato são possíveis como arquivos binários planilhas ou bancos de dados Imagem gerada no GNU Octave 18 21 Implementando a rede Para entrar com os pesos sinápticos o procedimento dependerá se eles foram fornecidos ou devem ser gerados aleatoriamente Depois definese o número de amostras o valor da taxa de aprendizagem η e o contador de erro para verificar se a rede errou alguma amostra naquela época Imagem gerada no GNU Octave 19 21 Implementando a rede A parte principal do algoritmo de treinamento pode ser implementada utilizando uma função while para verificar a ocorrência de erros de classificação um for para testar todas as amostras e um if para verificar se é necessário atualizar os pesos sinápticos conforme o algoritmo que está no slide 16 do material da aula passada Imagem gerada no GNU Octave 20 21 Implementando a rede Note que a função degrau pode ser implementada usando uma lógica if como abaixo ou através do comando sign como no slide anterior Para saber mais sobre um comando você pode digitar help e o comando desejado na área de trabalho Imagem gerada no GNU Octave 21 21 Implementando a rede Para a etapa de teste você precisará Carregar os dados de teste de um arquivo externo Informar a quantidade de padrões de teste Utilizar um comando for onde Calculase a resposta para cada padrão O resultado de cada amostra é mostrado na tela Imagem gerada no GNU Octave
Send your question to AI and receive an answer instantly
Preview text
1 21 Redes Neurais Artificiais Aspectos computacionais 2 21 Aspectos computacionais Nessa aula vamos discutir um pouco os aspectos computacionais que envolvem a implementação e aplicação de um Perceptron Os exemplos e trechos de códigos apresentados utilizarão o software Octave entretanto os conceitos podem ser facilmente transportados para outros ambientes e linguagens de programação O GNU Octave é um software voltado para aplicações científicas com uma sintaxe de programação focada em manipulação matemática sendo muito útil em muitas disciplinas ao longo do curso 3 21 O software Octave Imagens tiradas do site oficial do Octave httpswwwoctaveorg em 05032023 Exemplo da sintaxe do Octave 4 21 Aspectos para implementação Relembrando o perceptron tem as seguintes partes básicas que devemos considerar Vamos discutir os aspectos computacionais de cada um deles separadamente Fonte da figura Redes Neurais Artificiais para Engenharia e Ciências Aplicadas Silva I N Spatti D H e Flauzino R A Artliber 2ª ed 2016 5 21 Os dados de entrada Para a utilização na rede perceptron os dados de entrada que foram coletados em campo devem ser normalizados Isso impede que os cálculos sejam feitos com diferentes ordens de grandeza o que diminui sua precisão 6 21 O limiar Uma vez que temos os dados de entrada normalizados o próximo passo é considerar o parâmetro do limiar de ativação A utilização desse parâmetro no perceptron é implementada de forma muito simples uma vez que a equação de atualização dos pesos é igual para ambos 7 21 O limiar Dessa forma podemos simplesmente transformar o limiar de ativação em uma entrada adicional ao nosso perceptron Isso é feito acrescentando um sinal de entrada com o valor 1 para todas as amostras de modo que ele seja subtraído na somatória 8 21 O limiar Por exemplo suponha que temos uma aplicação onde desejamos treinar uma rede perceptron com três entradas e para isso levantamos quatro amostras em campo Amostra 1 01 04 07 Classe B Amostra 2 03 07 02 Classe A Amostra 3 06 09 08 Classe A Amostra 4 05 07 01 Classe B Consideraremos nesse exemplo que a classe A é representada pela saída 1 e a classe B pela saída 1 9 21 O limiar Nessa situação nossos dados de entrada serão Sinais do limiar X0 Amostra 1 Amostra 2 Amostra 3 Amostra 4 X1 X2 X3 10 21 A importância do limiar Antes de discutirmos a implementação do limiar de ativação e dos pesos sinápticos vamos discutir um pouco seus significados matemáticos e sua importância Considerando um neurônio com apenas duas entradas Fonte da figura Redes Neurais Artificiais para Engenharia e Ciências Aplicadas Silva I N Spatti D H e Flauzino R A Artliber 2ª ed 2016 11 21 A importância do limiar Dissemos que a fronteira das entradas ponderadas tornase uma reta em um gráfico de x1 por x2 dividindo as amostras em duas classes Vamos agora mostrar como isso acontece e aproveitar para investigar qual é o papel que o limiar de ativação θ exerce no perceptron Primeiro considerando a equação sem o limiar de ativação teremos que é a equação de uma reta em um plano 12 21 A importância do limiar Com o código abaixo podemos visualizar a reta obtida para valores de w1 02 e w2 03 Imagem gerada no GNU Octave 13 21 A importância do limiar Note que temos um problema pois para qualquer valor de peso que coloquemos em w1 e w2 a reta sempre passará pela origem Imagem gerada no GNU Octave ww11 02 e w 02 e w22 03 03 ww11 05 e w 05 e w22 01 01 ww11 03 e w 03 e w22 06 06 ww11 07 e w 07 e w22 04 04 14 21 A importância do limiar Se acrescentamos o parâmetro θ teremos então a seguinte equação Imagem gerada no GNU Octave ww11 02 w 02 w22 03 e 03 e θθ 0 0 ww11 02 w 02 w22 03 e 03 e θθ 02 02 ww11 02 w 02 w22 03 e 03 e θθ 04 04 ww11 02 w 02 w22 03 e 03 e θθ 06 06 ww11 02 w 02 w22 03 e 03 e θθ 06 06 ww11 02 w 02 w22 03 e 03 e θθ 04 04 ww11 02 w 02 w22 03 e 03 e θθ 02 02 15 21 Implementando a rede O primeiro passo é limpar os registradores do programa o que pode ser feito pelos comandos Para entrar com os dados no software podemos utilizar diferentes métodos O primeiro é digitar diretamente os dados no script conforme Imagem gerada no GNU Octave 16 21 Implementando a rede Outra possibilidade é pedir para o Octave ler os dados de um arquivo externo Supondo que nosso banco de dados esteja em um arquivo de texto podemos usar o seguinte comando onde ascii referese ao fato de usarmos um arquivo de texto codificado com caracteres ASCII e dadostxt é o nome do arquivo Caso ele não esteja na pasta usada como diretório pelo Octave é necessário colocar o caminho completo do arquivo Imagem gerada no GNU Octave 17 21 Implementando a rede Para codificar os dados como arquivo de texto é necessário separar os dados usando tab sem strings de texto Outros tipos de formato são possíveis como arquivos binários planilhas ou bancos de dados Imagem gerada no GNU Octave 18 21 Implementando a rede Para entrar com os pesos sinápticos o procedimento dependerá se eles foram fornecidos ou devem ser gerados aleatoriamente Depois definese o número de amostras o valor da taxa de aprendizagem η e o contador de erro para verificar se a rede errou alguma amostra naquela época Imagem gerada no GNU Octave 19 21 Implementando a rede A parte principal do algoritmo de treinamento pode ser implementada utilizando uma função while para verificar a ocorrência de erros de classificação um for para testar todas as amostras e um if para verificar se é necessário atualizar os pesos sinápticos conforme o algoritmo que está no slide 16 do material da aula passada Imagem gerada no GNU Octave 20 21 Implementando a rede Note que a função degrau pode ser implementada usando uma lógica if como abaixo ou através do comando sign como no slide anterior Para saber mais sobre um comando você pode digitar help e o comando desejado na área de trabalho Imagem gerada no GNU Octave 21 21 Implementando a rede Para a etapa de teste você precisará Carregar os dados de teste de um arquivo externo Informar a quantidade de padrões de teste Utilizar um comando for onde Calculase a resposta para cada padrão O resultado de cada amostra é mostrado na tela Imagem gerada no GNU Octave