MPRNet의 CAB 구조에 보이는 PReLU

Untitled


딥러닝 네트워크에서 activation function으로 필수적으로 사용되어온 ReLU

이를 개선한 것 중 하나이다

Untitled

음수의 값을 모두 0으로 만듬

양수에서의 gradient 1, 음수에서의 gradient 0

Untitled

음수에서도 작은 값의 gradient 발생(그림에선 0.02)

ReLU보다는 음의 값에 대해서도 작은 값의 gradient가 발생할 수 있도록 해줌

Untitled

음수에 대한 gradient를 a라는 변수 로 두어 ‘학습'을 통해 ‘업데이트' 시키는 것이다

$$ f(y_{i}) = max(0, y_{i}) + a_{i}min(0, y_{i}) $$

pytorch에서는 nn.PReLU로 사용 가능하다

def __init__(self):
        super(Net, self).__init__()
        self.conv1_1 = nn.Conv2d(1, 32, kernel_size=5, padding=2)
        self.prelu1_1 = nn.PReLU()