딥러닝

[Deep Learning] 활성화 함수에 대해

jun1-cs 2025. 8. 31. 16:09

1. 활성화 함수의 의미

활성화 함수는 여러 hidden layer 사이에서, hidden layer 속 linear layer의 출력에 대해 비선형성을 더하는 용도로 사용된다.

ex: ReLU 함수(정류선형함수) - max(z,0)으로, z가 양수여서 활성화 상태라면 기울기가 1로 일정하다. ReLU도 그렇고, 여러 활성화 함수들이 미분 불가능한 점을 가진다.(비선형성)

 

-> 그런데, 아무리 비선형성 추가가 모델의 복잡성을 위해 필요하다고 해도, 비선형적이면 SGD에서 미분이 안 되는 거 아님? 

->SGD를 통해서 loss function의 완전한 극솟점을 찾는 것은 불가능하다.

-> 미분 불가능한 지점에 도달할 가능성은 거의 없으므로  이 부분을 문제삼지 않아도 된다.

(만약 미분 불가능한 점에 대해 미분계수를 구해야 하는 상황이 오면, 좌/우미분계수 중 아무거나 하나 반환한다.)

 

* hidden layer(은닉 단위)

하나의 벡터 x를 입력받은 후 z=W^T x + b 의 어파인 변환 -> 활성화함수 g(z) 적용

 

2. 여러 가지 활성화 함수

1) ReLU로부터 뻗어나온 응용(선형이지만 첨점이 있어서 미분 불가능하고 비선형성 추가!)

- 절댓값 정류: g(z)=|z|

- leaky ReLU: h=max(0,z) + a min(0,z)에서 a가 0.01보다 작게 고정

- parametric ReLU: h=max(0,z) + a min(0,z)에서 a를 매개변수로 보고 학습

 

-maxout unit: ReLU=max(0,z)이므로 이를 z에 대해 0과 z라는 두 선형변환을 취한 뒤 더 큰 값을 얻는 것으로 해석한다. 

그래서 이를 일반화하여 z를 k개의 affine function에 통과시키고 가장 큰 값을 얻는 것이 maxout unit의 컨셉이다.

g(z)=max zj

-> 하나의 맥스아웃 단위가 k개의 가중치-편향 벡터를 매개변수로 가지므로, 더 많은 정칙화(regulation)가 필요하다.

-> z에 속한 매개변수가 k개라면, 최대 성분을 취해 요약함으로써 이후의 층에 가는 매개변수 수가 1/k 개로 줄어든다.(filter)

-> 맥스아웃 단위의 일정한 중복성(redundancy) -> 과거 훈련한 과제 수행방법을 잊는 '파국적 망각'에 저항 가능

 

=> ReLU에서 뻗어 나온 활성화 함수들: 함수 모형이 선형 모형에 가까울수록 최적화하기 쉽다.

 

2) 기존의 활성화 함수들(미분 불가능은 아니지만 s자형 곡선이어서 비선형성 추가!)

- s자형 로지스틱 활성화 함수(0~1, 로지스틱 휘귀에서 사용): 순방향신경망이 아닌 확률모형, autoencoder에서 비선형 s자 함수를 쓴다. 

- tanh 함수: 위의 s자형 함수보다는 성능이 좋다. 

-> 두 함수 모두 z가 매우 크거나 매우 작을 경우 기울기가 포화하므로 기울기 기반 학습이 아0주 어렵다. 

-> DL모델 학습 시 s자형 함수를 잘 쓰지 않는다.

 

3) 그 외의 활성화 함수들

-MNIST에서 cos함수가 기존 활성화함수에 버금가는 성능을 보이기도 했다.

-활성화 함수 안 쓰기: 가중치, 파라미터 개수를 크게 줄일 수 있다! 다만, 선형 함수이기에 복잡도에는 한계가 있다.

-softmax 단위: 출력 단위로도 쓰이지만 은닉 단위로도 쓰인다.(k가지 값을 가지는 이산변수의 학률분포 표현함)

-방사상 기저함수(radial basis function, RBF): x가 템플릿 W에 접근함에 따라 더 활성

-softplus: ReLU의 매끄러운 버전이지만, ReLU가 더 좋은 성능을 보임이 확인되었다.

-hard tanh: 유계인 함수로, 모양이 s자 형태이다. 

 

이외에도 여러 활성화 함수들이 활발하게 연구되고 있다고 한다. 

 

 

 

 

 

 

 

<Deep Learning> Ian Goodfellow. et al(2016)