Monitoria de Sistemas Inteligentes
Alice Lucena
Rafael Santos
Prof Teresa Ludermir
Roteiro
Um pouco sobre Matlab
 Operações e operadores
Funções
Controle de fluxo
Arquivos .m
Gráficos
Projeto da disciplina
Matlab
• 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.
Matlab
• É 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 = ‘final’
Matlab
• 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 = ‘projeto’ e em seguida a = x(0), será
gerado um erro.
Operações e operadores
• 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]
Operações e operadores
• Concatenando matrizes C = [A,B]
Uma nova matriz C recebe a concatenação
de outras duas já existentes.
• Recuperando dados da minha matriz
Se a matriz for unidimensional, basta
fornecer o índice do elemento
• Ex: a = ‘texto’ ; c = a(3) -> c = x
Operações e operadores
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 é “%”.
Operações e operadores
• 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]
Detalhe:
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]
Operações e operadores
• 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
Funções
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
Funções
Tabela com as funções disponíveis
em matlab:
Controle de fluxo
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
Explicação:
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.
Controle de fluxo
• 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.
Controle de fluxo
• 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.
Arquivos .m
• 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.
Arquivos .m
• 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.
Gráficos
• 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.
Gráficos
Tabela:
Projeto da disciplina
 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 5 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. Assim que o email for recebido,
será enviado ao grupo o nome do arquivo referente ao seu projeto.
Projeto da disciplina
Neste projeto, os problemas poderão ser de dois
tipos:
Classificação ou Aproximação
Problemas de Classificação:
Dado um padrão (exemplo), a rede deve dar como resposta a classe à
qual ele pertence.
Idade
Renda
...
Profissão
Classe
30
R$ 1.500,00
...
Hair Design
Bom Pagador
...
...
...
...
...
25
R$ 4.695,00
...
Cozinheiro
Mau Pagador
Atributos numéricos
(ou quantitativos)
Atributo categórico
(ou qualitativo)
Padrão 1
Padrão N
Projeto da disciplina
Problemas de Aproximação:
Dado um padrão, a rede deve gerar saídas que se aproximem das saídas
verdadeiras.
Umidade
0.28
...
...
...
...
...
...
...
Temperatura
27
Direção dos ventos Qtde. Chuva
Norte
0.12
21
0.67
...
Sudeste
1.6
Atenção!
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.
Projeto da disciplina
Pré-processamento
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]:
xnorm
( x  xmin )

( xmax  xmin )
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).
Projeto da disciplina
Particionamento dos Dados
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.
Projeto da disciplina
Exemplo:
1
234 345 456 567 678 789
1
Classe A
100
1
987 876 765 654 543 432
0 1
Classe A
Normaliza e
acrescenta
saídas
100
1
Classe B
100
0.12 0.23 0.34 0.45 0.56 0.67
0.87 0.76 0.65 0.54 0.43 0.32
Classe B
100
1 0
Projeto da disciplina
1
0.12 ... 0.67
0 1
100
0 1
08
0.39 ... 0.27
0 1
Classe A
Particiona
0.87 ... 0.32
1 0
46
0.87 ... 0.32
1 0
61
0.51 ... 0.92
1 0
Randomiza
Classe B
78
Classe A (50%)
Classe A (25%)
Classe A (25%)
12
Classe B
100
0.12 ... 0.67
Randomiza
Classe A
1
34
Particiona
Classe B (50%)
Classe B (25%)
Classe B (25%)
Projeto da disciplina
Classe A (50%)
Classe A (25%)
Classe A (50%)
Treinamento
Classe B (50%)
Classe A (25%)
Classe A (25%)
Classe B (50%)
Classe B (25%)
Classe B (25%)
Classe A (25%)
Classe B (25%)
Classe B (25%)
Validação
Teste
Projeto da disciplina
Definição da Topologia MLP
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.
Projeto da disciplina
Definição da Topologia MLP
Exemplo: 6 entradas e 2 saídas.
0.12 0.23 0.34 0.45 0.56 00.67
1
Conjunto de
treinamento
Projeto da disciplina
Aspectos que serão variados neste projeto:
 Nº de neurônios escondidos (serão usados 3 valores).
Observe:
Variando o nº de neurônios escondidos, estamos variando a
quantidade de pesos da rede.
Explicação: Uma rede neural implementa uma função.
x1
x2
f1
w1
w3
f3
y
w2
w4
w5
w6
As funções fi são do
tipo
sigmóide logística.
f2
y = f3( w5 f1 (w1 x1 + w3 x2) + w6 f2 (w2 x1 + w4 x2) ).
Projeto da disciplina
◦ 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.
ATENÇÃO!
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.
Projeto da disciplina
Medidas de Erro
Para ambos os tipos de problema, será usado o erro SSE (sum squared
error - soma dos erros quadráticos).
Ex.:
Padrão
Nodo 1
Nodo 2
Saídas da rede
1
... N
0.98 ... 0.12
0.02 ... 0.96
Saídas desejadas
1
... N
1.00 ... 0.00
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.
Projeto da disciplina
Medidas de Erro
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.:
Padrão
Nodo 1
Nodo 2
Saídas da rede
1
...
N
0.98 ... 0.12
0.02 ... 0.96
Saídas desejadas
1
... N
1.00 ... 0.00
0.00 ... 1.00
Classe
1
1
...
2
...
2
Erro Classif. = 100 x Quant. de padrões classificados erradamente
Quant. total de padrões
Projeto da disciplina
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).
Projeto da disciplina
SSE
Parada
Conjunto de
treinamento
Erro mínimo de
treinamento
Iteração
Conjunto de
validação
(neste exemplo,
observado a cada
3 iterações)
Erro alto para dados não
usados no treinamento
(não generaliza bem)
Iteração
Projeto da disciplina
Parada por Erro Mínimo de Validação
É 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”).
Projeto da disciplina
Parâmetros de Treinamento
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.
Projeto da disciplina
O que vocês vão fazer?
– Vão escolher:
• 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
Projeto da disciplina
– 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
1
1.12
2
1.44
...
...
10
1.23
Média
1.15
Desv-pad
0.07
SSE de Validação
0.66
0.71
...
0.66
0.70
0.11
SSE de Teste
0.79
0.88
...
0.90
0.85
0.10
E.Class. de Teste
12.08
13.32
...
09.87
11.24
02.35
Projeto da disciplina
Para começar...
Projeto da disciplina
Atenção, POR FAVOR!!
Projeto da disciplina
384 linhas
Treinamento.txt
192 linhas
Validacao.txt
192 linhas
Teste.txt
Dúvidas
• Monitores
– Alice Lucena – [email protected]
– Rafael Santos – [email protected]
Download

Monitoria de Sistemas Inteligentes