6wk_Self Supervised Learning
Self Supervised Learning(자기지도학습)
자기지도 학습은 기계 학습의 한 방법으로, 명시적인 인간의 레이블 없이 입력 데이터의 일부를 다른 부분으로부터 예측하도록 모델을 학습시키는 것입니다. 이 방식은 데이터로부터 자동으로 레이블을 생성하며, 예측 작업 또는 입력 데이터의 재구성을 통해 이루어집니다.
전이 학습에 대한 설명은 다음과 같습니다:
- 저수준 특징: 데이터의 기본적인 패턴이나 속성입니다. 예를 들어 이미지의 경우, 이는 가장자리, 색상, 또는 질감을 포함할 수 있습니다.
- 고수준 특징: 네트워크가 깊어질수록 더 복잡하고 추상적인 특징을 학습합니다. 이러한 특징은 보다 복잡한 데이터의 측면, 예를 들어 이미지에서 특정 객체의 형태 등을 나타냅니다.
- 분류기: 일반적으로 신경망의 마지막 부분으로, 학습된 고수준 특징을 사용하여 입력 데이터를 특정 클래스 또는 출력으로 매핑합니다.
전이 학습은 특정 작업을 위해 개발된 모델을 새로운 작업에 대한 모델의 시작점으로 재사용하는 기법입니다. 이 접근 방식은 이미 학습된 특징을 활용하여 새로운 작업에 대한 학습 효율성과 성능을 개선할 수 있게 해주며, 특히 새로운 작업에 대한 레이블된 데이터가 제한적일 때 유용합니다.
전이 학습
- 비슷한 라벨과 예제 공간을 가진 더 큰 데이터셋을 찾을 수 있다면, 전이 학습은 성능을 크게 향상시킬 수 있습니다.
- 전체 모델을 더 큰 데이터셋에서 훈련시킵니다. → 사전 훈련
- 마지막 몇 개의 레이어를 무작위화하고 그 이전의 레이어는 고정합니다.
- 목표 데이터셋이 작은 경우, 마지막 몇 개의 레이어만 훈련합니다. → 미세 조정
- 때때로, 공개적으로 사용 가능한 사전 훈련된 모델을 찾을 수 있습니다.
- 일반적인 이미지 모델을 활용할 수 있을 정도로 일반적인 작업 및 목표 데이터셋을 가지고 있다면, 사전 훈련된 모델을 사용하여 특징을 초기화하는 것을 고려해보세요.
자기지도 학습 (SSL)
- 자기지도 학습은 라벨이 없는 데이터셋에서 좋은 데이터 표현을 학습할 수 있도록 하는 표현 학습의 특별한 유형입니다.
- 이는 라벨링된 데이터셋을 사용하지 않고도 감독된 학습 작업을 구성하는 아이디어에 의해 동기가 부여됩니다. 왜냐하면:
- 데이터 라벨링은 비용이 많이 들며, 고품질의 라벨링된 데이터셋은 한정적입니다.
- 좋은 표현을 학습하는 것은 다양한 하류 작업에 유용한 정보를 전달하는 것을 쉽게 만듭니다.
- 예를 들어, 하류 작업에 몇 가지 예제만 있을 수 있습니다.
- 예를 들어, 새로운 작업에 대한 제로샷 전이를 진행합니다.
- 자기지도 학습 작업은 또한 전제 작업으로 알려져 있습니다.
자기지도 학습 작업 구성 방법
자기 예측: 개별 데이터 샘플이 주어졌을 때, 해당 샘플의 일부를 다른 부분을 기반으로 예측하는 작업입니다.
- 예측할 부분은 누락된 것처럼 가장합니다.
- 각 개별 데이터 샘플 내에서 예측 작업을 구성합니다: 우리가 그 부분을 모른다고 가정하면서 데이터의 일부를 나머지로부터 예측합니다.
1) 자기회귀 생성
자기회귀 모델은 과거의 행동을 기반으로 미래의 행동을 예측합니다. 본질적인 순차적 순서가 있는 모든 데이터는 회귀로 모델링할 수 있습니다.
예시:
오디오 (WaveNet, WaveRNN)
자기회귀 언어 모델링 (GPT, XLNet)
래스터 스캔 방식의 이미지 (PixelCNN, PixelRNN, iGPT)
PixelRNN & PixelCNN (2016):
작업: 부분적으로 생성된 이미지가 주어졌을 때, 다음 픽셀 값의 확률 분포를 모델링합니다.
픽셀 당 채널별로 가능한 256개의 값으로 분류 문제로 처리합니다.
빈 이미지에서 시작하여 픽셀 당 순차적으로 생성합니다.
이 과정은 확률적입니다!
각 픽셀은 분포에 따라 샘플링되며, 가장 그럴듯한 것을 선택하는 것이 아닙니다.
2) 마스킹 생성
무작위로 정보의 일부를 마스크하고 그 부분이 누락된 것처럼 처리합니다. 모델은 마스크되지 않은 다른 정보를 바탕으로 누락된 부분을 예측하도록 학습합니다.
예시:
마스크된 언어 모델링 (BERT)
마스크된 패치가 있는 이미지 (노이즈 감소 오토인코더, 컨텍스트 오토인코더, 색상화)
오토인코더
* 라벨이 없는 데이터에서 저차원 특성 표현을 학습하는 비지도 방식입니다.
* 재구성 손실로 훈련됩니다: 특성은 원본 데이터(입력 자체)를 재구성하는 데 훈련됩니다.
* 입력은 무엇이든 될 수 있으며 데이터에 대한 가정이 없습니다.
* z는 보통 x보다 작아서 모델이 데이터에서 의미 있는 요소를 포착하도록 강제합니다.
* 오토인코더의 주요 목적은 표현 학습입니다: 임베딩, 매니폴드 학습, 특성 추출 등이 있습니다.
* 추출된 특성은 다른 감독된 모델을 훈련하는 데 사용될 수 있습니다.
* 훈련이 완료되면 디코더는 더 이상 사용되지 않습니다.
노이즈 감소 오토인코더 (2008)
- 입력에 임의의 노이즈를 추가하면 입력의 작은 변동에도 강건한 표현을 장려하여 종단 간 분류 정확도가 향상됩니다.
- 노이즈 예시:
- 무작위 픽셀을 제거
- 가우시안 노이즈
- 소금-후추 노이즈 (무작위 흰색 및 검은색 점)
- 각 입력 x에 대해 여러 손상된 이미지를 적용할 수 있습니다.
- 입력 데이터 x는 저차원 다양체에 밀접하게 위치합니다.
- 오염 q는 x를 이 다양체에서 멀어지게 매핑합니다.
- 모델은 x'을 다양체로 다시 매핑하는 방법을 학습합니다.
컨텍스트 오토인코더 (2016)
- Deepak Pathak 등이 개발한 컨텍스트 오토인코더는 이미지의 일부를 인페인팅하여 특징 학습을 수행합니다.
자기 예측: 내재된 관계 예측
- 하나의 데이터 샘플에 대한 변형(예: 세그멘테이션, 회전)은 원래의 정보를 유지하거나 원하는 내재된 논리를 따라야 합니다.
- 예시:
- 이미지 패치의 순서 (예: 상대적 위치, 직소 퍼즐)
- 이미지 회전
- 패치 전체의 특징 수 계산
대조적 학습: 여러 데이터 샘플이 주어졌을 때, 그들 사이의 관계를 예측하는 작업입니다.
- 여러 샘플은 데이터셋에서 알려진 논리(예: 단어/문장의 순서)를 기반으로 선택하거나 원본을 변경하여 생성할 수 있습니다.
대조적 학습(Contrastive Learning)은 유사한 샘플 쌍이 서로 가깝게 배치되고 불유사한 샘플 쌍은 멀리 떨어지게 하는 임베딩 공간을 학습하는 것을 목표로 합니다. 이는 유사한("긍정적") 샘플과 불유사한("부정적") 샘플을 주어진 앵커 데이터 포인트와 비교하여 분류하는 작업입니다.
대조적 학습의 주요 손실 함수:
- 대조적 손실(Contrastive Loss) (Chopra et al. 2005): 데이터를 임베딩 벡터로 인코딩하여 같은 클래스의 예제들이 유사한 임베딩을 가지고, 다른 클래스의 예제들은 서로 다른 임베딩을 가지도록 합니다. 두 데이터 쌍 (X₁, X₂)과 (X₃, X₄)이 주어졌을 때, 이를 처리합니다.
- 트리플렛 손실(Triplet Loss) (Schroff et al. 2015; FaceNet): 앵커(Anchor) X와 긍정적(Positive) Y 사이의 거리를 최소화하고, 앵커 X와 부정적(Negative) Z 사이의 거리를 동시에 최대화하는 것을 학습합니다. 트리플렛 입력이 주어졌을 때 이를 처리합니다.
- 리프티드 구조 손실(Lifted Structured Loss) (Song et al. 2015): 다양한 클래스 간의 상호작용을 고려하여 손실을 구조화합니다.
- 멀티클래스 n-쌍 손실(Multi-class n-pair Loss) (Sohn 2016): 여러 클래스 간의 상호작용을 통해 보다 세밀하게 분류를 학습합니다.
- 노이즈 대조적 추정(Noise Contrastive Estimation, NCE) (Gutmann & Hyvarinen 2010): 무관한 노이즈 샘플들 사이에서 긍정적 샘플을 식별하기 위해 사용합니다.
- InfoNCE (van den Oord, et al. 2018): 범주형 교차 엔트로피 손실을 사용하여 무관한 노이즈 샘플들 사이에서 긍정적 샘플을 식별합니다. 트리플렛 입력을 기반으로 작동합니다.
- 소프트-근접 이웃 손실(Soft-nearest Neighbors Loss) (Salakhutdinov & Hinton 2007, Frosst et al. 2019): 유사한 샘플들이 서로 가깝게 배치되도록 학습을 유도하며, 이를 통해 더욱 강력한 임베딩 학습을 목표로 합니다.
이러한 다양한 방식을 통해 대조적 학습은 더 높은 차원의 패턴을 학습하고, 복잡한 데이터의 구조를 더 잘 이해할 수 있도록 돕습니다.
방법론 예시 : SimCLR(2020)
SimCLR (Simple Framework for Contrastive Learning of Visual Representations)는 2020년에 Ting Chen 등에 의해 개발된 대조적 자기지도학습의 프레임워크입니다. 이 방법은 시각적 표현을 학습하기 위해 아래와 같은 과정을 포함합니다:
- 확률적 데이터 증강(Stochastic Data Augmentation): 데이터 샘플을 다양하게 변형하여 학습의 일반성을 높이고, 과적합을 방지합니다. 구체적으로는 다음 세 가지 간단한 증강을 순차적으로 적용합니다:
- 무작위 자르기(Random Cropping)
- 무작위 색상 왜곡(Random Color Distortions)
- 무작위 가우시안 블러(Random Gaussian Blur)
- 1번과 2번의 조합이 특히 중요하다고 강조됩니다.
- 기본 인코더(Base Encoder): 증강된 데이터 샘플에서 표현을 추출하기 위해 ResNet과 같은 신경망을 사용합니다. 이는 평균 풀링 계층 후의 출력을 기반으로 합니다.
- 투영 헤드(Projection Head): 추출된 표현을 대조적 손실이 적용될 공간으로 매핑합니다. 이는 하나의 은닉층을 가진 다층 퍼셉트론(MLP)을 사용합니다.
- 대조적 손실 함수(Contrastive Loss Function): 양의 쌍(positive pair)을 포함한 데이터 세트에서 특정 샘플을 식별하는 것을 목표로 합니다. 미니배치에서 N개의 샘플을 샘플링하고, 두 가지 증강을 적용하여 2N개의 데이터 포인트를 생성합니다. 부정적 예제(negative examples)는 명시적으로 샘플링하지 않으며, 다른 2(N-1)개의 증강된 예제를 부정적 예제로 취급합니다.
이외에도 대조적 자기지도학습 방법으로는 MoCo (Momentum Contrast, 2020)와 BYOL (Bootstrap Your Own Latent, 2020) 같은 방법들이 있습니다. 이러한 방법들은 모두 레이블이 없는 데이터에서 효과적인 특징을 학습할 수 있도록 설계되었습니다.
자기지도 학습 (SSL)은 라벨이 없는 데이터셋에서 유용한 데이터 표현을 학습할 수 있게 하는 표현 학습의 한 형태입니다. 이는 비용이 많이 드는 데이터 라벨링 작업 없이도, 자동으로 생성된 레이블을 사용하여 학습이 가능합니다. 특히, 좋은 표현을 학습함으로써, 하류(downstream) 작업에 적용할 때 유용한 정보를 전달하는 데 도움을 줍니다. 예를 들어, 새로운 작업에 대해 소수의 예제만 있거나 전혀 없는 상황에서도 효과적인 전이가 가능합니다.
전이 학습은 이미 학습된 모델을 새로운 작업에 재사용하는 기법으로, 특히 새로운 작업에 대한 데이터가 제한적일 때 유용합니다. 이를 통해 기존의 학습된 특징을 활용하여 새로운 작업의 학습 효율성과 성능을 개선할 수 있습니다. 전형적인 접근 방식은 큰 데이터셋에서 전체 모델을 사전 훈련시키고, 특정 레이어를 무작위화한 후, 소규모 목표 데이터셋에서 마지막 몇 개의 레이어만 미세 조정하는 것입니다.
자기 예측(Self-Prediction)은 개별 데이터 샘플 내에서 일부 데이터를 예측하는 작업으로, 데이터의 나머지 부분을 사용하여 누락된 부분을 예측하도록 모델을 훈련시킵니다. 이는 마스킹 생성 및 자기회귀 생성 같은 방법을 포함합니다. 예를 들어, 자기회귀 모델은 과거 데이터를 바탕으로 미래를 예측하며, 오디오, 언어 모델링, 이미지 처리 등 다양한 영역에서 활용됩니다. PixelRNN과 PixelCNN은 이러한 예로, 이미지를 픽셀 단위로 순차적으로 생성하는 작업을 수행합니다.
대조적 학습(Contrastive Learning)은 여러 데이터 샘플 간의 관계를 예측하는 데 사용되며, 이는 데이터셋의 내재된 논리를 기반으로 샘플을 선택하거나 변형하여 수행됩니다.
결론적으로, 자기지도 학습은 비용이 많이 드는 라벨링 과정 없이도 효과적인 데이터 표현을 학습할 수 있는 강력한 도구로, 다양한 학습 작업과 응용에 적용될 수 있습니다.