퍼셉트론 입문: 인공 뉴런에서 '학습' 직전까지
요약
본 글은 신경망의 기초 개념인 퍼셉트론(Perceptron)을 소개하며, 복잡한 딥러닝 구조를 이해하기 위한 출발점을 제시합니다. 인공 뉴런이 어떻게 여러 입력값(Input)과 중요도(Weight), 그리고 편향(Bias)을 조합하여 하나의 출력을 계산하는지 수학적 원리를 설명합니다.
핵심 포인트
- 신경망의 기본 단위는 인공 뉴런이며, 이는 생물학적 뉴런에서 영감을 받았습니다.
- 인공 뉴런은 입력값에 가중치를 곱한 값들을 모두 더하고 편향(Bias)을 추가하여 최종 값을 계산합니다.
- 가중치(Weight)는 각 입력 정보의 중요도를 나타내는 핵심 요소입니다.
- 편향(Bias)은 모델의 판단 기준을 조정하여 결과가 쉽게 YES/NO로 나오도록 돕는 역할을 합니다.
AI나 기계 학습을 공부하다 보면, 신경망(Neural Network)이나 딥러닝(Deep Learning)이라는 단어에 자주 접하게 됩니다.
하지만 그 구조를 갑자기 Transformer나 LLM부터 이해하려고 하면 상당히 어렵습니다.
그래서 이번에는 신경망의 기초가 되는 개념 중 하나인 **퍼셉트론(Perceptron)**을 다루겠습니다.
퍼셉트론 자체는 매우 단순합니다. 하지만,
- 입력 (Input)
- 가중치 (Weight)
- 편향 (Bias)
- 활성화 함수 (Activation Function)
- 출력 (Output)
이처럼 현대의 신경망에도 연결되는 중요한 요소들이 이미 포함되어 있습니다.
이번에는 Python으로 구현하기 직전까지, 우선 '무엇을 계산하는지'를 이해해 나갈 것입니다.
신경망은 인간의 뇌에 있는 신경 세포, 즉 **뉴런(Neuron)**에서 영감을 얻었습니다. 생물학적 뉴런은 다른 뉴런으로부터 신호를 받아 그것들을 종합하고, 특정 조건을 만족했을 때 다음 뉴런으로 신호를 보냅니다. 이를 매우 단순화하면, 여러 입력을 받아서 중요도를 고려해 종합한 후, 조건이 충족되면 출력을 내보내는 구조가 됩니다.
이러한 개념을 수학적인 모델로 만든 것이 **인공 뉴런(Artificial Neuron)**입니다.
예를 들어, 어떤 인공 뉴런에 다음 3가지 정보가 입력된다고 가정해 봅시다.
- 오늘의 기온
- 습도
- 비가 오는지 여부
이러한 정보를 바탕으로 '외출할지 말지'를 판단하고 싶다고 합니다. 인공 뉴런은 각 정보를 같은 중요도로 취급하지 않습니다. '비가 오는지 여부'를 중요하게 생각할 수도 있고, '기온'을 중요하게 생각할 수도 있습니다. 이 중요도를 나타내는 것이 **가중치(weight)**입니다.
인공 뉴런에서는 입력을 보통 다음과 같이 표현합니다.
x1, x2, x3, ...
예를 들어,
x1 = 기온
x2 = 습도
x3 = 비가 오는지 여부
이라고 합시다. 각 입력에는 대응하는 가중치가 있습니다.
w1, w2, w3, ...
즉,
x1 × w1
x2 × w2
x3 × w3
처럼 계산합니다. 중요한 정보에는 큰 가중치를 설정하고, 중요하지 않은 정보에는 작은 가중치를 설정하는 것입니다. 이는 '이 정보를 얼마나 중요하게 볼 것인가'를 나타내는 숫자입니다.
입력과 가중치를 곱한 값들을 모두 더합니다. 이를 **가중치 합(Weighted Sum)**이라고 부릅니다.
수식으로 쓰면,
x1w1 + x2w2 + x3w3
입니다.
예를 들어,
x1 = 1
x2 = 0
x3 = 1
가중치가,
w1 = 0.7
w2 = 0.2
w3 = 1.0
이었다고 합시다.
그러면,
1 × 0.7
+ 0 × 0.2
+ 1 × 1.0
이 됩니다.
따라서,
1.7
이 됩니다.
즉, 인공 뉴런은 먼저 여러 입력을 중요도를 고려하면서 하나의 숫자로 종합하는 작업을 합니다. 이 부분은 매우 중요합니다. '신경망'이라는 단어에서 매우 복잡한 일을 하는 것처럼 보일 수 있지만, 기본 계산은
곱셈
+
덧셈
입니다.
실제 퍼셉트론에서는 가중치 합에 게다가 **편향(bias)**이라는 값을 더합니다. 수식으로는,
x1w1 + x2w2 + x3w3 + b
이 됩니다. 여기서 b가 편향입니다.
그렇다면 이 편향은 무엇을 위해 존재할까요? 간단히 말해, '판단하기 쉽게 조정하는 숫자'입니다. 예를 들어, 결과가 0보다 크면 'YES', 0 이하이면 'NO'로 한다고 합시다. 이때 편향이 b = 2라면 전체적으로 YES가 되기 쉬워집니다. 반대로 b = -2라면 YES가 되기 어려워집니다. 따라서 편향은 흔히 발화하기 쉽게 조정하는 것이라고 설명됩니다.
여기까지를 정리하면, 퍼셉트론에서는 먼저 다음 값을 계산합니다.
z = x1w1 + x2w2 + ... + xnwn + b
기호가 늘어나면 어려워 보이지만, 의미는 단순합니다.
입력 × 가중치
을 모두 더하고,
편향
을 더하는 것일 뿐입니다.
더 짧게 쓰자면,
z = 가중치 합 + 편향
입니다.
여기서 약간의 문제가 있습니다. 계산 결과가
1.7
이었다고 해도,
(-0.4)였더라도, 그것만으로는 최종적인 판단이 되지 않습니다.
그래서,
이 숫자를 최종 출력으로 변환하는 메커니즘
이 필요하게 됩니다.
이것이 **활성화 함수(activation function)**입니다.
가장 단순한 퍼셉트론에서는 **계단 함수(step function)**라는 개념을 사용합니다.
예를 들어,
z > 0 이면 1
z <= 0 이면 0
이라고 합니다.
즉,
z = 2.3
이라면,
1
을 출력합니다.
반면에,
z = -0.8
이라면,
0
을 출력합니다.
그림으로 나타내면 다음과 같은 이미지를 가집니다.
입력
↓
가중치를 곱함
...
이것이 매우 기본적인 퍼셉트론입니다.
여기까지 이해하면, 퍼셉트론은 의외로 단순한 구조로 보입니다.
본질적으로는,
입력된 여러 정보로부터 YES / NO를 판단하는 장치
입니다.
예를 들어,
메일이 스팸인지 아닌지
를 판단한다고 가정해 봅시다.
입력으로,
x1 = URL이 포함되어 있음
x2 = '무료'라는 단어가 있음
x3 = 대문자가 많이 사용됨
등을 줍니다.
각각에 가중치를 곱하고,
x1w1 + x2w2 + x3w3 + b
을 계산합니다.
그 결과가 일정 이상이라면,
1 = 스팸
그 외라면,
0 = 일반 메일
로 판단할 수 있습니다.
물론 실제 스팸 판별은 훨씬 복잡하지만, 생각의 기초는 이 연장선상에 있습니다.
퍼셉트론 설명에서 자주 등장하는 것이 AND 게이트입니다.
AND 게이트에서는,
0 AND 0 → 0
0 AND 1 → 0
1 AND 0 → 0
...
이 됩니다.
즉,
둘 다 1일 때만 1
입니다.
이를 퍼셉트론으로 표현할 수 있습니다.
예를 들어,
w1 = 1
w2 = 1
b = -1.5
이라고 합시다.
그러면,
0 × 1 + 0 × 1 - 1.5
= -1.5
이므로 출력은,
0
입니다.
1 × 1 + 0 × 1 - 1.5
= -0.5
이므로,
0
입니다.
마찬가지로,
0
입니다.
1 × 1 + 1 × 1 - 1.5
= 0.5
이므로,
1
이 됩니다.
멋지게 AND 게이트가 되었습니다.
여기서 매우 중요한 것이 있습니다.
퍼셉트론에서는,
입력
그 자체보다도,
가중치
bias
이 판단 기준을 결정합니다.
예를 들어 같은 입력이라도, 가중치를 바꾸면 결과가 달라집니다.
즉,
어떤 정보를 중요시할지
그리고,
어디를 경계로 판단할지를
결정하는 것이 바로 가중치와 bias입니다.
머신러닝에서의 '학습'이라는 단어도 여기서 연결됩니다.
AI가 '학습한다'고 들으면, 사람처럼 책을 읽고 이해하고 있는 것 같다고 느낄 수 있습니다.
하지만 퍼셉트론에서의 학습은 더 수학적입니다.
매우 단순화하자면,
정답에 가까워지도록 가중치와 bias를 조정하는
것입니다.
예를 들어 실제 정답이,
1
인데, 퍼셉트론이,
0
을 출력했다고 합시다.
그러면,
가중치나 bias가 적절하지 않았다
라고 생각합니다.
그래서 값을 조금 변경합니다.
그리고 다시 예측합니다.
예측
↓
틀림
...
이러한 처리를 반복해 나갑니다.
이것이 머신러닝에서의 '학습'의 원형입니다.
AI가 무언가를 이해하고 있다기보다는,
오류가 줄어들도록 내부의 숫자를 조정하고 있다고 생각하면 이해하기 쉬울 것입니다.
학습 전의 퍼셉트론에서는 가중치가 임의의 값일 수 있습니다.
w1 = 0.1
w2 = -0.3
b = 0.2
이 상태에서는 올바른 판단을 할 수 없을 가능성이 있습니다.
하지만 학습을 반복함으로써,
w1 = 0.8
w2 = 0.9
b = -1.2
처럼 더 적절한 값으로 변화해 나갑니다.
즉, 머신러닝에서는 프로그래머가,
만약 ○○라면 1
만약 △△라면 0
처럼 모든 규칙을 작성하는 것이 아닙니다.
데이터를 주고,
이 입력이라면 정답은 1
이 입력이라면 정답은 0
와 같은 예시를 보여주면서,
판단에 필요한 파라미터를 기계 스스로 조정하게 만드는 것입니다.
여기가 기존의 프로그래밍과 머신러닝의 큰 차이점 중 하나입니다.
퍼셉트론에는 중요한 특징이 있습니다.
그것은,
판단 경계가 직선이 된다는 것입니다.
입력이 2개일 경우,
x1w1 + x2w2 + b = 0
라는 식은 수학적으로 직선을 나타냅니다.
따라서 퍼셉트론은 데이터를,
직선의 이쪽 부분
와,
직선 너머의 부분
에 분류하게 됩니다.
이러한 문제를,
선형 분리 가능(Linearly Separable)
이라고 부릅니다.
AND나 OR 같은 문제는 하나의 직선으로 분리할 수 있습니다.
따라서 단순한 퍼셉트론으로도 풀 수 있습니다.
단순한 퍼셉트론에는 유명한 약점이 있습니다.
그것이 XOR입니다.
XOR는,
0 XOR 0 → 0
0 XOR 1 → 1
1 XOR 0 → 1
...
이 됩니다.
AND와는 달리,
둘 중 어느 한쪽만 1이면 1입니다.
이 데이터를 평면에 배치하면, 하나의 직선으로는 깔끔하게 분리할 수 없습니다.
즉,
단순한 퍼셉트론으로는 XOR를 표현할 수 없다는 것입니다.
이는 매우 중요한 발견이었습니다.
하나의 퍼셉트론으로 안 되면, 여러 개의 퍼셉트론을 조합하면 됩니다.
여기서부터,
다층 퍼셉트론(Multi-Layer Perceptron)
이라는 생각으로 이어집니다.
나아가,
입력층
↓
은닉층
...
라는 구조로 발전하며,
신경망(Neural Network),
그리고 딥러닝(Deep Learning)으로 이어지게 됩니다.
즉, 현대의 거대한 AI도 그 근원을 추적해 가면,
입력
↓
가중치
...
라는 매우 기본적인 구조에 도달합니다.
퍼셉트론은 인공 뉴런을 수학적으로 표현한 매우 기본적인 모델입니다.
계산의 흐름은,
입력
↓
가중치를 곱함
...
입니다.
식으로는,
z = x1w1 + x2w2 + ... + xnw n + b
이 됩니다.
그리고 가장 중요한 것은,
머신러닝에서의 '학습'이란, 정답에 가까워지도록 가중치나 바이어스를 조정하는 것이라는 점입니다.
AI라는 단어는 매우 크게 들립니다.
하지만 그 기초에서는,
입력을 받고
↓
중요도를 곱함
...
이 반복하고 있습니다.
이 메커니즘을 이해해 두고 나면, 앞으로 신경망이나 딥러닝을 배울 때도 'AI가 무엇을 하고 있는지'가 훨씬 잘 보일 것입니다.
다음에는 실제로 Python을 사용해서,
입력
가중치
바이어스
...
을 코드로 표현해 보겠습니다.
그리고 AND나 OR를 실제로 퍼셉트론으로 계산하면서,
'인공 뉴런이 코드가 되는 순간'
을 확인해 나가겠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기