딥러닝과 인공신경망: 퍼셉트론과 활성화 함수

Yougurt_Man·2022년 7월 23일
0

Machine Learning Theory

목록 보기
12/18
post-thumbnail

퍼셉트론

퍼셉트론은 신경망의 기원이 되는 알고리즘이다.

y=x1w1+x2w2+by= x_1w_1+x_2w_2 + b 이며, 가중합의 결과에 따라 y 출력이 1 또는 0으로 정해진다.

  • x1, x2: 입력
  • w1, w2: 가중치
  • b: 편향

아래의 논리게이트를 퍼셉트론으로 구현해보자.

  1. AND Logic Gate Perceptron

  2. NAND Logic Gate Perceptron

  3. OR Logic Gate Perceptron

# 단층 퍼셉트론 구현 
# 여기서 b 는 편향을 의미 
# x 는 입력 
# y 는 출력 

def AND(x1, x2):
  x = np.array([x1,x2])
  w = np.array([0.5,0.5])
  b = -0.7

  sum = np.sum(x*w) + b  
  if sum >= 0:
    return 1
  elif sum < 0:
    return 0
    
def NAND(x1, x2):
  x = np.array([x1,x2])
  w = np.array([-0.5,-0.5])
  b = 0.7

  sum = np.sum(x*w) + b  
  if sum >= 0:
    return 1
  elif sum < 0:
    return 0

def OR(x1, x2):
  x = np.array([x1,x2])
  w = np.array([0.5,0.5])
  b = -0.2

  sum = np.sum(x*w) + b  
  if sum >= 0:
    return 1
  elif sum < 0:
    return 0
  1. 논리 게이트를 여러층으로 쌓으면 XOR을 표현가능하다. (다층 퍼셉트론)

퍼셉트론은, 간단하게 설명했지만 이후 진행될 신경망부터는 조금더 자세히 다루어 보자

활성화 함수

활성화 함수는, 입력값과 바이어스의 가중합을 기준으로 출력의 활성화 여부를 결정한다.

대표적인 함수 몇개와 구현 식을 살펴 보자.

## Activation Function 

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

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)

plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()

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

y = sigmoid(x)

plt.plot(x,y)
plt.ylim(-0.1,1.1)

plt.show()

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

y = relu(x)

plt.plot(x,y)

plt.show()
  1. 계단함수
    0을 넘으면 1을 출력
  1. 시그모이드
    출력값이 실수. 입력값이 작아질수록 출력값이 0에 가깝고 입력값이 커질수록 출력값이 1에 가까워짐

  1. RELU
    입력이 0을 넘으면, 입력값을 그대로 출력함

profile
Greek Yogurt

0개의 댓글