최근 챗GPT로 인해 부상한 제로샷(zero-shot), 원샷(one-shot), 퓨샷(few-shot) 러닝 기법은 데이터를 일일이 라벨링하지 않고도 머신러닝 모델을 학습시킬 수 있도록 해줍니다. 해당 포스트는 CV(Computer Vision)
및 NLP(Natural Language Processing)
의 관점에서 N-shot learning을 정의하는 것을 목적으로 합니다.
해당 글은 개인적으로 다양한 소스의 글과 영상을 통해 공부하고 작성한 내용입니다. 틀린 내용이 있다면 편하게 댓글로 말씀해주세요 🤗
본 적 없는
새로운 클래스를 인식할 수 있도록 하는 학습 방법입니다. 이는 모델이 클래스 간의 관계나 속성을 통해 일반화하는 능력을 활용합니다.단 하나의 예시
만 제공될 때 모델이 그 클래스를 인식할 수 있도록 하는 학습 방법입니다. 이는 유사도 학습이나 메타 학습 등의 기법을 활용하여 구현됩니다.극소량의 데이터
만을 이용하여 새로운 작업이나 클래스를 빠르게 학습하도록 설계된 알고리즘을 말합니다. 이 방법은 메타 러닝(meta-learning)이나 학습 전략의 최적화 등을 통해 적은 데이터로도 효과적인 일반화(generalization) 능력을 갖추도록 합니다.💡 더 자세하게 설명드리기 전에 먼저 복습 차원에서 사전학습
과 파인튜닝
에 대해서 살펴볼까요?
Source: AIML.com Research
사전학습 단계에서는 모델이 대규모 데이터셋을 사용하여 광범위한 지식을 학습합니다. 이 과정은 모델에게 일반적인 패턴, 구조, 언어적 특성 등을 이해하게 하는 기반을 마련합니다. LLM 모델의 경우, 위 그림처럼 Large Text Corpus(대용량 텍스트 데이터)를 기반으로 다양한 Task에 대하여 사전학습을 수행하게 됩니다.
파인튜닝 단계에서는 사전학습된 모델을 좀 더 특정 태스크나 적은 양의 데이터에 적합하도록 조정합니다. 예를 들어, 금융 도메인 특화 모델, 법률 도메인 특화 모델과 같은 특정 도메인에 초점을 둔 모델이라면 해당 데이터로 모델 파인튜닝을 수행해주면 성능이 향상됩니다.
인퍼런스 단계에서는 학습된 모델을 새로운 데이터에 적용하여 예측을 수행합니다.
좀 더 자세한 그림으로 한번 다시 정리해보도록 하겠습니다. 다양한 도메인과 TASK에 대하여 사전학습을 수행하고 난 뒤에, 특정 도메인/Task에 대해서 파인튜닝을 통해 모델 성능을 향상시킬 수 있습니다.
Source: https://www.saltlux.com/
💡 그럼 언제 Few-shot이 쓰이는 거지?🤔
ZSL(Zero-shot Learning)
, OSL(One-shot Learning)
, FSL(Few-shot Learning)
은 딥러닝 모델의 일반적인 학습 및 적용 단계인 사전학습(pretraining) -> 파인튜닝(finetuning) -> 인퍼런스(inference) 과정에서 주로 파인튜닝 단계와 인퍼런스 단계에서 중요한 역할을 합니다. 이들 방법의 적용과 목적을 각 단계별로 살펴보겠습니다.
사전학습 (Pretraining)
파인튜닝 (Finetuning)
인퍼런스 (Inference)
📖 요약하자면, ZSL은 주로 인퍼런스 단계에서 본 적 없는 클래스를 처리하는 모델의 능력을 나타내며, OSL과 FSL은 파인튜닝 단계에서 모델을 특정 태스크에 최적화하는 데 중요한 역할을 하고, 인퍼런스 단계에서도 그 성능이 평가됩니다. 이러한 방법들은 모델이 제한된 정보로부터 학습하고, 적응하며, 예측하는 능력을 극대화하는 데 도움을 줍니다.
지금까지 ZSL, OSL, FSL의 개념과 어느 단계(step)에서 사용되는지 살펴봤는데요. 이쯤 되면 이런 궁금증이 생기실 것 같습니다.
🤔그렇다면 일반적인 Supervised Learning(지도학습)과 Few-shot Learning(퓨샷러닝)은 학습 면에서 어떤 차이가 있을까?
지도 학습(Supervised Learning)
은 레이블이 지정된 대규모의 훈련 데이터를 사용하여 모델을 훈련시키는 기계 학습의 한 형태입니다. 이 과정에서 모델은 입력 데이터에서 출력 레이블을 예측하는 방법을 학습합니다. 훈련 데이터는 다양한 특징(feature)을 포함하고 있으며, 각 샘플은 특정 레이블과 연관되어 있습니다. 일단 모델이 충분한 데이터로 훈련되고 나면, 새로운, 전에 본 적 없는 데이터에 대한 예측을 할 수 있게 됩니다. (하지만, 이러한 예측은 훈련 중에 모델이 학습한 클래스 내에서 이루어집니다.)
반면에, Few-shot Learning
은 지도 학습의 한 형태이지만, 매우 적은 수의 훈련 샘플로부터 학습(또는 검증)하는 데 중점을 둡니다. 이 방법론은 모델이 새롭고 알려지지 않은 클래스의 데이터에 대해 예측을 수행할 수 있게 하기 위해 설계되었습니다. Few-shot Learning 시나리오에서는 지원 세트(Support Set)가 제공되며, 이는 각 클래스의 몇 가지 예시만을 포함합니다. 그 후, 쿼리 샘플(Query Sample)이 주어지면 모델은 지원 세트를 기반으로 이 샘플이 어떤 클래스에 속하는지 예측해야 합니다. 여기서 중요한 점은 쿼리 샘플이 훈련 과정에서 본 적 없는 새로운 클래스에서 온 것일 수 있다는 것입니다.
이는 아래 그림으로 직관적으로 설명이 가능할 것 같습니다. 좌측의 그림(Supervised Learning)에서는 실제 학습 데이터셋에 있던 클래스인 Husky
를 분류하고 있는 것을 볼 수 있습니다. 반면에 우측의 그림(Few-Shot Learning)에서는 실제 학습 데이터셋에는 Rabbit이 없고 이를 분류하고자 하는 것을 볼 수 있습니다.
Source: Youtube Lecture Slide(Shusen Wang)
컴퓨터 비전에서 ZSL, OSL, FSL은 이미지 분류
, 객체 인식
등의 태스크에서 활용되며, 모델이 적은 예시나 본 적 없는 예시를 기반으로 객체를 인식하거나 분류할 수 있게 합니다.
데이터셋 구성 예시:
학습 방법:
검증 방법
검증은 학습 데이터셋에서 본 적 없는 새로운 이미지나 클래스를 얼마나 잘 분류하는지를 평가합니다. 검증 데이터셋은 다양한 소스에서 가져온 새로운 이미지로 구성됩니다.
NLP에서 이러한 학습 방식은 텍스트 분류
, 기계 번역
, 질의 응답
등에 적용됩니다. 모델은 사전 학습된 지식을 활용하거나 제한된 데이터로부터 특정 태스크를 수행합니다.
데이터셋 구성 예시:
학습 방법:
검증 방법
검증은 모델이 학습 과정에서 본 적 없는 새로운 문제에 얼마나 잘 대응하는지를 평가합니다. 검증 데이터셋은 다양한 주제나 스타일의 텍스트로 구성됩니다.
두 분야 모두 ZSL, OSL, FSL을 사용하여 제한된 데이터로부터 모델의 일반화 및 적응 능력을 개선합니다. 또한, 사전 학습된 모델과 메타 학습 기법이 중요한 역할을 합니다.
💡 메타 학습 기법이란?
메타 학습(Meta-learning)
기법은 "학습을 학습하는" 방식으로, 모델이 다양한 태스크에서 빠르게 학습하고 적응하는 방법을 배우는 학습 접근 방식입니다. 이 기법의 핵심 아이디어는 모델이 새로운 작업이나 소량의 데이터로부터 효율적으로 학습하는 법을 학습함으로써, 본 적 없는 태스크에 대해 빠르게 적응하고 예측을 수행할 수 있도록 하는 것입니다. 메타 학습은 특히 Zero-shot Learning (ZSL), One-shot Learning (OSL), 그리고 Few-shot Learning (FSL)과 같이 데이터가 제한적인 상황에서 모델의 성능을 개선하는 데 유용합니다.
CV와 NLP는 다루는 데이터의 형태(이미지 vs. 텍스트)와 관련 태스크에서 차이를 보입니다. NLP는 프롬프팅이 자주 사용되며, 이는 사전 학습된 언어 모델을 활용해 새로운 태스크에 적응하는 방법입니다. 반면, CV에서는 이미지의 속성이나 유사도를 기반으로 학습하는 경우가 많습니다.
📺 컴퓨터 비전(CV)에서 유사도 기반 학습은 주로 이미지 간의 시각적 유사성을 평가하는 데 사용됩니다. 예를 들어, Siamese 네트워크는 두 이미지가 같은 클래스에 속하는지 여부를 판별하기 위해 훈련됩니다. 이 과정에서, 네트워크는 두 이미지의 특징을 추출하고, 이 특징 벡터 간의 거리 또는 유사도를 계산합니다.
예시: 아래 그림에서, 모델은 사물 사진 두 장을 입력으로 받습니다. Siamese 네트워크는 두 사물에서 특징 벡터를 추출하고, 이 두 사물이 같은가의 여부를 판별하기 위해 특징 벡터 간의 유사도를 계산합니다. 학습 과정에서 네트워크는 다양한 사물 이미지 쌍을 사용하여, 유사도를 정확하게 측정하는 방법을 배웁니다.
Source: Siamese Neural Networks for One-shot Image Recognition (논문)
🗣️ 자연어 처리(NLP)에서 프롬프팅은 사전 학습된 언어 모델을 새로운 태스크에 적응시키는 강력한 방법으로 사용됩니다. 프롬프트는 모델에게 특정 작업을 수행하도록 지시하는 텍스트 조각입니다.
예시: GPT-3와 같은 대규모 언어 모델을 사용하는 질문-답변 시스템에서, 시스템은 "베를린은 어느 나라의 수도입니까?"와 같은 질문에 대한 답변을 생성하기 위해 프롬프트를 사용합니다. 프롬프트는 질문 형식으로 구성되며, 모델은 이를 바탕으로 관련 지식을 활용하여 "베를린은 독일의 수도입니다."와 같은 답변을 생성합니다.
이때 프롬프팅 방식으로 Zero-shot, One-shot, Few-shot 기법을 통해 모델이 직접적으로 학습하지 않은 태스크에 대해서도 유용한 답변을 생성할 수 있도록 합니다. 이는 기존의 Transfer Learning과 다른 방식입니다.
Source: Language Models are Few-Shot Learners (논문)
이것으로 제로샷(zero-shot), 원샷(one-shot), 퓨샷(few-shot)의 개념에 대해서 살펴보고, 각각 컴퓨터 비전(CV), 자연어 처리(NLP) 관점에서 비교해보는 시간을 가졌습니다.
여러분의 의견은 어떤가요? 컴퓨터 비전(CV)과 자연어 처리(NLP)에서의 Few-shot Learning이 동일하다고 느껴지시나요? 의견을 아래 댓글로 남겨주세요 🤔