Olá pessoal! Bem vindo ao meu novo artigo! Será demonstrado o princípio básico de uma Rede Neural Artificial dentro do Excel.
Segue o link original do Julio onde foi demonstrado o passo a passo
Confesso que quando observei essa imagem a primeira vez fiquei com muita dúvida de como é cada elemento e como que ele se comporta. Vamos a prática!
As Redes Neurais Artificiais têm basicamente quatro etapas. Vou descrevê-las passo a passo::
1° Passo - Identificação do Problema:
Neste simples exemplo, temos que separar os pontos A e D por uma reta.
Segue os dados
Onde na célula AT5 temos a fórmula
=$AS5*-$AU$3
e na célula AU5 segue a fórmula
=$AS5*$AT$3
Iremos iniciar com os pesos W1 = 0,8 e W2 = -0,5, mas pode ser aleatório.
Um detalhe muito importante para a criação das Redes Neurais Artificiais é a necessidade de parâmetros de entradas como demonstrado acima, X1 e X2, temos que ter um parâmetro saída, neste caso é a coluna L, (t). Separando as variáveis A e D, colocamos nesta coluna (L) o valor 1 e nas variáveis B e C o valor 0, separando as variáveis em grupos.
2° Modelar e estipular os pesos
Nesta etapa vamos realizar alguns cálculos que são eles:
Y_in - Sumarização entre os produtos, Coluna M
Real (y) - Validação do cálculo, função de ativação, Coluna N
Iguais (t e y) - Validação da rede, caso não seja igual teremos que recalcular os pesos, Coluna O
Segue as fórmulas:
Coluna M - Cálculo do Y_in, aqui iremos multiplicar os valores de X com os W (pesos)
=SE(A5="";"";SOMARPRODUTO(B5:C5;P4:Q4))
ou em inglês
=IF(A5="";"";SUMPRODUCT(B5:C5;P4:Q4))
Coluna N - Cálculo do Real(y), também conhecida como Função de Ativação. Neste exemplo vamos colocar uma função muito simples, se o valor Y_in for acima de 0, irá resultar no valor de 1, se for menor ou igual, irá resultar 0.
=SE(A5="";"";SE(M5>$C$2;1;0))
ou em inglês
=IF(A5="";"";IF(M5>$C$2;1;0))
Coluna O - Cálculo Iguais (t e y), nesta coluna iremos validar se a saída t (coluna L) é igual a coluna Real(y) (coluna N), se for igual será "Sim" como resposta, caso não, será "Não".
=SE(L5="";"";SE(L5=N5;"Sim";"Não"))
ou em inglês
=IF(L5="";"";IF(L5=N5;"Sim";"Não"))
Coluna P e Q - Cálculo dos reajustes dos pesos
Nesta etapa, quando os valores não são iguais, o resultado é dado como "Não" na coluna O, caso seja "Sim" o resultado é só manter o peso, mas com o resultado "Não", teremos que recalcular os pesos, para isso teremos na seguinte fórmula:
Peso_Novo = Peso_antigo + Alfa * Erro * X
Segue a fórmula na célula P5 até a Q8
=SE(OU(P$4="";$A5="");"";SE($O5="Não";P4+$C$1*SE($L5-$N5=0;0;$L5-$N5)*B5;P4))
ou em inglês
=IF(OR(P$4="";$A5="");"";IF($O5="Não";P4+$C$1*IF($L5-$N5=0;0;$L5-$N5)*B5;P4))
3° Validar a Rede com seus pesos
Após calculado todos os pesos, precisamos validar novamente os nossos dados com o último peso calculado, neste caso W1 = 1,05 e W2 = 0,025.
OBS: nesta parte poderá ser realizada de diversas formas, podemos extrair uma parte dos nossos dados para validar a rede, ou podemos fazer igual ao exemplo (quando os dados forem poucos) validar a todos os dados novamente.
Segue as fórmulas nas colunas
Coluna AB - Valores de X1
=SE(B5="";"";B5)
ou em inglês
=IF(B5="";"";B5)
Coluna AC - Valores de X2
=SE(C5="";"";C5)
ou em inglês
=IF(C5="";"";C5)
Coluna AL - Parâmetro de separação, neste caso faz a separação dos conjuntos
=SE(L5="";"";L5)
ou em inglês
=IF(L5="";"";L5)
Coluna AM - Cálculo das variáveis X com os pesos W
=SE(AA5="";"";SOMARPRODUTO(AB5:AK5;$AB$3:$AK$3))
ou em inglês
=IF(AA5="";"";SUMPRODUCT(AB5:AK5;$AB$3:$AK$3))
Coluna AN - Cálculo da Função de Ativação
=SE(AA5="";"";SE(AM5>$C$2;1;0))
ou em inglês
=IF(AA5="";"";IF(AM5>$C$2;1;0))
Coluna AO - Resultado
=SE(AL5="";"";SE(AL5=AN5;"Sim";"Não"))
ou em inglês
=IF(AL5="";"";IF(AL5=AN5;"Sim";"Não"))
E por último a fórmula na célula AO3
=CONT.SE(AO5:AO8;"Sim")/CONT.VALORES(AO5:AO8)
ou em inglês
=COUNTIF(AO5:AO8;"Sim")/COUNTA(AO5:AO8)
Neste exemplo a rede conseguiu acertar 100% das saídas e com isso podemos plotar a nossa reta com o último peso calculado.
4° Aplicar em outros dados validando e ajustando a rede.
Esta etapa é necessária quando tem novos registros na base.
Simulando a entrada de novos registros, são eles o E, F e G, com seus respectivos valores:
Com os critérios de X1, X2 e (t) definidos, temos uma assertividade, neste caso de 100%, como podemos ver no gráfico abaixo
E está finalizado a nossa Rede Neural Artificial.
Observando a cada iteração (ou ajuste de pesos) como que a reta se comporta, adaptando ao nosso objetivo.
O interessante desde modelo é que com alguns padrões, o mesmo terá os pesos iniciais (podendo ser aleatórios ou não) e com cada valor ele irá validar e irá ajustar ou não os pesos, com o ajuste do ultimo valor é necessário validar novamente todos os dados, desta validação é calculado uma taxa de aceitação onde é possível reavaliar todos os pesos do modelo. Aprovado os pesos dos dados apresentados, poderemos inserir novos valores a nossa base com os pesos já definidos e podemos ver a saída dos mesmos, se a taxa de erro for muito alta, esses novos registros deverão entrar na base de dados original para que novos pesos sejam calculados de acordo com essa nova matriz de dados e com isso nossa "Rede" estará sempre "treinada" para resultar os melhores valores.
Esta técnica é bastante interessantes para as mais diversas aplicações. Como identificação de padrões, ajustes matemáticos, modelos não lineares, OCR, entre muitas outras aplicações.
Neste exemplo não utilizamos o bias, ou podemos considera-lo como zero.
Gostaria de agradecer novamente a Profa. Dra. Denise Tsunoda pelos maravilhosos ensinamentos em suas disciplinas, suas aulas são sensacionais e muito obrigado de coração.
Espero que tenham gostado e se inspirado desse artigo! Caso tenha alguma sugestão de melhorias ou de mais pontos que você identificou, ou de outra técnica mais eficiente, posta aqui nos comentários.
Se gostou, curta e compartilhem para que todos saibam o que é possível fazer dentro do Excel.
E ja conhece o meu novo curso online de Excel?
Abraços a todos e até o próximo artigo!
Fabio BALDINI
Frase do dia: "Superar-se não é apenas ser melhor que algo, que alguns, que muitos, que todos. Superar-se pode ser uma vitória contra si mesmo, como alcançar verdadeiramente algo que você passou a vida inteira chamando de ''impossível'' por falta de coragem em tentar." Autor: Filipe OMB
OBS2: Obrigadão grande Mestre e amigão Alessandro Trovato pelas inúmeras correções do artigo, obrigado de coração, eternamente.
Link permanente
Gostei do teu artigo.
Link permanente
Obrigado 🙂