대규모 언어 모델을 이용한 유해사이트 분류하기 2부

1부에서는 유해사이트를 분류하기 위해 대규모 언어 모델(Large Language Model, LLM)인 BERT(Bidirectional Encoder Representations from Transformers)를 어떻게 활용할 것인가에 대해 간략히 살펴보았고, 본 포스팅에서는 학습데이터의 수집과 정제 방법 그리고 BERT로 구현된 유해사이트 분류 모델을 최적화하기 위한 fine-tuning(학습)하는 과정에 대해 알아보도록 하겠습니다.

유해사이트 특징 기반 데이터 수집

도박사이트, 성인사이트 등 유해사이트의 정확한 타입 분류를 위해 선행적으로 사이트가 가지고 있는 특징을 파악하고 이를 학습데이터로 구축하는데, 키워드는 이러한 유해사이트의 여러 특징 중에 하나입니다. 물론 키워드를 통해 유해사이트를 완벽하게 특정할 수 있는 것은 아닙니다. 예를 들어 성인사이트에 존재하는 도박 광고로 인하여 실제 수집되는 성인사이트의 키워드에 도박 관련 키워드가 다수 포함될 수 있습니다. 따라서 키워드를 이용하여 유해사이트를 분류하기 위한 하나의 데이터 전처리 방법으로 각 사이트별로 등장하는 키워드를 추출하여 키워드의 등장 빈도를 측정하고, 어떻게 분포되어 있는지 분석하고 무의미한 키워드를 제거하는 등의 작업 즉, ‘데이터 정제’가 필요합니다.

데이터 정제 과정에 앞서 유해사이트를 특정할 수 있는 유의미한 키워드를 확보하기 위해 유해사이트 내 콘텐츠(그림, HTML TAG)에서 키워드를 추출합니다. 특히 그림1과 같이 이미지에서 많은 유의미한 키워드를 추출할 수 있으며, HTML Title이나 Body에서 키워드가 포함된 텍스트를 수집할 수 있습니다.

그림 1. 유해사이트에서 수집할 수 있는 콘텐츠 (좌 : 사이트 메인화면, 우 : 광고 배너)

이렇게 추출 및 수집한 텍스트 중 무의미한 키워드 또는 문장 단위의 텍스트들이 다수 포함될 수 있어 형태소 분석을 통해 명사를 추출하여 무의미한 키워드를 제거하는 전처리 작업을 수행합니다.

데이터 정제

앞서 설명드렸듯이 성인사이트에 도박 관련 키워드가 다수 포함될 수 있으므로 이를 정제하기 위해 수집한 키워드의 출처 및 사용 빈도 등의 특징을 분석합니다. 아래 표 1은 실제 불법 웹툰 유통사이트에서 수집한 키워드와 빈도수를 나타냅니다.

단어빈도단어빈도단어빈도
코드62웹툰24놀이터7
만화58신규22전용7
가입48일본만화15베팅7
사이트41원피스15게임7
스포츠27카지노14최신6
표 1. 불법 웹툰 유통 사이트에서 수집한 키워드와 빈도수

위 표1의 키워드만으로 어떤 사이트인지 판단할 수 있나요? 키워드만으로는 조금 헷갈릴 수 있습니다. 키워드와 빈도수를 종합해서 판단해 보면 웹툰 유통 사이트라는 것을 조금 더 쉽게 알 수 있습니다. 반면 아래 표 2 사이트는 키워드만으로도 쉽게 도박사이트인지 알 수 있습니다.

단어빈도단어빈도단어빈도
이벤트25게임8미니게임5
충전10입금6카지노5
베팅10가입5홀짝4
바카라8계좌5코인4
사다리8고객5환전3
표 2. 도박사이트에서 수집한 키워드와 빈도수

그림 2. 불법 웹툰 저작물 유통 사이트와 도박사이트

표1에서 알 수 있듯 불법 저작물 유통 사이트에서 추출된 키워드에 ‘카지노’, ‘게임’, ‘베팅’ 등 도박사이트에서나 수집될 수 있는 키워드가 등장하는데요. 이는 사이트에 존재하는 도박사이트의 광고 배너 때문입니다. 이런 키워드를 정제 없이 그냥 사용한다면, 유해사이트 분류에 좋지 않은 영향을 줄 수 있습니다. 이는 BERT모델에 입력되는 데이터의 형태를 보면 쉽게 이해할 수 있습니다. 그림 3처럼 키워드들을 나열하여 하나의 문장으로 만들고 BERT에 입력하면 BERT는 문장 속 단어들의 문맥과 연관성을 학습하여 이해하게 됩니다. 따라서 ‘카지노’라는 단어가 다른 단어의 문맥에 영향을 주고 결과적으로 사이트를 잘 못 분류할 수 있는 가능성이 커지는 것입니다.

그림 3. 사이트별 키워드 문장을 생성하는 모습

이번 포스팅에서는 정상사이트, 도박사이트, 불법 웹툰 배포사이트(이하, 웹툰사이트)는, 불법 영상매체 배포사이트(이하, 토렌트사이트) 그리고 성인사이트를 분류하는 BERT 모델을 생성합니다. 이를 위해 질 좋은 학습데이터를 구축하기 위하여 키워드 정제 과정의 방법으로써 키워드 별로 계산된 빈도수를 바탕으로 정제를 수행합니다. 표 3은 각 사이트별 많이 등장하는 단어 상위 10개를 뽑은 결과입니다.

사이트 종류
정상 도박 웹툰 토렌트 성인
단어 빈도수 단어 빈도수 단어 빈도수 단어 빈도수 단어 빈도수
가입 1966 가입 5316 웹툰 703 드라마 1374 야동 1165
문의 1809 회원 5033 무료 684 영화 1367 일본 1134
회원 1807 로그인 4219 보기 682 스포츠 1351 한국 1076
로그인 1794 추천 4165 성인 672 예능 1317 성인 1065
정보 1769 카지노 4094 만화 668 보기 1298 서양 1064
보기 1764 게임 4086 최신 600 다시 1243 신규 1051
사이트 1604 슬롯 3448 완결 594 실시간 1101 라이브 1022
고객 1599 코드 3321 오늘 561 최신 1071 전용 930
안내 1578 배팅 2718 인기 555 자막 1031 모음 915
이용 1555 충전 2461 최고 522 애니메이션 1002 해외 913
표 3. 각 사이트별 빈도수가 높은 상위 10개의 키워드

표 3에서도 알 수 있듯이 각 사이트별로 대표하는 특정 키워드가 다수 높은 빈도로 등장합니다. 예를 들어 “카지노”, “웹툰”, “영화” 그리고 “야동” 키워드는 각 유해사이트를 특정할 수 있습니다. 더 구체적으로 “카지노”, “베팅”, “슬롯”은 도박사이트를 특정하며, “웹툰”, “만화” 그리고 “완결”이란 키워드로 웹툰사이트를 특정할 수 있습니다. 또한 “드라마”, “영화” 그리고 “스포츠” 또한 토렌트 사이트를 특정할 수 있죠. 마지막으로 “야동” 그리고 “성인”과 같은 단어는 성인사이트를 특정할 수 있습니다. 이제 빈도가 제일 낮은 키워드들을 살펴보겠습니다. 아래 표 4는 유해사이트별 한번씩 등장한 키워드를 5개만 추려보았습니다.

사이트 종류
정상 도박 웹툰 토렌트 성인
단어 빈도수 단어 빈도수 단어 빈도수 단어 빈도수 단어 빈도수
마늘빵 1 람보르기니 1 창세기 1 특별상 1 리포터 1
공화춘 1 호나우두 1 양아들 1 하이티 1 유전자 1
경호처 1 화분 1 외톨이 1 그물 1 보조금 1
적격지 1 공안 1 자타공인 1 거성 1 가부장 1
병무 1 정도전 1 마족 1 악제 1 출국 1
표 4. 각 사이트별 빈도수가 낮은 하위 5개의 키워드들

딱 보아도 연관이 없는 단어들이 주로 분포되어 있음을 알 수 있습니다. 이렇게 등장 빈도를 바탕으로 분석했을 때 어떤 키워드들을 제거해야 하는지에 대한 기준점을 잡을 수 있고, 다음과 같은 기준으로 무의미한 단어를 제거하는 정제 과정을 수행하였습니다.

  • 정상사이트 경우, 800번 미만으로 등장한 단어를 제거
  • 도박사이트 경우, 2000번 미만으로 등장한 단어를 제거
  • 웹툰사이트 경우, 550번 미만으로 등장한 단어를 제거
  • 토렌트사이트 경우, 900번 미만으로 등장한 단어를 제거
  • 성인사이트 경우, 800번 미만으로 등장한 단어를 제거

정제 기준을 통해 키워드를 삭제하는 정제 작업을 한 후 이 키워드를 사이트 내 아예 보유하지 않거나, 보유하더라도 키워드 30개 미만으로 가지고 있는 사이트는 제거하는 작업을 수행하였습니다. 최종적으로 정제하기 전 13,698개였던 사이트의 개수는 정제 과정을 거쳐 12,093개로 감소했습니다. 이 사이트들은 각 사이트별 의미가 있는 키워드를 보유하고 있는 최적의 데이터로 활용됩니다. 정제과정을 거치기 전과 후의 데이터의 분포는 아래 그림과 같이 전체적으로 사이트 개수가 줄어 든 것을 확인할 수 있습니다.

대규모 언어모델 학습

정제된 학습데이터를 사용하여 BERT기반 분류 모델 학습에 앞서 BERT의 기본 구조를 살펴보도록 하겠습니다. 유해사이트 분류모델 학습에 사용한 BERT 모델은 ‘BERT-base-multilingual-cased’ 입니다. 이름만 봐도 느껴지셨죠? 이는 다국어를 지원하여 한국어도 이해할 수 있는 모델이며, 12개의 인코더블록, 768개의 차원, 12개의 셀프 어텐션을 갖는 모델입니다. 12개의 인코더블록은 Transformer의 인코더블록이 그림 4와 같이 전체가 12번 반복하여 처리되는 형태로 구성된 것으로 이해하면 되겠습니다.

그림 5. 유해사이트를 분류하는 BERT의 동작 예

BERT에 입력되는 단위를 토큰이라고 부르는데 하나의 토큰당 768길이의 차원을 갖습니다. 그리고 하나의 인코더에는 12개의 Multi-Head 셀프 어텐션이 있습니다. 이는 입력되는 각각의 토큰의 임베딩 768차원의 길이를 어텐션 헤드 수 만큼인 12등분하여 64개씩 12조각으로 어텐션에 입력하여 연산을 수행합니다. 여기서! 가장 핵심적인 부분은 Multi-head 어텐션인데, 말 그대로 헤드가 여러 개인 어텐션을 뜻하고, 서로 다른 가중치 행렬을 이용해 어텐션을 토큰 개수만큼 계산한 다음 이를 서로 연결한 결과를 가지고 토큰이 문장 내 다른 토큰과의 연관성을 학습할 수 있게 됩니다. 우리가 해결하고자 하는 분류 문제를 쉽게 그림으로 예를 들어 설명 드리겠습니다.

그림 6. 하나의 어텐션 헤더에서의 연산 과정

그림 6은 어텐션의 연산을 간단히 표현한 그림입니다. 실제 BERT에 입력되는 토큰이 ‘홀덤’, ‘카지노’와 같이 고유 명사로 딱 떨어지지 않겠지만 이해를 돕기 위해 단순화하여 표현하겠습니다. ‘카지노’, ‘홀덤’, ‘슬롯’, ‘호나우두’ 4개의 토큰이 존재하고 각 토큰마다 1×4 사이즈의 임베딩 벡터가 있으며 총 크기는 4×4입니다. 이 임베딩은 셀프 어텐션의 연산에 사용되는데, 이 과정에서 하나의 토큰이 공존하고 있는 문장 속에 다른 토큰들에 대해 얼마만큼 집중할 것인지 결정합니다. 임베딩 벡터에 4×2 크기의 서로 다른 3개의 가중치 행렬을 곱하여 쿼리(Query), 키(Key), 값(Value) 행렬을 계산합니다. 이제 쿼리, 키, 값 행렬은 4단계에 걸쳐 어텐션 연산을 수행합니다. 우선 1단계에서 쿼리 행렬과 키 행렬의 내적 연산을 수행합니다. 이 과정에서 쿼리와 키 내적 행렬의 첫 번째 행은 쿼리 벡터 1 행과 키 벡터 1,2,3,4열과 내적을 계산한다는 것을 알 수 있습니다. 두 벡터 사이의 내적을 계산하면 벡터끼리 얼마나 유사한지를 알 수 있습니다. 즉 ‘카지노’의 쿼리 벡터와 ‘홀덤’, ‘슬롯’, ‘호나우두’의 키 벡터 사이의 유사도를 계산한 것입니다. 2단계에서는 1단계에서 계산된 유사도 값을 키 벡터 차원 64의 제곱근 8로 나눕니다. 3단계에서는 2단계에서 계산한 값을 softmax 함수로 정규화 작업을 합니다. 최종적으로 3단계에서 계산한 행렬에 값 행렬을 곱하여 어텐션 행렬을 계산합니다. 이를 수식으로 표현하며 다음과 같습니다.

이 방법을 적용하면 이렇게 단어가 문장 내에 있는 다른 단어와 얼마나 연관성이 있는지를 알 수 있습니다. 쉽게 말하면 ‘홀덤’과 ‘카지노’는 서로 엄청 친하다는 정보를, ‘홀덤’은 ‘호나우두’와 친하지 않다는 정보를 알 수 있는 것이죠. 어텐션 연산을 통해서 친하게 지내는 토큰들을 BERT가 이해했다는 것을 바탕으로 이제 BERT 이해한 지식에 맞게 어떤 유해사이트인지만 알려만 준다면, 바로 유해사이트 분류모델이 되는 것이죠. 우리는 토큰이 있는 문장이 어느 유해사이트에서 왔는지 답을 알고 있습니다. 그래서 우리는 정상 사이트는 1, 도박사이트는 2, 불법 웹툰 배포사이트는 3, 불법 영성매체 배포사이트는 4 그리고 성인사이트는 5로 라벨을 설정했습니다. 분류모델이 되기 위해서 BERT의 끝단에 기존 BERT모델의 결과 값을 입력으로 받는 선형 변환 함수를 추가하여 학습하며, BERT의 최종 값은 선형 변환 함수에 의해 총합이 1이 되는 5개 Index를 갖는 배열 값이 됩니다. 그림 5와 같이 어떤 사이트에 대한 최종 결과값이 [0.006, 0.974, 0.011, 0.004, 0.005]와 같았을 때, 두번째 Index에 제일 높은 가중치가 부여되었고, 해당 사이트가 도박사이트로 분류될 수 있는 것이지요. 데이터 수집 및 정제, BERT 분류 모델 학습에 대해 단편적으로 요약하여 설명하였지만, 전체적으로 이러한 과정 및 최적화를 통해 유해사이트를 분류하는 BERT 분류 모델을 구현할 수 있습니다.

글을 마치며

본 글에서는 유해사이트를 탐지하고 분류하기 위해 데이터를 수집 및 정제하고, LLM 기반의 분류 모델을 학습하는 방법에 대해 살펴보았습니다. 다음 포스팅에서는 LLM을 이용하여 유해사이트를 분류한 결과를 정량적으로 설명 즉, 판단 근거를 제시할 수 있도록 설명가능한 인공지능(Explainable Artificial Intelligence, XAI)을 적용하는 연구로 찾아 뵙도록 하겠습니다.

<참고문헌>

[1] 이경석 외 3명, “도박사이트 탐색을 위한 웹사이트 분류 방법 및 XAI 기반 키워드 트렌드 분석 기법”, KIISE, vol. 29(6), pp. 282-288, 2023.
[2] 최규현, “대규모 언어 모델을 이용한 유해사이트 분류하기 1부”, CSRC Weblog, 2023.
[3] J. Devlin et al., “BERT: pre-training of deep bidirectional transformers for language understanding,” arXiv preprint arXiv:1810.04805, 2018
[4] Chi Sun et al., “How to Fine-Tune BERT for Text Classification”, arXiv:1905.05583, 2020.
[5] G.H Choi et al., “Detecting and Classifying Harmful Websites with Specific Korean Keywords Using a Large Language Model”, 2024 IEEE International Conference on Big Data and Smart Computing, 2024.
[6] https://docs.likejazz.com/bert/
[7] https://ebbnflow.tistory.com/151

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다