본문 바로가기
Programming/MachineLearning

딥러닝 핵심 개념 신경망 10분만에 이해하기

by 하하호호 2021. 12. 15.
반응형

 

인간의 신경망 작동

 

인간의 뇌는 약 1000억개의 뉴런으로

구성된다. 뉴런 사이에는 시냅스라는

연결부위가 존재한다. 신경 말단에서

자극을 받으면 시냅스에서 화학물질이

분비되고, 전위 변화를 일으킨다.

 

전위가 임계값을 넘기게 되면, 다음 뉴런으로

신호를 보내서 말단 신경에서 온 자극을

느끼고 이해하고 생각하고 행동을

취하게 되는 것이다. 

 

딥러닝에서도 이와 유사하게 

입력값을 받아서 활성화함수를

사용해서 출력값을 도출해낸다.

 

딥러닝 신경망의 핵심개념은

인간의 뇌의 뉴런과 시냅스와

유사한 개념인 퍼셉트론(peceptron)이다.

 

퍼셉트론(perceptron)

퍼셉트론에서 기울기, 절편은 다른 개념이다.

 

기울기 a는 가중치를 의미하는 w(weight)다.

 

절편 b는 편향을 뜻하는 바이어스(bias)다.

 

가중합이란 입력값과 가중치의 곱의 총합에

바이어스 b를 더한 값을 의미한다.

 

가중합의 결과를 1과 0으로 표현해서 

다음 신경망으로 보내는 역할을 하는 

함수가 바로 활성화 함수(activation function)이다.

 

 

퍼셉트론의 중요성

사실 인공지능의 개념은 1950년대 부터

나오기 시작했다. 그럼에도 불구하고, 당시

인공지능은 단순한 논리게이트를 풀지

못하는 수준이었다.

 

퍼셉트론 역시 인간의 뇌가

뉴런->신경망->지능의 순서로 흘러가듯이

퍼셉트론->인공 신경망->인공지능으로 

흘러갈것이라고 봤다.

 

하지만 단순한 논리게이트인 XOR 게이트를

판단하지 못했던 것이다. 다음 그래프를 보면

참/거짓을 분별하지 못하는 것을 볼 수 있다.

이 문제의 핵심은 2차원에서의 퍼셉트론으로는

단순한 XOR 게이트를 풀지 못한다는 것이다.

과학자들은 이를 해결하기 위해서 2차원에서

3차원으로 사고를 넓혀나간다.

 

퍼셉트론 안에서 차원을 넓힌다는 것은 

새로운 은닉층을 추가한다는 것이다. 은닉층을

새로 추가해서 공간을 왜곡시켜야 위 XOR 게이트

문제를 해결할 수 있는 것이다. 

 

다중 퍼셉트론

 

입력층은 은닉층으로 각각 가중치w와 바이어스b를

보낸다. 은닉층에서는 시그모이드 함수를 사용해서

최종값을 결과출력층으로 보내게 된다.

 

은닉층에 모이는 중간 정거장을 노드라고 표현한다.

퍼셉트론 하나로 해결되지 않는 문제는 생각보다 많다.

다중 퍼셉트론이 쌓이면서 인공신경망이 체계화

되기 시작했고, 현재의 신경망은 이 다중 퍼셉트론을

의미한다.

 

XOR 문제의 해결

XOR 문제는 NAND게이트, OR게이트, AND게이트가

동시에 연결되면서 해결된다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import numpy as np
 
# w = 가중치, b = 바이어스
w11 = np.array([-2,-2])
w12 = np.array([2,2])
w2 = np.array([1,1])
b1 = 3
b2 = -1
b3 = -1
 
 
# 퍼셉트론 함수 생성
def MLP(x, w, b):
    y = np.sum(w*x) + b
    if y <= 0:
        return 0
    else:
        return 1
 
# NAND 게이트
def NAND(x1, x2):
    return MLP(np.array([x1,x2]),w11,b1)
 
# AND 게이트
def AND(x1,x2):
    return MLP(np.array([x1,x2]), w2, b3)
 
# OR 게이트
def OR(x1,x2):
    return MLP(np.array([x1,x2]), w12, b2)
 
# XOR 게이트
def XOR(x1,x2):
    return AND(NAND(x1,x2), OR(x1,x2))
 
# x1, x2 값을 번갈아 대입해 가며 최종값을 출력한다.
if __name__ == '__main__':
    for x in [(0,0),(1,0),(0,1),(1,1)]:
        y = XOR(x[0], x[1])
        print("입력 값 : " + str(x)+ "출력값 : "+str(y))
 
 
cs

 

 

 

더 읽을거리

 

 

딥러닝 로지스틱 회귀 알고리즘 10분만에 이해하기

선형회귀분석과 다르게, 참과 거짓만을 분별해야 하는 모델이 필요하다. 우리는 이때 로지스틱 회귀 분석 알고리즘을 이용하게 된다. 로지스틱 회귀 분석 참, 거짓을 구분하는 알고리즘이 로지

incomeplus.tistory.com

 

 

딥러닝 머신러닝 인공지능 경사 하강법 10분만에 이해하기 쫄지마 딥러닝

딥러닝 경사 하강법? 이전 글에서 살펴본 선형회귀에서 오차를 줄여나가면서 예측값을 수정한다고 했다. 선형회귀에서 a값과 b값을 조정하면서 오차를 줄여나가게 되는데, 만약 기울기 a를 너무

incomeplus.tistory.com

 

 

딥러닝 기본 구조 이해하기 2

딥러닝 기본구조 딥러닝의 근간을 이루는 것은 인공 신경망이라고 불리는 작은 연산장치들의 집합이다. 신경망의 뼈대는 알고리즘에 많은 의존도를 보인다. 그 중 가장 대표적인 것이 선형 회

incomeplus.tistory.com

 

 

딥러닝 머신러닝 차이, 머신러닝 딥러닝

머신러닝 딥러닝 차이 알파고가 대한민국을 초토화 시킨지 5년이 지났다. 실생활에도 인공지능이 많이 들어 왔고, 무수히 쌓여가는 데이터들을 기반으로 한 새로운 사업들이 계속 등장하고 있

incomeplus.tistory.com

 

반응형

댓글