시리즈 | Deep Learning - 2. 퍼셉트론과 인공신경망

Series : DEEP LEARNING Jun 8, 2025

1편에서 딥러닝의 정의와 의미에 대해 간단히 다루었다. 2편에서는 딥러닝이 작동할 수 있는 토대가 되는 퍼셉트론과 인공신경망 구조에 대해 다룬다.


퍼셉트론이란?

퍼셉트론이란 무엇일까? 퍼셉트론은 동물의 신경계와 같이 여러 신호를 받아 하나의 신호를 출력하는 알고리즘이다. 아래 그림과 같은 간단한 예시를 보자.

입력이 2개인 퍼셉트론의 예시

위의 그림에서 x1과 x2는 입력 신호, y는 출력 신호이다. 그림의 원은 정점(노드) 혹은 뉴런이라 불린다. 입력 신호가 전해지는 과정에서는 가중치가 곱해진다. 위의 그림에서 w1, w2가 가중치에 해당하며, y에는 x1과 x2에 w1, w2가 각각 곱해진 결과가 전달된다.

이때 y에서는 받은 신호의 총합을 기준으로 신호를 내보낼지 여부를 판단한다. 만약 입력 신호의 총합이 특정 임계값 \(\theta\)를 넘지 못했다면 0, 넘었다면 1을 리턴한다. 이를 수식으로 표현하면 아래와 같이 나타낼 수 있다.

equation

​여기서 \(\theta\)를 좌변으로 이항해서 정리하면, 특정 값이 0 이하인지 초과인지 여부에 따라 0 또는 1이 반환되는 것으로 정리할 수 있다. 즉, 위의 수식은 \(b=-\theta\)를 도입하여 아래와 같이 나타낼 수 있다.

equation

이때 b는 bias, 편향이라 부르며 수식의 표기법만 다를 뿐 근본적인 의미는 같다.


퍼셉트론을 이용한 논리 회로

컴퓨터의 작동에서 기본적인 역할을 하는 논리 연산인 AND, OR 연산에 대해 생각해보자. AND 연산은 0 또는 1의 두 입력을 받아 둘 다 1이라면 1을, 아니라면 0을 반환하는 연산이고 OR 연산은 두 입력 중 하나라도 1이면 1을 반환하는 연산이다.

이 연산들을 퍼셉트론을 통해 구현할 수 있을까? 첫 번째 그림과 같은 간단한 구조의 퍼셉트론을 생각하자. 가중치 w1, w2를 각각 1.0, 1.0, b는 -1.0으로 정의하면 해당 퍼셉트론은 두 수를 입력으로 받아 AND 연산한 결과를 반환한다. 이외에도 (0.5, 0.5, -0.7)의 조합도 AND 연산을 수행하며 수많은 조합이 가능하다.

OR 연산도 마찬가지로 적당한 (w1, w2, b) 조합을 정의해서 퍼셉트론을 통해 수행할 수 있다.


퍼셉트론의 한계

앞서 우리는 기본적인 논리 연산인 AND와 OR 연산을 퍼셉트론을 통해 수행할 수 있음을 확인했다. 그렇다면 다른 논리 연산도 모두 위와 같은 구조에서 w1, w2를 적절히 정의하여 수행할 수 있을까? 더 나아가서, 모든 작업을 퍼셉트론을 통해 수행할 수 있을까?

결론부터 말하자면, 아쉽게도 불가능하다. 마찬가지로 논리 연산 중 하나인 XOR 연산에 대해 생각해보자. XOR 연산은 0 또는 1의 두 신호를 입력으로 받아 두 값이 다르다면 1을, 같다면 0을 반환한다. 어떤 조합의 w1, w2, b를 시도하더라도 XOR 연산과 같은 결과를 반환하는 단순한 구조의 퍼셉트론은 만들 수 없을을 알 수 있는데, 이는 좌표평면을 이용해 표현하면 직관적이다.

x축이 x1, y축이 x2인 좌표평면을 생각하자. 입력 신호의 총합의 부호를 판단하는 퍼셉트론의 조건은 2차원 좌표평면상에서 직선의 방정식으로 생각할 수 있고, 가능한 모든 (x1,x2) 조합이 좌표평면상에 위치해 있다고 생각하자. 우리의 목표는 적당한 한 직선을 선택하여 그 직선을 통해 분할된 한쪽 평면 위의 점은 모두 1이, 반대쪽 평면 위의 점은 모두 0이 되도록 만드는 것이다.

XOR 문제

AND와 OR 연산의 경우 적당한 직선을 선택할 수 있지만, XOR 연산에서는 불가능함을 직관적으로 알 수 있다. 이를 XOR 문제라 하며 단층 퍼셉트론을 통해서는 XOR 문제의 해결이 불가능함이 잘 알려져 있다.


퍼셉트론의 확장

우리는 지금까지 입력 신호를 받아 결과를 출력하는 뉴런 한 개만을 가지고 문제를 해결하기 위해 노력했다. 그러나 실제 회로에서 XOR 게이트와 같은 복잡한 게이트를 구현하는 과정을 생각해보면 여러 게이트의 조합을 통해 복잡한 회로를 만든다는 것을 알 수 있다. 그렇다면 퍼셉트론도 같은 방법으로 여러 층을 쌓아 문제를 해결할 수 없을까?

퍼셉트론을 여러 층을 쌓아 만든 것다층 퍼셉트론이라 한다. 여러 층을 쌓는다는 말을 엄밀하게 정의하기 앞서 다시 XOR 문제로 돌아와보자. AND에 NOT을 씌워 반환하는 NAND 게이트와 OR 게이트는 앞서 말한 단층 퍼셉트론으로 간단히 구현할 수 있다. 두 입력 x1, x2에 대해 XOR(x1,x2)=AND(OR(x1,x2),NAND(x1,x2))이 성립하고, 다시 말해 OR과 NAND를 반환하는 뉴런의 출력을 다시 AND 퍼셉트론의 뉴런의 입력으로 넣는다면 우리는 XOR 연산을 퍼셉트론의 결합을 통해 표현할 수 있다.

XOR 연산을 수행하는 다층 퍼셉트론

이러한 다층 퍼셉트론은 굉장히 강력한 도구로, 뒤에서 다룰 활성화 함수와 결합하여 사용한다면 이론상 다층 퍼셉트론의 결합을 통해 컴퓨터로 해결 가능한 모든 문제를 해결할 수 있다는 것이 증명되어 있다.


퍼셉트론에서 신경망으로

앞선 논의에서 퍼셉트론을 통해 복잡한 함수를 표현할 수 있다는 것을 알게 되었다. 다층 퍼셉트론은 서로 유기적으로 연결된 신경계와 같은 구조를 가지고 있기에 인공 신경망이라 불린다. 하지만 인공신경망에는 치명적인 단점이 있다. 앞서 XOR 게이트를 구현한 과정과 같이, 우리가 원하도록 다층 퍼셉트론이 작동하게 만드려면 모든 가중치를 적당한 값으로 수동으로 정해야 한다.

이 문제를 해결하기에 앞서 우선 인공신경망에 관한 몇 가지 용어를 정의하고 시작하자.

인공신경망의 구조

기본적인 신경망의 구조를 그림으로 나타내면 위와 같다. 여기서 가장 왼쪽 줄을 입력층, 중간 줄을 은닉층, 가장 오른쪽 줄을 출력층이라 한다. 즉, 신경망의 목표는 적당한 가중치를 설정해서 입력층에 데이터를 넣으면 출력층에서 우리가 원하는 결과가 나오도록 하는 것이다.


인공신경망과 활성화 함수

잠시 단층 퍼셉트론을 논의했던 부분으로 돌아가 보자. 입력 신호의 합과 편향을 더한 결과가 0보다 큰지 여부를 기준으로 y값이 정해졌다. 이를 0 이하이면 0, 0 초과이면 1을 반환하는 함수 \(h(x)\)가 존재해서 \(h(x)\)에 입력 신호의 합과 편향을 더한 것을 입력으로 넣은 결과를 반환한다고도 표현할 수 있다.

이처럼 \(h(x)\)와 같이 입력 신호를 출력 신호로 바꿔주는 함수를 활성화 함수라 한다. 기존의 \(h(x)\)는 그래프로 표현하면 아래와 같이 계단 형태를 가지므로 계단 함수라 부른다. 그런데 반드시 활성화 함수로 계단 함수를 사용할 이유가 있을까? 사실 계단 함수 외에도 다양한 활성화 함수를 이용할 수 있다. 대표적인 함수로 시그모이드 함수와 ReLU 함수가 있다.

활성화함수를 이용해 나타낸 인공신경망의 구조

시그모이드 함수는 기울어진 S자 형태의 곡선을 가진 함수를 말한다. 보통 인공신경망에서 시그모이드 함수라 하면 아래와 같은 개형을 가지는 \(\frac{1}{1+e^{-x}}\)를 주로 의미한다. 시그모이드 함수는 입력이 작아지면 0에 수렴하고 입력이 커지면 1에 가까워진다는 점에서 계단 함수와 유사하지만, 0 또는 1의 값을 가지는 계단 함수와 다르게 연속적인 실수값을 반환하며 그래프의 개형이 매끄럽다는 차이가 있다.

시그모이드 함수의 그래프

활성화 함수로서 시그모이드 함수는 인공신경망 분야에서 오래전부터 이용되었으나, 최근에는 ReLU 함수를 주로 이용한다. (이 이유에 대해서는 3편에서 자세히 설명할 것이다.) ReLU 함수는 간단하게 \(h(x)=\max(0,x)\)로 정의할 수 있다. 즉, 0 이하의 입력에 대해서는 0을 출력하며 0보다 큰 입력에 대해서는 입력을 그대로 출력한다.

ReLU 함수의 그래프

계단 함수와 Sigmoid, ReLU 함수의 가장 큰 공통점은 비선형 함수라는 것이다. 선형 함수란 입력과 출력이 선형적인 관계를 가지는 함수를 말하는데, 수식으로 표현하면 \(y=ax+b\)꼴의 함수를 말한다. 선형 함수를 활성화 함수로 사용하게 되면 입력층의 신호는 선형 함수를 따라 계속해서 중첩된다. 그러나 선형 함수를 아무리 많이 합성하더라도 그 결과는 선형 함수이기에, 신경망은 깊게 쌓아도 단층 퍼셉트론과 차이가 없어진다. 그렇기에 인공신경망의 활성화 함수로는 반드시 Sigmoid, ReLU 등의 비선형 함수를 사용해야 한다.


맺음말

지금까지 퍼셉트론의 개념과 인공신경망의 구조에 대해 다루었다. 인공신경망은 딥러닝의 기초가 된다는 점에서 굉장히 중요하다. 3편에서는 2편에서 다룬 인공신경망에 대해 더 자세히 알아보고, 어떻게 인공신경망이 스스로 학습할 수 있는지에 대해 다룰 것이다.


참고문헌

밑바닥부터 시작하는 딥러닝
직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

Tags

Kim Minjae

GSHS 25 IamCoder 43rd