본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 09. 19:34

초경량 LM을 구상하며

요약

본 글은 기존의 ONE-HOT 방식과 Bag Of Words의 한계를 극복하기 위해 'MULTI-HOT'이라는 새로운 특징 추출 방식을 제안합니다. 이 방식은 단어의 위치 정보(거리)를 가중치로 활용하여 문맥적 의미를 보존하며, 창 분석(Window Analysis)을 통해 문서 전체의 특징 벡터를 생성하는 방법을 설명합니다.

핵심 포인트

  • MULTI-HOT: ONE-HOT 총합 방식을 개선한 새로운 특징 추출 방식입니다.
  • 위치 정보 손실 문제를 해결하기 위해 단어 간 거리를 가중 계수로 사용합니다.
  • 창 분석(Window Analysis)을 통해 문맥적 정보를 활용하여 문서 전체의 특징 벡터를 생성할 수 있습니다.

대화 AI의 기본이 되는 Transformer보다 가볍고 문장 예측이 가능한 특징(feature) 추출 방식을 만듭니다.

본 기사는 그 기록입니다.

업무 프로그램 등에서 데이터를 다룰 경우, [남성][여성][기타]와 같은 구분 플래그를 다룬다고 가정해 봅시다.

ONE-HOT이란 [남성][여성][기타]라는 정보를 다음과 같이 처리하는 것입니다.

종류 수(3)의 배열을 준비하고, 인덱스를 다음과 같이 설정합니다.
남성 = 인덱스 = 0
...

다음 ONE-HOT 단어 벡터를 예로 들어 보겠습니다.

역 = [1, 0, 0]
도보 = [0, 1, 0]
자전거 = [0, 0, 1]

만약 어떤 문장이 다음과 같은 단어 구성이었다고 가정해 봅시다.

  • '역'이라는 단어가 6번 등장
  • '도보'라는 단어가 2번 등장
  • '자전거'라는 단어가 1번 등장
역 x 6 = [6, 0, 0]
도보 x 2 = [0, 2, 0]
자전거 x 1 = [0, 0, 1]
...

이 문장의 특징 벡터는 [6, 2, 1] 이 됩니다.

이것이 ONE-HOT 총합(sum)입니다. 이러한 특징 방식으로는 Bag Of Words가 유명할 것입니다.

'ONE-HOT 총합'이라는 표현이 부르기 어렵기 때문에 'MULTI-HOT'이라고 부르기로 했습니다.

이는 조어(造語)이며, 일반적으로 MULTI-HOT이라는 단어는 사용되지 않습니다.

연속된 문장을 MULTI-HOT 표현으로 만들 경우 위치 정보나 순서가 손실됩니다. 예를 들면 다음과 같습니다.

[역, 도보, 예측단어] = [1, 1, 0]
[도보, 역, 예측단어] = [1, 1, 0]

그래서 ONE-HOT에 1을 설정하는 대신, 문맥 말 단어(예측 단어)로부터의 거리를 가중 계수로 설정하는 규칙을 추가합니다.

역 = [1, 0, 0]
도보 = [0, 1, 0]
자전거 = [0, 0, 1]
...

이렇게 하면 위치 정보(거리 정보)를 남길 수 있습니다.

'역 역 역 도보 예측단어'라는 문장을 생각해 봅시다. 다음과 같은 벡터가 되며, '역'이라는 단어가 끝에 가장 유력하게 가까운 의미의 벡터가 되어 위치 정보가 예상과 다르게 파탄된 상태라고 해도 무방합니다.

[역, 역, 역, 도보, 예측단어] = [1.0833, 1, 0]

하지만 이러한 패턴에 대해서도 '그런 특징이다', '단어가 지나치게 연속되는 일은 드물다'고 가정하여 모델 성능 저하를 허용합니다.

  • 창(窓) 분석을 기본으로 한다.
  • 문장의 특정 위치에서 N개의 단어를 1개 문맥으로 하고, 이를 학습 데이터로 사용한다.
  • 1개 문맥의 다음 단어를 답변 데이터로 한다.
역 = [1, 0, 0, 0]
도보 = [0, 1, 0, 0]
자전거 = [0, 0, 1, 0]
...

창 분석 시 W(폭=단어 수)와 S(스텝/스트라이드=다음 시작 위치까지의 단어 수)가 하이퍼파라미터가 됩니다.

500개의 단어로 된 문장을 W=20, S=5로 분석한다면 500/5 = 100이 되어 100개의 벡터가 생성됩니다. 지금까지의 내용으로 X, Y를 만들고 신경망(neural network)에 학습시키면 간단한 문서 작성 모델을 만들 수 있을 것이라고 생각합니다.

다음으로는 문장 전체의 특징을 만드는 방법에 대해 기록하겠습니다.

문맥의 다음 단어를 예측하는 모델 설명을 했지만, 이 특징을 활용하여 문서 전체를 특징화합니다. 500단어, W=20, S=5로 분석했을 경우, 그 한 문장에서 100개의 벡터가 생성됩니다. 이 100개 벡터를 행 방향(열 단위)으로 평균값을 내고, 그것을 그대로 문장 특징으로 사용합니다.

위치 정보가 많이 손실되기 때문에 Bag Of Words에 가까운 특징이 될 것으로 예상됩니다.

단어가 한 번도 출현하지 않았다면 0
한 번이라도 출현했다면 1
2개 이상 출현했다면 1 + 단어 밀도로 합니다.

특정 단어에 대해 출현 위치로부터 밀도 계수를 계산합니다.

positions = [5, 25, 45, 65, 85]
gaps = [20, 20, 20, 20]
spread = average(gap/(1+gap)) ≒ 0.952
...

모든 열에 걸쳐 이 계산을 실시하여 최종 값으로 설정합니다.

이 설정을 통해 위치 정보는 고려되지 않지만 '단어의 출현 방식'은 고려되므로, Bag Of Words보다 특징을 잘 포착할 수 있을 것입니다.

문장 생성 모델을 만듭니다.

다음으로 분류하고 싶은 문장을 모델에 추가 학습시켜, 원래 모델과의 차이분(difference)의 행 방향 평균을 그 문장의 특징으로 합니다.

학습된 LM = M
M에 추가 학습시킨 모델 = M 학습 차분 = M - M = Mdiff
...

조금 독특한 방법이긴 하지만, 주어진 샘플이 학습 모델에 미친 영향을 그대로 문장 특징으로 사용하자는 아이디어입니다.

이상입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0