AI 보안팀의 딥러닝 경진대회 : 딥러닝 모델 설계 및 성능 향상 방법

  인공지능과 딥러닝 기술은 많은 분야에 널리 활용되고 있으며, 이는 보안 분야 또한 마찬가지입니다. 전통적 기계학습의 초기 사용예가 스팸처리 필터일만큼 보안과 데이터 사이언스는 밀접한 관련이 있다고 할 수 있습니다.

  그렇다면 이렇게 널리 사용되는 딥러닝 모델의 성능을 향상시키는 방법에는 무엇이 있을까요? 다양하고 품질 높은 데이터셋에 최신 논문 기법을 적용하는 것만으로도 충분한 성능을 낼 수 있을까요? 물론 좋은 데이터셋과 최신 논문 기법만으로도 높은 딥러닝 모델 성능을 낼 수 있겠지만, 일부 데이터셋은 수집에 한계점이 있을 수 있고, 연산 능력의 한계로 딥러닝 모델 학습이 어려울 수 있습니다.

  이번 글은 딥러닝 경진대회에 대한 소개와 소감을 적은 지난 글에 이어 저희 AI 보안팀이 경진대회에 참가하면서 어떠한 방식으로 딥러닝 기술을 적용하여 이상 징후를 탐지하고, 딥러닝 모델 성능을 향상시켰는지에 대하여 소개하고자 합니다.

Overview

  먼저의 글에서도 간단히 소개했듯, 산업제어시스템 보안위협 탐지 AI 경진대회는 국가기반시설 및 산업시설의 제어시스템에서 발생할 수 있는 여러가지 보안 위협을 다양한 상황 변수를 파악하여 딥러닝 기술로 탐지하는 대회입니다. 대회 참가자들에게는 수력발전소 등의 국가기반시설 및 산업시설에서 1초마다 여러 종류의 센서를 통하여 추출한 실시간 상태 정보 값을 활용하여 어느 시점에 발전소가 정상적으로 가동되고, 언제 비정상적으로 동작하였는지를 AI를 통하여 보다 정확히 판별해 내는 과제가 주어졌습니다.

  본 경진대회에서 주어진 과제를 해결하기 위해 저희 AI보안팀은 이미 관측된 몇 초(64초)간의 센서 데이터값을 입력으로 받아 미래(1초)의 센서 데이터를 예측하는 딥러닝 모델을 학습하였습니다. 이렇게 학습된 딥러닝 모델은 실제 테스트 데이터에 적용시켜 센서의 미래 예측 값을 추출해낼 수 있고, AI가 예측한 센서 데이터값과 실제로 계측된 데이터값의 차이 정도를 봄으로서 해당 시간에 AI의 예상대로 (즉, 정상적으로) 작동하는지 여부를 확인할 수 있었습니다. [그림 1]에서 나타난 것과 같이 만약 모델의 예측값(파란색 선)과 실제 계측된 값(녹색 선)의 차이가 클 경우 비정상적 상황으로, 차이가 크지 않을 경우 정상적으로 동작중이라고 판별하는 것입니다.

[그림 1] 시계열 이상치 예측 탐지 (1)

이같은 상황에서 활용될 AI 모델의 성능을 최적화하기 위하여 먼저 1) 전처리를 통해 학습데이터에서 불필요한 정보를 제거하였고, 2) 주어진 태스크에 보다 적합한 딥러닝 모델 및 파라미터를 선택하였으며, 마지막으로 3) 후처리를 고안하여 출력의 노이즈를 최소화하는 등의 노력을 하였습니다. 저희가 개발한 딥러닝 모델의 전체 소스 코드는 DACON 사이트 [2]를 통해 확인하실 수 있습니다. 이후의 글에서는 각 단계별로 어떠한 기법을 사용하여 최적화하였는지 보다 자세히 설명드리겠습니다.

Step 1. 학습데이터 전처리

데이터 전처리란 딥러닝 모델을 학습하기 전, 데이터셋을 해당 알고리즘에 적합한 데이터로 수정하는 과정을 말합니다. 딥러닝 모델의 목적에 따라 전처리 과정은 다양하게 변할 수 있으며, 이러한 과정을 통해서 딥러닝 모델 학습 시간을 단축하거나 예측 정확도의 성능을 향상시킬 수 있습니다. 본 경진대회에 참가하면서 AI보안팀에서 수행한 데이터 전처리는 크게 두 가지 입니다.

첫번째로 경진대회의 학습 데이터셋을 분석하던 중 제어시스템의 특징 값이 익명으로 표기되어 해당 특징 값의 의미를 전혀 파악할 수 없었습니다. 하지만, 일부 특징 값의 데이터가 모두 동일한 값으로 저장된 것을 확인하였고, 이러한 데이터는 딥러닝 학습 시간과 성능 개선에 지장을 줄 것으로 판단하여 해당 특징 값을 삭제하였습니다.

두번째로 모든 데이터셋 특징의 범위를 통일하는 과정을 수행하였습니다. 데이터 중 일부 데이터 값이 평균값과 비교했을 때 지나치게 크거나 작은 것을 확인하였습니다. 이처럼 편향된 데이터로 딥러닝 모델을 학습 시킬 경우 결과값이 한쪽으로 치우치는 경우가 발생할 수 있습니다. 이러한 문제점을 방지하기 위해 모든 데이터 값에 대하여 최소값 0, 최대값 1로 설정하여 0에서 1사이의 값의 범위로 조정하였습니다.

Step 2. 딥러닝 모델 및 파라미터 선택

딥러닝 모델 학습에 필요한 학습 데이터셋이 준비되었다면, 이후 단계는 딥러닝 모델을 구성하는 것입니다. 여러 딥러닝 모델들 중 RNN(Recurrent Neural Network)은 순서가 있는 시계열 데이터 처리에 특화된 모델이기 때문에 저희가 해결하고자 하는 문제에 적합하다고 생각하여 가장 먼저 RNN을 선택하였습니다. RNN은 이름에서도 볼 수 있듯이 동일한 뉴런이 순차적으로, 그리고 반복적으로(recurrent) 연결되어 레이어를 이루는 구조의 신경망입니다.

기본적인 RNN 모델을 적용해 보았을 때 낮은 딥러닝 모델 예측 정확도와 딥러닝 학습에 소요되는 시간이 많다는 문제점이 있어, 기본 RNN의 변형된 꼴인 Stacked GRU라는 모델로 수정, 딥러닝 학습의 제한 사항을 개선하였습니다. Stacked GRU는 아래 [그림 2]와 같이 GRU(Gated Recurrent Unit)라는 기본 뉴런 유닛을 적층한 구조로, 기본 RNN 모델보다 많은 입력 값을 사용하여 딥러닝 모델에 많은 정보를 담을 수 있어 기존의 단층 구조보다 효율적이라고 알려져 있습니다.

[그림 2] Stacked GRU의 기본 구조

이후 Stacked GRU 마지막에 Fully connected layer를 추가하여 딥러닝 분류 판별에 용이해지도록 수정하였습니다. 또한 반복적인 테스팅을 통해 본 경진대회에 보다 적합한 딥러닝 모델의 파라미터를 조정해 가면서 선택하였습니다.

Step 3. 이동평균 후처리

경진대회에서 주어진 상황은 어떠한 특정 시간 구간에서 외부의 공격이 일어나 그 시간 구간을 예측하는 것이었습니다. 공격은 특정 시구간에서만 일어나기 때문에, 판별 결과(정상/비정상) 값은 1초마다 자주 바뀌는 것이 아닌 시간 연속성을 가지고 있을 확률이 높습니다. 하지만, 딥러닝 모델을 활용하여 내린 정상/비정상 판별 값을 분석하던 도중 01010101… 의 패턴과 같이 1초마다 판별값이 바뀌는 구간을 발견하였습니다. 이것을 측정값에서 발생하는 오차로 보고 이 문제를 해결하기 위하여 이동평균(Moving average) 기반 후처리를 고안하였습니다.

이동평균이란 두 개 이상의 연속된 데이터가 있을때, 이를 주어진 시간 구간에 따라 평균화하는 방법으로 전반적인 변화값의 흐름을 파악하는 데에 사용됩니다. [그림 3]은 딥러닝 모델이 내린 예측 결과 값에 대한 이동평균의 적용 예제로서, 파란색 그래프는 시간에 따라서 정상/비정상을 예측한 값이며, 빨간색 그래프는 이 데이터를 이전 3초를 포함한 총 4초의 구간을 이동시키면서 평균낸 그래프입니다. 원래 예측값을 보면 6~9초까지, 그리고 11~12초 구간에서는 비정상이지만 10초에서만 0(정상 상태)로 판별된 것을 확인할 수 있는데, 이는 오류일 확률이 높습니다. 이것을 이동평균 후처리로 처리하였을 경우, [그림 3]에서 볼 수 있듯 데이터가 시간에 따라 고르게 분포됨을 확인할 수 있습니다.

[그림 3] 정상/비정상 판별값에 대한 이동평균 후처리

이와 같이 이동평균 후처리 방법을 적용하였을 때 정상/비정상 판별이 연속성을 가져 검출한 비정상 상태의 평균 지속시간이 증가됨을 확인하였으며, 후처리 적용 이후 예측 정확도 또한 2% 더 향상됨을 확인할 수 있었습니다.

결론

본 경진대회에서 저희 팀은 주어진 태스크에 맞게 딥러닝 모델을 학습하여 활용하고, 그 예측 정확도를 향상시키기 위하여 전처리 단계에서는 데이터셋을 가공하는 방법을, 후처리 방법에서는 주어진 태스크에 적합하게 딥러닝 모델의 결과 값을 보정하는 방법을 고안하였습니다. 한 달 남짓 주어진 경진대회 기간 동안 이러한 시도를 통해 경진대회에서 주어진 Baseline 모델보다 예측 정확도를 약 6% 향상시킬 수 있었습니다.

저희 팀이 사용한 특징 값 삭제/범위 조정 등의 정규화나 이동평균 기법은 일반적으로 활용되는 기법이지만, 데이터의 형식과 딥러닝 학습 목적에 따라 그 효과가 다양하게 바뀔 수 있습니다. 이 밖에도 하이퍼파라미터나 활성 함수값 변경 등의 최적화 방법이 있으며, 데이터 형식에 따른 방법을 적절히 사용하여 보다 높은 예측 정확도에 다다를 수 있다고 생각합니다.

글을 마치며

지금까지 저희 AI보안팀이 국가정보원과 국가보안기술연구소에서 공동 개최한 산업제어시스템 보안위협 탐지 AI 경진대회에 참가하면서 어떤 방식으로 문제를 해결하고자 하였으며, 어떠한 최적화 방식을 활용하여 성능을 향상시켰는지에 대하여 간단히 살펴보았습니다. 저희가 수행한 것처럼 실제 딥러닝 모델을 적극적으로 활용하기 위해서는 문제에 맞는 모델 선택 및 다양한 최적화 과정이 필요합니다. 이 글을 통해서 많은 분들이 딥러닝 뿐만 아니라 데이터 사이언스를 활용한 보안 문제에도 관심을 갖는 계기가 되었으면 좋겠습니다.

Reference
[1] Pavel Tiunov, Time Series Anomaly Detection Algorithms, https://blog.statsbot.co/
[2] DACON, 산업제어시스템 보안위협 탐지 AI 경진대회 코드 공유 – csrcai, https://dacon.io/competitions/official/235624/codeshare/1834?page=1&dtype=recent&ptype=pub

3 명이 이 글에 공감합니다.