노션에서 작성한 노트를 HTML형식으로 가져오기 때문에 어색할 수 있습니다.
!잘 보이지 않으시면 오른쪽 밑의 달 모양 버튼을 클릭해주세요!
퍼셉트론:
프랑크 로젠블라트가 1957년에 고안한 알고리즘
신경망(딥러닝)의 기원이 되는 알고리즘
원리:
다수의 신호를 입력으로 받아 하나의 신호를 출력함
출력하는 신호는 0과 1 두 가지 값만을 가질 수 있음
위의 원을 뉴런 혹은 노드라고 부름
x는 입력 신호, w는 가중치, y는 출력 신호
각 입력신호에 그에 상응하는 가중치가 곱해지고 정해진 한계(임계값θ)를 넘으면 1, 보다 작으면 0
임계값을 넘는 것을 '뉴런이 활성화한다'라고도 표현
입력 신호 각각에 고유한 가중치가 부여됨
가중치: 각 신호가 결과에 주는 영향력을 조절하는 매개변수 - 클수록 해당 신호가 더 중요
θ를 편향으로 치환하여 다음과 같은 식으로 출력을 정의할 수 있음
편향: 뉴런이 얼마나 쉽게 활성화(출력이 1)되느냐를 조정하는 매개변수
가중치와 편향과 같은 매개변수에 적절한 값을 정하는 것을 학습이라고 함
기계학습은 컴퓨터가 인간 대신 자동으로 학습하는 것을 뜻함
사람은 퍼셉트론의 구조(모델)를 고민하여 컴퓨터에게 학습할 데이터를 넘겨주는 역할을 하게 됨
논리 회로
진리표: 입력 신호와 출력 신호의 대응 표
AND 게이트:
입력이 모두 1인 경우 1을 반환, 나머지 경우는 0을 반환
진리표:
def AND(x1, x2):
w1, w2, theta = 1, 1, -1.5
val = w1*x1 + w2*x2 + theta
if val <= 0:
return 0
else:
return 1
-----------------------
AND(0, 0) 0
AND(1, 0) 0
AND(0, 1) 0
AND(1, 1) 1
NAND 게이트:
입력이 모두 1인 경우 0을 반환, 나머지 경우는 1을 반환 - AND 게이트의 반대
진리표:
def NAND(x1, x2):
w1, w2, theta = -1, -1, 1.5
val = w1*x1 + w2*x2 + theta
if val <= 0:
return 0
else:
return 1
-----------------------
NAND(0, 0) 1
NAND(1, 0) 1
NAND(0, 1) 1
NAND(1, 1) 0
OR 게이트:
입력이 1과 0인 경우 1을 반환, 나머지 경우는 0을 반환
진리표:
def OR(x1, x2):
w1, w2, theta = 1, 1, -0.5
val = w1*x1 + w2*x2 + theta
if val <= 0:
return 0
else:
return 1
-----------------------
OR(0, 0) 0
OR(1, 0) 1
OR(0, 1) 1
OR(1, 1) 1
선형과 비선형 & 다층 퍼셉트론:
직선의 영역 - 선형 영역 | 곡선의 영역 - 비선형 영역
AND, NAND, OR는 단층 퍼셉트론으로 이는 비선형 영역을 분리할 수 없는 한계를 지님
다층 퍼셉트론:
단층 퍼셉트론으로 표현하지 못한 것을 층을 늘려 구현할 수 있음
*파이썬은 배열의 시작 인덱스가 0이기 때문에 층 번호를 0부터 표기하는게 편리함
XOR 게이트:
배타적 논리합 - 두 입력이 서로 다를 때 1을 반환, 나머지는 0을 반환
진리표:
def XOR(x1, x2):
s1, s2 = NAND(x1, x2), OR(x1, x2)
val = AND(s1, s2)
return val
결론:
다층 퍼셉트론은 복잡한 회로를 만들 수 있으며 퍼셉트론의 층이 많아지면 이론적으로 컴퓨터도 만들 수 있음
'데이터 사이언스' 카테고리의 다른 글
<데이터 사이언스/Data Science> 3. 신경망 학습 (0) | 2021.02.13 |
---|---|
<데이터 사이언스/Data Science> 2. 신경망 (0) | 2021.02.07 |
<데이터 사이언스/Data Science> 0. 노트 공유 (0) | 2021.01.31 |