KR20200071646A - 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법 - Google Patents

이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법 Download PDF

Info

Publication number
KR20200071646A
KR20200071646A KR1020190062351A KR20190062351A KR20200071646A KR 20200071646 A KR20200071646 A KR 20200071646A KR 1020190062351 A KR1020190062351 A KR 1020190062351A KR 20190062351 A KR20190062351 A KR 20190062351A KR 20200071646 A KR20200071646 A KR 20200071646A
Authority
KR
South Korea
Prior art keywords
column
log information
anomaly
type
columns
Prior art date
Application number
KR1020190062351A
Other languages
English (en)
Inventor
김장현
박슬아
Original Assignee
넷마블 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 넷마블 주식회사 filed Critical 넷마블 주식회사
Priority to KR1020190062351A priority Critical patent/KR20200071646A/ko
Publication of KR20200071646A publication Critical patent/KR20200071646A/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/75Enforcing rules, e.g. detecting foul play or generating lists of cheating players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5586Details of game data or player data management for enforcing rights or rules, e.g. to prevent foul play

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Debugging And Monitoring (AREA)

Abstract

탐지 장치가 개시된다. 일 실시예는 로그(log) 정보를 전처리하고, 상기 전처리된 로그 정보를 체크(check)하며, 상기 전처리된 로그 정보의 하나 이상의 컬럼(column)의 제1 이상(anomaly) 스코어를 산출하고, 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트(set) 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하고, 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하고, 상기 체크 결과, 상기 산출된 제1 anomaly 스코어, 상기 산출된 제2 anomaly 스코어, 및 상기 산출된 제 3 anomaly 스코어 중 적어도 하나를 기초로 상기 로그 정보에 anomaly가 있는지 여부를 결정한다.

Description

이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법{DETECTION APPARATUS FOR DETECTING ANOMALY LOG AND OPERATING METHOD OF SAME, AND TRAINING APPARATUS AND OPERATING METHOD OF SAME}
아래 실시예들은 이상 로그 탐지와 이를 가능하게 하는 트레이닝에 관한 것이다.
기존에는 로그를 기반으로 시스템의 이상 또는 결함을 발견하거나 문제가 있는 게임 계정 등을 검출한다.
관련 선행기술로 한국공개특허공보 제10-2012-0094671호(발명의 명칭: 온라인 게임 서비스에 있어서의 불량 유저 검출 시스템 및 그 방법, 출원인: 주식회사 엔씨소프트)가 있다. 해당 공개특허공보에는 온라인 게임을 비정상적으로 이용하는 불량 유저를 검출하는 시스템이 개시된다. 공개특허공보의 시스템은 조사 대상 캐릭터가 접속한 게임 클라이언트로 조사 대상 캐릭터의 특정 행동(예를 들어, 아이템 습득, 공격, 포션류 사용 등)을 일정 시간 동안 제약시키는 행동제약명령을 전송하고, 이 시간 동안 조사 대상 캐릭터가 제약된 행동을 하였는지를 조사할 수 있다. 만약, 정상적인 게임 클라이언트를 통해 게임이 이루어진다면 조사 대상 캐릭터는 제약된 행동을 하지 못한다. 하지만, 조사 대상 캐릭터가 로봇 프로그램에 의해 조작되는 것이라면 행동제약명령을 무시하고 제약된 행동을 계속 수행할 수 있다. 따라서, 공개특허공보의 시스템은 행동제약명령을 전송한 후 일정 시간 동안 조사 대상 캐릭터가 제약된 행동을 수행 하였는지 여부를 조사하면 조사 대상 캐릭터를 조작한 것이 로봇 프로그램인지의 여부를 판단할 수 있다.
일 측에 따른 탐지 장치의 동작 방법은 로그(log) 정보를 전처리하는 단계; 상기 전처리된 로그 정보를 체크(check)하는 단계; 상기 전처리된 로그 정보의 하나 이상의 컬럼(column)의 제1 이상(anomaly) 스코어를 산출하는 단계; 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트(set) 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하는 단계; 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하는 단계; 및 상기 체크 결과, 상기 산출된 제1 anomaly 스코어, 상기 산출된 제2 anomaly 스코어, 및 상기 산출된 제 3 anomaly 스코어 중 적어도 하나를 기초로 상기 로그 정보에 anomaly가 있는지 여부를 결정하는 단계를 포함한다.
상기 탐지 장치의 동작 방법은 상기 로그 정보의 컬럼들 각각의 타입을 식별하는 단계를 더 포함할 수 있다.
상기 식별하는 단계는 상기 로그 정보의 컬럼들 각각이 수치 타입 또는 문자 타입에 해당하는지 확인하는 단계; 및 상기 로그 정보의 컬럼들 각각이 범주 타입 또는 비범주 타입에 해당하는지 확인하는 단계를 포함할 수 있다.
상기 수치 타입은 컬럼의 성분들이 숫자 형태인 타입을 포함할 수 있고, 상기 문자 타입은 컬럼의 성분들이 문자 형태인 타입을 포함할 수 있으며, 상기 범주 타입은 컬럼의 성분들의 개수가 유한성이 있는 타입을 포함할 수 있고, 상기 비범주 타입은 컬럼의 성분들의 개수가 무한성이 있는 타입을 포함할 수 있다.
상기 체크하는 단계는 상기 전처리된 로그 정보의 하나 이상의 컬럼의 성분들 중 null 값의 비율이 임계 비율을 초과하는지 여부를 체크하는 단계; 상기 전처리된 로그 정보의 컬럼들 중 일정 길이를 갖는 것으로 인식한 컬럼에 속한 성분들 각각의 길이가 상기 일정 길이와 다른 지 여부를 체크하는 단계; 및 상기 전처리된 로그 정보의 컬럼들 중 특정 타입에 해당하는 하나 이상의 컬럼의 인코딩 결과가 미리 생성된 사전(dictionary) 내에 있는지 여부를 체크하는 단계를 포함할 수 있다.
상기 제1 anomaly 스코어를 산출하는 단계는 상기 제1 anomaly 스코어를 제1 모델을 이용하여 산출하는 단계를 포함할 수 있다.
상기 제2 anomaly 스코어를 산출하는 단계는 제2 모델을 이용하여 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트의 상기 제2 anomaly 스코어를 산출하는 단계를 포함할 수 있다.
상기 제3 anomaly 스코어를 산출하는 단계는 상기 전처리된 로그 정보의 컬럼 세트의 제1 시계열 데이터를 제3 모델에 입력하여 상기 제1 시계열 데이터의 이후 데이터를 예측하는 단계; 및 상기 예측된 이후 데이터를 기반으로 상기 컬럼 세트의 제2 시계열 데이터에 대한 상기 제3 anomaly 스코어를 산출하는 단계를 포함할 수 있다. 여기서, 상기 제2 시계열 데이터는 상기 제1 시계열 데이터의 시간적으로 다음 데이터에 해당할 수 있다.
일 측에 따른 탐지 장치의 동작 방법은 로그 정보의 컬럼들 각각의 타입을 식별하는 단계; 상기 컬럼들 각각의 타입에 해당하는 전처리를 상기 컬럼들 각각에 수행하는 단계; 하나 이상의 룰에 따라 상기 전처리된 로그 정보를 체크하는 단계; 상기 전처리된 로그 정보에 하나 이상의 이상 검출을 수행하는 단계; 및 상기 체크 결과 및 이상 검출 결과를 기초로 상기 로그 정보가 비정상인지 여부를 결정하는 단계를 포함한다.
상기 식별하는 단계는 상기 로그 정보의 컬럼들 각각이 수치 타입 또는 문자 타입에 해당하는지 확인하는 단계; 및 상기 로그 정보의 컬럼들 각각이 범주 타입 또는 비범주 타입에 해당하는지 확인하는 단계를 포함할 수 있다.
상기 수치 타입은 컬럼의 성분들이 숫자 형태인 타입을 포함할 수 있고, 상기 문자 타입은 컬럼의 성분들이 문자 형태인 타입을 포함할 수 있으며, 상기 범주 타입은 컬럼의 성분들의 개수가 유한성이 있는 타입을 포함할 수 있고, 상기 비범주 타입은 컬럼의 성분들의 개수가 무한성이 있는 타입을 포함할 수 있다.
상기 체크하는 단계는 상기 전처리된 로그 정보의 하나 이상의 컬럼의 성분들 중 null 값의 비율이 미리 정해진 비율을 초과하는지 여부를 체크하는 단계; 상기 전처리된 로그 정보의 컬럼들 중 일정 길이를 갖는다고 인식하고 있는 컬럼에 속한 성분들 각각의 길이가 상기 일정 길이와 다른 지 여부를 체크하는 단계; 및 특정 타입으로 분류된 하나 이상의 컬럼의 인코딩 결과가 미리 결정된 사전(dictionary) 내에 있는지 여부를 체크하는 단계를 포함할 수 있다.
상기 이상 검출을 수행하는 단계는 상기 전처리된 로그 정보의 하나 이상의 컬럼의 제1 anomaly 스코어를 산출하는 단계; 상기 전처리된 로그 정보의 하나 이상의 제1 컬럼 세트 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하는 단계; 및 상기 전처리된 로그 정보의 하나 이상의 제2 컬럼 세트에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하는 단계를 포함할 수 있다.
상기 제1 anomaly 스코어를 산출하는 단계는 상기 제1 anomaly 스코어를 제1 모델을 이용하여 산출하는 단계를 포함할 수 있다.
상기 제2 anomaly 스코어를 산출하는 단계는 제2 모델 및 상기 제1 컬럼 세트를 이용하여 상기 제2 anomaly 스코어를 산출하는 단계를 포함할 수 있다.
상기 제3 anomaly 스코어를 산출하는 단계는 상기 제2 컬럼 세트의 제1 시계열 데이터를 제3 모델에 입력하여 상기 제1 시계열 데이터의 이후 데이터를 예측하는 단계; 및 상기 예측된 이후 데이터를 기반으로 상기 제2 컬럼 세트의 제2 시계열 데이터에 대한 상기 제3 anomaly 스코어를 산출하는 단계 포함할 수 있다. 여기서, 상기 제2 시계열 데이터는 상기 제1 시계열 데이터의 시간적으로 다음 데이터에 해당할 수 있다.
일 측에 따른 트레이닝 장치의 동작 방법은 로그 정보를 전처리하는 단계; 상기 전처리된 로그 정보를 기초로 탐지 장치에 의해 사용되는 기준 정보를 결정하는 단계; 상기 전처리된 로그 정보의 하나 이상의 컬럼(column)의 제1 이상(anomaly) 스코어를 산출하기 위한 제1 모델을 트레이닝 시키는 단계; 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트(set) 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하기 위한 제2 모델을 트레이닝 시키는 단계; 및 상기 전처리된 로그 정보의 하나 이상의 컬럼 세트에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하기 위한 제3 모델을 트레이닝 시키는 단계를 포함한다.
상기 트레이닝 장치의 동작 방법은 상기 로그 정보의 컬럼들 각각의 타입을 식별하는 단계를 더 포함할 수 있다.
상기 식별하는 단계는 상기 로그 정보의 컬럼들 각각이 수치 타입 또는 문자 타입에 해당하는지 확인하는 단계; 및 상기 로그 정보의 컬럼들 각각이 범주 타입 또는 비범주 타입에 해당하는지 확인하는 단계를 포함할 수 있다.
상기 수치 타입은 컬럼의 성분들이 숫자 형태인 타입을 포함할 수 있고, 상기 문자 타입은 컬럼의 성분들이 문자 형태인 타입을 포함할 수 있으며, 상기 범주 타입은 컬럼의 성분들의 개수가 유한성이 있는 타입을 포함할 수 있고, 상기 비범주 타입은 컬럼의 성분들의 개수가 무한성이 있는 타입을 포함할 수 있다.
상기 기준 정보를 결정하는 단계는 상기 전처리된 로그 정보의 하나 이상의 컬럼의 성분들 중 null 값의 비율을 파악하고 파악된 비율을 기초로 임계 비율을 계산하는 단계; 상기 로그 정보의 컬럼들 중 특정 컬럼이 일정 길이를 갖는지 결정하고 상기 특정 컬럼이 일정 길이를 갖는 경우, 상기 특정 컬럼에 대한 정보 및 상기 특정 컬럼의 길이값을 저장하는 단계; 및 특정 타입에 해당하는 하나 이상의 컬럼의 성분들을 변환하고 변환된 성분들을 기초로 사전(dictionary)을 생성하는 단계를 포함할 수 있다.
일 측에 따른 시스템은 제1 로그 정보를 전처리하고, 상기 전처리된 제1 로그 정보를 체크(check)하며, 상기 전처리된 제1 로그 정보의 하나 이상의 컬럼(column)의 제1 이상(anomaly) 스코어를 산출하고, 상기 전처리된 제1 로그 정보의 하나 이상의 컬럼 세트(set) 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하며, 상기 전처리된 제1 로그 정보의 하나 이상의 컬럼 세트에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하고, 상기 체크 결과, 상기 산출된 제1 anomaly 스코어, 상기 산출된 제2 anomaly 스코어, 및 상기 산출된 제 3 anomaly 스코어 중 적어도 하나를 기초로 상기 제1 로그 정보에 anomaly가 있는지 여부를 결정하는 탐지 장치; 및 트레이닝을 위한 제2 로그 정보를 전처리하고 상기 전처리된 제2 로그 정보를 기초로 상기 탐지 장치에 의해 사용되는 기준 정보를 결정하며, 상기 탐지 장치에 의해 사용되는 복수의 모델들을 트레이닝하는 트레이닝 장치를 포함한다.
실시예들은 로그 퀄리티 모니터링 고도화 및 자동화가 가능해질 수 있고, 로그 퀄리티가 향상될 수 있으며, 로그(또는 로그 퀄리티)의 오염 상황에 대한 선제적 대응이 가능할 수 있다.
도 1 내지 도 2는 일 실시예에 따른 트레이닝 장치를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 트레이닝 장치 내의 타입 식별기를 설명하기 위한 도면이다.
도 4 내지 도 5는 일 실시예에 따른 트레이닝 장치 내의 전처리기를 설명하기 위한 도면이다.
도 6 내지 도 7은 일 실시예에 따른 트레이닝 장치 내의 학습기를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 트레이닝 장치 내의 학습기가 필요에 따라 레이블 정보를 추가할 수 있는 것을 설명하기 위한 도면이다.
도 9 내지 도 11은 일 실시예에 따른 탐지 장치를 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 탐지 장치의 동작 방법의 일례를 설명하기 위한 순서도이다.
도 13은 일 실시예에 따른 탐지 장치의 동작 방법의 다른 일례를 설명하기 위한 순서도이다.
도 14는 일 실시예에 따른 트레이닝 장치의 동작 방법의 일례를 설명하기 위한 순서도이다.
도 15는 일 실시예에 따른 탐지 장치를 설명하기 위한 블록도이다.
도 16은 일 실시예에 따른 트레이닝 장치를 설명하기 위한 블록도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1 내지 도 2는 일 실시예에 따른 트레이닝 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 일 실시예에 따른 트레이닝 장치(100)는 타입 식별기(120), 전처리기(130), 및 학습기(140)를 포함한다. 구현에 따라, 트레이닝 장치(100)는 메타 저장소(meta repository)(150)를 더 포함할 수 있다.
트레이닝 장치(100)는 로그 정보(110)를 수신한다. 일례로, 트레이닝 장치(100)는 게임 클라이언트, 게임 서버, 및 게임 데이터베이스 중 적어도 하나로부터 로그 정보(110)를 수신할 수 있다.
로그 정보(110)의 일례가 도 2에 도시된다. 도 2에 도시된 예에서, 로그 정보(210)는 GameKey, CountryCD, PID, ADID, DeviceModel, PlayTime, 및 Level를 포함할 수 있다. GameKey는 게임에 부여된 식별자를 나타낼 수 있고, CountryCD는 게임 접속 국가를 나타낼 수 있으며, PID는 계정 식별자를 나타낼 수 있고, ADID는 게임 접속에 이용된 디바이스에 부여된 식별자를 나타낼 수 있고, DeviceModel은 게임 접속에 이용된 디바이스의 종류(또는 모델)를 나타낼 수 있고, PlayTime은 게임 유저가 게임을 플레이한 시간을 나타낼 수 있고, Level은 게임 캐릭터의 레벨을 나타낼 수 있다. 로그 정보(210)는 앞서 열거한 로그들 외에 다른 로그들을 더 포함할 수 있다.
로그 정보(210)는 예시적인 사항일 뿐, 트레이닝 장치(100)가 수신한 로그 정보(110)는 로그 정보(210)로 제한되지 않는다.
도 1로 돌아와서, 타입 식별기(120)는 로그 정보(110)의 컬럼들 각각의 타입을 식별할 수 있고, 로그 정보(110)의 컬럼들 각각의 타입을 메타 저장소(150)에 저장할 수 있다. 일례로, 타입 식별기(120)는 도 2에 도시된 로그 정보(210)의 GameKey 컬럼이 수치형 또는 문자형에 해당하는지 확인할 수 있고 GameKey 컬럼이 범주형 또는 비범주형에 해당하는지 확인할 수 있다. GameKey 컬럼이 수치형과 범주형에 해당하면, 타입 식별자(120)는 GameKey 컬럼이 수치형 및 범주형에 해당한다는 것을 메타 저장소(150)에 저장할 수 있다. 타입 식별기(120)에 대해선 도 3을 통해 후술한다.
전처리기(130)는 로그 정보(110)의 하나 이상의 컬럼을 임베딩(또는 인코딩)할 수 있다. 일례로, 전처리기(130)는 도 2에 도시된 로그 정보(210)의 DeviceModel 컬럼에 속한 원소들(달리 표현하면, 성분들) 각각을 임베딩할 수 있고, PlayTime 컬럼에 속한 성분들 각각을 임베딩할 수 있다. 전처리기(130)에 대해선 도 4 내지 도 5를 통해 후술한다.
학습기(140)는 후술할 탐지 장치 내의 검출기가 프리체크(precheck) 동작을 수행하는데 사용하는 기준 정보를 결정할 수 있다.
또한, 학습기(140)는 로그 정보(110)의 하나 이상의 컬럼의 내재적(inherent) 특성을 학습할 수 있고 로그 정보(110) 내의 특정 컬럼들 사이의 문맥적 특성을 학습할 수 있으며, 로그 정보(110) 내의 특정 컬럼들의 시계열 특성을 학습할 수 있다. 달리 표현하면, 학습기(140)는 내재적 측면에서 로그 정보(110)의 각 컬럼 별 값의 이상(anomaly)을 스코어링하는 IA(Inherent Anomaly) 모델, 문맥적 측면에서 각 row 별 값의 anomaly를 스코어링하는 CA(Contextual Anomaly) 모델, 및 시간적 측면에서 일정 기간에 걸친 row 간 anomaly를 스코어링하는 TA(Time-series Anomaly) 모델을 도출할 수 있다. 학습기(140)에 대해선 도 6 내지 도 7을 통해 설명한다.
도 3은 일 실시예에 따른 트레이닝 장치 내의 타입 식별기를 설명하기 위한 도면이다.
타입 식별기(120)에 대해 설명하기에 앞서, 로그 정보(110)의 컬럼의 타입에 대해 설명한다.
컬럼의 타입은 수치형 또는 문자형으로 구분될 수 있다. 일례로, 컬럼의 값에 따라 수치형 또는 문자형으로 구분될 수 있다. 컬럼의 값이 수치이면 해당 컬럼은 수치형에 해당할 수 있고, 컬럼의 값이 문자이거나 숫자와 문자의 조합이면 해당 컬럼은 문자형에 해당할 수 있다.
컬럼의 타입은 범주형 또는 비범주형으로 구분될 수 있다. 일례로, 컬럼의 원소의 유한성에 따라 범주형 또는 비범주형으로 구분될 수 있다. 컬럼의 원소의 개수가 유한하고 고정이면 해당 컬럼은 범주형에 해당할 수 있고, 컬럼의 원소의 개수가 무한하거나 가변적이면 해당 컬럼은 비범주형에 해당할 수 있다.
수치형/문자형과 범주형/비범주형에 따라 전처리, 학습, 및 검출 방식이 결정될 수 있다.
아래 표 1은 수치형/문자형과 범주형/비범주형의 구분 일례를 보여준다.
수치형 문자형
범주형 1. 값의 형태는 수치형2. 원소의 개수가 유한하고 고정적
(또는 인접 수치간 대소 관계가 성립하지 않는 경우)
1. 값의 형태는 문자열
2. 원소의 개수가 유한하고 고정적
(또는 값이 갖는 원소의 증가 가능성이 매우 제한적인 경우)
비범주형 1. 값의 형태는 수치형2. 원소의 개수가 무한하거나 가변적 1. 값의 형태는 문자열
2. 원소의 개수가 무한하거나 가변적
타입 식별기(120)는 로그 정보(110) 내의 컬럼들 각각이 수치형 또는 문자형에 해당하는지 확인할 수 있다. 일례로, 미리 구비된 참조 정보에서 컬럼의 타입이 수치형 또는 문자형으로 정의되어 있으면, 타입 식별기(120)는 참조 정보를 통해 로그 정보(110) 내의 컬럼이 수치형 또는 문자형에 해당하는지 확인할 수 있고, 컬럼의 타입이 정의되어 있지 않으면, 타입 식별기(120)는 해당 컬럼의 데이터를 파싱하여 해당 컬럼이 수치형 또는 문자형에 해당하는지 확인할 수 있다. GameKey 컬럼의 타입이 참조 정보에서 수치형으로 정의되어 있으면 타입 식별기(120)는 도 2에 도시된 로그 정보(210)의 Gamekey 컬럼의 타입이 수치형에 해당한다고 확인할 수 있다. 경우에 따라, GameKey 컬럼의 타입이 미리 정의되어 있지 않을 수 있다. 이 경우, 타입 식별기(120)는 도 2에 도시된 로그 정보(210)의 Gamekey 컬럼 내의 120, 111, 120 등을 파싱할 수 있다. 파싱된 120, 111, 120 등은 정수(integer)이므로, 타입 식별기(120)는 Gamekey 컬럼이 수치형에 해당한다고 확인할 수 있다.
타입 식별기(120)는 로그 정보(110) 내의 컬럼들 각각이 범주형 또는 비범주형에 해당하는지 확인할 수 있다. 일례로, 타입 식별기(120)는 컬럼들 각각의 유효 row를 카운팅할 수 있고, 컬럼들 각각의 distinct value를 카운팅할 수 있다. 여기서, 유효 row는 값이 있는 row를 나타낼 수 있고, distinct value는 컬럼에서 중복을 제거하였을 때 남게 되는 값들을 나타낼 수 있다. 타입 식별기(120)는 특정 컬럼의 유효 row가 100만개 이상으로 카운팅된 상황에서 distinct value가 10000건 미만(즉, 1% 미만)이면 해당 컬럼을 범주형으로 분류할 수 있고, distinct value가 10000건 이상(즉, 1% 이상)이면 해당 컬럼을 비범주형으로 분류할 수 있다. 타입 식별기(120)는 특정 컬럼의 유효 row가 100만개 미만으로 카운팅된 상황에서 distinct value 개수 및 유효 row 개수사이의 비율이 1% 미만이면 해당 컬럼을 범주형으로 분류할 수 있고, 해당 비율이 1% 이상이면 해당 컬럼을 비범주형으로 분류할 수 있다.
도 2에 도시된 예에서, 타입 식별기(120)는 로그 정보(210)의 CountryCD 컬럼에 속한 원소들(달리 표현하면, 성분들) 중 값이 있는 원소들의 개수를 10만개로 카운팅하고, distinct value의 개수를 25개로 카운팅할 수 있다. 여기서, CountryCD 컬럼에서 kr이 총 1만개 있다고 하여도, distinct value는 1개로 카운팅된다. CountryCD 컬럼의 distinct value 개수 및 유효 row 개수 사이의 비율이 1% 미만이므로, 타입 식별기(120)는 CountryCD 컬럼을 범주형으로 분류할 수 있다.
아래 표 2는 도 2에 도시된 로그 정보(210)의 컬럼들 각각의 타입을 보여준다.
수치형 문자형
범주형 GameKey CountryCD
비범주형 PlayTime, Level PID, ADID, DeviceModel
GameKey 컬럼에 속한 원소들 각각은 숫자이고 원소들의 개수는 유한성을 가질 수 있어, GameKey 컬럼은 수치형 및 범주형에 해당할 수 있고, CountryCD 컬럼에 속한 원소들 각각은 문자열이고 원소들의 개수는 유한성을 가질 수 있어, CountryCD 컬럼은 문자형 및 범주형에 해당할 수 있다.
PlayTime 컬럼 및 Level 컬럼 각각에 속한 원소들은 숫자이고 원소들의 개수는 무한성을 가질 수 있어, PlayTime 컬럼 및 Level 컬럼 각각은 수치형 및 비범주형에 해당할 수 있다. 도 2에 도시된 로그 정보(210)에서 PlayTime 컬럼에 속한 원소들은 time 1, time 2, time 3 등으로 표현되었으나 설명의 편의상 문자로 표현하였을 뿐 실제로는 숫자로 표현될 수 있다. PID 컬럼, ADID 컬럼, DeviceModel 컬럼 각각에 속한 원소들은 문자열(또는 숫자와 문자의 조합)이고 원소들의 개수는 무한성을 가질 수 있어, PID 컬럼, ADID 컬럼, DeviceModel 컬럼 각각은 문자형 및 비범주형에 해당할 수 있다.
타입 식별기(120)는 로그 정보(210)의 GameKey 컬럼은 수치형 및 범주형에 해당한다고 메타 저장소(150)에 저장할 수 있고 로그 정보(210)의 CountryCD 컬럼은 문자형 및 범주형에 해당한다고 메타 저장소(150)에 저장할 수 있다. 또한, 타입 식별기(120)는 로그 정보(210)의 PlayTime 컬럼 및 Level 컬럼 각각은 수치형 및 비범주형에 해당한다고 메타 저장소(150)에 저장할 수 있고, 로그 정보(210)의 PID 컬럼, ADID 컬럼, DeviceModel 컬럼 각각은 문자형 및 비범주형에 해당한다고 메타 저장소(150)에 저장할 수 있다.
도 4 내지 도 5는 일 실시예에 따른 트레이닝 장치 내의 전처리기를 설명하기 위한 도면이다.
도 4를 참조하면, 전처리기(130)는 로그 정보(110)를 전처리할 수 있다. 이 때, 전처리기(130)는 로그 정보(110)의 컬럼들 각각의 타입을 고려하여 각 컬럼에 속한 원소들 각각을 전처리할 수 있다.
<수치형 타입 컬럼에 대한 전처리>
전처리기(130)는 수치형 컬럼에 속한 원소들이 INTEGER 형식인 경우, 해당 원소들 각각을 전처리하지 않을 수 있다.
전처리기(130)는 수치형 컬럼에 속한 원소들이 FLOAT 형식인 경우, 해당 원소들 각각을 전처리하지 않을 수 있다.
전처리기(130)는 수치형 컬럼에 속한 원소들이 BOOLEAN 형식인 경우, False를 0으로 변환할 수 있고 True를 1로 변환할 수 있다.
전처리기(130)는 수치형 컬럼에 속한 원소들이 TIMESTAMP 형식인 경우, TIMESTAMP 형식을 epoch time 형식으로 변환할 수 있고 epoch time 형식을 INTEGER 형식으로 변환할 수 있다. 구현에 따라, 전처리기(130)는 epoch time 형식을 FLOAT 형식으로 변환할 수 있다.
일례로, 전처리기(130)는 도 2에 도시된 로그 정보(210)의 GameKey 컬럼 및 Level 컬럼 각각에 속한 원소들을 전처리하지 않고 그대로 사용할 수 있다. 다시 말해, GameKey 컬럼 및 Level 컬럼 각각에 속한 원소들은 INTEGER 형식이므로, GameKey 컬럼 및 Level 컬럼 각각에 속한 원소들을 그대로 사용할 수 있다. 로그 정보(210)에서 수치형 타입에 해당하는 PlayTime 컬럼에 속한 원소들이 TIMESTAMP 형식이면 전처리기(130)는 해당 원소들을 epoch time 형식으로 변환할 수 있고, epoch time 형식의 원소들을 INTEGER 형식으로 변환할 수 있다.
<문자형 타입 컬럼에 대한 전처리>
전처리기(130)는 문자형 및 범주형에 해당하는 컬럼 값들의 빈도 수로 dictionary를 구성할 수 있고, 각각의 값들을 one-hot encoding(달리 표현하면, one-hot 벡터)으로 변환할 수 있다.
전처리기(130)는 문자형 및 비범주형에 해당하는 컬럼에 속한 원소들 각각을 기준 코드(예를 들어, 아스키 코드(ascii code))로 변환할 수 있고, 각 원소의 기준 코드를 인코딩(예를 들어, one-hot encoding)할 수 있다. 일례로, 도 5에 도시된 예를 참조하면, 전처리기(130)는 문자형 및 비범주형에 해당하는 컬럼에 속한 원소의 값이 "ABC"라 할 때 A(510)를 아스키 코드 65(520)로 변환할 수 있고 아스키 코드 65(520)를 128 크기의 one-hot encoding(530)으로 변환할 수 있다. 마찬가지로, 전처리기(130)는 B에 대응되는 128 크기의 one-hot encoding을 도출할 수 있고 C에 대응되는 128 크기의 one-hot encoding을 도출할 수 있다. 전처리기(130)는 A(510)에 대응되는 one-hot encoding(530), B에 대응되는 one-hot encoding, 및 C에 대응되는 one-hot encoding을 결합하여 one-hot encoding array(달리 표현하면, one-hot encoding matrix)(540)를 형성할 수 있다. 전처리기(130)는 one-hot encoding array(540)를 npy 파일 등 학습 가능한 수준의 파일로 저장할 수 있다.
전처리된 로그 정보(410)는 학습기(140)에 의해 이용될 수 있다.
도 6 내지 도 8은 일 실시예에 따른 트레이닝 장치 내의 학습기를 설명하기 위한 도면이다.
도 6을 참조하면, 학습기(140)는 precheck rule 생성(610), 내재적 특성 학습(620), 문맥적 특성 학습(630), 및 시계열적 특성 학습(640)을 수행할 수 있다.
<precheck rule 생성(610)>
학습기(140)는 전처리된 로그 정보(410)(또는 로그 정보(110))의 컬럼 별 타입과 특성(예를 들어, 길이)을 확인할 수 있고 후술할 탐지 장치가 anomaly를 탐지하기 위한 precheck rule을 생성할 수 있으며, 생성된 precheck rule의 파라미터를 메타 저장소(150)에 저장할 수 있다. 생성된 precheck rule은, 예를 들어, length check rule, class check rule, 및 null check rule을 포함할 수 있으나, 이에 제한되지 않는다. 각 check rule 생성에 대해 자세히 설명한다.
<precheck rule 생성(610): length check rule 생성>
학습기(140)는 전처리된 로그 정보(410)(또는 로그 정보(110))의 특정 컬럼이 일정한 길이를 갖는 경우, 해당 컬럼의 명칭(즉, 컬럼명)을 key, 해당 컬럼의 길이를 value로 메타 저장소(150)에 저장할 수 있다. 여기서, 컬럼의 명칭 및 길이가 length check rule의 파라미터에 해당할 수 있다. 실시예에 있어서, 학습기(140)는 특정 컬럼에 속한 원소들 각각의 길이의 값을 확인할 수 있고, 해당 컬럼의 특정 길이의 값의 개수가 전체 개수 대비 일정 비율(예를 들어, 99.5%) 이상인 경우, 컬럼 명칭을 key, 해당 특정 길이를 value로 메타 저장소(150)에 저장할 수 있다. 일례로, CountryCD 컬럼에 속한 1000개의 원소들 중 999개의 길이가 n이고 1개의 길이가 n-1이라면, 길이 n의 개수 999와 전체 개수 1000 사이의 비율은 99.5% 이상이 되므로, 학습기(140)는 컬럼 명칭 CountryCD를 key 및 길이 n을 value를 메타 저장소(150)에 저장할 수 있다. 상술한 일정 비율은 예시적인 사항일 뿐, 일정 비율은 상술한 사항으로 제한되지 않고 변경될 수 있다.
<precheck rule 생성(610): class check rule 생성>
학습기(140)는 전처리된 로그 정보(410)(또는 로그 정보(110))의 특정 컬럼이 문자형과 범주형 타입에 해당하는 경우, 해당 컬럼의 빈도수 dictionary를 형성하여 메타 저장소(150)에 저장할 수 있다. 달리 표현하면, 학습기(140)는 특정 컬럼이 문자형과 범주형 타입에 해당하는 경우, 해당 컬럼의 사전(dictionary)을 형성하여 메타 저장소(150)에 저장할 수 있다. 즉, 학습기(140)는 문자형과 범주형 타입 컬럼 별 사전(dictionary)을 형성하여 메타 저장소(150)에 저장할 수 있다.
<precheck rule 생성(610): null check rule 생성>
학습기(140)는 전처리된 로그 정보(410)(또는 로그 정보(110))의 각 컬럼의 통계적으로 유의미한 null 값의 비중의 구간을 메타 저장소(150)에 저장할 수 있다. 여기서, 학습기(140)는 null 값의 비율이 모비율 분포를 따르는 것으로 가정하여 신뢰구간(예를 들어, 99% 신뢰 구간)을 산출할 수 있고 산출된 신뢰 구간을 통계적으로 유의미한 null 값의 비중의 구간으로 설정할 수 있다. 일례로, 학습기(140)는 컬럼 A에 속한 1000개의 원소들 중 null 값의 개수가 40% 차지하면, null 값의 비율 0.4의 99% 신뢰구간을 해당 컬럼의 통계적으로 유의미한 null 값의 비중의 구간으로 설정하여 메타 저장소(150)에 저장할 수 있고, 컬럼 B에 속한 1000개의 원소들 중 null 값의 개수가 20% 차지하면, null 값의 비율 0.2의 99% 신뢰 구간을 메타 저장소(150)에 저장할 수 있다.
<내재적 특성 학습(620)>
학습기(140)는 내재적 측면에서 각 컬럼 별 값의 anomaly를 스코어링하는 Inherent Anomaly(IA) 모델을 산출할 수 있다. 학습기(140)는 각 컬럼 별로 갖는 고유한 형태적 특성을 학습할 수 있고, 컬럼 별 타입에 따라 다른 형태의 모형을 학습할 수 있다.
<내재적 특성 학습(620): 문자형 및 비범주형 컬럼의 경우>
학습기(140)는 문자형 및 비범주형 컬럼의 원소들 각각의 아스키 코드를 one-hot encoding으로 변환한 후 생성되는 char sequence 패턴에 대한 매니폴드(manifold)를 학습할 수 있다.
학습기(140)는 생성 모델(generative model)을 학습할 수 있고, generative model의 입력과 generative model이 해당 입력을 기반으로 재생성(reconstruction)한 출력 사이의 차이(즉, reconstruction error)를 anomaly 스코어로 사용할 수 있으며, 해당 anomaly 스코어를 문자형 비범주형 컬럼에 대한 임계로 설정할 수 있다. 설정된 임계는 후술한 탐지 장치가 문자형 및 비범주형 컬럼의 anomaly를 탐지할 때 사용된다.
상술한 generative model은, 예를 들어, VAE(Variational Autoencoder) 또는 GAN(Generative Adversarial Networks)에 해당할 수 있으나, 이에 제한되지 않는다.
문자형 및 비범주형 컬럼이 n개 있는 경우, 학습기(140)는 n개의 문자형 및 비범주형 컬럼 각각에 대한 IA 모델을 학습할 수 있다.
학습기(140)는 학습된 하나 이상의 모델의 오브젝트(또는 파라미터)를 메타 저장소(150)에 저장할 수 있다.
<내재적 특성 학습(620): 수치형 및 비범주형 컬럼의 경우>
학습기(140)는 변수의 확률 분포를 학습하는 모델을 사용할 수 있다. 해당 모델은, 예를 들어, KDE(Kernel Density Estimation)에 해당할 수 있으나, 이에 제한되지 않는다.
학습기(140)는 모델에 입력한 데이터의 확률 밀도를 anomaly 스코어로 사용할 수 있고, 해당 anomaly 스코어를 수치형 및 비범주형 컬럼에 대한 임계로 설정할 수 있다. 설정된 임계는 후술한 탐지 장치가 수치형 비범주형 컬럼의 anomaly를 탐지할 때 사용된다. 도 7에 확률 밀도의 일례가 도시된다. 후술하겠지만, 탐지 장치가 수치형 비범주형 컬럼의 데이터의 확률 밀도가 낮은 확률 밀도 영역에 분포한다고 탐지하면, 해당 컬럼에 anomaly가 있다고 결정할 수 있다.
수치형 및 비범주형 컬럼이 m개 있는 경우, 학습기(140)는 m개의 수치형 및 비범주형 컬럼 각각에 대한 IA 모델을 학습할 수 있다.
학습기(140)는 학습된 하나 이상의 IA 모델의 오브젝트(또는 파라미터)를 메타 저장소(150)에 저장할 수 있다.
<문맥적 특성 학습(630)>
학습기(140)는 문맥적 측면에서 연관성 있는 컬럼들로 구성된 컬럼 세트의 각 row 값의 anomaly를 스코어링하는 Contextual Anomaly(CA) 모델을 산출할 수 있다. 달리 표현하면, 학습기(140)는 연관성 있는 컬럼들을 컬럼 세트로 구성할 수 있고 구성된 컬럼 세트 값의 분포 특성을 학습할 수 있다. 컬럼 세트는 전체 컬럼들에 해당하거나 사용자 정의에 따른 일부 컬럼들로 구성될 수 있다.
일례로, 전처리된 로그 정보(410)(또는 로그 정보(110))의 전체 컬럼들이 컬럼 세트A, 컬럼 세트B, 및 컬럼 세트 C로 구성된 경우, 학습기(140)는 각 컬럼 세트를 기초로 각 컬럼 세트에 해당하는 CA 모델(예를 들어, KDE, VAE 등)을 학습할 수 있다. 이 때, 학습기(140)는 문자형 및 비범주형 컬럼의 경우, 내재적 특성 학습에서 one-hot encoding array가 압축된 latent code를 이용할 수 있다. 학습기(140)는 각 컬럼 세트에 해당하는 CA 모델을 학습함으로써 각 컬럼 세트 내의 컨텍스트의 일반적인 분포 특성 관점에서의 anomaly 스코어를 산출할 수 있고, 해당 anomaly 스코어를 임계로 설정할 수 있다. 보다 구체적으로, 학습기(140)는 컬럼 세트A의 CA 모델을 학습함으로써 컬럼 세트 A에 관한 anomaly 스코어를 산출할 수 있고 해당 anomaly 스코어를 컬럼 세트 A에 관한 임계로 설정할 수 있으며, 컬럼 세트B의 CA 모델을 학습함으로써 컬럼 세트 B에 관한 anomaly 스코어를 산출할 수 있고 해당 anomaly 스코어를 컬럼 세트 B에 관한 임계로 설정할 수 있고, 컬럼 세트 C의 CA 모델을 학습함으로써 컬럼 세트 C에 관한 anomaly 스코어를 산출할 수 있고 해당 anomaly 스코어를 컬럼 세트 C에 관한 임계로 설정할 수 있다. 구현에 따라, 학습기(140)는 각 학습된 CA 모델의 reconstruction error를 각 컬럼 세트에 대한 임계로 결정할 수 있다.
학습기(140)는 학습된 하나 이상의 CA 모델의 오브젝트(또는 파라미터)를 메타 저장소(150)에 저장할 수 있다.
<시계열적 특성 학습(640)>
학습기(140)는 시간적 측면에서 일정 기간에 걸친 row 간 anomaly를 스코어링하는 Time-series Anomaly(TA) 모델을 산출할 수 있다. 달리 표현하면, 학습기(140)는 연관성 있는 컬럼 세트 값의 분포가 시간의 흐름에 따라 변화할 때 해당 트렌드의 주기성 또는 경향성을 학습할 수 있다.
일례로, 학습기(140)는 전처리된 로그 정보(410)(또는 로그 정보(110))의 전체 컬럼들을 컬럼 세트D 컬럼 세트E, 및 컬럼 세트 F로 구성할 수 있다. 이 때, 각 컬럼 세트 내의 컬럼들은 서로 연관성 있고 해당 컬럼들의 값의 분포가 시간의 흐름에 따라 변화할 수 있다. 학습기(140)는 각 컬럼 세트를 기초로 각 컬럼 세트에 해당하는 TA 모델(예를 들어, LSTM(Long short-term memory), SeqGAN(Sequence Generative Adversarial Networks), RNN(Recurrent Neural Networks)+VAE)을 학습할 수 있다. 이 때, 학습기(140)는 문자형 및 비범주형 컬럼의 경우, 내재적 특성 학습에서 one-hot encoding array가 압축된 latent code를 이용할 수 있다. 다시 말해, 학습기(140)는 latent code 기반의 수치 벡터로 다차원 분포의 순차적 변화 트렌드를 학습할 수 있다. 학습기(140)는 각 학습된 TA 모델을 기반으로 순차적으로 발생 가능한 다차원 밴드 곡선을 구성할 수 있고, 해당 밴드 곡선의 상한을 임계로 결정할 수 있다. 보다 구체적으로, 학습기(140)는 컬럼 세트 D의 학습된 TA 모델을 기반으로 다차원 밴드 곡선을 구성하여 해당 밴드 곡선의 상한을 컬럼 세트 D에 관한 임계로 결정할 수 있고, 컬럼 세트 E의 학습된 TA 모델을 기반으로 다차원 밴드 곡선을 구성하여 해당 밴드 곡선의 상한을 컬럼 세트E에 관한 임계로 결정할 수 있으며, 컬럼 세트 F의 학습된 TA 모델을 기반으로 다차원 밴드 곡선을 구성하여 해당 밴드 곡선의 상한을 컬럼 세트F에 관한 임계로 결정할 수 있다. 구현에 따라, 학습기(140)는 각 학습된 TA 모델의 reconstruction error를 각 컬럼 세트에 대한 임계로 결정할 수 있다.
학습기(140)는 학습된 하나 이상의 TA 모델의 오브젝트(또는 파라미터)를 메타 저장소(150)에 저장할 수 있다.
도 8은 일 실시예에 따른 트레이닝 장치 내의 학습기가 필요에 따라 레이블 정보를 추가할 수 있는 것을 설명하기 위한 도면이다.
학습기(140)는 알려진 비정상 케이스에 비정상 코드 또는 특정 분류 코드를 레이블(label)로 부여할 수 있다. 일례로, 학습기(140)는 아래 2개의 케이스에 Conditional 모델(예를 들어, CVAE(Conditional VAE))을 통해 레이블(label)을 부여할 수 있다.
<비정상 로그가 지속적으로 유입되는 케이스>
서비스 또는 시스템 여건 상 root cause가 해소되지 않을 수 있다. 또한, 특정 대량의 비정상 로그가 지속적으로 유입되면, 비정상 로그는 마치 정상인 것으로 학습될 수 있다. 학습기(140)는 알려진 일부 케이스들에 label 정보(810)와 CVAE를 통해 비정상 코드를 label로 부여할 수 있다.
<비정상 케이스를 세부적으로 분류하고 싶은 케이스>
비정상 케이스들에 대한 식별이 가능해질 수 있다. 또한, 비정상 케이스들이 복수의 유형으로 분류될 수 있다. 이 경우, 학습기(140)는 알려진 일부 케이스들에 label 정보(810)와 CVAE를 이용하여 특정 분류 코드를 label로 부여할 수 있다.
도 9 내지 도 11은 일 실시예에 따른 탐지 장치를 설명하기 위한 도면이다.
도 9를 참조하면, 탐지 장치(900)는 전처리기(920) 및 검출기(930)를 포함한다. 구현에 따라, 탐지 장치(900)는 결과 저장소(result repository)(940)를 더 포함할 수 있다.
탐지 장치(900)는 로그 정보(910)를 게임 클라이언트, 게임 서버, 및 게임 데이터베이스 중 적어도 하나로부터 수신할 수 있다. 탐지 장치(900)는 로그 정보(910)를 전처리하고 precheck 및 학습된 모델들을 이용하여 로그 정보(910)에 anomaly가 있는지 결정할 수 있다. 아래에서 상세히 설명한다.
<전처리기(920)의 전처리>
전처리기(920)는 로그 정보(910)의 컬럼들 각각의 타입을 식별할 수 있다. 일례로, 전처리기(920)는 로그 정보(910)의 컬럼들 각각의 명칭을 메타 저장소(150)에서 찾아 각 컬럼이 수치형 또는 문자형에 해당하는지를 확인할 수 있고 범주형 또는 비범주형에 해당하는지 확인할 수 있다.
전처리기(920)는 로그 정보(910)를 전처리할 수 있다. 일 실시예에 있어서, 전처리기(920)는 로그 정보(910)의 각 컬럼의 타입을 고려하여 각 컬럼을 전처리할 수 있다. 일례로, 전처리기(920)는 수치형 컬럼의 원소들이 INTEGER 형식 또는 FLOAT 형식이면 전처리 없이 원소들 그대로 사용할 수 있고, 수치형 컬럼의 원소들이 BOOLEAN 형식이면 False를 0으로 변환할 수 있고 True를 1로 변환할 수 있으며, 수치형 컬럼의 원소들이 TIMESTAMP 형식이면 TIMESTAMP 형식을 epoch time 형식으로 변환할 수 있고 epoch time 형식을 INTEGER 형식으로 변환할 수 있다. 구현에 따라, 전처리기(920)는 epoch time 형식을 FLOAT 형식으로 변환할 수 있다. 전처리기(920)는 문자형 및 범주형에 해당하는 컬럼 값들의 빈도 수로 dictionary 를 구성할 수 있고, 각각의 값들을 one-hot encoding(달리 표현하면, one-hot 벡터)으로 변환할 수 있다. 전처리기(920)는 문자형 및 비범주형 컬럼의 원소들 각각을 아스키 코드로 변환할 수 있고, 해당 원소들 각각의 아스키 코드를 one-hot encoding으로 변환할 수 있다.
전처리기(920)에 대한 설명은 트레이닝 장치(100)의 전처리기(120)에 대한 설명이 적용될 수 있으므로, 상세한 설명을 생략한다.
<검출기(930)의 anomaly 검출>
검출기(930)는 precheck rule과 학습된 모델들을 기반으로 로그 정보(910)의 anomaly를 탐지할 수 있다.
<검출기(930)의 anomaly 검출: precheck>
검출기(930)는 메타 저장소(150)에 저장된 precheck rule 파라미터들 및 컬럼 별 사전을 참조하여 anomaly 탐지를 수행할 수 있다.
검출기(930)는 로그 정보(910)(또는 전처리된 로그 정보(910-1))의 컬럼들 각각의 null 값의 개수를 확인할 수 있고, 확인된 개수의 비중(또는 비율)이 각 컬럼의 메타 저장소(150)에 저장된 각 컬럼의 신뢰구간(즉, 각 컬럼의 통계적으로 유의미한 null 값 비중의 구간)을 벗어나는지 체크할 수 있다. 여기서, 특정 컬럼의 null 값의 개수의 비중이 해당 특정 컬럼의 신뢰구간을 벗어나면 검출기(930)는 해당 특정 컬럼에 anomaly가 있다고 결정할 수 있다.
검출기(930)는 로그 정보(910)(또는 전처리된 로그 정보(910-1))의 특정 컬럼(예를 들어, 길이가 일정한 문자형 컬럼)의 원소들 각각의 길이와 메타 저장소(150)에 저장된 해당 컬럼에 대한 길이를 비교할 수 있다. 비교 결과, 해당 컬럼의 원소들 중 하나 이상의 길이가 메타 저장소(150)에 저장된 길이가 다르면 검출기(930)는 해당 컬럼에 anomaly가 있다고 결정할 수 있다.
검출기(930)는 로그 정보(910)(또는 전처리된 로그 정보(910-1))의 특정 타입 컬럼의 값이 메타 저장소(150)에 저장된 해당 컬럼의 dictionary에 임계 수치 이상의 빈도수로 존재하는지를 확인할 수 있다. 여기서, 해당 컬럼의 값이 메타 저장소에 저장된 dictionary에 존재하지 않거나 존재하지만 매우 희박한 개수로 존재한다면, 검출기는 해당 컬럼에 anomaly 가 있다고 결정할 수 있다.
검출기(930)는 precheck 결과(예를 들어, 컬럼에 anomaly가 있는지 여부 등)를 결과 저장소(940)에 저장할 수 있다.
실시예에 있어서, 검출기(930)는 범주형 타입의 컬럼에 precheck rule에 따라 anomaly가 있는지 여부를 결정할 수 있다.
<검출기(930)의 anomaly 검출: Inherent Anomaly 검출>
검출기(930)는 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 각 컬럼 별로 갖는 고유한 형태적 특성에 기반한 이상 탐지를 수행할 수 있다. 달리 표현하면, 검출기(930)는 학습된 IA 모델 및 전처리된 로그 정보(910-1)를 기초로 anomaly가 존재하는지 여부를 결정할 수 있다.
일 실시예에 있어서, 검출기(930)는 메타 저장소(150)에 저장된 generative model object를 generative model에 적용할 수 있고, 문자형 및 비범주형 컬럼의 데이터를 해당 generative model에 입력할 수 있으며, 해당 generative model에 의해 생성된 결과와 입력 사이의 차이를 anomaly 스코어로 결정할 수 있고, 해당 anomaly 스코어와 해당 컬럼에 대한 임계를 비교하여 anomaly가 있는지 여부를 결정할 수 있다. 여기서, 해당 컬럼에 대한 임계는 문자형 및 비범주형 컬럼의 내재적 특성 학습 단계에서 결정된 것으로, 검출기(930)에 의해 보정될 수 있다. 해당 anomaly 스코어가 임계보다 크면 검출기(930)는 anomaly가 있다고 결정할 수 있다. 일례로, 검출기(930)는 DeviceModel 컬럼의 데이터를 DeviceModel 컬럼에 대해 학습된 IA 모델에 입력할 수 있고 학습된 IA 모델에 의해 산출된 anomaly 스코어와 DeviceModel 컬럼에 대한 임계를 비교하여 DeviceModel 컬럼에 anomaly가 있는지 여부를 결정할 수 있다. 여기서, DeviceModel 컬럼에 대한 임계는 내재적 특성 학습 단계에서 결정된 것이다.
검출기(930)는 메타 저장소(150)에 저장된 KDE 기반 모델 object를 KDE 기반 모델에 적용할 수 있고, 수치형 및 비범주형 컬럼의 데이터를 해당 KDE 기반 모델에 입력하여 해당 데이터의 확률 밀도를 산출할 수 있으며, 산출된 확률 밀도를 anomaly 스코어로 결정할 수 있고, 해당 anomaly 스코어와 해당 컬럼에 대한 임계를 비교할 수 있다. 여기서, 해당 컬럼에 대한 임계는 수치형 및 비범주형 컬럼의 내재적 특성 학습 단계에서 결정된 것으로, 검출기(930)에 의해 보정될 수 있다. 수치형 및 비범주형 컬럼의 일부 데이터의 확률 밀도가 도 10에 도시된 예와 같이 영역들(1010 및 1020)에 위치한다면 검출기(930)는 anomaly가 있다고 결정할 수 있다. 일례로, 검출기(930)는 PlayTime 컬럼의 데이터를 PlayTime 컬럼에 대해 학습된 IA 모델에 입력할 수 있고 학습된 IA 모델에 의해 산출된 확률 밀도를 PlayTime 컬럼의 anomaly 스코어로 결정할 수 있으며, 해당 anomaly 스코어와 PlayTime 컬럼에 대한 임계를 비교하여 PlayTime 컬럼에 anomaly가 있는지 여부를 결정할 수 있다. 여기서, PlayTime 컬럼에 대한 임계는 내재적 특성 학습 단계에서 결정된 것이다.
검출기(930)는 Inherent Anomaly 검출 결과(예를 들어, 특정 컬럼에 anomaly가 있는지 여부, anomaly 스코어, anomaly로 판정된 로그에 존재한 각 컬럼의 값과 latent의 위치 중 하나 이상)를 결과 저장소(940)에 저장할 수 있다.
<검출기(930)의 anomaly 검출: Contextual Anomaly 검출>
검출기(930)는 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 연관성 있는 컬럼 세트 값의 분포 특성에 기반한 이상 탐지를 수행할 수 있다. 달리 표현하면, 검출기(930)는 전처리된 로그 정보(910-1)의 하나 이상의 컬럼 세트 및 학습된 CA 모델을 기초로 anomaly가 있는지 여부를 결정할 수 있다. 여기서, 컬럼 세트는 전체 컬럼 또는 사용자 정의에 따른 일부 컬럼으로 구성될 수 있다.
검출기(930)는 각 컬럼 세트 별로 학습된 모델(예를 들어, 학습된 KDE 또는 VAE)에 해당 컬럼 세트의 데이터를 입력할 수 있다. 일 실시예에 있어서, 전처리된 로그 정보(910-1)의 문자형 및 비범주형 타입 컬럼의 one-hot encoding(또는 one-hot encoding array)은 Inherent Anomaly 검출 단계에서 latent code로 압축될 수 있다. 검출기(930)는 문자형 및 비범주형 타입 컬럼의 경우, one-hot encoding 대신에 latent code를 학습된 모델에 입력할 수 있다.
검출기(930)는 각 컬럼 세트 별로 학습된 모델에 각 컬럼 세트의 데이터를 입력함으로써 각 컬럼 세트 별 anomaly 스코어를 산출할 수 있고, 각 컬럼 세트의 anomaly 스코어를 각 컬럼 세트에 관한 임계와 비교할 수 있다. 여기서, 각 컬럼 세트에 관한 임계는 문맥적 특성 학습 단계에서 결정된 것으로, 검출기(930)에 의해 보정될 수 있다. 검출기(930)는 각 컬럼 세트의 anomaly 스코어가 각 컬럼 세트의 임계보다 크면 anomaly가 있다고 결정할 수 있다. 일례로, 로그 정보(910)의 playtime 컬럼과 level 컬럼이 컬럼 세트로 묶인 경우, 검출기(930)는 해당 컬럼 세트에 대해 학습된 CA 모델에 해당 컬럼 세트의 수치 데이터를 입력하여 해당 컬럼 세트에 대한 anomaly 스코어를 산출할 수 있고, 해당 컬럼 세트에 관한 임계와 anomaly 스코어를 비교하여 해당 컬럼 세트에 anomaly가 있는지 여부를 결정할 수 있다. 즉, 검출기(930)는 playtime 로그와 level 로그 사이에 연관성이 적합한 수준을 벗어나면 anomaly가 있다고 판단할 수 있다.
검출기(930)는 Contextual Anomaly 검출 결과(예를 들어, 특정 컬럼에 anomaly가 있는지 여부, anomaly 스코어, anomaly로 판정된 로그에 존재한 각 컬럼의 값과 latent의 위치 중 하나 이상)를 결과 저장소(940)에 저장할 수 있다.
<검출기(930)의 anomaly 검출: Time-Series Anomaly 검출>
검출기(930)는 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 연관성 있는 컬럼 세트 값의 분포가 시간의 흐름에 따라 변화할 때 이러한 트렌드의 주기성 또는 경향성에 기반한 이상 탐지를 수행할 수 있다. 달리 표현하면, 검출기(930)는 전처리된 로그 정보(910-1)의 하나 이상의 컬럼 세트 및 학습된 TA 모델을 기초로 anomaly가 있는지 여부를 결정할 수 있다. 여기서, 컬럼 세트는 전체 컬럼 또는 사용자 정의에 따른 일부 컬럼으로 구성될 수 있다.
검출기(930)는 각 컬럼 세트 별로 학습된 모델(예를 들어, 학습된 LSTM, SeqGAN, 또는 RNN+VAE)에 각 컬럼 세트의 데이터를 입력할 수 있다. 일 실시예에 있어서, 전처리된 로그 정보(910-1)의 문자형 및 비범주형 타입 컬럼의 one-hot encoding(또는 one-hot encoding array)은 Inherent Anomaly 검출 단계에서 latent code로 압축될 수 있다. 검출기(930)는 문자형 및 비범주형 타입 컬럼의 경우, one-hot encoding 대신에 latent code를 학습된 모델에 입력할 수 있다.
검출기(930)는 각 컬럼 세트 별로 학습된 모델에 해당 컬럼 세트의 제1 시계열 데이터를 입력함으로써 제1 시계열 데이터의 이후 데이터를 예측할 수 있고, 예측된 이후 데이터 및 해당 컬럼 세트의 제2 시계열 데이터를 기초로 anomaly가 있는지 여부를 결정할 수 있다. 여기서, 제2 시계열 데이터는 제1 시계열 데이터의 시간적으로 다음인 데이터에 해당할 수 있다. 일례로, 검출기(930)는 학습된 모델을 이용하여 특정 컬럼 세트의 T1, T2, T3 데이터 이후에는 T4 데이터가 나올 것으로 예측할 수 있다. 실제로 T3 데이터 이후에 Ta 데이터가 학습된 모델로 입력될 수 있다. 이 때, 검출기(930)는 실제로 입력된 Ta 데이터가 예측된 T4 데이터가 가질 수 있는 범위를 벗어나면 anomaly가 있다고 결정할 수 있고, 실제로 입력된 Ta 데이터가 예측된 T4 데이터가 가질 수 있는 범위 내에 있으면 정상이라고 결정할 수 있다. 구현에 따라, 검출기(930)는 학습된 모델이 Ta 데이터를 입력받았을 때 계산한 reconstruction error를 anomaly 스코어로 결정할 수 있고 해당 anomaly 스코어가 시계열 특성 학습 단계에서 결정된 임계를 초과하는지 여부를 판단할 수 있으며, 해당 anomaly 스코어가 해당 임계를 초과하면 anomaly가 있다고 결정할 수 있다.
검출기(930)는 Time-Series Anomaly 검출 결과(예를 들어, 특정 컬럼에 anomaly가 있는지 여부, anomaly 스코어, anomaly로 판정된 로그에 존재한 각 컬럼의 값과 latent의 위치 중 하나 이상)를 결과 저장소(940)에 저장할 수 있다.
일 실시예에 따른 탐지 장치(900)는 시공간적(로그 정보(910)의 특정 column이 해당 row의 특정 위치라고 보았을 때) 구조와 의미 속에서 로그 값이 갖는 적합성 정도를 판단할 수 있어, 이상 로그 검출을 정확하게 수행할 수 있다. 다시 말해, 탐지 장치(900)는 로그의 특정 컬럼이 갖는 값 자체의 내재적 특성(예를 들어, 값의 분포, 형태 등), 로그 전체 내에서 컬럼간 연관성에 의해 형성되는 값의 문맥적 특성, 그러한 문맥적인 의미를 포괄하여 시계열 데이터로서 갖는 인과적 순차성 등을 종합적으로 판단하여 로그에 결함 또는 이상이 있는지 찾을 수 있다. 이에 따라, 로그 퀄리티 모니터링 고도화 및 자동화가 가능해질 수 있고, 로그 퀄리티가 향상될 수 있으며, 로그(또는 로그 퀄리티)의 오염 상황에 대한 선제적 대응이 가능할 수 있다.
도 1 내지 8을 통해 기술된 사항들은 도 9 내지 도 10을 통해 기술된 사항들에 적용될 수 있다.
도 11은 일 실시예에 따른 트레이닝 장치와 탐지 장치를 포함하는 시스템을 설명하기 위한 도면이다.
도 11을 참조하면, 일 실시예에 따른 시스템(1100)은 트레이닝 장치(100), 메타 저장소(150), 탐지 장치(900), 결과 저장소(940), 및 모니터링 장치(1110)를 포함한다.
Log Anomaly는 가장 상위 레벨인 서비스 레벨(Service Level)의 anomaly, 중간 레벨인 시스템 레벨(System Level)의 anomaly, 및 가장 하위 레벨인 로그 품질 레벨(Log Quality Level)의 anomaly를 포함할 수 있다. 여기서, 서비스 레벨의 anomaly는 로그를 발생시키는 서비스 운영 상의 이상 현상에 대한 부분이고, 시스템 레벨의 anomaly는 로그를 발생시키는 시스템의 내부적인 이상 동작에 대한 부분이며, 로그 품질 레벨의 anomaly는 로그 자체가 내포하고 있는 형식적인 측면에서의 이상 패턴에 대한 부분을 나타낸다.
일 실시예에 따른 시스템(1100)은 로그 품질 레벨의 anomaly를 탐지할 수 있다. 이에 제한되지 않고 일 실시예에 따른 시스템(1100)은 상위 레벨의 anomaly를 탐지할 수 있다.
도 1 내지 도 8을 통해 설명한 것과 같이, 트레이닝 장치(100)는 로그 타입 식별 및 기본적인 특성(예를 들어, 길이, 범주형 여부)을 파악할 수 있고, 로그 데이터 컬럼 별 인코딩(또는 임베딩)할 수 있으며, 로그 row 별 매트릭스를 구성할 수 있고, 로그 row 중 각 컬럼 값이 갖는 수치적/언어적/형태적 특성 및 분포를 학습할 수 있고, 여러 컬럼이 모여서 형성하는 컨텍스트 측면에서 로그 row matrix 자체의 구조 특성을 학습할 수 있으며, 특정 컨텍스트 내에 있는 데이터의 변동 추이 측면에서 로그 row 매트릭스의 시계열 특성을 학습할 수 있다. 상술한 학습은 비지도 학습에 해당할 수 있다.
트레이닝 장치(100)는 주기적으로 새로운 로그 정보를 수신할 수 있고, 새로운 로그 정보를 기초로 각 모델을 트레이닝할 수 있으며, precheck rule의 파라미터를 업데이트할 수 있다. 다시 말해, 각 모델의 object가 업데이트됨으로써 로그 퀄리티가 향상될 수 있고 탐지 장치(900)의 분석 결과물의 신뢰성이 증가할 수 있다.
도 9 내지 도 10을 통해 설명한 것과 같이, 탐지 장치(900)는 현재 수집되고 있는 로그의 적합성을 스코어로 산출할 수 있고 산출된 스코어를 기반으로 해당 로그의 anomaly가 있는지 여부를 결정할 수 있다. 탐지 장치(900)는 자신의 동작 결과를 결과 저장소(940)에 저장할 수 있다.
모니터링 장치(1110)는 결과 저장소(940)에 저장된 정보를 불러와 로그 품질을 모니터링할 수 있다. 일례로, 모니터링 장치(1110)는 시각화 툴을 보유하고 있고, anomaly로 판정된 로그에 존재한 각 컬럼의 값과 latent의 위치 등을 대시보드에 표시할 수 있다.
일 실시예에 따른 시스템(1100)은 생성 모델을 학습함으로써 특정 로그 도메인의 매니폴드 내에서 발생할 수 있는 다양한 로그들을 생성할 수 있고, 이로부터 anomaly가 유발되는 원인을 분석할 수 있다. 또한, 시스템(1100)은 생성 모델을 통해 특정 anomaly 로그의 정상적인 형태를 복원할 수 있다.
도 12는 일 실시예에 따른 탐지 장치의 동작 방법의 일례를 설명하기 위한 순서도이다.
도 12를 참조하면, 탐지 장치(900)는 로그 정보(910)를 전처리할 수 있다(1210).
탐지 장치(900)는 전처리된 로그 정보(910-1)를 체크할 수 있다(1220). 일례로, 탐지 장치(900)는 전처리된 로그 정보(910-1)의 하나 이상의 컬럼의 성분들 중 null 값의 비율이 임계 비율을 초과하는지 여부를 체크할 수 있고, 전처리된 로그 정보(910-1)의 컬럼들 중 일정 길이를 갖는 것으로 인식한 컬럼에 속한 성분들 각각의 길이가 해당 일정 길이와 다른 지 여부를 체크할 수 있으며, 전처리된 로그 정보(910-1)의 컬럼들 중 특정 타입에 해당하는 하나 이상의 컬럼의 인코딩 결과가 미리 생성된 사전(dictionary) 내에 있는지 여부를 체크할 수 있다.
탐지 장치(900)는 전처리된 로그 정보(910-1)의 하나 이상의 컬럼의 제1 anomaly 스코어를 산출할 수 있다(1230). 달리 표현하면, 탐지 장치(990)는 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 하나 이상의 컬럼의 고유 형태적 특성을 고려하여 해당 컬럼에 anomaly가 있는지 여부를 감지 또는 결정할 수 있다.
탐지 장치(900)는 전처리된 로그 정보(910-1)의 하나 이상의 컬럼 set 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출할 수 있다(1240). 달리 표현하면, 탐지 장치(990)는 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 하나 이상의 컬럼 set 내의 컬럼들 사이의 연관성에 anomaly가 있는지 여부를 감지 또는 결정할 수 있다.
탐지 장치(900)는 전처리된 로그 정보(910)의 하나 이상의 컬럼 set에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출할 수 있다(1250). 달리 표현하면, 탐지 장치(990)는 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 하나 이상의 컬럼 set에서 보여지는 변동 추이에 anomaly가 있는지 여부를 감지 또는 결정할 수 있다.
탐지 장치(900)는 단계(1220)의 체크 결과, 산출된 제1 anomaly 스코어, 산출된 제2 anomaly 스코어, 및 산출된 제 3 anomaly 스코어 중 적어도 하나를 기초로 로그 정보(910)에 anomaly가 있는지 여부를 결정할 수 있다(1260).
실시예에 있어서, 탐지 장치(900)는 로그 정보(910)의 컬럼들 각각의 타입을 식별할 수 있다. 일례로, 탐지 장치(900)는 로그 정보(910)의 컬럼들 각각이 수치 타입 또는 문자 타입에 해당하는지 확인할 수 있다. 여기서, 수치 타입은 컬럼의 성분들이 숫자 형태인 타입을 포함할 수 있고, 문자 타입은 컬럼의 성분들이 문자 형태인 타입을 포함할 수 있다. 또한, 탐지 장치(900)는 로그 정보(910)의 컬럼들 각각이 범주 타입 또는 비범주 타입에 해당하는지 확인할 수 있다. 여기서, 범주 타입은 컬럼의 성분들의 개수가 유한성이 있는 타입을 포함할 수 있고, 비범주 타입은 컬럼의 성분들의 개수가 무한성이 있는 타입을 포함할 수 있다.
도 1 내지 도 11을 통해 기술된 사항들은 도 12를 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
도 13은 일 실시예에 따른 탐지 장치의 동작 방법의 다른 일례를 설명하기 위한 순서도이다.
도 13을 참조하면, 탐지 장치(900)는 로그 정보(910)의 컬럼들 각각의 타입을 식별할 수 있다(1310).
탐지 장치(900)는 로그 정보(910)의 컬럼들 각각의 타입에 해당하는 전처리를 로그 정보(910)의 컬럼들 각각에 수행할 수 있다(1320).
탐지 장치(900)는 전처리된 로그 정보(910-1)를 체크할 수 있다(1330).
탐지 장치(900)는 전처리된 로그 정보(910-1)에 하나 이상의 이상 검출을 수행할 수 있다(1340).
탐지 장치(900)는 단계(1330)의 체크 결과 및 단계(1340)의 이상 검출 결과를 기초로 로그 정보(910)가 비정상인지 여부를 결정할 수 있다.
도 1 내지 도 12를 통해 기술된 사항들은 도 13을 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
도 14는 일 실시예에 따른 트레이닝 장치의 동작 방법의 일례를 설명하기 위한 순서도이다.
도 14를 참조하면, 트레이닝 장치(100)는 로그 정보(110)를 전처리할 수 있다(1410). 단계(1410)에는 전처리기(130) 동작에 대한 설명이 적용될 수 있으므로, 상세한 설명을 생략한다.
트레이닝 장치(100)는 전처리된 로그 정보(410)를 기초로 탐지 장치(900)에 의해 사용되는 기준 정보를 결정할 수 있다(1420). 여기서, 기준 정보는 상술한 precheck rule 파라미터 및 dictionary를 포함할 수 있다. 일례로, 트레이닝 장치(100)는 전처리된 로그 정보(410)의 하나 이상의 컬럼의 성분들 중 null 값의 비율을 파악할 수 있고 파악된 비율을 기초로 임계 비율을 계산할 수 있으며, 로그 정보(110)의 컬럼들 중 특정 컬럼이 일정 길이를 갖는지 결정하고 특정 컬럼이 일정 길이를 갖는 경우, 특정 컬럼에 대한 정보 및 특정 컬럼의 길이값을 저장할 수 있으며, 특정 타입에 해당하는 하나 이상의 컬럼의 성분들을 변환할 수 있고 변환된 성분들을 기초로 dictionary를 생성할 수 있다. 단계(1420)에는 상술한 precheck rule 생성에 대한 내용이 적용될 수 있으므로, 상세한 설명을 생략한다.
트레이닝 장치(100)는 전처리된 로그 정보(410)의 하나 이상의 컬럼의 제1 anomaly 스코어를 산출하기 위한 제1 모델을 트레이닝 시킬 수 있다(1430). 단계(1430)에는 상술한 내재적 특성 학습에 대한 내용이 적용될 수 있으므로, 상세한 설명을 생략한다.
트레이닝 장치(100)는 전처리된 로그 정보(410)의 하나 이상의 컬럼 set 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하기 위한 제2 모델을 트레이닝 시킬 수 있다(1440). 단계(1440)에는 상술한 문맥적 특성 학습에 대한 내용이 적용될 수 있으므로, 상세한 설명을 생략한다.
트레이닝 장치(100)는 전처리된 로그 정보(410)의 하나 이상의 컬럼 set에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하기 위한 제3 모델을 트레이닝 시킬 수 있다(1450). 단계(1450)에는 상술한 시계열적 특성 학습에 대한 내용이 적용될 수 있으므로, 상세한 설명을 생략한다.
도 15는 일 실시예에 따른 탐지 장치를 설명하기 위한 블록도이다.
도 15를 참조하면, 탐지 장치(900)는 메모리(1510) 및 컨트롤러(1520)를 포함한다.
메모리(1510)는 하나 이상의 명령어를 저장한다.
컨트롤러(1520)는 명령어를 실행함으로써 도 9를 통해 설명한 전처리 및 이상 검출을 수행할 수 있다. 일례로, 컨트롤러(1520)는 로그 정보(910)를 전처리할 수 있고, 전처리된 로그 정보(910-1)를 체크할 수 있으며, 전처리된 로그 정보(910-1)의 하나 이상의 컬럼의 제1 anomaly 스코어를 산출할 수 있고, 전처리된 로그 정보(910-1)의 하나 이상의 컬럼 set 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출할 수 있으며, 전처리된 로그 정보(910-1)의 하나 이상의 컬럼 set에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출할 수 있고, 체크 결과, 산출된 제1 anomaly 스코어, 산출된 제2 anomaly 스코어, 및 산출된 제 3 anomaly 스코어 중 적어도 하나를 기초로 로그 정보(910)에 anomaly가 있는지 여부를 결정할 수 있다. 달리 표현하면, 컨트롤러(1520)는 전처리된 로그 정보(910-1)를 체크할 수 있고, 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 하나 이상의 컬럼의 고유 형태적 특성을 고려하여 해당 컬럼에 anomaly가 있는지 여부를 감지 또는 결정할 수 있으며, 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 하나 이상의 컬럼 set 내의 컬럼들 사이의 연관성을 고려하여 해당 컬럼 set에 anomaly가 있는지 여부를 감지 또는 결정할 수 있고, 전처리된 로그 정보(910-1)(또는 로그 정보(910))의 하나 이상의 컬럼 set에서 보여지는 변동 추이를 고려하여 해당 컬럼 set에 anomaly가 있는지 여부를 감지 또는 결정할 수 있다.
도 1 내지 도 14를 통해 기술된 사항들은 도 15를 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
도 16은 일 실시예에 따른 트레이닝 장치를 설명하기 위한 블록도이다.
도 16을 참조하면, 트레이닝 장치(100)는 메모리(1610) 및 컨트롤러(1620)를 포함한다.
메모리(1610)는 하나 이상의 명령어를 저장한다.
컨트롤러(1620)는 명령어를 실행함으로써 도 1 내지 도 8를 통해 설명한 타입 식별, 전처리 및 학습을 수행할 수 있다. 일례로, 컨트롤러(1620)는 로그 정보(110)의 컬럼들 각각의 타입을 식별할 수 있고, 로그 정보(110)를 전처리할 수 있으며, 전처리된 로그 정보(410)를 기초로 탐지 장치(900)에 의해 사용되는 기준 정보를 결정할 수 있으고, 전처리된 로그 정보(410)의 하나 이상의 컬럼의 제1 anomaly 스코어를 산출하기 위한 제1 모델을 트레이닝 시킬 수 있고, 전처리된 로그 정보(410)의 하나 이상의 컬럼 set 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하기 위한 제2 모델을 트레이닝 시킬 수 있고, 전처리된 로그 정보(410)의 하나 이상의 컬럼 set에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하기 위한 제3 모델을 트레이닝 시킬 수 있다.
도 1 내지 도 15를 통해 기술된 사항들은 도 16을 통해 기술된 사항들에 적용될 수 있으므로, 상세한 설명을 생략한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.

Claims (1)

  1. 로그(log) 정보를 전처리하는 단계;
    상기 전처리된 로그 정보를 체크(check)하는 단계;
    상기 전처리된 로그 정보의 하나 이상의 컬럼(column)의 제1 이상(anomaly) 스코어를 산출하는 단계;
    상기 전처리된 로그 정보의 하나 이상의 컬럼 세트(set) 내의 컬럼들 사이의 연관성에 대한 제2 anomaly 스코어를 산출하는 단계;
    상기 전처리된 로그 정보의 하나 이상의 컬럼 세트에서 보여지는 변동 추이에 대한 제3 anomaly 스코어를 산출하는 단계; 및
    상기 체크 결과, 상기 산출된 제1 anomaly 스코어, 상기 산출된 제2 anomaly 스코어, 및 상기 산출된 제 3 anomaly 스코어 중 적어도 하나를 기초로 상기 로그 정보에 anomaly가 있는지 여부를 결정하는 단계
    를 포함하는,
    탐지 장치의 동작 방법.
KR1020190062351A 2019-05-28 2019-05-28 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법 KR20200071646A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190062351A KR20200071646A (ko) 2019-05-28 2019-05-28 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190062351A KR20200071646A (ko) 2019-05-28 2019-05-28 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020180158895A Division KR101985850B1 (ko) 2018-12-11 2018-12-11 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200071646A true KR20200071646A (ko) 2020-06-19

Family

ID=71137288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190062351A KR20200071646A (ko) 2019-05-28 2019-05-28 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법

Country Status (1)

Country Link
KR (1) KR20200071646A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102299660B1 (ko) * 2021-02-23 2021-09-08 국민대학교산학협력단 이상 탐지 방법 및 이상 탐지 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102299660B1 (ko) * 2021-02-23 2021-09-08 국민대학교산학협력단 이상 탐지 방법 및 이상 탐지 장치

Similar Documents

Publication Publication Date Title
Dam et al. A deep tree-based model for software defect prediction
CN105915555B (zh) 网络异常行为的检测方法及系统
Xin et al. Production machine learning pipelines: Empirical analysis and optimization opportunities
US20190065343A1 (en) Automated Log Analysis and Problem Solving Using Intelligent Operation and Deep Learning
Shar et al. Mining SQL injection and cross site scripting vulnerabilities using hybrid program analysis
US10504035B2 (en) Reasoning classification based on feature pertubation
US20160255109A1 (en) Detection method and apparatus
Wittkopp et al. A2log: Attentive augmented log anomaly detection
US20230085991A1 (en) Anomaly detection and filtering of time-series data
US11954202B2 (en) Deep learning based detection of malicious shell scripts
WO2022053163A1 (en) Distributed trace anomaly detection with self-attention based deep learning
Falessi et al. Preserving order of data when validating defect prediction models
KR101985850B1 (ko) 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법
KR20200071646A (ko) 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
Pombal et al. Understanding Unfairness in Fraud Detection through Model and Data Bias Interactions
Brunello et al. Monitors that learn from failures: Pairing STL and genetic programming
Li et al. Software defect prediction based on hybrid swarm intelligence and deep learning
CN115757062A (zh) 一种基于句嵌入以及Transformer-XL的日志异常检测方法
Vaz et al. On creation of synthetic samples from gans for fake news identification algorithms
Kapoor et al. An obfuscated attack detection approach for collaborative recommender systems
Kanamori et al. Fairness-aware decision tree editing based on mixed-integer linear optimization
Ouyang et al. Explainable ai enabled inspection of business process prediction models
CN111221704A (zh) 一种确定办公管理应用系统运行状态的方法及系统
Liu et al. Lopper: An efficient method for online log pattern mining based on hybrid clustering tree