본문 바로가기

DEV/AI

[머신러닝] 퍼셉트론 (인공신경망, 딥러닝)

딥러닝이란?

딥러닝이란 머신러닝의 여러 방법론 중 하나로 인공신경망에 기반하여 기계가 학습하도록 하는 방법

다음 그림과 같이 우리가 흔히 말하는 인공지능(AI)은 인공지능과 포괄적인 개념으로 머신러닝과 딥러닝을 포함하고 있으며, 딥러닝 또한 머신러닝의 한가지 방법이라는 것을 확인할 수 있다.

 

인공신경망이란?

사람의 신경 시스템을 모방한 것으로 머신러닝과 인지과학에서 생물학의 신경망(뇌)에서 영감을 얻은 통계학적 학습 알고리즘이다.

[출처] 2021 NIPA AI 온라인 교육

다음 그림은 뇌의 가장 작은 정보처리 단위인 뉴런의 구조를 나타내고 있으며 가지돌기에서 전기적인 신호를 입력받고, 축삭돌기를 통해서 신호를 전달해주며, 출삭 말단에서 신호를 출력해주는 형태임을 확인할 수 있다.

 

신경망 이전에는?

딥러닝이란 인공신경망에 기반하여 기계에게 학습하도록 하는 방법이라고 앞서 설명했다. 

현재 딥러닝은 실생활에서 사용되고 얼굴 인식 카메라, 번역, 알파고 제로와 같이 다양한 분야에서 적용되고 있다.

그렇다면 신경망 이전의 연구들은 어떻게 진행되었을까?

얼굴 인식을 분야에서는 눈, 코, 입과 같은 주요 특징들의 패턴을 통해 얼굴을 인식하고,

숫자나 문자 인식에서는 구성하는 특징들을 패턴으로 하여 구분하였다.

 

다음 그림을 보면 사람의 얼굴은 눈, 코, 입의 위치가 수직으로 위치하면 얼굴이라고 인식하고, 

숫자 9는 동그라미 하나와 직선 하나가 합쳐진 것, 알파벳 a는 동그라미 하나에 꼬리표가 붙은 것이라고 볼 수 있다.

 

이렇듯 신경망 이전에는 사람이 직접 패턴을 파악하고 설정해주어야 했다.

이러한 패턴 기반의 인식은 사람이 하나씩 패턴을 파악하고 설정해주어야 하고 데이터에 변화가 생기면 이에 대처할 수 없다는 한계점을 가지고 있다.

그러나 딥러닝에서는 인공신경망을 통해 기계가 스스로 패턴을 학습하고 설정할 수 있어서 이러한 한계점을 극복할 수 있다.

 

퍼셉트론이란?

 

[출처] 2021 NIPA AI 온라인 교육

 

1958년 초기 신경망인 퍼셉트론이 등장하게 되었다. 퍼셉트론이란 무엇일까?

 

 

단층 퍼셉트론 기본 구조

[출처] 2021 NIPA AI 온라인 교육

단층 퍼셉트론의 기본 구조는 다음과 같다.

  1. 퍼셉트론 입력값과 편향 값 입력
  2. 입력값 X 입력값의 가중치 + 편향 값
  3. 활성화 함수를 거쳐 출력값 출력

활성화 함수란?

[출처] 2021 NIPA AI 온라인 교육

활성화 함수는 다음 그림과 같이 함수에 입력되는 값이 특정 임계치를 넘었을 때 출력해주는 것을 의미한다.

앞서 기본 구조 2번의 [ 입력값 X 입력값의 가중치 + 편향 값 ] > 0 (임계치) 인 경우에만 출력해준다는 의미이다.

여기서 편향값의 존재 이유를 알 수 있다.

위의 식은 [입력값 X 입력값의 가중치 ] > - 편향 값 (임계치) 로 변환될 수 있는데 여기서 편향 값을 통해 임계치를 조절할 수 있게 되는 것이다.

 

단층 퍼셉트론 파이썬 구현

def perceptron(w, x):
    
    output = sum(a*b for a,b in zip(w[1:],x)) + w[0]
    
    y = 1 if output>0 else 0
    
    return y, output

# x_1, x_2, x_3, x_4의 값을 순서대로 list 형태로 저장
x = [1,2,3,4]

# w_0, w_1, w_2, w_3, w_4의 값을 순서대로 list 형태로 저장
w = [2, -1, 1, 3, -2]

# 퍼셉트론의 결과를 출력
y, output = perceptron(w,x)

print('output: ', output)
print('y: ', y)

 

위에서 설명한 퍼셉트론은 단층 퍼셉트론이라고 하며, 단층 퍼셉트론은 값을 입력하는 단계출력하는 단계로 나누어진다.

이러한 각 단계를 층(Layer)라고 부르며, 입력하는 단계는 입력층(Input Layer) 출력하는 단계는 출력층(Output Layer)라고 한다.

 

단층 퍼셉트론은 선형 분류기로써 데이터 분류가 가능하다. 다음 그림을 통해 이를 확인해 보자!

 

다음 그림은 AND, OR, NAND, XOR 게이트를 그래프로 그린것이다.

그림을 살펴보면 AND, OR, NAND 게이트는 출력 값이 1인 영역이 직선 하나로 구분되기 때문에 단층 퍼셉트론을 사용하여 쉽게 구현이 가능하다는 것을 알 수 있다.

그러나 XOR 게이트에서 1에 속하는 영역을 표시하기 위해서는 직선 두개가 필요하기 때문에 단층 퍼셉트론으로 구현할 수 없다는 것을 확인할 수 있다.

XOR 게이트와 같이 하나의 직선으로 분류할 수 없는 문제가 등장함에 따라 인공지능 분야의 First AI Winter가 찾아오게 되었다.

 

 

다층 퍼셉트론

 

이러한 단층 퍼셉트론의 한계점을 해결한 다층 퍼셉트론이 등장하면서 1986년도에 다시 AI Boom이 일어나게 되었다.

다층 퍼셉트론은 어떻게 비 선형적인 문제를 해결할 수 있었을까?

 

다층 퍼셉트론 기본 구조

[출처] 2021 NIPA AI 온라인 교육

단층 퍼셉트론에서는 입력층과 출력층 두 단계만이 존재한다는 것을 배웠다.

다층 퍼셉트론에서는 입력층과 출력층 사이에 은닉층(Hidden Layer)라는 층을 추가하여 비 선형 문제를 해결하였다.

이렇게 단층 퍼셉트론을 여러 개 쌓은 것을 다층 퍼셉트론이라고 하며, 은닉층이 많아지면(2개 이상) 깊은 신경망, 심층 신경망이라는 의미의 DNN(Deep Neural Nework)이라는 단어를 사용하게 되었다.

 

앞서 XOR 게이트의 문제도 은닉층에서 [ NAND, OR 게이트 ] > [ AND 게이트] 를 통과하게 되면 NAND와 OR 게이트의 AND 값인 XOR 게이트를 생성할 수 있다.

 

다시 딥러닝이란?

앞서 살펴보았던 퍼셉트론에서는 입력값에 대한 중치와 편향값을 사람이 수동으로 설정하고 정답을 찾을 때까지 반복하는 방법을 사용하였다. 

 

다시 제일 처음으로 돌아가 딥러닝의 정의를 보자

 

"딥러닝이란 머신러닝의 여러 방법론 중 하나로 인공신경망에 기반하여 기계가 학습하도록 하는 방법"

 

다시 딥러닝이란

 

"심층신경망에서 이러한 중치와 편향값을 기계가 스스로 찾아내게 하는 것으로, 이를 머신러닝에서는 학습이라고 하는 것"

 

이라고 정의할 수 있다.

 

'DEV > AI' 카테고리의 다른 글

[머신러닝] 데이터 전 처리하기  (0) 2021.12.01