130 likes | 242 Views
Implementação de Redes Neurais para Classificação de Odores. Akio Yamazaki Aula Prática – Disciplina de Redes Neurais – 2001.2. Nariz Artificial. Reconhecimento de Padrões (Rede Neural). Sensores. Pré-processamento. S1. S2. S6. Substância. Problema Abordado. Base de Dados :
E N D
Implementação de Redes Neurais para Classificação de Odores Akio Yamazaki Aula Prática – Disciplina de Redes Neurais – 2001.2
Nariz Artificial Reconhecimento de Padrões (Rede Neural) Sensores Pré-processamento ... S1 S2 S6 Substância
Problema Abordado • Base de Dados: • Classificação entre odores de duas safras de vinho (A e B) • Para cada safra, as resistências dos sensores foram registradas a cada 0.5s. • Cada conjunto de seis valores registrados no mesmo instante de tempo é um padrão (total de 200 padrões, sendo 100 da safra A e 100 da safra B). • Divisão do Conjunto de Padrões (Proben1): • 50% dos padrões de cada safra escolhidos aleatoriamente para treinamento, • 25% para validação, • e 25% para teste.
S1 S2 S3 S4 S5 S6 1 2 3 4 100 Respostas dos Sensores Resistência ... Tempo (x0.5s)
Rede MLP • Rede MLP: • Uma camada intermediária, • 6 unidades de entrada (uma para cada sensor), • 2 unidades de saída (uma para cada safra de vinho), • Função de ativação sigmóide logística, • Todas as possíveis conexões entre camadas adjacentes, sem conexões entre camadas não-adjacentes,
t Padrão t Padrão normalizado Saída 1 234 345 456 567 678 789 1 0.12 0.23 0.34 0.45 0.56 0.67 0 1 Vinho A Vinho A Normaliza e acrescenta saídas 100 100 1 987 876 765 654 543 432 1 0.87 0.76 0.65 0.54 0.43 0.32 1 0 Vinho B Vinho B 100 100 Pré-processamento
Pré-processamento • Normalização: • Padrões normalizados para a faixa entre 0 e 1 (unidades com função de ativação sigmóide logística), • Expressão de normalização: • onde xnormé o valor normalizado correspondente a x, e xmin e xmax são os valores mínimo e máximo entre todos os valores do conjunto. • Obs.: Também pode ser feita separadamente por sensor.
Vinho A (50%) 1 0.12 ... 0.67 0 1 34 0.12 ... 0.67 0 1 08 0.39 ... 0.27 0 1 Randomiza Particiona Vinho A (25%) Vinho A Vinho A Vinho A (25%) 100 12 1 0.87 ... 0.32 1 0 46 0.87 ... 0.32 1 0 Vinho B (50%) 61 0.51 ... 0.92 1 0 Randomiza Particiona Vinho B Vinho B Vinho B (25%) 100 78 Vinho B (25%) Pré-processamento
Vinho A (50%) Vinho A (50%) Randomiza Treinamento Vinho A (25%) Vinho B (50%) Vinho A (25%) Vinho A (25%) Validação Randomiza Vinho B (50%) Vinho B (25%) Vinho B (25%) Vinho A (25%) Teste Randomiza Vinho B (25%) Vinho B (25%) Pré-processamento
Treinamento 0.12 0.23 0.34 0.45 0.56 0.67 0 1 Treinamento
Soma dos Erros Quadráticos (SSE) • Saídas da rede: 0.98 0.12 ... 0.16 0.02 0.96 ... 0.88 • Saídas desejadas: 1.00 0.00 ... 0.00 0.00 1.00 ... 1.00 • Soma dos erros quadráticos (SSE): SSE = (0.98 – 1)2 + (0.12 – 0)2 + ... + (0.16 – 0)2 + (0.02 – 0)2 + (0.96 – 1)2 + ... + (0.88 – 1)2
Parada Parada por erro mínimo de treinamento SSE Conjunto de treinamento Erro mínimo de treinamento Iteração Conjunto de validação (observado a cada 3 iterações) Erro alto para dados não usados no treinamento (não generaliza bem) Iteração
GL(1) = 100*[(a/a) – 1] = 0 GL(2) = 100*[(d/d) – 1] = 0 GL(3) = 100*[(c/d) – 1] < 5% a GL(4) = 100*[(b/d) – 1] > 5% b c d Usando o critério da perda de generalização Perda de Generalização (Proben1): GL(iteração) = 100 * [(Erro atual de validação /Erro mínimo de validação) – 1] Para este exemplo, interrompe treinamento quando GL > 5% SSE Conjunto de validação É importante salvar as configurações (melhor rede foi a da iteração 2). Iteração