AI 기반 데이터 프라이버시 – 언어모델을 이용한 개체명 인식과 개인정보 가명처리

최근 몇 년간 빅데이터의 급격한 발전과 인공지능(AI) 기술의 진보로 인해 대규모의 텍스트 데이터가 다양한 산업에서 활용되고 있습니다. 이러한 데이터에는 개인정보뿐만 아니라 기업의 기밀정보, 국가 안보와 관련된 민감한 정보 등이 포함될 수 있으며, 이를 적절히 보호하는 것은 매우 중요한 과제로 떠오르고 있습니다. 데이터의 민감정보 유출을 막기 위해서 기존의 정보 보호 기술에서는 가상 사설망이나 방화벽과 같은 네트워크 보안기술과 접근권한 제한과 같은 권한 관리 방법 그리고 데이터를 암호화하는 방식에 의존해 왔습니다. 그러나 악의적인 내부자에 의한 유출이나 네트워크 보안의 취약점을 이용한 데이터 갈취 그리고 보안 인식의 부족 등과 같은 문제로 인해 데이터 유출을 해결하는데 한계가 있습니다. 그렇기 때문에 데이터 유출에 사용된 메일이나 메신저와 같은 플랫폼 속에서의 유출 정보를 식별할 수 있는 문맥 인식형 표적 정보 식별 기술의 필요성이 대두되고 있습니다. 텍스트 데이터는 그 자체로 중요한 정보를 포함하고 있을 뿐만 아니라, 문맥적 해석을 통해 표면적으로 드러나지 않은 정보까지 유추될 수 있는 특성을 가집니다. 이런 텍스트의 특징을 활용한 민감정보 식별 기술에는 자연어 처리 기술이 사용될 수 있으며, 특히 자연어 처리 기술인 언어모델이 발전하면서 문맥 정보를 활용한 민감정보 식별이 가능해졌습니다. 이는 단순한 키워드 매칭을 넘어 문맥을 인식하고 식별해야 할 중요한 표적 정보를 효과적으로 식별하는 것을 가능케 하였습니다.

본 글에서는 문맥인식 능력이 있는 BERT 모델에 기반한 개체명 인식 모델을 만들고, 이 개체명 인식 모델을 통해 궁극적으로 개인정보를 식별하는 모델에 대해 살펴보고자 합니다.

그림 1. 실제 민감정보 유출이 일어나고 있는 사회 현실의 예

개인정보 식별을 위한 개체명 인식 모델

본 장에서는 개인정보를 식별하는 모델을 학습하기 위해 기본적으로 알고 있으면 좋은 개념들에 대해 먼저 알아보고 이어서 학습하는 과정에 대해 설명하도록 하겠습니다.

개체명 인식이란?

개체명 인식(NER, Named Entity Recognition)은 자연어 처리(NLP) 분야의 한 응용 기술로, 문장에서 특정한 유형의 단어를 찾아내고, 이를 미리 정의된 개체명(Named Entity) 유형에 따라 분류하는 과정입니다. 예를 들어, “홍길동은 대전에 있는 KAIST에 다녀”라는 문장이 있을 때, “홍길동”은 사람(PER), “대전”은 장소(LOC), “KAIST”는 조직(ORG)이라는 개체명으로 인식됩니다. NER의 주요 목적은 텍스트 내에서 유의미한 정보를 구조화하는 것이며, 대표적인 개체명 유형에는 인물(PER), 장소(LOC), 조직(ORG), 날짜(DATE), 금액(MONEY) 등이 있습니다.

이렇게 개체명 인식을 통해 문장 내 유의미한 정보를 구조화하게 되면 개인정보가 되는 대상에 대해서 개체명 유형으로 직접 설정할 수 있고, 개체명 인식 모델을 통해 대상을 쉽게 찾을 수 있습니다. 이런 개체명 유형을 그대도 사용해도 되지만 같은 유형을 갖는 긴 단어와 연속된 단어에 대해서는 개체명의 일부인지 여부와 위치 정보를 파악해야 하며, 이를 위해 BIO 태그라는 것을 사용합니다.

그림 2. 개체명 인식 예

BIO 태그란?

BIO 태그는 개체명 인식(NER)과 같은 시퀀스 레이블링 작업에서 사용되는 태그 체계로, 문장에서 각 단어가 특정 개체명의 일부인지 여부와 위치 정보를 표현하는 방식입니다. 이 체계는 토큰 단위로 개체명을 구분하는 데 유용하며, “B”, “I”, “O”라는 세 가지 태그를 사용합니다. 각각의 태그는 다음과 같은 의미를 가지고 있습니다.

• B (Begin): 개체명이 시작되는 단어에 붙습니다. 예를 들어, “홍길동” 이라는 인물명에서 “홍”과 “길동”이 분리되었다고 가정한다면, “홍“은 ”PER_B”로 태그됩니다.

• I (Inside): 개체명의 중간이나 끝에 오는 단어에 붙습니다. “홍 길동”에서 “길동”는 “PER_I”로 태그됩니다.

• O (Outside): 개체명이 아닌 단어에 붙습니다. 즉, 개체명 태그가 필요 없는 일반 단어들에 사용됩니다.

이 방식을 통해 BIO 태그는 문장의 모든 단어에 대해 해당 단어가 개체명인지 아닌지를 표시하며, 동시에 해당 단어가 개체명의 시작인지, 중간 혹은 끝 부분인지를 구분합니다.

아래의 예시를 통해 BIO 태그가 어떻게 사용되는지 함께 봅시다.

예시 문장으로 “홍길동은 대전에 있는 KAIST에 다녀”을 BIO 태그로 표시하면 다음과 같이 나타낼 수 있습니다.

표 1. 예시 문장의 BIO 태그를 했을 때의 예

단어태그
PER_B
길동PER_I
O
대전LOC_B
O
있는O
KAISTORG_B
O
다녀O

이 예시를 자세하게 설명하면 다음과 같습니다.

• “홍”은 개체명(Person)의 시작이므로 “PER_B”로 태그됩니다.

• “길동”는 동일한 개체명의 일부이며, 개체명의 중간에 있으므로 “PER_I”로 태그됩니다.

• “대전“은 장소(Location)로 인식되어 “LOC_B” 태그가 붙습니다.

• “KAIST“는 기관(Organization)으로 인식되어 “ORG_B” 태그가 붙습니다.

그림 3. BIO 태그와 개체명 유형을 결합한 데이터 구성의 예

위와 같이 개체명 유형과 BIO 태그를 결합한 형태는 AI 기반 개체명 인식 모델의 미세조정을 위한 학습데이터의 형태로 사용될 수 있습니다. 우리는 개체명 인식 모델로 BERT(Bidirectional Encoder Representations from Transformers)를 활용할 것입니다.

BERT-CRF 기반 개체명 인식 모델

BERT는 구글이 2018년에 발표한 사전 학습된 언어모델로 다양한 NLP 작업에 적용될 수 있도록 사전 학습(Pre-training)과 미세 조정(Fine-tuning)이라는 두 가지 단계로 학습됩니다. 사전 학습 단계에서 대규모 텍스트 데이터를 사용해 언어모델을 학습하고, 이후 각 작업(NER, 감정 분석 등)에 맞춰 미세조정을 통해 최적화됩니다. 그래서 정의한 개체명 유형과 BIO 태그를 사용하여 학습데이터를 만들어 BERT를 미세 조정하면 원하는 개인정보를 식별하는 모델을 얻을 수 있습니다.

BERT와 CRF(Conditional Random Field)를 결합한 개체명 인식기(NER) 모델은 BERT의 문맥 이해 능력과 CRF의 시퀀스 레이블링 성능을 함께 활용해 성능을 높인 모델입니다. 이 결합은 NER, POS 태깅 등의 시퀀스 레이블링 태스크에서 탁월한 성능을 보여줍니다. NER과 같은 시퀀스 레이블링 작업에서는 각 토큰의 개별적인 문맥 이해뿐만 아니라 인접한 토큰 간의 상관관계도 매우 중요합니다. 예를 들어, BERT는 각 토큰에 대한 독립적인 예측은 잘 수행하지만, 특정 개체명이 여러 단어로 이루어진 경우 이를 전체적으로 하나의 개체로 인식하지 못할 수 있습니다. CRF는 이런 시퀀스 구조를 최적화하는 데 강점이 있으며, 이전 및 다음 토큰 간의 관계를 반영하여 더 일관된 레이블링을 가능하게 합니다. BERT의 문맥적 정보와 CRF의 시퀀스 구조 정보가 결합되어 더 높은 정확도의 레이블 예측이 가능합니다. CRF가 인접한 토큰 간 전이 확률을 최적화함으로써, 연속된 개체명 인식에서 불연속적인 오류가 줄어들고, 문장의 의미에 더 적합한 일관된 결과를 제공합니다. 개체명이 여러 단어로 이루어진 경우에도 CRF가 전체 시퀀스를 최적화하기 때문에 보다 자연스럽게 인식할 수 있습니다.

이렇게 BERT-CRF 모델은 크게 BERT 레이어와 CRF 레이어 두 부분으로 구성됩니다. BERT는 문장의 각 토큰에 대한 문맥 임베딩을 생성하고, CRF는 이 임베딩을 바탕으로 시퀀스 레이블링을 수행합니다. BERT의 마지막 레이어에 CRF 레이어를 결합하여 하나의 모델을 구성합니다. 다음으로 각 레이어별 task수행 역할을 설명드리겠습니다.

그림 4. BERT-CRF 기반 개체명 인식 모델의 구조도 예

(1) BERT 임베딩 레이어

문장 입력 및 토큰화: 입력 문장을 BERT 모델의 입력 형식에 맞게 토큰화하고, 각 토큰을 임베딩합니다.

BERT 아키텍처: BERT의 다층 트랜스포머 구조는 문장 내의 모든 토큰을 양방향 문맥에서 이해할 수 있도록 합니다. 각 토큰은 문장 전체의 문맥 정보를 반영한 임베딩을 얻게 됩니다.

출력 임베딩: 최종적으로 각 토큰은 고차원 벡터 형식의 문맥 정보를 포함한 출력 임베딩을 얻습니다. 이 출력은 BERT의 마지막 레이어 또는 특정 레이어의 출력을 사용할 수 있습니다.

(2) CRF 레이어

BERT의 출력 임베딩은 단어별로 의미를 잘 파악할 수 있지만, 시퀀스 구조를 완전히 고려하지는 않습니다. 여기서 CRF가 추가되어 시퀀스 구조를 최적화합니다.

CRF의 목적: CRF는 시퀀스 전체에서 최적의 레이블 시퀀스를 선택하는 역할을 합니다. 개별 토큰에 대한 레이블을 독립적으로 예측하는 대신, 문장 전체 레이블링의 전이 확률(transition probability)을 최적화하여 결과의 일관성을 높입니다.

전이 행렬(Transition Matrix): CRF는 각 레이블 간 전이 확률을 나타내는 전이 행렬을 학습합니다. 예를 들어, PER_B(사람 이름의 시작 토큰) 뒤에 PER_I(사람 이름의 내부 토큰)가 올 확률을 높이는 식으로 학습하여 더 자연스러운 시퀀스를 만들어냅니다.

시퀀스 최적화(Decoding): CRF는 Viterbi 알고리즘을 사용해 최적의 레이블 시퀀스를 추론합니다. 이 과정에서 시퀀스 전체의 확률을 최대화하는 레이블 시퀀스를 찾으며, 이는 단일 토큰별 예측보다 더 높은 일관성과 정확도를 제공합니다.

개체명 인식 모델 학습 과정

BERT-CRF 모델의 학습은 크게 두 단계로 이루어집니다. BERT가 개체명 인식에 최적화된 임베딩을 만들기 위해서 미세조정을 수행합니다. BERT가 이미 사전 학습된 모델을 사용한다면, 이 BERT 레이어를 고정하거나 NER 데이터셋으로 미세 조정(fine-tuning)을 수행할 수 있습니다. 미세 조정은 BERT의 파라미터가 NER 작업에 맞게 업데이트되도록 하여, 특정 개체명 인식에 더 최적화된 임베딩을 생성하게 합니다. BERT가 각 토큰의 임베딩을 제공하면, CRF는 이 임베딩을 사용하여 시퀀스 레이블링을 위한 전이 행렬을 학습합니다. 이 과정에서 CRF는 각 레이블 시퀀스의 log-likelihood를 최대화하도록 학습합니다. 최종적으로 BERT와 CRF가 결합된 상태로 NER 예측이 이루어지며, 이는 개별 레이블 예측이 아닌 시퀀스 전체를 고려한 최적화된 결과를 제공합니다.

이런 과정을 통해 개인정보 식별에 탁월한 개체명 인식 모델을 학습할 수 있습니다. 실제로 인터넷에서 수집할 수 있는 오픈 데이터들을 사용하여 학습데이터를 구축하고 이를 BERT-CRF 기반의 NER 모델을 학습해 본 결과 비식별화 대상에 대해 정확하게 식별하고 이를 가명처리 할 수 있다는 것을 실제 실험을 통해 검증할 수 있었습니다.

학습에 사용한 데이터는 주로 연구 목적으로 사용되는 오픈 데이터와 생성형 언어모델로 생성한 데이터, 뉴스 기사에서 발췌한 문장들로 구성되어 있습니다. 자세한 데이터 정보는 다음과 같습니다.

표 2. 학습데이터 구축에 사용한 다양한 종류의 데이터

구분데이터 종류
1Naver&창원대 NER 데이터
2한국해양대 NER 데이터
3공공데이터 – 전국 소상공인 상호명, 주소 리스트 약 4천개
4ChatGPT로 생성한 사람이름 500개
5사람이름 + 상호명 + 주소를 활용하여 생성한 문장
6인터넷 뉴스 기사에서 발췌한 문장 약 1200줄 (정치, 사회, 스포츠)

한국어 임베딩을 생성할 수 있는 distilKoBERT와 토크나이저로 kobert-base-v1을 사용했습니다. 이 모델을 GeFoce RTX 3090 24GB 장비에 약 8시간 동안 학습했을 때 아래와 같은 개인정보 가명처리 결과를 얻을 수 있었습니다. 개인정보 식별 모델을 위해 인물(PER), 장소(LOC), 조직(ORG) 3개의 큰 카테고리를 설정하고, 장소 안에 도로명 주소(LOC_DORO)를 세부 카테고리로 설정했습니다.

그림 6. BERT-CRF 기반 NER 모델을 활용한 비식별화 처리 예

3개의 예시 문장에서 볼 수 있듯이, 학습한 NER 모델이 인물(PER), 장소(LOC), 조직(ORG)에 해당하는 단어들을 식별하여 찾아낸 것을 확인할 수 있습니다. 이렇게 식별된 대상에 대해 사용자는 원하는 비식별화 처리 방식대로 마스킹 단어를 사용하여 대체하는 등의 가명처리를 할 수 있습니다.

글을 마치며

본 글에서 언어모델을 사용하여 개체명 인식 모델을 만들고 이를 활용하여 개인정보를 식별하는 기술에 대해 설명하였습니다. 문맥 이해가 가능한 AI 모델을 활용한다면 식별 대상에 대해 정확한 탐지가 가능합니다. 이를 활용한다면 개인정보뿐 아니라 기업문서의 기밀정보나, 정부 기관의 국가기밀정보 유출 방지에도 활용될 수 있을 것입니다. 또한, 유해사이트와 같은 사이버 범죄 관련 웹사이트에서 수집 가능한 OSINT 정보, HTML, JavaScript 등의 비정형적 콘텐츠에서 범죄 관련 유의미한 문맥정보를 인식하여 운영조직을 특정할 수 있는 가입코드, 전화번호, 계좌정보 등 범죄 정보를 자동으로 식별할 수 있다면, 이러한 범죄 정보를 확장 및 활용하여 유해사이트의 운영조직을 보다 효과적으로 추적하고 찾아낼 수 있을 것으로 예상하고 있습니다. 다음 포스팅에서는 본 연구를 기반으로 하여 유해사이트에서 운영조직을 식별하는 기술에 대해 찾아뵙도록 하겠습니다.

참고문헌

[1] 개인정보보호위원회, “가명정보 처리 가이드라인”, 개인정보보호위원회, 2024.
[2] Souza, Fábio, Rodrigo Nogueira, and Roberto Lotufo. “Portuguese named entity recognition using BERT-CRF.” arXiv preprint arXiv:1909.10649, 2019.
[3] 한국정보통신기술협회, “개체명 태그 세트 및 태깅 말뭉치 가이드라인”, TTAK.KO-10.0852 정보통신단체표준(국문표준), 한국정보통신기술협회, 2015.
[4] J. Devlin et al., “BERT: pre-training of deep bidirectional transformers for language understanding,” arXiv preprint arXiv:1810.04805, 2018.
[5] Naver&창원대 NER 데이터, https://github.com/naver/nlp-challenge, 2018
[6] 한국해양대학교 NER 데이터, https://github.com/kmounlp/NER, 2019
[7] Hwang, Seokhyun, et al. “Korean Named Entity Recognition using BERT.” Proceedings of the Korea Information Processing Society Conference. Korea Information Processing Society, 2019.
[8] Ye, Wei, et al. “Exploiting entity BIO tag embeddings and multi-task learning for relation extraction with imbalanced data.” arXiv preprint arXiv:1906.08931, 2019.

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