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)
'딥러닝' 카테고리의 다른 글
| [Deep Learning] 모델의 강건성 높이기 (0) | 2025.09.10 |
|---|---|
| [Deep Learning] 신경망 설계 (2) | 2025.09.01 |
| [Deep Learning] NLL(Negative Log Likelihood)에 대해 (1) | 2025.08.31 |
| [Deep Learning] 1. 확률론 (7) | 2025.08.10 |
| [PyTorch practice] RNN 코드 도식화하기 (0) | 2025.06.06 |