안녕하세요, 오늘은 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가지 요소가 있습니다.
- 어떻게 feature를 만들 것인가
- feature 간의 거리를 어떻게 정의할 것인가
- 빠르고 정확한 탐색을 위한 방법은 무엇인가
세가지 모두 너무너무 중요하지만 1은 무척 방대하여 2, 3을 다뤄보면 좋을 것 같습니다. 추후에 다뤄보도록 하겠습니다!
반응형
'기술 이야기 > 면접 꿀팁' 카테고리의 다른 글
[면접 꿀팁] Eigenvalue와 Eigenvector 설명 (0) | 2023.04.15 |
---|---|
[면접 꿀팁] Probability와 Likelihood의 차이점 (2) | 2023.04.11 |
[면접 꿀팁] Python에서 메모리를 어떻게 관리하는가? (4) | 2023.04.02 |
[면접 꿀팁] 함수형 프로그래밍(Functional Programming)이란? (0) | 2023.03.31 |
[면접 꿀팁] 배열(Array)과 링크드 리스트(Linked list)의 특징 (0) | 2023.03.31 |
댓글