본문 바로가기
Study (Data Science)/NLP

벡터화 발전과정 3 - 임베딩 (Embbeding) / Sparse - Dense - Embedding vector

by 콜라찡 2023. 2. 22.

희소 벡터 (sparse vector) 들이 난무하는

DTM, TF-IDF, 원-핫 벡터 단어장에는 0이 너무 너무 많다.

 

단어장의 크기가 커지면, 그만큼 차원이 늘어면서 차원의 저주(curse of dimensionality)가 시작된다.

차원의 저주란, 희소벡터의 비율이 같은 일정 데이터를 2D에 표현했을 때보다, 3D로 표현했을때 

더 density가 떨어진다는 뜻이다. 골다골증인 것처럼 데이터에 구멍이 송송송송 빈다.

 

데이터가 많으면 많을 수록 표현이 잘 되고 좋은 것은 맞지만,

필요없는 0 같은 노이즈가 많이 끼면 오히려 학습에 방해가 되고,

학습을 마치더라도 유의미한 결과라고 하기 어렵다.

그래서 Sparse vectorDense vector 로 바꾼다. 

즉, 벡터 하나하나 의미가 있는 아이들로 꽉꽉 채워넣는 것이다.

그러면 차원이 너무 높을 필요도 없고,

정보가 알차게 들어차기 때문에 훨씬 효율적이다.

 

같은 이유로 데이터의 차원이 커지면 더 많은 정보를 담을 수 있게 되므로

무조건 ML 모델의 성능이 올라간다는 말은 맞지 않다.

 

sparse vector는 사실 0이 많이 끼어있는 sparse matrix에서 시작된 개념이지만

matrix 자체의 형태를 비유한 것이 아니라, 각 요소들, 즉 벡터들을 지칭했다는 점이 다르다.

 


임베딩은 여기서 한번 더 나간다.

TD-IDF는 해당되지 않지만, 원-핫 인코딩 같은 경우는 그냥 0과 1로 막 그냥 막 그냥 아주 그냥 푼거라서

각 벡터간의 유사도를 계산할 수는 없다.

 

즉 강아지와 고양이가 비슷하다는 것을 사람은 느끼지만,

컴퓨터도  느낄 수 있도록 만들어줘야 하는데,

원-핫으로는 이런 힌트를 조금도 줄 수가 없다.

왜냐하면 컴퓨터가 비슷하다는 것을 느끼려면 inner product(내적)을 해야하는데,

원 핫은 대부분이 직교(orthogonal)하기 때문에 유사도가 0이 된다.

그래서 이 유사성을 구하기 위해서

밀집 벡터 (dense vector)를 학습시키는

워드 임베딩이 (word embedding)이 나오게 되었다.


워드 임베딩은 어떻게 되는가

워드 임베딩도 벡터화 하는 것은 똑같은데, 옆으로 길어질 수 있는, 즉 차원이 제한된다.

그래서 표현할 수 있는 길이의 한계치가 있다보니 자연스럽게 그 안에 dense하게 밀집벡터가 될 수 밖에 없다.

밀집 벡터에서는 각 벡터 값의 의미가 파악하기 어려울 정도로 많은 의미를 함축하고 있는데,

워드 임베딩은 이 벡터간의 관계를 수식으로 계산하여 dense vector들을 정하는 과정이다.

이 수식은 앞에서 계산하던 내적보다 훨씬 더 복잡한 수식이 되고 이건 컴퓨터만의 생각하는 flow가 된다.딥러닝은 각 단계별로 수식에 근거하여 계산하면서 주어진 dense vector들을 업데이트한다.이렇게 만들어진 벡터를 우리는

Dense vector가 아닌 Embedding vector 라고 한다.


  입력차원 多 입력차원 少 데이터갯수 多 데이터갯수 少 모델복잡도 低 모델복잡도 高
언더피팅 X X O O
오버피팅 O X X X O X
차원의 저주 O X X X X

이건 내 생각이라 정확하지 않지만,,

연습문제라서 풀어봄.

 

728x90

댓글