AI 모델에서.. 특히 대상에 대한 인식, 분류 작업을 할 때 가장 흔하게 사용되는 방식은 코사인 유사도라는 것을 이용하여 가장 유사한 대상을 선택, 분류하는 방법입니다.
코사인 유사도라는 기술의 난이도(아주 쉬움)에 비하여 상당히 뛰어난 효과를 보여주고 있기 때문에 가장 기초적인 기술로 평가되고 있죠.
수학적으로도 충분히 타당성이 있는 공식을 사용하기 때문에 안정성, 신뢰도 또한 높다고 할 수 있습니다.
그런데 최근 코사인 유사도를 무분별하게 사용하지 말라는 글이 올라왔더군요.
https://p.migdal.pl/blog/2025/01/dont-use-cosine-similarity
코사인 유사도가 언제나 올바른 결과를 제공하지 않는다는 주장과 함께 데이터 과학자들이 벡터를 사용하는 이유를 설명하면서 간단하고 좋아보이는 결과 속에 깊은 문제를 가질 수 있음을 강조하고 있습니다.
그런데 솔직한 말로.. 완전한 해답은 어디에도 없는 것이 당연한거죠.
그나마 들어가는 수고에 비해 뛰어난 결과를 도출해 낸다는 이유로 코사인 유사도가 널리 활용되는 것입니다.
해당 글에서 말하고자 하는 것은 이러한 모델을 맹신하지 말고 문제점을 이해하고 사용하라는 의미라고 생각됩니다.
코사인 유사도의 활용영역 중에서 최근에 많이 사용되는 분야가 바로 AI 모델에서 영상 인식/분류 등의 분야와 자연어 처리에서 문장의 의미를 인식/분류하는 영역입니다.
특히 자연어 처리 부분에서는 각 단어, 각 문장이 가지고 있는 수많은 특징을 제각각의 요소별로 벡터화하여 그 벡터 간의 방향을 이용하여 의미의 유사성을 계산하게 되는데, 해당 벡터의 차원은 사용되는 어휘사전에 포함된 어휘의 개수를 기반으로 합니다.
그래서 모든 어휘들의 특징을 반복되는 모델의 학습 과정 속에서 최적화하여 적용하므로 벡터간 연산을 통해서 유사성을 계산하는 것은 상당히 타당성이 높은 편이라고 할 수 있습니다.
그 때문에 "왕 - 남자 + 여자 = 여왕"과 같이 어휘 간의 연산을 통해 의미를 추론하거나 계산하는 것이 가능해 진다는 장점도 있죠.
해당 글에서 제시한 예시를 보면 다음과 같이 볼 수 있습니다.
- A: "Python can make you rich." → 파이썬은 당신을 부자로 만들 수 있습니다.
- B: "Python can make you itch." → 파이썬은 당신을 가려워하게 만들 수 있습니다.
- C: "Mastering Python can fill your pockets." → 파이썬을 마스터하면 주머니가 채워질 수 있습니다.
의미적으로 유사한 문장은 A와 C가 됩니다만 코사인 유사도를 사용한다면 A와 B가 가장 유사한 의미라고 계산하게 됩니다.
이처럼 AI 모델이 실제로 언어의 의미를 이해하는 것이 아니라 각 어휘가 가진 특징을 표현한 벡터 값으로 단순계산을 하기 때문에 이런 오류가 발생하는겁니다.
단어 단위의 벡터가 아닌 문장 단위의 벡터를 사용하면 문제는 훨씬 개선될 수 있습니다.
위의 예시를 문장 단위 벡터를 사용한다면 A와 C가 더 유사하다는 올바른 결과를 얻을 수 있습니다.
개선은 충분히 가능하지만 완전한 해결이 되지는 못한다는 것이 문제입니다.
예시의 내용이 좀 더 복잡해 지거나 살짝 비틀어버린다면 사람과는 달리 AI 모델은 잘못된 결과를 도출할 수 밖에 없다는 것입니다.
또한 코사인 유사도는 두 벡터의 방향의 유사성을 이용한다고 할 수 있는데 방향이 정반대인 경우, 해당 표현도 정반대가 되느냐.. 하면 그것은 또 아니라는거죠.
벡터의 방향이 정반대인 많은 경우에서 실제 의미는 정반대가 아니라 그냥 아무 의미없는 관계가 나타나기 쉽다는 것입니다.
정반대라는 것은 두 벡터가 같지는 않지만 밀접한 관계가 있는 것은 확실한데 이 사실이 성립되지 않는 것은 문제가 될 수 있습니다.
그래서 해당 글에서는 코사인 유사도와 비슷한 결과를 낼 수 있는 피어슨 상관계수를 활용하거나.. LLM에 대한 쿼리를 이용하여 도움을 받거나.. 더욱 개선된 방법으로 임베딩 벡터를 새롭게 추출하거나.. 이런 다양한 방법을 고려할 것을 이야기 하고 있습니다.
우리가 사용하는 LLM의 경우 단순한 코사인 유사도만으로 학습되지 않고 다양한 방식과 방향의 학습 기법이 적용되어 있으며, 더욱 정리되고 표준화된 데이터를 사용하여 학습되었고, 또한 최근의 LLM은 특정 데이터에 맞춘 맞춤형 임베딩 훈련이 적용된 모델도 확보할 수 있기 때문에 이런 여러가지 접근법을 잘 활용하는 것이 좋다는 내용입니다.
앞에서도 언급했듯이... 확실한 것은 모든 곳에 사용할 수 있는 해법은 없다는 것이겠죠.
코사인 유사도를 사용하면 안된다는 것이 아니라 많은 경우에서 코사인 유사도는 매우 유용하지만 이러한 문제도 있음을 이해하고 모델과 해법의 다양성을 고려할 필요가 있다는 것으로 받아들이면 될 것 같습니다.
'AI & IT 이야기' 카테고리의 다른 글
MS Bing Image Creator 롤백 사태로 본 한국형 LLM의 중요성 (2) | 2025.01.22 |
---|---|
데이터 기근 시대의 해답은 과연 합성 데이터일까? (2) | 2025.01.12 |
나에게 잘 맞는 코딩 용 폰트 고르기 (2) | 2025.01.03 |
2025년은 Agentic AI(AI Agent)와 함께... (10) | 2024.11.23 |
구글 딥마인드, 알파폴드3를 오픈소스로 공개 (6) | 2024.11.14 |