모두를 위한 딥러닝 시즌2

[모두를 위한 딥러닝 시즌2][Lab 8] 딥러닝의 기본 개념: 시작과 XOR 문제

햄스틴 2021. 11. 2. 19:48

 

 

 

우리 대신 골치 아픈 문제를 해결할 수 있는 기계를 만들자는 것이 인류의 하나의 큰 목표였다.

 

이것을 이루기 위해 먼저 우리의 뇌를 연구하기 시작했다.

인간의 뇌는 굉장히 복잡한데 뉴런이라고 불리는 유닛은 굉장히 단순하게 동작이 된다.

어떤 input이 들어오면 그 input에 weight를 곱한 만큼 신호가 들어온다. 이 값들이 합쳐지고 통과하면서 bios가 더해지는데 이 최종 값이 어떤 값 이상이면 활성화되고 그 값을 넘지 못하면 활성화되지 않는다.

 

 

이 방식을 이용해 Activation Function을 만들었다.

 

 

이런 유닛들 여러개를 모아서 여러 개의 출력을 동시에 낼 수 있는 기계를 만들었다.

· Frank Rosenblatt, ~1957: Perceptron        · Windrow and Hoff, ~1960: Adaline/Madaline

 

 

 

 

False Promises

이런 연구가 사람들에게 관심을 끌자 허황된 약속을 하게 된다.

→기계들이 스스로 학습하게 돼서 자신의 존재를 인식하는 정도까지 이르게 된다.

 

AND/OR problem: linearly separable?

선형적으로 구분이 가능하기 때문에 쉽게 해결되었다.

 

하지만 

XOR problem: linearly separable?

단순하게 선형적으로 구분하지 못하기 때문에 쉽게 해결하지 못한다.

Perceptrons(1969)에서 Marvin Minsky는 XOR 문제는 해결할 수 없다는 걸 수학적으로 증명해 버렸다.

MLP(multilayer perceptrons), perceptron을 여러 개 합치면 해결할 수도 있다고 말했다.

그런데 큰 문제가 각각의 weight과 bios를 학습시킬 수 없다는 것이었다.

 

많은 사람들이 여기에 크게 동의를해 오랫동안 딥러닝에 진전이 적었다.

 

 

 

1974년에 Paul Werbos가 이 문제를 해결했다.

 

Backpropagation

학습할때 에러가 나면 다시 weight 값과 bios값을 조정하는 것이 Multilayer perceptrons에서

어려운 문제였는데 Paul Werbos는 이 에러를 뒤에서부터 다시 학습시키는 알고리즘을 생각해냈다.

 

그 당시에는 아무도 관심을 가져주지 않았지만 1986년에 Hinton이 재발견을 하면서 사람들의 이목이 집중된다.

 

 

 

또 다른 방법으로 XOR 문제에 접근한 알고리즘이 있다.

 

Convolutional Neural Networks

어떤 그림을 볼 때 뇌의 전체 신경망이 반응하는 것이 아니라 일부의 신경망이 부분 부분 반응하는 것을 발견했다.

 

 

Convolutional Neural Networks

한번에 네트워크에 보내는 것이 아니라 부분 부분 잘라서 각 layer에 보낸 다음에 나중에 다 합치는 방법

문자나 숫자를 인식하는데 90%이상의 성능을 보여줌.

 

 

이런 성공들이 90년대에 딥러닝에 대한 큰 희망을 안겨주었다.

 

하지만 다시 큰 문제에 봉착하게 되는데

A BIG problem

Backpropagation 알고리즘은 적은 layer를 가진 neural net에서는 잘 적용이 되는데

약 10여개 이상의 layer를 가진 neural net에서는 에러를 backward로 보낼 때 오히려 성능이 떨어진다는

문제가 생겼다.

 

 

이렇게 해서 딥러닝에 두번째 침채기가 찾아오게 되었다.

 

 

 

CIFAR란 케나다의 연구 단체가 계속 연구를 해서 이 침채기에서 벗어나게 되었다.

 

Breakthrough

(in 2006 and 2007 by Hinton and Bengio)

초기값을 잘 선택한다면 여러 개의 layer를 가진 neural net에서도 학습을 잘할 수 있다.