monitoria de sistemas inteligentes if684
DESCRIPTION
Monitoria de Sistemas Inteligentes IF684. Cleivson Siqueira Rafael Santos Profª Teresa Ludermir. Roteiro Aula em www/~rhss/Monitoria SI. Matlab Operações e operadores Funções Controle de fluxo Arquivos .m Gráficos Projeto da disciplina. Matlab. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/1.jpg)
Cleivson SiqueiraRafael Santos
Profª Teresa Ludermir
![Page 2: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/2.jpg)
Matlab Operações e operadores Funções Controle de fluxo Arquivos .m Gráficos Projeto da disciplina
![Page 3: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/3.jpg)
Matrix LABoratory é um software de alta performance voltado para o cálculo numérico.
Ele integra análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos.
Problemas e soluções são expressos matematicamente através de matrizes.
![Page 4: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/4.jpg)
É uma linguagem interpretada, ou seja, cada comando é lido e interpretado um por vez.
Comandos são escritos na janela de comando.
Tudo é considerado matriz. Dados escalares são considerados com matrizes 1x1. ◦ Ex: x = 10; x = [1 2 3]; x = ‘palavra’
![Page 5: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/5.jpg)
Quando o matlab é carregado, é exibida a janela de comando (comand window) com o prompt “>>” para entrada de dados
Não existe posição zero, o primeiro índice da matriz é igual a 1.◦ Ex: x = ‘matlab’ e em seguida a = x(0), será
gerado um erro.
![Page 6: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/6.jpg)
Declaração de variáveis◦ As declarações no matlab são da forma:
>> var = exp ou simplesmente >> exp Declarando uma matriz
◦ As matrizes podem ser inseridas no matlab através de uma lista explícita, carregadas de arquivos .m ou geradas por funções. Ex: A = [0 1 2; 3 4 9; 5 6 7]
Concatenando matrizes C = [A,B]◦ Uma nova matriz C recebe a concatenação de
outras duas já existentes.
![Page 7: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/7.jpg)
Recuperando dados da minha matriz◦ Se a matriz for unidimensional, basta fornecer o
índice do elemento Ex: a = ‘texto’ ; c = a(3) -> c = x
◦ Se a matriz for multidimensional, deverá ser fornecido a linha e a coluna Ex: a = [0 1 2; 3 4 5; 6 7 8]; c = a(2,3) -> c = 5
◦ O operador usado para comentários de linha é “%”.
![Page 8: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/8.jpg)
O operador “:” serve para gerar vetores de forma mais rápida do que digitar elemento por elemento.◦ Ex: a = [1:6] gera como vetor a matriz a = [1 2 3
4 5 6]◦ Pode-se escolher de quanto será o incremento.
Ex: a = [1:2:6] gera como vetor a matriz a = [1 3 5] Ex: a = [1:3:6] gera como vetor a matriz a = [1 4]
Formato : [inicio: incremento: fim]
![Page 9: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/9.jpg)
Os operadores “+” e “-” só são aplicados a matrizes de mesma dimensão. ◦ A = [1 2 3] “+/-” [4 5 6] gera como matriz [5 7 9]◦ A = [1 2 3] “+” [4 5] gera um erro
Já o operador “*” só pode ser aplicado quando A(nxm)*B(mxp)
◦ Ex: a = [1 2;4 5] * [1 2 0;4 5 6]
Os cálculos obedecem às regras das operações matriciais, uma vez que tudo em matlab é tratado como matriz
![Page 10: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/10.jpg)
Há um lista de funções que podem ser usadas no matlab, dentre elas podemos citar:
◦ Cos(arg), sin(arg) e tan(arg) que retorna o cosseno, seno e tangente respectivamente do argumento que deve ser expresso em radianos
◦ Log(a) e log10(a) que retorna o logaritmo na base neperiana e na base 10 de um número
◦ Para saber como utilizar uma função basta digitar no prompt help nome_funcao
![Page 11: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/11.jpg)
Tabela com as funções disponíveis em matlab:
![Page 12: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/12.jpg)
Os comandos que controlam o fluxo de execução especificam a ordem em que a computação é realizada.◦ Ex: a = 10
for i = 1: 5, a = a + 1; end x = a -> x= 15
A primeira parte (i=1) é realizada uma vez, antes do laço ser iniciado.
A segunda parte (i<5) é o teste que controla o laço.Se verdadeira, o corpo do laço (a = a + 1) é executado.
![Page 13: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/13.jpg)
Se a avaliação do teste for falsa, o laço termina.
O comando end é usado para delimitar o limite inferior do corpo do laço, seu fim.
![Page 14: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/14.jpg)
No laço while, avalia-se primeiro a condição, sendo verdadeira o corpo do while é executado, caso contrário, encerra-se o laço.◦ Ex: a = 1, b = 15;
While a < b, a = a + 1; b = b – 1; end
Os comandos for e while são muito usados para operar com matrizes.
![Page 15: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/15.jpg)
Os comandos do matlab são normalmente digitados na janela de comando.
Apenas uma linha de comando é introduzida na janela que posteriormente é interpretada.
Porém, o matlab oferece a opção de executar seqüências de comandos armazenadas em arquivos.
![Page 16: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/16.jpg)
Os arquivos que contêm essas declarações são chamados de arquivos “.m” ou também scripts.
Eles consistem de uma seqüência de comandos normais do matlab.
Exemplo: o script que será usado por vocês para treinarem a rede neural.
![Page 17: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/17.jpg)
O matlab oferece a opção para visualizar gráficos.
Há uma lista com vários comandos para plotar diferentes tipos de gráficos.
Todos esses comandos recebem como argumento um vetor numérico.
![Page 18: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/18.jpg)
Tabela:
![Page 19: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/19.jpg)
Serão usados os problemas disponíveis na conhecida base de dados Proben1.
Cada problema possui 3 arquivos de dados.
Ex: O problema câncer possui os arquivos cancer1.dt, cancer2.dt e cancer3.dt.
Os arquivos diferem na ordem de apresentação dos padrões, dependendo desta ordem a rede neural pode gerar resultados diferentes.
Não haverá equipes com o mesmo arquivo de dados. As equipes terão no máximo 4 integrantes e a equipe deverá mandar email para a monitoria ([email protected]) com o subject (Projeto_Teresa) informando quais são os alunos que compõem a equipe.
![Page 20: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/20.jpg)
◦ Neste projeto, os problemas poderão ser de dois tipos: classificação ou aproximação.
◦ 1) Problemas de Classificação: Dado um padrão (exemplo), a rede deve dar como resposta a classe à qual ele pertence.Idade Renda ... Profissão Classe24 1070 ... Engenheiro Bom pagador... ... ... ... ...40 4700 ... Professor Mau pagador
Atributos numéricos(ou quantitativos)
Atributo categórico(ou qualitativo)
Padrão 1
Padrão N
...
![Page 21: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/21.jpg)
◦ 2) Problemas de Aproximação: Dado um padrão, a rede deve gerar saídas que se aproximem das saídas verdadeiras.
◦ Em ambos os casos, deseja-se generalização, ou seja, que a rede seja capaz de gerar as saídas mais corretas possíveis não apenas para os padrões apresentados no treinamento, mas também para padrões novos.
Temperatura Umidade ... Dir. dos Ventos Quant. chuva
27 0.28 ... Norte 0.12... ... ... ... ...21 0.67 ... Sudeste 1.32
![Page 22: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/22.jpg)
◦ Neste projeto, não será cobrado, pois os dados já foram pré-processados.
◦ É comum fazer normalização (para garantir que os valores estarão dentro de uma determinado intervalo). Nos problemas do Proben é usado o método min-max[0,1]. Exemplo de escalonamento para o intervalo [0,1]:
onde xnorm é o valor normalizado correspondente ao valor original x, e xmin e xmax são os valores mínimo e máximo entre todos os valores (ou separadamente por atributo).
)(
)(
minmax
min
xx
xxxnorm
![Page 23: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/23.jpg)
◦ Particionamento de dados utilizado no Proben1: 50% dos padrões de cada classe escolhidos
aleatoriamente para treinamento, 25% para validação, 25% para teste.
◦ É importante que as proporções entre as classes no conjunto completo de dados sejam mantidas nos conjuntos de treinamento, validação e teste.
◦ Neste projeto, não será cobrado, pois cada arquivo de dados já está dividido em treinamento, validação e teste.
![Page 24: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/24.jpg)
234 345 456 567 678 7891
100
Classe A
987 876 765 654 543 4321
100
Classe B
Normaliza e acrescenta
saídas
Exemplo:
0.12 0.23 0.34 0.45 0.56 0.671
100
Classe A
0 1
0.87 0.76 0.65 0.54 0.43 0.321
Classe B
1 0
100
![Page 25: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/25.jpg)
0.12 ... 0.671
100
Classe A
0 1
0.87 ... 0.321
Classe B
1 0
100
0.12 ... 0.6734
12
Classe A
0 1
0.87 ... 0.3246
Classe B
1 0
78
0.39 ... 0.2708 0 1
0.51 ... 0.9261 1 0
Randomiza
Randomiza
Particiona
Particiona
Classe A (50%)
Classe A (25%)
Classe A (25%)
Classe B (50%)
Classe B (25%)
Classe B (25%)
![Page 26: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/26.jpg)
Classe A (50%)
Classe A (25%)
Classe A (25%)
Classe B (50%)
Classe B (25%)
Classe B (25%)
Classe A (50%)
Classe B (50%)
Classe A (25%)
Classe B (25%)
Classe A (25%)
Classe B (25%)
Treinamento
Validação
Teste
![Page 27: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/27.jpg)
◦ Aspectos que serão fixos neste projeto: Nº de nodos de entrada: Quantidade de atributos de
entrada. Nº de nodos de saída:
Em problemas de classificação, é a quantidade de classes. Regra de classificação winner-takes-all: o nodo de saída
que gerar a maior saída define a classe do padrão. Em problemas de aproximação, é a quantidade de
variáveis de saída. Uma única camada escondida. Função de ativação dos neurônios: sigmóide logística. Todas as possíveis conexões entre camadas adjacentes,
sem conexões entre camadas não-adjacentes.
![Page 28: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/28.jpg)
Conjunto detreinamento
0.12 0.23 0.34 0.45 0.56 0.670 1
Exemplo: 6 entradas e 2 saídas.
![Page 29: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/29.jpg)
◦ Um dos aspectos que serão variados neste projeto: Nº de neurônios escondidos (serão usados 3
valores).◦ Variando o nº de neurônios escondidos, estamos variando
a quantidade de pesos da rede.◦ Explicação:Uma rede neural implementa uma função.
w1
w2
w3
w4
w5
w6
f1
f2
f3
y
x1
x2
y = f3( w5 f1 (w1 x1 + w3 x2) + w6 f2 (w2 x1 + w4 x2) ).
As funções fi são do tiposigmóide logística.
![Page 30: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/30.jpg)
◦ Os pesos da rede são os parâmetros da função.◦ Dessa forma, aumentar a quantidade de pesos da rede
significa aumentar a complexidade da função implementada. Se a quantidade de pesos for pequena demais, pode
haver underfitting. A função implementada não tem complexidade
suficiente para resolver o problema abordado. Se a quantidade de pesos for grande demais, pode
haver overfitting. A função implementada tem complexidade demais para
o problema, sendo capaz de modelar detalhes demais dos dados de treinamento.
Dessa forma, a rede não generaliza bem.
![Page 31: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/31.jpg)
◦ Para ambos os tipos de problema, será usado o erro SSE (sum squared error - soma dos erros quadráticos).
◦ Ex.:Saídas da rede Saídas desejadas
Padrão 1 ... N 1 ... N Nodo 1 0.98 ... 0.12 1.00 ... 0.00Nodo 2 0.02 ... 0.96 0.00 ... 1.00
◦ Soma dos erros quadráticos (SSE): SSE = (0.98 – 1.00)2 + ... + (0.12 – 0.00)2 +
(0.02 – 0.00)2 + ... + (0.96 – 1.00)2.
![Page 32: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/32.jpg)
◦ Para problemas de classificação, também será calculado o erro de classificação (neste projeto, só para o conjunto de teste).
◦ Regra de classificação winner-takes-all: O neurônio de saída que apresentar o maior valor de
saída determina a classe do padrão.– Ex.:
Saídas da rede Saídas desejadas
Padrão 1 ... N 1 ... N Nodo 1 0.98 ... 0.12 1.00 ... 0.00Nodo 2 0.02 ... 0.96 0.00 ... 1.00Classe 1 ... 2 1 ... 2
Erro Classif. = 100 x Quant. de padrões classificados erradamente Quant. total de padrões
![Page 33: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/33.jpg)
◦ Será usado o algoritmo backpropagation padrão. É um algoritmo de gradiente descendente, ou
seja, utiliza informações de derivada. Por isso, as funções de ativação devem ser
contínuas e diferenciáveis (é o caso da sigmóide logística).
◦ Objetivo: Fazer “ajuste de pesos”, ou seja, escolher os pesos que geram as saídas mais corretas possíveis (menor erro) de forma iterativa.
◦ Idéia geral: A cada iteração, obter um erro cada vez menor para os dados de treinamento.
◦ Cuidado: Não permitir que a rede aprenda detalhes demais do conjunto de treinamento (overfitting).
![Page 34: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/34.jpg)
Iteração
SSE
Iteração
Conjunto detreinamento
Conjunto devalidação
(neste exemplo,observado a cada
3 iterações)
Erro mínimo detreinamento
Parada
Erro alto para dados não usados no
treinamento (não generaliza bem)
![Page 35: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/35.jpg)
◦ É recomendável que o treinamento seja interrompido quando o erro no conjunto de validação atingir um mínimo. A partir deste ponto, supõe-se que a rede só
aprenderia detalhes irrelevantes do conjunto de treinamento.
O erro para dados de treinamento seria cada vez menor, mas o erro para dados novos (validação) seria cada vez mais alto.
◦ Neste projeto, será usado o seguinte critério de parada: Interromper o treinamento quando o erro de
validação subir por 5 iterações consecutivas. É o critério implementado no Matlab (parâmetro
“max_fail = 5”).
![Page 36: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/36.jpg)
◦ Neste trabalho, serão escolhidos 3 valores para a taxa de aprendizado do algoritmo backpropagation.
◦ A quantidade máxima de iterações permitidas será fixa (escolhida pela equipe).
◦ Usando taxa de aprendizado muito baixa, cada iteração faz um ajuste muito pequeno nos pesos (passo muito pequeno). Pode precisar de muitas iterações para convergir
para o ponto de mínimo desejado na superfície de busca.
◦ Usando taxa de aprendizado muito alta, cada iteração faz um ajuste muito grande nos pesos (passo muito grande). Pode causar oscilações em torno de um ponto de
mínimo.
![Page 37: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/37.jpg)
◦ Serão usadas: 3 quantidades de neurônios escondidos, 3 taxas de aprendizado.
◦ Temos um total de 9 configurações a serem testadas.◦ Para cada configuração, será realizado um treinamento.◦ A melhor configuração a ser escolhida é a de menor erro
de validação.
Config. SSE de Treinamento SSE de Validação 1 2.13 3.45 2 1.44 0.71 ... ... ... 9 4.43 5.18
Melhor configuração
![Page 38: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/38.jpg)
◦ Para a melhor configuração escolhida, devem ser feitos 10 treinamentos com diferentes inicializações de pesos.
◦ O objetivo é verificar como a melhor rede se comporta quando variamos os pesos iniciais.
Inicialização SSE de Treinamento SSE de Validação SSE de Teste E.Class. de Teste 1 1.12 0.66 0.79 12.08 2 1.44 0.71 0.88 13.32 ... ... ... ... ... 10 1.23 0.66 0.90 09.87Média 1.15 0.70 0.85 11.24Desv-pad 0.07 0.11 0.10 02.35
![Page 39: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/39.jpg)
Os arquivos .dt têm muitos dados
![Page 40: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/40.jpg)
OBSERVAR ESTES NÚMEROS!!!
460 linhas
230 linhas
230 linhas
Treinamento.txt
Validacao.txt
Teste.txt
![Page 41: Monitoria de Sistemas Inteligentes IF684](https://reader035.vdocuments.pub/reader035/viewer/2022062408/568143f6550346895db08332/html5/thumbnails/41.jpg)
Monitores◦ Cleivson Siqueira – [email protected]◦ Rafael Santos – [email protected]