딥러닝

정규화(Regularization) (1) | 패스트캠퍼스 챌린지 25일차

이젤 2022. 2. 17. 21:44

딥러닝 모델은 이름에서도 알 수 있듯 레이어를 깊게 쌓아서 만드는 모델이다. 그렇다보니 가중치가 깊게 쌓여서 복잡도가 높아지고, capacity가 높아져서, 결과적으로는 과적합(overfitting)이 일어나기 쉬운 모델이다. 실제로도 딥러닝을 돌릴 떄 과적합이 이루어져서, BLEU 점수나 F1과 같은 지표로 과적합이 이루어지기 전 가장 최적의 모델을 찾아 활용했던 기억이 난다. 앞서 Universal Approximation Theorem에 따르면 인공뉴런과 시그모이드로도 충분히 어떤 함수에 가장 근사한 함수를 만들어 낼 수 있지만, 우리에게는 자원이 한정되어있다. 시간도 한정되어 있고, 아무리 GPU나 심지어 TPU를 사용한다 해도 컴퓨팅 자원의 한계는 존재한다. 여기에 덧붙여서 전기 사용의 한계도 무시할 수 없다. 인공지능 훈련이라는 목적으로 이루어지는 무분별한 전기사용으로 인해 딥러닝 방법론 자체의 환경오염에 대한 책임이 서서히 대두되고 있고, 이에 따라 최근 논문에서는 친환경 전력을 사용했음을 명시하는 논문도 가끔가다 보인다. 여러모로 단순히 모델사이즈와 데이터사이즈를 늘려 '언젠가는 작동하는' 모델이 아닌, 효율적으로 작동하는 모델이 필요해 진 것이다. 

정형화는 이러한 효율적으로 작동하는 모델을 만들기 위한 방법들이다. 오늘은 이 중 Norm 기반 정형화와 앙상블, 그리고 dropout을 살펴보았다. 

Norm은 학습 대상이 되는 파라미터의 크기를 뜻한다. Norm 기반 정형화는 이 norm을 기반으로 정형화함수를 정의하여 정형화를 수행하는 방식이다. L1(Lasso) 방식과 L2(Ridge)방식이 있는데, Lasso는 Least Absolute Shrinkage and Selection Operator의 약자이며, Ridge는 Stack Exchange의 이 글에서 볼 수 있듯 prediction의 ridge를 없애주는 방식이다. Lasso는 풀네임에서 absolute, 즉 절대값으로 shrink, 즉 선택의 폭을 좁혀 select, 즉 값을 선택하는 과정이라고 볼 수 있다. 아웃라이어가 존재한다 하더라도 비교적 robust하며, 예측된 값이 꼭짓점에 다다를 수 있으므로 결과값이 0이 될 수 있으며, 이는 sparsity가 증가한다는 뜻이 된다. 반면 prediction 값을 미분했을 때 그 결과가 유일해가 아닐 수가 있는데, 이는 Lasso의 사각형의 한 변과 기울기가 평행한 경우 문제가 된다. 이러한 점에 의해 Ridge 방식 또한 필요에 따라 사용된다.

다른 정형화 방식은 ensemble이다. 앙상블은 단어 뜻에서 알 수 있듯 여러 모델을 같이 사용하는 것으로, 이진분류 같은 경우 정확도가 50%를 넘는다면 합쳐서 정확도를 더욱 높일 수 있는 방법이 된다. Learning 방식과 일종의 투표를 진행하는 Consensus 방식이 있는데, Consensus 방식의 bagging이 성능이 좋아 주로 사용된다고는 한다. 

하지만 Bagging이 굳이 필요가 없는게, dropout이라는 간단하면서 획기적인 방법이 있기 때문이다. Dropout은 정해진 확률 대로 노드를 drop 시키는 방식인데, drop 시켰다는 것은 그 노드에 대한 가중치를 0으로 해서 무시하겠다는 뜻이다. 이 간단한 방식으로 weight를 공유하는 네트워크의 조합을 만들 수 있어서 bagging의 효과를 훈련 한 번에 볼 수 있다. 성능도 높고, SGD 알고리즘을 그대로 사용할 수도 있으면서, 노트 우측 하단 사진에서도 볼 수 있듯 feature를 더욱 뚜렷하게 본다는 장점이 있는데, computation cost도 O(n)이라 낮아서 쓰지 않을 이유가 없다. 다만, 여기서 확률, 즉 dropout rate는 경험적으로 정할 수 밖에 없다는 것이 단점이라고 생각된다.


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXiC