출처: 모두를 위한 딥러닝 강좌 시즌 1 by Sung Kim
Activation Function
- XOR 문제를 풀기 위해서 여러 개의 unit을 합쳐서 신경망을 구성했다.
- 이때, 어떤 값이 다른 값으로 전달될 때 sigmoid function과 같은 함수를 거치게 되었다.
- 이를, 어떤 하나의 값이 어느 값 이상이면 activate 되고, 그렇지 않으면 activate 되지 않는 식으로 작용한다고 하여 Activation Function이라고 부른다.
hidden layer
- 여러 개의 층으로 구성된 신경망 모델에서, 가장 앞쪽의 layer는 input layer, 가장 바깥쪽의 layer는 output layer라고 불림
- 중간에 있는 layer들은 눈에 보이지 않는다는 의미에서 hidden layer라고 불린다.
- 이 hidden layer가 많을수록 더 deep한 신경망인 것이다.
tensorboard로 시각화된 딥러닝 모델 예시(sigmoid function)
- 그런데, sigmoid 함수로 구성된 layer가 많은 이 모델은 layer가 더 적은 모델보다도 잘 작동하지 않았음
hidden layer가 많은 모델이 잘 작동하지 않았던 이유?
- 앞선 강의에서 다루었듯, 각 unit에서의 미분값은 역전파(back propagation) 방식으로 chain rule을 적용하여 구해진다.
- 그런데, sigmoid 함수의 출력값은 0에서1 사이의 값으로, 입력값의 미분을 구하기 위해 이를 뒤쪽에서부터 반복해서 곱하는 과정을 반복하다보면, 입력의 미분값이 0에 가까워지게 된다.
- 이는 출력에 미치는 입력의 영향이 거의 없게 된다는 것으로, 학습이 잘 이루어지지 않는 것을 의미한다.
- 이를 경사하강법에서의 이동을 위한 경사가 사라진다는 의미에서, 'Vanishing gradient' 라고 표현한다.
wrong type of non-linearity
Geoffrey Hinton 교수는 딥러닝이 이제껏 잘 작동하지 않았던 이유 중 하나가 잘못된 타입의 비-선형성(non-linearity)을 사용해 왔기 때문이라고 밝혔다(sigmoid). 즉, sigmoid function이 문제 중 하나였다는 것.
이를 해결하기 위해 제안된 activation function이 ReLU이다.
ReLU
ReLU: Rectified Linear Unit
ReLU는 위의 그림과 같이 아주 간단한 함수이다.
- 입력이 0보다 작을 경우에는 activate 하지 않고,
- 0보다 클 경우에는 출력이 입력값에 비례해서 얼마든지 커질 수 있는 형태다.
max(0, X)
와 같이 아주 간단하게 구현할 수 있다.
ReLU를 사용해 구현된 딥러닝 모델
- 마지막 출력은 0 또는 1이어야 하기 때문에 마지막 activation function은 sigmoid를 사용한다.
- 이렇게 ReLU를 사용한 모델은 기존의 sigmoid 사용 모델보다 훨씬 잘 작동한다.
sigmoid와 ReLU를 변형한 몇몇 Activation Function 예시