KR20220169778A - 프로그램 코드 처리 장치 및 방법 - Google Patents

프로그램 코드 처리 장치 및 방법 Download PDF

Info

Publication number
KR20220169778A
KR20220169778A KR1020210080297A KR20210080297A KR20220169778A KR 20220169778 A KR20220169778 A KR 20220169778A KR 1020210080297 A KR1020210080297 A KR 1020210080297A KR 20210080297 A KR20210080297 A KR 20210080297A KR 20220169778 A KR20220169778 A KR 20220169778A
Authority
KR
South Korea
Prior art keywords
program code
graph
information
learning
network
Prior art date
Application number
KR1020210080297A
Other languages
English (en)
Other versions
KR102609946B1 (ko
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 KR1020210080297A priority Critical patent/KR102609946B1/ko
Publication of KR20220169778A publication Critical patent/KR20220169778A/ko
Application granted granted Critical
Publication of KR102609946B1 publication Critical patent/KR102609946B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)

Abstract

프로그램 코드 처리 장치 및 방법에 관한 것으로, 프로그램 코드 처리 장치는, 프로그램 코드의 동작에 따른 메모리 정보의 전처리를 수행하여 메모리 특성을 획득하는 메모리 정보 전처리부, 상기 프로그램 코드의 연산 정보를 추출하고 상기 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 제어 정보 전처리부, 상기 프로그램 코드 내에서 할당이 수행되는 위치에 대한 정보를 기반으로 관계 그래프를 획득하는 라인 정보 전처리부 및 상기 메모리 특성, 상기 제어 특성 및 상기 관계 그래프를 조합하여 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 결합 데이터 처리부를 포함할 수 있다.

Description

프로그램 코드 처리 장치 및 방법{APPRATUS AND METHOD FOR PROCESSING OF PROGRAM CODE}
프로그램 코드 처리 장치 및 방법에 관한 것이다.
프로그램 코드(program code)란 컴퓨터에 의해 실행되는 컴퓨터 프로그램을 구성하는 명령어의 모임으로 추상적 프로그램(알고리즘)을 해독 가능한 프로그래밍 언어로 기술한 것이다. 근자에는 정보 통신 기술의 발달이 다른 산업 분야에도 강하게 영향을 미치고 있으며, 이에 따라 소프트웨어 산업 역시 지속적으로 성장하고 있다. 이러한 소프트웨어 산업의 성장은, 프로그램 코딩 교육에 대한 강한 필요성을 요구하고 있다. 그러나, 학습자는 자신의 판단에 따라 다양한 방식으로 프로그램 코드를 작성할 수 있기 때문에 교수자가 이들이 작성한 다수의 프로그램 코드들을 용이하고 신속하게 분석 및 파악하는 것은 결코 쉬운 것은 아니며, 이런 이유로 학습자가 작성한 프로그램 코드를 기반으로 각각의 학습자들의 코딩 실력을 평가 및 분류하는 것도 어려울 수밖에 없다. 기존에도 학습자가 작성한 프로그램을 분석하기 위한 다양한 방법이 존재하였으나, 이들 방법들은 서로 상이한 프로그램 코드 간에 어떠한 변수가 동일 또는 유사한 역할을 변수인지 사전에 수동적으로 파악해야 하고, 필요에 따라 변수의 명칭을 변경해야 하는 문제점이 존재했다. 또한, 프로그램 코드 내의 조건문이나 명령문 내의 차이점들을 적절하게 반영하지 못하여, 프로그램 코드의 분류 및 분석 결과에 오류가 발생하는 경우도 많았다.
상대적으로 간단하면서도 우수한 성능으로 유사한 프로그램 코드에 대한 군집화 등의 처리를 수행할 수 있는 프로그램 코드 처리 장치 및 방법을 제공하는 것을 해결하고자 하는 과제로 한다.
상술한 과제를 해결하기 위하여 프로그램 코드 처리 장치 및 방법이 제공된다.
프로그램 코드 처리 장치는, 프로그램 코드의 실행에 따른 메모리 정보의 전처리를 수행하는 메모리 정보 전처리부, 상기 프로그램 코드의 연산 정보를 추출하고 상기 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 제어 정보 전처리부, 상기 프로그램 코드 내에서 할당이 수행되는 위치에 대한 정보를 기반으로 관계 그래프를 획득하는 관계 정보 전처리부 및 상기 메모리 정보의 전처리 수행 결과와, 상기 제어 특성과, 상기 관계 그래프를 기반으로 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 결합 데이터 처리부를 포함할 수 있다.
상기 결합 데이터 처리부는, 그래프 어텐션 네트워크(GATs Network: Graph Attention Networks), 그래프 오토 인코더(Graph Auto Encoder), 그래프 트리 콘볼루션 네트워크(GTC Network: Graph Tree Convolutional Neural Network), 그래프 트리 어텐션 네트워크(GTA Network: Graph Tree Attention Network), 그래프 트리 오토 인코더(GTAEs Network: Graph Tree Auto Encoders), 그래프 트리 리커시브 네트워크(GTR Network: Graph Tree Recursive Neural Network), 그래프 트리 리커시브 어텐션 네트워크(GTRAs Network: Graph Tree Recursive Attention Networks) 및 그래프 트리 리커시브 오토 인코더(GTRAEs : Graph Tree Recursive Auto Encoder) 중 적어도 하나의 학습 모델을 이용하여 상기 메모리 정보의 전처리 수행 결과와, 상기 제어 특성과, 상기 관계 그래프를 기반으로 학습을 수행함으로써 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하도록 마련된 것일 수 있다.
상기 메모리 정보 전처리부는, 상기 프로그램 코드의 변수에 대한 상태를 각각의 타입에 따라 획득하고, 이상 값 처리 및 노이즈 제거 중 적어도 하나를 수행하여 상기 메모리 특성을 획득할 수도 있다.
상기 제어 정보 전처리부는, 벡터화된 연산 정보에 대한 학습 처리를 수행하여 상기 제어 특성을 획득하는 것도 가능하다.
상기 관계 그래프는, 상기 프로그램 코드의 라인 중 할당 연산이 발생하는 할당 라인에서 구문을 파싱하고 파싱 결과를 기반으로 생성된 것일 수도 있다.
상기 관계 그래프는, 적어도 하나의 그래프 트리 노드를 갖는 그래프 트리를 포함할 수도 있다.
프로그램 코드 처리 장치는, 상기 적어도 하나의 임베딩 벡터를 기반으로 학습을 수행하는 학습 처리부를 더 포함하는 것도 가능하다.
상기 학습 처리부는 상기 적어도 하나의 임베딩 벡터를 기반으로 지도 학습, 비지도 학습 및 준지도 학습 중 적어도 하나를 수행할 수도 있다.
프로그램 코드 처리 방법은, 프로그램 코드의 실행에 따른 메모리 정보의 전처리를 수행하는 단계, 상기 프로그램 코드의 연산 정보를 추출하고 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 단계, 상기 프로그램 코드 내에서 할당이 수행되는 위치에 대한 정보를 기반으로 관계 그래프를 획득하는 단계 및 상기 메모리 정보에 대한 전처리 수행 결과, 상기 제어 특성 및 상기 관계 그래프를 기반으로 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 단계를 포함할 수 있다.
상기 메모리 정보에 대한 전처리 수행 결과, 상기 제어 특성 및 상기 관계 그래프를 조합하여 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 단계는, 그래프 어텐션 네트워크, 그래프 오토 인코더, 그래프 트리 콘볼루션 네트워크, 그래프 트리 어텐션 네트워크, 그래프 트리 오토 인코더, 그래프 트리 리커시브 네트워크, 그래프 트리 리커시브 어텐션 네트워크 및 그래프 트리 리커시브 오토 인코더 중 적어도 하나의 학습 모델을 이용하여 상기 메모리 특성, 상기 제어 특성 및 상기 관계 그래프를 이용하여 상기 메모리 정보에 대한 전처리 수행 결과, 상기 제어 특성 및 상기 관계 그래프에 대한 학습을 수행함으로써 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 단계를 포함할 수 있다.
상기 프로그램 코드의 동작에 따른 메모리 정보의 전처리를 수행하는 단계는, 상기 프로그램 코드의 변수에 대한 상태를 각각의 타입에 따라 획득하는 단계 및 상기 상태 정보에 대한 이상 값 처리 및 노이즈 제거 중 적어도 하나를 수행하여 상기 메모리 특성을 획득하는 단계를 포함할 수도 있다.
상기 프로그램 코드의 연산 정보를 추출하고 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 단계는, 벡터화된 연산 정보에 대한 학습 처리를 수행하여 상기 제어 특성을 획득하는 단계를 포함하는 것도 가능하다.
상기 관계 그래프는, 상기 프로그램 코드의 라인 중 할당 연산이 발생하는 할당 라인에서 구문을 파싱하고 파싱 결과를 기반으로 생성된 것일 수 있다.
상기 관계 그래프는, 적어도 하나의 그래프 트리 노드를 갖는 그래프 트리를 포함할 수 있다.
프로그램 코드 처리 방법은, 상기 적어도 하나의 임베딩 벡터를 기반으로 학습을 수행하는 단계를 더 포함할 수도 있다.
상기 적어도 하나의 임베딩 벡터를 기반으로 수행되는 학습은, 지도 학습, 비지도 학습 및 준지도 학습 중 적어도 하나를 포함할 수 있다.
상술한 프로그램 코드 처리 장치 및 방법에 의하면, 유사한 프로그램 코드를 상대적으로 간단하면서도 우수한 성능으로 분류 및 군집화하는 등의 처리를 수행할 수 있게 되는 효과를 얻을 수 잇다.
상술한 프로그램 코드 처리 장치 및 방법에 의하면, 프로그램 코드의 각 라인에 따라서 제어 정보, 메모리 정보 및 관계 정보까지 조합하여 학습 및 임베딩 처리를 수행할 수 있게 된다.
상술한 프로그램 코드 처리 장치 및 방법에 의하면, 서로 상이한 소스 코드 간에 동일 변수가 무언인지 매칭하여 명명하는 과정 없이도 학습을 수행할 수 있게 되는 장점도 존재한다.
상술한 프로그램 코드 처리 장치 및 방법에 의하면, 메모리 정보는 동일함에도 불구하고 소스 코드의 몇몇 라인의 순서가 변경에 따라 출력이 상이하게 되는 것을 방지할 수 있는 효과도 있다.
상술한 프로그램 코드 처리 장치 및 방법에 의하면, 그래프 트리 어텐션 아키텍처(Graph Tree Attention Architecture)를 기반으로 소스 코드 내에서 어느 라인이나 어느 변수가 학습에 중요한 역할을 하는지를 확인 및 파악할 수 있게 되는 장점도 존재한다.
도 1은 프로그램 코드 처리 장치의 일 실시예에 대한 블록도이다.
도 2는 데이터 임베딩부의 일 실시예에 대한 블록도이다.
도 3은 메모리 정보 전처리부의 일 실시예에 대한 블록도이다.
도 4는 제어 정보 전처리부의 일 실시예에 대한 블록도이다.
도 5는 학습 처리부의 일 실시예에 대한 블록도이다.
도 6은 프로그램 코드 처리 방법의 일 실시예에 대한 흐름도이다.
이하 명세서 전체에서 동일 참조 부호는 특별한 사정이 없는 한 동일 구성요소를 지칭한다. 이하에서 사용되는 '부'가 부가된 용어는, 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시예에 따라 하나의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 복수의 '부'가 하나의 물리적 또는 논리적 부품으로 구현되거나, 하나의 '부'가 복수의 물리적 또는 논리적 부품들로 구현되는 것도 가능하다.
명세서 전체에서 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 어떤 부분과 다른 부분에 따라서 물리적 연결을 의미할 수도 있고, 또는 전기적으로 연결된 것을 의미할 수도 있다. 또한, 어떤 부분이 다른 부분을 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 부분 이외의 또 다른 부분을 제외하는 것이 아니며, 설계자의 선택에 따라서 또 다른 부분을 더 포함할 수 있음을 의미한다.
제1이나 제2 등의 용어는 하나의 부분을 다른 부분으로부터 구별하기 위해 사용되는 것으로, 특별한 기재가 없는 이상 이들이 순차적인 표현을 의미하는 것은 아니다. 또한 단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함할 수 있다.
이하 도 1 내지 도 5를 참조하여 프로그램 코드 처리 장치의 일 실시예에 대해서 설명하도록 한다.
도 1은 프로그램 코드 처리 장치의 일 실시예에 대한 블록도이다.
도 1에 도시된 바에 의하면, 프로그램 코드 처리 장치(10)는, 일 실시예에 있어서, 입력부(11), 출력부(13), 저장부(15) 및 프로세서(20)를 포함할 수 있다.
입력부(11)는 프로세서(20)의 처리 대상, 일례로 프로그램 코드(도 2의 90, 소스 코드 등으로 지칭 가능함)나, 프로세서(20)에 의해 구동될 실행 프로그램이나, 프로세서(20)의 동작에 필요한 각종 지시나 데이터 등을 외부로부터 획득하고, 처리 대상, 실행 프로그램, 지시나 데이터 등을 출력부(13), 저장부(15) 및/또는 프로세서(20) 등으로 전달할 수 있다. 입력부(11)는, 프로그램 코드 처리 장치(10)와 일체형으로 또는 물리적으로 분리 가능하게 마련될 수 있다. 실시예에 따라 입력부(11)는, 예를 들어, 키보드, 마우스, 태블릿, 터치 스크린, 터치 패드, 트랙 볼, 트랙패드, 스캐너 장치, 영상 촬영 모듈, 초음파 스캐너, 동작 감지 센서, 진동 센서, 수광 센서, 감압 센서, 근접 센서 및/또는 마이크로 폰 등을 포함할 수 있다. 또한 실시예에 따라, 입력부(11)는, 외부의 다른 장치(일례로 휴대용 메모리 장치 등)로부터 데이터 등의 수신이 가능한 데이터 입출력 단자나, 외부의 다른 장치와 유무선 통신 네트워크를 통해 연결되는 통신 모듈(일례로 랜 카드, 근거리 통신 모듈 또는 이동통신 모듈 등) 등을 포함할 수도 있다.
출력부(13)는 프로세서(20)의 처리 결과, 일례로 후술하는 바와 같이 데이터 임베딩 처리 결과(일례로 메모리 특성, 제어 특성 및/또는 관계 그래프 등) 또는 데이터 임베딩 처리 결과를 기반으로 한 학습 결과(일례로 지도 학습 결과, 비지도 학습 결과 및/또는 준 지도 학습 결과) 등을 시각적 또는 청각적으로 외부로 출력하거나, 및/또는 저장부(15)에 저장된 데이터, 프로그램 또는 학습 알고리즘(학습 모델로 지칭 가능) 등을 외부로 출력할 수 있다. 실시예에 따라서, 출력부(13)는, 프로그램 코드 처리 장치(10)와 일체형으로 또는 물리적으로 분리 가능하게 마련된 것일 수도 있다. 출력부(13)는, 예를 들어, 디스플레이 장치(모니터 장치나 텔레비전 장치 등), 프린터 장치, 스피커 장치, 영상 출력 단자, 데이터 입출력 단자 및/또는 통신 모듈 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
저장부(15)는 적어도 하나의 처리 대상(일례로 프로그램 코드(90) 그 자체, 프로그램 코드(90)의 실행 과정에서 입력, 생성 또는 변경된 데이터 또는 프로그램 코드(90)에서 추출된 라인 등)이나, 실행 프로그램이나, 이와 관련된 지시, 명령 또는 데이터 등을 일시적으로 또는 비일시적으로 저장할 수 있다. 예를 들어, 저장부(15)는 프로그램 코드(90)의 변수에 할당 또는 변경된 값(기호, 문자 또는 숫자 등)을 메모리 정보(도 2의 91)의 형태로 저장하고, 이를 호출에 따라 프로세서(20)에 제공하고 프로세서(20)의 처리 결과 또는 처리 과정에서 획득된 데이터 등을 일시적 또는 비일시적으로 저장할 수 있다. 또한, 저장부(15)는 후술한 바와 같이 프로세서(20)의 동작을 위한 적어도 하나의 프로그램(앱, 애플리케이션 또는 소프트웨어 등으로 지칭 가능)을 저장할 수 있다. 저장부(15)에 저장된 프로그램은, 설계자에 의해 직접 작성된 것일 수도 있고, 입력부(11)를 통해 입력 또는 갱신된 것일 수도 있으며, 및/또는 유선 또는 무선 통신 네트워크를 통해 접속 가능한 전자 소프트웨어 유통망을 통하여 수신 또는 갱신된 것일 수도 있다. 저장부(15)는, 예를 들어, 주기억장치 및 보조기억장치 중 적어도 하나를 포함할 수 있다. 여기서, 주기억장치는 롬(ROM)이나 램(RAM)과 같은 저장 매체를 포함할 수 있고, 보조기억장치는 플래시 메모리 장치, 솔리드 스테이트 드라이브(SSD, Solid State Drive), 하드 디스크 드라이브(HDD, Hard Disc Drive), SD(Secure Digital) 카드, 자기 드럼, 컴팩트 디스크(CD), 디브이디(DVD) 또는 레이저 디스크, 자기 테이프, 광자기 디스크 또는 플로피 디스크 등의 저장 매체를 포함할 수 있다.
도 2는 데이터 임베딩부의 일 실시예에 대한 블록도이다.
도 1 및 도 2에 도시된 바에 의하면, 프로세서(20)는 프로그램 코드(90)에 대응하고 학습이나 패턴 추출 등에 이용될 수 있는 벡터(이하 임베딩 벡터)를 획득할 수 데이터 임베딩부(100)를 포함할 수 있다. 또한, 필요에 따라서, 프로세서(20)는 데이터 임베딩부(100)에 의해 획득한 임베딩 벡터를 기반으로 학습(지도학습, 비지도학습 또는 준지도학습 등)을 수행하는 학습 처리부(200)를 더 포함할 수도 있다. 이 경우, 데이터 임베딩부(100) 및 학습처리부(200) 각각은, 실시예에 따라, 소프트웨어적으로 구현될 수도 있고 또는 하드웨어적으로 구현될 수도 있다. 데이터 임베딩부(100) 및 학습처리부(200) 양자 모두가 소프트웨어적으로 구현된 경우, 이들은 하나 또는 둘 이상의 반도체 처리 장치를 이용하여 구현될 수도 있다. 또한, 데이터 임베딩부(100) 및 학습처리부(200) 양자 모두가 하드웨어적으로 구현된 경우, 데이터 임베딩부(100) 및 학습처리부(200) 각각은 서로 물리적으로 분리된 하나 이상의 반도체 처리 장치를 이용하여 구현될 수도 있다. 프로세서(20)는, 데이터 임베딩부(100) 및 학습처리부(200) 중 적어도 하나에 해당하는 동작을 수행하기 위해 저장부(15)에 사전에 저장된 적어도 하나의 프로그램을 실행시킬 수도 있다. 프로세서(20)는, 예를 들어, 중앙 처리 장치(CPU, Central Processing Unit), 마이크로 컨트롤러 유닛(MCU, Micro Controller Unit), 마이컴(Micom, Micro Processor), 애플리케이션 프로세서(AP, Application Processor), 전자 제어 유닛(ECU, Electronic Controlling Unit) 및/또는 각종 연산 처리 및 제어 신호의 생성이 가능한 다른 전자 장치 등을 포함할 수 있다. 이들 장치는, 예를 들어, 하나 또는 둘 이상의 반도체 칩 등을 이용하여 제작된 것일 수 있다.
데이터 임베딩부(100)는 프로그램 코드(90)로부터 프로그램 코드(90)의 실행 과정에서 또는 프로그램 코드(90) 그 자체로부터 정보를 추출하여 획득하고 획득한 정보를 학습 알고리즘에 의한 처리가 가능한 형태, 일례로 표현(representation)으로 생성할 수 있다. 구체적으로 데이터 임베딩부(100)는 프로그램 코드(90)의 실행에 따라 메모리에 기록 또는 수정된 정보(91, 이하 메모리 정보), 프로그램 코드(90)의 적어도 일 위치(일례로 적어도 일 라인) 각각의 연산에 대한 정보(92, 이하 연산 정보) 및 프로그램 코드(90) 내에서 할당 연산(assign operation)이 수행되는 적어도 일 위치(일례로 적어도 일 라인)에 대한 정보(93, 이하 관계 정보) 중 적어도 하나를 획득하고, 획득한 메모리 정보(91)에 대응하는 메모리 특성(memory feature), 획득한 연산 정보(92)에 대응하는 제어 특성(controller feature) 및 획득한 관계 정보(93)에 대응하는 관계 그래프(relationship graph, 일례로 그래프 트리 형태를 가질 수 있으며, 그래프 트리는 적어도 하나의 다른 노드와 연결된 적어도 하나의 노드를 포함할 수 있음) 중 적어도 하나를 획득할 수 있다. 획득된 특성은 학습 처리부(200)로 전달될 수 있다.
일 실시예에 의하면, 데이터 임베딩부(100)는, 도 2에 도시된 바와 같이, 메모리 정보 전처리부(110), 제어 정보 전처리부(120), 관계 정보 전처리부(130) 및 결합 데이터 처리부(140)를 포함할 수 있다.
데이터 임베딩부(100)의 메모리 정보 전처리부(110)는 프로세서(20) 등에 의해 프로그램 코드(90)가 실제로 실행되면, 프로그램 코드(90)의 실행 과정에서 발생하는 정보(들)을 추출하고, 그 정보들을 기반으로 적어도 하나의 패턴을 획득함으로써 메모리 상태를 얻을 수 있도록 마련된 것일 수 있다. 프로그램 코드(90)의 실행에 따라 프로그램 코드(90) 내에 정의된 변수 등에 대해서는 소정의 값(숫자나 문자 등)이 할당, 수정 또는 제거된다. 이와 같은 소정의 값, 즉 메모리 정보(91)는 저장부(15)의 적어도 일 위치에 기록되는데, 메모리 정보 전처리부(110)는 저장부(15)에 기록된 메모리 정보(91)를 획득하고, 메모리 정보(91)를 기반으로 메모리 상태를 획득할 수 있다.
도 3은 메모리 정보 전처리부의 일 실시예에 대한 블록도이다.
일 실시예에 따르면, 메모리 정보 전처리부(110)는 메모리 정보(91)를 가공하여 학습 처리에 적절한 형태의 정보를 획득할 수 있으며, 예를 들어, 데이터로부터 필요한 정보를 획득하거나 불필요한 정보를 제거하는 등의 동작을 수행할 수 있다. 예를 들어, 메모리 정보 전처리부(110)는 변수 상태 추출부(112), 이상값 처리부(113) 및 관심 정보 추출부(114)를 포함할 수 있다. 실시예에 따라서, 변수 상태 추출부(112), 이상값 처리부(113) 및 관심 정보 추출부(114)는 도 3에 도시된 바와 같이 순차적으로 수행될 수도 있고, 또는 이와 상이한 순서로 수행될 수도 있으며, 동시에 수행될 수도 있다. 또한, 필요에 따라서, 이상값 처리부(113) 및 관심 정보 추출부(114) 중 적어도 하나는 생략될 수도 있다.
변수 상태 추출부(112)는 프로그램 코드(10)의 적어도 하나의 라인에서 발생하는 변수나 상수 등을 상태 및/또는 시간 별로 획득하되, 변수나 상수 등 각각의 타입(type)에 따라서 미리 정의된 바에 따라 수치적으로 변환하여 획득할 수도 있다. 수치적으로 변환하여 획득된 변수나 상수 등은 일시적 또는 비일시적으로 저장부(15)에 저장될 수 있다.
일 실시예에 의하면, 타입은 단일 값 타입(Single Value Type), 리스트 타입(List Type) 및 문자열 타입(String Type) 중 적어도 하나를 포함할 수 있다. 여기서, 단일 값 타입은, 정수(integer), 부동소수점(float) 및/또는 배정도 부정소수점(double) 등에 해당하는 데이터(값)을 포함할 수 있다. 단일 값 타입으로 정의된 변수들은 매핑 과정을 거치지 않을 수 있다. 리스트 타입은 단일 값 타입으로 분류되는 데이터(값) 외에 열(array) 형태를 갖는 데이터를 포함할 수 있다. 리스트 타입의 변수들은 실제 메모리의 크기에 따라 그 차원의 크기가 한정되지 않을 수 있아, 원소들을 모두를 이용하는 경우 실제 처리가 어려울 수도 있다. 따라서, 리스트 타입의 변수들은, 필요에 따라 최대값, 최소값, 평균값, 표준편차, 최초 값, 중간값 또는 마지막 값으로 통계적으로 매핑 처리되어 이용될 수 있다. 문자열 타입은 문자(character)에 해당하는 데이터들을 포함할 수 있다. 이 경우, 문자에 해당하는 값(들)은 바이트(byte) 값으로 표현될 수 있으며, 모든 또는 일부의 바이트 값(들)은 기 정의된 수치로 모드(mod) 연산을 수행함으로써 그 값의 범위가 상대적으로 감소된 것일 수도 있다. 한편, 실시예에 따라서 문자열에 해당하는 데이터의 전부 또는 일부는 동일한 엔코딩으로 표현되어 있을 수도 있다.
이상값 처리부(113)는 소정 범위 외의 변수 값(패턴이 존재하지 않는 경우를 포함 가능함)을 처리할 수 있다. 이상값 처리부(113)는, 예를 들어, 소정 범위를 벗어나는 이상 값들을 모두 제거하거나 또는 이상 값들을 최대값이나 최소값을 대처함으로써 이상 값들을 처리할 수도 있다. 설계에 따라 이상값 처리부(113)는 특정한 타입의 변수들에 한하여 이상 값 제거나 대체 등의 처리를 수행할 수도 있다. 예를 들어, 이상값 처리부(113)는 싱글 값 타입이나 리스트 타입의 변수들에 한해 이상 값 처리를 수행하고, 문자열 타입의 변수에 대해선 이상 값 처리를 수행하지 않을 수도 있다. 일 실시예에 의하면, 이상값 처리부(113)는 이상 값 처리를 위해 하기의 수학식 1과 같이 주어지는 박스플롯(Boxplot) 알고리즘을 이용할 수도 있다.
[수학식 1]
Figure pat00001
이와 같이 이상 값을 처리하는 경우, 학습 처리 과정(일례로 그래프 트리 오토 인코더(GTAEs Network: Graph Tree Auto Encoders) 모델 기반 학습 과정)에서 이들 이상 값에 의해 손실 값이 매우 크게 발산하는 것을 방지할 수 있게 된다.
관심 정보 추출부(114)는, 저장부(15)로부터 획득한 모든 또는 일부의 메모리 정보(91) 중에서 관심 정보를 추출함으로써, 중요한 데이터가 분석 대상이 되도록 할 수 있다. 다시 말해서, 관심 정보 추출부(114)는 결합 데이터 처리부(140) 등이 프로그램 코드(90)와 관련된 모든 데이터가 아닌 일부의 데이터에 대해 학습 처리를 수행하도록 할 수 있다. 구체적으로 프로그램 코드(90)의 실행 시간이 장시간이라면, 메모리 정보(91)의 용량도 커진다. 따라서, 이와 같이 관심 정보만 추출한다면, 모든 순간의 데이터가 아닌 필요한 정보만이 분석 및/또는 학습 대상이 될 수 있게 되고, 이에 따라 학습 데이터 셋의 용량의 감소시킬 수 있고 되고 아울러 노이즈도 함께 제거될 뿐만 아니라, 프로그램 코드 처리 장치(10)의 동작의 장기화 및 불필요한 리소스의 사용을 방지할 수 있게 된다. 일 실시예에 의하면, 관심 정보 추출부(114)는 메모리 정보(91)로 획득되는 데이터 중에서 변수의 값이 변화하는 때의 데이터만을 관심 정보로 추출할 수도 있다.
변수 상태 추출부(112), 이상값 처리부(113) 및 관심 정보 추출부(114) 중 적어도 하나에 의해 획득된 정보는 메모리 정보 학습부(115)로 주기적으로 또는 비주기적으로 전달될 수 있다.
메모리 정보 학습부(115)는 획득된 정보(일례로 변수 상태가 추출되고, 이상 값이 제거된 관심 정보)에 대해 학습을 수행하여, 메모리 정보의 변화 패턴을 특성(메모리 상태)으로 추출하고, 추출한 메모리 특성을 결합 데이터 처리부(140)로 전달할 수 있다. 메모리 정보 학습부(115)는 획득한 정보에 대해 적어도 하나의 학습 알고리즘을 기반으로 채널 별로 추출하고자 하는 패턴에 대한 특성(즉, 채널 특성)을 획득할 수 있다. 예를 들어, 메모리 정보 학습부(115)는 필터링 및 글로벌 맥스 풀링(Global Max Pooling) 과정을 다수 회수로 반복 수행하여 패턴을 추출함으로써 각 채널 별로 채널 특성을 획득할 수도 있다. 여기서, 소정의 학습 알고리즘은, 심층 신경 네트워크(DNN, Deep Neural Network), 콘볼루션 신경 네트워크(CNN, Convolutional Neural Network, 1차원 콘볼루션 신경 네트워크 또는 2차원 콘볼루션 신경 네트워크를 포함할 수 있음), 순환 신경 네트워크(RNN, Recurrent Neural Network), 심층 신뢰 신경 네트워크(DBN, Deep Belief Network), 심층 Q-네트워크(Deep Q-Networks), 장단기 메모리(LSTM: Long short term memory), 다층 퍼셉트론(Multi-layer Perceptron), 서포트 벡터 머신(SVM: support vector machine), 생성적 적대 신경 네트워크(GAN: Generative Adversarial Network) 및/또는 조건적 생성적 적대 신경 네트워크(cGAN: Conditional GAN) 중 적어도 하나의 학습 알고리즘을 포함할 수 있다. 그러나 이들 알고리즘은 예시적인 것으로 설계자나 사용자에 따라서 이들 외에도 다양한 학습 알고리즘을 채용하여 메모리 정보 학습부(115)를 구현할 수 있다.
일 실시예에 의하면, 메모리 정보 학습부(115)는 변수의 타입(즉, 싱글 값 타입, 리스트 타입 및 문자열 타입 중 적어도 하나)을 반영하기 위해 채널 특성에 변수 타입에 대응하는 데이터를 연결(concatenate)하여 학습을 수행할 수도 있다. 여기서, 변수의 타입에 대응하는 데이터는, 연결 이전에 소정의 학습 알고리즘(일례로 콘볼루션 신경망)을 거친 뒤 원 핫 인코딩(One-Hot encoding)된 변수 타입 클래스 특성(Variable Type Class Feature)을 포함할 수 있다. 이 경우, 메모리 정보 학습부(115)는 하기의 수학식 2에 기재된 바와 같이 적어도 하나의 변환 함수(ψ)를 이용하여 구현될 수도 있다.
[수학식 2]
Figure pat00002
여기서,
Figure pat00003
은 최종적으로 획득된 메모리 상태를 의미한다. 수학식 2에서 Ψ는 주어진 입력 값(x) 및 타입(τ)을 기반으로 대응하는 벡터를 생성할 수 있도록 마련된 변환 함수로 Ψ={ψ1, …, ψTC}(여기서, TC는 타입 종류의 개수)로 주어질 수 있다. ψτ는 타입 정보(τ)에 대응하는 변환 함수를 의미한다. 여기서, 각각의 ψτ는, 예를 들어, 심층 신경 네트워크나 콘볼루션 신경 네트워크 등을 포함할 수 있다. x는 메모리 정보 학습부(115)에 입력된 개개의 입력 값을 의미하고, x∈X(X는 전체 입력값)이고, t는 개개의 입력 값의 타입을 의미하며, T={τ1, τ2, …, τN}이다. Onehot()은 원 핫 인코딩 알고리즘을 의미한다.
만약 결합 데이터 처리부(140)가 그래프 트리 콘볼루션 네트워크(GTC Network: Graph Tree Convolutional Neural Network)나 그래프 트리 리커시브 네트워크(GTR Network: Graph Tree Recursive Neural Network) 등을 이용하는 경우라면, 수학식 2는 하기의 수학식 3과 같이 표현 가능하다.
[수학식 3]
Figure pat00004
또한, 결합 데이터 처리부(140)가 그래픽 트리 어텐션 네트워크(GTA Network: Graph Tree Attention Network)나 그래프 트리 리커시브 어텐션 네트워크(GTRAs Network: Graph Tree Recursive Attention Networks) 등을 이용하는 경우라면, 수학식 2는 하기의 수학식 4로 표현될 수 있다.
[수학식 4]
Figure pat00005
수학식 3 및 수학식 4에서 X={x_1, x_2, …, x_n}는 입력 값으로 아직 네트워크를 거치지 않은 값을 의미하며, 실시예에 따라 구조적 데이터 또는 비구조적 데이터를 포함할 수 있다. X'는 X에 대응하는 출력 값을 의미한다. F_lv은 계층화된 네트워크 내의 소정 레벨(lv)에 해당하는 특성의 크기를 의미한다.
도 4는 제어 정보 전처리부의 일 실시예에 대한 블록도이다.
제어 정보 전처리부(120)는 도 4에 도시된 바와 같이 연산 정보(92)를 획득하고 이를 기반으로 대응하는 벡터를 획득하는 벡터화부(121)와, 벡터를 적어도 하나의 학습 알고리즘에 적용하여 결과를 획득하는 제어 정보 학습부(122)를 포함할 수 있다.
벡터화부(121)는 프로그램 코드(90)로부터 적어도 하나의 연산 정보(92)를 획득하고, 적어도 하나의 연산 정보(92)를 벡터화하여 적어도 하나의 연산 정보(92)에 대응하는 적어도 하나의 벡터를 획득할 수 있다. 구체적으로 예를 들어, 먼저 벡터화부(121)는 디셈블러(disassembler) 등을 이용하여 프로그램 코드(90) 내의 적어도 하나의 라인에서 구동되는 연산에 대한 정보(92)를 추출하여 획득할 수 있다. 여기서, 연산 정보(92)는 적어도 하나의 문자, 숫자 및/또는 기호 등을 포함할 수 있고, 적어도 하나의 문자, 숫자 및/또는 기호는 프로그램 코드(90) 내에서 연산을 수행하기 위해 마련된 적어도 하나의 표현식(함수, 명령문 등) 등을 이루는 것일 수 있다. 이어서, 벡터화부(121)는 추출된 연산 정보(92)에 포함된 문자, 숫자 및/또는 기호 등을 벡터화함으로써 연산 정보(92)에 대응하는 벡터를 획득할 수 있다. 이 경우, 벡터화부(121)는 소정의 학습 알고리즘을 기반으로 프로그램 코드(90) 내의 라인(들) 중 적어도 하나 각각에 대응하는 연산을 벡터화할 수 있다. 여기서 소정의 학습 알고리즘은, 예를 들어, 연산투벡터(Operation2Vector) 아키텍쳐를 포함할 수도 있다. 연산투벡터 아키텍쳐는 자연어 처리 등에 이용되는 워드투벡터(Word2Vector 또는 Word2Vect) 아키텍쳐를 기반으로 구현된 것일 수 있다. 여기서, 하나의 라인으로 표현되는 연산의 크기는
Figure pat00006
(top는 연산의 개수)일 수 있고, 연산투벡터에 의해 그 크기는
Figure pat00007
(Top는 연산의 개수가 최대일 때의 값)으로 변환될 수 있다. 일 실시예에 의하면, 획득된 벡터의 크기(즉, 하나의 연산에 대한 임베딩 크기)는 R11일 수 있다. 필요에 따라, 하나 또는 둘 이상의 라인에서 추출된 벡터화된 연산들은 조합되어 처리될 수도 있다. 제어 정보 학습부(122)는, 적어도 하나의 연산 정보(92)에 대응하는 적어도 하나의 벡터를 이용하여 제어 특성을 획득할 수 있다. 구체적으로 제어 정보 학습부(122)는 벡터화된 연산 또는 벡터화된 연산의 조합(예를 들어, 벡터화된 연산의 조합으로 형성된 행렬) 및 적어도 하나의 학습 알고리즘을 이용하여 제어 특성을 획득할 수도 있다. 여기서, 적어도 하나의 학습 알고리즘은, 예를 들어, 심층 신경망, 콘볼루션 신경망(1차원 콘볼루션 신경망 또는 2차원 콘볼루션 신경망을 포함할 수 있음), 순환 신경망, 심층 신뢰 신경망 또는 장단기 메모리 등을 단독으로 또는 조합하여 포함할 수 있으나, 이에 한정되는 것은 아니다.
만약 학습 알고리즘으로 콘볼루션 신경망을 이용하는 경우, 상술한 벡터화부(121) 및 제어 정보 학습부(122)의 처리 결과에 따른 제어 특성은 하기의 수학식 5로 표현될 수도 있다.
[수학식 5]
Figure pat00008
여기서, X'ctrl는 제어 특성이고, Ψctrl은 제어 특성 획득을 위해 이용되는 학습 네트워크이다.
획득된 제어 특성은 결합 데이터 처리부(140)로 전달될 수 있다.
관계 정보 전처리부(130)는 관계 정보(93)를 획득하고 획득한 관계 정보(93)에 대응하는 관계 그래프를 생성할 수 있다. 일 실시예에 의하면, 관계 정보 전처리부(130)는, 프로그램 코드(90)의 라인 각각을 노드로 취급하여 상응하는 관계 그래프를 생성할 수 있다. 이 경우, 관계 정보 전처리부(130)는, 예를 들어, 할당 연산(assign operation)이 발생하는 할당 라인(assigned line)에서 구문을 파싱하고, 파싱 결과를 기반으로 관계 그래프를 생성할 수 있다. 여기서 구문의 파싱을 위해, 추상 구문 트리(AST: Abstract Syntax Tree)가 이용될 수도 있다. 보다 상세하게 예를 들면, 할당 라인에는 할당되는 변수와 할당하는 변수가 포함되는데, 관계 정보 전처리부(130)는 할당 라인의 할당하는 변수에 이전에 값을 할당되었던 라인을 검색하고, 검색된 라인을 할당 라인에 연결하여 관계 그래프를 생성할 수 있다. 한편, 할당 라인의 할당되는 변수는 이전에 값이 할당된 적이 존재한다고 하더라도, 기존에 할당된 값은 삭제되기 때문에, 관계 정보 전처리부(130)는 할당 라인과 할당되는 변수에 값이 할당된 라인은 서로 연결하지 않고 그래프를 생성하도록 설계될 수도 있다. 관계 정보 전처리부(130)가 획득한 관계 그래프는, 도 2에 도시된 바와 같이, 결합 데이터 처리부(140)로 전달될 수 있다.
결합 데이터 처리부(140)는, 메모리 정보 전처리부(110), 제어 정보 전처리부(120) 및 관계 정보 전처리부(120) 중 적어도 하나로부터 처리 결과를 수신하고, 이를 기반으로 프로그램 코드(90)에 대응하는 임베딩 벡터를 획득할 수 있다. 보다 구체적으로 결합 데이터 처리부(140)는, 메모리 정보 전처리부(110)로부터 적어도 하나의 메모리 특성을 수신하고, 제어 정보 전처리부(120)로부터 적어도 하나의 메모리 특성에 대응하는 적어도 하나의 제어 특성을 수신하고, 및/또는 관계 정보 전처리부(130)로부터 적어도 하나의 메모리 특성 및/또는 제어 특성에 대응하는 적어도 하나의 관계 그래프를 수신한 후, 메모리 특성, 제어 특성 및 관계 그래프 중 적어도 하나와, 적어도 하나의 학습 모델을 이용하여 임베딩 벡터를 얻을 수 있다. 여기서, 적어도 하나의 학습 모델은, 그래프 어텐션 네트워크(GATs Network: Graph Attention Networks), 그래프 오토 인코더(Graph Auto Encoder), 그래프 트리 콘볼루션 네트워크(GTC), 그래프 트리 어텐션 네트워크(GTA), 그래프 트리 오토 인코더(GTAEs), 그래프 트리 리커시브 네트워크(GTR), 그래프 트리 리커시브 어텐션 네트워크(GTRAs) 및 그래프 트리 리커시브 오토 인코더(GTRAEs) 중 적어도 하나를 포함할 수 있다.
이하 상술한 각각의 학습 네트워크를 설명하기에 앞서 관계 그래프의 일례로 학습에 이용되는 데이터 구조인 그래프 트리(GT: Graph Tree)에 대해 보다 구체적으로 설명한다.
관계 정보를 나타내는 인접 행렬(Adjacency Matrix, 이하 A로 표현. A ∈ R(NxN), 여기서, N은 노드의 개수를 의미함)이 주어진 경우, 인접 행렬(A)의 노드에 대응되는 적어도 하나의 자식노드(들)의 집합(C)은 하기의 수학식 6과 같이 주어질 수 있다.
[수학식 6]
Figure pat00009
여기서, GTNi는 다수의 그래프 트리 노드(GTN: Graph Tree Node)를 의미하며, 하기의 수학식 7로 표현된 바와 같이 그래픽 트리에 속한다.
[수학식 7]
Figure pat00010
수학식 7에서 i는 자연수이다. 만약 인접 행렬에 대응하는 자식 노드가 없다면(예를 들어, 리프 노드 등), 자식 노드 대신에 초기 은닉 상태
Figure pat00011
을 전달하는 소정의 그래프 트리 노드(GTN_
Figure pat00012
)가 이용된다. GTN_root는 트리의 최상단 루트(root)를 표현하는 노드이다. 루트 노드(GTN_root)를 보유하면, 트리 내의 모든 정보에 접근할 수 있다. 한편, 그래픽 트리 노드(GTN)은 하기의 수학식 8로 표현될 수도 있다.
[수학식 8]
Figure pat00013
여기서, A는 인접 행렬을, X는 입력 데이터의 집합(이미지, 음성, 텍스트 또는 표 등의 데이터를 포함 가능함)을, T는 각각의 입력 데이터에 대응하는 타입 정보의 집합을, C는 수학식 6의 자식 노드(그래픽 트리 노드)의 집합을 의미한다.
이하 각각의 학습 네트워크에 대해 설명한다.
그래프 트리 콘볼루션 네트워크(GTC)는, 그래픽 트리 형태의 데이터를 학습하기 위한 신경 네트워크로, 적어도 하나의 레벨층(level layer)를 포함하되, 적어도 하나의 레벨층은 그래픽 트리의 각각의 레벨에 대응하고 각각의 레벨의 처리를 담당하는 신경 네트워크를 갖는다. 여기서, 적어도 하나의 레벨층은 그래픽 트리의 최대 깊이(m)를 한계로 한다. 일 실시예에 의하면, 그래프 트리 콘볼루션 네트워크(GTC)는 하기의 수학식 9 및 수학식 10으로 정의될 수 있다.
[수학식 9]
Figure pat00014
[수학식 10]
Figure pat00015
수학식 9 및 수학식 10에서 Wlv은 레벨 층을 의미하고, lv는 해당 레벨 층이 처리할 레벨을 의미한다. m은 최대 깊이(즉, 레벨의 최대 값)을 의미한다. 또한, Flv는 해당 레벨의 입력 크기이고, F'lv는 해당 레벨의 출력 크기이며, F'lv+1는 자녀 노드의 출력 크기이다. 최대값은 m으로 정의하였으므로, F'm+1은 0의 값을 갖는다. 또한, Ψ는 상술한 바와 같이 변환 함수이고, g는 집계 함수(aggregate function)로 실시예에 따라 다양하게 주어질 수 있다. 예를 들어, 노드의 순서 정보를 배제하고자 하는 경우에는, 소정의 독출 함수(일례로 Readout_max[])가 집계 함수(g)로 이용될 수 있으며, 노드의 순서 정보를 유지하고자 하는 경우에는 상황에 따라 내적 등이 더 추가되어 이용될 수 있다. σ는 활성화 함수(activation function)로, 예를 들어, ReLU(Rectified Linear Unit) 함수나 LeakyReLU(LReLU) 함수 등을 포함할 수 있다.
일 실시예에 따르면, 그래프 트리 콘볼루션 네트워크(GTC)에서 하나의 노드에서 부모 노드로 전달되는 값(
Figure pat00016
)은 하기의 수학식 11 또는 수학식 12로 주어질 수도 있다.
[수학식 11]
Figure pat00017
[수학식 12]
Figure pat00018
여기서, D는 차수행렬이다.
Figure pat00019
은 인접 행렬(A)을 정규화시키기 위해 이용된다. 인접 행렬(A)이 연결 정보를 간단히 1로 표현한 경우, 연결이 많을수록 스케일이 증가하는 문제점을 발생한다.
Figure pat00020
는 인접 행렬(A)을 정규화하여 이와 같은 문제점을 해결할 수 있게 한다. p는 깊이 우선 콘볼루션(Depth-First Convolution)의 콘볼루션 순서이며, q는 인접 행렬(A)의 노드 번호이다. Np는 p번째 콘볼루션 순서의 그래프 트리 노드(GTN)의 인접 행렬(A)가 갖는 노드의 개수이고,
Figure pat00021
는 상술한 수학식 3에 의해 획득 가능한 q번째 노드의 입력 벡터이다. 만약 그래프 트리(GT)가 최대 깊이(m)의 리프 노드에 위치하면 수학식 9에 의해 콘볼루션이 진행되며, 깊이 우선 콘볼루션에 따라 부모 노드에 그 결과 값(
Figure pat00022
)을 전달한다. 리프 노드가 아니라면, 수학식 10에 의해 콘볼루션이 진행된다. 수학식 10에 따른 결과 값(
Figure pat00023
)는 q번째 자식 노드로부터 전달받은 은닉 상태이다. 한편, 수학식 9의
Figure pat00024
는 p번째 노드에 존재하는 그래프의 노드에 대응되는 값(
Figure pat00025
)을 모두 스택 형태로 누적하는 것을 의미한다. 상술한 수학식 9 및 수학식 10 중 어느 하나의 연산에 따라 그래프 트리(GT)의 모든 정보를 임베딩한 결과 값((
Figure pat00026
)이 획득될 수 있다.
이와 같이 주어지는 그래픽 트리 콘볼루션 네트워크(GTC)는 각 레벨 별로 특징 크기를 조절하는 것이 가능할 뿐만 아니라, 각각의 레벨 별로 적절하게 학습을 수행할 수 있게 된다.
그래픽 트리 어텐션 네트워크(GTA)는, 상술한 그래픽 트리 콘볼루션 네트워크(GTC)에 어텐션(attention) 기법을 적용하여 구현 가능한 신경 네트워크이다. 일 실시예에 따르면, 그래프 트리 어텐션 네트워크(GTA)는 하기의 수학식 13으로 정의될 수 있다.
[수학식 13]
Figure pat00027
상술한 바와 동일하게 수학식 13에서 Wi는 레벨 층을 의미하고, m은 레벨의 최대 값을 의미하며, Ψ, g 및 σ는 각각 변환 함수, 집계 함수 및 활성화 함수를 의미한다.
Figure pat00028
(
Figure pat00029
)는 어텐션 네트워크(Attention Network)를 의미한다. 다시 말해서, 그래픽 트리 어텐션 네트워크(GTA)는 상술한 그래픽 트리 콘볼루션 네트워크(GTC)에 각각의 레벨에 해당하는 적어도 하나의 어텐션 네트워크(
Figure pat00030
)가 더 추가된 형태이다. 일 실시예에 의하면, 그래픽 트리 어텐션 네트워크(GTA)는 인접 행렬(A)의 q번째 노드와 r번째 노드의 관계의 중요도를 학습하여 사용할 수 있다. 이 경우, 어텐션(a)는 하기의 수학식 14의 특성을 갖는다.
[수학식 14]
Figure pat00031
만약 활성화 함수(σ)가 LeakyReLU 함수라면, 어텐션(a_pqr)은 하기의 수학식 15로 주어질 수 있다.
[수학식 15]
Figure pat00032
만약 p에 대한 인접 행렬(Ap)의 정보가 존재하지 않는다면, 각 노드 간의 관계는 어텐션 메커니즘을 이용하여 학습될 수 있다. 이는 하기의 수학식 16 및 수학식 17과 같이 주어질 수 있다.
[수학식 16]
Figure pat00033
[수학식 17]
Figure pat00034
Sigmoid()는 시그모이드 함수이다. 이러한 어텐션(apqr) 획득 방법은 셀프 노드(self-node)를 기준으로 주변 노드들과의 관계를 찾는 것으로, 인접 행렬(A)가 부재하더라도 어텐션의 학습이 가능하게 되는 장점이 있다. 이를 반영하여 인접 행렬(A)의 q 및 r번째 어텐션을 학습하고, 이를 q 및 r의 노드가 연결된 부분에 대체하면, 그래픽 트리 어텐션 네트워크(GTA)는 하기의 수학식 18로 표현될 수 있다.
[수학식 18]
Figure pat00035
수학식 18에서 연산자 ⊙는 점별(pointwise)를 의미한다.
Figure pat00036
x' p 를 스택 형태로 누적한 값이고,
Figure pat00037
h' p 를 스택 형태로 누적한 값이다. 셀프 어텐션 처리의 안정화를 위해 멀티헤드 어텐션 메커니즘(multi-head attention mechanism)을 더 이용할 수도 있다. 멀티헤드 어텐션 메커니즘은 다수의 헤드로부터 출력된 결과를 평균하여 다음 노드로 전달하는 방식이다. 멀트헤드 어텐션 메커니즘을 반영하여 학습을 수행하는 경우, 하기의 수학식 19 및 수학식 20 중 적어도 하나가 이용될 수 있다.
[수학식 19]
Figure pat00038
[수학식 20]
Figure pat00039
수학식 19에 의한 결과 값(
Figure pat00040
)은 원래의 출력 값보다 K배 더 크다는 특징이 있다. 그러므로, 만약 기존의 출력 값과 동일한 크기의 출력 값을 원하는 경우에는 수학식 20이 이용될 수 있다.
상술한 과정에 따라 하나의 그래픽 트리 어텐션 네트워크(GTA) 내에서 콘볼루션이 수행될 수 있다. 이 경우, 콘볼루션은 리프 노드에서 루트 노드까지 전달되는 상향식 콘볼루션을 포함할 수 있다. 구체적으로 학습은 그래픽 트리(GT)의 데이터에 따라 리프 노드에서부터 시작되어 여러 상호 작용이 부모 노드로 전달되고, 마지막에는 루트 노드에서 처리된다. 한편, 리프 노드의 레벨이 최대 값(m)이 아니고, 자식 노드가 전달하는 결과 값이 존재하지 않는다면, 리프 노드는 0의 벡터
Figure pat00041
를 이용하여 자신이 리프 노드임을 알리는 은닉 상태를 전달한다. 이와 같은 과정에 따라 루트 노드까지 처리가 완료되면, 모든 그래프 트리(GT) 및 특성이 학습될 수 있게 되고, 최종적으로 계측적인 특성 간 관계 그래프와 임베딩된 특성 집합을 얻을 수 있게 된다. 한편, 이 경우, 루트에서의 노트 특성(h'root)은 하기의 수학식 21과 같이 주어질 수 있다.
[수학식 21]
Figure pat00042
여기서, DFC()는 깊이 우선 콘볼루션을 의미한다.
상술한 메모리 특성, 제어 특성 및 관계 그래프에 대해 그래픽 트리 콘볼루션 네트워크(GTC) 또는 그래픽 트리 어텐션 네트워크(GTA)를 이용하여 학습을 수행하는 경우, 레벨 0에서는 관계 그래프가 인접 행렬(A)로 이용되고, 제어 특성이 입력 값(X)로 이용된다. 레벨 1에서는 메모리 특성 및 타입이 입력 값으로 이용된다. 여기서는 인접 행렬(A)는 존재하지 않는다. 레벨 0의 각각의 노드는, 상응하는 라인에서 발생된 변수 정보를 구비한 레벨 1의 자식 노드를 가지게 된다.
그래프 트리 오토 인코더(GTAE)는, 비지도 학습 등에서 이용 가능한 학습 모델로, 인코더에 의해 인코딩된 결과를 디코더를 이용하여 복원하여 학습을 수행할 수 있다. 그래프 트리 오토 인코더(GTAE)에 의하면, 라벨이 부재함에도 불구하고 그래프 트리 내의 모든 정보를 포함하는 벡터를 생성할 수 있는 장점을 갖는다. 그래프 트리 오토 인코더(GTAE)는, 일 실시예에 따르면, 하기의 수학식 22와 같이 정의될 수 있다.
[수학식 22]
Figure pat00043
수학식 22의 Wi는 레벨 층을 의미하고,
Figure pat00044
는 어텐션 네트워크를 의미하며, Ψ, g 및 σ는 각각 변환 함수, 집계 함수 및 활성화 함수를 의미한다. 수학식 22에서 활성화 함수 g()는 하기의 수학식 23과 같이 최대 독출 방법(max readout method)을 처리할 수 있도록 마련된 것일 수 있다.
[수학식 23]
Figure pat00045
g-1()는 수학식 23에 나타난 바와 같이 하나의 노드에서 부모 노드로 전달되는 값(
Figure pat00046
)으로써
Figure pat00047
Figure pat00048
로 복원시킬 수 있다(맥스풀 및 맥스언풀).
Figure pat00049
은 깊이 우선 디콘볼루션(DFD: Depth-First Deconvolution)에 의해 하기의 수학식 24에 기재된 바와 같이
Figure pat00050
로 복원된다.
[수학식 24]
Figure pat00051
수학식 24에서 Wdlv
Figure pat00052
는 디코더의 계수이고, a'p는 수학식 15의 어텐션 행렬을 의미한다. 그래픽 트리 오토 인코더(GTAE)에서, 수학식 15의 Npq는 Np(레벨 p에 해당하는 그래픽 트리 네트워크(GTN_p)의 그래프 내 모든 경계의 집합)으로 잘 치환된다.
그래픽 트리 오토 인코더(GTAE)를 이용하는 경우, 먼저
Figure pat00053
Figure pat00054
가 수학식 18의 [x'p, hp]인 d'p로 복원된다. 복원 결과는 하기의 수학식 25에 기재된 바와 같이
Figure pat00055
(
Figure pat00056
) 및
Figure pat00057
(
Figure pat00058
)로 복원된다.
[수학식 25]
Figure pat00059
한편, 타입 정보는 하기의 수학식 26에 기재된 바와 같이 변환 함수의 역함수(Ψ-1)에 의해 나눠지고, 만약 특성 추출 과정이 신경 네트워크에 의해 수행된다면, 이는 디코딩 네트워크를 통해 복원된다.
[수학식 26]
Figure pat00060
그래픽 트리 오토 인코더(GTAE)에 따른 결과 값(GTNroot)은 하기의 수학식 27로 표현될 수 있다.
[수학식 27]
Figure pat00061
수학식 27에서 DepthFirstDeconv은 깊이 우선 디콘볼루션을, DepthFirstConv는 깊이 우선 콘볼루션을 의미한다. 디콘볼루션은 상술한 과정을 반복함으로써 수행될 수 있다.
그래픽 트리 리커시브 네트워크(GTR)는 하기의 수학식 28에 기재된 바와 같이 레벨 층(W)과, 변환 함수(Ψ)와, 집계 함수(g)와, 활성화 함수(σ)를 포함하여 마련될 수 있다.
[수학식 28]
Figure pat00062
수학식 28에서 F는 노드 특성의 크기를 의미하고, F'는 출력 크기를 의미한다. 이 경우, F'는 자식 노드로부터 전달받은 정보(즉, 자식 노드의 출력 값)의 크기를 의미할 수도 있다. 집계 함수(g)는 순서 정보를 유지하지 않으려는 경우에는 소정의 독출 함수(일례로 Readout_max[])를 이용할 수도 있으나, 이에 한정되는 것은 아니다.
그래픽 트리 리커시브 네트워크(GTR)을 이용하는 경우, 학습은 깊이 우선 콘볼루션에 의해 그래픽 트리(GT)의 리프 노드로부터 시작된다. 이 경우, p 레벨에 해당하는 그래픽 트리 노드(GTNp)의 입력 값(X)은 특징 추출 과정에 의해 획득될 수 있으며, 구체적으로 예를 들어, 상술한 수학식 3에 기재된 바처럼 타입 정보를 반영한 변환 함수(Ψ)를 이용하여 획득된 것일 수 있다. 한편, 리프 노드는 최초의 은닉 상태에 대한 정보인
Figure pat00063
을 가질 수 있으며, 리프 노드 이외의 노드는
Figure pat00064
에 대응하는
Figure pat00065
를 자식 노드로부터 전달받고, 통합 과정을 거쳐 하기의 수학식 29와 같이 주어진다.
[수학식 29]
Figure pat00066
이와 같은 과정에 따른 정보는 특정 노드까지의 하위 정보들과 특정 노드에 해당하는 정보를 모두 갖는 소정 크기의 벡터가 될 수 있다. 상술한 인접 행렬(A)과 수학식 29의 정보는 콘볼루션될 수 있다. 이는 예를 들어 하기의 수학식 30과 같이 표현 가능하다.
[수학식 30]
Figure pat00067
수학식 30에서
Figure pat00068
는 p번째 노드에 존재하는 그래프 노드에 대응하는
Figure pat00069
를 스택 형태로 누적시키는 것을 의미한다. 수학식 30의 경우에는 인접 행렬(A)의 연결 정보가 증가할수록 스케일도 이에 부응하여 증가하는 문제점이 존재한다. 따라서, 인접 행렬(A)의 정규화를 위해 수학식 11 및 수학식 12의 경우와 동일하게 소정의 차수 행렬(D)가 더 부가될 수도 있다. 이 경우, 상술한 콘볼루션은 수학식 30 대신에 하기의 수학식 31으로 주어질 수 있다.
[수학식 31]
Figure pat00070
그래픽 트리 리커시브 네트워크(GTR)은 상술한 콘볼루션 과정을 깊이 우선 콘볼루션의 학습 순서에 따라 처리함으로써 학습을 수행할 수 있다. 상술한 바와 동일하게 그래픽 트리 리커시브 네트워크 역시 적어도 하나의 신경 네트워크가 하나 이상의 리프 노드로부터 루트 노드까지 순차적으로 수행된다. 따라서, 자식 노드로부터 자식 노드의 관계에 대한 정보가 부모 노드로 벡터 형태로 전달될 수 있으며, 이에 따라 여러 노드 간의 상호 작용 관계를 표현할 수 있게 된다. 수행되는 콘볼루션은 데이터 중심적일 수 있으며, 정보의 양에 따라 그 처리 횟수가 정해질 수 있다.
그래프 트리 리커시브 어텐션 네트워크(GTRA)는 그래픽 트리 리커시브 네트워크(GTR)에 어텐션 네트워크를 더 부가하여 구현된 것일 수 있다. 그래픽 트리 리커시브 어텐션 네트워크(GTRA)에 의하면, 처리 중인 노드와 자식 노드들의 정보를 압축한 노드 특성 중 q번째와 r번째 노드의 중요도를 학습하고, 학습된 중요도를 그래프 트리의 q 및 r번째의 연결로 하여 처리된다.
일 실시예에 의하면, 그래프 트리 리커시브 어텐션 네트워크(GTRA)는 하기의 수학식 32와 같이 주어질 수 있다.
[수학식 32]
Figure pat00071
Figure pat00072
)는 어텐션 네트워크이다. 만약 활성화 함수(σ)로, LeakyReLU 함수를 이용한다면, 어텐션(apqr)은 하기의 수학식 33과 같이 주어질 수 있다.
[수학식 33]
Figure pat00073
수학식 33에 기재된 바와 같이, q 및 r 번째의 어텐션은 학습된다. 학습 결과는 인접 행렬(A)이 연결된 부분에 대체된다. 만약 인접 행렬(Ap)에 대한 정보가 존재하지 않는다면, 하기의 수학식 34에 도시된 바를 이용하여 그 관계를 파악할 수도 있다.
[수학식 34]
Figure pat00074
수학식 34에서 scorepqr을 하기의 수학식 35에 기재된 바처럼 시그모이드 함수를 이용하여 정의될 수 있다.
[수학식 35]
Figure pat00075
수학식 34 및 35의 방법은, 셀프 노드는 1로 취급하고, 셀프 노드와 다른 노드와의 관계는 시그모이드 함수를 이용하여 0 내지 1 사이의 소정의 실수 값을 이용하는 방법이다.
상술한 내용을 종합하면, 일 실시예에 따른 그래픽 트리 리커시브 어텐션 네트워크(GTRA)는 하기의 수학식 36으로 표현될 수 있다.
[수학식 36]
Figure pat00076
수학식 36에서 연산자 ⊙는 점별(pointwise)를 의미한다.
Figure pat00077
(
Figure pat00078
)는 x' p 를 스택 형태로 누적한 것이고,
Figure pat00079
(
Figure pat00080
)는 h' p 를 스택 형태로 누적한 것이다. 상술한 바와 동일하게 멀티헤드 어텐션 메커니즘이 셀프 어텐션 처리의 안정화를 위해 도입될 수도 있다. 멀티헤드 어텐션 메커니즘을 채용하면 수학식 37이 획득될 수 있다.
[수학식 37]
Figure pat00081
상술한 과정은 깊이 우선 콘볼루션을 기반으로 수행될 수 있으며, 구체적으로 콘볼루션은 리프 노드로부터 루프 노드까지 전달되며 수행된다.
그래프 트리 리커시브 오토 인코더(GTRAE)는 오토인코더를 이용하여 깊이 우선 콘볼루션을 수행하고 그 결과를 깊이 우선 디콘볼루션을 통해 복원하는 방법으로, 이에 따르면 레벨 등의 라벨이 없이도 그래프 트리의 모든 또는 일부의 정보는 갖는 벡터를 생성할 수 있게 된다. 그래프 트리 리커시브 오토 인코더는 하기의 수학식 38과 같이 주어질 수 있다.
[수학식 38]
Figure pat00082
비지도 학습의 경우, 그래프 트리 리커시브 오토 인코더(GTRAE)는 하기의 수학식 39과 같이 표현될 수 있다.
[수학식 39]
Figure pat00083
수학식 39에 의하면,
Figure pat00084
는 통합 전의 정보로 복원시키는 g-1 함수에 의해 복원된다. g()는 일 실시예에 의하면 독출 함수(일례로 readout_max[])를 이용할 수 있으나, 이에 한정되는 것은 아니다. 보다 구체적으로는 몇번째 노드에서 최대 값이 나왔는지에 대한 특징의 인덱스 정보를 깊이 우선 콘볼루션 과정에서 저장하고, 깊이 우선 디콘볼루션 과정에서는 이 정보를 이용하여 복원을 수행한다. 이후 획득된 결과(d''p)는 하기의 수학식 40 등에 의해 처리되거나 또는 수학식 40에 기재된 바와 같이
Figure pat00085
(여기서 D는 차수행렬)과, 레벨 층(W)을 이용하여 하기의 수학식 41에 도시된 바와 같이 처리될 수 있으며, 이에 따라 결과 값(d'''p)을 획득할 수 있다.
[수학식 40]
Figure pat00086
[수학식 41]
Figure pat00087
만약 어텐션 그래프(attention graph)가 이용된다면, a는 콘볼루션 과정에서 이용된 것일 수도 있다. 하기의 수학식 42 내지 수학식 44처럼 획득된 d'''p에 대해 스플릿 과정을 수행하여 x'' (x''∈R^NⅹF) 및 d'''' (h''''∈R^NⅹF')를 획득한다.
[수학식 40]
Figure pat00088
[수학식 41]
Figure pat00089
[수학식 42]
Figure pat00090
수학식 42의 함수 Ψ-1는 타입 정보 스플릿과 특징 추출 과정이 신경 네트워크를 기반으로 수행되는 경우라면, 이를 디코딩하는 네트워크를 포함할 수 있다. 상술한 과정에 따른 그래픽 트리 리커시브 오토 인코더는 전체적으로 하기의 수학식 43으로 표현 가능하다.
[수학식 43]
Figure pat00091
상술한 과정에 의해, 프로세서(20)의 데이터 임베딩부(100)는, 메모리 특성, 제어 특성 및/또는 관계 그래프를 조합적으로 학습하여 획득되고 프로그램 코드(90)에 대응하는 적어도 하나의 임베딩 벡터(일례로 프로그램 코드(90)의 적어도 하나의 라인 각각에 대응하는 적어도 하나의 임베딩 벡터)를 출력할 수 있게 된다. 데이터 임베딩부(100)가 획득한 결과는 필요에 따라 출력부(13) 및 저장부(15) 중 적어도 하나로 전달될 수 있다.
도 5는 학습 처리부의 일 실시예에 대한 블록도이다.
일 실시예에 의하면, 결합 데이터 처리부(140)에 의해 획득된 프로그램 코드(90)에 대응하는 적어도 하나의 임베딩 벡터는, 도 5에 도시된 바와 같이 학습 처리부(200)로 전달되어 학습 과정에 이용될 수 있다. 학습 처리부(200)는 임베딩 벡터를 기반으로 학습을 수행하여 설계자 또는 사용자 등이 설정한 형태로 결과를 획득 및 출력할 수 있다. 학습 처리부(200)의 출력 결과는 출력부(13) 및 저장부(15) 중 적어도 하나로 전달될 수 있다. 일 실시예에 따르면, 학습 처리부(200)는 지도 학습 처리부(210), 비지도 학습 처리부(220) 및 준 지도 학습 처리부(230) 중 적어도 하나를 포함할 수 있다.
지도 학습 처리부(210)는 적어도 하나의 임베딩 벡터를 기반으로 지도 학습(supervised learning)을 수행할 수 있다. 지도 학습은 입력 값 및 입력 값에 대응하는 라벨을 기반으로 학습을 수행하는 방법으로 라벨에 대응하는 데이터의 선별이나 데이터에 대한 회귀 분석 등을 수행하기 위해 이용될 수 있다. 예를 들어, 사용자(일례로 프로그램 코드의 교육자)가 프로그램 코드(90)에 대해 사용자가 원하는 방식으로 라벨을 부가하여 입력하면, 지도 학습 처리부(210)는 사용자가 부가한 라벨을 기반으로 학습을 수행하게 된다. 여기서, 라벨은 예를 들어, 프로그램 코드(90)의 알고리즘별 클래스를 포함할 수 있다. 실시예에 따라서 지도 학습 처리부(210)는 소정의 학습 알고리즘을 이용하여 학습을 수행할 수 있으며, 여기서, 학습 알고리즘은, 예를 들어, 심층 신경망(일례로 풀리 커넥티드 신경망(Fully Connected Neural Network) 등)을 포함할 수 있으나, 이에 한정되는 것은 아니다. 지도 학습 처리부(210)의 동작은 하기의 수학식 44와 같이 표현되며, 손실 함수는 수학식 45와 같이 주어질 수 있다.
[수학식 44]
Figure pat00092
[수학식 45]
Figure pat00093
수학식 45에서 CE는 크로스 엔트로피(CrossEntropy) 함수이다.
비지도 학습 처리부(220)는, 적어도 하나의 임베딩 벡터를 기반으로 비지도 학습(unsupervised learning)을 수행할 수 있다. 비지도 학습은 라벨이 부재한 데이터 셋을 학습하는 방법으로 데이터들의 군집화 등을 수행하기 위해 이용될 수 있다. 예를 들어, 비지도 학습 처리부(220)는 그래픽 트리 오토 인코더를 기반으로 구현될 수도 있다. 그래픽 트리 오토 인코더는 깊이 우선 콘볼루션의 결과를 깊이 우선 디콘볼루션을 통해 복원하는 방법이다. 이를 통해 라벨이 없다고 하더라도 복원이 가능하게 된다. 이 과정은 상술한 수학식 38 내지 수학식 43으로 주어질 수 있다. 비지도 학습 처리부(220)의 손실 함수는 하기의 수학식 46과 같이 주어질 수 있다.
[수학식 46]
Figure pat00094
수학식 46에서 MSE는 평균 제곱 오차이고, CE는 크로스 엔트로피 함수이다. 수학식 46에서 만약 타입 정보를 학습시키고 싶지 않다면, λ를 0으로 설정하면 된다.
준 지도 학습 처리부(230)는 대응하는 라벨이 존재하는 데이터(들)과 대응하는 라벨이 존재하지 않는 데이터(들) 양자를 함께 학습을 수행할 수 있다. 구체적으로 준 지도 학습 처리부(230)는, 전체 데이터 집합과 더불어 사용자 등이 적어도 하나의 라벨이 부가된 프로그램 코드 샘플을 제공하면, 라벨이 부가된 프로그램 코드 샘플에 대해서는 지도 학습을 수행하고, 전체적인 데이터 집합에 대해서는 비지도 학습을 수행하도록 마련된 것일 수 있다. 준 지도 학습 처리부(230)는 주성분 분석 방법이나 T-분포 확률적 임베딩 방법 등을 이용하여 구현될 수 있으며, 이를 통해 선형 벡터로 임베딩된 프로그램 코드(90)를 유사 코드끼리 군집화하고 필요에 따라 근거리에 배치하여 그 분포를 시각화할 수 있게 된다. 준 지도 학습 처리부(230)의 손실 함수는 수학식 29와 같이 주어질 수 있다.
[수학식 94]
Figure pat00095
상술한 프로그램 코드 처리 장치(10)는, 데이터의 연산 처리가 가능한 하나 또는 둘 이상의 장치를 단독으로 또는 조합하여 이용함으로써 구현될 수 있다. 여기서, 데이터의 연산 처리가 가능한 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 서버용 컴퓨터, 스마트 폰, 태블릿 피씨, 스마트 시계, 두부 장착형 디스플레이(HMD: Head Mounted Display) 장치, 내비게이션 장치, 휴대용 게임기, 개인용 디지털 보조기(PDA: Personal Digital Assistant), 디지털 텔레비전, 셋 톱 박스, 디지털 미디어 플레이어 장치, 인공 지능 음향 재생 장치(인공 지능 스피커), 가전 기기(냉장고나 세탁기 등), 유인 이동체(승용차, 버스나 이륜차 등의 차량 등), 무인 이동체(로봇 청소기 등), 유인 비행체, 무인 비행체(드론 등), 가정용 또는 산업용 로봇, 산업용 기계, 전자 칠판, 전자 광고판 또는 자동 입출금기(ATM: Automated Teller Machine) 등을 포함할 수 있으나, 이에 한정되는 것은 아니다. 설계자나 사용자 등의 선택 등에 따라서 상술한 장치 이외에도 정보의 연산 처리 및 제어가 다양한 장치 중 적어도 하나를 상술한 프로그램 코드 처리 장치(10)로 채용할 수 있다.
이하 도 6을 참조하여 프로그램 코드 처리 방법의 일 실시예를 설명하도록 한다.
도 6은 프로그램 코드 처리 방법의 일 실시예에 대한 흐름도이다.
도 6에 도시된 바에 의하면, 먼저 프로그램 코드가 프로그램 코드 처리 장치에 입력된다(300). 프로그램 코드 처리 장치는 상술한 바와 같이 데스크톱 컴퓨터나 서버용 컴퓨터 등의 정보 처리 장치를 포함할 수 있다. 프로그램 코드 처리 장치로의 입력은 코드의 작성자가 키보드 장치 등을 이용하여 직접 작성하여 입력할 수도 있고, 데이터 입출력 단자나 통신 모듈 등을 통해 입력될 수도 있다.
프로그램 코드가 입력되면, 동시에 또는 이시에 메모리 정보가 획득되거나(302), 연산 정보가 획득되거나(312) 및/또는 라인 정보(320)가 획득될 수 있다.
구체적으로 먼저 프로그램 코드의 실행에 따라 그 과정에서 저장부 등에 저장되는 정보(즉, 메모리 정보)가 추출 및 획득될 수 있다(302). 예를 들어, 프로그램 코드의 적어도 하나의 라인의 변수나 상수가 상태나 시간 별로 획득되되, 변수나 상수 등은 각각의 타입에 따라 수치적으로 변환될 수도 있다. 여기서, 타입은 단일 값 타입, 리스트 타입 및 문자열 타입 중 적어도 하나를 포함 가능하다. 또한, 획득된 메모리 정보는, 필요에 따라 가공될 수도 있다. 메모리 정보의 가공은 이상 값의 제거 과정 및/또는 특정한 부분의 관심 정보 선별 과정을 포함할 수 있다. 이상 값의 제거 과정은, 예를 들어, 박스플롯 알고리즘을 기반으로 수행될 수도 있다. 관심 정보 선별 과정은, 변수 값이 변화하는 때의 데이터만은 관심 정보로 선별하여 추출하는 과정을 포함할 수 있다.
메모리 정보의 획득 및/또는 가공 이후 획득 및/또는 가공된 메모리 정보에 대한 학습 처리가 수행될 수 있다(304). 구체적으로 예를 들어, 획득한 정보에 대하여 채널 별로 채널 특성을 획득하여 수행될 수 있다. 이 경우, 학습 처리는 소정의 학습 알고리즘을 기반으로 수행될 수 있으며, 예를 들어, 콘볼루션 신경망 등을 기반으로 수행될 수 있다. 일 실시예에 의하면, 학습 과정에 있어서 채널 특성에 대해 대응하는 변수 타입이 연결될 수 있으며, 보다 구체적으로는 변수 타입에 대응하는 데이터가 연결될 수 있다. 변수의 타입에 대응하는 데이터는, 예를 들어, 연결 이전에 학습 알고리즘에 의해 처리된 후 원 핫 인코딩된 변수 타입 클래스 특성을 포함할 수 있다.
한편, 프로그램 코드로부터 연산 정보가 획득되면(312), 연산 정보는 소정의 학습 알고리즘(일례로 연산투벡터 아키텍쳐)를 기반으로 벡터화될 수 있다(314). 연산투벡터 아키텍쳐는 자연어를 벡터화하기 위해 이용되는 워드투벡터 아키텍쳐를 이용하여 구현 가능하다. 벡터화된 연산 정보는 적어도 하나의 학습 알고리즘(예를 들어, 콘볼루션 신경망 등)에 입력되어 학습 처리되고(316), 그 결과에 따라 제어 특성이 획득될 수 있다.
또한, 프로그램 코드로부터 관계 정보가 획득될 수 있다(322). 여기서, 관계 정보는 프로그램 코드 내의 각각의 라인을 노드로 하는 라인 간의 관계에 대한 정보를 포함할 수 있다. 관계 정보가 획득되면, 관계 정보에 대응하는 관계 그래프(그래픽 트리)가 획득될 수 있다(324). 관계 그래프는 예를 들어, 할당 라인에서 추상 구문 트리 등을 이용하여 구문을 파싱하는 등의 방법으로 통해 생성될 수 있다.
상술한 바와 같이 메모리 정보에 대한 처리 결과와, 제어 특성과, 관계 그래프가 획득되면, 이들 데이터는 결합되어 처리될 수 있다(330). 구체적으로 메모리 특성, 제어 특성 및 관계 그래프 중 적어도 둘은 조합되어 학습 처리될 수 있으며, 이에 따라 변수 간의 관계와, 라인 간의 관계와, 메모리 특성과, 제어 특성 모두를 반영한 학습이 가능하게 될 수 있다. 여기서, 학습 처리는 그래프 어텐션 네트워크, 그래프 오토 인코더, 그래프 트리 콘볼루션 네트워크(GTC), 그래프 트리 어텐션 네트워크(GTA), 그래프 트리 오토 인코더(GTAEs), 그래프 트리 리커시브 네트워크(GTR), 그래프 트리 리커시브 어텐션 네트워크(GTRAs) 및 그래프 트리 리커시브 오토 인코더(GTRAEs) 중 적어도 하나를 기반으로 수행될 수도 있다. 즉, 상술한 수학식(들)에 기재된 바와 같은 연산을 통해 이들 데이터의 조합 학습이 수행될 수도 있다. 학습 결과의 독출에 따라서 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터가 획득될 수 있게 된다(332).
획득된 임베딩 벡터는 필요에 따라 저장부나 출력부에 전달되고 기록 또는 외부로 출력될 수 있으며, 상황에 따라 지도 학습, 비지도 학습 또는 준 지도 학습에 이용될 수도 있다(334).
상술한 실시예에 따른 프로그램 코드 처리 방법은, 컴퓨터 장치에 의해 구동될 수 있는 프로그램의 형태로 구현될 수 있다. 여기서 프로그램은, 프로그램 명령, 데이터 파일 및 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 프로그램은 기계어 코드나 고급 언어 코드를 이용하여 설계 및 제작된 것일 수 있다. 프로그램은 상술한 방법을 구현하기 위하여 특별히 설계된 것일 수도 있고, 컴퓨터 소프트웨어 분야에서 통상의 기술자에게 기 공지되어 사용 가능한 각종 함수나 정의를 이용하여 구현된 것일 수도 있다. 또한, 여기서, 컴퓨터 장치는, 프로그램의 기능을 실현 가능하게 하는 프로세서나 메모리 등을 포함하여 구현된 것일 수 있으며, 필요에 따라 통신 장치를 더 포함할 수도 있다.
상술한 프로그램 코드 처리 방법을 구현하기 위한 프로그램은, 컴퓨터에 의해 판독 가능한 기록 매체에 기록될 수 있다. 컴퓨터에 의해 판독 가능한 기록 매체는, 예를 들어, 솔리드 스테이트 드라이브(SSD), 롬, 램 또는 플래시 메모리 등과 같은 반도체 저장 장치, 하드 디스크나 플로피 디스크 등과 같은 자기 디스크 저장 매체, 콤팩트 디스크(CD)나 디브이디(DVD) 등과 같은 광 기록 매체, 플롭티컬 디스크 등과 같은 자기-광 기록 매체 및 자기 테이프 등 컴퓨터 등의 호출에 따라 실행되는 특정 프로그램을 저장 가능한 적어도 한 종류의 물리적 장치를 포함할 수 있다.
이상 프로그램 코드 처리 장치 및 프로그램 코드 처리 방법의 여러 실시예에 대해 설명하였으나, 프로그램 코드 처리 장치 및 프로그램 코드 처리 방법은 오직 상술한 실시예에 한정되는 것은 아니다. 해당 기술 분야에서 통상의 지식을 가진 자가 상술한 실시예를 기초로 수정 및 변형하여 구현 가능한 다양한 장치나 방법 역시 상술한 프로그램 코드 처리 장치 또는 프로그램 코드 처리 방법의 일례가 될 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나 다른 구성 요소 또는 균등물에 의하여 대치되거나 또는 치환되더라도 상술한 프로그램 코드 처리 장치이나 프로그램 코드 처리 방법의 일 실시예가 될 수 있다.
10: 프로그램 코드 처리 장치 20: 프로세서
90: 프로그램 코드 91: 메모리 정보
92: 연산 정보 93: 라인 정보
100: 데이터 임베딩부 110: 메모리 정보 전처리부
115: 메모리 정보 학습부 120: 제어 정보 전처리부
121: 벡터화부 130: 관계 정보 전처리부
140: 결합 데이터 처리부 200: 학습처리부
210: 지도 학습 처리부 220: 비지도 학습 처리부
230: 준지도 학습 처리부

Claims (16)

  1. 프로그램 코드의 실행에 따른 메모리 정보의 전처리를 수행하는 메모리 정보 전처리부;
    상기 프로그램 코드의 연산 정보를 추출하고 상기 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 제어 정보 전처리부;
    상기 프로그램 코드 내에서 할당이 수행되는 위치에 대한 정보를 기반으로 관계 그래프를 획득하는 관계 정보 전처리부; 및
    상기 메모리 정보의 전처리 수행 결과와, 상기 제어 특성과, 상기 관계 그래프를 기반으로 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 결합 데이터 처리부;를 포함하는 프로그램 코드 처리 장치.
  2. 제1항에 있어서,
    상기 결합 데이터 처리부는, 그래프 어텐션 네트워크(GATs Network: Graph Attention Networks), 그래프 오토 인코더(Graph Auto Encoder), 그래프 트리 콘볼루션 네트워크(GTC Network: Graph Tree Convolutional Neural Network), 그래프 트리 어텐션 네트워크(GTA Network: Graph Tree Attention Network), 그래프 트리 오토 인코더(GTAEs Network: Graph Tree Auto Encoders), 그래프 트리 리커시브 네트워크(GTR Network: Graph Tree Recursive Neural Network), 그래프 트리 리커시브 어텐션 네트워크(GTRAs Network: Graph Tree Recursive Attention Networks) 및 그래프 트리 리커시브 오토 인코더(GTRAEs : Graph Tree Recursive Auto Encoder) 중 적어도 하나의 학습 모델을 이용하여 상기 메모리 정보의 전처리 수행 결과와, 상기 제어 특성과, 상기 관계 그래프를 기반으로 학습을 수행함으로써 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 프로그램 코드 처리 장치.
  3. 제1항에 있어서,
    상기 메모리 정보 전처리부는, 상기 프로그램 코드의 변수에 대한 상태를 각각의 타입에 따라 획득하고, 이상 값 처리 및 노이즈 제거 중 적어도 하나를 수행하여 상기 메모리 특성을 획득하는 프로그램 코드 처리 장치.
  4. 제1항에 있어서,
    상기 제어 정보 전처리부는, 벡터화된 연산 정보에 대한 학습 처리를 수행하여 상기 제어 특성을 획득하는 프로그램 코드 처리 장치.
  5. 제1항에 있어서,
    상기 관계 그래프는, 상기 프로그램 코드의 라인 중 할당 연산이 발생하는 할당 라인에서 구문을 파싱하고 파싱 결과를 기반으로 생성된 프로그램 코드 처리 장치.
  6. 제1항에 있어서,
    상기 관계 그래프는, 적어도 하나의 그래프 트리 노드를 갖는 그래프 트리를 포함하는 프로그램 코드 처리 장치.
  7. 제1항에 있어서,
    상기 적어도 하나의 임베딩 벡터를 기반으로 학습을 수행하는 학습 처리부;를 더 포함하는 프로그램 코드 처리 장치.
  8. 제7항에 있어서,
    상기 학습 처리부는 상기 적어도 하나의 임베딩 벡터를 기반으로 지도 학습, 비지도 학습 및 준지도 학습 중 적어도 하나를 수행하는 프로그램 코드 처리 장치.
  9. 프로그램 코드의 실행에 따른 메모리 정보의 전처리를 수행하는 단계;
    상기 프로그램 코드의 연산 정보를 추출하고 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 단계;
    상기 프로그램 코드 내에서 할당이 수행되는 위치에 대한 정보를 기반으로 관계 그래프를 획득하는 단계; 및
    상기 메모리 정보에 대한 전처리 수행 결과, 상기 제어 특성 및 상기 관계 그래프를 기반으로 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 단계;를 포함하는 프로그램 코드 처리 방법.
  10. 제9항에 있어서,
    상기 메모리 정보에 대한 전처리 수행 결과, 상기 제어 특성 및 상기 관계 그래프를 조합하여 학습을 수행하여 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 단계는,
    그래프 어텐션 네트워크, 그래프 오토 인코더, 그래프 트리 콘볼루션 네트워크, 그래프 트리 어텐션 네트워크, 그래프 트리 오토 인코더, 그래프 트리 리커시브 네트워크, 그래프 트리 리커시브 어텐션 네트워크 및 그래프 트리 리커시브 오토 인코더 중 적어도 하나의 학습 모델을 이용하여 상기 메모리 특성, 상기 제어 특성 및 상기 관계 그래프를 이용하여 상기 메모리 정보에 대한 전처리 수행 결과, 상기 제어 특성 및 상기 관계 그래프에 대한 학습을 수행함으로써 상기 프로그램 코드에 대응하는 적어도 하나의 임베딩 벡터를 획득하는 단계;를 포함하는 프로그램 코드 처리 방법.
  11. 제9항에 있어서,
    상기 프로그램 코드의 동작에 따른 메모리 정보의 전처리를 수행하는 단계는,
    상기 프로그램 코드의 변수에 대한 상태를 각각의 타입에 따라 획득하는 단계; 및
    상기 상태 정보에 대한 이상 값 처리 및 노이즈 제거 중 적어도 하나를 수행하여 상기 메모리 특성을 획득하는 단계;를 포함하는 프로그램 코드 처리 방법.
  12. 제9항에 있어서,
    상기 프로그램 코드의 연산 정보를 추출하고 연산 정보에 대한 벡터화를 수행하여 제어 특성을 획득하는 단계는,
    벡터화된 연산 정보에 대한 학습 처리를 수행하여 상기 제어 특성을 획득하는 단계;를 포함하는 프로그램 코드 처리 방법.
  13. 제9항에 있어서,
    상기 관계 그래프는, 상기 프로그램 코드의 라인 중 할당 연산이 발생하는 할당 라인에서 구문을 파싱하고 파싱 결과를 기반으로 생성된 것인 프로그램 코드 처리 방법.
  14. 제9항에 있어서,
    상기 관계 그래프는, 적어도 하나의 그래프 트리 노드를 갖는 그래프 트리를 포함하는 프로그램 코드 처리 방법.
  15. 제9항에 있어서,
    상기 적어도 하나의 임베딩 벡터를 기반으로 학습을 수행하는 단계;를 더 포함하는 프로그램 코드 처리 방법.
  16. 제15항에 있어서,
    상기 적어도 하나의 임베딩 벡터를 기반으로 수행되는 학습은, 지도 학습, 비지도 학습 및 준지도 학습 중 적어도 하나를 포함하는 프로그램 코드 처리 방법.
KR1020210080297A 2021-06-21 2021-06-21 프로그램 코드 처리 장치 및 방법 KR102609946B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210080297A KR102609946B1 (ko) 2021-06-21 2021-06-21 프로그램 코드 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210080297A KR102609946B1 (ko) 2021-06-21 2021-06-21 프로그램 코드 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220169778A true KR20220169778A (ko) 2022-12-28
KR102609946B1 KR102609946B1 (ko) 2023-12-04

Family

ID=84538285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210080297A KR102609946B1 (ko) 2021-06-21 2021-06-21 프로그램 코드 처리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102609946B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102521246B1 (ko) * 2023-01-30 2023-04-14 주식회사 그래파이 엣지 기반 트랜잭션 사기 탐지 방법 및 이를 수행하는 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102096017B1 (ko) * 2018-11-29 2020-04-01 중앙대학교 산학협력단 추상 구문 트리를 기반으로 소스코드를 임베딩하여 소프트웨어 버그를 예측하는 방법 및 시스템
KR20200097218A (ko) * 2019-02-07 2020-08-18 고려대학교 산학협력단 Gcn 기반의 어셈블리 코드 학습 장치 및 방법과 이를 이용한 보안 약점 탐지 장치 및 방법
WO2020236744A1 (en) * 2019-05-21 2020-11-26 X Development Llc Automated identification of code changes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102096017B1 (ko) * 2018-11-29 2020-04-01 중앙대학교 산학협력단 추상 구문 트리를 기반으로 소스코드를 임베딩하여 소프트웨어 버그를 예측하는 방법 및 시스템
KR20200097218A (ko) * 2019-02-07 2020-08-18 고려대학교 산학협력단 Gcn 기반의 어셈블리 코드 학습 장치 및 방법과 이를 이용한 보안 약점 탐지 장치 및 방법
WO2020236744A1 (en) * 2019-05-21 2020-11-26 X Development Llc Automated identification of code changes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102521246B1 (ko) * 2023-01-30 2023-04-14 주식회사 그래파이 엣지 기반 트랜잭션 사기 탐지 방법 및 이를 수행하는 장치

Also Published As

Publication number Publication date
KR102609946B1 (ko) 2023-12-04

Similar Documents

Publication Publication Date Title
KR102071582B1 (ko) 딥 뉴럴 네트워크(Deep Neural Network)를 이용하여 문장이 속하는 클래스(class)를 분류하는 방법 및 장치
JP7403909B2 (ja) 系列マイニングモデルの訓練装置の動作方法、系列データの処理装置の動作方法、系列マイニングモデルの訓練装置、系列データの処理装置、コンピュータ機器、及びコンピュータプログラム
CN111341341A (zh) 音频分离网络的训练方法、音频分离方法、装置及介质
US10796098B2 (en) Instruction understanding system and instruction understanding method
WO2020159890A1 (en) Method for few-shot unsupervised image-to-image translation
CN111680217A (zh) 内容推荐方法、装置、设备及存储介质
CN115244587A (zh) 高效基础事实注释
US11954202B2 (en) Deep learning based detection of malicious shell scripts
CN112287672A (zh) 文本意图识别方法及装置、电子设备、存储介质
CN110717013B (zh) 文档的矢量化
KR102609946B1 (ko) 프로그램 코드 처리 장치 및 방법
JP7427011B2 (ja) センサ入力信号からのコグニティブ・クエリへの応答
CN116547681A (zh) 用于持续演进内容的动态语言模型
CN111557010A (zh) 学习装置和方法以及程序
KR20200099966A (ko) 명목형 데이터를 포함하는 데이터를 기반으로 하는 학습 방법 및 장치
WO2021012040A1 (en) Methods and systems for state navigation
CN112885315B (zh) 模型的生成方法、音乐合成的方法、系统、设备及介质
CN115062769A (zh) 基于知识蒸馏的模型训练方法、装置、设备及存储介质
CN114297022A (zh) 云环境异常检测方法、装置、电子设备和存储介质
JP2023123247A (ja) 分類装置、分類方法およびプログラム
CN113705071A (zh) 设备识别方法、装置、设备及存储介质
KR102669805B1 (ko) 이미지에 포함된 한글 및 수학식을 인식하기 위한 방법 및 장치
US20230138020A1 (en) Evolutionary algorithm analytics
KR102669806B1 (ko) 수학 문제의 풀이를 보조하기 위한 방법 및 장치
WO2023070424A1 (zh) 一种数据库数据的压缩方法及存储设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant