Perceptron Simples e Variantes Prof. Júlio Cesar Nievola PPGIA – PUCPR Especialização em Inteligência Computacional – 2004 Perceptron - Características • O perceptron é usado para conjuntos de treinamento linearmente separáveis: p • Inclusão de tendência (“bias”): S W0 W j .u j j 1 • No algoritmo de aprendizagem do Perceptron busca-se um vetor W que tenha projeção positiva (produto interno) com todos os exemplos positivos e projeção negativa com todos os exemplos negativos. • A aprendizagem do perceptron sempre tem sucesso em tempo finito para um conjunto de treinamento finito e separável de exemplos de treinamento. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 2 Algoritmo do Perceptron • 1. Fazer W ser o vetor nulo. • 2. Selecionar um exemplo de treinamento Ek (com a correspondente classificação Ck). Isto pode ser feito de maneira cíclica (em ordem) através dos exemplos de treinamento ou pegando um exemplo aleatoriamente. • 3. Se W classifica Ek corretamente, isto é, se: {W.Ek 0 e Ck = +1} ou se {W.Ek < 0 e Ck = -1} – Então: não fazer nada. – Senão Passo de alteração: Modificar W somando ou subtraindo Ek de acordo com a saída correta ser +1 ou -1: W’ = W + CkEk. • 4. Ir ao passo 2. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 3 Perceptron - conclusões Para um conjunto finito de exemplos de treinamento E, com componentes inteiros (ou racionais), o algoritmo de aprendizagem do perceptron, em tempo finito: – Produzirá um vetor peso que satisfaz todos os exemplos de treinamento (se e somente se E é separável); ou – Abandonará e reutilizará um vetor peso (se e somente se E é não-separável). Se um conjunto de exemplos de treinamento E é nãoseparável, então por definição não existe um vetor de pesos W que classifique corretamente todos os exemplos de treinamento em E utilizando o algoritmo de aprendizagem do perceptron. A alternativa mais natural é encontrar um vetor de pesos W* que classifique tantos exemplos de treinamento quanto possível de E. Tal conjunto de pesos é chamado de ótimo. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 4 Perceptron - conclusões O algoritmo de aprendizagem do perceptron tem comportamento pobre: se o algoritmo é terminado, mesmo após um grande número de iterações, não se tem garantia da qualidade dos pesos que são produzidos, já que o mesmo usa somente reforço negativo, ignorando totalmente os exemplos que são corretamente classificados. O algoritmo do bolso leva em conta as classificações corretas mantendo um conjunto de pesos em separado Wbolso “no bolso”, juntamente com o número de iterações consecutivas para a qual Wbolso classificou corretamente os exemplos de treinamento escolhidos. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 5 Algoritmo do Bolso • 0. Ajustar W como o vetor nulo. • 1. Selecionar um exemplo de treinamento, Ek, aleatoriamente (com a correspondente classificação Ck). • 2. Se W classifica Ek corretamente, isto é, {W.Ek 0 e Ck = +1} ou {W.Ek < 0 e Ck = -1} • Então: – 2a. Se a seqüência atual de classificações corretas com W é maior que seqüência de classificações corretas para o vetor peso Wbolso no bolso: » 2aa. Substitua os pesos no bolso Wbolso por W e grave o número de vezes que ela é correta. – Senão: – 2b. Passo de alteração: Modifique W somando ou subtraindo Ek em função da saída correta Ck ser +1 ou -1: W’= W + CkEk. • 3. Vá para o passo 2. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 6 Algoritmo do Bolso Para problemas de tamanho médio e grande o algoritmo do bolso normalmente não produz pesos ótimos após um razoável número de iterações, mas produz bons pesos. Na execução do algoritmo do bolso não há nada que previna um mau conjunto de pesos de ter uma “seqüência feliz” de respostas corretas e acabe substituindo um bom conjunto de pesos no bolso. Pior ainda, se a “seqüência feliz” for longa então o conjunto de maus pesos pode permanecer no bolso por um grande número de iterações. Para evitar isto, utiliza-se o algoritmo do bolso com catraca, no qual, para conjuntos finitos de exemplos de treinamento tem-se melhores resultados. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 7 Algoritmo do Bolso com Catraca • 0. Ajustar W como o vetor nulo. • 1. Selecionar um exemplo de treinamento, Ek, aleatoriamente (com a correspondente classificação Ck). • 2. Se W classifica Ek corretamente, isto é, {W.Ek 0 e Ck = +1} ou {W.Ek < 0 e Ck = -1}, então: – 2a. Se a seqüência atual de classificações corretas com W é maior que seqüência de classificações corretas para o vetor peso Wbolso no bolso: » 2aa. Se W classifica corretamente mais exemplos de treinamento que Wbolso : » 2aaa. Substitua os pesos no bolso Wbolso por W e grave o número de vezes que ela é correta. – Senão: – 2b. Passo de alteração: Modifique W somando ou subtraindo Ek em função da saída correta Ck ser +1 ou -1: W’= W + CkEk. • 3. Vá para o passo 1. Prof. Júlio Cesar Nievola PPGIA - PUCPR Especialização em Inteligência Computacional Redes Neurais Artificiais 8