나의 전공 노트

벡터가 어떻게 의미를 가지는가?

JoyDo 2022. 11. 16. 17:05
728x90

컴퓨터는 자연어를 있는 그대로 처리할 수 없으므로 연산 가능한 형태로 변환해야 한다. 따라서 자연어를 컴퓨터 연산에 효율적인 벡터 형태로 전환하는 과정을 거치는데 이를 임베딩이라고 한다. 말뭉치의 품질과 데이터양이 충분하다면 훌륭한 품질의 임베딩 모델을 구축할 수 있다. 이런 임베딩은 사람이 이해하는 정보를 컴퓨터가 이해할 수 있는 형태로 변환해 주는 역할을 하기 때문에 일반적으로 신경망 모델의 입력으로 많이 사용된다. 

 

자연어 계산과 이해

  • 컴퓨터는 자연어를 사람처럼 이해할 수 없음.
  • 임베딩을 활용하면 컴퓨터가 자연어를 계산하는 것이 가능해짐.
  • 임베딩이란 컴퓨터가 자연어를 처리할 수 있는 숫자들의 나연일 벡터로 바꾼 결과.
  • 컴퓨터는 임베딩을 계산 및 처리해 사람이 알아들을 수 있는 형태의 자연어로 출력함.

  • 임베딩에 자연어의 의미를 어떻게 함축할 수 있을까?
    • 자연어의 통계적 패턴 정보를 통째로 임베딩에 넣는 것.
    • 자연어의 의미는 해당 언어 화자들이 실제 사용하는 일상 언어에서 드러나기 때문.
  • 임베딩을 만들 때 쓰는 통계 정보는 크게 세 가지가 있음.
    • 문장에 어떤 단어가 (많이) 쓰였는지
    • 단어가 어떤 순서로 등장하는지
    • 문장에 어떤 단어가 같이 나타나는지
구분 백오브워즈 가정 언어 모델 분포 가정
내용 문장에 어떤 단어가 (많이) 쓰였는가 단어가 어떤 순서로 쓰였는가 어떤 단어가 같이 쓰이는가
대표 통계랑 TF-IDF   PMI
대표 모델 Deep Averaging Network ELMo, GPT Word2Vec

 

< 백오브워즈(bag of words) 가정 >

  • 어떤 단어가 (많이) 쓰였는지 정보를 중시함.
  • 저자의 의도는 단어 사용 여부나 그 빈도에서 드러난다고 보기 때문.
  • 단어의 순서 정보는 무시함.
  • 백오브워즈 가정에서 가장 많이 쓰이는 통계량은 Term Frequency-inverse Document Frequency(TF-IDF)이며 백오브워즈 가정의 딥러닝 버전은 DAN(Deep Averaging Network(lyyer et al., 2015).

 

< 언어 모델 >

  • 단어의 등장 순서를 무시하는 백오브워즈 가정의 대척점에는 언어 모델(language model)이 있음.
  • 언어 모델은 단어의 등장 순서를 학습해 주어진 단어 시퀀스가 얼마나 자연스러운지 확률을 부여함.
  • ELMo, GPT 등과 같은 뉴럴 네트워크 기반의 언어 모델이 여기에 해당.

 

< 분포 가정 >

  • 문장에서 어떤 단어가 같이 쓰였는지를 중요하게 따짐.
  • 단어의 의미는 그 주변 문맥을 통해 유추해 볼 수 있다고 보는 것.
  • 분포 가정의 대표 통계량: PMI(Pointwise Mutual Information)
  • 대표 모델: Word2Vec

 

  • 위의 세 철학은 서로 연관이 있음.
  • 언어 모델에서는 단어의 등장 순서를, 분포 가정에서는 이운 단어(문맥)을 우선시함.
  • 어떤 단어가 문장에서 주로 나타나는 순서는 해당 단어의 주변 문맥과 떼려야 뗄 수 없는 관계를 가짐.
  • 분포 가정에서는 어떤 단어 쌍이 얼마나 같이 자주 나타나는지와 관련한 정보를 수치화하기 위해 개별 단어 그리고 단어 쌍의 빈도 정보를 적극 활용함.
  • 백오브워즈 가정, 언어 모델, 분포 가정은 말뭉치의 통계적 패턴을 서로 다른 각도에서 분석하는 것이 상호 보완적임.

 

어떤 단어가 많이 쓰였는가

 

< 백오브워즈 가정 >

  • 수학에서 백(bag)이란 중복 원소를 허용한 집합(multiset)을 뜻함.
  • 원소의 순서는 고려하지 않음.
  • 자연어 처리 분야에서 백오브워즈란 단어의 등장 순서에 관계없이 문서 내 단어의 등장 빈도를 임베딩으로 쓰는 기법.
  • 백오브워즈: 문장을 단어들로 나누고 이들을 중복집단에 넣어 임베딩으로 활용하는 것. 단어들을 바구니에 넣고 흔들어 그 빈도를 세어 놓은 것.
  • 경우에 따라서는 빈도 역시 단순화해 등장 여부(등장 시 1, 아니면 0)만을 백오브워즈 임베딩으로 쓰기도 함.

  • 백오브워즈 임베딩에는 '저자가 생각한 주제가 문서에서의 단어 사용에 녹아 있다'는 가정이 깔려 있음.
  • 다시 말해 주제가 비슷한 문서라면 단어 빈도 또는 단어 등장 여부 역시 비슷할 것이고, 백오브워즈 임베딩 역시 유사할 것이라고 보는 것임.
  • 빈도를 그대로 백오브워즈로 쓴다면 많이 쓰인 단어가 주제와 더 강한 관련을 맺고 있을 것이라는 전제 역시 깔려 있음.
  • 단어-문서 행렬: '사랑 손님과 어머니'와 '삼포 가는 길' 문서의 관련성이 상대적으로 높음.

  • 백오브워즈 임베딩은 간단한 아이디어지만 정보 검색(Information Retrieval) 분야에서 여전히 많이 쓰이고 있음.
  • 사용자의 질의에 가장 적절한 문서를 보여줄 때 질의를 백오브워즈 임베딩으로 변환하고 질의와 검색 대상 문서 임베딩 간 코사인 유사도를 구해 유사도가 가장 높은 문서를 사용자에게 노출함.

 

< TF-IDF >

  • 단어 빈도 또는 등장 여부를 그대로 임베딩으로 쓰는 것에는 큰 단점이 있음.
  • 어떤 문서에든 쓰여서 해당 단어가 (많이) 나타났다 하더라도 문서의 주제를 가늠하기 어려운 경우가 있기 때문.
    예) '을/를', '이/가' 같은 조사는 대부분의 한국어 문서에 등장
  • 단점을 보완하기 위한 기법: Term Frequency-Inverse Document Frequency(TF-IDF)
  • 단어-문서 행렬에 아래와 같이 가충치를 계산해 행렬 원소(matrix element)를 바꿈.
  • TF-IDF 역시 단어 등장 순서를 고려하지 않기에 백오브워즈 임베딩이라고 할 수 있음.

  • TF(Term Frequency): 어떤 단어가 특정 문서에 얼마나 많이 쓰였는지 나타내는 빈도. 많이 쓰인 단어가 중요하다는 가정을 전제로 한 수치임.
    예) A라는 단어가 문서1에서 10번, 문서3에서 5번 쓰였다면 문서1-단어A의 TF는 10, 문서3-단어A의 TF는 5.
  • DF(Document Frequency): 특정 단어가 나타난 문서의 수.
    예) 'A'라는 단어가 말뭉치 전체에서 '문서1', '문서2'에만 등장했다면 DF는 2. DF가 클수록 다수 문서에 쓰이는 범용적인 단어.
  • IDF(Inverse Document Frequency): 전체 문서 수(N)를 해당 단어의 DF로 나눈 뒤 로그를 취한 값임. 그 값이 클수록 특이한 단어라는 뜻. 이는 단어의 주제 예측 능력(해당 단어만 보고 문서의 주제를 가늠해 볼 수 있는 정도)과 직결.

  • TF(Term Frequency)는 같은 단어라도 문서마다 다른 값을 갖고 DF는 문서가 달라지더라도 단어가 같다면 동일한 값을 가짐.

  • TF-IDF가 지향하는 원리
    • 어떤 단어의 주제 예측 능력이 강할수록 가중치가 커지고 그 반대의 경우 작아짐.
    • '어머니'는 '사랑 손님과 어머니'라는 문서에 '것'보다 TF-IDF 값이 큼.
    • '것'만 봐서는 해당 문서의 주제를 추측하기 어렵지만 '어머니'가 나왔다면 문서 주제를 예측하기가 상대적으로 수월함.
    • 어떤 단어의 TF가 높으면 TF-IDF 값 역시 커짐.
    • 단어 사용 빈도는 저자가 상정한 주제와 관련을 맺고 있을 것이라는 가정에 기초한 것임.
    • '것' 같이 정보성이 없는 단어들은 그 가중치가 줄게 돼 불필요한 정보가 사라짐.
    • 일반 빈도를 활용하는 것보다 좀 더 품질이 좋은 임베딩이라고 볼 수 있음.

 

< Deep Averaging Network >

  • Deep Averaging Network(lyyer et al., 2015)는 백오브워즈 가정의 뉴럴 네트워크 버전

  • Deep Averageing Network이 백오브워즈 가정과 연결될 수 있는 지점은 단어의 순서를 고려하지 않는다는 점이 있음.
  • '애비는 종이었다'라는 문장의 임베딩은 중복집합 {애비, 는, 종, 이, 었, 다}에 속한 단어 임베딩을 평균을 취해 만듦.
  • 문장 내에 어떤 단어가 쓰였는지, 쓰였다면 얼마나 많이 쓰였는지 그 빈도만을 따짐.
  • 문장 임베딩 값을 입력 받아 해당 문서가 어떤 범주인지 분류(classification)함.
  • 간단한 구조의 아키텍처임에도 성능이 좋아서 현업에서도 자주 쓰임.

 

단어가 어떤 순서로 쓰였는가?

 

< 통계 기반 언어 모델 >

  • 언어 모델(language model): 단어 시퀀스에 확률(probability)을 부여(assign)하는 모델
  • 단어의 등장 순서를 무시하는 백오브워즈와 달리 언어 모델은 시퀀스 정보를 명시적으로 학습함.
  • 백오브워즈의 대척점에 언어 모델이 있음.
  • 단어가 n개 주어진 상황이라면 언어 모델은 n개 단어가 동시에 나타날 확률, 즉 P를 반환함.
  • 통계 기반의 언어 모델은 말뭉치에서 해당 단어 시퀀스가 얼마나 자주 등장하는지 빈도를 세어 학습함.
  • 잘 학습된 언어 모델이 있다면 어떤 문장이 그럴 듯한지(확률 값이 높은지), 주어진 단어 시퀀스 다음 단어는 무엇이 오는 게 자연스러운지 알 수 있음.

  • n-gram: n개 단어를 뜻하는 용어
    • [난폭, 운전], [눈, 뜨다] 등은 2-gram 또는 바이그램(bigram)
    • [누명, 을, 쓰다] 등은 3-gram 또는 트라이그램(trigram)
    • [바람, 잘, 날, 없다] 등은 4-gram
    • 경우에 따라 n-gram은 n-gram에 기반한 언어 모델을 의미하기도 함.
    • 말뭉치 내 단어들을 n개씩 묶어서 그 빈도를 학습했다는 뜻임.

네이버 영화 말뭉치의 각 표현별 등장 횟수

  • 네이버 영화 리뷰 말뭉치에서 각각의 표현이 등장한 횟수를 가리킴.
  • 띄어쓰기 단어인 어절을 하나의 단어로 보고 빈도를 센 것.
  • '내 마음 속에 영원히 기억될 최고의 명작이다'는 이 말뭉치에 한 번도 등장하지 않음.
    • 네이버 영화 말뭉치로 학습한 언어 모델은 해당 표현이 나타날 확률을 0으로 부여.
    • 즉, 문법적으로나 의미적으로 결함이 없는 문장임에도 해당 표현이 말이 되지 않는 문장으로 취급한다는 것임.
  • '내 마음 속에 영원히 기억될 최고의'라는 표현 다음에 '명작이다'라는 단어가 나타날 확률은 조건부확률(conditional probability)의 정의를 활용해 최대우도추정법(Maximum Likelihood Estimation)으로 유도하면 아래 수식과 같음.
  • freq란 해당 문자열 시퀀스가 말뭉치에서 나타난 빈도를 가리킴.
  • 우변의 분자가 0이어서 전체 값이 0이 됨.

  • n-gram 모델을 쓰면 이런 문제를 일부 해결할 수 있음.
  • 직전 n-1개 단어의 등장 확률로 전체 단어 시퀀스 등장 확률을 근사(approximation)하는 것. 이는 한 상태의 확률은 그 직전 상태에만 의존한다는 마코프 가정(Markov assumption)에 기반한 것임.
  • '내 마음 속에 영원히 기억될 최고의' 다음에 '명작이다'가 나타날 확률을 바이그램 모델로 근사하면 다음 수식과 같음. '최고의 명작이다' 빈도를 '최고의' 빈도로 나눠준 값임. 다시 말해 '명작이다' 직전의 1개 단어만 보고 전체 단어 시퀀스 등장 확률을 근사한 것임.

  • 바이그램 모델에서 '내 마음 속에 영원히 기억될 최고의 명작이다'라는 단어 시퀀스가 나타날 확률 계산
  • '내'가 단독으로 등장할 확률을 계산 -> '내' 다음에 '마음'이 나타날 확률을 곱함. -> 여기에 '마음' 다음에 '속에'가 등장한 사건이 동시에 일어날 확률을 구하려는 것이므로 이들 확률 간 곱셈이 됨. 단어를 슬라이싱하면서 끝까지 계산. |V|는 어휘 집합(vocabulary)에 속한 단어 수를 가리킴.

  • 바이그램 모델을 일반화한 식은 다음 수식과 같음.
  • n-gram 모델은 바이그램 모델의 확장판으로 직전 1개 단어만 참고하는 바이그램 모델과 달리 전체 단어 시퀀스 등장 확률 계산 시 직전 n-1개 단어의 히스토리를 봄.

  • 데이터에 한 번도 등장하지 않은 n-gram이 존재할 때 예측 단계에서 문제가 발생할 수 있음. 
    예) 학습 데이터에 '아이는' 다음에 '또바기'라는 단어가 한 번도 등장하지 않았다면 이 언어 모델은 예측 단계에서 '그 아이는 또바기 인사를 잘한다'는 자연스런 한국어 문장이 등장할 확률을 0으로 부여하게 됨. -> 이를 해결하기 위해 백오프(back-off), 스무딩(smoothing) 등의 방식이 제안됨.

 

< 백오프 방식 >

  • 백오프: n-gram 등장 빈도를 n보다 작은 범위인 단어 시퀀스 빈도로 근사하는 방식.
    • n을 크게 하면 할수록 등장하지 않은 케이스가 많아질 가능성이 높기 때문. 예) 7-gram 모델을 적용하면 네이버 영화 리뷰 말뭉치에서 '내 마음 속에 영원히 기억될 최고의 명작이다'의 등장 빈도는 0이 됨.
      • 이를 백오프 방식(N을 4로 줄임)dmfh 7-gram 빈도를 근사하면 다음 수식과 같음.
      • a, b는 실제 빈도와의 차이를 보정해 주는 파라미터(parameter).
      • 물론 빈도가 1 이상인 7-gram에 대해서는 백오프하지 않고 해당 빈도를 그대로 n-gram 모델 학습에 사용함.

 

< 스무딩 방식 >

  • 빈도에 모두 k만큼을 더하는 기법
  • '내 마음 속에 영원히 기억될 최고의 명작이다'의 빈ㄷ는 'k(=0+4)'가 됨.
  • Add-k 스무딩이라고 부르기도 함.
  • 만약 k를 1로 설정한다면 이를 특별히 라플라스 스무딩(laplace smoothing)이라고 함.
  • 스무딩을 시행하면 높은 빈도를 가진 문자열 등장 확류를 일부 깎고 학습 데이터에 전혀 등장하지 않은 케이스들에는 작으나마 일부 확률을 부여하게 됨.

 

<참고>
이기창(2020), 처음 배우는 딥러닝 챗봇: 챗봇 엔진부터 NLP, 딥러닝, 파이썬, REST API, 카카오톡 연동까지, 한빛미디어(주), 115-128.
이기창(2020), 한국어 임베딩 [자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지], 에이콘출판사.
728x90