Q. 차원의저주(Curse of Dimension이 무엇인가요?)

Q. 왜 딥러닝은 자꾸 parameter(가중치)를 줄여주는 노력을 할까요?


안녕하세요~ 지난 시간에는 DNN의 일반화성능을 높이기 위해 Regularization 기법에 대해서 알아보았어요. 또한 L1 regularization 기법이 낮은 가중치를 0으로 만드는 경향이 있어 입력차원을 줄여주는 효과를 얻을 수 있다고 했었던거 기억하세요?


이번장에서는 입력차원을 줄여주는것이 왜 효과적인지, 이것이 딥러닝 성능을 어떻게 높여준다는것인지 알아볼거에요. 


위키백과에서 내린 차원의저주 정의는 아래와 같아요. 쉽게 말하자면 데이터의 차원이 증가하면 이것을 표현하기 위한 데이터양이 기하급수적으로 올라간다는 뜻이에요.


"The common theme of these problems is that when the dimensionality increases, the volume of the space increases so fast that the available data become sparse. This sparsity is problematic for any method that requires statistical significance" 


먼저, 아주 간략하게 설명을 해보도록 해볼게요.

우리에게 4개의 데이터가 있다고 가정해볼게요. 그리고 모든 축의 길이가 2인 2차원공간과 3차원공간에 4개의 데이터를 집어넣을거에요. 왼쪽그림에서는 면적당 데이터가 차지하는 밀도는 1이겠네요. 우측그림에서는 면적당 데이터가 차지하는 밀도가 1/2일거에요. 그렇다면 공간의 차원이 높아질 수록 같은 데이터량이라고 할지라도 (데이터가 공간을) 차지하는 비율이 낮아진다고 할 수 있겠죠?



우리가 30개의 데이터를 갖고 있는다고 했을때보다 1000개의 데이터를 갖고 있을때 overfitting이 일어날 확률이 더 적을거에요 (이에 대한이유는 앞선글의 가위 예시를 통해 이해해주시면 좋을것 같아요). 결국엔 같은 공간차원이라고 해도 데이터가 더 적을수록 overfitting이 일어나게되고, 이것을 일반화해서 설명하면 "데이터가 공간상에서 차지하는 비율이 적을 수록 상대적으로 overfitting이 일어날 확률이 높다"라고 할 수 있어요. 


.

.

.

.

.

.



이제부터는 위에서 언급한 내용들을 조금 더 자세히 풀어 설명해보도록 할께요.


먼저 어떤 사람에 정보에 관한 데이터를 갖고 있다고 가정해볼께요. 그리고 사람정보(X)에는 나이(=x1), 키(=x2), 몸무게(=x3)가 들어가 있다고 합시다. 그렇다면 사람정보 데이터 X는 아래와 같이 3차원 공간상에서 표현이 가능하겠네요? 그리고 다음과 같이 표현 할 수 있을 겁니다 --> X=(x1,x2,x3)


우리는 앞으로 데이터 X를 이루는 3가지 조건인 x1,x2,x3의 총 갯수를 데이터 건수라고 명명할거에요. 그러니까 여기 3차원 데이터에서 데이터 건수=3이 되겠네요.


<사진1>




이때, 1명의 사람에 대한 데이터를 수집했다고 해볼께요. X데이터는 3개로 나누어지니 각각의 공간은 33%의 비율을 갖고있을 겁니다. 만일 데이터건수가 2라고 한다면 각각의 공간은 50%의 비율을 차지하고 있겠네요.

      

<사진2>                                              <사진3>



만약 어떤 데이터가 27차원으로 이루어져있다고 해봅시다. 만약으로가 어떤 서로다른 특성을 갖는 데이터 I=(I1,I2,I3), J=(J1,J2,J3), K=(K1,K2,K3)를 조합하여 입력데이터를 사용한다고하면 아래와 같이 구성이 가능해 질 겁니다.

<사진4>

이때는 하나의 데이터건수가 갖고 있는 공간비율이 1/27 = 0.037 이 되겠어요.


예를들어, 우리가 6명의 사람에 대한 데이터를 수집한다고 해볼께요. 먼저 데이터가 3차원으로 구성된다고 하면 3가지 데이터조건에 6명을 채우는게 됨으로 실제 3차원 공간에서 6/3=200% 공간을 채울 수 있게되요. 이 말을 바꿔말하자면 6명의 데이터는 3차원 공간을 200% 채울 수 있다는 뜻으로 풀이할 수 있습니다.


그런데, 27차원인 경우에는 어떻게 될까요? 6/27=0.22=22%의 공간밖에 채우질 못하네요. 


이처럼 수집된 데이터 건수는 동일하더라도 입력데이터 차원이 증가하면, 데이터 공간을 채우는 비율이 줄어들기 때문에 분석에 요구되는 데이터 수도 증가하게되요.


만약 1가지 데이터 건수에 최소 30건의 데이터가 있어야 분석이 용이하다고 했을 때, 3차원의 입력데이터는 3*30=90 개의 데이터 (건수)가 필요하고, 27차원 입력은 27*30=810건의 데이터 (건수)가 필요하게 됩니다.


언뜻보면 데이터건수가 많아지면 데이터를 표현하는 정보가 많아져 분석에 더 유리할 것 같이 보이시나요? 

그런데 자세히 보시면 입력 데이터의 차원이 커지게 되면 데이터 건수가 많아지므로 하나의 데이터건수가 갖는 공간비율도 점점 줄어들게 되고, 분석에 필요한 데이터 건수도 기하급수적으로 늘어나게 됩니다. 


딥러닝 관점에서 해석을 다시 해볼께요.  우리가 어떤 Deep Neural Network모델을 학습시키고 분류하는 성능을 테스트 해본다고 가정해봅시다. 먼저 1차원 입력데이터 30개를 Deep Neural Network로 학습을 시킨 후, 학습데이터가 아닌 데이터로 검증을 했다고 해봤을 때 문제없이 동작을 합니다. 그런데, 27차원으로 표현되는 입력데이터 30개를 학습시킨 후 테스트를 해보면, 학습된 30개의 데이터에 대해서는 무리없이 잘 분류하는데 다른 학습데이터로 검증을 한다고 하면 잘 분류를 하지 못하는 현상이 벌어지곤 합니다. 다시말하자면, 입력 데이터의 차원이 증가했는데 데이터 수가 부족하니 학습데이터만 잘 구분하도록 모델이 학습데이터에 편중 되었네요. 이 역시 Overfitting입니다.

아래 사진을 보면 입력데이터가 일정한 차원 수를 넘어가게되면 분류성능이 급격하게 떨어지는 것을 볼 수 있어요.

<사진5>


이전장에서 L1 regularization이 낮은 가중치를 0으로 만드는 경향이 있다고 했죠? 사실 낮은 가중치는 딥러닝 모델에서 큰 부분을 차지하지 않아요. 예를들어, 가중치가 0.00000000000001이라고 한다면 아무리큰 입력값이 곱해져도 그 결과가 0에 수렴할거니까요. 만일 가중치가 0이 된다면 결국 입력차원이 줄어들게 되고, 분석에 필요한 데이터량이 줄어들 수도 있겠네요.


또는 복잡한 딥러닝 모델을 좀 더 simple하게 만드는 효과도 불러일으킬 수 있겠네요.



<사진6>


이렇게 딥러닝에서 데이터의 차원이나 딥러닝 모델의 파라미터를  줄여주려는 노력은 계속되고 있어요. 일반화성능을 위해서도 줄여주려고 하는 것도 있지만, 딥러닝 모델의 속도를 향상시키거나, 제한적인 데이터량을 극복하려고 하는 등의 여러 이점이 있기 때문에 이와같은 노력이 지속되고 있어요.




이제 이번장에 기술했던 글을 요약해볼께요~

1. 주어진 데이터 샘플에 대한 세밀하고 밀도 있는 데이터 (=고차원 데이터)는 많은 정보를 담고 있지만, 딥러닝 모델 관점에서 고차원 입력데이터는 부작용을 일으킬 가능성이 더 높아요. 
2. 즉, 고차원 입력데이터일수록 훨씬 더 많은 데이터량이 필요하게 되는데, 이것을 차원의 저주라고해요.
3. 하지만 현실적으로 방대한량의 데이터를 모으는데 힘든 부분이 많아요.
4. 또한 입력차원의 데이터가 고차원이어도 실제분석에서는 저차원으로 구성된 데이터가 더 분류성능을 높일 수 있어요. 왜냐하면 가끔씩 우리가 품질좋은 세밀하고 밀도 있는 데이터를 구성했다고 하지만, 그건 언제나 우리관점에서에요. 그러니까, 없어도 되는 변수들을 데이터에 추가했을 가능성도 있어요 (오히려 분류에 방해되는 변수를 넣을 가능성도...).
5. 이러한 이유들 때문에 어떻게든 입력데이터의 차원을 줄여주는 노력들을 하고 있어요.
-Feature extraction: PCA
-Feature selection: Correlation Analysis, VIF(Variance Inflation Factor), Random Forest
(위에 있는 개념들은 사실 선형대수나 Machine Learning에서 주로 다루는 개념이에요. 그래서 이 부분은 나정에 관련 챕터를 개설하게 되면 그때 설명하도록하고 지금은 이러한 기법들이 사용되고 있구나 정도만 알고있으면 될 것 같아요)


이번장에서는 Curse of Dimension에 대해서 알아보았어요. 다음장에서는 지금까지 배운내용을 전체적으로 요약정리하면서 디테일한 수식들을 사용해보도록 할게요!


[사진 레퍼런스]

사진5

https://www.visiondummy.com/2014/04/curse-dimensionality-affect-classification/

사진6

https://www.youtube.com/watch?v=6g0t3Phly2M


[글 래퍼런스]

https://kkokkilkon.tistory.com/127

http://thesciencelife.com/archives/1001


+ Recent posts