Para construir uma rede neural que aprende não-linearidades , comece com a seguinte estrutura de modelo familiar: um modelo linear da forma $y' = b + w_1x_1 + w_2x_2 + w_3x_3$.
Podemos visualizar essa equação como mostrado abaixo, onde $x_1$, $x_2$ e $x_3$ são nossos três nós de entrada (em azul) e $y'$ é nosso nó de saída (em verde).
Exercício 1
No modelo acima, os valores de peso e viés foram inicializados aleatoriamente. Execute as seguintes tarefas para se familiarizar com a interface e explorar o modelo linear. Você pode ignorar o menu suspenso Função de Ativação por enquanto; discutiremos esse tópico mais adiante neste módulo.
Clique no botão Reproduzir (▶️) acima da rede para calcular o valor do nó de saída para os valores de entrada $x_1 = 1,00$, $x_2 = 2,00$ e $x_3 = 3,00$.
Clique no segundo nó da camada de entrada e aumente o valor de 2,00 para 2,50. Observe que o valor do nó de saída muda. Selecione os nós de saída (em verde) e revise o painel Cálculos para ver como o valor de saída foi calculado.
Clique no nó de saída (em verde) para ver os valores dos parâmetros de peso ($w_1$, $w_2$, $w_3$) e viés ($b$). Diminua o valor do peso para $w_3$ (observe novamente que o valor do nó de saída e os cálculos abaixo foram alterados). Em seguida, aumente o valor do viés. Analise como essas alterações afetaram a saída do modelo.
Adicionando camadas à rede
Note que, ao ajustar os valores de peso e viés da rede no Exercício 1 , a relação matemática geral entre entrada e saída não se alterou. Nosso modelo continua sendo um modelo linear.
Mas e se adicionarmos outra camada à rede, entre a camada de entrada e a camada de saída? Na terminologia de redes neurais, as camadas adicionais entre a camada de entrada e a camada de saída são chamadas de camadas ocultas , e os nós nessas camadas são chamados de neurônios .
O valor de cada neurônio na camada oculta é calculado da mesma forma que a saída de um modelo linear: soma-se o produto de cada uma de suas entradas (os neurônios na camada anterior da rede) e um parâmetro de peso único, mais o viés. Da mesma forma, os neurônios na camada seguinte (neste caso, a camada de saída) são calculados usando os valores dos neurônios da camada oculta como entradas.
Essa nova camada oculta permite que nosso modelo recombine os dados de entrada usando outro conjunto de parâmetros. Isso pode ajudar nosso modelo a aprender relações não lineares?
Exercício 2
Adicionamos uma camada oculta contendo quatro neurônios ao modelo.
Clique no botão Reproduzir (▶️) acima da rede para calcular o valor dos quatro nós da camada oculta e do nó de saída para os valores de entrada $x_1 = 1,00$, $x_2 = 2,00$ e $x_3 = 3,00$.
Em seguida, explore o modelo e use-o para responder às seguintes perguntas.
Experimente modificar os parâmetros do modelo e observe o efeito nos valores dos nós da camada oculta e no valor de saída (você pode consultar o painel Cálculos abaixo para ver como esses valores foram calculados).
Este modelo consegue aprender não-linearidades?
Se você clicar em cada um dos nós na camada oculta e revisar os cálculos abaixo, verá que todos eles são lineares (compreendendo operações de multiplicação e adição).
Se você clicar no nó de saída e revisar o cálculo abaixo, verá que ele também é linear. Cálculos lineares realizados na saída de cálculos lineares também são lineares, o que significa que este modelo não consegue aprender não linearidades.