Em redes neurais artificiais, a função de ativação de um nó é uma função que calcula a saída do nó com base em suas entradas individuais e seus pesos. Problemas não triviais podem ser resolvidos usando apenas alguns nós se a função de ativação for não linear. As funções de ativação são um componente central das redes neurais, determinando como os sinais se propagam pelas camadas e permitindo que a rede aprenda padrões complexos nos dados. Elas são usadas em praticamente todos os modelos modernos de aprendizado de máquina, incluindo sistemas de aprendizado profundo, como modelos de linguagem de grande porte e transformadores.
As funções de ativação podem ser categorizadas por suas propriedades matemáticas, como não linearidade, intervalo e diferenciabilidade, que influenciam a estabilidade e a eficiência do treinamento. Ao longo dos anos, pesquisadores desenvolveram inúmeras funções de ativação, cada uma com vantagens e desvantagens específicas. A escolha da função de ativação pode afetar significativamente o desempenho do modelo, a velocidade de convergência e a capacidade de evitar problemas como gradientes desaparecendo.
Desenvolvimento Histórico
O conceito de funções de ativação remonta aos primeiros modelos de neurônios artificiais, como o perceptron introduzido por Frank Rosenblatt em 1958, que usava uma ativação binária por degrau. No entanto, a função degrau não é diferenciável, limitando seu uso em otimização baseada em gradientes. Na década de 1980, a função sigmoide logística tornou-se popular por ser suave e diferenciável, permitindo a retropropagação. Em 1986, David Rumelhart, Geoffrey Hinton e Ronald Williams popularizaram a retropropagação, que depende de funções de ativação diferenciáveis.
A década de 2010 viu uma mudança em direção às unidades lineares retificadas (ReLU), que ajudaram a mitigar o problema do gradiente desaparecendo. A ReLU foi usada no modelo de visão computacional AlexNet de 2012, que venceu a competição ImageNet, e no modelo ResNet de 2015, que permitiu o treinamento de redes muito profundas. Em 2018, a Unidade Linear de Erro Gaussiano (GELU) foi introduzida e usada no modelo BERT, uma arquitetura fundamental de transformador para processamento de linguagem natural. Mais recentemente, a Swish (também conhecida como SiLU) foi proposta em 2017 por pesquisadores do Google, oferecendo uma alternativa suave e não monotônica.
Não Linearidade e Aproximação Universal
Uma propriedade chave das funções de ativação é a não linearidade. Quando a função de ativação é não linear, uma rede neural de duas camadas pode ser comprovadamente um aproximador universal de funções, o que significa que ela pode aproximar qualquer função contínua em um domínio compacto com precisão arbitrária. Isso é conhecido como Teorema da Aproximação Universal. A função de ativação identidade não satisfaz essa propriedade; quando múltiplas camadas usam a função de ativação identidade, toda a rede é equivalente a um modelo de camada única, perdendo a capacidade de representar funções complexas. Funções de ativação não lineares permitem que redes neurais aprendam relações não lineares nos dados, o que é essencial para tarefas como reconhecimento de imagem, processamento de fala e compreensão de linguagem.
Intervalo e Estabilidade do Treinamento
As funções de ativação têm intervalos diferentes, que afetam o treinamento baseado em gradientes. Quando o intervalo da função de ativação é finito, os métodos de treinamento baseados em gradientes tendem a ser mais estáveis, porque as apresentações de padrões afetam significativamente apenas pesos limitados. Por exemplo, a função sigmoide produz valores entre 0 e 1, e a função tanh produz entre -1 e 1. Quando o intervalo é infinito, o treinamento é geralmente mais eficiente porque as apresentações de padrões afetam significativamente a maioria dos pesos, mas taxas de aprendizado menores são tipicamente necessárias para evitar instabilidade. A ReLU tem um intervalo positivo ilimitado, o que pode levar a um aprendizado mais rápido, mas também a problemas potenciais como neurônios mortos.
Diferenciabilidade e Otimização Baseada em Gradientes
Funções de ativação continuamente diferenciáveis são desejáveis para permitir métodos de otimização baseados em gradientes, pois permitem o cálculo de gradientes para a retropropagação. A ReLU não é continuamente diferenciável em zero, mas ainda é possível usar subgradientes ou definir a derivada em zero como 0 ou 1. A função de ativação binária por degrau não é diferenciável em 0 e se diferencia para 0 em todos os outros valores, então métodos baseados em gradientes não podem progredir com ela. Funções de ativação não saturadoras, como a ReLU, podem ser melhores que funções saturadoras porque são menos propensas a sofrer do problema do gradiente desaparecendo, onde os gradientes se tornam extremamente pequenos em redes profundas.
Funções de Ativação Comuns
Sigmoide (Logística)
A função sigmoide, também conhecida como função logística, é definida como \( \sigma(x) = \frac{1}{1 + e^{-x}} \). Ela produz valores entre 0 e 1, tornando-a útil para classificação binária e como camada de saída para probabilidades. No entanto, ela sofre de saturação em valores extremos, levando a gradientes desaparecendo. A sigmoide foi usada no modelo de reconhecimento de fala de 2012 desenvolvido por Hinton et al.
Tanh (Tangente Hiperbólica)
A função tanh é definida como \( \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} \), e produz valores entre -1 e 1. Ela é centrada em zero, o que frequentemente torna a otimização mais fácil do que com a sigmoide. A tanh é comumente usada em redes neurais recorrentes e como ativação de camadas ocultas.
ReLU (Unidade Linear Retificada)
A ReLU é definida como \( \text{ReLU}(x) = \max(0, x) \). Ela é computacionalmente eficiente e ajuda a mitigar gradientes desaparecendo, pois sua derivada é 1 para entradas positivas. No entanto, ela pode sofrer de neurônios mortos, onde unidades se tornam permanentemente inativas. A ReLU foi usada no AlexNet e no ResNet.
Leaky ReLU e ReLU Paramétrica
A Leaky ReLU permite uma pequena inclinação positiva para entradas negativas, como \( \text{LeakyReLU}(x) = \max(0.01x, x) \), para evitar neurônios mortos. A ReLU Paramétrica (PReLU) aprende o parâmetro de inclinação durante o treinamento, oferecendo mais flexibilidade.
GELU (Unidade Linear de Erro Gaussiano)
A GELU é uma aproximação suave da ReLU, definida como \( \text{GELU}(x) = x \cdot \Phi(x) \), onde \( \Phi \) é a função de distribuição cumulativa da distribuição normal padrão. Ela foi usada no BERT e em muitos transformadores modernos, fornecendo gradientes mais suaves e frequentemente melhor desempenho.
Swish / SiLU
A Swish, também conhecida como SiLU (Unidade Linear Sigmoide), é definida como \( \text{Swish}(x) = x \cdot \sigma(x) \). Ela é suave e não monotônica, o que demonstrou melhorar o desempenho em algumas redes profundas. A Swish foi proposta por pesquisadores do Google em 2017.
Softplus
A Softplus é uma aproximação suave da ReLU, definida como \( \text{softplus}(x) = \ln(1 + e^x) \). Ela tem um intervalo estritamente positivo, tornando-a adequada para prever variâncias em autoencoders variacionais.
Detalhes Matemáticos
As funções de ativação mais comuns podem ser divididas em três categorias: funções de crista, funções radiais e funções de dobra. Uma função de ativação \( f \) é saturadora se \( \lim_{|v| \to \infty} |\nabla f(v)| = 0 \), e não saturadora se o limite não for zero. Funções não saturadoras, como a ReLU, são menos propensas a gradientes desaparecendo.
Funções de Ativação de Crista
Funções de crista são funções multivariadas que atuam sobre uma combinação linear das variáveis de entrada. Exemplos incluem:
- Ativação linear: \( \phi(\mathbf{v}) = a + \mathbf{v}'\mathbf{b} \)
- Ativação ReLU: \( \phi(\mathbf{v}) = \max(0, a + \mathbf{v}'\mathbf{b}) \)
- Ativação de Heaviside: \( \phi(\mathbf{v}) = 1_{a + \mathbf{v}'\mathbf{b} > 0} \)
- Ativação logística: \( \phi(\mathbf{v}) = (1 + \exp(-a - \mathbf{v}'\mathbf{b}))^{-1} \)
Em redes neurais inspiradas biologicamente, a função de ativação é geralmente uma abstração que representa a taxa de disparo de potenciais de ação na célula. Em sua forma mais simples, essa função é binária, significando que o neurônio está ou disparando ou não. Neurônios não podem disparar mais rápido que uma certa taxa, motivando funções de ativação sigmoide cujo intervalo de saída é confinado a um intervalo finito.
Funções de Ativação Radiais
Uma classe especial de funções de ativação conhecidas como funções de base radial (RBFs) é usada em redes RBF. Essas funções de ativação podem assumir muitas formas, mas geralmente são encontradas como funções gaussianas: \( \phi(\mathbf{v}) = \exp(-\|\mathbf{v} - \mathbf{c}\|^2 / (2\sigma^2)) \), onde \( \mathbf{c} \) é o centro e \( \sigma \) controla a largura. Redes RBF usam esses campos receptivos locais para aproximação de funções.
Considerações Práticas
Ao escolher uma função de ativação, profissionais consideram fatores como custo computacional, comportamento do gradiente e a tarefa específica. Para redes profundas, a ReLU e suas variantes são frequentemente preferidas devido à sua eficiência e capacidade de evitar gradientes desaparecendo. Para camadas de saída, a sigmoide é usada para classificação binária, a softmax para classificação multiclasse e a ativação linear para regressão. Em transformadores, a GELU é comumente usada em camadas feed-forward, como visto em modelos como BERT e GPT. A escolha da função de ativação também pode interagir com outras técnicas, como normalização em lote e dropout.
Conclusão
As funções de ativação são fundamentais para a operação de redes neurais, fornecendo a não linearidade que permite o aprendizado de padrões complexos. De funções de degrau iniciais a variantes suaves modernas como GELU e Swish, elas evoluíram para enfrentar desafios no treinamento de modelos profundos. Compreender suas propriedades matemáticas ajuda pesquisadores e engenheiros a selecionar funções apropriadas para aplicações específicas, contribuindo para o sucesso de sistemas de inteligência artificial em diversos domínios.