2022년 6월 1일 수요일

PR402 - 14 : N2D: (Not Too) Deep Clustering via Clustering the Local Manifold of an Autoencoded Embedding

 오랜만에 논문 리뷰로 돌아왔네요. 그동안 다른 것들을 좀 많이 하느라 바빠서 신경을 쓸 틈이 없었던 것 같습니다. 

오늘 들고 온 논문은 N2D: (Not Too) Deep Clustering via Clustering the Local Manifold of an Autoencoded Embedding (McConville, 2020) 입니다. 최근 Clustering 관련 알고리즘들을 좀 살펴보고 있는데 정말 간단하게 도입해볼 수 있을 것 같아서 들고 왔습니다. 페이퍼도 레퍼런스 포함 총 8페이지라서 부담 없이 읽어보실 수 있을 것 같습니다. 

Link - https://arxiv.org/pdf/1908.05968v6.pdf

official github에 올라온 구현체를 살펴보니 앞뒤 다 떼고 구현만 시키려면 대충 50줄 안에 만들 수 있을 것 같더라구요. 제목에 적혀있다시피 리소스도 굉장히 적게 요구해서 아주 좋습니다. 

내용 자체가 굉장히 쉬워서 바로 Method로 넘어가보도록 하겠습니다.

Clustering Problem은 여러 샘플들의 데이터가 주어지고, 이를 어떻게 묶느냐 하는 문제입니다. N2D에서는 총 3가지 단계를 거쳐 위 Clustering Problem을 풀게 됩니다.

1. AutoEncoder를 통한 정보 압축

2. Manifold learning Techniques(Isomap, t-SNE, UMAP 등)를 통한 정보 재배열

3. Final Clustering Algorithm(GMM)을 통한 최종 Clustering Task 수행

눈여겨 볼 점은 정보 압축을 AutoEncoder와 Manifold learning Techniques 두 단계를 거쳐 한다는 점입니다. 전통적인 Clustering 알고리즘들의 경우 PCA, t-SNE 등을 통해 차원축소를 진행한 후 k-means를 쓴다던지 등의 방법을 통해 Task를 풀었고, Deep Clustering의 경우 Neural Net을 이용해 정보 압축을 하는 등 보통 하나의 함수로 정보압축을 마무리짓는 경우가 많은데, N2D에서는 두 단계로 나누어 한다는 점을 주목해보면 좋을 것 같습니다.

위를 간단하게 수식으로 나타내보면


위와 같이 표현할 수 있습니다. 지금까지로만 보았을 때는 사실 AutoEncoder가 충분한 Representation power를 갖게 된다면 굳이 Manifold learner를 중간에 끼워넣어야 하나? 하는 생각이 들 수 있습니다. 그러한 의구심을 해소하기 위해서 논문에서도 Ablation study를 진행한 결과를 report하고 있습니다. 


N2D의 마지막 단계인 GMM만 사용하였을 경우부터, 각각 다른 Manifold learner를 넣었을 경우까지 비교한 table입니다. 페이퍼에서 최종적으로 제안하는 버전은 N2D (UMAP) 버전입니다. 즉, AE + UMAP + GMM을 사용한 버전입니다. 보시다시피 대부분의 Task에서 가장 높은 ACC & NMI를 보여주고 있습니다. (ACC는 Accuracy, NMI는 Normalized Mutual Information입니다.) 

우선 정보 압축 없이 바로 GMM에 넣었을 경우(1번째 행)를 보겠습니다. 확실히 정보 압축을 한 아래의 알고리즘들에 비해 현저히 저조한 성능을 보이는 것을 확인할 수 있습니다.

위에서 의구심을 가졌던 AE + GMM 버전(2번째 행)을 살펴보면, 차라리 Manifold Learner를 넣었을 때가 더 성능이 좋은 것을 확인할 수 있습니다. 물론 여기서는 AE의 tuning에 신경쓰지 않고, 레퍼런스로 삼은 아키텍쳐를 그대로 차용하고 있어서 AE를 fine-tuning할 경우 더 높은 성능을 낼 수는 있을 것입니다. 여기서 사용한 AE의 아키텍쳐는 FeedForward layer만 사용한 MLP로, input dimesion-500-500-2000-number of clusters의 Encoder와 이를 mirroring한 Decoder로 구성되어 있습니다. 구조만 봐도 확실히 굉장히 단순함을 확인할 수 있습니다. 정보 압축 과정에서는 Encoder만 사용하기 때문에 결국 layer는 4개만 사용하고 있는 셈이니, 여러 모로 개선의 여지가 있는 것은 분명합니다.

다시 본론으로 돌아와서, 뒤이어 다른 버전들의 성능도 확인해보면 N2D (UMAP) 버전이 가장 높은 성능을 보이는 것을 확인할 수 있습니다. 뭐 당연히 페이퍼 주제로 제안하고 있으니 ablation study 결과가 이렇게 나오는 것은 당연합니다만, 생각해볼 만한 점은 Manifold learner는 AE를 통과한 정보를 차원 축소하는 것이 아니라, 단지 재배열만 하게 됩니다. 그럼에도 위의 table을 보면 대부분 AE 버전보다 성능이 굉장히 좋아지게 됩니다. 

개인적으로는 다음과 같이 해석해볼 수 있을 것 같습니다.

AE가 단순히 원래의 데이터를 복구하기 위한 '정보 압축'에 가깝다면, t-SNE와 UMAP 등의 Manifold learner는 압축된 정보를 다시 해석하기 좋게 만드는 '정보 요약'이라고 볼 수 있을 것 같습니다. 

그렇다면 왜 t-SNE와 UMAP을 바로 사용하는 것보다 AE를 통과시킨 후 사용하는 것이 더 성능이 잘 나올까요?

정확하진 않지만, 아마도 experiment에 사용한 데이터의 특성 때문이 아닌가 싶습니다. experiment에서는 MNIST, Fashion, pendigits 등 Vision 데이터를 주로 사용하고 있습니다. 이 경우 Neural Net이 굉장히 두각을 드러내기 좋은 환경이기 때문에 아마 AE를 사이에 끼워넣는 것이 효과적이지 않았나 하는 생각이 듭니다. 아마도 Tabular 데이터를 사용하면 AE의 사용 여부가 성능에 영향을 덜 미칠 것 같네요.

이제 시각화된 결과를 눈으로 살펴보겠습니다.


구분된 결과를 눈으로 확인해보니 훨씬 더 흥미롭네요. t-SNE 시각화 처음 봤을 때랑 비슷한 느낌입니다. 

그렇다면 ablation study 말고 다른 SOTA 알고리즘들과 비교했을 때는 어떨까요?
대부분의 Task에서 꽤 준수한 성적을 보여주고 있습니다.


위 table에 따르면 가장 좋은 알고리즘은 ASPC-DA인데, 읽어보지는 않았지만 Data Augmentation을 활용한 알고리즘이더라구요. Vision 데이터들에서 당연히 성능이 잘 나올 수 밖에 없는 구조를 만들어놨기 때문에 N2D가 저 알고리즘보다 떨어진다고 생각하시지 않아도 될 것 같습니다. 오히려 Tabular 데이터도 어느 정도 다룰 수 있는 N2D가 훨씬 더 좋지 않나 하는 생각이 듭니다. 리소스 또한 훨씬 적게 쓰구요.

Conclusion
간단하면서도 성능이 좋은 N2D 알고리즘에 대하여 살펴보았습니다. 뭔가 생각을 못할 아키텍쳐는 아닌데도, 이렇게 놓고 보니 Clustering을 정말 잘 풀어냈다는 생각이 듭니다. 여기에서 얻은 직관 또한 확장하여 다른 Problem들에도 가져갈 수 있을 것 같습니다.

오랜만의 리뷰이지만, 짧게 마무리하겠습니다!

읽어주셔서 감사드립니다 :)

댓글 없음:

댓글 쓰기