Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

ReLU (Rectified Linear Unit)

ReLU (unidade linear retificada) calcula max(0, x), deixando passar as entradas positivas e convertendo as negativas em zero. Abrange o gradiente, ReLU moribunda, variantes e código PyTorch.

A unidade linear retificada (ReLU) é a função de ativação f(x) = max(0, x): deixa as entradas positivas passarem sem alteração e produz zero para todas as demais. Essa simples comparação dá a uma rede neural (NN) a não linearidade necessária para aprender padrões curvos, com custo computacional quase nulo. A ReLU tornou-se a ativação padrão das camadas ocultas no aprendizado profundo depois que Vinod Nair e Geoffrey Hinton a usaram em 2010 e que AlexNet, uma rede neural convolucional (CNN) baseada em ReLUs, venceu o desafio ImageNet de 2012. Ela continua sendo a referência para comparar ativações mais recentes, como SiLU e GELU.

Como funciona a ReLU#

A derivada da ReLU é 1 para entradas positivas e 0 para entradas negativas. Em zero, a derivada não está definida, e frameworks como PyTorch usam 0. Esses dois valores explicam as principais propriedades da ReLU:

  • Baixo custo computacional: A passagem direta consiste em comparar com zero e a passagem inversa, em aplicar uma máscara, sem exponenciais como as da sigmoide ou da tanh.
  • Sem saturação para entradas positivas: Um gradiente exatamente igual a 1 atravessa cada unidade ativa sem alterações, então os sinais de erro não diminuem ao retropropagar por muitas camadas, o que combate o problema do desvanecimento do gradiente causado por funções saturantes.
  • Ativações esparsas: Toda entrada negativa se torna exatamente zero, então apenas parte de uma camada fica ativa a cada instante. Com pesos inicializados aleatoriamente, cerca de metade das unidades de uma camada produz zero para determinada entrada.
  • Linear por partes: Uma rede construída com ReLUs calcula uma função linear por partes de sua entrada, com muitas regiões lineares unidas nos pontos em que as unidades são ativadas ou desativadas.

O exemplo PyTorch abaixo aplica nn.ReLU e usa autograd para calcular seu gradiente nos mesmos pontos:

import torch
from torch import nn

relu = nn.ReLU()

# Inputs on both sides of zero, tracked so PyTorch can compute gradients
x = torch.tensor([-2.0, -0.5, 0.0, 0.5, 2.0], requires_grad=True)
y = relu(x)

# Backpropagate a gradient of 1 from each output to its input
y.sum().backward()

print(f"Output:   {y.tolist()}")
print(f"Gradient: {x.grad.tolist()}")

Ele imprime as saídas [0.0, 0.0, 0.0, 0.5, 2.0] e os gradientes [0.0, 0.0, 0.0, 1.0, 1.0]. As entradas positivas passam sem alterar seus gradientes, enquanto as entradas negativas e o zero não recebem gradiente algum; isso explica tanto a esparsidade da ReLU quanto seu principal modo de falha.

O problema das ReLU inativas#

Uma unidade ReLU cuja entrada é negativa para todos os exemplos dos dados de treinamento produz zero e recebe gradiente zero, então seus pesos nunca mais mudam e a unidade fica efetivamente inativa. As unidades geralmente morrem quando uma grande atualização de pesos, muitas vezes causada por uma taxa de aprendizado alta, empurra o viés muito para o negativo. Algumas unidades inativas têm pouco impacto, mas uma execução mal ajustada pode desativar grande parte de uma camada. A inicialização He, que escala os pesos iniciais para camadas ReLU, junto com taxas de aprendizado moderadas e a normalização em lotes, mantém a maioria das unidades ativa; as variantes leaky eliminam o problema porque nunca deixam o gradiente chegar a zero.

Variantes da ReLU#

  • Leaky ReLU: Multiplica as entradas negativas por uma pequena inclinação fixa, normalmente 0,01, para que as unidades inativas continuem recebendo gradiente.
  • PReLU: Aprende a inclinação negativa durante o treinamento. Kaiming He e colegas a apresentaram em 2015, no mesmo artigo que propôs a inicialização He.
  • ReLU6: Limita a saída a 6, min(max(0, x), 6), mantendo as ativações em um intervalo bem representado pela aritmética de baixa precisão. MobileNetV1 e MobileNetV2 a utilizam.
  • ELU: Substitui o lado negativo por uma curva exponencial suave que satura em −1, aproximando de zero a média das ativações.
  • SiLU e GELU: Curvas suaves, x · σ(x) e x · Φ(x), que se comportam como a ReLU para entradas grandes, mas deixam passar pequenos valores negativos e não têm uma quina em zero. Custam mais por elemento, e o artigo sobre GELU relatou ganhos em relação à ReLU em todas as tarefas de visão, linguagem e fala avaliadas.

ReLU versus sigmoide e tanh#

Antes da ReLU, as camadas ocultas usavam sigmoide ou tanh. Ambas saturam: para entradas muito positivas ou negativas, suas curvas se achatam e as derivadas se aproximam de zero; além disso, a derivada da sigmoide nunca ultrapassa 0,25, nem mesmo no ponto mais inclinado. Multiplicar essas derivadas ao longo de muitas camadas priva as camadas iniciais do gradiente. No artigo da AlexNet, uma CNN de quatro camadas com ReLUs atingiu 25% de erro de treinamento no CIFAR-10 seis vezes mais rápido que a mesma rede com unidades tanh. A sigmoide e a tanh continuam em uso quando seus intervalos limitados são desejáveis: a sigmoide nas camadas de saída para probabilidades e nas portas de células recorrentes, e a tanh nos estados ocultos recorrentes.

ReLU em modelos modernos#

ResNet e a maioria das CNNs de sua época usam ReLU em todas as camadas, e o transformer original de 2017 a usava nas camadas feedforward. Muitos modelos mais recentes adotaram funções mais suaves: GELU no BERT e nos transformers de visão, e SwiGLU em muitos modelos de linguagem grandes atuais; a ReLU continua comum onde a velocidade e o suporte de hardware são prioritários. YOLO26 usa SiLU por padrão em seus blocos Conv, e uma linha activation: nn.ReLU() no YAML do modelo substitui a SiLU pela ReLU em todos os blocos Conv antes do treinamento, o que é adequado para aceleradores como o AMD Zynq UltraScale+ DPU, que executa ReLU nativamente, mas não SiLU. No PyTorch, nn.ReLU(inplace=True) sobrescreve seu tensor de entrada com o resultado, economizando a memória de um tensor de saída separado.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina