Função de Ativação – O cérebro matemático das Redes Neurais Artificiais

Redes Neurais - Função de Ativação

A essência de uma Rede Neural Artiificial reside em sua capacidade de processar dados e encontrar padrões complexos. Para entender as funções de ativação, primeiramente devemos olhar para a estrutura básica de um neurônio artificial. Inicialmente, o neurônio recebe entradas (inputs), multiplica-as por pesos (weights) específicos e soma um viés (bias).

Neurônio artificial
Neurônio artificial

Contudo, o resultado dessa operação matemática é puramente linear. É neste momento que a função de ativação entra em cena. Ela recebe esse valor numérico resultante e aplica uma transformação matemática específica. Consequentemente, ela decide qual informação é relevante o suficiente para ser passada para a próxima camada da rede.

Em termos técnicos, a função introduz a não linearidade ao sistema. Isso é fundamental para os avanços das técnicas de Redes Neurais. Sem essa transformação não linear, não importaria quantas camadas ocultas empilhássemos, a rede inteira se comportaria como uma única camada linear. Arrisco dizer que a função de ativação é o elemento que permite à rede aprender e modelar dados complexos, como imagens, áudio e linguagem natural.

O porteiro da balada

Para tornar este conceito técnico mais lúdico, imagine uma festa exclusiva que possui um porteiro rigoroso na entrada. As pessoas que tentam entrar são ponderadas pela sua importância.

Neste cenário, o porteiro segue uma regra pré-determinada para decidir quem entra. Se o porteiro fosse uma função linear simples, ele deixaria todos entrarem, causando superlotação e caos na balada. Porém, um porteiro seletivo com critérios específicos, age como uma função de ativação.

Por exemplo, ele pode barrar qualquer pessoa com menos de 18 anos (semelhante à função ReLU, que zera valores negativos). Ou, ele pode permitir a entrada de forma gradual, permitindo a entrada rapidamente para pessoas que estão com nome na lista VIPs e demorando mais para convidados comuns (similar à função Sigmoide). Assim, apenas os convidados realmente importantes atravessam a porta para curtir a festa.

Nessa analogia, a festa é a resposta desejada da nossa rede neural. O porteiro faz o papel da função de ativação, e as pessoas que tentam entrar são os inputs (os dados que queremos predizer).

Machine Learning vs. Deep Learning

Embora as funções de ativação sejam presentes em todas as redes neurais, seu uso varia significativamente entre Machine Learning (ML) clássico e Deep Learning (DL). Em modelos tradicionais de ML, como a Regressão Logística, a função de ativação normalmente é usada apenas na saída final para classificar o resultado.

Onde ficam as funções de ativação
Onde ficam as funções de ativação

Por outro lado, no Deep Learning, a complexidade aumenta exponencialmente. Aqui, as funções são aplicadas após cada camada oculta. Isso ocorre porque as redes profundas precisam aprender representações hierárquicas dos dados. Dessa forma, as camadas iniciais podem detectar bordas simples em uma imagem, enquanto as camadas profundas, ativadas sucessivamente, identificam formas complexas como rostos.

Um detalhe importante e as vezes negligenciado… A escolha da função de ativação em DL afeta diretamente a velocidade de convergência do treinamento e a estabilidade do gradiente. O uso incorreto em DL pode levar a problemas graves, como o “Vanishing Gradient”, onde a rede para de aprender.

Principais Funções, Equações e Usabilidade

Sigmoide (Logistic Function)

A função Sigmoide foi, historicamente, a mais popular. Ela transforma qualquer valor de entrada em um número entre 0 e 1. Matematicamente, ela é definida como:

sigma(x) = 1 / {1 + e^{-x}}

Ela é excelente para modelos probabilísticos, pois o resultado pode ser interpretado como uma probabilidade. Frequentemente, é usada na camada de saída de classificadores binários, como a Regressão Logística.

Atualmente, ela caiu em desuso nas camadas ocultas de Deep Learning. Isso ocorre porque, para valores muito altos ou muito baixos de entrada, a derivada da função se aproxima de zeroe isso causa o problema do Vanishing Gradient, onde os pesos da rede param de ser atualizados durante o treino.

Tanh (Tangente Hiperbólica)

A Tanh é similar à Sigmoide, mas com uma diferença na amplitudo, seu intervalo de saída varia entre -1 e 1, e não de 0 a 1. A equação é:

tanh(x) = {e^x - e^{-x}} / {e^x + e^{-x}}

Por ser “centrada em zero”, a Tanh geralmente performa melhor que a Sigmoide em camadas ocultas. Isso facilita o processo de otimização, pois os dados ficam centralizados em torno da origem.

Contudo, apesar de ser melhor que a Sigmoide, ela ainda sofre com o problema do vanishing em redes muito profundas. Mesmo assim, seu uso é comum em redes recorrentes (RNNs) ou projetos de complexidade intermediária.

ReLU (Rectified Linear Unit)

A ReLU é, indiscutivelmente, a “rainha” do Deep Learning moderno. Sua lógica é surpreendentemente simples: se a entrada for positiva, ela retorna o valor da entrada; se for negativa, retorna zero. A equação é essa:

f(x) = max(0,x)

Ela é a escolha padrão para camadas ocultas em Redes Neurais Convolucionais (CNNs) e na maioria das arquiteturas de DL. A ReLU é computacionalmente eficiente, pois envolve operações matemáticas simples, como pode ser visto na sua equação. Além disso, ela resolve parcialmente o problema do desvanecimento do gradiente, permitindo o treinamento de redes muito mais profundas e rápidas.

Na documentação do MLP do Scikit-Learn, explica que a ReLU é a função de ativação padrão do modelo caso você não especifique qual função de ativação quer utilizar.

Existe um fenômeno chamado “Dying ReLU”. Se um neurônio entra em um estado onde sempre retorna zero, portanto, ele “morre” e para de aprender. Para contornar isso, variações como a Leaky ReLU foram criadas. Durante o doutorado, inclusive, criei uma Rede GAN para fazer reconhecimento de dígitos que usou a Leaky ReLU entre as camadas escondidas do Gerador e do Discriminador, e você pode ver aqui no meu Github.

Softmax

Diferente das anteriores, a Softmax é usada quase exclusivamente na camada de saída de problemas de classificação multiclasse. Ela converte um vetor de números em um vetor de probabilidades, onde a soma de todas as probabilidades é igual a 1.

sigma(z)_i = {e^{z_i}} / sum{j=1}{K} {e^{z_j}} 

Em geral, se você está construindo uma rede neural para classificar dígitos manuscritos (0 a 9) ou categorias de produtos, a Softmax será sua função final. Ela garante que a rede diga: “Tenho 90% de certeza que isso é um gato, 5% que é um cachorro e 5% que é um carro”. Mas se você reparar no exemplo que fiz no Github do link mais acima, uso outras funções para a saída da rede e, infelizmente, não me lembro o motivo.

Para finalizar

A escolha correta da função de ativação vai além da teoria matemática, ela é uma decisão estratégica de engenharia. No mercado atual, onde empresas buscam eficiência computacional, usar uma função leve como a ReLU pode significar a diferença entre treinar um modelo em horas ou em dias. Isso impacta diretamente o custo de infraestrutura em nuvem (AWS, Azure, Google Cloud) e o pessoal que cuida de Finops na sua empresa vai agradecer seu cuidado com o custo. Além disso, para devs, entender essas nuances permite a criação de modelos mais robustos.

Ao projetar sua próxima rede neural, lembre-se do “porteiro”. A forma como você filtra a informação define a inteligência do seu modelo. O sucesso de uma implementação de IA depende tanto da qualidade dos dados quanto da sofisticação matemática que decide como processá-los.

A evolução dessas funções de ativação ajudou a moldar o salto recente em IA Generativa, que depende de arquiteturas estáveis que só são possíveis graças ao tratamento adequado da não linearidade.

Imagem de capa e do texto foram feitas
com o Google Nano Banana 3