ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. 활성함수(Activation Function)
    잡다한 것들 2020. 11. 7. 17:14
    반응형

    1. 퍼셉트론에서 임계치(theta)를 넘기면 1, 아니면 0을 내보냈다.

    이 부분을 활성(화) 함수라고 하는데, 활성함수는 여러 가지 있다. 

    출처: 위키백과

     

    0. 선형함수가 활성함수로 부적절한 이유

    선형은 반복해도 최종값은 입력의 상수배이며, 이는 단층으로도 같은 효과를 낼 수 있다. 

    그래서 비선형 활성 함수를 쓴다. 

     

    1. 계단함수

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def h(x):
        return np.array(x > 0)
    
    
    x = np.arange(-5, +5, 0.1)
    y = h(x)
    plt.plot(x, y)
    plt.show()

    0 또는 1. 계단 모양. 그래서 계단 함수(step function)이라 한다. 

     

    2. 시그모이드 함수 

    f(x) = 1 / (1 + e**(-x)) 

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def sigmoid(x):
        return 1 / (1 + np.exp(-x))
    
    
    print(sigmoid(0))
    x = np.arange(-5, +5, 0.1)
    y = sigmoid(x)
    plt.plot(x, y)
    plt.show()
    • sigmoid(0) = 0.5를 기준으로 대칭이다. 계산이 힘들다.
    • 비선형이다.
    • 미분 가능하다.
    • 1과 -1의 제한. 여러 층의 활성함수를 거치면 기울기 값이 소멸된다. 

     

    3. 하이퍼볼릭 탄젠트(tanh)

    f(x) = (e**x - e**(-x)) / (e**x + e**(-x))

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def tan_h(x):
        return np.tanh(x)
    
    
    x = np.arange(-5, +5, 0.1)
    y = tan_h(x)
    plt.plot(x, y)
    plt.show()
    
    • 0을 기준으로 대칭이다. 계산이 쉽다.
    • 비선형이다.
    • 미분 가능하다.
    • 1과 -1의 제한. 여러 층의 활성함수를 거치면 기울기 값이 소멸된다.

     

    4. RelU 함수

    f(x) = (abs(x) + x) / 2
         = maximum(0, x)

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def relu(x):
        return np.maximum(0, x)
    
    
    x = np.arange(-5, +5, 0.1)
    y = relu(x)
    plt.plot(x, y)
    plt.show()
    • 계산이 아주 단순하다. 
    • 여러 층의 계산을 거쳐도 값이 소멸되지 않는다. 
    • 음의 값을 가지면 죽어버린다.

     

    5. Leaky ReLU

    f(x) = max(ax, x)

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def leaky_relu(x):
        return np.maximum(a*x, x)
        
    
    a = 0.1
    x = np.arange(-5, +5, 0.1)
    y = leaky_relu(x)
    plt.plot(x, y)
    plt.show()
    • 일반적으론 a는 0.01 정도
    • 음의 값을 가져도 살아있도록...  

     

    6. 소프트맥스 함수(Softmax function)

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def softmax(x):
        return np.exp(x) / np.sum(np.exp(x))
        
    
    x = np.arange(-5, +5, 0.1)
    y = softmax(x)
    plt.plot(x, y)
    plt.show()
    • 주로 출력층에서 분류에 사용
    • 출력의 합이 1 = 유사 평균으로 사용. 
    • 작은 것을 더 작게, 큰 것을 더 크게 만듬
    • 실제 사용시엔 분모, 분자에 상수값(데이터 중에 가장 큰 값)을 곱한다. 
    반응형
Designed by Tistory.