You are on page 1of 4

WEEK 10.

유사도 학습과 데이터 검색

Metric Learning and Image Retrieval

곽수하 교수님

Metric?

집합 안의 모든 원소들 간의 거리를 정량화할 수 있는 함수 (거리 척도)

보통 거리는 유사도의 반의어로 사용된다. 따라서 이 metric 은 유사도의 역과 같다고 생각할 수 있다.

Ex) 유클리드 거리, 맨해튼 거리 등

Similarity in AI

- Face identification/verification: 다른 각도에서 찍힌 사진이더라도 같은 사람임을 인식하는


- Person re-identification

- Visual tracking: 동영상의 첫 프레임에서 어떤 물체를 추적할지 입력하면 이후의 영상에서


그 물체의 움직임에 따라 위치를 표시해주는 것

- Local patch matching for stereo imaging: 3 차원 인식, 가까이 있는 물체는 빠르게 움직이고
멀리 있는 물체는 천천히 움직이는 것처럼 보이는 것을 이용

- Self-supervised representation learning: 스스로 학습하는 인공지능 모델

Metric Learning

이미지는 R, G, B 가 어떻게 배합이 되어있는가에 따라 색상이 결정되는 것이기 때문에 각 픽셀 값은


3 개의 정수 값으로 표현이 된다. 이 값들을 바로 대조해 거리를 측정할 수도 있다. 하지만 그렇게
된다면 이미지가 갖고 있는 의미가 아닌, 생김새의 유사도만을 측정할 수 있게 될 것이다. 따라서
데이터들을 입력으로 받아 우리가 주목하고 싶은 부분들을 캐치해 수치적인 값으로 output 을 만들어
주는 함수를 거침으로써 의미적 유사도를 측정하게 된다.

Deep Metric Learning


Deep Neural Networks(DNNs)

최근 metric learning 들은 대부분 deep neural network 에 기반을 두고 있다.

Deep neural network 라는 것은 데이터들에서 어떤 임의적인 수치를 뽑을지를 사람이 결정하는 것이


아니라, operation 들을 쌓고 데이터를 통해 학습을 시키는 것이다. classification(분류) 문제를 예로
들자면, operation 들을 거쳐 그 결과로 이 이미지(데이터)가 수치들(feature)로 간결하게 표현이 되면,
이 뒤에 classifier(분류 함수)를 붙여서 결론을 도출해낸다. 이때, classifier 는 데이터의 표현에 맞추어
최적화 되며, operation 을 거칠 때 사용되는 parameter 들은 classifier 가 옳은 판단을 내릴 수 있는
방향으로 변화한다. 따라서 서로 유기적으로 엮여서 서로에게 좋은 방향으로 최적화가 된다는
것이고, 이것이 DNN 의 장점이라 할 수 있다.

D: distance 를 계산하는 함수 (유클리드 거리, 코사인 유사도 함수 등)

X_i, x_j: 데이터

 X_i 와 X_j 가 다른 class 의 데이터라면 Distance 를 최대화하는 방향으로 학습한다.

 반대로, 같은 class 의 데이터라면 distance 를 최소화하는 방향으로 학습한다.

Siamese Network

몸통을 공유하지만 머리는 두 개인 샴쌍둥이 같은 것


- Siamese architecture: 파라미터를 공유하는 neural network 의 쌍

- 이미지 두 개를 받았을 때 neural network 를 통과시켜 이미지를 표현하는 벡터로 변환한다.


-> Embedding vector, embedding space

- 이때 embedding vector 들이 특정한 관계를 가져야만 한다는 조건을 만들어 네트워크를


학습시킨다.

- 같은 클래스에 속한다면 벡터 간의 distance 가 작아야 하고, 다른 클래스에 속한다면


distance 가 커야 한다. 이를 loss function 에 반영할 수 있다. 네트워크는 loss function 의
값을 최소화하는 방향으로 학습을 시킨다.

- 위의 함수를 보면, 크게 2 개의 term 으로 나뉘는데 앞의 term 에서는 D 의 값이 작아져야


loss 가 작아진다. 즉, distance 를 줄이겠다는 것이다. 반대로 뒤의 term 에서는 D 의 값이
커질수록 loss 가 작아지고, 따라서 두 사이의 거리를 0 으로 수렴시켜야 한다. 여기서 y_ij 를
보면 같은 클래스에 속할 때 값이 1, 다른 클래스에 속할 때 값이 0 이 된다. 그 말인 즉슨,
같은 클래스에 속할 때는 첫 번째 term 만 남아서 D 의 값이 작아져야 loss 가 작아지는
것이고, 다른 클래스에 속할 때는 두 번째 term 만 남아서 D 의 값이 커져야 loss 가 작아지는
것이다. 이러한 식으로 loss function 을 구성해 학습시킴으로써 원하는 목표를 달성할 수
있다.

- m 은 임의로 사람이 정하는 값으로, distance 가 m 보다는 커야 한다는 것을 의미한다.

Triplet Network
데이터 3 개를 묶어서 한번에 학습시키는 방식이다.

기준이 되는 이미지를 anchor 이미지라 하고 anchor 이미지와 같은 클래스의 이미지를 positive class
x+, 다른 클래스의 이미지를 negative class x-라 한다.

함수를 거쳐 벡터(embedding vector)를 구했을 때 이를 공간(embedding space) 위의 점으로 표시할


수 있다. 이렇게 하면 공간 위에서 점이 가져야 하는 거리 관계를 정의할 수 있다. 이 경우에는
anchor 와 positive 사이의 거리가 anchor 와 negative 사이의 거리보다 작아야 한다는 조건을 갖는다.

그런데 만약 이 조건만 있으면 매우 작은 차이만 존재하더라도 조건을 만족하기 때문에 학습의


의미가 없다. 따라서 양의 정수 delta 를 좌변에 더해줌으로써 delta 이상 차이가 나야 한다라는
조건으로 만들어, 거리의 차가 충분해지도록 한다.

학습을 위한 loss function 을 정의하면 아래와 같다.

You might also like