Fundamentos
Funções de ativação: ReLU, GELU e SwiGLU
Blocos feed-forward modernos não apenas dobram o sinal, eles o controlam com gate: um ramo aprendido multiplica outro, e é por isso que a FFN do Qwen3.8-27B carrega três matrizes em vez de duas.
Atualizada em
01 · Conceito
Conceito
Abra a lista de parâmetros de qualquer modelo de linguagem grande recente e conte as matrizes de um bloco feed-forward. A lição 2.2 descreveu esse bloco como projetar para cima, ativar, projetar de volta — duas matrizes. O Qwen3.8-27B tem três por bloco, chamadas gate, up e down (Qwen3.8-27B Model Card, 2026). Algo mudou entre a figura do livro-texto e o modelo entregue, e a terceira matriz é onde esta lição mora.
Comece pelo que a versão do livro-texto faz. Uma função de ativação fica entre dois mapas afins aprendidos e torna não linear a composição deles. A ReLU é : entradas positivas passam inalteradas, entradas negativas viram zero. Ela é barata, linear por partes, tem derivada um do lado positivo e zero do lado negativo, e evitou a saturação ampla da sigmoide e da tanh que tornava redes profundas difíceis de treinar. Seu perigo conhecido é aquele lado negativo plano. Se a pré-ativação de uma unidade permanece negativa em todos os exemplos relevantes, nenhum gradiente a alcança pelo caminho da ReLU e a unidade está efetivamente morta; variantes leaky mantêm uma pequena inclinação negativa para preservar uma rota de recuperação.
A GELU suaviza o bico. Ela costuma ser escrita , onde é a função de distribuição acumulada da normal padrão, de modo que a entrada é escalada por quão longe dentro da distribuição ela está: positivos grandes passam quase intocados, negativos grandes são quase completamente suprimidos, e a transição perto de zero é gradual em vez de um vinco. Ela produz pequenas saídas negativas em vez de zeros duros. A SiLU, também chamada de swish nesta forma, é a prima próxima com a sigmoide logística no lugar de — mesmo formato, mais barata de avaliar, e a que acabou dentro dos blocos com gate.
Toda função até aqui é uma curva fixa aplicada elemento a elemento. Dê a ela um número e ela devolve um número; a regra nunca depende de mais nada. Aqui está o movimento que quebrou esse padrão.
Uma gated linear unit projeta a mesma entrada duas vezes. Uma projeção é o conteúdo, a outra é um gate, e as duas são multiplicadas elemento a elemento. Com SiLU no ramo do gate, isso é o SwiGLU:
seguido da projeção down de volta à largura do modelo. Três matrizes, não duas. O ramo do gate não carrega conteúdo adiante; seu único trabalho é decidir, por feature e por entrada, quanto do ramo de conteúdo sobrevive.
Passe uma coordenada com números. Suponha que, para um certo token, a projeção do gate produza na coordenada enquanto a projeção de conteúdo produz ali. O valor do gate é , então a saída naquela coordenada é cerca de : um sinal de conteúdo forte foi quase inteiramente suprimido, e ligeiramente invertido. Agora tome um token diferente em que a projeção do gate na mesma coordenada seja . O gate vira , e o mesmo valor de conteúdo sai como aproximadamente . Conteúdo idêntico, destino oposto, decidido pelo outro ramo. Uma curva fixa não consegue fazer isso — dê à ReLU o valor e ela devolve todas as vezes, sem importar o que o resto do vetor disse.
Aqui está o erro clássico ao avaliar isso. Você tem um bloco feed-forward com largura intermediária e uma GELU. Você troca por SwiGLU, mantém igual, retreina e mede um ganho de qualidade. É tentador reportar que o gating ajudou. Não é uma afirmação limpa: você também acrescentou uma matriz inteira a mais de shape , então parâmetros e computação subiram cerca de cinquenta por cento para aquele bloco. O ganho pode ser do gate, pode ser de capacidade, e o experimento não consegue separar os dois. A correção padrão é encolher a largura intermediária ao adotar um gate, comumente para cerca de dois terços do valor sem gate, para que o bloco de três matrizes custe o que o de duas custava. Só então a comparação isola o mecanismo.
Agora coloque os números no bloco. No Qwen3.8-27B cada uma das 64 camadas guarda um bloco feed-forward com gate que recebe o hidden state de 5120 dimensões, projeta para uma largura intermediária de 17.408 tanto no caminho do gate quanto no caminho up, multiplica, e projeta de volta para 5120. Isso dá aproximadamente 267 milhões de parâmetros por camada, e perto de 17 bilhões no modelo inteiro (Qwen3.8-27B Model Card, 2026). O que quer que gating seja, é ali que a maioria dos parâmetros deste modelo escolheu morar.
Duas cautelas de engenharia fecham a lição. Primeira: ativações moldam distribuições ao longo da profundidade; entradas grandes amplificam saídas e gradientes, regiões saturadas suprimem o aprendizado, e médias não nulas deslocam o que as camadas seguintes veem — que é precisamente por que a normalização e os caminhos residuais da lição 2.8 existem. Segunda: confira sempre a fórmula exata e o dtype que a implementação usa. A GELU vem em formas exata e aproximada, kernels fundidos reassociam a aritmética, e o arredondamento em bf16 difere da curva simbólica. Dois blocos que compartilham o nome de uma ativação podem computar funções mensuravelmente diferentes.
02 · Analogia
Analogia
Um estúdio de gravação roteia cada microfone por um tipo diferente de gate. A ReLU é um noise gate duro: sinal negativo é cortado, sinal positivo passa inalterado. A GELU é um gate suave que atenua níveis incertos em vez de cortar de forma abrupta. O SwiGLU divide o canal: um caminho carrega conteúdo enquanto outro caminho aprendido controla quanto desse conteúdo passa. A escolha muda tanto o som que segue adiante quanto o retorno que os engenheiros recebem ao ajustar os equipamentos anteriores.
03 · Explique de volta
Explique de volta
Explique por que uma ativação com gate precisa de três matrizes de pesos onde a ReLU precisa de duas, percorra a computação do SwiGLU, e diga o que o ramo do gate compra que uma curva fixa não compra.
Comparar com uma resposta-modelo
Um bloco feed-forward simples é projetar para cima, aplicar uma curva fixa elemento a elemento e projetar de volta: duas matrizes. Um bloco com gate projeta a entrada duas vezes, uma para um ramo de gate e outra para um ramo de valor, passa o gate pela SiLU, multiplica os dois elemento a elemento, e então projeta de volta: três matrizes, chamadas gate, up e down. A multiplicação é o ponto central — com que intensidade uma feature passa é computado a partir da própria entrada em vez de ser fixado pela curva, então a supressão vira aprendida e dependente do conteúdo. O Qwen3.8-27B usa essa forma com gate em cada um dos seus 64 blocos feed-forward, expandindo 5120 para 17.408 e de volta, cerca de 267M de parâmetros por camada.
04 · Teste seu entendimento
Teste seu entendimento
Conclua o teach-back e acerte o quiz para finalizar a aula.
◎ · Marcador de evidência
Fontes
- Dan Hendrycks e Kevin Gimpel (2016). Gaussian Error Linear Units (GELUs).
- Noam Shazeer (2020). GLU Variants Improve Transformer.
- Qwen Team (2026). Qwen3.8-27B Model Card.