On the journey of
NLP 서론(1) 임베딩, 한국어 형태소 분석기, 벡터 유사도, t-SNE 본문
NLP 서론(1) 임베딩, 한국어 형태소 분석기, 벡터 유사도, t-SNE
dlrpskdi 2023. 8. 27. 10:28임베딩
임베딩의 종류는?
- 행렬 분해 기반 방법
- 말뭉치(corpus) 정보가 들어 있는 원래 행렬을 2개 이상의 작은 행렬로 쪼개는 방식
- GloVe, Swivel
- 예측 기반 방법
- 어떤 단어 주변에 특정 단어가 나타날지 예측하거나, 이전 단어들이 주어졌을 때 다음 단어가 무엇일지 예측하거나, 문장 내 일부 단어를 지우고 해당 단어가 무엇일지 맞추는 과정에서 학습하는 방법
- Word2Vec, FastText, BERT, ELMo, GPT
- 토픽 기반 방법
- 주어진 문서에 잠재된 주제를 추론하는 방식으로 임베딩을 수행하는 기법
- LDA(Latent Dirichlet Allocation)
임베딩 평가방법은?
- 내적평가
- -word embedding 자체의 성능을 측정하기 위해 specific/intermediate subtask를 통해 성능을 평가함 (downstream task와는 관련없는 task). e.g. analogy test, correlation test etc. -계산속도가 빠름. -현실 문제와의 상관관계가 확립되지 않는 한 실제로 도움이 되는지 판단하기 어려움.
- 외적평가
- 현실 문제(downstream task)에 직접 적용했을때의 성능을 평가하는 방식. -> 각종 자연어처리 system에 embedding을 직접 input으로 사용하여 시스템의 성능을 측정함. e.g. NER(Named Entity Recognition), word similarity, classification etc. -계산속도가 느림. -어떤 시스템이 문제인지, 아니면 시스템간의 interaction 때문인지 평가하기가 어려움.
임베딩을 통해 단어를 벡터로 변환하게 되면 단어간의 유사도가 생기게 된다.
BUT ) 부모라는 단어의 유사를 생각해 봤을때 좋은 환경에서 자란 자식은 사랑, 헌신, 추억, 따스함 이런 단어가 떠오르게 될 것이고, 극단적으로 나쁜 경우에는 폭력, 싸움, 차가움 이런 단어가 떠오르지는 않을까 싶다. 전이 학습을 할때 미리 임베딩 된 단어들은 일반적인 통념이 적용된 단어들의 유사로 임베딩 되는 것일까? 이런 사전 학습 과정으로 인해 문장 해석이나 생성에 편향성을 가지지는 않을까? 싶어서 몇 가지 찾아봤다 :)
text embedding model이 편향성을 가지고 그것이 왜 문제가 되는지 적은 구글 블로그 https://developers.googleblog.com/2018/04/text-embedding-models-contain-bias.html
corpora로 학습된 word embedding은 편향을 가지므로 사전 기반 학습을 해야한다는 논문 https://aclanthology.org/2021.eacl-main.16.pdf
Contextualised Embedding의 편향성을 줄일 수 있는 방법에 대한 논문 https://aclanthology.org/2021.eacl-main.107.pdf
찾아본 결과 임베딩 과정에서 편향성을 가지게되고 그것이 문제가 되고 있음을 알 수 있었다.
한국어 형태소 분석기 종류와 차이
벡터의 유사도
코사인 유사도란?
코사인 유사도: 두 벡터 간의 코사인 각도를 이용하여 구할 수 있는 두 벡터의 유사도. 두 벡터의 방향이 완전히 동일하면 1, 90°의 각도는 0, 180° 는 -1의 값을 갖는다. 즉 -1~1사이의 값을 갖는다.
두 벡터 A, B에 대한 코사인 유사도에 대한 식은 아래와 같다.
코사인 유사도는 벡터의 방향에 초점을 두기 때문에 문서의 길이가 서로 다른 상황에서도 비교적 공정한 비교 방법으로 사용될 수 있다.
측정법 종류
주요하게 4가지가 있다.
1) 두 문장을 각각 단어의 집합으로 만든 뒤 두 집합을 통해 유사도를 측정하는 방식인 자카드 유사도
2) 책에서도 언급된 두 개의 벡터 값에서 코사인 각도를 구하는 방법인 코사인 유사도
3) 가장 기본적인 거리를 측정하는 유사도 방식으로 유클리디언 유사도
4) 멘하탄 거리를 통해 유사도를 측정하는 방식인 멘하탄 유사도
-
어떻게 training이 되었느냐. 어떤 다운스트림 태스크을 가지냐에 따라 다르지만, Tomas Mikolov의 2013년 논문 (Linguistic Regularities in Continuous Space Word Representations)의 결과(cosine similiarity를 이용하여 RNN과 결합하여 사용했을 때 성능이 우수)에 따라 cosine similarity가 가장 대표적으로 사용되는 듯. distance metric 자체도 hyper parameter처럼 사용할 수 있다.
t-SNE란?
t-SNE는 PCA(주성분분석) 알고리즘의 문제를 해결하기 위한 방법이다.
단, 매번 계산할 때마다 축의 위치가 바뀐다는 단점이 있다. 그렇기 때문에 머신러닝 모델의 학습 피쳐로는 사용하기 어려우나 시각화를 통한 데이터 분석에는 유용하다고 한다.
각 데이터간의 거리관계를 저차원에서도 잘 표현하기
t-SNE 알고리즘은 n개의 데이터가 있을 때 N^2 만큼 load가 걸리기 때문에, feature가 많을 경우 실제 데이터를 분석하는데 있어서 제한적일 수 있으며, PCA와 같은 다른 dimensionality reduction method와 혼합하여 사용되는 것이 추천된다.
예를 들면 PCA를 이용해서 원본 데이터를 50차원 정도로 줄인 후에 t-SNE를 적용하는 방법이 추천된다.
- SNE란?
- 1. 고차원에서의 데이터간의 관계를 확률로 표현 : p 저차원에서의 데이터간의 관계를 확률로 표현 : q
- 즉, p와 q가 유사할수록 차원축소가 잘 되었다고 볼수 있다. 이를 수학적으로 계산하기 위해 다음 식을 이용한다.
p와 q가 유사할수록 Cost가 작아진다. (p와q가 유사하면 1이 되고 로그1은 0이기 때문)
2. 이제 Cost가 작을수록 p와 q가 유사하고 p와 q가 유사하다는 것은 차원축소가 잘 이루어졌다는 것이기 때문에 우리는 Cost의 최솟값을 구하면 된다. 이 최솟값을 구하기 위해 Cost값의 global minimum을 찾는다. 이를 찾기 위한 방법으로 Gradient descent 방식 을 이용한다.
⇒ Gradient descent 방식이란?
임의의 지점을 택하고 그 지점의 국소부위에서 Gradient가 작아지도록 하나씩 택하면 최종적으로 0에 도달하는데 그 지점이 바로 극솟점임을 활용하는 방식(선형대수학의 편미분, 전미분, 연쇄법칙 등의 기초적인 지식 필요)
다음 링크에서 자세하게 이해할수 있다. https://angeloyeo.github.io/2020/08/16/gradient_descent.html
경사하강법(gradient descent) - 공돌이의 수학정리노트 (Angelo's Math Notes)
angeloyeo.github.io
3.하지만 SNE에는 Crowding Problem이 존재하여 보완한것이 바로 t-SNE이다.
Crowding Problem이란 가우시안 분포(정규분포)는 양극단으로 갈수록 값이 작아져서 멀리 떨어진 것과 아주 멀리 떨어진 것과의 차이점을 인지할 수가 없는 것을 말한다. 그래서 SNE의 q에만 간단한 변화를 주어 양극단의 값을 높여주는 작업을 거치게 된다. 이를 통해 얻은 결과를 t-SNE라 부른다.
t-distributed Stochastic Neighbor Embedding
고차원 시각화에 많이 쓰이는 기법
고차원 manifold 상에 놓여진 데이터 간의 유사도를 저차원에서도 유지할 수 있도록 저차원 embedding 벡터를 학습하여 고차원 상의 복잡한 비선형 관계를 저차원 상에서도 잘 표현할 수 있도록 함
- manifold : 미분기하학의 수학적인 개념으로, 두 점 사이의 거리 혹은 유사도가 **근거리에서는 유클리디안(Euclidean metric, 직선 거리)**을 따르지만 원거리에서는 그렇지 않은 공간을 의미한다.
- 예) 아래 이미지는 왼쪽의 s형 데이터를 t-SNE를 통해 2차원으로 시각화한 것이다. (출처 https://medium.com/@jdseo/archived-post-manifold-learning-and-dimensionality-reduction-for-data-visualization-stefan-75aa89a736b8 )
그렇다면 PCA의 문제점은?
PCA 알고리즘은 여러 데이터들이 모여 하나의 분포를 이룰 때 이 분포의 주성분을 분석해 주는 방법을 말한다. 앞서 언급한 것처럼 경우처럼 차원 축소를 했을 때 군집이 중복되는 것이 PCA 알고리즘의 문제점이다. (t-SNE는 차원 축소를 했을 때 군집이 중복되지 않는 것이다.)
PCA의 경우 선형 분석 방식으로 축소하기 때문에 차원이 감소되면서 군집화 되어 있는 데이터들이 뭉개져서 제대로 구별할 수 없는 문제를 가지고 있다. 이런 문제를 해결하기 위한 차원 감소 방법으로 t-SNE 방식이 있으며, t-SNE는 고차원 공간에서 점들 간의 유사도를 보존하면서 차원을 축소하는 방식이다. 한 vector를 중심으로 다른 vector 의 t분포를 계산하여 similarity가 가까운 값끼리 묶어서 데이터의 군집성을 차원 축소 이후에도 유지한다.
'Experiences & Study > 자연어처리(NLP)' 카테고리의 다른 글
[구글 BERT의 정석] Chap.03 (0) | 2023.08.04 |
---|