본문 바로가기
AI/[DLBasic]모두의 딥러닝(딥러닝의 기본)

[DLBasic] 8-1. 딥러닝의 기본 개념 : 시작과 XOR 문제

by 쵸빙 2020. 1. 16.

     딥러닝이 어떻게 생겨나게 되었는지 알아보도록 하겠다.

생활을 더 편리하게 기계가 일들을 처리하게 하기 위해 우리의 뇌처럼 기계가 사고해서 알아서 일을 잘 처리할 수 있게 해야했다.

 

Thinking Machine

     우리의 뇌는 뉴런이 신호를 전달받아서 받은 input에 weight을 곱한 값들을 다 합친 다음 bias라는 값이 더해져서 전달된다. 이 합이 어느 정도 이상이면 활성화가 되고 넘지 못하면 활성화가 되지 않는다.

 

Activation Function

     이런 뉴런을 위와 같이 구상해볼 수 있다.

 

Logistic Regression Units

     이전 시간에 배웠던 logistic regression을 적용하여 여러 단계로 구성하여 모으면 오른쪽과 같은 형태가 될 것이다.

 

Hardware Implementation of Deep Learning

     이 기계를 위와 같이 하드웨어로 직접 만들 수 있다.

     이것이 많은 사람들의 관심을 끌자, 하드웨어를 만든 박사님이 그 기계가 걷고, 말하고, 보며 자신의 존재를 인식할 수도 있게 될 것이라는 허황된 발언을 하기도 했다.

   

And / Or : linearly separable

     그 당시에 And 와 Or을 기계가 예측할 수 있도록 하는 것이 중요한 문제였다. 위와 같이 Or과 And일 때 값을 구분할 수 있었다.

 

XOR is not linearly separable

    그러나 XOR 연산이 등장하자 사람과 달리 컴퓨터가 단순히 선으로 구분을 할 수 없어서 큰 문제에 봉착하게 되었다.

그래서 x1, x2를 넣었을 때 결과가 50%까지밖에 맞지 않았다.

 

     MIT AI Lab의 설립자인 Marvin Minsky 교수님께서는 지금까지의 방식으로 XOR을 구현할 수는 없다고 수학적으로 증명해버렸다. 한 개로는 안 되고 여러 layer로 구현해야하고, 이것을 MLP, Multi-Layer Perceptrons이라고 한다. 각각의 레이어의 weight과 bias를 학습시킬 수 없다고 하여 많은 사람들을 실망시킨다.

Back Propagation

     주어진 입력으로 출력이 나왔을 때 그것이 잘못됐으면 그 때 사용했던 가중치와 편향을 수정해야 한다.

Paul이 개발해낸 BackPropagation은 출력이 나온 후 에러를 발견했을 때 뒤로 다시 돌아가면서 수정하는 방법이다.

그 당시에는 주목을 받지 못했으나 Hinton이 이후에 재발견함으로써 주목을 받게 되었다.

 

Convolutional Neural Network

     Back propagation과 다른 방법을 사용한 경우도 있다. 고양이에게 그림을 보게 한 다음에 시신경의 neural network가 어떻게 작동하는지를 보았는데 그림의 형태에 따라 어떤 그림에서는 일부의 뉴런들만 활성되고, 다른 그림에서는 다른 일부의 뉴런들만 활성화되는 결과를 보였다. 우리가 그림을 볼때 시신경 세포 전체가 그것을 처리하는 것이 아니라,

각 부분들을 담당하는 신경망들이 있고 나중에 조합되는 것이라고 예상해볼 수 있다.

그래서 Lecun 교수님께서는 Convolutional Neural Network를 개발했다.

CNN

     그림이 있을 때 한번에 전체를 neural network에 학습시키는 것이 아니라 일부를 잘라서 neural network에 보내고, 그 다음에 다른 일부를 neural network에 보내서 학습시키는 방법이다. 부분부분을 잘라서 보낸 다음에 나중에 합치는 방법을 개발한 것이다. 알파고도 이 방법을 사용했다고 한다. 약 90% 이상의 정확도를 보이고, 특히 문자, 숫자 인식에 좋은 성능을 보인다고 한다. 

 

BackPropagation의 문제

    그러다가 또 다른 큰 문제에 봉착하게 된다. BackPropagation의 방법이 몇 개의 layer에서는 잘 동작하는데 십여개의

layer의 경우에는 맨 뒤의 에러를 앞으로 차근차근 보낼 때 그 의미가 점점 약해져서 맨 앞에 도달했을 때에는 거의 의리를 갖지 않게 되는 경우도 있다. 그래서 학습을 시킬 수 없게 된다. layer가 많을수록 성능이 떨어지게 된다.

그래서 오히려 neural network보다 더 간단한 모델인 SVM이나 Random Forest 등이 더 잘 작동하게 된다고 한다고 한다. 또한 너무 복잡하기 때문에 구현하기도 어렵다는 문제가 있었다.

 

다음 시간에는 이어서 딥러닝의 기본 개념을 알아보도록 하겠다