최신 Optimizer를 적용해보자! – 학습 방향의 최적화 방법을 새롭게 제시한 AngularGrad

2021.07.27

라인웍스에서는 Electronic Health Record (이하 EHR) 데이터를 이용하여 다양한 머신러닝 프로젝트를 진행하고 있습니다. 이번 글에서는 최근 공개된 AngularGrad라는 optimizer를 직접 구현하고 의료 데이터에 적용해본 후 얻게 된 결과들을 공유하려고 합니다.

이 글은 Adam optimizer를 포함한 전반적인 머신 러닝 기술을 아시는 분들을 대상으로 작성되었습니다. 


Optimizer는 Adam만 사용하면 될까?

 보통 딥러닝 모델의 optimizer는 Adam을 많이 사용합니다. 안정적이고, 성능도 준수하기 때문입니다. 하지만 이런 완벽할 것만 같은 Adam의 한계점을 지적하고 새로운 방식을 통한 optimizer 연구가 계속되고 있는데 비교적 최근인 5월, 학습 방향 최적화 방안을 제시한 논문이 arXiv에 공개되었습니다. 제목은 ‘AngularGrad: A New Optimization Technique for Angular Convergence of Convolutional Neural Networks’입니다. 이번 포스팅에서는 이 optimizer를 소개합니다.

 논문에서는 Adam을 비롯한 기존 optimizer들이 이전 스텝벡터와 현재 스텝벡터의 사이각을 계산에 포함하지 않기 때문에 아직 개선의 여지가 남아있다고 주장합니다.

 그림1. Rosenbrock function1)

 논문에서는 이 주장을 뒷받침하기 위해, 포물선 모양의 낮은 함수값을 가지는 영역으로 접근하기는 쉬우나 global minimum을 찾기에는 매우 힘든 Rosenbrock function*에 optimizer를 적용하는 실험을 진행했습니다.

그림2. Adam optimizer 실험 결과2)

 그림 2를 보면 Adam의 문제점을 시각적으로 파악할 수 있습니다. 초록색 점은 global minimum(1, 1)이며 모델의 초기 상태의 좌표는 (-2, 2)이고 빨간색 선은 각 iteration마다의 상태를 이은 것입니다. 또한 여기서, Rosenbrock function은 빨간색으로 갈수록 높은 값을 가지고 파란색으로 갈수록 낮은 값을 가지는 등고선의 형태로 나타나 있으며 그림 1과 같은 높낮이를 가집니다.

 이 Rosenbrock function에 Adam을 적용하자 모델이 global minimum으로는 접근하고 있으나 거리가 계속해서 줄어들지 않고 오히려 늘어나는 등 불안정하게 학습하는 것을 볼 수 있습니다. 이는 결국 같은 리소스에서는 성능 하락, 같은 성능에선 비용 증가로 이어지게 됩니다. 


AngularGrad 소개

  AngularGrad의 저자들은 최대한 최적 학습 방향의 수직성분 크기를 줄이며 global minimum으로 수렴하게 하는 방법을 제시했습니다. AngularGrad에는 작동 방식에 따라 분류되는 AngularGrad(cos), AngularGrad(tan)가 있고 이를 사용하면 학습 경로가 최적화 되어 더 효율적인 학습이 가능해 모델의 성능을 끌어올릴 수 있다는 것입니다. 

 그렇다면 AngularGrad는 실제로 Adam이 가진 단점들을 해결했을까요? 

그림3. AngularGrad 실험 결과2)

 그림3은 Rosenbrock function에서 AngularGrad를 적용한 결과입니다. Adam보다 수직방향의 움직임이 줄어들어 조금 더 안정적으로 global minimum으로 수렴하는 모습을 볼 수 있습니다.

 논문에서는 실제로 여러 데이터셋(CIFAR 10/100 dataset, Fine-grained dataset**(Stanford Dogs, FGVC Aircraft, CUB-200-2011))과 모델(VGG, ResNet, DenseNet 등)을 이용한 image classification 문제를 테스트했으며, 대부분의 케이스에서 Adam에 비하여 높은 성능을 보였을 뿐만 아니라 SGD, RMSprop 같은 기존 optimizer는 물론 AdamW, diffGrad, AdaBelief 등 최근 논의되고 있는 타 optimizer를 상회하는 성능을 보였습니다.


AngularGrad 실험

위와 같이 AngularGrad가 실제 데이터셋에서 다른 optimizer들에 비해 좋은 성능을 보여주었기 때문에 의료 데이터로 직접 실험을 하여 검증해보기로 했습니다.

 저자는 AngularGrad optimizer를 Pytorch에서 사용할 수 있는 형태로 구현해 공개하고 있습니다. 하지만 라인웍스에서는 내부적으로 Tensorflow를 사용하고 있기 때문에 이번 실험을 위해 AngluarGrad optimizer를 Tensorflow로 구현하여 오픈소스로 공개했습니다. 아래 링크를 참조해주세요.

https://github.com/linewalks/AngularGrad-tf

MIMIC-CXR 사망 예측

  논문에서는 모델이 복잡하고 깊은 구조를 가질수록 계산량이 많아 최적화되기 어렵기 때문에 AngularGrad를 비교적 복잡하고 깊은 구조를 가진 CNN 기반 모델에 적용했다고 설명했습니다. 따라서, 저희도 CNN을 사용하기 적합한 이미지 데이터셋 중, MIMIC-CXR(Chest X-ray, 흉부 X-ray)을 선택했습니다. 이 모델에서는 MIMIC-CXR 데이터를 이용해 30일 후의 사망을 예측합니다. MIMIC-CXR과 이를 이용한 예측 모델에 대한 자세한 내용은 ‘정형데이터와 이미지데이터를 함께 이용한 헬스케어 이벤트예측’ 글을 참고해주세요.

optimizerAUROCAUPRC
SGD0.7404 ± 0.00830.1868 ± 0.0119
Adam0.7417 ± 0.01110.1863 ± 0.0165
AngularGrad(cos)0.7419 ± 0.01120.1862 ± 0.0160
AngularGrad(tan)0.7363 ± 0.01110.1819 ± 0.0160
표1. MIMIC-CXR 사망 예측 실험 결과

 실험 결과, AUROC에서는 AngularGrad(cos)가 제일 높았지만 차이가 크지 않아 오차 범위 내의 성능이라고 볼 수 있습니다. 오히려 AngularGrad(tan)은 다른 optimizer에 비해 약간 낮은 성능을 보여주었습니다.

MIMIC-IV 응급실 방문 예측

다음은 MIMIC-IV 정형 데이터 기반 응급실 방문 예측 모델입니다. 데이터셋이 이미지가 아닌 정형 데이터인 점이 CXR 실험과 가장 큰 차이점입니다. 응급실 방문 예측 모델은 이미지 분류 모델보다 덜 복잡하기 때문에 AngularGrad의 영향도가 크지 않을 것으로 예상되는데 과연 이 모델에서 AngularGrad는 어느정도 효과가 있는지 검증해보았습니다.

optimizerAUROCAUPRC
Adam0.8128 ± 0.0016 0.3352 ± 0.0101 
AngularGrad(cos)0.8129 ± 0.0040.3325 ± 0.0098 
AngularGrad(tan)0.8148 ± 0.00370.3366 ± 0.0115
표2. MIMIC-IV 정형 데이터 기반 응급실 방문 예측 모델 실험 결과

 이번에는 위 실험과 반대로 모든 지표에서 AngularGrad(tan)가 제일 높은 수치를 기록하였으나 MIMIC-CXR 실험과 마찬가지로 유의미하게 좋다고 말하기는 어려운 차이입니다. 


마치며

 Adam optimizer에서 발전된 AngularGrad를 리뷰한 후 라인웍스가 개발한 의료 데이터 기반 예측 모델에 적용시켜 보았습니다. 결과적으로 AngularGrad를 적용하면, 정형 데이터를 활용한 간단한 모델과 CNN 기반의 복잡한 모델 모두 Adam보다 성능이 상승할 수 있지만 큰 차이를 보이지는 않는다는 사실을 알 수 있었습니다. 

 학습데이터와 모델에 따라 최적의 optimizer 종류와 hyperparameter는 달라질 수 있습니다. AngularGrad가 항상 Adam보다 더 좋은 성능을 보이는 optimizer라고 말할 수 없고 각자의 데이터와 모델에 대해서 실험을 해보아야할 것입니다.

 라인웍스에서는 AngularGrad 이외에도 새로운 optimizer를 활용하여 EHR(Electronic Health Record) 데이터에 적용하여 성능을 비교해보고 결과를 분석하는 작업을 계속 진행할 것입니다. 이 과정은 ‘최신 Optimizer를 적용해보자!’ 시리즈에서 계속 공유드리겠습니다.

라인웍스에서는 EHR을 포함한 의료 분야의 다양한 데이터를 이용한 머신러닝 연구를 계속 진행하고 있습니다. 저희와 함께 연구를 진행할 머신러닝 엔지니어를 모시고 있습니다. 자세한 내용은 채용 공고를 확인해주세요.


참고문헌

*Rosenbrock function : 전역최소점이 좁고 깊은 이차함수 형태의 골짜기 안에 있어 전역최소점에 수렴하기엔 어려운 함수이다. 이러한 특성으로 인해 optimizer를 테스트할 때 사용된다.

**Fine-grained dataset : 강아지, 고양이 등 동물 종류를 맞추는 비교적 개념이 넓은 Classification의 경우 Sparse-grained classification이라 하고 강아지 종, 고양이 종 등 좁은 개념의 분류 문제인 경우 Fine-grained Classification이라고 함.

  1. https://en.wikipedia.org/wiki/Rosenbrock_function#/media/File:Rosenbrock_function.svg
  2. S. K. Roy, , M. E. Paoletti, J. M. Haut, S. R. Dubey, P. Kar, A. Plaza, and B. B. Chaudhuri. “AngularGrad: A New Optimization Technique for Angular Convergence of Convolutional Neural Networks.” (2021)
  3. Diederik P. Kingma, , and Jimmy Ba. “Adam: A Method for Stochastic Optimization.” (2017).
  4. Rosenbrock, H. H.. “An Automatic Method for Finding the Greatest or Least Value of a Function”.The Computer Journal 3, no.3 (1960): 175-184.
  5. Rumelhart, D., Hinton, G. & Williams, R. Learning representations by back-propagating errors. Nature 323, 533–536 (1986).

Eunchan Lee

Machine Learning Engineer, ML Group

Eunchan Lee