논문 정리

Deep Learning

엘리펀튼는코끼리 2020. 12. 27. 22:29

Deep Learning

저자 : Yann Lecun, Yoshua Bngio, Geoffrey Hinton

 

머신 러닝 체계에서는 사용자가 특징을 추출하고 입맛에 맞게 데이터를 변화 시켜야 했다. 머신러닝의 일종인 Representation learning은 시스템이 자동으로 feature detectoino or classification을 하는 것인데 딥러닝은 이러한 representation을 multiple level로 작동시키는 것이다. 이러한 딥러닝의 장점은 손이 덜가고 여러 분야에서 사용이 가능하다는 것에 있다.

Supervised Learning

대부분의 머신러닝은 deep or not, 대부분 Supervised Learning이다. 답을 주고 그 답과의 오차를 줄여나가는 과정을 통해 학습을 하는 것이다. 이 과정은 출력된 결과와 원래의 답의 오차를 이용해 그 오차를 줄이는 방향으로 수정하고 이것을 gradient descendent를 이용한다고 한다. 여기서 이용하는 parameter는 weight라고 한다.

각 weight의 gradient vector를 계산하여 weight가 증가 혹은 감소할 때 마다 에러의 증감률을 계산하고 그 gradient의 반대 방향으로 수정을 한다. 이 방법으로 gradient의 최소값으로 다가간다.

위의 방법은 여러가지가 있는데 그 중 SGD(stochastic gradient descent)를 많이 사용한다. 이와 비슷한 BGD(Batch Gradient Descent)도 있는데 BGD는 하나의 step을 위해 전체 데이터를 계산하여 계산량이 많지만 SGD는 미니 배치를 사용하여 다소 부정확할 수 있지만 계산 속도가 훨씬 빠르고 같은 시간에 더 많은 step을 나아갈 수 있는 장점이 있다. 또한 SGD는 Local Minima에 빠지지 않고 Global Minima에 수렴할 가능성이 높다.

위에서의 training을 끝낸 후에는 test set을 이요하여 위에서 행했던 학습을 평가하는데 이 test set은 train set에서 보지 못했던 데이터들을 이용한다.

많은 machine learning은 linear classifier을 이용하고 사람이 직접 feature를 만든다. 예를들어 이미지 검출에서 Harris corners, Hogg detector 같이 사람이 이미지의 특성을 이해한 뒤에 검출을 위해 직접 필터를 만드는 식이다. 하지만 이것은 그 분야에 대한 충분한 이해가 있어야지만 가능하다. 이렇게 feature를 만든 뒤에 검사할 때 threshold를 넘어서면 particular category에 넣는 식이다.

하지만 Linear classifier는 simple region으로만 가를 수 있다. 따라서 XOR같은 것은 linear classifier로 분류를 할 수 없게 된다.

이미지와 음성 인식에서는 input-ouput function이 검출하고 싶지 않은 irrelevant vatraion of input과 insensitive 해야한다. 여기서 Invariance dilemma가 나오는데 어떤 함수가 특정 feature를 잘 분류 하였다 하더라도 그것은 다른 featurer과는 관련이 없어야 하는 것이다. Linear function으로는 위를 해결 할 수 없다. 그래서 non linear feature를 이용하게 되었다. Kernel function등을 이용한다.

 

Kernel 함수의 예를 들어보자. 저차원 공간에서 선형 분리가 안되는 데이터들은 고차원 공간에 매핑을 시켜 선형 분리가 되도록 할 수 있다. 예를 들어 a=(0,0), b=(1,1) 이라는 2차원 점들이 있고 이를 3차원으로 매핑시키려 M(x) = (x1^2, 2*x1*x2,x2^2)라는 매핑 함수를 지정한다. 그러면 a=(0,0,0)이 되고 b=(1,2,1)로 변환이 된다. 커널 함수의 정의는 저차원 공간 상의 두 벡터 x,y가 있다고 할 때 커널함수 K(x,y) = M(x)*M(y)를 만족하는 매핑함수 M(.)가 존재해야 한다는 것이고 이는 커널 함수의 값과 H 공간 상으로 매핑된 두 점 M(x), M(y)의 내적이 같아야 하는 것이다. 

커널함수
non linear function

 

이 때 사용하는 non linear function은 tanh, ReLU등이 있으며 ReLU가 많은 layer가 있을 때 학습이 빠르게 된다는 결과 있다. 

 

Backpropagation to train multilayers architectures

Backpropagation은 objective의 gradient를 output부분부터 시작하여 input으로 다시 되돌아가는 과정을 이야기 한다. 우선 뉴럴 네트워크의 과정은 Weighted sum을 이전 layer에서 다음 layer로 보내는데 이때 non linear function을 이용하여 결과를 보내는 것이다. 

예전에는 simple gradient descent가 local minima에 빠져서 average error를 줄일 수 없다고 생각했다. 하지만 local minima는 큰 문제가 아니라는 결과가 있다. Initial condition에 상관 없이 시스템은 거의 항상 같은 quality의 solution에 다다른다. 또한 saddle point역시 지나쳐서 가게 만들면 되기 때문에 큰 문제가 아니게 된다. 

 

Convolutional neural networks

ConvNets의 4 key ideas : Local connections, shared weights, pooling, use many layers

Unit Convolution layer는 feature map으로 이루어져 있고 각각의 uit은 filter bank라는 weight의 집합으로 전의 layer과 연결이 되어 있다. 또한 weighted sum은 ReLU로 non linearity를 가진다. 

Image와 같은 array data는 local group의 value가 highly correlated하고 Image의 Local statistic과 다른 signal들이 loacation에 invariant하다. 이떄문에 모든 unit이 같은 filter bank를 가지게 된다. 

Convolutoin layer는 local conjunction을 전의 layer에서 찾아내려고 사용하고 pooling layer는 비슷한 feature들을 하나로 묶으려고 사용된다. 여기서 pooling은 차원을 줄이면서 small shift와 distortion에 대한 invariance를 만든다. 

 

Deep neural network는 많은 natural signal들이 계층을 이루는 것을 이용한다. Higher level feature는 lower level feature를 가지는 식이다. 예를들어 Edge는 motif를 이루고 motif가 모여 part를 이루고 part가 모여 object가 되는 식이다. 

 

Recurrent neural networks

RNN은 input sequence를 한번에 하나씩 처리하며 state vector로 지난 element들의 내용들을 가지고 있는다. Dynamic system에서 굉장히 좋은 성능을 보이지만 backpropagate gradient가 각각의 time step에서 줄어들거나 커지는데 단계가 중첩 될수록 gradient explode 또는 vanish 현상이 일어난다는 단점이 발생했다. RNN의 주 목적이 long term에 대해 학습을 하는 것인데 이것이 어려워 졌다는 것이다. 

그래서  이를 보안하고자 Long short-term Memory(LSTM)이 나왔다. 특정 hidden unit을 input을 오랜 시간 동안 기억하도록 설정하는 것이다. 이 특정 hidden unit을 memory cell 이라고 부르고 이는 accumulator 또는 leaky neuron처럼 행동하였다. 그래서 다음단에 자신의 real value와 축적된 정보를 weight에 실어서 보낸다. 그리고 그 다음단은 받은 것중에서 clear를 할지 말지 결정할 수 있다.