본문 바로가기
기술 이야기/면접 꿀팁

[면접 꿀팁] Similarity Search에 대하여

by 넌 꿈이 뭐야? 2023. 4. 14.

안녕하세요, 오늘은 Similarity Search에 대해 간단하게 소개해보려고 합니다. 경험상 실무에서 꽤 중요하게 다뤄지는 것에 반해 그 개념을 정확히 짚고 넘어갈 기회가 많지 않았던 것 같습니다. 그래서 리뷰해보겠습니다.

Similarity Search란?

Similarity Search - 겉보기에는 다 비슷비슷해 보인다

Similarity Search란 단어의 직역대로 나와 비슷한 친구를 찾는 알고리즘을 말합니다. 머신러닝에서 Unsupervised method로 분류되고 같은 표현으로 Clustering 등으로 말하기도 합니다. 이게 왜 중요한 걸까요?? 두가지 예시를 들어보겠습니다.

  • 나는 지금 딥러닝을 활용한 Classifier를 배포하려고 한다. 이 엔진은 현재 물품 1,000종에 대해 분류를 해주는 훌륭한 친구지만 앞으로 품목이 얼마나 더 늘어날 지 가늠을 할 수 없다. 또한 언제라도 새로운 품목이 들어올 수 있는 이 상황에서 어떤 방법을 쓸 수 있을까?
  • 내가 만든 물품 인식 엔진은 참 훌륭하다. 하지만 가끔씩 잘못된 답을 내놓기도 하는데 그 이유가 궁금하다. 모델적 관점에서 왜 틀렸는지 알면 가장 좋겠지만 그것까지는 안돼도 결과론적 관점에서 왜 틀렸는지 알고 싶지는 않을까?? 그 방법은 뭘까?

나랑 비슷한 친구를 찾는다는건 참 어려운 일이지만 위의 상황처럼 similarity search가 효과적인 접근일 경우가 꽤 있습니다.

잠깐 용어 설명
- 쿼리(Query): 검색할 친구
- 갤러리(Gallery): 비교될 친구
- feature: 데이터가 표현되는 값, 방식

예를 들어, 지구에서 나와 비슷한 사람을 찾는 일이라면 나는 query, 지구의 다른 사람들은 gallery, 그리고 나를 포함한 모든 사람들 각각에 대해 눈코입... 외모.. 성격 재산 등 사람을 구별할만한 정보가 있다면 그것들을 다 합친게 feature라고 말할 수 있습니다 (물론 정보의 일부만 사용해도 상관 없습니다).

Similarity Search와 Classification의 차이

간혹 분류 모델과 헷갈리시는 분들이 계신 것 같습니다. 간단하게 표로 정리하면 아래와 같습니다.


Similarity Search의 세가지 요소

우리가 Similarity Search를 한다고 하면 크게 3가지 요소가 있습니다.

  1. 어떻게 feature를 만들 것인가
  2. feature 간의 거리를 어떻게 정의할 것인가
  3. 빠르고 정확한 탐색을 위한 방법은 무엇인가

세가지 모두 너무너무 중요하지만 1은 무척 방대하여 2, 3을 다뤄보면 좋을 것 같습니다. 추후에 다뤄보도록 하겠습니다!

반응형

댓글