mixup() 함수 상세 분석
1. mixup() 개요
mixup() 함수는 두 개의 샘플(x, x_p)을 주어진 가중치(lam)에 따라 선형 조합하여 새로운 데이터를 생성하는 핵심 함수입니다.
즉, mixups() 함수는 mixup을 수행하기 전에 적절한 데이터 샘플을 선택하고 전처리하는 역할을 하며,
실제 mixup을 수행하는 함수는 mixup()입니다.
2. mixup() 코드
def mixup(x, x_p, alpha=1.0, size=1, lam=None):
batch_size = min(x.shape[0], x_p.shape[0])
if lam == None:
lam = np.random.beta(alpha, alpha)
if size > 1:
lam = np.random.beta(alpha, alpha, size=size).reshape([-1, 1])
# x = np.random.permutation(x)
# x_p = np.random.permutation(x_p)
x_mix = lam * x[:batch_size] + (1 - lam) * x_p[:batch_size]
return x_mix, lam
3. mixup() 함수 실행 예제
🔹 예제 1: 기본적인 Mixup 적용
import numpy as np
# 예제 데이터 (2개 샘플, 3개 특성)
x = np.array([[1, 2, 3], [4, 5, 6]])
x_p = np.array([[10, 20, 30], [40, 50, 60]])
# Mixup 수행
x_mix, lam = mixup(x, x_p, alpha=0.5)
print("Mixup Weight (lambda):", lam)
print("Mixed Sample:\n", x_mix)
실행 결과 예시
Mixup Weight (lambda): 0.348
Mixed Sample:
[[ 4.48 8.96 13.44]
[16.96 21.44 25.92]]
- lam = 0.348이므로 x의 비율이 34.8%, x_p의 비율이 65.2%.
- 새로운 샘플은 x와 x_p의 조합으로 생성됨.
🔹 예제 2: 여러 개의 Mixup 수행
x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
x_p = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
x_mix, lam = mixup(x, x_p, alpha=1.0, size=3)
print("Mixup Weights (lambda):", lam)
print("Mixed Samples:\n", x_mix)
실행 결과 예시
Mixup Weights (lambda): [[0.27] [0.52] [0.81]]
Mixed Samples:
[[ 2.43 4.86 7.29]
[22.72 27.86 33.00]
[62.57 70.29 78.00]]
- lam 값이 샘플마다 다르게 샘플링됨.
- 각각 다른 비율로 mixup 수행됨.
4. mixup() 함수 핵심 정리
1️⃣ 배치 크기 결정 | 두 샘플 중 작은 크기를 batch_size로 설정 |
2️⃣ lam 샘플링 | Beta 분포에서 lam 값 샘플링 |
3️⃣ Mixup 적용 | x_mix = lam * x + (1 - lam) * x_p |
4️⃣ 결과 반환 | mixup된 데이터(x_mix)와 lam 값 반환 |
결론
✔ mixup() 함수는 두 개의 샘플을 lam 비율로 선형 조합하여 새로운 샘플을 생성하는 핵심 함수.
✔ lam 값은 Beta 분포에서 샘플링하여 mixup 비율을 결정.
✔ Mixup된 샘플을 반환하여 데이터 증강과 모델 일반화 성능 향상에 기여.
코드 전체
2025.03.20 - [AI 및 Data Analysis/Code] - [ScRAT] Code Demo
[ScRAT] Code Demo
이전 글에서, ScRAT 실행을 해보았다.2025.03.20 - [AI, 논문, 데이터 분석] - [ScRAT] scRNA Analysis [ScRAT] scRNA AnalysisPaper : Phenotype prediction from single-cell RNA-seq data using attention-based neural networks https://academic.o
doraemin.tistory.com
'AI 및 Data Analysis > Code' 카테고리의 다른 글
[ScRAT] Exploratory Data (Summary) (0) | 2025.03.22 |
---|---|
[ScRAT] STEP 2. Attention layer (0) | 2025.03.20 |
[ScRAT] Code Demo (0) | 2025.03.20 |
[ScRAT] scRNA Analysis (0) | 2025.03.20 |
[OpenCV] Morphology (침식 / 팽창 / 열림과 닫힘) (1) | 2025.01.22 |