인공지능/Reinforce_Learning

[PART 03] CH02. 심층 신경망을 활용한 함수근사(선형근사)

아네스 2020. 12. 29. 00:12
반응형

"선형" 가정이 타당한가 ?

가치함수 V나 행동가치함수 Q를 주어진 데이터로부터 함수근사를 이용해서 잘 추산할 수 있을까?가 목적인데

선형으로 가정하고 근사하는게 타당할까 ?

모델에 어떠한 가정도 하지 않고 순수하게 데이터로부터 함수를 배우는 방법이 존재하는가?

 

심층신경망

Tree, Random Forest모델도 데이터로부터 함수를 배울 수 있다.

그러나 함수근사기법에서 심층 신경망 만큼 잘 배우는 것은 없다고 봐도 무방하다.

 

심층 신경망 종류

다층 퍼셉트론 모델(Multilayer Perceptron : MLP)

MLP의 "Forward" 계산과정

선형과 비선형 operator의 합성함수라고 생각

σ : identity 비선형 모델링도 할 수 있음.

 

활성함수(Activation function)

ReLU, Softplus

 

활성함수를 제거하면 무슨일이 벌어지는가 ?

계속 선형관계를 유지하게 된다. 결국 선형을 가정하고 예측하는것과 별반 다를게 없음.

히든레이어가 몇개가 되던간에 선형이라 효과가 없음.

 

오차함수 계산(Sum-squred Error)

로스함수의 파라미터는 θ의 집합으로 볼 수 있음. (W,b)

 

어떻게 최적 파라미터θ를 찾을 것인가 ?

Loss함수의 편미분을 찾아야하는데..

MLP의 layer가 깊어지게되면 W0,b0, W1,b1 ... Wt,bt 까지

엄청 많은 파라미터들의 편미분을 구해야해서 굉장히 까다로워진다.

 

이를 효율적으로 계산할 방법이 필요한데, 이게 Backpropagation

 

BackPropagation 알고리즘

Forward와 반대되는 방향으로 (역순으로) 계산을 진행한다.

결국엔 편미분을 계산해주는 알고리즘인데, dynamic programming을 이용해서 효율적으로 계산한다.

(chain rule로 풀어보니 recursion 관계식이 도출되었기 때문)

결국 L의 델타값을 알면 Hidden l+1의 값을 알 수 있고, l+1의 델타값을 알면 Hidden l의 델타값을 알 수 있다. 

 

Loss를 구할건데 필요한건 w들의 편미분, b들의 편미분인데,

델타는 Backpropagation으로 계산 하면서 구하고, activation 된 값은 forward propagation에서 계산을 해놨으니 특정 layer의 Error값을 얻을 수 있고 이를 통해 W,b의 편미분을 구할 수 있다.

 

Backpropagation + 경사하강법

Backpropagation알고리즘을 활용해서 제아무리 복잡한 Neural Network라고 해도 Loss의 편미분값을 구할 수 있게 되었고, 이걸 아니 파라미터를 최적화 시킬 수 있다.

그런데 파라미터가 최적화 됐다고 해도 성능의 최적화로 이어지진 않는다. 아래를 보자

 

경사하강법의 한계

Local optimization값에 빠져버리고, 이를 빠져나올 방법 경사하강법에 없다.

 

현실적인 경사하강법

한번에 여러 data set을 계산하는게 가능한데 (vector계산이라) 한번에 모든 데이터를 하려고 하면 메모리적으로 불가능 할 수 있기때문에 메모리 여건에 맞게끔 DataSet을 쪼개서 계산한다. 

이게 메모리문제를 해결해주기도 하지만, 파라미터 최적화 된 값이 Vanilla보다 Stochastic이 성능이 더 좋더라 라는 실험 결과 존재.

 

경사하강법에서 언덕을 넘을 수 있는 방법(Momentum)

여지껏 많이 Gradient Descent를 했다면 좀 더 움직여도 괜찮을 것이다.

기존에 가지고있던 step을 일부 감가하고 새롭게 얻은 정보를 더해주겠다.

전개를 해보면 기존에 있었던 gradient 정보들을 exponential하게 평균을 취해 가져가겠다.

즉, 기존에 크게 움직여 왔다면 앞으로도 좀 크게 움직이겠다.

 

Momentum 업데이트의 효과

공이 관성을 받아 가는 것 같은 느낌.

 

Adaptive step size 기법: AdaGrad

값이 항상 커지게돼서 optimal까지 못갔는데도 학습을 멈추게 될 수도 있음.

이부분을 해결하기 위해서. RMSprop이 제안됐다.

 

RMSprop

 

Gt가 지속적으로 커지는걸 방지

 

최적화 기법들의 계통도

계통이 둘로 나뉘었으니, 둘을 섞을 수도 있다.

 

Adam(Adaptive Momentum Estimation) = RMSprop + Momentum

최적화 기법들의 계통, 최종

특별한 상황이 아닌이상 Adam을 사용하게 될 것이다.

 

 

마무리

Linear+NonLinear + ... 반복

파라미터 최적화를 위해서 Gradient Descent를 사용하는데, 이를 위해서 Loss값의 편미분을 사용.

그런데 이 Loss값의 편미분을 계산하는게 효율이 떨어져서 Back Propagation을 사용했음.

Non-Convex해서 local optimization 지점이 있을 수 있어서 다른 방법들을 알아봤음.

반응형