본문 바로가기
AI/자연어처리

04. 자연어처리 - 임베딩

by 사라리24 2024. 6. 25.



1. 자연어의 특성

 

  • 자연어를 기계가 처리하도록 하기 위해서 먼저 자연어를 기계가 이해할 수 있는 언어로 바꾸는 방법을 알아야 함
  • 토큰화 작업의 결과인 단어 사전을 기계가 이해할 수 있는 언어로 표현하는 과정이고,
    단어 사전 내 단어 하나를 어떻게 표현할까의 문제로 볼 수 있음 

 

1. 단어의 유사성과 모호성

  • 단어의 의미는 유사성과 모호성을 가지고 있는데 단어는 겉으로 보이는 형태인 표제어안에 여러가지 의미를 담고 있음 
  • 사람은 주변 정보에 따라 숨겨진 의미를 파악하고 이해할 수 있으나, 
    기계는 학습의 부재 또는 잘못된 데이터로 의미를 파악하지 못하는 경우가 있음 
  • 한 가지 형태의 단어에 여러 의미가 포함되어 생기는 중의성 문제는 자연어 처리에서 매우 중요
    • 동형어: 형태는 같으나 뜻이 서로 다른 단어 _예) 배
    • 다의어: 하나의 형태가 여러 의미를 지니면서도 그 의미들이 서로 관련이 있는 단어_ 예) 머리
    • 동의어 : 서로 다른 형태의 단어들이 동일한 의미를 가지는 단어 _예)춘추 - 나이
    • 상의어 : 상위 개념을 가지키는 단어 _예)동물
    • 하의어 : 하위 개념을 가리키는 단어 _예)강아지

2. 언어의 모호성을 해소


  • 동형어나 다의어처럼 여러 의미를 가지는 단어들이 하나의 형태로 공유, 
    동의어처럼 하나의 형태를 가지는 단어들이 서로 같은 의미를 공유
  • 단어의 중위성 해소(WSD) 알고리즘 방법을 통헤 단어의 의미를 명확히 함 
    • 지식 기반 단어 중요성으로 모호성을 해소
      • 컴퓨터가 읽을수 있는 사전이나 어휘집 등을 바탕으로 단어의 의미를 추론하는 접근 방식 
      • 사람이 직접 선별해서 데이터를 넣으므로 노이즈가 작음 
      • 구축에 많은 리소스가 필요함 
      • 데이터 편향이 생길 수 있음 
      • 영어 자연어처리 분야에서 가장 유명한 WordNet이 있음 
    • 지도 학습 기반 단어 중요성으로 모호성을 해소
      • 지도 학습은 데이터에 정답이 있다는 의미로, 각종 기계 학습 알고리즘을 통해 단어 의미를 분류하는 방법
      • WSD라고 하면 보통 단어의 세부 의미가 부착된 코퍼스를 학습 데이터로 사용하여
        학습에 쓰이지 않았던 새로운 문장에서 단어 의미를 판별해내는 경우
      • 좋은 성능을 위해서는 질 높은 레이블을 가진 많은 데이터가 필요 
      • 데이터가 충분할 경우 일반화된 환경에서 좋은 성능을 낼 수 있음 
    • 비지도 학습 기반 단어 중요성으로 모호성을 해소
      • 비지도 학습는 단어 의미 추론 작업인 WSI를 가리키는 경우가 많음 
      • 문장에 등장하는 각 단어의 의미를 사전적인 의미에 연결하지 않고, 세부 의미가 같은 맥락을 군집화하는 데에 초점을 맞춤
      • 대규모 자연어 코퍼스로부터 추가 작업없이 자동적으로 학습을 수행할 수 있어서 활용 가능성이 높음
      • 사람이 직접 제작한 학습 데이터를 사용하지 않기 때문에 성능을 내기 어려움

 



 

 

2. 임베딩 구축 방법

 

1. 임베딩이란?

  • 자연어 처리 작업에서 특징 추출을 통해 자연어를 수치화하는 과정이 필요하고 이것이 백터화의 과정이자 결과
  • 토큰화 작업의 목표임베딩을 만들기 위한 단어 사전을 구축하는 것 

2. 임베딩의 역할 


  • 자연어의 의미적인 정보를 함축
    • 자연어의 중요한 특징들을 추출하여 백터로 압축하는 과정
    • 임베딩으로 표현된 문장은 실제 자연어의 주요 정보들을 포함하고 있음
    • 백터인 만큼 사칙연산이 가능하여 단어 백터 간 덧셈/뺄셈을 통해 단어들 사이의 의미적 문법적 관계를 도출
    • 임베딩의 품질을 평가하기 위해 사용되는 단어 유출 평가가 존재함 
      * 사이트: https://word2vec.kr/search/
  • 자연어 간의 유사도 계산 
    • 자연어를 백터로 표현하면 코사인 유사도를 활용하여 두 백터 간 유사도를 계산할 수 있음
    • 코사인 유사도는 -1이상 1이하의 값을 가지며, 값이 1에 가까울수록 유사도가 높다고 판단함 
  • 전이 학습 
    • 이미 만들어진 임베딩을 다른 작업을 학습하기 위한 입력값으로 쓰임
    • 품질 좋은 임베딩을 사용할수록 목표로하는 자연어처리 작업의 학습속도와 성능이 향상됨
    • 매번 새로운 것을 배울 때 scratch 부터 시작한자면 매 학습이 오래 걸림 
    • 파인 튜닝: 학습하는데 전이학습에 의한 임베딩을 초기화하여 사용한 편,
      새로운 작업을 학습함에도 빠르게 학습할 수 있고 성능도 좋아짐

3. 단어 출현 빈도의 기반한 임베딩 추축 방법 

  • 원 핫 인코딩 
    • 자연어를 0과 1로 구별하겠다는 인코딩 방법
    •  표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 나머지 인덱스에는 0을 부여하는 백터 표현 방식
      • 예)"...오늘 날씨가 참 좋다.."
        -> {...5:"좋다",6:"날씨", ...13:"오늘". 256:"참", 257:"가"...}
      • 일반적으로 빈도수를 정렬하고 사용, 인덱스의 순서가 의미가 없음
      • 순서가 없는 카테코리컬 피쳐인 경우 클래스 갯수가 3개 이상일 때 원핫 인코딩을 함
         
      • 단어 사전의 크기가 10000개 하면, 총 10000개 중 현재 내가 원하는 단어를 표현하는 1개의 차원에만 1을 ,
        나머지 9999개의 차원는 0으로 표현하는 방법 
      • 대부분의 값들이 0인 행렬을 희소행렬이라하는데
        크기는 계속 중가하나 증가하는 크기에 비해 표현의 효율성을 떨어짐 단어의 유사도를 표현하지 못함 
  • Bag of Words 
    • 단어들의 순서는 전혀 고려하지 않고 단어들의 출현빈도에 집중하는 자연어 코퍼스의 데이터 수치화 방법
    • 각 단어의 고유한 정수 인덱스를 부여하여 단어 집합을 생성하고
      각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 백터를 만듦
    • 단어 단위의 압축 방식이기 때문에 희소 문제와 단어 순서를 반영하지 못함
      • 문장을 표현하는 방법 ->  원 핫 인코딩을 모두 더함


  • TF-IDF
    • 단어의 빈도와 역문서 빈도를 사용하여 문서-단어 행렬 내 각 단어들의 중요한 정도를 가중치로 주는 표현방법 
    • 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업,
      문서 내에서 특정 단어의 중요도를 구하는 작업 둥에서 효과적으로 쓰일 수 있음
    • 단어의 중요도를 고려해도 여전히 단어의 빈도로 판단하는 표현방식이기 때문에 맥락적 유사도를 반영하지 못함 

4. 단어의 순서 

  • 통계 기반 언어 모델
    • 단어가 n개 주어졌을 때 언어 모델은 n개의 단어가 동시에 나타날 확률을 반환 
    • 문장은 어순을 고려하여 여러 단어로 이루어진 단어 시퀀스라고 부르며 n개의 단어로 구성된 시퀀스를 확률적으로 표현 
  • 딥러닝 모델
    • 통계 기반 언어 모델에서는 비도라는 통계량을 활용하여 확률을 추산했지만, 딥러닝 기반 언어 모델들이 등장하면서 입력과 출력사이의 관계를 유연하게 정의할 수 있게 되고 그 자체로 확률 모델로 동작할 수 있음 
    • MLM(Masked Language Modeling)
      • 문장 중간에 마스크를 씌워서 해당 마스크에 어떤 단어가 올지 예측하는 과정에서 학습을 진행 
      • 문장 전체를 다 보고 중간에 있는 단어를 예측하기 때문에 양방향 학습이 가능 
      • 대표적인 BERT 모델이 있음
    • Next Token Prediction
      • 주어진 단어 시퀀스를 가지고 다음 단어로 어떤 단어가 올지 예측하는 과정에서 학습 
      • 단어를 순차적으로 입력 받은 뒤 다음 단어를 맞춰야하기 때문에 한방향 학습을 함 
      • 대표적으로 GPT, ELMo

 

 

 

 



3. 텍스트 유사도

 

  • 두 개의 자연어 텍스트가 얼마나 유사한지를 나타내는 방법 
  • 유사도를 정의하거나 판단하는 척도가 주관적이기 떄문에, 최대한 정량화하는 방법을 찾는 것이 중요함

 

1. 유클리디안 거리 기반 유사도

  • 두 점 사이의 거리를 측정하는 유클리디안 거기 공식을 사용하여 문서의 유사도를 구하는 방법으로
    거리가 가까울수록 유사도가 높다고 판단함
  • 자연어처리 분야 뿐 아니라 다른 분야에서도 범용적으로 사용되는 거리 측정 기법

2. 맨해튼 거리 기반 유사도

  • 맨해튼 거리를 사용하여 문서의 유사도를 구하는 방법
  • 유클리드 거리 공식과 유사하나, 각차원의 차를 곱해서 사용하는 대신, 절대값을 바로 합산함 
  • 유클리드 거리 공식보다 값이 크거나 같음 
  • 다차원 공간 상에서 두 좌표 간 최단거리를 구하는 방법이 아니다 보니 특별한 상황이 아니면 잘 사용되지 않음

3. 코사인 유사도

  • 두 개의 백터값에서 코사인 각도를 이용하여 구할 수 있는 두 백터의 유사도를 의미 
  • 두 백터의 방향이 완전히 동일한 경우는 1의 값을 가지며, 90도의 각을 이루면 0, 180도로 반대의 방향을 가지면 -1의 값을 가짐 
  • -1이상 1이하의 값을 가지며, 값이 1에 가까울수록 유사하다는 것을 의미 
  • 두 백터가 가리키는 방향이 얼마나 유사한가를 의미하기 때문에 자연어 내 유사도 계산에 더 적합함

4. 자카드 유사도

  • 두 문장을 각각 단어의 집합으로 만든 뒤 두 집합을 통해 유사도를 측정하는 방식
  • 수치화된 백터 없이 단어 집합만으로 계산할 수 있음
  • 두 집합의 교집합인 공통된 단어의 개수를 두 집합의 합집합을 전체 단어의 개수로 나누는 것 
  • 전체 합집합 중 공통의 단어의 개수에 따라 0과 1사이의 값을 가지며, 1에 가까울수록 유사도가 높음 

 

'AI > 자연어처리' 카테고리의 다른 글

06. 자연어처리 - 워드 임베딩  (0) 2024.06.25
05. 자연어처리 - 임베딩 실습  (0) 2024.06.25
03. 자연어처리 - 전처리 실습  (0) 2024.06.24
02. 자연어처리 - 진행순서  (0) 2024.06.24
01. 자연어처리 - 개요  (0) 2024.06.24