일기

2022 제 6회 금융보안원 논문 공모전 후기

JUNFUTURE 2023. 6. 29. 18:18

http://security.cau.ac.kr/board.htm?bbsid=news&mode=view&bltn_seq=1473

2022 제 6회 금융보안원 논문 공모전에서 최우수상을 수상했다. 
논문 주제는 'GAN과 LGBM을 이용한 불균형 데이터셋 문제 해결 및 신용카드 사기거래탐지' 였다.
작년에 작성했던 논문에서 인공지능을 접해보고 확장된 주제로 논문을 작성했다.

기존의 논문(Verification of De-Identification Techniques for Personal Information Using Tree-Based Methods with Shapley Values)에서는 개인정보 데이터 셋에 효과적인 학습성능을 내는 알고리즘을 선택하는 주제였다. 이후 기계학습에서 예측 성능을 올리기위해서 단순히 알고리즘의 선택 뿐만이 아니라 데이터 전처리, EDA 그리고 불균형 데이터 셋 문제 해결 등 다양한 고려사항들이 있다는 것을 알게되었다.

 

특히나 '불균형 데이터 셋 문제 해결'이라는 주제가 참 흥미로웠는데, 이는 특정한 데이터 클래스에 비해 반대되는 데이터 클래스가 상대적으로 현저히 차이가 많이 나는 경우 학습이 올바르게 진행되지 못하는 문제점을 해결하기위한 연구 분야이다.

 

예를 들어 '사기거래를 탐지하는 인공지능' 을 개발한다고 했을때 기계 학습을 위해서 사기 거래에 해당하는 데이터와 그렇지 않은 일반 거래 데이터가 필요한데, 현실 세계에는 일반거래보다 사기거래가 발생하는 경우가 현저히 적다. 이런 식으로 리얼월드에서는 한 쪽 클래스에 치우처진 분포를 보이는 데이터 셋이 많다.

 

이런 불균형 데이터 셋을 이용해 기계학습을 진행하면 불건전한 결과가 나온다. 예측 성능은 매우 우수하지만 이는 올바르게 학습되었다고 표현할 수 없다. 쉽게 이야기하면 테스트를 할때에도 거의 다 일반적인 거래에 해당하기 때문에 그냥 다 일반적인 거래라고 찍어도 다 정답이 되는 상황이기 때문이다. 비유를 해보자면 정답이 O, X 두가지인 시험지가 있는데 100개 문제 중에서 한 문제만 정답이 X이고 나머지 99개는 정답이 O일때, 다 O로 찍으면 99점으로 우수한 점수를 얻을 수 있는 상황과 동일하다.

 

때문에 이런 불균형 데이터 셋 문제를 해결하기위해 너무 적은 데이터를 늘리는 오버 샘플링, 너무 많은 데이터를 줄이는 언더 샘플링등의 방법이 있는데 이런 방법들은 어찌되었든 임의로 데이터를 만드는 것이기 때문에 실제 데이터 분포를 변경할 수 있다는 한계가 있다. 

 

그래서 주목 받는 기술이 바로 GAN(Generative Adversarial Networks)이다. 사실 GAN을 이용한 기계학습도 궁극적으로는 성능이 높은 분류기(Classifier)인 판별자(Discriminator)를 만들어 내는게 목표이긴 하지만 이때 서로 경쟁하며 실제 데이터의 분포와 특징을 잘 학습하여 그럴듯한 데이터 샘플을 만들어낸 생성자(Generator)를 이용하는게 바로 GAN을 이용한 불균형 데이터 셋 문제 해결의 핵심이다.

 

그래서 이번 연구에서는 어떤 구조와 파라미터로 세팅된 GAN이 신용카드 사기거래 데이터 셋의 특성과 분포를 잘이해하고 실제와 유사한 샘플 데이터를 만들어내는지, 또 그러한 샘플 데이터를 기반으로 생성된 학습 데이터 셋을 이용했을때 어떤 머신러닝 알고리즘이 높고 불균형 데이터 셋 문제 해결에서 의미있는 성과를 도출하는지를 실험해 보았다.

FDGAN-L 프레임워크 구조도

 

궁극적으로는 '신용카드 사거기래 탐지를 잘하는 머신러닝 프레임워크를 만들고 싶다!' 라고 요약해볼 수 있을 것 같다. 핵심은 GAN 구조와 파라미터 세팅을 통해 FDGAN이라는 GAN 구조를 개발해낸 것이지만 여기에 설명 가능한 인공지능(XAI) 적용이 가능한 LGBM 알고리즘을 사용하여 추후 SHAP을 이용한 모델 평가를 통한 머신러닝 모델 재설계 촉진을 꽤했다.

 

Off The Record

사실 제일 힘들었던건 GAN의 학습속도다. python 기반 라이브러리 pytorch, sklearn을 이용해서 GAN 학습을 진행했었는데 진짜 너무 느렸다 ㅠ 이에 트러블 슈팅하는 시간도 덩달아 늘어나고 데드라인 안에 유의미한 실험결과를 기다리기까지가 참 힘들었었다. 논문 마감일이 다가와서는 2일을 같은 자리에서 밤을 샜다. 과장이 아니라 실제로 그랬다.

 

지도교수님께서 GPU 컴퓨터를 전해주셔서 이를 기반으로 실험을 진행했었는데, 다양한 환경에서 코드 트러블 슈팅을 하려고 따로 CPU에서 돌아갈 수 있게 설정을 해서 내 노트북으로도 열심히 돌렸던 기억이 난다. 방학 중에 춘천을 놀러갔었던 적이 있는데 그때도 GAN 학습 코드 트러블 슈팅하느라고 옆에 컴퓨터 켜두고 커피먹었던 기억이 있다.

 

이거 ㅁ 뭐 왜이래

제일 크게 배운건 아무래도 'GAN은 학습시간이 오래 걸린다.' 이고 이외에도 느낀점들을 정리해보면

  1. 머신러닝 모델의 예측 성능 증진을 위해 알고리즘 말고도 필요한 고려사항들이 많다. (불균형 데이터 셋 문제 해결같은)
  2. 리얼월드에서 예측 성능을 올리기위해서 데이터에 대한 이해와 처리가 중요하다. (예측 성능이 좋다는 것과 건전한 결과 보장은 별개다.)
  3.  큰 프로그램 개발시 객체지향의 필요성 (참고한 오픈소스가 객체지향으로 짜여져있었는데, 처음으로 제대로된 객체지향 프로그램을 접해봤다.)

정도가 생각나는 것 같다.

논문에도 아래와 같이 적었지만 쉽게 말해, 추후에는 속도도 빠르고 성능도 좋은 GAN을 한번 개발해보고 싶다.

GAN 학습의 특성상 데이터셋의 크기에 비례하여 학습시간이 증가한다는 점, GPU와 같은 고가의 장비의 도움 없이는 실험을 진행하는 것이 현실적으로 불 가능에 가깝다는 점등의 현실적인 제약으로 인해 기타 효율적인 GAN 모델이 존재 할 수 있음에도 불구하고 좀 더 다양한 세팅과 파라미터를 이용하여 실험을 진행하 지 못한 점은 본 연구의 명백한 한계점이다. 추후 GAN 기반 학습 및 샘플 데이터 생성에 있어서 학습 성능은 유지하되 학습 속도를 줄여 많은 모델과 세팅에 대한 실험을 가능하게 할 수 있는 방법에 대한 연구를 진행하고자 한다. 

방학을 거의 쏟아부었던 큰 성과라 나의 자부심을 더해준 값진 경험이고 프로젝트였다고 생각한다.
무엇보다 밤낮없는 연락에 테스팅해준 다연이, 너무나도 좋은 주제 응원해주시고 추천해주신 노교수님, 그리고 감히 생각하건데 학술적으로 누군가를 지도한다고 했을때 이상적이라고 생각한 행동들을 모든 부분에서 보여주시는 이제는 교수님이 되신 문교수님께 깊은 감사의 말씀을 전하고 싶다. 

 

처음 이상(ISANG)에서 프로젝트를 시작할때만 해도 이게 될지 막막한 생각 뿐이었는데, 이렇게 큰 상까지 받을줄은 정말 꿈에도 몰랐다. 함께해주신 은사님들, 동료가 없었다면 내가 어찌 감히 이런 크고 좋은 기회에서 좋은 경험을 할 수 있었을지 싶다. 늘 감사드립니다.