Eu experimentei um pouco com diferentes implementações do Perceptron e quero ter certeza de que entendi as "iterações" corretamente.
Regra original do perceptron de Rosenblatt
Tanto quanto eu entendo, no algoritmo clássico de Rosenblatt perceptron, os pesos são atualizados simultaneamente após cada exemplo de treinamento via
onde é a regra de aprendizado aqui. E o alvo e o real são limitados (-1 ou 1). Eu o implementei como 1 iteração = 1 passagem sobre a amostra de treinamento, mas o vetor de peso é atualizado após cada amostra de treinamento.
E eu calculo o valor "real" como
Descida do gradiente estocástico
Igual à regra do perceptron, no entanto, target
e actual
não são limiares, mas valores reais. Além disso, conto "iteração" como caminho sobre a amostra de treinamento.
Tanto o SGD quanto a regra perceptron clássica convergem nesse caso linearmente separável; no entanto, estou tendo problemas com a implementação da descida do gradiente.
Gradiente descendente
Aqui, examino a amostra de treinamento e resuma as alterações de peso para 1 passagem sobre a amostra de treinamento e atualizei os pesos posteriormente, por exemplo,
para cada amostra de treinamento:
...
após 1 passagem sobre o conjunto de treinamento:
Gostaria de saber se esta suposição está correta ou se estou faltando alguma coisa. Tentei várias taxas de aprendizado (até infinitamente pequenas), mas nunca consegui mostrar nenhum sinal de convergência. Então, eu estou querendo saber se eu entendi mal sth. aqui.
Obrigado Sebastian