Sobes.tech
Junior — Senior

Em que os pooling mean/max diferem do pooling aprendível?

sobes.tech IA

Resposta da IA

Mean pooling e max pooling são operações fixas de agregação aplicadas aos dados de entrada (por exemplo, às características em redes neurais convolucionais). Mean pooling calcula a média dos elementos numa janela, enquanto max pooling pega o valor máximo. Esses métodos não têm parâmetros treináveis e servem para reduzir a dimensionalidade e destacar características importantes.

O pooling treinável (learnable pooling) é uma abordagem onde a operação de agregação é parametrizada e os parâmetros são treinados junto com o resto da rede. Por exemplo, pode ser uma média ponderada com pesos treináveis ou mecanismos mais complexos, como attention pooling. Este pooling permite que o modelo se adapte aos dados e destaque características mais relevantes.

Um exemplo simples de pooling treinável é o pooling ponderado paramétrico:

import torch
import torch.nn as nn

class LearnablePooling(nn.Module):
    def __init__(self, input_dim):
        super().__init__()
        self.weights = nn.Parameter(torch.randn(input_dim))

    def forward(self, x):
        # x shape: (batch, features)
        w = torch.softmax(self.weights, dim=0)
        return (x * w).sum(dim=1)

Assim, a principal diferença é que o mean/max pooling é fixo e não treinável, enquanto o pooling treinável possui parâmetros que são otimizados durante o treinamento do modelo.