본문 바로가기
소셜네트워크

[소셜네트워크] 언어 모델과 평가에 대해서

by LSB98 2024. 11. 11.
728x90
반응형

1. 언어 모델 (Language Model) 개요

  • 언어 모델단어 시퀀스(문장)에 확률을 할당하는 모델로, 주어진 문맥에서 가장 자연스러운 단어의 조합을 찾는 데 사용됩니다.
  • 예를 들어, 기계 번역, 오타 수정, 음성 인식 등에서 다음에 올 단어를 예측하는 데 사용됩니다.
  • 조건부 확률을 사용하여 단어가 등장할 확률을 계산합니다. 예를 들어, 문장 "나는 버스를 탔다"와 "나는 버스를 태운다"에서 확률이 더 높은 쪽을 선택합니다.

2. 통계적 언어 모델 (SLM)

  • 통계적 언어 모델은 조건부 확률 (Conditional Probability)과 연쇄 규칙 (Chain Rule)을 사용하여 문장의 확률을 계산합니다.
  • 예를 들어, 문장 "A little boy is smiling"의 확률은 각 단어가 이전 단어들에 따라 나올 확률로 계산됩니다:
    • P(A little boy is smiling) = P(A) × P(little | A) × P(boy | A little) × P(is | A little boy) × P(smiling | A little boy is).
  • 카운트 기반 확률 계산: 코퍼스에서 단어들의 빈도를 카운트하여 확률을 계산합니다.
    • 예: "A little boy"가 100번 등장했을 때 "is"가 그 뒤에 나오는 경우가 30번이라면, P(is | A little boy) = 0.3입니다.

한계 - Sparsity 문제

  • 방대한 학습 데이터가 필요하고, 모든 가능한 단어 조합을 포함하지 못해 **희소 문제(sparsity problem)**가 발생할 수 있습니다.

3. N-gram 언어 모델

  • N-gram 모델은 통계적 언어 모델의 일종으로, 이전에 등장한 일부 단어만을 고려하여 다음 단어를 예측합니다.
    • Unigram: 단일 단어로 확률 계산.
    • Bigram: 이전 단어 한 개와 현재 단어의 관계로 확률 계산.
    • Trigram: 이전 두 개의 단어와 현재 단어의 관계로 확률 계산.
  • N을 선택하는 트레이드오프:
    • N이 크면 특정한 n-gram을 코퍼스에서 관찰하기 어려워지고,
    • N이 작으면 모델의 근사 정확도가 낮아질 수 있습니다.
  • 권장 N 값: 보통 5 이하로 설정하는 것이 좋습니다.

4. 언어 모델의 성능 평가 - Perplexity (PPL)

  • Perplexity (PPL)은 언어 모델의 성능을 평가하는 지표로, 낮을수록 성능이 좋은 모델을 의미합니다.
  • PPL은 분기계수(branching factor)로 생각할 수 있는데, 이는 언어 모델이 평균적으로 몇 개의 단어 중에서 선택하는지를 나타냅니다.
  • 예를 들어, PPL(W) = 10이라면 해당 언어 모델은 평균적으로 10개의 단어 중에서 정답을 찾는다는 의미입니다.

5. 토픽 모델링 개요

  • 토픽 모델링 (Topic Modeling)은 문서 집합에서 추상적인 주제(토픽)를 발견하기 위한 통계적 모델입니다.
  • 텍스트의 숨겨진 의미 구조를 찾는 데 사용되며, 대표적인 방법으로 LSA (Latent Semantic Analysis)와 LDA (Latent Dirichlet Allocation)가 있습니다.

5.1 Latent Semantic Analysis (LSA)

  • 잠재 의미 분석으로, 문서-단어 행렬 (Document-Term Matrix, DTM)이나 TF-IDF를 통해 단어의 빈도를 수치화하고, 이를 통해 문서 간의 잠재적 주제를 분석합니다.
  • SVD (Singular Value Decomposition)를 활용하여 DTM의 차원을 축소하고, 문서와 단어 사이의 관계를 추출합니다.
  • 장점: 구현이 쉽고, 문서의 유사도 계산에 유용.
  • 단점: 새로운 데이터 추가 시 처음부터 다시 계산해야 하므로 업데이트가 어려움.

5.2 Latent Dirichlet Allocation (LDA)

  • LDA는 문서가 토픽의 혼합으로 구성되어 있다고 가정하며, 각 토픽은 확률 분포에 기반해 단어들을 생성합니다.
  • 알고리즘 과정:
    1. 사용자로부터 토픽의 개수(k)를 입력 받습니다.
    2. 모든 단어를 k개의 토픽 중 하나에 랜덤으로 할당합니다.
    3. 각 단어를 적절한 토픽에 할당하며 p(topic | document)와 p(word | topic)을 기반으로 반복합니다.
  • 이항 분포, 베타 분포, 다항 분포, 디리클레 분포 등의 다양한 통계적 개념을 활용하여 문서에서 토픽을 추출합니다.

6.1 Scikit-Learn을 활용한 실습

  • Scikit-LearnTwenty Newsgroups 데이터를 사용하여 20개의 서로 다른 주제의 뉴스를 토픽 모델링합니다.
  • LDA를 사용해 각 뉴스 그룹의 토픽을 추출하고, pyLDAvis를 통해 결과를 시각화할 수 있습니다.

728x90
반응형