210813 FUNDAMENTAL 23. 활성화 함수

시에나 Sienna·2021년 8월 13일
0

AIFFEL

목록 보기
27/66
post-custom-banner

1. 활성화 함수

  • activation function = Transfer function
  • 노드에 입력으로 들어오는 값이 어떤 '임계치'를 넘어가면 "활성화(activated)"되고, 넘어가지 않으면 "비활성화(deactivated)"되게끔 코딩이 되어 있는 것
  • 활성화 함수를 쓰는 이유 : 표현력 향상(representation capacity 또는 expressivity를 향상)

1) 퍼셉트론

  • 퍼셉트론 = 하나의 노드
  • 단층 퍼셉트론을 쌓으면 다층 퍼셉트론 ⇨ 딥러닝 모델은 다양한 구조의 퍼셉트론이 쌓인 것

2. 종류

1) 이진 계단 함수(Binary step function)

  • 입력이 특정 임계점을 넘으면 1(True), 아니면 0(False) ⇨ 즉, 치역(range)가 0, 1
  • 단층 퍼셉트론(single layer perceptrons) 초기의 신경망에서 자주 사용
  • 선형적으로 구분 가능한(linearly separable) 문제를 구현
    • ex) AND gate 또는 OR gate
  • 한계
    1. XOR gate는 단층 퍼셉트론으로 구현 불가 ⇨ 다층 퍼셉트론(multi-layer perceptron, MLP)으로 가능
    2. 역전파 알고리즘(backpropagation algorithm)을 사용하지 못함
      • 결국 현실적인 복잡한 문제 해결이 어려움
    3. 다중 출력 불가

2) 선형 활성화 함수(Linear activation function)

  • 이진 계단 함수의 한계점을 해결

    1. 다중 출력/다중 분류 가능
    2. 미분 가능 ⇨ 역전파 알고리즘 사용 가능
  • 단점 :

    1. 모델의 표현력이 떨어짐
      • 노드의 개수를 아무리 많이 붙여도 결국 하나의 노드를 사용하는 것과 차이가 없음
    2. 비선형적 특성을 지닌 데이터를 예측하지 못 함

선형(Linear) 변환 : 선형'이라는 규칙을 지키며 V 공간상의 벡터를 W 공간상의 벡터로 바꿔주는 역할

3) 비선형 활성화 함수(Non-linear activation function)

  • 비선형(Non-Linear) : 선형이 아닌 함수
  • 이전의 활성화 함수들의 문제점을 해결
    • 역전파 알고리즘을 사용 가능
    • 다중 출력 가능
    • 비선형적 특성의 데이터 예측 가능
  • 딥러닝에서 비선형 활성화 함수를 주로 쓰는 이유 ⇨ 딥러닝 모델의 표현력 향상을 위해

① 시그모이드(sigmoid 혹은 로지스틱 logistic) 활성화 함수

/sigma(x)=/frac11+ex/sigma(x) = /frac{1}{1+e^{-x}}

  • 이진 분류(Binary Classification) Task에서 확률 예측에 자주 사용
  • 치역 : (0, 1) ⇨ 0 < $/sigma(x) < 1
  • 시그모이드 함수의 미분 : /fracd/sigma(x)dx=/sigma(x)(1/sigma(x)/frac{d/sigma(x)}{dx} = /sigma(x)(1-/sigma(x)

    수치 미분 : hh의 값을 최대한 00에 가까운 값으로 잡아서 실제 미분값에 근사하게 만들어주는 것

  • 단점
    1. 0 또는 1에서 포화(saturate)됨
      • 포화가 발생하면 gradient가 0과 가까워짐을 의미함
      • 0에 가까운 gradient와 역전파 값이 곱해지면서 모든 역전파 값들이 0에 근접
        ⇨ 가중치 업데이터가 일어나지 않음( = kill the gradient)
    2. 시그모이드 함수의 출력은 0이 중심(zero-centered)이 아님
      ⇨ 즉, 훈련의 시간이 오래걸리게 된다는 것

② Softmax

  • 다중 분류(multy classification) Task에 사용
    • ex) CIFAR-10 이미지 분류
    • 10가지, 100가지 class 등 class의 수에 제한 없이 "각 class의 확률"을 구할 때 쓰임
  • 특징 : 확률의 성질인 모든 경우의 수(=모든 class)의 확률을 더하면 1이 됨
    • 때문에 마지막 layer에서 활용 됨

③ tanh(Hyperbolic tangent)

tanh(x)/fracexe1ex+e1tanh(x) /frac{e^x - e^{-1}}{e^x + e^{-1}}

  • 치역 : (-1, 1) ⇨ $ -1 < /sigma(x) < 1 $
  • 미분 : /fracdtanh(x)dx=1=tanh2(x)/frac{d tanh(x)}{dx} = 1= tanh^2(x)
  • 시그모이드 함수와는 다르게 0을 중심으로 함
  • 단점 : -1 또는 1에서 포화(saturate)

④ ReLU(rectified linear unit)

f(x)=max(0,x)f(x) = max(0, x)

  • 최근 가장 많이 사용되고 있는 활성화 함수
  • 치역 : `[0, /infinit)$
  • x=0x = 0에서 미분이 되지 않는 이유 ⇨ 함수의 우미분과 좌미분이 다르기 때문

    x=ax=a에 대해 함수 ff의 미분이 존재한다 ⇨ 함수의 우미분과 좌미분값이 같다는 것

  • ReLU로 f(x)=x2f(x) = x^2 같은 함수 표현도 가능함
  • 단점 :
    1. 출력값이 0이 중심이 아님
    2. Dying ReLU : 모델에서 ReLU를 사용한 노드가 비활성화되며 출력을 0으로만 되는 것
      ⇨ 즉, 노드가 죽어버림
      • 학습률(learning rate)을 크게 잡을 때 자주 발생
      • 학습률을 줄여준다면 이 문제는 적게 발생

⑤ ReLU의 단점을 극복한 함수

  1. Leaky ReLU함수 : ReLU 함수의 'Dying ReLU'를 해결
    • 0을 출력하던 부분을 아주 작은 음수값을 출력
  2. PReLU(parametric ReLU) : 새로운 파라미터를 추가하여 0 미만일 때의 '기울기'가 훈련됨
  3. ELU(exponential linear unit) : 단점 두가지(0이 중심점이 아님, 'Dying ReLU'문제) 해결
    • 단점 : exponential 연산이 들어가서 계산 비용이 높아
post-custom-banner

0개의 댓글