Saturday, June 25, 2016

논문 요약 - "Taste Space Versus the World: an Embedding Analysis of Listening Habits and Geography", Joshua Moore et al., ISMIR 2014

개요

  • 논문 다운로드는 여기를 누르세요.
  • 논문은 코넬 대학의 Joshua Moore가 쓴 논문입니다. 저자는 랩 동료인 Shuo Chen과 공저자로 MIR 관련 논문을 여러개 발표했습니다. Shuo Chen은 Markov Embedding을 이용한 플레이리스트 생성 논문을 발표한것이 좀 유명하구요, 지금은 졸업하고 MIR이 아닌 다른 분야에 있다고 하네요. 이 사람들 연구는 대부분 Embedding에 대한 내용입니다.
  • 이 논문은 ICML 2016: Machine learning for music discovery에서 발표한 "Embedding methods for visual analysis of music data"와 내용이 같습니다. 정확히 말하면 2014 ismir 논문을 다시 2페이지로 요약해서 icml에 냈다고 해야겠군요. Invited talk이기도 해서 별 문제될거야 없지만 저는 왜 2년전 연구가 조금의 추가 내용도 없이 이렇게 나올 수 있었는지 불만입니다.  게다가 성의도 없고 레퍼런스는 dataset 인용 하나와 본인논문 4개;; 음;; 뭐 ...
  • 그렇지만 ismir 논문은 괜찮은것같고, embedding을 어떻게 정의하고 사용하는지 사례를 알고싶어서 자세히 읽어보기로 했습니다.

Embeddings

임베딩, 보통 word embeddings가 많이 쓰이죠. 임베딩이란..
  • 고차원의 데이터를 그보다 낮은 차원으로 맵핑하되,
    • 즉 N-dim vector → M-dim vector로 바꾼다고 하면 N>M이고, 대체로 N>>M이겠죠. 
  • 맵핑한 결과(embeddings)가, 낮은 차원의 공간 각 데이터의 '관계'가 성립하도록 해주는 작업입니다.
    • N차원 공간의 특성이 무엇이었든지간에, M차원으로 옮겨줬을 때 각 데이터 벡터 - 즉 임베딩 - 사이가 의미가 있길 바라는거죠. 예를 들면,
      • word2vec:
        •  5만개의 단어가 있다 치죠. 얘네들은 5만차원의 one-hot-vector로 나타낼 수 있습니다. 그리고 5만차원의 벡터를 100차원 공간에 맵핑시키는데, 맵핑한 결과가
          • w2v(남자) - w2v(여자) == w2v(왕) - w2v(여왕)
          • w2v(한국) - w2v(서울) == w2v(프랑스) - w2v(파리)
        • 와 같은 등식이 (근사적으로) 성립하도록 만들어주는 것이지요.
      • t-SNE:

          • 고차원의 데이터를 2차원으로 줄여서 시각화하는 방법입니다. 유사한 데이터가 비슷한 곳에 모이게 되죠. 예를 들어 MNIST의 숫자 필기의 픽셀 값을 (28*28=784차원 데이터) t-SNE를 써서 2차원으로 표현해주면 아래와 같이 됩니다.

Embeddings: HOW?

  • 여러가지 방법이 있죠. word2vec은 단어의 문맥을 보고 판단합니다. 즉 주변에 있는 단어의 값을 활용합니다. 따라서 word sequences - 충분한 양의 글 - 만 있으면 됩니다.
  • t-SNE는, 그 이름을 보면
    • t-distributed Stochastic Neighbor Embedding 입니다. 즉,
    • t-SNE는 비슷한 값들이 비슷한 위치에 - 즉 neighbor가 되도록 만드는 것이 목적입니다. 역시 원본 데이터 - 고차원 벡터 - 만 가지고 판단합니다. 
  • 그런데 이 외에도 다양한 경우가 있습니다.
    • 예를 들어 Joshua의 논문은 Million Song Tweets Dataset을 사용했습니다. 이 데이터셋은 트윗에서 긁어모은 데이터인데, 수많은 (음악(곡,아티스트,앨범), 위치(도시)) 의 tuple로 이루어져있습니다.
    • 그리고 이 논문의 목적은 이 데이터를 이용해서
      • embedding 1, X( ): city ti embedding space, c → X(c)
      • embedding 2, Y( ): artist to embedding space, a → Y(a)
    • 를 만들어주는데, 이 X( )Y( )의 차원이 같게 설정해주는거죠. 그리고나서 Y(a), artist와 X(c), 도시(city)의 관계를 찾아보자는 내용입니다. 
    • tuple형태의 데이터가 있다면 다른 상황에도 적용이 가능하겠죠. 

제안한 알고리즘

자세한 내용을 보면, 우선 여기에서는 트위터에서 곡 정보를 빼고 아티스트 정보만 모았습니다. 그리고 위치 정보는 '도시'만 남겼구요. a를 아티스트,  c를 도시라고 하면 임베딩을 학습한 결과는..
    • P(a|c), 즉 각 도시에 대해 아티스트 a를 들을 확률과
    • euclidean distance(X(c) - Y(a))
  • 이 둘이 비례하는 결과가 나오면 됩니다.
섹션 3의 식을 보면 p_a가 추가되어있는데 이건 아티스트의 인기(popularity)를 감안해주기 위한 bias입니다. 이를 이용해 P(a|c)를 정리했습니다. 바로 아래와 같죠. (이 논문엔 왜 식에 번호를 안붙였을까요; 우린 그냥 (1)이라고 합시다.)
 (1)

이제 이 확률 식에 맞추어 X(), Y()를 찾으면 됩니다!

찾는 방법은 Maximum (log) Likelihood로 정리하고, 이를 SGD로 푸는거군요. 즉, 가지고 있는 데이터에 근거해 (1)을 극대화해주는 X, Y, p_a를 구하면 됩니다. 다시말해,
 (2)
가 됩니다.

이제 SGD문제가 되고, 열심히 돌려주면 됩니다. 저자가 언급하기를 여기서 연산량의 문제가 되는 부분이 (1)의 분모로 들어가있던 partition function Z()입니다. [6]의 방법으로 근사했다는데 역시 같은 저자의 2013년 ismir논문이네요.

그 외

뒷부분은 실제로 실험을 돌렸더니 이러저러하더라 라는 내용이라 생략하겠습니다.

정리

결과적으로 우리가 원하는 의미에 따라 식 (1)을 정의해주고 이를 식(2)처럼 풀면 된다는 막상 간단한 내용이네요.
[6]의 논문은 tuple이 아니라 triplets에 대한 내용입니다만 역시 유사한 방법으로 문제를 풀어줍니다. 수식 전개가 비교적 더 자세히 나와있습니다.
ISMIR논문이 레퍼런스 섹션 별도 할당 없이 전체 6페이지이던 시절이라 레퍼런스가 좀 부실하지만, 원하는 상황에 어떻게 Embedding을 만들어 줄 수 있는지 간단하게 이해가 되었네요.

최적화는 늘 그럿듯 SGD가 두루두루 쓰일테고, 식 (1)을 얼마나 실제 데이터에 맞추어 잘 세워주느냐가 중요한 내용일 듯 합니다.



No comments:

Post a Comment