Estímulos externos do ambiente como luz, som e pressão são captados por receptores sensoriais (inputs). Esses receptores realizam um processo fundamental chamado transdução, no qual a energia física do estímulo é convertida em sinais eletroquímicos.

Esses sinais elétricos são então propagados ao longo de vias neurais até o cérebro, onde ocorre o processamento da informação por redes complexas de neurônios biológicos. Cada um desses neurônios recebe múltiplos sinais, integra essas informações e decide se irá ou não gerar um potencial de ação. O resultado desse processamento é encaminhado aos effectors, como músculos ou glândulas, responsáveis pela resposta observável (output).

Modelagem matemática do neurônio

x₁ x₂ xₘ ωₖ₁ ωₖ₂ ωₖₘ Bias bₖ φ(.) yₖ

Cada entrada xjx_{j} representa um sinal recebido, e cada conexão possui um peso sináptico associado (ωkj\omega_{kj}), que modela a intensidade e a influência dessa conexão.

Matematicamente, o potencial interno do neurônio kk é descrito por uma soma ponderada das entradas:

uk=j=1mωkjxju_{k} = \sum_{j=1}^{m}\omega_{kj}x_{j}

Matematicamente, podemos descrever a dinâmica dos neurônios como sendo:

uk=j=1mωkjxju_k = \sum_{j=1}^{m}\omega_{kj}x_j

Essa equação representa o processo de integração sináptica, análogo ao que ocorre nos dendritos de um neurônio biológico.

Aqui, adicionamos o bias (bb), que é um termo de ajuste que permite ao neurônio deslocar a função de ativação para esquerda ou para direita. Veremos mais a fundo sua efetividade daqui um tempo.

O sinal total

uk+bku_k + b_k

é então passado por uma função de ativação (ϕ(.)\phi(.)), responsável por introdução não linearidade ao modelo. A não linearidade é essencial, sem ela uma rede neural composta por múltiplas camadas se reduziria a um único modelo linear, incapaz de representar relações complexas. Assim, o output da rede de neurônios (yky_k) nada mais é que:

yk=ϕ(uk+bk), yk[1,1]y_{k} = \phi(u_k + b_k), \ y_k \in [-1, 1]

Incorporação do bias como neurônio artificial

Do ponto de vista matemático, é comum incorporarmos o bias diretamente na soma ponderada, tratando-o como um neurônio fictício x0x_0, associando-o a um peso ωk0\omega_{k0}. Assim, obtemos:

vk=j=0mωkjxj,{x0=1ωk0=bkv_k = \sum_{j=0}^{m}\omega_{kj}x_{j}, \begin{cases} x_0 = 1 \\ \omega_{k0} = b_k \end{cases}

Tipos de função de ativação

1. Threshold function (Heaviside)

Uma das funções mais simples utilizadas em modelos neurais é a função degrau, ou função de Heaviside, definida como:

ϕ(v)={1,v00,v<0\phi(v) = \begin{cases} 1, & v \geq 0 \\ 0, & v < 0 \end{cases}

Nesse caso, o neurônio apresenta um comportamento estritamente binário: dispara quando o potencial interno ultrapassa um limiar e permanece inativo caso contrário. O output do neurônio é então:

yk={1,vk00,vk<0y_k = \begin{cases} 1, & v_k \geq 0 \\ 0, & v_k < 0 \end{cases}

Como a saída não depende da magnitude do potencial, mas apenas de seu sinal, o modelo não apresenta dinâica temporal nem a intensidade da ativação. O neurônio não possui estados intermediários: ele apenas está “ligado” ou “desligado”. Além disso, a função de Heaviside é não diferenciável, o que inviabiliza seu uso em métodos de aprendizado baseados em gradiente, como o backpropagation. Essas limitações motivaram o desenvolvimento de funções de ativação contínuas e diferenciáveis, capazes de representar respostas graduais e facilitar o treinamento de redes profundas.

2. Sigmoid function

Funções sigmoides são a forma mais comum de funções de ativação. Um exemplo comum é a função logística:

ϕ(v)=11+eav\phi(v) = \frac{1}{1 + e^{-av}}

O interessante de usarmos a função logística como função de ativação é que, além de ser uma função diferenciável em todo espaço, ainda é simétrica. Também podemos substituir a função logística por

ϕ(v)=tanh(v)\phi(v) = tanh(v)

mas isso requer um maior custo computacional.

Um exemplo de uso da função logística como função de ativação é um modelo estocástico de neurônios. Aqui, um neurônio tem somente dois estados possíveis: ativado (+1) ou desligado (-1). A decisão de ativação é probabilística, seguindo a lei de probabilidade P(v)P(v).

x={+1,com probabilidade P(v)1,com probabilidade 1P(v)x = \begin{cases} +1, \text{com probabilidade} \ P(v) \\ -1, \text{com probabilidade} \ 1 - P(v) \end{cases}

Nesse caso, uma escolha padrão de função de ativação é nossa amiga:

P(v)=11+evTP(v) = \frac{1}{1 + e^{-\frac{v}{T}}}

onde TT é uma pseudo-temperatura, utilizada para controlar o ruido e, portanto, a incerteza do disparo. A verdade é que TT não tem relação alguma com a grandeza física temperatura, é somente um parâmetro de controle. Inclusive, é interessante notar que quando T0T \rightarrow 0, recuperamos o modelo determinístico, pois:

limT0P(v)=limT0(11+evT)=1\lim_{T \to 0} P(v) = \lim_{T \to 0} \left( \frac{1}{1 + e^{-\frac{v}{T}}} \right) = 1

Agora que retomamos alguns conceitos, vamos estabelecer três regras para redes neurais como gráficos direcionados:

Primeira regra:

Um sinal flui somente na direção definida pela seta desse link. Existem dois tipos diferentes de links:

  • links sinápticos: governados por uma regra lienar. Um nó xjx_j é multiplicado por um peso ωkj\omega_{kj} para produzir o output.
  • links de ativição: esses em geral são não lineares e o output yky_{k} é o resultado de ϕ(.)\phi(.)

Segunda regra:

O sinal de um nó é igual a soma algébrida de todos os sinais que chegam até ele.

Terceira regra:

O sinal de um nó não interefere no outro

Feedback

O feedback ocorre quando em um sistema fechado o output intefere no input que é dado.

xj(n)xj’(n)Ayk(n)B

Assim, definimos o output ($y_k) como sendo:

yk(n)=A[xj(n)]y_{k}(n) = A[x'_{j}(n)]

Agora, quanto ao input xj(n)x'_{j}(n), ele sofre interferência do output yk(n)y_k(n) por meio do operador BB:

xj(n)=xj(n)+B[yk(n)]x'_{j}(n) = x_{j}(n) + B[y_{k}(n)]

Então:

A1AB=A(11AB)=A(1AB)1=An=0(1n)(AB)n=An=0(1)n(1)n(AB)n=An=0(1)2n(AB)n=An=0AnBn=ωn=0ωnzn\begin{aligned} \frac{A}{1 - AB} &= A\left(\frac{1}{1 - AB}\right) = A(1 - AB)^{-1} \\[4pt] &= A \sum_{n=0}^{\infty} \binom{-1}{n} (-AB)^n \\[4pt] &= A \sum_{n=0}^{\infty} (-1)^n (-1)^n (AB)^n \\[4pt] &= A \sum_{n=0}^{\infty} (-1)^{2n} (AB)^n \\[4pt] &= A \sum_{n=0}^{\infty} A^n B^n \\[4pt] &= \omega \sum_{n=0}^{\infty} \omega^n z^{-n} \end{aligned}

Assim:

yk(n)=(ωl=0ωlzl)xj(n)y_k(n) = \left(\omega \sum_{l = 0}^{\infty} \omega^{l}z^{-l} \right)x_{j}(n)

O operador de delay unitário faz com que o sistema retorne uma unidade de tempo. Aplicando-o ll vezes:

yk(n)=l=0ωl+1xj(nl)y_k(n) = \sum_{l = 0}^{\infty} \omega^{l+1}x_{j}(n - l)

Aqui, temos duas situações bem claras:

  1. Se ω<1|\omega| < 1, o sistema é estável e tem decaimento exponecial;

  2. Se ω1|\omega| \geq 1, o sistema é instável. Se ω=1|\omega| = 1 a instabilidade é linear e se ω>1|\omega| > 1, a instabilidade é exponencial.