인공지능을 만들기 위해 구현된 딥러닝은 생명체와 신경계에 영감을 얻게 되었고, 그 결과 인간의 뇌가 학습하는 방식을 모방한 인공신경망(artificail neural network)의 구조로 개발되었다. 이에 대한 역사를 읽어보면 큰 틀을 볼 수 있으니 꼭 읽어보는 것을 추천드립니다 ! 😣
○ 퍼셉트론
퍼셉트론은 1957년 프랭클린 로젠 블랫(Frank Rosenblatt)에 의해 개발되었으며, 여러 개의 뉴런(노드)(x1, x2, ...)에 가중치(w1, w2, ...)를 곱해서 합한 형태이다(가중치는 수동적으로 지정.) 이 값은 활성화함수(f)에 따라 다시 변환되어 신호가 '흐른다/안 흐른다'(1 or 0)라는 정보를 출력한다. 퍼셉트론은 인공신경망의 기원이 되는 수학적인 모델이며 "피드포워드(Feedforward) 네트워크 or 선형분류기" 로 생각할 수 있다.
피드포워드(feedforward) : 디지털 신경망에 사용되는 연결 방식으로, 망막과 연결된 어떤 신경망들처럼 피드포워드 망은 신경세포를 오직 앞 방향으로만 연결시킨다. 맨 앞의 신경세포 층은 다음 층과 연결되고, 다음 층은 다시 그 다음 층과 연결되는 방식이다. 어떤 신경세포 층도 이전의 신경세포 층과는 달리 연결되지 않기 때문에 '피드포워드' 라는 이름을 갖게 되었다.
예를 들어, 밑에 그림의 AND, OR, NAND 연산 결과를 퍼셉트론을 이용하여 구현 가능하다. 하지만, 마빈 민스키가 퍼셉트론으로 XOR과 같은 비선형 문제는 해결할 수 없다고 주장하였다. 퍼셉트론의 구조를 여러 층으로 쌓은 다층 퍼셉트론을 학습시키면 이 문제를 해결할 수 있으리라 언급했지만 당시 그 방법을 구현한 사람이 없었다.
다층 퍼셉트론을 학습시킬 수 없었던 이유는 단순하다. 퍼셉트론은 원하는 결과값과의 오차를 계산하여 이에 비례하게 가중치를 조정할 수 있다. 하지만, 다층 퍼셉트론은 데이터가 입력되는 입력층과 결과값을 출력하는 출력층 사이에도 은닉층이 존재한다. 이들 층에 속하는 노드의 출력값은 오차를 측정할 기준이 없기 때문에 가중치를 어떻게 조정해야 하는지 알 수 없다. 다음에 설명할 오차역전파법은 출력층에서 발생한 오차를 출력층에서 입력층의 방향으로 보내면서, 은닉층의 노드 사이의 가중치를 재조정할 수 있다.
○ 다층 퍼셉트론(Multi-Layer Perceptrons, MLP)과 신경망(Neural Networks)
이후 1986년 제프리 힌튼(Geoffrey Everest Hinton)와 데이빗 럼멜하트(David E. Rumelhart)가 오차역전파법(Back-propagation)을 통해 다층 퍼셉트론을 학습시키는데 성공하면서 XOR문제(비선형문제)를 해결할 수 있었다. 다층 퍼셉트론은 단층 퍼셉트론을 결합하여 만든 것으로 신경망이라는 개념이 생성하게 되었다.
위의 예시의 경우 가중치와 편차가 미리 구해졌기 때문에 증명을 할 수 있었지만, 앞에서 간략하게 설명했다시피 오차역전파법을 사용하기 전까지는 다층 퍼셉트론을 학습하지 못했다. 여기서, $\sigma( )$는 활성화 함수를 의미한다.
퍼셉트론과 신경망을 구분하는데 도움을 주자면, 신경망의 기원이 퍼셉트론일 뿐이며 단층 퍼셉트론을 쌓은 다층 퍼셉트론이 신경망이라고 생각하면 된다. 또한, 퍼셉트론은의 매개변수(가중치)는 직접 정해야하며 신경망은 데이터를 통해 최적의 값으로 선택된다.
● 오차역전파법(Backpropagation)
오차역전파법의 핵심은 오차를 역방향으로 전파하면서 가중치를 조정하는 것이다(연쇄법칙을 이용하여 가중치가 결과값에 미치는 영향 계산). 단순 퍼셉트론 학습 시 경사하강법을 이용해서 구했지만, 신경망이 복잡해질수록 계산이 복잡하고 오래 걸린다는 단점이 존재한다. 따라서, 효율적으로 계산할 수 있는 오차역전파법이 고안되었다. 1
오차역전파법의 절차는 다음과 같다.
임의의 가중치를 선언하고 순전파로 진행한다음 결과값을 이용해 오차를 출력층에서 입력층의 방향으로 보내면서, 은닉층의 노드 사이의 가중치를 재조정한다. 이 과정을 오차가 더이상 줄어들지 않을 때까지 반복한다.
<참고 문헌>
카이스트신문(http://times.kaist.ac.kr)
밑바닥부터 시작하는 딥러닝
- 합성함수의 미분에 대한 성질이며, 합성함수의 미분은 합성함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다. [본문으로]
'Deep Learning > 딥러닝' 카테고리의 다른 글
소프트맥스(Softmax) 함수 (1) | 2021.02.25 |
---|---|
활성화 함수(Activation Function) (0) | 2021.02.24 |
인공지능? 머신러닝? 딥러닝? (1) | 2021.02.16 |
댓글