Sobes.tech
Junior — Senior

V čem se liší mean/max pooling od learnable pooling?

sobes.tech AI

Odpověď od AI

Mean pooling a max pooling jsou pevné operace agregace, které se aplikují na vstupní data (například na vlastnosti v konvolučních neuronových sítích). Mean pooling vypočítá průměrnou hodnotu prvků v okně, zatímco max pooling vezme maximální hodnotu. Tyto metody nemají učitelné parametry a slouží ke snížení rozměrnosti a zvýraznění důležitých vlastností.

Učitelný pooling (learnable pooling) je přístup, kdy je operace agregace parametrizovaná a parametry jsou trénovány spolu se zbytkem sítě. Například to může být vážený průměr s učitelnými váhami nebo složitější mechanismy, jako attention pooling. Tento pooling umožňuje modelu přizpůsobit se datům a zvýraznit relevantnější vlastnosti.

Jednoduchý příklad učitelného poolingu je parametrický vážený pooling:

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):
        # tvar x: (batch, features)
        w = torch.softmax(self.weights, dim=0)
        return (x * w).sum(dim=1)

Hlavní rozdíl je tedy v tom, že mean/max pooling je pevný a neučitelný, zatímco učitelný pooling má parametry, které jsou optimalizovány během tréninku modelu.