ITselfhiam
|2024. 1. 18. 16:38
1. 자연어의 특성
- 자연어를 기계가 처리하도록 하기 위해서는 먼저 자연어를 기계가 이해할 수 있는 언어로 바꾸는 방법을 알아야 합니다.
- 토큰화 작업의 결과인 단어 사전을 기계가 이해할 수 있는 언어로 표현하는 과정이며, 단어 사전 내 단어 하나를 어떻게 표현할지의 문제로 볼 수 있습니다.
1-1. 단어의 유사성과 모호성
- 단어의 의미는 유사성과 모호성을 가지고 있는데 단어는 겉으로 보이는 형태인 표제어 안에 여러가지 의미를 담고 있습니다.
- 사람은 주변 정보에 따라 숨겨진 의미를 파악하고 이해할 수 있지만, 기계는 학습의 부재 또는 잘못된 데이터로 의미를 파악하지 못하는 경우가 있습니다.
- 한가지 형태의 단어에 여러 의미가 포함되어 생기는 중의성 문제는 자연어처리에서 매우 중요합니다.
- 동형어 : 형태는 같으나 뜻이 서로 다른 단어를 의미 합니다. (예시 => "배")
- 다의어 : 하나의 형태가 여러 의미를 지니면서도 그 의미들이 서로 관련이 있는 단어를 의미 합니다. (예시 => "머리")
- 동의어 : 서로 다은 형태의 단어들이 동일한 의미를 가지는 단어를 의미 합니다. (예시 => "춘추":"나이")
- 상의어 : 상위 개념을 가리키는 단어를 의미 합니다. (예시 => "동물")
- 하위어 : 하위 개념을 가리키는 단어를 의미 합니다. (예시 => "강아지")
1-2. 언어의 모호성 해소
- 동형어나 다의어처럼 여러 의미를 가지는 단어들이 하나의 형태로 공유하며,
동의어처럼 하나의 형태를 가지는 단어들이 서로 같은 의미를 공유하는것을 말합니다.
- 단어 중의성 해소(WSD) 알고리즘 방법을 통해 단어의 의미를 명확히 합니다.
- 지식 기반 단어 중의성 해소
- 컴퓨터가 읽을 수 있는 사전이나 어휘집 등을 바탕으로 단어의 의미를 추론하는 접근 방식을 사용합니다.
- 사람이 직접 선별해서 데이터를 넣으므로 노이즈가 적습니다.
- 구축에 많은 리소스가 필요합니다.
- 사람이 직접 선별하여 데이터를 넣으므로 데이터 편향이 생길 가능성이 높습니다.
- 영어 자연어 처리 분야에서 가장 유명한 WordNet이 있습니다.
- 지도 학습 기반 단어 중의성 해소
- 지도 학습은 데이터에 정답이 있다는 의미로 각종 기계 학습 알고리즘을 통해 단어 의미를 분류해내는 방법입니다.
- WSD라고 하면 보통 단어의 세부 의미가 부착된 코퍼스를 학습 데이터로 사용하여 학습에 쓰이지 않았던
새로운 문장에서 단어 의미를 판별해내는 경우입니다.
- 좋은 성능을 위해서는 질 높은 레이블을 가진 많은 데이터가 필요합니다.
- 데이터가 충분할 경우 일반화된 환경에서도 좋은 성능을 낼 수 있습니다.
- 비지도 학습 기반 단어 중의성 해소
- 비지도 학습 WSD는 단어 의미 추론 작업인 WSI를 가리키는 경우가 많습니다.
- 문장에 등장하는 각 단어의 의미를 사전적인 의미에 연결하지 않고,
세부 의미가 같은 맥락을 군집화하는데 초점을 맞춤니다.
- 대규모 자연어 코퍼스로부터 추가 작업 없이 자동적으로 학습을 수행할 수 있어 활용 가능성이 높습니다.
- 사람이 직접 제작한 학습 데이터를 사용하지 않기 때문에 성능을 내기 어렵습니다.
임베딩 구축 방법
2. 임베딩이란?
- 자연어처리 작업에서 특징 추출을 통해 자연어를 수치화하는 과정이 필요하고 이런 벡터화의 과정이자 결과를 말합니다.
- 토큰화 작업의 목표는 임베딩을 만들기 위한 단어 사전을 구축하는 것입니다.
2-1. 임베딩의 역할
- 자연어의 의미적인 정보 함축하기 위함입니다.
- 자연어의 중요한 특징들을 추출하여 벡터로 압축하는 과정을 말합니다.
- 임베딩으로 표현된 문장은 실제 자연어의 주요 정보들을 포함하고 있습니다.
- 벡터인 만큼 사칙 연산이 가능하며 단어 벡터 간 덧셈/뺄셈을 통해 단어들 사이의 의미적인 문법적 관계를
도출할 수 있습니다.
- 임베딩의 품질을 평가하기 위해 사용되는 단어 유추 평가를 진행합니다.
- 자연어 간 유사도 계산
- 자연어를 벡터로 표현하면 코사인 유사도를 활용하여 두 벡터 간 유사도를 게산할 수 있습니다.
- 코사인 유사도는 -1 이상 1 이하의 값을 가지며, 값이 1에 가까울수록 유사도가 높다고 판단합니다.
- 전이 학습
- 이미 만들어진 임베딩을 다른 작업을 학습하기 위한 입력값으로 사용되는 것
- 품질 좋은 임베딩을 사용할수록 목표로하는 자연어처리 작업의 학습 속도와 성능이 향상됩니다.
- 매번 새로운 것을 배울 때 scratch부터 시작한다며 매 학습이 오래 걸립니다.
- scratch : 처음부터 데이터를 구축 후 시작하는 작업을 뜻합니다.
- 파인 튜닝 : 학습하는데 전이 학습에 의한 임베딩을 초기화하여 사용하면 새로운 작업을 학습함에도 빠르게 학습할 수 있고, 성능도 좋아집니다.
2-2. 단어 출현 빈도에 기반한 임베딩 구축 방법
1. 원-핫-인코딩(One-Hot-Encoding)
- 자연어를 0과 1로 구별하겠다는 인코딩 방법입니다.
- 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 나머지 인덱스에는 0을 부여하는 벡터 표현 방식입니다.
- 예시) 단어 사전의 크기가 10,000이라면, 총 10,000개 중 현재 단어를 표현하는 1개의 차원에만 1을 부여 하고,
나머지 9,999개의 차원은 0으로 표현하는 방법을 말합니다.
- 대부분의 값들이 0인 행렬을 의소행렬이라고 하는데, 단어가 늘어날수록 행렬의 크기는 게속 증가합니다.
하지만 증가하는 크기에 비해 표현의 효율성이 떨어집니다.
- 단어의 유사도를 표현하지 못하는 단점이 있습니다.
2. Bag Of Words
- 단어의 순서는 전혀 고려하지 않고, 단어들의 출현빈도에 집중하는 자연어 코퍼스의 데이터 수치화 방법을 말합니다.
- 각 단어에 고유한 정수 인덱스를 부여하여 단어 집합을 생성하고,
각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 벡터를만듭니다.
- 단어 단위의 압축 방식이기 때문에 희소 문제와 단어 순서를 방영하지 못합니다.
3. TF-IDF
- 단어의 빈도와 역문서 빈도를 사용하여 문서-단어 행렬 내 각 단어들의 중요한 정도를 가중치로 주는 표현 방법입니다.
- 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업,
문서 내에서 특정 단어의 중요도를 구하는 작업 등에서 효과적으로 쓰일 수 있습니다.
- 단어의 중요도를 고려해도 여전히 단어의 빈도로 판단하는 표현 방식이기 때문에 맥락적 유사도를 반영하지 못합니다.
2-3. 단어의 순서
1. 통계 기반 언어 모델
- 단어가 n개 주어졌을 때 언어 모델은 n개의 단어가 동시에 나타날 확률을 반환합니다.
- 문장은 어순을 고려하여 여러 단어로 이루어진 단어 시퀀스라고 부르며 n개의 단어로 구성된 단어 시퀀스를
확률적으로 표현합니다.
2. 딥러닝 기반 언어 모델
- 통계 기반 언어 모델에서는 빈도라는 통계량을 활용하여 확률을 추산했지만, 딥러닝 기반 언어 모델들이 등장하면서 입력과 출력 사이의 관계를 유연하게 정의할 수 있게 되고 그 자체로 확률 모델로 동작할 수 있습니다.
- 1. MLM(Masked Language Modeling)
- 문장 중간에 마스크를 씌워서 해당 마스크에 어떤 단어가 올지 예측하는 과정에서 학습을 진행합니다.
- 문장 전체를 보고 중간에 있는 단어를 에측하기 때문에 양방향 학습이 가능합니다.
- 대표적인 모델은 BERT 모델이 있습니다.
- 2. Next Token Prediction
- 주어진 단어 시퀀스를 가지고 다음 단어로 어떤 단어가 올지 예측하는 과정에서 학습을 진행합니다.
- 단어를 순차적으로 입력 받은 뒤 다음 단어를 맞춰야하기 때문에 한방향 학습을 합니다.
- 대표적인 모델은 GPT, ELMo 등 모델이 있습니다.
3. 텍스트 유사도
- 두 개의 자연어 텍스트가 얼마나 유사한지 나타내는 방법입니다.
- 유사도를 정의하거나 판단하는 척도가 주관적이기 때문에 최대한 정량화 하는 방법을 찾는 것이 중요합니다.
3-1. 유클리디안 거리 기반 유사도
- 두 점 사이의 거리를 측정하는 유클리디안 거리 공식을 사용하여 문서의 유사도를 구하는 방법으로 거리가 가까울수록
유사도가 높다고 판단 합니다.
- 저연어처리 분야뿐 아니라 다른 분야에서도 범용적으로 사용되는 거리 측정 기법입니다.
3-2. 맨하탄 거리 기반 유사도
- 맨하탄 거리 공식을 사용하여 문서의 유사도를 구하는 방법입니다.
- 유클리드 거리 공식과 유사하나 각 차원의 차를 곱해서 사용하는 대신 절대값을 바로 합산합니다.
- 유클리드 거리 공식보다 값이 크거나 같습니다.(최대 거리가 아니기 때문)
- 다차원 공간 상에서 두 좌표 간 최대거리를 구하는 방법이 아니다 보니 특별한 상황이 아니면 잘 사용되지 않습니다.
3-3. 코사인 유사도
- 두 개의 벡터 값에서 코사인 각도를 이용하여 구할 수 있는 두 벡터의 유사도를 의미 합니다.
- 두 벡터의 방향이 완전히 동일한 경우는 1의 값을 가지며, 90도의 각을 이루면 0,
180도로 반대의 방향을 가지면 -1의 값을 가집니다.
- -1 이상 1 이하의 값을 가지며, 값이 1에 가까울수록 유사하는 것을 의미 합니다.
- 두 벡터가 가리키는 방향이 얼마나 유사한가를 의미하기 때문에 자연어 내 유사도 계산에 더 적합합니다.
3-4. 자카드 유사도
- 두 문장을 각각 단어의 집합으로 만든 뒤 두 집합을 통해 유사도를 측정하는 방식입니다.
- 수치화된 벡터 없이 단어 집합만으로 계산할 수 있습니다.
- 두 집합의 교집합인 공통된 단어의 개수를 두 집합의 합집합을 전체 단어의 개수로 나누는 것을 의미합니다.
- 전체 합집합 중 공통의 단어의 개수에 따라 0과 1 사이의 값을 가지며, 1에 가까울수록 유사도가 높습니다.