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.