[Home] AI로 돌아가기
[Wikipedia] Neural network (machine learning)

Neural Network(NN; Artificial NN; ANN) 신경망(인공신경망)

신경망(Neural Network)은 인간의 뇌에서 영감을 받아 개발된 머신러닝 모델로, 뉴런(Neuron)과 그 연결 구조를 모방하여 데이터를 처리한다.

...
Rare, extremely strong connections in the brains
(출처: https://www.livescience.com/)

1. 신경망의 구조

신경망은 "입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)"으로 구성된다. 각 층의 뉴런들은 가중치(Weight)와 활성화 함수(Activation Function)를 사용하여 정보를 전달하고 변환한다.

신경망 구조
그림 1. 인간의 신경세포
출처: 서지영, 난생처음 인공지능 입문(2판), 한빛미디어, 2024
신경망 구조
그림 1. 인간의 신경세포를 모방한 인공신경망
출처: 서지영, 난생처음 인공지능 입문(2판), 한빛미디어, 2024

2. 정보처리 과정

인공신경망 방식으로 만든 인공지능에서는 입력한 데이터가 여러 레이어를 지나가면서 특정한 신호로 전달된다. 그러면 최종적으로 신호가 남자 쪽으로 가는지, 여자 쪽으로 가는지를 판단하여, 둘 중 어느 쪽으로 신호가 많이 가는지를 살펴본 후 신호가 많이 간 쪽 성별이라고 판단을 내린다.

...
인공 신경망의 추론 과정
출처: 길벗
...
가중합 예시
출처: https://brunch.co.kr/@lucky7jk/168
...
퍼셉트론의 내부 과정
출처: 위키독스

1) 입력 신호 수집

뉴런의 가지돌기가 신호를 입력받음

2) 신호 합산

입력된 신호를 가중치를 적용하여 합산
가중합(Weighted Sum)이란 입력값과 가중치를 곱한 뒤 편향(Bias)을 더한 값을 말한다.

...
뉴런의 구조
출처: 나무위키
...
가중치와 편향
출처: 길벗

3) 활성화 함수 적용

특정 임계값(역치; threshold; action potential)을 넘으면 신호가 전달됨

... ...
가중치와 편향
마치 뇌에서 여러 신호를 받을 때 역치 개념을 사용하여 신호 세기를 조절해서 받듯이, 인공신경망에서는 활성화 함수로 신호의 세기를 조절한다.
출처: 길벗

활성화 함수(Activation Function)는 인공신경망에서 각 뉴런이 입력을 받아 출력을 계산하는 함수이다. 활성화 함수를 사용하는 이유는 두 가지이다.
활성화 함수의 유형 [링크]

4) 출력 전달

활성화된 신호가 다음 층으로 전달됨

딥러닝은 순전파, 손실함수, 옵티마이저, 역전파 과정을 거치면서 학습한다.

▶ 순전파(Forward Propagation) [링크]

...
순전파
출처: Understanding Forward and Backward Propagation in Neural Networks

▶ 손실함수(Loss Function) [링크]

...
손실함수
출처: 위키독스
...
오차 = |예측값(45살) - 실젯값(35살)|
출처: 위키독스

▶ 옵티마이저(Optimizer) [링크]

...
배치와 데이터 양
출처: https://ljyong.tistory.com/47
...
가중치에 달라지는 오차: 경사하강법
출처: 길벗

▶ 역전파(Backpropagation) [링크]

층이 하나만 있으면, 한 번의 경사하강법으로 뉴런과 뉴런을 연결한 가중치를 수정할 수 있다. 그러나 여러 개의 층이 있다면 문제가 복잡하다. 이렇게 많은 가중치를 어떻게 바꿀 수 있을까? 뒤에 있는 층의 가중치에서부터 앞에 있는 층의 가중치로 수정해 나가는 방법이 역전파 알고리즘이다.

역전파(Backpropagation; Chain Rule)란 오차(예측값과 실제값의 차이)를 역방향으로 전파시키면서 (출력층 → 은닉층 → 입력층) 가중치를 업데이트하는 것이다.

...
역전파 알고리즘
출처: https://doctorham.tistory.com/41
역전파는 경사 하강법을 이용해 오차를 줄이는 방향으로 가중치를 수정한다. 가중치를 수정할 때에는 순전파에서 계산한 결과 \( y = f(x) \)의 편미분값을 오차에 곱해 출력층 → 은닉층 → 입력층 순서로 전달한다. 이때 편미분을 사용하는 이유는 많은 노드들에 부여되는 모든 가중치값을 전부 고려하지 않고 계산하려는 노드와 연결된 가중치값만을 고려할 수 있기 때문이다.
...
역전파 가중치 수정 방법
출처: https://ljyong.tistory.com/47

3. 신경망의 발전 과정

인공신경망은 인간의 뇌 신경망(Neural Network) 구조를 모방하여 정보를 처리하고 학습하는 알고리즘이다. 그 발전 과정은 수십 년에 걸쳐 점진적으로 이루어졌으며, 여러 시대적 전환점을 거치며 현재의 딥러닝 기술로 이어졌다.

1) 퍼셉트론의 등장

1958년, 프랭크 로젠블렛(Frank Rosenblatt)은 최초의 인공신경망 모델인 퍼셉트론(Perceptron)을 제안하였다.

퍼셉트론이란 신호(x1, x2)를 입력값으로 받아 가중치(w1, w2)를 곱하고, 그 결과를 합산한 뒤 활성화 함수를 통해 출력값(y)을 결정하는 알고리즘이다.

...
뉴런의 구조
출처: 나무위키
...
퍼셉트론의 내부 과정
출처: 위키독스

퍼셉트론은 간단한 선형 분류 문제를 해결할 수 있었으나, XOR 문제와 같이 선형적으로 분리되지 않는 데이터는 처리할 수 없다는 한계가 존재했다.

...
초기 퍼셉트론은 AND와 OR만 가능한 알고리즘이었다.
출처: https://ljyong.tistory.com/47

2) 역전파 이전의 한계

1969년, 마빈 민스키(Marvin Minsky)와 세이무어 파퍼트(Seymour Papert)는 저서 『퍼셉트론』에서 퍼셉트론의 한계를 지적하며, 다층 구조가 필요함을 주장하였다. 즉, 당시의 퍼셉트론으로는 XOR 연산이 절대 불가능하며, 다층 퍼셉트론을 통해 XOR 연산에 대한 문제는 해결될 수 있지만, 각각의 가중치(Weight)와 편항(Bias)을 학습시킬 효과적인 알고리즘이 부재하였다.

이러한 배경 속에서 인공신경망에 대한 관심은 줄어들게 되었으며, 이 시기는 종종 "AI 겨울(AI Winter)"이라 불린다.

5년 후인 1974년, 폴 워보스가 박사과정 논문에서 다층 구조의 가중치와 편항을 학습시키기 위한 역전파(Backpropagation)를 제안하였다. 기존의 전방향(Feedforward) 학습을 통해 가중치와 편향을 수정하는 것이 아니라,
전방향에 대한 학습 결과를 보고, 뒤로 가면서 가중치와 편향을 수정하는 알고리즘이다.
즉, 신경망의 오차(예측값 - 실제값)를 출력층에서부터 입력층으로 피드백하여 각층(Layer)의 가중치와 편향을 업데이트 하는 알고리즘이다.

...
역전파의 고안(Backpropagation)
출처: https://ljyong.tistory.com/47

1986년, 데이비드 럼멜하트(David Rumelhart)와 제프리 힌튼(Geoffrey Hinton) 등의 연구자들에 의해 또 다른 역전파(Backpropagation) 알고리즘이 제안되면서 다층 신경망의 학습이 가능해졌다. 이는 인공신경망의 연구에 다시 활력을 불어넣었다.

이후 인공신경망 연구는 큰 진전이 있었지만, 다음과 같은 이유로 긴 침체기에서 벗어나지 못했다.

  1. 신경망의 깊이가 깊어질수록 (학습력이 좋아져야 하는데) 원하는 결과는 얻을 수 없다. 즉, 역전파를 수행할 때 출력층에서 멀리 떨어진 층에서는 기울기가 급속히 작아지는 기울기 소멸(Vanishing Gradient) 문제와 기울기가 너무 커지는 기울기 발상(Exploding Gradient) 문제가 발생해 학습력이 떨어졌다.
  2. 신경망 학습에 최적화된 하이퍼파라미터에 대한 이론적인 근거가 없다.

...
역전파 과정에서 기울기가 소멸되거나 발산되는 문제 발생
출처: https://ljyong.tistory.com/47

3) 딥러닝의 출현

깊었던 침체기에도 불구하고 인공신경망에 대한 연구는 꾸준히 진행되었다. 2006년, 역전파를 고안하였던 제프리 힌턴 교수는 "A fast learning algorithm for deep belief nets"라는 논문을 통해 가중치의 초기값을 제대로 설정하면 깊이가 깊은 신경망도 학습이 가능하다는 연구를 선보였다. 즉, 신경망을 학습시키기 전에 계층(예: 입력층, 은닉층) 단위의 학습을 거쳐 더 나은 초기값을 얻는 방식의 사전훈련(Pre-training) 방식을 제안한 것입니다.

이어서 2007년에는 벤지오(Bengio) 팀이 "Greedy layer-wise training of deep networks"라는 논문을 통해 오토인코더(Autoencoder)를 사용한 좀 더 간단한 사전훈련 방법을 제안했다. 이러한 모든 노력을 통해 비로소 깊은 신경망에서도 학습이 가능하게 되었다.

그리고 이때부터 인공신경망(Neural)이라는 용어 대신 "딥(Deep)"이라는 용어를 사용하기 시작했다. 길고 긴 침체기 동안 인공신경망이라는 용어만 들어가도 논문 채택이 거절당할 정도로 부정적 인식이 강했기 때문에 사람들의 이목을 끌 수 있는 새로운 단어가 필요했기 때문이다. 그래서 2006년부터는 딥러닝(Deep Learning)이라는 용어가 사용되기 시작했다.

[Note] 사전훈련(Pre-training)이란?
선행학습이라고도 부르며, 다층 퍼셉트론에서 가중치와 편향을 제대로 초기화시키는 방법이다.

...
오토인코더는 가중치의 좋은 초기값을 얻는 목적으로 사용된다.
출처: https://velog.io/@hyeda/AutoEncoder

이후 컴퓨팅 파워의 향상, 대규모 데이터의 등장, GPU의 활용 등과 맞물려 2010년대에는 딥러닝(Deep Learning)이 급속도로 발전하였다. 딥러닝은 이미지 인식, 음성 인식, 자연어 처리 등 다양한 분야에서 획기적인 성과를 이루었다.

4. 신경망의 종류