딥러닝 공부를 하는 중이나 복습 차 python코드로 된 활성화 함수 몇가지를 올려봅니다.

여기서 활용하는 함수들의 출처는 – 밑바닥부터 시작하는 딥러닝 – 에서 참고하였습니다.

일단 신경망의 기초가 되는 퍼셉트론에서는 활성화 함수로 계단 함수를 이용한다라 할 수 있습니다.

python으로 구현하는 간단한 계단함수 코드는

def step_function(x):
    if x > 0:
        return 1
    else:
        return 0

가 되겠습니다.

 

x가 0을 기준으로 0과 1로 결과값이 나눠집니다.

이 코드를 numpy를 사용하여 더 편하게 사용하려면

import numpy as np
def step_function(x):
    return np.array(x > 0, dtype=np.int)

로 사용하시면 되겠습니다.

결과값이 true 또는 false로 분기되는 것을 dtype=np.int를 통해 정수형으로 형변환을 시켜주는 원리입니다.

여기까지는 계단함수를 보았습니다.

 

다음은 시그모이드 함수 구현입니다.

시그모이드의 공식은 아래와 같습니다.

이것을 numpy를 통해 쉽게 코드로 구현하면

import numpy as np
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

그래프는 아래와 같이 나옵니다.

마지막으로 (ReLU)렐루 함수를 보겠습니다.

렐루 함수는 0이하이면 0을 출력, 0을 넘으면 그대로의 값을 출력하는 함수입니다.

렐루 함수는 파이썬 코드로 상당히 간결하게 구현이 가능합니다.

import numpy as np
def relu(x):
    return np.maximum(0, x)

위와 같이 0과 값중에 최대값을 출력하면 렐루 함수가 됩니다.

여기까지 간단한 Python코드로 구현해보는 활성화 함수 세가지를 보았습니다.