딥러닝기초_0318_ Fri

allzeroyou·2022년 3월 18일
0

딥러닝기초

목록 보기
3/22

퍼셉트론

인공신경망의 한 종류, 코넬 항공 연구소의 프랑크 로젠 블라트에 의해 고안
간단한 형태의 피드포워드(Feedforward) 네트워크

네트워크
한 곳에서 다른 한 곳으로 데이터를 보내는 것.

  • x1, x2: 입력 신호
  • w1, w2: 가중치(weight)=> 데이터가 얼만큼 중요하냐에 따라 결정.
  • weighted sum : w1x1 + w2x2
  • θ: 임계값

퍼셉트론의 신호

전류와 달리 흐른다/ 안흐른다(1/0)의 두가지 값
1: 신호가 흐른다, 0: 신호가 흐르지 않는다.

(입력값에 가중치를 곱한 값 <= 임계값)이면 0
(입력값에 가중치를 곱한 값 > 임계값)이면 1

가중치가 크면 클수록 더 중요하다, 작으면 작을수록 덜 중요하다.

단순한 논리 회로

  • 퍼셉트론을 활용한 AND 논리 구현
    AND 게이트
    모든 입력이 1일 경우에만 1을 출력
    나머지 경우에는 0을 출력

컴퓨터의 논리 회로는 몇 조개의 게이트를 조합해 만든 것

=> AND 게이트를 퍼셉트론으로 표현 가능.
AND 게이트에 적합한 (w1, w2, θ) 찾기

  • 퍼셉트론을 활용한 NAND 논리 구현
    NAND 게이트
    모든 입력이 1일 경우에만 0 출력
    나머지 경우에는 1을 출력

AND 게이트의 출력에 NOT을 붙인 값과 동일함.

=> NAND 게이트를 퍼셉트론으로 표현 가능
NAND 게이트에 적합한 (w1, w2, θ) 찾기

  • 퍼셉트론을 활용한 OR 논리 구현
    OR 게이트
    입력 중 하나라도 1일 경우에는 1을 출력, 나머지 경우(입력이 모두 0일 경우)에는 0을 출력.

왜 NAND?
AND, OR 뿐만 아니라 NAND까지?

def AND(x1, x2):
  w1, w2, theta = 0.5, 0.5, 0.7
  tmp = x1*w1 + x2*w2
  if tmp <= theta:
    return 0
  elif tmp > theta:
    return 1

AND(0,0)
AND(0,1)
AND(1,0)
AND(1,1)

가중치와 편향 도입

편향: 어딘가로 치우침.
세타를 b로 바꾸어 표현, b를 편향 bias, w1/w2는 그대로 가중치(weight)임.
임계값을 0으로 고정.
-퍼센트론의 출력은 입력 신호에 가중치를 곱한 값과 편향을 합하여 0을 넘으면 1을 출력, 그렇지 않으면 0을 출력.

import numpy as np
x = np.array([0,1]) #입력
w = np.array([0.5, 0.5]) #가중치
b = -0.7
print(w * x)
print(np.sum(w*x))
print(np.sum(w*x)+b)

편향은 가중치 w1, w2와 기능이 다름.
w1와 w2는 각 입력신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수임.

  • 가중치와 편향 구현하기
def AND(x1, x2):
  x = np.array([x1, x2])
  w = np.array([0.5, 0.5])
  b = -0.7
  tmp = np.sum(w*x) + b
  if tmp <= 0:
    return 0
  if tmp > 0:
    return 1

print(AND(0,0))

b를 크게 할 수록 0보다 클 확률 증가.
ex) 계산했더니 오차 -5가 생김 => 값을 좀더 높이라고 말함 => 바이어스(bias) 편향값을 올림.

profile
모든 건 zero 부터, 차근차근 헛둘헛둘

0개의 댓글