aberturas bancas esporte historia informatica latim olimpiada ondestão poker revista statistics tradução winchester winword xadrez

Treinamento de redes neurais artificiais (RNA)

Decidi preparar este artigo no sentido de deixar mais didático um assunto tão árido. Uma dica inicial é para preparar o grafo abaixo: sites como este fazem o trabalho pesado para você, e contêm alguns algoritmos para você se adiantar. As bolas são as arestas, as linhas, os vértices, e sobre cada vértice temos os pesos (sinápticos). O nó 0, por ser o bias, possui sempre peso 1 em seus vértices. Em nosso exemplo, suponha que temos as entradas binárias 0 e 1, e sua saída alvo é 1. 

O método mais popular para treinar uma RNA é a Backpropagation. Usado para ajustar os pesos sinápticos da rede, para que ela atinja seu objetivo: extrair as características do conjunto de dados de treinamento e ter uma taxa de acerto aceitável. Esse método consiste em duas fases:

  • Fase forward: calcula variáveis intermediárias que vão do sentido da camada de entrada até a saída da rede;
  • Fase backward: ajuste dos pesos através do cálculo dos erros que são combinados e aplicados com a regra delta de aprendizagem. O sentido do processamento vai da saída até a entrada dos dados.

Os pesos sinápticos podem ser gerados de diversas formas, inclusive aleatoriamente. Para fazer o processamento do algoritmo, vamos estabelecer o valor do parâmetro taxa de aprendizado (η). Vamos utilizar η=0,7.

Agora, vamos calcular a fase forward com os seguintes passos:

Calcular a soma do produto dos pesos. Isso é feito com as entradas para os nós 1 e 2 da camada 2. Para ficar mais claro, optei por preparar uma rápida tabela. Pegue um nó de cada camada e multiplique por suas entradas binárias.

Camada 1Camada 2Cálculos
Nó 1, peso 0,25, entrada binária 0Nó 1, peso 0,7s1=0,25(0)+0,4(1)+1(1)
=1,40
Nó 1, peso 0,3, entrada binária 0Nó 2, peso 0,3s2=0,3(0)+0,5(1)+1
=1,50
Nó 2, peso 0,4, entrada binária 1
Nó 2, peso 0,5, entrada binária 1
Nó 3, peso 1, entrada binária 1
Nó 3, peso 1, entrada binária 1

A seguir (passo 2), calcule a função de ativação dos nós 1 e 2. Vou deixar em Latex para ficar com formatação padronizada (cole o texto abaixo aqui). Agora, com a Camada 3, pegue os pesos desta Camada e multiplique pelos valores obtidos pelas funções de s1 e s2. Vou deixar os dois cálculos juntos.

\text{Passo 2: } \newline f(s1)=\frac{1}{1+e^{-s1}}\to \frac{1}{1+e^{-1,4}}=0,8021 \newline f(s2)=\frac{1}{1+e^{-s2}} \to \frac{1}{1+e^{-1,5}}=0,8175 \newline \newline \text{Passos 3 e 4: } \newline s=0,7(0,8)+0,3(0,8175)+1(1)=1,80525 \newline
y=f(s)=\frac{1}{1+e^{-1,80525}}=0,8587

Lembremos que o valor alvo é d=1. O próximo passo (passo 4) é calcular a função de ativação. Usamos, para isso, a mesma fórmula do passo 2 (deixei este cálculo no código acima). Agora, calculamos o módulo da diferença entre os valores obtidos e o alvo, que dá: |y – d| =0,14. Quanto mais próximo de zero for o erro no nó de saída, mais bem ajustado o modelo estará.

Se você achou a tabela, no começo deste artigo, didática demais, saiba que meu entendimento deste conteúdo, para entregar mastigadinho a vocês, só destravou depois dela. Me parece, então, um life hack importante para se aprender qualquer coisa nova: se está difícil, talvez seja porque você ainda não converteu o conteúdo em uma tabela.

E encerrou-se a etapa forward. Agora, passamos a fazer os ajustes dos pesos: a fase backward. O delta do nó de saída é calculado com a fórmula abaixo:

δ = (d – y) f(s)(1-f(s))

(0,14) 0,8587(1 – 0,8587) = 0,0169

Lembra-se do parâmetro taxa de aprendizado (η), mencionado no começo do artigo? Isso, η=0,7. Agora vamos usá-lo para calcular os ajustes dos pesos das conexões entre os nós das camadas 2 e 3. Trouxe a tabela de volta para mais clareza. 👇👇👇

Camada 1Camada 2ηδFunção de ativaçãoCálculo de ajuste dos pesosAjuste dos pesos das conexões
Nó 1, peso 0,25, entrada binária 0Nó 1, peso 0,70,70,01690,80210,00950,7095
Nó 1, peso 0,3, entrada binária 0Nó 2, peso 0,30,70,01690,81750,00970,3097
Nó 2, peso 0,4, entrada binária 10,70,0169
Nó 2, peso 0,5, entrada binária 10,70,0169
Nó 3, peso 1, entrada binária 10,70,0169
Nó 3, peso 1, entrada binária 10,70,01690,01181,0118

Nessa etapa, devemos ajustar os pesos das conexões entre os nós das camadas 2 e 3. Isso é feito na última coluna da tabela acima. Some o peso do nó de cada camada com o cálculo do ajuste.

Para o próximo passo, vamos relembrar os dados obtidos até agora, para calcular os valores de delta para os nós da camada 2. Em seguida, farei o inevitável: trazer aquela sopa de letrinhas tão comum para fórmulas e funções. Foi possível evitá-las até agora, calma… estamos no final. 🫨

δ = 0,0169; s1 = 0,8021; s2 = 0,8175
δ1 = δf(s1) (1 – f(s1)) = 0,0027
δ2 = δf(s2) (1 – f(s2)) = 0,0024

O próximo passo é calcular os ajustes dos pesos das conexões entre as conexões 1 e 2. Confira a tabela acima para lembrar-se dos valores usados. Deixei as contas mastigadinhas porque, apesar de serem cálculos simples, podem tornar-se difíceis depois de tantos passos.

Δw112 = ηδ1×1 = 0,7 * 0,0027 * 0 = 0
Δw212 = ηδ2×1 = 0,7 * 0,0027 * 0 = 0
Δw122 = ηδ1×1 = 0,7 * 0,0027 * 1 = 0,00189
Δw222 = ηδ2×2 = 0,7 * 0,0024 * 1 = 0,00168
Δwbias12 = ηδ1 = 0,7 * 0,0027 = 0,00189
Δwbias22 = ηδ2 = 0,7 * 0,0024 * 1 = 0,00168

E por último, faça os ajustes dos pesos. 💪

w112 = w112 + Δw112 = 0,25
w212 = w212 + Δw212 = 0,30
w122 = w122 + Δw122 = 0,40189
w222 = w222 + Δw222 = 0,50168
wbias12 = wbias12 + Δwbias12 = 1,00189
wbias22 = wbias22 + Δwbias22 = 1,00168

E encerro por aqui. Se estiver com dificuldades em sua faculdade ou escola, me mande uma mensagem para um orçamento de aula particular. Nem sempre o tema estudado é difícil, às vezes estamos apenas escolhendo a amostragem ou o material errados.

Publicado por


Deixe um comentário