Análise de Imagens Aula 16: Treinamento por retropropagação Prof. Alexandre Xavier Falcão [email protected]. IC - UNICAMP A.X. Falcão – p.1/11 Roteiro da Aula Treinamento por retropropagação para redes do tipo perceptron multicamadas. Ver livro da Kuncheva. A.X. Falcão – p.2/11 Retropropagação Dada uma rede neural do tipo perceptron multicamadas, com uma inicialização aleatória de pesos baixos para as conexões entre neurônios, o treinamento por retropropagação visa atualizar estes pesos de forma a minimizar o erro quadrático E obtido na classificação das amostras rotuladas de Z1 . N (1) c 1 X 1X [gi (xj ) − I(wi , l(zj ))]2 E = 2 j=1 i=1 onde xj é o vetor de características do objeto zj ∈ Z1 , e I(wi , l(zj )) é 1 se o rótulo l(zj ) de zj for wi e 0 no caso con- trário. A.X. Falcão – p.3/11 Retropropagação Sabemos que o método descendente de gradiente atualiza um parâmetro θ, que influencia em uma função de erro J(θ), por θ ← θ − η ∂J ∂θ , onde η > 0 é a taxa de aprendizagem. Sendo J = E e θ um peso pj , 1 ≤ j ≤ q , da j -ésima conexão de entrada de um dado neurônio da rede, ∂E ∂pj pode ser obtido pela regra da cadeia: (2) onde δ = ∂E ∂pj ∂E ∂ξ ∂( ∂E ∂ξ = =δ ∂ξ ∂pj Pq i=1 pi ui ) ∂pj = δuj é um erro associado ao neurônio e uj é a sua j -ésima entrada. A.X. Falcão – p.4/11 Retropropagação Portanto, o peso pj de qualquer conexão de entrada de qualquer neurônio da rede deve ser atualizado por (3) pj ← pj − ηδuj p0 ← p0 − ηδu0 A questão é como calcular δ e uj ? Os valores uj de entrada de todas as conexões de todos os neurônios são calculados por propagação de uma amostra rotulada x ∈ ℜn de objeto em Z1 . Os erros δ de cada neurônio são encontrados por retropropagação (da camada de saída para a de entrada). A.X. Falcão – p.5/11 Retropropagação Considere o j -ésimo neurônio da última camada h escondida e o i-ésimo neurônio da camada o de saída. vh j h gi( x) j po ij i o A saída vjh do j -ésimo neurônio é a entrada uj do i-ésimo neurônio, a qual é multiplicada pelo peso poij . A saída do i-ésimo neurônio é gi (x). Pela Eq 3 temos (4) poij ← poij − ηδio vjh . A.X. Falcão – p.6/11 Retropropagação O valor vjh é encontrado na propagação de x e o erro δio do i-ésimo neurônio da camada o de saída é encontrado pela regra da cadeia. (5) δio ∂E ∂gi (x) ∂E = = o ∂ξi ∂gi (x) ∂ξio onde ξio é a somatória ponderada de todas as entradas do i-ésimo neurônio da camada o de saída. Pela Eq 1, ∂E ∂gi (x) = gi (x) − I(wi , l(x)). Sabemos que gi (x) = φ(ξio ) e que sendo φ(ξio ) ∂gi (x) ∂ξio uma função sigmóide, ∂φ(ξio ) ∂ξio = φ(ξio )[1 − φ(ξio )]. Então, = gi (x)[1 − gi (x)]. A.X. Falcão – p.7/11 Retropropagação Ou melhor, (6) δio = [gi (x) − I(wi , l(x))]gi (x)[1 − gi (x)]. Após propagação de x pela rede, encontramos portanto δio para i = 1, 2, . . . , c, e atualizamos os pesos poij pela Eq 4. Considere agora as conexões entre a penúltima e última camadas, h − 1 e h. vh−1 vhj k k ph jk h−1 j h A.X. Falcão – p.8/11 Retropropagação A saída vkh−1 do k -ésimo neurônio da camada h − 1 é a entrada uk do j -ésimo neurônio da camada h, a qual é multiplicada pelo peso phjk . A saída do j -ésimo neurônio é vjh . Pela Eq 3, (7) phjk ← phjk − ηδjh vkh−1 . Temos vkh−1 por propagação de x e o erro δjh de cada j -ésimo neurônio da última camada h escondida é encontrado em função de δio , poij , e vjh previamente calculados (retropropagação), da seguinte forma. A.X. Falcão – p.9/11 Retropropagação Pela regra da cadeia, δjh = ∂E ∂ξjh = h ∂E ∂vj ∂vjh ∂ξjh = h ∂E ∂φ(ξj ) ∂vjh ∂ξjh ∂E h h ), para funções v (1 − v j ∂vjh j Note que vjh afeta o erro E = de ativação do tipo sigmóide. através de todos os neurônios da camada o de saída. o P P c c ∂E ∂ξi ∂E o po . Ou seja, δ = = Então, ∂v o h h i=1 ∂ξ ∂v i=1 i ij j (8) i δjh = j c X i=1 δio poij ! vjh (1 − vjh ). O treinamento pode ser feito percorrendo Z1 várias vezes (cada vez é chamada uma época), e atualizando os pesos após cada amostra xj ser submetida à rede. A.X. Falcão – p.10/11 Algoritmo Para uma rede com pesos iniciais pequenos e aleatoriamente escolhidos: 1. Escolha T > 0 de épocas, taxa η > 0, e erro ǫ > 0. 2. Faça E ← +∞, época t ← 1, e objeto j ← 1. 3. Enquanto E > ǫ e t ≤ T faça 4. Propague xj pela rede com os pesos atuais. 5. Calcule os erros de cada neurônio (retropropagação). 6. Atualize os pesos da rede. 7. Calcule E usando os novos pesos e a Eq 1. 8. Se j = N1 , então t ← t + 1 e j ← 1. Se não, j ← j + 1. A.X. Falcão – p.11/11