
활성화 함수(activation function)는 입력 신호의 총합을 출력 신호로 변환하는 함수로, 입력 받은 신호를 얼마나 출력할지 결정하고 네트워크에 층을 쌓아 비선형성을 표현할 수 있도록 해준다.
wx+b가 비선형 연산을 거치도록 함


이진분류에서 자주 사용
그러나 학습 상 두가지 문제
1) vanishing gradient
시그모이드 함수의 도함수 그래프를 보면 절대값 4 이상이 되면 0에 수렴하는 현상을 볼 수 있다. 이는 쉽게 말해 x의 절대값이 커짐에 따라 기울기가 0에 가까워 진다고 볼 수 있다. 이를 기울기가 소실되는 현상 , 즉 기울기 소실(vanishing gradient) 문제가 발생한다.
2) non zero-centered

Zero-centered란 그래프의 중심 0인 형태로 함숫값이 양수 혹은 음수에만 치우치지 않고 실수 전체에서 나타나는 형태를 의미한다.
Neural networks에서 input은 이전 layer의 결과값
이때 sigmoid 함수는 항상 양수이기에 sigmoid를 한번 거친 이후론 input 값은 항상 양수가 된다.
그렇게 되면 backpropagation을 할 때 문제가 생긴다.

2차원 평면에서 살펴보면 부호가 모두 같은 지점은 1,3 사분면 뿐이다. 따라서 지그재그의 형태로 학습이 될 수 밖에 없고 이는 학습을 오래 걸리게 한다.
중간 매개변수 n의 결정 과정


1) non zero-centered 해결
값이 [-1,1] 사이->기울기의 방향이 유동적일 수 있게 됨
2) vanishing gradient 문제는 해결하지 못했다.


장점
1)연산 속도 up: 뉴런의 활성화값이 0인 경우, 어차피 다음 레이어로 연결되는 가중치를 곱하더라도 결과값은 0을 나타내게 되서 계산할 필요가 없기에 연산속도가 빨라진다. (sparse한 형태가 dense한 형태보다 더 연산량을 월등히 줄여준다.) + 단순한 max연산(<->지수연산)으로 계산이 매우 빠르다.
2)Vanishing Gradient 해결(어느정도만...): ReLU의 역함수는 1이므로 ReLU의 경우에는 gradient로 상수를 갖게됨 -> 깊은 층에서 gradient가 소실되는 걸 어느정도 막아 줌
문제
1)non zero-centered
2)Dying ReLU
input(이전 뉴런의 출력물)이 0보다 작으면 학습이 안됨
input과 뉴런이 연산하여 0보다 작으면 뉴런은 아무것도 못배운다!
->Dying ReLU는 그렇게 심각한 문제는 아니다!
Dying ReLu” 현상을 해결하기위해 나온 함수

negative에도 기울기를 살짝 주면서 앞서 두 문제를 거의 해결

Leakly ReLU에서 negative에 주는 기울기를 alpha라는 학습가능한 파라미터로 조절

오히려 negative에서 seturation(함수의 기울기가 0에 가까워 짐)을 만들었음
->이를 통해 noise에 더 강인할 수 있다고 함


[x번일 확률/전체확률]
input값을 [0,1] 사이의 값으로 모두 정규화하여 출력하며, 출력값들의 총합은 항상 1이 되는 특성을 가진 함수이다. 다중분류(multi-class classification) 문제에서 사용
분류될 클래스가 n개라고 할 때, n차원의 벡터를 입력받아 각 클래스에 속할 확률을 추정
시그모이드와 차이) 시그모이드 함수를 통과해 얻은 확률값들은 서로 독립적이다. 가령 3개의 클래스가 있다고 하면, 데이터 포인트가 클래스 1에 속할 확률은 다른 두 클래스의 확률을 고려하지 않는다. 따라서 multi-class classification에서 시그모이드 함수는 사용할 수 없고, 대신 소프트맥스 함수를 사용한다.