기업 분석 사례 정리

[사례 분석] 이상치 탐지 기업 사례 분석 (시계열/어뷰징/핵)

에멜라 2024. 6. 21. 01:27

0. 개요

 

실시간 모니터링 업종

네트워크 침입 탐지 / 의료 탐지 / 이상 금융 거래 / 제조 결함 

 

외부 

 

 

 

 

 

 

1. 네이버 클라우드 - 시계열 이상치 탐지 (2023, Transformer)

(1) 시계열 이상탐지 개요

출처 : https://youtu.be/bg2e60IZ40Q?si=XmMWLRqxeuyTVjdI

 

시계열 이상치를 일반적으로 탐색하기 힘든 이유로는 크게 아래의 두 가지가 있습니다.

 

(1) 정상데이터 VS 비정상데이터 구분 어려움

(2) 정상데이터 VS 비정상데이터 불균형

 

먼저 첫번째로, 학습 이전에 비정상 데이터 자체를 정의하기 힘든 문제가 있습니다. 예를 들어 아래와 같은 시계열 그래프에서 추세에서 벗어난 모든 점들을 모두 마구잡이로 이상데이터로 취급할 수는 없습니다. 이 중에는 일반적으로 나타나는 데이터 편차가 있을 수도 있고, 또 일정 주기로 나타나는 패턴일 수도 있습니다. 따라서, 단순히 분류를 위해 이상치를 구분하여 라벨링하는 일은 관련 도메인 전문가라도 많은 시간과 노력을 기울여햐 하는 일인 셈이죠.

 

또한, 아무리 이상 데이터를 잘 구분해냈다고 해도 비정상이란 말 그대로 원본 시계열에서 매우 드물게 발생하는 일이므로, 정상 데이터에 비해 비정상 데이터는 매우 작은 데이터양을 가져 정상 vs 비정상 데이터 자체에 불균형이 발생합니다.

 

 

 

따라서 기존과 같이 지도학습법을 적용하면 위와 같은 두가지 이유 (데이터 라벨링의 어려움, 데이터 불균형)로 학습에 큰 어려움을 겪게 될 가능성이 크므로, 본 NHN cloud는 Anomaly detection을 정상 데이터만을 가지고도 학습이 가능한 Unsupervised Learning, 그 중에서도 정상 시계열의 패턴을 학습하는 Representation learning 방식으로 수행하고 있습니다.

 

 

 

 

Representation learning은, 정상데이터의 시계열 패턴을 학습하는 방식으로, Auto Encoder의 Denoizing 방식과 유사합니다. 정상 데이터로 강하게 학습된 Representation learning Model은, 일부 Anomaly data 가 포함되더라도 이를 정상적인 시계열 데이터와 유사하게 복구해버립니다. 즉 Denoizing을 하게 되는데, 이때, 비정상데이터를 넘겨줬음에도 정상데이터를 출력했으므로, 원본과 출력물의 차이 비교를 통해 시계열 내에 포함된 anomaly point 를 찾게 되는것입니다.

 

 

 

 

 

(2) 딥러닝 이상탐지 모델

시계열 이상치 분류에서는 일반적인 아래 3가지의 이상패턴을 정의합니다.

 

(1) Global Anomaly : 전역적인 범위 내에서, 특정 시점 값이 너무 과도하게 높거나 낮은 이상치.

(2) Trend Anomaly : 장기적인 패턴이나 방향에서 이상 추세를 가지는 이상치.

(3) Context Anomaly : 특정 상황이나 문맥 내에서 특이한 패턴을 가진 이상치.

 

그리고 이 세가지 패턴의 순간을 모델이 얼마나 잘 예측하는지가 이상탐지의 핵심입니다.

 

 

 

 

 

Anomaly Detection의 수행과정은 다음과 같습니다.

시계열 데이터를 모델에 입력하기 전 먼저, 데이터의 전처리가 필요합니다. 모델의 안정적인 학습을 위해 기존 시계열 데이터를 정규화를 통해, 변수를 0~1 사이 값, 분산을 1로 만들어 줍니다.

 

 

 

이후 딥러닝 학습을 통해, 정상패턴을 학습시켜 각 시계열 입력값이 주어졌을 때 이를 바탕으로 정상적인 시계열 값들을 출력해내는 복원모델을 생성할 수 있습니다.

 

 

 

마지막으로, 정상데이터와 비정상데이터의 차이를 바탕으로 Anomaly score를 계산하고, 자체 Anomaly 를 판별할 수 있는 Threshold 를 기준으로 이상값을 판별해내게 됩니다.

 

 

 

다음으로 모델 선정 과정입니다.

MLP / 1D-CNN / RNN 등이 있지만, 장기의존성, 병렬연산, 복잡패턴 학습이 가능하다는 점에서 Transformer 모델을 선정했습니다. 또한, 초반에는 포지셔널 인코딩으로 일반적으로 활용되는 Sinusoidal Positional Encoding을 활용했습니다.

 

 

 

 

 

마지막으로, 모델링 이후 시행착오와 해결과정입니다.

 

(1) 먼저 첫번째로, 시계열 데이터의 완벽한 정규화가 가능한가 입니다. 시계열 데이터는 시작과 끝이 없습니다. 즉 이 분포의 모수의 분포가 어떻게 이루어져 있는지 알 수 없습니다. 즉, 0~1 사이의 값, 분산이 1이 되는 모수값을 추정하기 힘든 문제가 발생합니다.

 

(2) 트랜스포머 모델은, 데이터의 선/후 순서 개념을 포지셔닝 인코딩에 의존합니다. 그러나 이러한 포지셔닝 인코딩도 현재는 단순히 주기성을 갖는 sin, cosin 만을 이용하는 Sinusoidal Positional Encoding을 이용하고 있습니다. 따라서, 그 시점에 대한 정보가 없으므로, 시간에 따른 이벤트에 대한 정보를 학습하기 힘듭니다.

 

(3) 개인/Task마다 anomaly에 대한 기준은 달라지기도 합니다. 예를들어 한 쪽은 어뷰징 탐지, 다른 쪽은 이상신호 탐지를 하고 있다면, 이 두 지표의 anomaly에 대한 기준은 서로 다를 것입니다. 즉 개인별 맞춤 임계값(Threshold)이 필요한 셈입니다.

 

 

 

해결과정은 아래와 같습니다.

(1) 바로 Adaptive Normalization 모델을 두고 따로 학습시키는 방법이네요. 몰랐는데 이런 모델도 있군요 (관련 링크) 아무튼 이렇게 되면, 기존에 Normalization 과정에서 보지 못했던 패턴에 대해서도 normalization이 잘 이루어진다고 하네요. 그래서 더 안정적인 학습이 가능해졌답니다.

 

 

 

 

(2) 두번째로 기존의 포지셔닝 인코딩 대신 Timestamp Positional Encoding을 활용했다고 하네요. 물론 이걸 그냥 인수값으로 넣었을리는 없고, 아마 주기성을 갖는 다른 Positional Encoding에 각각 대응시켜서 활용했을 듯 합니다.

 

 

 

 

 

(3) 마지막 임계값에 대해서는 정적/동적 방식을 나눠 접근했으나, 동적 Threshold를 찾아내는데 있어 정답을 찾고 있으나 아직 (23.08 시점) 까지는 완벽한 방법으로는 찾지 못햇다고 합니다.  

 

 


(3) 시계열 이상 탐지 모델 활용

시계열 이상치 모델을 만들었을 때, 단순히 이상 시점에 알림만 주기보다는 아래와 같은 기능을 추가적으로 제공한다고 합니다.

 

 

 

 

 

 

추가적으로 아래와 같은 NHN AppGuard 에서 제공하는 어뷰징 탐지 등의 서비스에도 동일한 모델이 활용되는지는 모르겠으나, 이와같은 서비스들이 실제로 다양한 목적으로 딥려닝 모델들이 활용되는 것으로 보입니다.

 

 

 

 

 

 

 


 

 

 

 

 

2. NC 소프트 - 어뷰징 이상치 탐지 (2022, Snorkel)

(1) 어뷰징 이상탐지 개요

원문 출처 : https://about.ncsoft.com/news/article/game-data-analytics-20210122

 

본 글에서는 Fraud Detection (사기 행위 탐지) 라고 표현했지만, 일반적으로 온라인 게임 상에서 부당 이득을 취하는 행위(버그, 핵, 불법 프로그램, 타인 계정 도용 등을 포함) 를 통칭하여 어뷰징이라고 표현합니다.  그리고 이러한 부정행위를 하는 유저 자체를 탐지하여 제제할 만한 자동화된 프로세스가 필요합니다.

 

 

그러나 이러한 이창치 탐지 프로세스를 제작하는 것 역시 다음과 같은 문제를 안고 있습니다.

 

1. 이 역시 수많은 정상 유저 사이에 일부의 소수 어뷰징 유저가 포함되어 있습니다.

2. 어뷰징이라는 특수한 상황을 명확하게 라벨링하기 위해서는 전문화된 집단이 많은 시간과 노력을 투자해야 합니다.

3. 심지어, 탐지를 회피하는 어뷰징 집단에 혼동을 주기 위해 제제 정책을 가변적으로 시행하기도 해, 같은 어뷰징 데이터라도 분포가 상이해 모델 학습이 더욱 어려워질 수 있습니다.

 

따라서, 어뷰징을 분류하는 모델을 만들기에 앞서 질높은 라벨 데이터 확보 자체가 어려운 문제입니다.

 

 

(2) 이상 탐지 모델 선정 - Weak Supervision model을 활용한 라벨링

Weak supervision 분야는, 대규모 학습 데이터 라벨링 분야 중 한 분야로, 데이터 내에서 일부만 라벨링(제한적인 정보) 만 주어져있거나, 일부 부정확한 소스(weak label), 또는 퀼리티 낮은 라벨을 입력받아 데이터 내 라벨링을 추정하는 것을 의미합니다. 이는 상대적으로 소수만의 데이터를 활용해, 값비싼 라벨을 추정하는 방식입니다.

 

Supervised vs semi-Supervised(=Weak supervised) vs Unsupervised learning

 

 

즉 NC 소프트의 이상치 탐지 전략은, 전문가들로부터 일부 라벨링된 데이터를 Weak supervision 모델로 추가 라벨을 생성한 이후, 늘어난 라벨 데이터를 바탕으로 정상유저/어뷰저를 구분하는 모델 학습, 일반 분류 모델 vs  Weak supervision를 활용해 학습한 분류 모델 성과를 비교하여  Weak supervision 모델의 활용성을 평가할 계획입니다.

 

 

 

 

 Weak supervision 모델로서 사용된 모델은 SNORKEL으로 아래와 같은 구조를 가지고 있습니다.

 

 

snorkel의 학습 구조

 

 

원본 논문의 삽화이므로 너무 디테일하게 살펴볼 필요는 없고, Unlabeled Data에 대해 Weak-supervision source에서 주어지는 라벨 추가정보를 바탕으로 라벨을 추정(생성)해서 붙여준다고 생각하면 되겠습니다.

 

Snorkel 내부에서 Weak-supervision source에 대해 External Knowledge Bases (KBs), Patterns & Dictionaries, Domain Heuristics에서 얻은 정보를 직접 젹용, 즉 Labeling function을 기준으로 Unlabeled Data 를 평가하게 되고, 이를 바탕으로 Unlabeled Data의 치트 사용 여부를 자동으로 라벨링하게 됩니다.

 

따라서, Snorkel을 활용한 어뷰징 탐지 모델 학습 과정을 다시 정리해보면,

 

일부 유저에 대해서만 라벨링되어있는 weak-supervised data 를 snorkel 모델에 입력하면, 전문가가 지정해준 규칙과, 일부 마킹된 데이터를 활용하여 모델이 unlabeled 된 전 데이터에 대한 라벨 추정값을 내보내주게 되고, 이를 바탕으로 정상유저/어뷰징 유저를 탐지하는 모델(Descriminative Model) 을 더 잘 학습시키자는 것이 NC소프트의 전략입니다.

 

 

1. Label Function(LF) 작성법

Label function 은 일종의, 전문가가 작성한 '어뷰징 유저로 판단되는 근거 규칙'입니다.

 

 

snorkel 알고리즘 스팸 판별 분류의 LF 예시 - 해당 단어들이 포함될 경우 '스팸'일 확률 높음

 

 

예를들어, 'LF1 : 10분 내에 적 100명 처치'를 만족하는 경우 Pos(positive) 를 출력, 'LF2 : 치명타 확률 70% 이상'일 경우 Pos를 출력 등의 규칙을 걸어 놓으면, 입력된 unlabeled 데이터에 대해 Label function들의 출력 결과를 한번에 matrix 형식으로 출력받게 되는 것입니다. (ex . LF_matrix = [Pos, Pos, Pos, Neg, Neg, unk, Pos])

 

 

LF 정확성 검정, 종속성 판단

 

 

-

또한 위의 방식을 통해, 각 LF 판별식 끼리의 종속성과 정확성을 따로 평가해 볼 수 있으며, 이를 바탕으로 너무 상관성이 높은 LF 들은 없는지, 상대적으로 너무 성능이 떨어지는 LF는 없는지 평가해볼 수 있겠습니다.

 

 

2. Generative model, 생성모델 학습법

다음으로, 전문가가 설정한 여러  LF들의 결과를 가지고 snorkel은 어떻게 label을 추정하는 모델을 학습하는가입니다. 만약, 아래와 같은 LF 출력결과가 주어졌다고 생각해봅시다.

 

 

 

 

이때 LF의 판별 결과를 다수결(모두 가중치 1)로 투표하여 unlabel data의 라벨을 추정할 수도 있겠지만, 각 LF끼리 어떤 상관관계를 갖는지, 또 어떤 LF의 결과가 실제 추정에 특히 유효한지 알 수 없으므로, 이러한 정보가 반영될수록 당연히 더 좋습니다.

 

이 부분에 대해 디테일하게 이해한 것은 아니지만 (참고 논문, Appendix를 더 깊게 이해해야겠지만), 결국에는 weaked-supervised data 내에도 라벨이 달려있는 데이터가 있기 때문에, 이러한 노이즈가 덜 포함된(확실한 라벨이 달린) 데이터세트 위주로 개별 Label Function의 계수(각 LF의 판별 결과를 얼마나 신뢰할지)를 학습하게 됩니다.

 

 

3. 판별모델 학습

최종적으로 유저 행동 로그데이터를 바탕으로 label 또는 label 추정치를 예측하는 모델을 학습시켜, 일반적인 유저데이터에 대해 정상유저/어뷰저를 판별하는 Discriminative Model을 학습시키면 되겠습니다.

 

판별 모델은 일반적인 이분 판별모델 아무 모델을 사용해도 됩니다. 왜냐하면 weak-supervised dataset이 이미 snorkel을 거치면서 모두가 label 추정치를 갖게 되었기 때문입니다. 다만 주의사항으로,

 

(1) 실제 전문가가 labeling한 데이터와는 다르게, snorkel 을 거친 데이터들은 label을 추정 확률값으로 갖는다는 점,

(2) LF 판별에 사용된 변수와,  Discriminative Model 에 입력되는 feature 들은 서로 다르며 독립적이어야 한다는 점.

 

을 인지해 주시면 되겠습니다.

 

 

 

 

4. 평가

어쨌거나 분석 기법에 대한 공부이며, 성능 평가 측면에서는 원문보다 디테일하게 다룰 수 없다고 판단하여 간단하게만 짚고 넘어가겠습니다.

 

최종적인 목표는, 기존의 전문가에 의해서만 마킹된 데이터를 사용한 정상유저/어뷰징 유저 분류보다, snorkel을 거친 데이터셋을 활용했을때 분류가 더 잘 이루어지는가를 증명하는 것입니다. 이에 대한 테스트 방식은 아래와 같습니다.

 

 

 

 

 

 

위와 같이, 두 모델에 의해 분류된 전체 어뷰징 예측 고객으로부터 14%는 snorkel 을 활용한 모델에서만 예측되었고, 이중 76%의 유저(14% 중 76%)는 실제 부정 사용자라 판별할 만한 충분한 이상태깅을 가지고 있었던 것으로 판별되었다고 합니다.

 

또한 최종적인 정답 test data (물론 완벽하게 정확한 답지는 아닌) 에 대한 성능 역시 F-1 score 0.084 향상의 효과를 얻을 수 있었다고 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ 논문 

 

anomaly transformer

 

 

 

 

 

3 라이엇 사례

 

 

 

정리. - 당장 적용가능, - 오래 연구 필요 + 추가적인 연구경력, 논문 필요.