Rede Neural de Backpropagation www ic uff brferrazIANNAprendizado
Rede Neural de Backpropagation www. ic. uff. br/~ferraz/IA/NN/Aprendizado BP. ppt 1
Aprendizagem - Notação para a dedução • Seja tk a k-th saída alvo (desejada) e zk a k-th saída computada para k = 1, …, c • Sejam w os pesos da rede • Seja h a soma ponderada de entradas de um neurônio • O erro da rede ou erro de treinamento é dado por: • A minimização do erro só pode ser feita atuando sobre os pesos das conexões da rede 2
Minimização do erro • Para minimizar o erro é preciso igualar a zero sua derivada em relação aos pesos • Erro é função de da soma ponderada h e da função de ativação f; h é função dos pesos • Derivando parcialmente (camada de saída) • k mostra a variação do erro com a unidade (neurônio) 3
Atualização dos pesos das conexões • A minimização do erro só pode ser feita atuando sobre os pesos das conexões da rede • Depois de cada computação de saída de ordem m o erro de treinamento deve ser minimizando modificando esse pesos para a computação de ordem m+1 w(m +1) = w(m) + w(m) • Incremento de peso para redução do erro de treinamento, que deve ser minimizado • é o coeficiente de aprendizagem 4
Conexões com a camada de saída • Erro é função da saída zk e zk é função de h • como hk = wkt. y • A regra de aprendizagem ou atualização de pesos entre a camada de saída e a camada oculta é wkj = kyj = (tk – zk) f’ (hk)yj 5
Conexões com a camada oculta A regra de aprendizagem ou atualização de pesos entre a camada oculta e a camada de entrada é semelhante k mostra a variação do erro com o peso da conexão 6
Resumo da atualização de pesos • Sabe-se que • Para os pesos entre a camada de saída e a camada oculta o incremento é • wkj = kyj = (tk – zk) f’ (hk)yj = (tk – zk) f (hk) (1 - f (hk)yj • Para os pesos entre a camada oculta e a camada de entrada o incremento é 7
Derivadas funções de transferência • Para a função logística • Para a função tangente hiperbólica f(y) = tanh(y) 8
Exemplo de backpropagation XOR Camada de saída 3 1 w 3(0, 1) 0 w 2(0, 2) w 3(2, 1) w 3(1, 1) bias w 2(0, 1) w 2(2, 2) w 2(1, 1) w 2(2, 1) 1 0, 0 9 Camada oculta 2 2 1 w 2(1, 2) 2 0, 0 Camada de entrada 1
Notação para o exemplo Seja h a soma ponderada de entradas de um neurônio Sejam as camadas numeradas a partir de 1 (entrada) xc-1(n) entrada no neurônio n da camada c wk(i, j) peso da conexão entre o neurônio i da camada k-1 e o neurônio j da camada k • k(n) parcela a corrigir do nó n na camada k • w 2(0, 1) = - *x 1(0)* 2(1) atualização de pesos • Para conexão com a camada de saída • • • 3(1) = x 3(1)*(1 - x 3(1))*(d - x 3(1)) • Para conexão com camada oculta • 2(1) = x 2(1)*(1 - x 2(1)*[(w 3(1, 1)* 3(1)] • 2(2) = x 2(2)*(1 - x 2(2)*[(w 3(2, 1)* 3(1)] 10
Exemplo – Inicialização Camada oculta Neurônio 1: w 2(0, 1) = 0, 341232 w 2(1, 1) = 0, 129952 w 2(2, 1) =-0, 923123 Camada oculta Neurônio 2: w 2(0, 2) =-0, 115223 w 2(1, 2) = 0, 570345 w 2(2, 2) =-0, 328932 Camada de saída Neurônio 1: w 3(0, 1) =-0, 993423 w 3(1, 1) = 0, 164732 w 3(2, 1) = 0, 752621 Entrada inicial x 1(0) = 1 (bias) x 1(1) = 0 x 1(2) = 0 11
Exemplo – Treinamento Forward • Para a camada oculta os resultados da função somadora são Neurônio 1: (1 * 0, 341232) + (0 * 0, 129952) + (0 * -0, 923123) = 0, 341232 Neurônio 2: (1 *-0, 115223) + (0 * 0, 570345) + (0 * -0, 328932) = -0, 115223 • Aplicando a função de ativação logística temos x 2(1) = 1/(1+e^(-0, 341232)) = 0, 584490 x 2(2) = 1/(1+e^( 0, 115223)) = 0, 471226 Camada oculta Neurônio 1: w 2(0, 1) = 0, 341232 w 2(1, 1) = 0, 129952 w 2(2, 1) =-0, 923123 Camada oculta Neurônio 2: w 2(0, 2) =-0, 115223 w 2(1, 2) = 0, 570345 w 2(2, 2) =-0, 328932 12
Exemplo – Treinamento Forward (2) A entrada para camada de saída será x 2(0) = 1 (bias) x 2(1) = 0, 584490 x 2(2) = 0, 471226 Camada de saía Neurônio 1: w 3(0, 1) =-0, 993423 w 3(1, 1) = 0, 164732 w 3(2, 1) = 0, 752621 Para a camada de saída o resultado da função somadora é Neurônio 1: (1 *-0, 993423) + (0, 584490 * 0, 164732) + (0, 471226 * 0, 752621) = -0, 542484 Aplicando a função de ativação logística temos x 3(1) = 1/(1+e^(-0, 542484)) = 0, 367610 13
Exemplo – Treinamento Forward (3) O resultado esperado era 0 logo o erro é 0, 367610. A diferença a corrigir é dada por No caso em tela 3(1) = x 3(1)*(1 - x 3(1))*(d - x 3(1)) = = 0, 367610 * (1 - 0, 367610)(0 - 0, 367610) = =-0, 085459 x 3(1) = 0, 367610 14
Exemplo – Treinamento Backward (1) Para os neurônios da camada oculta as diferenças a corrigir são w 3(1, 1) 3(1) é a diferença a corrigir neurônio 1 w 3(2, 1) 3(1) é a diferença a corrigir neurônio 2 2(1) = x 2(1)*(1 - x 2(1)*w 3(1, 1)* 3(1) 2(1) = 0, 584490 * (1 - 0, 584490)*(0, 164732)*(-0, 085459) = -0, 003419 2(2) = x 2(2)*(1 - x 2(2)*w 3(2, 1)* 3(1) 2(2) = 0, 471226 * (1 - 0, 471226)*(0, 752621)*(-0, 085459) = -0, 016026 x 2(0) = 1 (bias) x 2(1) = 0, 584490 x 2(2) = 0, 471226 3(1) =-0, 085459 w 3(1, 1) = 0, 164732 w 3(2, 1) = 0, 752621 15
Exemplo – Treinamento Backward (2) • A atualização dos pesos das conexões é dada por sendo o coeficiente de aprendizagem um amortecedor empírico, no caso com valor igual a 0, 5. 16
Exemplo – Treinamento Backward (3) w 2(0, 1) = - *x 1(0)* 2(1) = - 0, 5 * 1 * -0, 0034190 = 0, 001710 w 2(1, 1) = - *x 1(1)* 2(1) = - 0, 5 * 0 * -0, 0034190 = 0 w 2(2, 1) = - *x 1(2)* 2(1) = - 0, 5 * 0 * -0, 003419 = 0 w 2(0, 2) = - *x 1(0)* 2(2) = - 0, 5 * 1 * -0, 0160263 = 0, 008013 w 2(1, 2) = - *x 1(1)* 2(2) = - 0, 5 * 0 * -0, 0160263 = 0 w 2(2, 2) = - *x 1(2)* 2(2) = - 0, 5 * 0 * -0, 0160263 = 0 w 3(0, 1) = - *x 2(0)* 3(1) = - 0, 5 * 1 * -0, 085459 = 0, 042730 w 3(1, 1) = - *x 2(0)* 3(1) = - 0, 5 * 0, 584490 * -0, 085459 = 0, 024975 w 3(2, 1) = - *x 2(0)* 3(1) = - 0, 5 * 0, 471226 * -0, 085459 = 0, 020135 17
Exemplo – Atualização dos pesos • Valores atualizados pesos das conexões w 2(0, 1) = 0, 341232 + 0, 001710 = 0, 342942 w 2(1, 1) = 0, 129952 + 0 = 0, 129952 w 2(2, 1) =-0, 923123 + 0 = -0, 923123 w 2(0, 2) = -0, 115223 + 0, 008013 = -0, 123236 w 2(1, 2) = 0, 570345 + 0 = 0, 570345 w 2(2, 2) =-0, 328932 + 0 = -0, 328932 w 3(0, 1) =-0, 993423 - 0, 042730 = -1, 036153 w 3(1, 1) = 0, 164732 - 0, 024975 = 0, 139757 w 3(2, 1) = 0, 752621 - 0, 020135 = 0, 732485 18
Segundo ciclo Camada oculta Neurônio 1: w 2(0, 1) = 0, 342942 w 2(1, 1) = 0, 129952 w 2(2, 1) =-0, 923123 Camada oculta Neurônio 2: w 2(0, 2) = - 0, 123236 w 2(1, 2) = 0, 570345 w 2(2, 2) =-0, 328932 Camada de saída Neurônio 1: w 3(0, 1) = -1, 036153 w 3(1, 1) = 0, 139757 w 3(2, 1) = 0, 732485 Entrada inicial x 1(0) = 1 (bias) x 1(1) = 0 x 1(2) = 0 19
Segundo ciclo – Treinamento Forward • Para a camada oculta os resultados da função somadora são Neurônio 1: (1 * 0, 342942) + (0 * 0, 129952) + (0 * -0, 923123) = 0, 342942 Neurônio 2: (1 * - 0, 123236) + (0 * 0, 570345) + (0 * -0, 328932) = -0, 123236 • Aplicando a função de ativação logística temos x 2(1) = 1/(1+e^(-0, 342942)) = 0, 584905 x 2(2) = 1/(1+e^(0, 123236)) = 0, 469230 Camada oculta Neurônio 1: w 2(0, 1) = 0, 324137 w 2(1, 1) = 0, 129952 w 2(2, 1) =-0, 923123 Camada oculta Neurônio 2: w 2(0, 2) = - 0, 035093 w 2(1, 2) = 0, 570345 w 2(2, 2) =-0, 328932 20
Segundo ciclo – Treinamento Forward (2) A entrada para camada de saída será x 2(0) = 1 (bias) x 2(1) = 0, 584905 x 2(2) = 0, 469230 Camada de saída Neurônio 1: w 3(0, 1) = -1, 036153 w 3(1, 1) = 0, 139757 w 3(2, 1) = 0, 732485 Para a camada de saída o resultado da função somadora é Neurônio 1: (1 * -1, 036153) + (0, 584905* 0, 139757) + (0, 469230 * 0, 732485) = - 0, 610740 Aplicando a função de ativação logística temos x 3(1) = 1/(1+e^(0, 610740)) = 0, 351899 21
Segundo ciclo – Treinamento Forward (3) O resultado esperado era 0 logo o erro é 0, 351899. O erro obtido anteriormente era de 0, 367610. A diferença a corrigir é dada por No caso em tela 3(1) = x 3(1)*(1 - x 3(1))*(d - x 3(1)) = = 0, 351899 * (1 - 0, 351899)(0 - 0, 351899) = =-0, 080256 x 3(1) = 0, 351899 22
Fim do treinamento • A aprendizagem se repete até que • o erro seja menor do que um patamar especificado ou • seja atingido o número considerado razoável de ciclos (10. 000 é um número bastante razoável) 23
- Slides: 23