제로샷 학습: 기계는 어떻게 미지의 것을 해독하는가
머신러닝에서 제로샷 러닝(ZSL)의 원리, 평가 지표, 응용 분야, 그리고 핵심 ZSL 프레임워크와 라이브러리를 자세히 탐구한 글입니다. 이 글은 AI가 번역한 기사입니다. 오역이 의심되면 댓글로 알려 주세요.
Created on September 15|Last edited on September 15
Comment
진화하는 환경에서 머신러닝여전히 뚜렷한 과제가 남아 있습니다. 한 번도 본 적이 없는 객체나 개념을 모델이 어떻게 인식하도록 학습시킬 수 있을까요? 해답은 제로샷 러닝(ZSL)입니다.
이 글에서는 제로샷 러닝의 기초를 살펴보고, 속성 기반 학습과 시맨틱 임베딩 같은 혁신적인 방법들을 다룹니다. 또한 이미지 인식과 챗봇 등 실제 응용 분야를 탐구하고, 발전을 이끄는 핵심 도구들도 소개합니다. 머신러닝에 익숙한 분이든 호기심 많은 초보자이든, 이 여정은 흥미로운 분야에 대한 명확하고 깊이 있는 통찰을 제공할 것입니다. 시작해 보겠습니다.
다룰 내용
제로샷 러닝이란?속성 기반 제로샷 러닝제로샷 러닝에서의 의미 임베딩제로샷 러닝에서의 전이 학습제로샷 러닝의 평가 지표Top‑k 정확도클래스 평균 정확도조화 평균머신러닝에서의 제로샷 러닝 응용 분야이미지 인식자연어 처리 (NLP)제로샷 러닝 프레임워크와 라이브러리결론
제로샷 러닝이란?
컴퓨터에게 동물을 알아보도록 가르치려고 하는데, 세상에 있는 모든 동물을 보여줄 수는 없다고 상상해 보세요. 제로샷 러닝은 컴퓨터에게 요약 치트시트를 쥐여주는 것과 비슷합니다. 모든 동물을 직접 보게 하는 대신, 시스템에 설명이나 속성을 제공합니다. 그래서 특정 동물을 전에 본 적이 없어도, “어, 이거 오리너구리 설명이랑 비슷한데?”라고 판단할 수 있는 것이죠.
제로샷 러닝은 시맨틱 속성이나 텍스트 설명과 같은 보조 정보를 활용하여, 학습 과정에서 직접적인 예시를 보지 못한 클래스도 신경망 모델이 인식하고 분류할 수 있도록 한다. 이 접근법은 가능한 모든 클래스에 대해 레이블된 데이터를 수집하는 일이 비현실적일 때 특히 유용하다.

그렇다고 해도 제로샷 러닝은 학습 중에 본 적이 없는 클래스를 인식하기 위해 다양한 방법을 사용합니다. 여기에는 시각적 특징을 시맨틱 속성과 연결하는 속성 기반 기법과, 시각 정보와 시맨틱 정보를 공유된 공간에서 연결하는 시맨틱 임베딩 접근법이 포함됩니다. 또한 속성과 임베딩처럼 서로 다른 정보원을 결합해 새로운 클래스를 더 잘 인식하도록 돕는 하이브리드 방법도 있습니다. 전반적으로 ZSL은 모든 클래스에 대한 예시를 확보하기 어려운 상황에서 필수적입니다.
속성 기반 제로샷 러닝
속성 기반 제로샷 러닝은 사전에 정의된, 사람이 이해할 수 있는 속성을 활용해 클래스를 설명한다. 이러한 속성은 색상과 형태 같은 물리적 특징부터 행동이나 다른 식별 가능한 특성까지 다양하다. 예를 들어 동물 맥락에서는 “깃털이 있음”이나 “날 수 있음”과 같은 항목이 속성으로 쓰일 수 있다.
누군가에게 어떤 걸 설명할 때, 큰 이름표를 붙이는 대신 특징을 쭉 설명해 줄 때가 있잖아요? 속성 기반 제로샷 러닝이 바로 그런 방식입니다. 개와 새를 예로 들어 살펴보죠.
개와 새를 떠올려 보세요. “개”나 “새”라고 말하��� 않고 어떻게 설명할 수 있을까요?
- 개요? 보통 꼬리와 털이 있고, 어떤 개들은 귀여운 콧수염도 있어요.
- 새요? 꼬리도 있지만 털 대신 깃털이 있고, 대부분 부리를 가지고 있어요.
그렇다면, 간단히 정리해 보면:
- 개: [꼬리: 예, 털: 예, 깃털: 아니요, 콧수염: 아마도, 부리: 아니요]
- 새: [꼬리: 예, 털: 아니요, 깃털: 예, 콧수염: 아니요, 부리: 예]

이제 어떤 시스템에 사진들을 잔뜩 넣어 준다고 상상해 보세요. “이건 개다”, “이건 새다”라고 가르치는 대신, 그 사진들의 특징을 가르칩니다. 그러고 나서 새로운 사진을 보여 주면, 그 시스템은 곧바로 “개”나 “새”라고 말하지 않습니다. 대신 눈에 보이는 특징들을 알려 줄 거예요. 그러면 우리는 그 특징을 바탕으로 무엇을 보고 있는지 추측할 수 있습니다.
학습 단계에서 모델은 이미지와 같은 입력 데이터로부터 이러한 속성을 인식하고 예측하도록 훈련됩니다. 입력을 특정 클래스로 직접 연결하는 대신, 입력을 가장 잘 설명하는 속성 집합을 예측합니다. 보지 못한 클래스에 직면했을 때는 주어진 입력의 속성을 예측하고, 이 예측된 속성을 미지 클래스의 알려진 속성과 비교하여 가장 가능성이 높은 클래스를 추론합니다.
이러한 방식의 제로샷 러닝이 지니는 큰 장점 중 하나는 해석 가능성입니다. 속성을 활용하면 모델의 예측이 보다 투명해져 의사결정 과정을 이해하는 데 도움이 됩니다. 또한 이러한 속성들은 클래스 간의 미묘한 차이를 포착해 서로 가까운 범주들 사이에서도 더 세밀한 구분을 가능하게 합니다. 더 나아가 다양한 속성을 유연하게 조합할 수 있기 때문에, 학습 중에 특정 조합을 보지 못했더라도 매우 폭넓은 클래스들을 인식하는 데 기여할 수 있습니다.
하지만 이 접근 방식에는 몇 가지 어려움도 따릅니다. 모든 클래스에 대해 속성을 정의하고 주석을 다는 작업은 많은 노동과 시간이 필요합니다. 또한 방법론의 성패는 선택한 속성과 깊이 얽혀 있습니다. 속성이 너무 포괄적이면 각 클래스의 고유한 특성을 포착하지 못할 수 있고, 반대로 너무 구체적이면 다양한 클래스 전반에 걸쳐 일반화가 잘 되지 않을 수 있습니다. 더 나아가 일부 속성은 클래스 간에 겹치거나 해석이 달라질 여지가 있어 모호성이 발생할 수 있으며, 이는 모델의 예측에 혼선을 초래할 수 있습니다.
제로샷 러닝에서의 의미 임베딩
제로샷 러닝에서의 의미 임베딩은 시각적 특징과 텍스트 설명이나 워드 임베딩 같은 보조적 의미 정보를 공통 공간에 정렬해 놓는 것을 의미합니다.
이러한 정렬을 통해 모델은 라벨이 제한된 경우에도 시각적 표현과 의미 표현 사이의 유사성을 찾아 보지 못한 클래스를 인식할 수 있습니다. 모델은 학습 과정에서 시각적 특징과 의미 간의 관계를 습득하며, 공통 공간에서 새로운 클래스에 대해 일반화하고 예측을 수행할 수 있게 됩니다.
의미 임베딩을 더 명확히 이해하려면 아래에 제시된 그래프를 살펴보세요. 이 그래프는 개념들이 실제로 어떻게 작동하는지 보여 줍니다. 의미 임베딩 그래프에서 ‘King’과 ‘Queen’을 나타내는 벡터는 서로 가깝게 위치해 있어 두 단어의 의미적 유사성을 나타냅니다. 마찬가지로 ‘Man’과 ‘Woman’의 벡터도 서로 가까이 배치되어 있어 관련된 의미를 반영합니다. 이러한 벡터 공간에서의 근접성은 각각의 단어 쌍 사이에 존재하는 관계와 연결성을 강조합니다.

이제 다양한 동물의 라벨이 있는 이미지(관측 클래스)와 이에 대응하는 의미 임베딩 또는 텍스트 설명을 포함한 데이터셋으로 학습된 제로샷 러닝 모델을 가정해 봅시다. 학습 과정에서 모델은 시각적 특징(동물 이미지)과 의미 임베딩을 동일한 의미 공간에 매핑하는 법을 익힙니다. 앞서의 동물 예시에서처럼, 모델은 공유 공간에서 “Dog” 이미지와 해당 의미 임베딩이 유사한 표현을 가지므로 서로 가깝게 위치한다는 점을 학습하며, “Bird” 분류에 대해서도 동일한 방식으로 근접하게 매핑됨을 학습합니다.
이제 학습 과정에서 한 번도 본 적이 없는 클래스인 “Giraffe”를 생각해 봅시다. 우리는 모델에 “Giraffe”의 의미 임베딩 또는 텍스트 설명을 제공합니다. 그러면 모델은 “Giraffe”를 공통 의미 공간에 투영하고, 관측 클래스들과의 유사도를 계산합니다. 학습된 관계를 바탕으로, 모델은 직접적인 예시를 본 적이 없더라도 공통 의미 공간에서 관측 클래스들과의 유사성을 근거로 “Giraffe”를 새로운 클래스로 인식합니다. 위의 그래프에서도 “Princess” 같은 새로운 단어를 분류할 때 유사한 방식이 적용될 수 있습니다.
제로샷 러닝에서의 전이 학습
당신이 농구를 정말 잘하는데, 이제 배구를 배우고 싶다고 상상해 보세요. 손과 눈의 협응 같은 몇 가지 기술은 그대로 옮아갈 수 있겠죠? 대략 그런 식입니다. 전이 학습 제로샷 러닝에서 작동합니다.
보통 머신러닝 실무자들이 전이 학습을 이야기할 때는, 대규모 과제(예: 웹에서 모은 방대한 사진 데이터로 학습)에서 얻은 지식을 더 구체적인 작업(예: 개인 여행 사진 분류)에 맞게 조금씩 조정하는 것을 떠올립니다. 왜 그럴까요? 여행 사진만으로 학습하려고 하면 애초에 이미지 수가 충분하지 않아 필요한 능력을 습득하기에 정보가 부족할 수 있기 때문입니다. 큰 과제로 먼저 시작하면 그만큼 유리한 출발선에서 시작할 수 있습니다.

이제 이를 제로샷 러닝과 결합해 봅시다. 한 번도 본 적 없는 것을 알아내야 하는 상황이죠. 마치 새로운 스포츠에서 예기치 않은 공을 받는 느낌입니다. 처음부터 다시 시작하기보다, 이미 배운 기초 지식(예: 대규모 사진 데이터에서 얻은 것)에 기대고, 거기에 단서(보이지 않는 항목의 힌트나 속성)를 더해 묶는 방식입니다. 농구에서 익힌 기술에 배구에 대한 몇 가지 팁을 보태서 그럴듯한 서브를 시도하는 것과 비슷합니다.
큰 과제에서 배운 것을 바탕으로 하면, 한 번도 본 적 없는 대상도 더 잘 이해할 수 있습니다. 다만 문제가 하나 있습니다. 그 큰 과제에서 익�� 지식이 새로운 과제에 필요한 것과 동떨어져 있다면, 상황이 다소 꼬일 수 있습니다. 마치 수영장에서 농구 기술을 쓰려는 것과 같죠. 늘 잘 맞는 선택은 아닙니다!
한마디로, 제로샷 상황에서 전이 학습을 활용한다는 것은 이전 경험을 바탕으로 낯선 새로운 상황에 대해 근거 있는 추정을 해 보는 것과 같습니다. 핵심은 점들을 연결하는 데 있습니다.
제로샷 러닝의 평가 지표
머신러닝 분야에서 모델을 평가하는 일은 보통 비교적 간단합니다. 정확도, 정밀도, 재현율 같은 익숙한 지표들이 있죠. 하나의 데이터셋으로 학습하고, 다른 데이터셋으로 테스트하여 모델의 예측이 실제 결과와 얼마나 잘 맞는지 확인하면 됩니다. 하지만 제로샷 러닝으로 넘어가면 상황이 조금 더 까다로워집니다.
제로샷 러닝의 어려움은, 모델이 명시적으로 학습하지 않은 클래스에 대해 곧장 예측을 하도록 ‘깊은 물’에 던져지는 것과 같다는 데 있습니다. 프랑스어와 스페인어만 공부한 사람에게, 언어 사이의 유사성을 활용해 이탈리아어 문장을 해독하라고 묻는 것과 비슷하죠. 일반적인 설정이라면, 그 사람이 이탈리아어 문장을 제대로 번역했는지만 확인하면 됩니다. 하지만 ZSL에서는 단순히 번역이 맞았는지 여부를 넘어서, 알려진 것(프랑스어와 스페인어)과 알려지지 않은 것(이탈리아어) 사이의 내재적 연결을 이해하는지가 중요합니다.
그래서 전통적인 상황에서는 정확도나 F1 점수 같은 지표에 크게 의존할 수 있지만, 제로샷 러닝에서는 레이블이 없거나 보지 못한 데이터에 대해 평가해야 하므로 좀 더 창의적인 접근이 필요합니다.
Top‑k 정확도
Top‑k 정확도는 모델의 상위 k개 예측 안에 실제 보지 못한 클래스가 포함되어 있는지를 확인하여, “정답 처리”에 더 넉넉한 기준을 제공합니다.
클래스 평균 정확도
클래스 평균 정확도 역시 중요하게 사용되는 지표입니다. 이 지표는 모델이 익숙한(보았던) 클래스와 낯선(보지 못한) 클래스 전반에서 얼마나 균형 있게 성능을 내는지 평가합니다.
조화 평균
하지만 제로샷 러닝에서 특히 두드러지는 지표는 조화 평균입니다. 일반화된 ZSL 상황에서는 이 지표가 익숙한 쪽만 유리하게 평가하지 않도록 보장해 주며, 모델이 낯선 영역에서도 실제로 성과를 내려고 노력하는지 확인합니다. 본질적으로, 모델이 아는 것에만 매달려 안전하게만 행동하지 않도록 ‘정직함’을 유지하게 만드는 장치입니다.
머신러닝에서의 제로샷 러닝 응용 분야
이미지 인식

야생동물 보전 프로젝트를 위한 이미지 인식 시스템을 구축한다고 가정해 봅시다. 사자, 얼룩말, 코끼리처럼 흔한 동물의 이미지는 충분히 있지만, 수마트라코뿔소처럼 이미지가 많지 않은 멸종 위기 종도 모델이 식별하게 하고 싶습니다. 제로샷 러닝을 사용하면 수마트라코뿔소에 “뿔이 있음”, “멸종 위기”, “포유류”와 같은 속성을 연결할 수 있습니다. 잘 알려진 동물들로부터의 지식을 전이함으로써, 모델은 이러한 속성을 바탕으로 아직 보지 못한 수마트라코뿔소를 인식하고 분류할 수 있게 됩니다.
자연어 처리 (NLP)

제로샷 러닝의 또 다른 응용 분야는 다음과 같습니다 자연어 처리 (NLP)예를 들어 사용자들의 기술 문제 해결을 돕는 고객 지원 챗봇을 개발하고 있다고 해봅시다. 이 챗봇은 “와이파이가 작동하지 않음”, “소프트웨어 업데이트 오류”처럼 흔한 문제를 식별하는 데는 매우 뛰어납니다. 하지만 새롭게 등장하는 기술과 관련된 문의도 처리하길 원합니다. 제로샷 러닝을 통해 과거에 해결했던 기술 문제와 그 해결책 사례로 챗봇을 학습시킬 수 있습니다. 그러면 챗봇은 이전에 본 적 없는 기술에 대한 질문을 받더라도, 알려진 문제와 그 해결책 사이의 연관성을 바탕으로 추론하여 직접 경험하지 않은 새로운 기술에도 해결책을 도출할 수 있습니다.
제로샷 러닝 프레임워크와 라이브러리
제로샷 러닝에 뛰어들 때, 판도를 진정으로 바꿔 놓은 눈에 띄는 프레임워크와 라이브러리가 몇 가지 있습니다. ZSL 세계의 흐름을 이끄는 이 보석 같은 도구들을 지금 바로 살펴보겠습니다.
OpenAI의 CLIP: OpenAI의 CLIP 이미지와 텍스트를 공통 공간에서 함께 이해하는 능력으로 큰 주목을 받은, 영향력이 매우 큰 프레임워크입니다. 이 다재다능함 덕분에 텍스트 설명을 기반으로 이미지를 분류하거나 그 반대로도 가능한 제로샷 이미지 분류를 수행할 수 있습니다. CLIP은 다양한 응용 분야에서 널리 채택되어 많은 ZSL 프로젝트에서 기본 선택지로 자리 잡았습니다.
Hugging Face Transformers: Hugging Face Transformers 자연어 처리 작업에 특화된 강력한 도구이며, 사전 학습된 모델인 BERT, GPT, 그리고 T5 은 텍스트 데이터를 다루는 제로샷 러닝 작업에서 널리 사용됩니다. 이 라이브러리는 제로샷 텍스트 분류와 생성 등을 포함한 다양한 NLP 작업에 대한 유연성과 폭넓은 지원을 제공하여, NLP 분야에서 실험을 진행할 때 인기 있는 선택지로 자리 잡고 있습니다.
ZSLtoolkit: ZSLtoolkit은 제로샷 러닝 작업을 위해 특별히 설계된 도구로, 연구용에 적합한 포괄적인 도구와 알고리즘 세트를 제공합니다. ZSL 기법에 초점을 맞춘 구성 덕분에 다양한 알고리즘 구현과 시나리오에 맞춘 평가 지표를 제공하며, 연구자와 실무자에게 널리 선택받고 있습니다.
결론
복잡한 제로샷 러닝의 세계를 함께 살펴보며, 이 패러다임이 머신러닝의 가장 시급한 과제들을 해결하는 데 큰 잠재력을 지니고 있음을 확인했습니다. 속성 기반 인식과 같은 혁신적인 방법부터 다양한 도메인에서의 활용에 이르기까지, 제로샷 러닝은 지식 전달과 일반화에 대한 우리의 이해를 새롭게 바꾸고 있습니다. 우리가 살펴본 도구와 기법들은 현재 지형을 엿보게 해 주지만, 이 분야는 계속해서 진화하고 있습니다.
머신러닝에 종사하는 모든 이들—경험 많은 전문가든 이제 막 시작한 입문자든—에게 제로샷 러닝은 단순한 기법을 넘어, 계산적 학습의 무한한 가능성을 증명하는 이정표입니다.
추천 읽을거리
Google Bakes A FLAN: Improved Zero-Shot Learning For NLP
Google Research has improved zero-shot learning abilities for NLP with FLAN. But what is it?
An Introduction To HuggingFace Transformers for NLP
In this article, we learn all about the history and utility of HuggingFace, the transformer models that made them a household name, and how you can use them with W&B
Implementing CLIP With PyTorch Lightning
This article explores how to use PyTorch Lightning to implement the CLIP model for natural language-based image search to find images for a set of given prompts.
An Introduction to BERT And How To Use It
In this article, we will explore the architecture behind Google’s revolutionary BERT model and implement it practically through the HuggingFace framework BERT NLP.
Add a comment
