코사인 유사도는 -1 이상 1 이하의 값을 가지며, 값이 1에 가까울수록 유사도가 높다고 판단함
전이 학습
품질 좋은 임베딩을 사용할수록 목표로하는 자연어처리 작업의 학습속도와 성능이 향상됨
이미 만들어진 임베딩을 다른 작업을 학습하기 위한 입력값으로 쓰임 -> 전이학습
매번 새로운 것을 배울때 scratch 부터 시작한다면 매 학습이 오래 걸림
파인튜닝: 학습하는데 임베딩을 초기화하여 사용하면 새로운 작업을 학습함에도 빠르게 학습할 수 있고 성능도 좋아짐
2-3. 임베딩을 만들 때 쓰는 통계적인 가설
문장을 구성하는데 어떤 단어가 얼마나 많이 쓰이는가?
문장에 어떤 단어가 같이 쓰이는가
단어가 어떤 순서로 등장하는가?
2-4. 단어 출현 빈도에 기반한 임베딩 구축 방법
원 핫 인코딩
자연어를 0과 1로 구별하겠다는 인코딩 방법
표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 나머지 인덱스에는 0을 부여하는 벡터 표현방식
희소문제(Sparsity Problem)
예) 단어 사전의 크기가 10,000 이라면, 총 10,000개 중 현재 단어를 표현하는 1개의 차원만 1이고, 나머지 9,999개의 차원은 0으로 표현
대부분의 값들의 0인 행렬을 희소행렬이라 하는데, 단어가 늘어날수록 행렬의 크기는 계속 증가하나 증가하는 크기에 비해 표현 효율성이 떨어짐
단어의 유사도를 표현하지 못함
Bag of Words
단어들의 순서는 전혀 고려하지 않고, 단어들의 출현빈도에 집중하는 자연어 코퍼스의 데이터 수치화 방법
각 단어에 고유한 정수 인덱스를 부여하여 단어 집합을 생성하고, 각 인덱스 위치에 단어 토큰의 등장 횟수를 기록한 벡터를 만듦
단어 단위의 압축 방식이기 때문에 희소문제와 단어 순서를 반영하지 못함
TF - IDF
단어의 빈도와 역문서 빈도를 사용하여 문서-단어 행렬 내 각 단어들의 중요한 정도를 가중치로 주는 표현 방식
문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업 등에서 효과적으로 쓰일 수 있음
단어의 중요도를 고려해도 여전히 단어의 빈도로 판단하는 표현 방식이기 때문에 맥락적 유사도를 반영하지 못함
단어 사전의 규모 자체를 축소하는 방법이 아니기 때문에 단어 사전의 규모가 크다면 높은 계산 복잡도를 요구하는 표현방식(희소 문제)
2-5. 분포가설과 언어모델
비슷한 위치(문맥) 내에서 등장하는 단어들은 비슷한 의미를 가진다는 가설
움트다
ex. 봄이 되자 나뭇가지에는 파릇파릇 싹이 움트고 있었다
ex. 잎사귀가 움트기 시작해도 물 올라가는 나무뿌리
분포가설은 목표 단어의 단어들, 즉 window 크기에 따라 정의되는 문맥의 의미를 이용해 단어를 벡터로 표현하는 것이 목표
분포가설 이라는 가정하에 만들어진 표현방법을 분석표현이라고 함
PMI(Pointwise Multual Information)
* 분포가설의 대표적인 통계량은 PMI이며, 두 확률변수 사이의 상관성을 계량화하는 단위 * 확률변수가 완전히 독립인 경우에 값이 0이 되며, 독립이라는 말은 단어 x가 나타나는 것이 단어 y가 등장할 확률에 전혀 영향을 주지 않으며, 반대로 단어 y의 등장이 단어 x에 영향을 주지 않는 것을 의미함 * 단어 x가 등장할 때 문맥내에 단어 y와 같이 자주 등장한다면 PMI값이 커짐 * 분포가설을 활용하는 대표적인 모델은 2013년 google의 [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/abs/1301.3781) 논문에서 발표된 Word2Vec이라는 단어 임베딩 기법
2-6. 단어가 어떤 순서로 쓰이는가
통계 기반 언어모델
언어모델: 일련의 단어 토큰에 확률을 할당하는 모델
단어의 등장 순서를 중요하게 고려하지 않았던 이전 가설들과 다르게, 언어모델은 단어 시퀀스 정보를 명시적으로 학습함
단어가 n개 주어졌을 때, 언어모델은 n개의 단어가 도잇에 나타날 확률을 반환
문장은 어순을 고려하여, 여러 단어로 이루어진 단어 시퀀스라고도 부르며, n개의 단어로 구성된 단어 시퀀스를 확률적으로 표현
딥러닝 기반 언어모델
통계 기반 언어모델에서는 여전히 등장 빈도라는 통계량을 활용하여 확률을 추산했지만, 딥러닝 기반 언어모델들이 등장하면서 딥러닝 모델들이 입력과 출력 사이의 관계를 유연하게 정의할 수 있게 되고, 그 자체로 확률 모델로 동작할 수 있음
MLM(Masked Language Modeling)
문장 중간에 마스크를 씌워서 해당 마스크에 어떤 단어가 올지 예측하는 과정에서 학습을 진행문장 전체를 다 보고, 중간에 있는 단어를 예측하기 때문에 양방향 학습이 가능
대표적으로 BERT 모델이 있음
Next Token Prediction
주어진 단어 시퀀스를 가지고 다음 단어로 어떤 단어가 올지 예측하는 과정에서 학습
단어를 순차적으로 입력 받은 뒤, 다음 단어를 맞춰야하기 때문에 단방향 학습을 함
대표적으로 GPT, ELMo 등
3. 텍스트 유사도
두 개의 자연어 텍스트가 얼마나 유사한지를 나타내는 방법
유사도를 정의하거나 판단하는 척도가 주관적이기 때문에, 이를 최대한 정량화하는 방법을 찾는 것이 중요함
자연어처리 분야에서 자주 사용되는 유사도 측정 방법
유클리디안 거리 기반 유사도
맨하탄 거리 기반 유사도
코사인 유사도
자카드 유사도
문자열 간 유사도
3-1. 유클리디안 거리 기반 유사도
두 점 사이의 거리를 측정하는 유클리디안 거리를 사용하여, 문서의 유사도를 구하는 방법으로 거리가 가까울수록 유사도가 높다고 판단함
자카드 유사도나 코사인 유사도만큼 유용하게 사용되는 방법은 아니나, 자연어처리 분야뿐만 아니라 다른 분야에서도 범용적으로 사용되는 거리 측정 기법
3-2. 맨하탄 거리 기반 유사도
맨하탄 거리를 사용하여 문서의 유사도를 구하는 방법
유클리드 거리와 유사하나, 각 차원의 차를 제곱해서 사용하는 대신 절대값을 바로 합산함
항상 유클리드 거리보다 크거나 같음
다차원 공간 상에서 두 좌표 간 최단거리를 구하는 방법이 아니다 보니, 특별한 상황이 아니면 잘 사용하지 않음
유클리디안 거리 기반과 맨하탄 거리 기반은 두 지점 사이의 거리를 계산하는
방법으로서 다음과 같은 차이점을 가지고 있습니다:
1. 계산 방식:
- 유클리디안 거리: 두 지점 사이의 직선 거리를 계산합니다. 피타고라스의
정리를 사용하여 계산됩니다.
- 맨하탄 거리: 두 지점 사이의 가로 및 세로로 이동하는 거리를 계산합니다.
좌표 상의 거리 차이를 더한 값입니다.
2. 고려하는 요소:
- 유클리디안 거리: 실제 도로 네트워크나 도시의 지형을 고려하지 않고,
공간에서의 직선 거리만을 고려합니다. 지형적인 장애물이나 도로 상황을
고려하지 않으므로, 실제 이동 경로와는 차이가 있을 수 있습니다.
- 맨하탄 거리: 도로 네트워크나 도시의 지형을 고려하여 가로 및 세로로
이동하는 거리를 계산합니다. 도시의 실제 도로망을 반영하므로, 더 현실적인
이동 거리를 예측할 수 있습니다.
3. 적용 분야:
- 유클리디안 거리: 공간 분석, 클러스터링, 이미지 처리 등에서 주로
사용됩니다. 실제 도로 네트워크를 고려하지 않는 특성 때문에 이동 경로가
중요하지 않은 경우에 유용합니다.
- 맨하탄 거리: 배달 서비스, 길 찾기 알고리즘, 교통 최적화 등에 주로
사용됩니다. 실제 도로 네트워크를 고려해야 하는 상황에서 이동 경로를
예측하고 최적화하는 데에 유용합니다.
4. 계산 복잡성:
- 유클리디안 거리: 직선 거리를 계산하는 방식이기 때문에 계산이 비교적
간단하고 빠릅니다.
- 맨하탄 거리: 가로 및 세로 이동 거리를 계산하는 방식이기 때문에 계산이
상대적으로 복잡할 수 있습니다.
따라서, 유클리디안 거리는 공간적인 관점에서의 거리를 간단하게 계산하는 데에
유리하며, 맨하탄 거리는 도로 네트워크나 실제 이동 경로를 고려하여 이동
거리를 예측하는 데에 더 유용합니다. 배달업체들은 보통 맨하탄 거리를
사용하여 실제 도로 상황을 고려한 효율적인 배달 경로를 계획하고 최적화합니다.
3-3. 코사인 유사도
코사인 유사도는 두 개의 벡터값에서 코사인 각도를 이용하여 구할 수 있는 두 벡터의 유사도를 의미
두 벡터의 방향이 완전히 동일한 경우에는 1의 값을 가지며, 90도의 각을 이루면 0, 180도로 반대의 방향을 가지면 -1의 값을 가짐
-1 이상 1 이하의 값을 가지며 값이 1에 가까울수록 유사하다는 것을 의미
두 벡터가 가리키는 방향이 얼마나 유사한가를 의미하기 때문에, 자연어 내 유사도 계산에 더 적합함
3-4. 자카드 유사도
두 문장을 각각 단어의 집합으로 만든 뒤 두 집합을 통해 유사도를 측정하는 방식
수치화된 벡터 없이 단어집합 만으로 계산할 수 있음
두 집합의 교집합인 공통된 단어의 개수를 두 집합의 합집합, 전체 단어의 개수로 나누는 것
전체 합집합 중 공통의 단어의 개수에 따라 0과 1 사이의 값을 가지며, 1에 가까울수록 유사도가 높음
4. 유사도 측정 실습
sen_1, sen_2 : 의미가 유사한 문장 간 유사도 계산(조사 생략)
sen_1, sen_3 : 의미가 유사한 문장 간 유사도 계산(순서 변경)
sen_2, sen_4 : 문장 내 단어를 임의의 단어로 치환한 문장과 원 문장간 유사도 계산