멀티태스크 학습: Gradient Surgery
ㅁ 멀티태스크 학습
ㅇ 정의:
멀티태스크 학습은 하나의 모델이 여러 개의 관련된 작업을 동시에 학습하여 성능을 향상시키는 기계 학습 방법.
ㅇ 특징:
– 데이터 간 상호 의존성을 활용하여 일반화 성능을 높임.
– 특정 작업에서의 과적합을 방지.
– 공유된 표현 학습을 통해 데이터 효율성을 증대.
ㅇ 적합한 경우:
– 여러 작업 간에 공통된 특징이 존재하는 경우.
– 데이터가 제한적일 때.
ㅇ 시험 함정:
– 멀티태스크 학습이 항상 성능을 향상시키는 것은 아님.
– 작업 간 상충 관계가 있을 경우 성능 저하 가능.
ㅇ 시험 대비 “패턴 보기” 예시:
– 멀티태스크 학습은 모든 작업에서 성능을 향상시킨다. (X)
– 멀티태스크 학습은 데이터 효율성을 높이고 과적합을 방지할 수 있다. (O)
================================
1. Gradient Surgery
ㅇ 정의:
Gradient Surgery는 멀티태스크 학습에서 작업 간 상충되는 경사 정보를 조정하여 모델 성능을 최적화하는 방법.
ㅇ 특징:
– 경사 벡터 간 상충을 탐지하고 이를 조정.
– 작업 간의 균형을 유지하며 학습 진행.
– 공통된 방향의 경사만을 사용하여 학습 효율성을 증대.
ㅇ 적합한 경우:
– 작업 간 경사 방향이 상충되는 경우.
– 멀티태스크 학습에서 특정 작업의 성능 저하를 방지해야 하는 경우.
ㅇ 시험 함정:
– Gradient Surgery가 모든 멀티태스크 학습 문제를 해결할 수 있는 만능 방법으로 오해할 수 있음.
– 경사 조정이 과도할 경우 특정 작업의 성능 저하 가능.
ㅇ 시험 대비 “패턴 보기” 예시:
– Gradient Surgery는 멀티태스크 학습에서 작업 간 상충을 완벽히 제거한다. (X)
– Gradient Surgery는 작업 간 경사 방향을 조정하여 학습 균형을 맞춘다. (O)
ㅁ 추가 학습 내용
Gradient Surgery는 다중 작업 학습(Multi-Task Learning)에서 발생하는 경사 충돌(Gradient Conflict)을 해결하기 위한 기법입니다. 이 기술은 서로 다른 작업의 경사 벡터가 상충할 때, 이를 조정하여 학습 성능을 높이는 데 초점을 맞춥니다. 아래는 Gradient Surgery의 세부 알고리즘과 구현 방법, 그리고 유사한 기법들과의 비교 설명입니다.
1. Gradient Surgery의 세부 알고리즘
– **경사 충돌 탐지**: 두 작업의 경사 벡터(Gradient Vector)가 서로 충돌하는지 확인합니다. 충돌 여부는 두 벡터의 내적(inner product)이 음수인지 여부로 판단합니다. 내적이 음수라면 두 벡터가 상반된 방향으로 작용하고 있음을 의미합니다.
– **경사 조정**: 충돌이 감지되면, 경사 벡터를 조정하여 충돌을 완화합니다. 조정 방식은 주로 다음과 같은 절차를 따릅니다:
1. 한 작업의 경사 벡터를 기준으로, 다른 작업의 경사 벡터를 직교화(Orthogonal Projection)합니다.
2. 직교화된 경사 벡터를 사용하여, 두 작업의 경사 벡터가 충돌하지 않도록 수정된 경사를 생성합니다.
– **경사 벡터 합성**: 조정된 경사 벡터를 합성하여 최종적인 업데이트 방향을 결정합니다. 이 과정은 작업 간의 협력 효과를 극대화하는 데 목적이 있습니다.
2. 구현 방법
– 경사 벡터는 일반적으로 각 작업의 손실 함수에 대한 모델 매개변수의 미분으로 계산됩니다.
– 경사 충돌 탐지를 위해 벡터 내적 연산을 수행하며, 필요한 경우 직교화 연산을 사용합니다.
– 조정된 경사 벡터를 합성할 때는 작업의 중요도(예: 가중치)를 반영할 수 있습니다. 이를 통해 특정 작업의 우선 순위를 설정하거나, 작업 간 균형을 조정할 수 있습니다.
– 코드 구현은 PyTorch나 TensorFlow와 같은 딥러닝 프레임워크의 자동 미분 기능(Autograd)을 활용하여 효율적으로 수행할 수 있습니다.
3. Gradient Surgery와 유사한 기법 비교
– **GradNorm**:
– GradNorm은 작업 간의 손실 함수 기울기 크기를 조정하여 균형을 맞추는 방법입니다.
– 경사 크기의 불균형이 학습에 미치는 영향을 줄이는 데 초점을 맞추며, 작업 간의 중요도를 동적으로 조정합니다.
– Gradient Surgery와는 달리, GradNorm은 경사 방향보다는 크기에 더 중점을 둡니다.
– **PCGrad (Projected Conflicting Gradient)**:
– PCGrad는 Gradient Surgery와 유사하게 경사 충돌을 해결하기 위한 기법입니다.
– 경사 벡터가 충돌할 경우, 한 작업의 경사를 다른 작업의 경사에 대해 투영(projection)하여 충돌을 줄입니다.
– Gradient Surgery와의 주요 차이점은 PCGrad가 각 작업 쌍(pair)에 대해 독립적으로 투영 연산을 수행한다는 점입니다.
– **MGDA (Multiple Gradient Descent Algorithm)**:
– MGDA는 다중 작업의 손실을 동시에 최소화하는 공통 경사 방향을 찾는 방법입니다.
– 이 기법은 경사 벡터의 선형 결합을 사용하여 공통 방향을 계산하지만, 계산량이 많아 실용성이 떨어질 수 있습니다.
4. Gradient Surgery의 장점
– 경사 충돌을 직접적으로 해결하여 다중 작업 학습의 성능을 개선합니다.
– 구현이 비교적 간단하며, 기존의 최적화 과정에 쉽게 통합할 수 있습니다.
– 작업 간 상호작용을 제어할 수 있어 특정 작업의 중요도를 반영하기 용이합니다.
5. Gradient Surgery의 단점 및 한계
– 경사 벡터의 수정이 항상 최적의 결과를 보장하지는 않습니다.
– 작업 간의 복잡한 상호작용을 모두 반영하기 어렵습니다.
– 경사 조정 과정에서 추가 계산 비용이 발생할 수 있습니다.
Gradient Surgery와 유사한 기법들을 비교하여 학습하면, 다양한 경사 조정 방법의 장단점을 이해하고, 특정 문제에 적합한 방법을 선택하는 데 도움이 됩니다.