Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Context-Aware Visual Compatibility Prediction #109

Open
chullhwan-song opened this issue Mar 6, 2019 · 1 comment
Open

Context-Aware Visual Compatibility Prediction #109

chullhwan-song opened this issue Mar 6, 2019 · 1 comment

Comments

@chullhwan-song
Copy link
Owner

https://arxiv.org/abs/1902.03646

@chullhwan-song
Copy link
Owner Author

chullhwan-song commented Mar 12, 2019

Abstract

  • 패션관련 추천
  • 어떻게 두개 이상의 fashion item을 가지고 잘 어울리는지(compatible) 또는 비주얼 옷차림(visually appealing)을 결정하는지에 문제에 대해~
  • 시간/장소/social attitudes에 비친 개인적 선호도등이 bias
  • 이 연구는 그들의 context 뿐만 아니라, 그들의 비주얼적인 속성들에 기반하여, 두개의 item 사이에 적합도를 예측하는것. > 두개의 item이 나에게 얼마나 잘 어울리는지 그렇지 않는지?
  • 그래서, 이들 item사이에 대해 각각 적합한지를 알기 위한 그 product에 대해 context를 정의.
  • 제안하는 모델은 item feature 사이의 pairwise 비교를 통한 metric learning이 아니다.
  • 즉, 그들의 context에 조건이 되는 "product embeddings" 이 되도록 학습하는 graph neural network를 이용하여 이러한 문제를 푼다.
    image

Proposed Method

  • 구조적인 정보로 그래프를 이용하여 더 나은 " product embeddings"를 획득.
  • 제안된 모델은 "graph auto-encoder (GAE) framework " 기반
    • paper : "Variational graph auto-encoders"
  • encoder는 불완전한 graph 입력으로 받음. 그리고 각 node의 embedding을 진행.
  • 그러면, "node embedding"은 graph안의 잊어버린(missing) edge를 예측하기 위해 decoder로써 사용한다.
  • undirected Graph : image
    • N개의 Vertex/Node : image
    • Edge : image > Vertex i와 j로 연결된 Edge
  • Graph안의 모든 node feature vector : image
    • i번째 node vector : image
  • Graph는 adjacency matrix로 재표현됨 : image
    • A_(i,j)가 존재하면 1, 그렇지 않으면, 0
  • 모델은 encoder - decoder 구조
    • encoder H = image
    • decoder A = image
  • 여기서, encoder의 역할은 feature X를 받아 representation(latent?) H로 전환하고,
    • H의 형태는 X와 유사 즉, i번째 노드에 대한 encoder된 feature vector H_i
      • 이런걸로 볼때, input의 Graph 형태를 그대로 유지되는듯으로 보임.
    • the distance between two points can be mapped to the probability of whether or not an edge exists between them. > Edge에 대한 존재 여부에 대한 확률
  • dcoder는 새로운 구조를 정의 하는 adjacency matrix A 로 전환된다. encoder의 A와는 다른듯..(초기 A? 바로 위에서 설명한 형태인듯..)
    • to compute this probability using the features of each node > 각노드에 대한 feature의 prob. (embedding되었으면..)
    • 즉, image
      * node(items) i와 j 사이에 적합성(compatibility)를 재표현한다는 의미(최종목적)
  • 그래서 정리하면
    • Encoder는 Graph Convolutional Network에 의해
    • Decoder는 두 product > pair(i, j)사이에 적합성 점수(compatibility score)를 예측하기 위한 metric learning
  • 전체 알고리즘 그림
    image

Encoder

  • 단일 node i에서의 관점에서 보면, encoder는 초기 feature x_i가 h_i로 재표현되는 case이다.
  • 초기 feature x_i는 CNN feature > 이는 상품에 대한 속성정보만 가지고 있다.
  • 하지만 우리는 이러한 상품속성 정보뿐만 아니라, 구조적인 정보로 재표현 되길 원한다.by encoder
  • 다시 말하면, node i에 대한 정보뿐만 아니라 이웃노드들 image 에 대한 정보도 포함되어 새롭게 representation되길 원함(embedding)
  • 그래서, Encoder는 하나의 노드 image 주위에 local neighbourhood를 통합(aggregates)하는 역할을 하는 function.
  • 그래서, 이 function은 바로 Graph Convolutional Network (GCN)에 의해 구현
  • single layer는
    image
    • z는 hidden activation
    • image 는 l layer에서의 i번째 input 이면, 당연히 output은 image
  • 이것을 이함수가 matrix form과 graph안의 모든 노드에서 작동되는 형태인 function은,
    image
    • image : first layer
    • image normalized 된 s step에서의 adjacency matrix
      • self-connections(image)포함
      • imageself-connections를 가진 첫번째 step 이웃를 포함
      • image로 하자, 이는 diagonal degree matrix(image)를 이용한 row-wise하여 normalize한다는 의미(좀 소스를 봐야할듯..ㅠ)
      • Context information는 이는 학습동안 고려되어진 neighbourhood의 depth로 재표현된 parameter S에 의해 조절된다.
        * 노드 i의 depth s에 있는 neighbourhood은 i에서 최대(at most) s 인 거리(이동 한 에지의 수)에 있는 모든 노드들의 집합
        * the neighbourhood at depth s of node i is the set of all nodes that are at distance (number of edges traveled) at most s from i.
        • 실제 실험에서는 S=1 > 모든 layer에서 1 depth만 적용.
      • image 는 l layer를 위한 학습 parameter를 포함하는 matrix
      • 각 layer에서 적용 - batchnormal, dropout, weight regularization

Decoder

  • decoder 는 두 노드사이에 연결에 관한 확률을 계산하는 function이다.
  • 이를 위해, metric learning를 적용.
    • 여기서 주의할점은 similarity & compatibility 서로 다르다.!!
      • similarity는 두 셔츠사이의 유사성 - color/shape..
      • compatibility는 두 아이템이 서로 잘 어울리를 나타냄.
  • metric function
    image
    • 이것의 output : 0~1 사이의 값 = probability p
  • decoder function의 output인 probability p
    image
    • image 절대값.
    • image과 b는 학습 parameter
    • image sigmod f 그래서, 0~1 사이의 output

Training

  • 모델은 image pos와 neg 에 대한 Edg를 학습.
  • cross entropy loss
  • See Fig2 & Algorithm 1
    image

Experimental

Task

image

Datasets

  • The Polyvore dataset
  • The Fashion-Gen Outfits dataset
  • Amazon products dataset

실험 결과

image
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant