퍼셉트론(Perceptron)

zoya·2024년 4월 26일

인공지능 공부

목록 보기
6/19

1. 퍼셉트론(Perceptron)

인공 신경망은 머신 러닝의 방법 중 하나입니다. 최근 인공 신경망을 복잡하게 쌓아 올린 딥 러닝이 다른 머신 러닝 방법들을 뛰어넘는 성능을 보여주는 사례가 늘면서, 머신 러닝과 딥 러닝을 구분하기 시작했습니다.

퍼셉트론은 프랑크 로젠블라트가 1957년에 제안한 초기 형태의 인공 신경망으로 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘입니다.
퍼셉트론은 뇌를 구성하는 신경 세포 뉴런의 동작과 유사합니다.

뉴런은 가지돌기에서 신호를 받아들이고, 이 신호가 일정치 이상의 크기를 가지면 축삭돌기를 통해 신호를 전달합니다.

위 그림은 다수의 입력을 받는 퍼셉트론의 그림입니다. 신경 세포 뉴런의 입력 신호와 출력 신호가 퍼셉트론에서 각각 입력값과 출력값에 해당됩니다.
x는 입력값, W는 가중치, y는 출력값입니다. 그림 안의 원은 인공 뉴런에 해당됩니다. 실제 신경 세포 뉴런에서의 신호를 전달하는 축살돌기의 역할을 퍼셉트론에서는 가중치가 대신합니다.
입력값마다 가중치가 존재하는데 이때 가중치의 값이 크면 클수록 해당 입력 값이 중요하다는 것을 의미합니다.
각 입력값이 가중치와 곱해져서 인공 뉴런에 보내지고 각 입력값과 그에 해당되는 가중치의 곱의 전체 합이 임계치(threshold)를 넘으면 종착지에 있는 인공 뉴런은 출력 신호로서 1을 출력하고, 그렇지 않을 경우에는 0을 출력합니다. 이러한 함수를 계단 함수(Step function)이라고 합니다.

이때 계단 함수에 사용된 이 임계치값을 수직으로 표현할떄는 보통 세타라고 표현합니다.

이 그림에 편향이 추가되면 다음과 같아집니다.

이렇게 뉴런에서 출력값을 변경시키는 함수활성화 함수(Activation Function)라고 합니다. 초기 인공 신경망 모델인 퍼셉트론은 활성화 함수로 계단 함수를 사용하였으나 그 뒤에 등장한 발전된 신경망 도델들은 활성화 함수를 사용하기 시작했습니다. 시그모이드 함수나 소프트맥스 함수 또한 활성화 함수의 종류 중 하나입니다.


2. 단층 퍼셉트론

위에서 배운 퍼셉트론을 단층 퍼셉트론이라고 합니다. 퍼셉트론은 단층 퍼셉트론과 다층 퍼셉트론으로 나눠지는데, 단층 퍼셉트론은 값을 보내는 단계와 값을 받아서 출력하는 두 단계로만 이뤄집니다. 이때 이 각 단계를 보통 층(Layer)라고 부르며, 이 두 개의 층을 입력층(input layer)출력층(output layer)라고 합니다.

단층 퍼셉트론을 이용하면 AND, NAND, OR 게이트를 쉽게 구현할 수 있습니다. 게이트 연산에 쓰이는 것은 두 개의 입력값과 하나의 출력값입니다. 그러나 단층 퍼셉트론으로 구현이 불가능한 게이트는 XOR 게이트입니다. XOR 게이트는 입력값 2개가 서로 다른 값을 가지고 있을때만 출력값이 1이 되고, 입력값 2개가 서로 같은 값을 가지면 출력값이 0이 되는 게이트입니다. 그 이유는 단층 퍼셉트론은 직선 하나로 두 영역을 나눌 수 있는 문제에 대해서만 구현이 가능하기 때문입니다.
예를 들어 AND 게이트에 대한 단층 퍼셉트론을 시각화해보면 다음과 같습니다.

그림에서는 출력값 0을 하얀색 원, 1을 검은색 원으로 표현했습니다. AND 게이트를 충족하려면 하얀색 원과 검은색 원을 직선으로 나누게 됩니다. 마찬가지로 NAND 게이트나 OR 게이트에 대해서도 시각화를 했을 때 직선으로 나누는 것이 가능합니다.

그렇다면 XOR 게이트의 경우를 알아보겠습니다. XOR 게이트는 입력값 두 개가 서로 다른 값을 가지고 있을때만 출력값이 1이 되고 입력값 두 개가 서로 같은 값을 가지면 출력값이 0이 되는 게이트입니다.

하얀색 원과 검은색 원을 직선 하나로 나누는 것은 불가능합니다. 즉, 단층 퍼셉트론으로는 XOR 게이트를 구현하는 것이 불가능합니다.
XOR 게이트는 직선이 아닌 비선형 영역으로 분리하면 구현이 가능합니다.

이제 XOR 게이트를 만들 수 있는 다층 퍼셉트론에 대해서 알아보도록 하겠습니다.

3. 다층 퍼셉트론

XOR 게이트는 기존의 AND, NAND, OR 게이트를 조합하면 만들 수 있습니다. 퍼셉트론 관점에서 말하자면 층을 더 쌓으면 만들 수 있습니다. 다층 퍼셉트론과 단층 퍼셉트론의 차이는 단층 퍼셉트론은 입력층과 출력층만 존재하지만, 다층 퍼셉트론은 중간에 층을 더 추가하였다는 점입니다. 이렇게 입력층과 출력층 사이에 존재하는 층을 은닉층(hidden layer)이라고 합니다. 즉, 다층 퍼셉트론은 중간에 은닉층이 존재한다는 점이 단층 퍼셉트론과 다릅니다. 다층 퍼셉트론은 MultiLayer Perceptron, 줄여서 MLP 라고 부릅니다.

위 그림은 AND, NAND, OR 게이트를 조합하여 XOR 게이트를 구현한 다층 퍼셉트론의 예입니다. XOR 예제에서는 은닉층 1개만으로 문제를 해결할 수 있었지만, 다층 퍼셉트론은 본래 은닉층이 1개 이상인 퍼셉트론을 말합니다. 즉, XOR 문제보다 더욱 복잡한 문제를 해결하기 위해서 다층 퍼셉트론은 중간에 수많은 은닉층을 더 추가할 수 있습니다.

위와 같이 은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN)이라고 합니다. 심층 신경망은 다층 퍼셉트론만 이야기 하는 것이 아니라, 여러 변형된 다양한 신경망들도 은닉층이 2개 이상이 되면 심층 신경망이라고 합니다.

지금까지는 퍼셉트론이 정답을 출력할 때까지 가중치를 바꿔보면서 맞는 가중치를 찾았습니다. 즉, 가중치를 수동으로 찾은 것이죠. 하지만 이제는 기계가 가중치를 스스로 찾아내도록 자동화 시켜야하는데, 이것이 머신러닝에서 말하는 학습단계에 해당됩니다. 앞서 회귀에서 보았듯이 손실 함수와 옵티마이저를 사용합니다. 그리고 만약 학습을 시키는 인공 신경망이 심층 신경망일 경우에는 이를 심층 신경망일 경우에는 이를 심층 신경망을 학습시킨다고 하여 딥 러닝이라고 합니다.

profile
동물을 좋아하는 개발자(희망)의 저장소

0개의 댓글