ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. 신경망(2)
    AI 모델(딥러닝 기초)/2. 신경망 2022. 12. 27. 13:29
    728x90

    이번 시간에는 지난 신경망(1)에서 알아본 계단 함수(Step function)에서 발전된 형태인 Sigmoid function과 ReLU function에 대해서 알아보자.

     

    ※ Sigmoid Function

     

     

    # Sigmoid 함수 구현
    
    import numpy as np
    import matplotlib.pylab as plt
    def sigmoid(x):
        return 1 / (1 + np.exp(-x))
    
    x = np.arange(-5.0, 5.0, 0.1)
    y = sigmoid(x)
    plt.plot(x, y)
    plt.ylim(-0.1, 1.1)  #y축 범위 지정
    plt.show()

     

    이렇게 Sigmoid 함수를 구현해 볼 수 있다.

     

    그렇다면 Sigmoid 함수를 계단 함수와 비교해가며 특성을 살펴보자.

     

    ■ Sigmoid 함수 vs Step 함수

     

    Sigmoid 함수 Step 함수
    부드러운 곡선(매끈함)이며 입력에 따라 출력이 변한다. 0을 경계로 출력이 급격히 변한다.
    연속적인 실수를 반환한다. 0과 1 중 하나의 값만 반환한다.

     

    <공통점>

     

    1.큰 관점에서 보면 0과 1 사이의 같은 모양을 그린다.

    2. 둘 다 입력이 작을 때의 출력은 0에 가깝고, 입력이 커지면 1에 가까운 수를 출력한다.

    3. 입력이 중요하면 큰 값, 입력이 중요하지 않으면 작은 값을 출력한다.

    4. 입력이 아무리 작거나 커도 출력은 0과 1 사이의 값이다.

     

     

    ※ ReLU Function

     

     

    # ReLU 함수 구현
    
    import numpy as np
    import matplotlib.pylab as plt
    
    def relu(x):
        return np.maximum(0, x)
    
    x = np.arange(-6.0, 6.0, 0.1)
    y = relu(x)
    plt.plot(x, y)
    plt.ylim(-1.0, 5.0)  #y축 범위 지정
    plt.show()

     

    Sigmoid 함수를 신경망 분야에서 오랫동안 사용하였으나, 최근에는 ReLU 함수를 주로 이용한다.

     

    ReLU 함수 - 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하이면 0을 출력하는 함수

     

     

    ※ 왜 신경망은 비선형 함수를 사용하는가??

    비선형 함수 : 1개의 직선으로 표현될 수 없는 함수

     

    선형함수를 사용하게 되면 신경망의 층을 깊게 하는 의미가 없어진다. 은닉층이 없는 네트워크로도 같은 기능을 할 수 있기 때문!!!

    h(x) = cx 인 선형함수를 사용해서 3층의 네트워크를 구현하더라도 h(x) = c * c * c * x 의 형태로 나타나고 a = c^3으로 표현해버리면 h(x) = ax와 동일한 함수로 표현되어 버리기 때문이다.

     

    은닉층이 생명인 신경망에서는 층을 깊게 만드는 의미를 위해 비선형 함수를 사용한다!!!!

     

    728x90

    'AI 모델(딥러닝 기초) > 2. 신경망' 카테고리의 다른 글

    2. 신경망(6)  (2) 2023.01.05
    2. 신경망(5)  (0) 2023.01.05
    2. 신경망(4)  (0) 2023.01.04
    2. 신경망(3)  (0) 2023.01.02
    2. 신경망(1)  (0) 2022.12.26
Designed by Tistory.