Tensorflow 2 NLP(자연어처리)/차원축소

[1-1] t-SNE 차원축소 기법

Suhd 2021. 11. 12. 22:17

고차원 데이터를 보기 쉬운 저차원으로 시각화하는 기법

https://ratsgo.github.io/machine learning/2017/04/28/tSNE/ (책 작가의 블로그)

위를 간단히 정리하면

차원축소의 목적 : 각 데이터간의 거리관계를 저차원에서도 잘 표현하기

<< t-SNE는 SNE의 파생이므로 SNE의 설명이 필요하다>>

⇒ SNE란?

1. 고차원에서의 데이터간의 관계를 확률로 표현 : p 저차원에서의 데이터간의 관계를 확률로 표현 : q 즉, p와 q가 유사할수록 차원축소가 잘 되었다고 볼수 있다.

이를 수학적으로 계산하기 위해 다음 식을 이용한다.

Cost 식

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

하지만 SNE에는 Crowding Problem이 존재하여 보완한것이 바로 t-SNE이다.

Crowding Problem이란 가우시안 분포(정규분포)는 양극단으로 갈수록 값이 작아져서 멀리떨어진것과 아주멀리 떨어진것과의 차이점을 인지할 수가 없는것을 말한다. 그래서 SNE의 q에만 간단한 변화를 주어 양극단의 값을 높여주는 작업을 거치게 된다. 이를 통해 얻은 결과를 t-SNE라 부른다.

3. 하지만 SNE에는 Crowding Problem이 존재하여 보완한것이 바로 t-SNE이다.

Crowding Problem이란 가우시안 분포(정규분포)는 양극단으로 갈수록 값이 작아져서 멀리떨어진것과 아주멀리 떨어진것과의 차이점을 인지할 수가 없는것을 말한다. 그래서 SNE의 q에만 간단한 변화를 주어 양극단의 값을 높여주는 작업을 거치게 된다. 이를 통해 얻은 결과를 t-SNE라 부른다.