🎶 머신러닝에서 사용하는 신경망이란 무엇일까?
뇌는 '뉴런' 이라는 수없이 많은 신경세포의 연결을 갖고 있는데, 인공신경망은 이러한 신경세포의 동작을 흉내내는 장치나 소프트웨어를 만들어 뇌가 수행하는 인지나 사고 능력을 갖춘 기계를 만들려는 노력의 산물이라고 할 수 있다.
이러한 '학습'이 가능한 신경 모델을 퍼셉트론이라고 부르는데, 당시에는 인공지능의 새로운 장을 연 기술로 각광을 받았다고 한다.
퍼셉트론은 다음과 같이 입력을 받아들이는 신경세포 x들이 출력을 수행하는 노드로 연결될 때, 연결강도 w에 의해 조정되어 출력으로 전달되게 된다.
여기서 출력 노드는 두 가지 일을 하는데,
- 전달되어 오는 신호를 모두 합치고,
- 합산된 신호에 따라 출력을 결정하는 '활성화 함수'가 최종 출력을 발생시키게 되는 것이다!

아직 이해가 잘 되지 않겠지만, 쉽게 설명하자면 X는 하나의 벡터 [x1, x2, ...] 로 구성되는 입력 데이터이고, W는 입력 데이터의 각 요소 [x1, x2, ...] 를 얼마큼 가치있게 여길건지에 관한 각각의 가중치, 그리고 이 입력 데이터와 가중치를 곱한 값을 모두 합산해서 활성화 함수에 독립변수로써 넣게 되는 것이다!
초기 활성화 함수 φ 는 주로 '계단 함수'를 사용했는데, 다음과 같이 0 이상이면 1을 출력하고, 0 미만이면 0을 출력하는 함수로써 일정 임계값(여기서는 0)을 넘어서면 1이라는 신호를 내보내는 함수라고 이해하면 충분하다.

이 퍼셉트론은 학습을 통해 연결강도(=가중치)를 바꾸어 나가는데, 출력의 결과와 정답을 비교하면 오차를 알 수 있으므로 이를 줄이도록 연결강도를 바꾸는 과정을 바로 '학습'이라고 한다.
좀 더 구체적으로 말하자면 퍼셉트론의 학습은 헵의 학습 법칙, 즉 목표치를 제시하고 가중치가 목표치를 발생시키도록 만들어 간다는 것이다!

갑작스레 수식이 나와서 당황했겠지만, 천천히 살펴보면 매우 간단한 수식임을 알 수 있다.
우선 'μ(뮤)'는 학습률(learning rate)를 의미하는데, 일단은 학습의 속도를 조절하는 파라미터라고 알고 있으면 충분하다.
빨간색으로 표시된 부분은 바로 앞서 말했던, '오차(출력의 결과와 정답의 차이)'를 의미하고, W는 가중치, x는 입력값을 의미한다.
위 수식을 통해 연결강도가 학습되는 과정을 이해해 보자면, 우선
- 출력노드를 거쳐 나온 y^를 구하고,
- y^가 실제 목표값 y와 일치하면 가중치를 변경하지 않고,
- y^가 실제 목표값 y와 일치하면 가중치를 변경하게 됨을 쉽게 알 수 있다.
처음 퍼셉트론이 등장했을 때에는, 다음과 같은 학습 과정을 통해 기존 컴퓨터 연산의 모든 것들을 동일하게 구현해 접목시킬 수 있다고 기대했었다.
하지만 이러한 퍼셉트론에는 한계가 존재했는데, 바로 XOR 연산을 구현하지 못한다는 것이다!
눈치가 빠른 사람들은 위 수식을 통해 파악했겠지만, 이 퍼셉트론의 가중치 학습 과정에는 한계가 존재한다. 바로, 가중치와 입력값들의 곱이 '선형적'으로 곱해져 출력값을 이룬다는 것이다.

퍼셉트론을 통과하는 입력값들은 결국 선형결합으로 구성된 값밖에 생성할 수 없으므로, 이는 2차원 공간에서 생각해보자면 어떻게 하나의 선형 경계를 만들어서 특정 입력값에 대해 1을 출력할지에 대해 치열한 싸움을 벌이는 것에 불과한 것이다!
그렇다면 XOR 연산이 무엇이길래 하나의 선형 경계만으로는 구현하지 못한다는 것일까?
XOR연산은 논리 회로에서 등장하는 개념인데, 쉽게 설명하자면 임의의 입력값 x1, x2, ... 에 대해 홀수의 개수만큼 1이 있다면 1을 출력하는 일종의 '홀수 함수'이다. 그냥, '입력되는 1의 개수가 홀수이면 1을 출력한다' 라고만 알고 있어도 충분하다.
이를 2차원 평면에 표현해보자면, 다음과 같이 무슨 수를 쓰더라도 하나의 선형 경계만으로는 한 부분은 0, 한 부분은 1로 만들어줄 임계값 역할을 해주지 못한다는 것을 알 수 있다.
( 🎃 머신러닝에서의 차원의 수는 입력의 특징의 개수라고 생각하면 이해하기 편하다!)

결국 이 한계점은 인공신경망을 암흑기로 빠져들게 만들었지만, 인터스텔라의 명언 '우리는 답을 찾을 것이다. 늘 그랬듯이.' 처럼 다층 퍼셉트론이라는 개념을 도입해 이 문제점을 해결하게 된다.
다음 포스트에서는 이 다층 퍼셉트론이 무엇인지에 대해 알아보도록 하겠다.
'머신러닝' 카테고리의 다른 글
CNN구현 in python - MNIST 데이터셋을 활용하자! (0) | 2024.12.29 |
---|---|
CNN(합성곱신경망)이란? (2) | 2024.12.28 |
신경망튜닝 - 데이터 전처리와 드롭아웃(drop-out) (2) | 2024.12.27 |
경사 하강법의 최적화 - 모멘텀(momentum), 네스테로프가속경사(Nesterov-accelerated gradient), AdaGrad, RMSProp 그리고 Adam (2) | 2024.12.26 |
사라지는 기울기(Vanishing Gradient) 문제란? (0) | 2024.12.25 |
경사 하강법(gradient descent)의 종류 (0) | 2024.12.24 |
역전파 알고리즘(Back-propagation)이란 무엇일까? (0) | 2024.12.23 |
DNN(Deep Neural Networks)이란 무엇일까? (0) | 2024.12.22 |