Yolo 비전 선전
선전
지금 참여하기
용어집

산술 연산

작업 기반 연산이 가중치 업데이트를 활용해 모델의 동작을 어떻게 조정하는지 알아보세요. Ultralytics 전체 재훈련 없이 작업을 병합하거나 특징을 제거하는 방법을 배워보세요.

작업 산술(Task arithmetic)은 사전 훈련된 신경망의 가중치 업데이트를 더하거나 뺌으로써 그 동작을 수정하는 고급 기계 학습 기법입니다. 실무자들은 모델을 처음부터 완전히 다시 훈련하는 대신, 기본 모델과 미세 조정된 모델 간의 학습된 차이점을 분리해 낼 수 있습니다. 이러한 차이점은 본질적으로 특정 기능이나 동작을 담고 있는 방향성 업데이트입니다. 개발자는 이러한 업데이트에 덧셈이나 뺄셈과 같은 기본적인 수학적 연산을 적용함으로써 딥러닝 시스템을 동적으로 수정할 수 있습니다. 이 패러다임은 최근 arXiv의 태스크 산술 관련 연구에서 큰 주목을 받으며, 대규모 모델을 새로운 요구 사항에 적응시키기 위한 가볍고 연산 효율적인 방법을 제시하고 있습니다.

개념의 작동 원리

이 기법의 핵심은 사전 훈련된 기본 모델과 특정 데이터셋을 통해 미세 조정을 거친 모델 간의 가중치 차이를 계산하는 데 있습니다. 이렇게 분리된 차이는 새로운 능력의 국소적 표현이 됩니다. 엔지니어들은 PyTorch 사전(state dictionaries)을직접 조작하거나 TensorFlow 기법을 활용함으로써, 이러한 가중치 차이를 확장하고 결합할 수 있습니다. 예를 들어, 특정 가중치 업데이트를 빼면 모델이 학습된 행동을 "잊게" 만들 수 있는데, 이는 모델 안전성에 관한Anthropic 깊이 탐구된 개념입니다.

실제 애플리케이션

작업 연산은 현대적인 컴퓨터 비전 및 자연어 처리 파이프라인에서 여러 가지 매우 효율적인 워크플로를 가능하게 합니다:

  • 다중 작업 기능 통합: 엔지니어는 Ultralytics 기본 모델을 두 개의 별도 데이터셋에 대해 독립적으로 훈련시킬 수 있습니다. 하나는 특화된 물체 탐지용이고, 다른 하나는 이미지 분류용입니다. 두 작업에 대한 가중치 차이를 계산하여 기본 모델에 다시 합치면, 결과적으로 생성된 네트워크는 치명적인 망각 현상 없이 두 작업을 동시에 수행할 수 있습니다.
  • AI 안전을 위한 표적화된 언러닝: 비전 모델이 훈련 데이터로부터 의도치 않게 편향된 특징을 학습한 경우, 연구자들은 편향된 데이터로 모델의 복제본을 미세 조정하고, 특정 가중치 차이를 추출하여 원본 모델에서 이를 차감할 수 있습니다. Google 여러 연구 결과에서 언급된 바와 같이, 이는 모델의 일반적인 인공지능 능력을 유지하면서 원치 않는 행동을 효과적으로 제거합니다.

관련 개념 차별화

IEEE Xplore 아카이브나 ACM 디지털 라이브러리를 검색하다 보면, 작업 산술과 관련 방법론을 혼동하기 쉽습니다:

  • 작업 벡터: 이는 산술 연산 과정에서 사용되는 실제 수학적 텐서(계산된 가중치 차이)입니다. 작업 산술은 이러한 벡터를 더하거나 뺄 수 있는 포괄적인 프레임워크입니다.
  • 모델 병합: 이는 여러 모델을 결합하는 것을 포괄적으로 지칭하는 용어입니다. 산술 연산은 모델을 병합하는 한 가지 방법이지만, 병합에는 복잡한 라우팅 네트워크나 앙상블 기법도 포함될 수 있습니다.
  • 전이 학습: 위키백과의 전이 학습 개념에 따르면, 이는 한 작업에서 얻은 지식을 다른 작업의 출발점으로 활용하는 것으로, 일반적으로 추가적인 훈련 반복이 필요합니다. 작업 산술은 추가적인 훈련 반복 없이 순전히 직접적인 가중치 계산을 통해 행동을 수정합니다.

산술 연산 구현

이러한 모델 최적화 전략을 실제 적용하려면 모델의 내부 상태를 신중하게 관리해야 합니다. 다음은 최근 컴퓨터 비전 논문에서 자주 다루어지는 기법인 PyTorch 사용하여 업데이트를 계산하고 적용하는 예시입니다.

import torch

# Load the state dictionaries of the pre-trained base and fine-tuned models
base_weights = torch.load("yolo26_base.pt")
tuned_weights = torch.load("yolo26_tuned.pt")

# Calculate the task vector and add it back to the base model with a scaling factor
scaling_factor = 0.5
for key in base_weights.keys():
    task_vector = tuned_weights[key] - base_weights[key]
    base_weights[key] += scaling_factor * task_vector

복잡한 데이터 주석 파이프라인과 여러 개의 미세 조정된 모델 버전을 관리하는 팀을 위해, Ultralytics 클라우드 훈련 및 원활한 배포를 감독할 수 있는 간소화된 환경을 제공하여, 반복적인 모델 개선 작업을 훨씬 더 효율적으로 관리할 수 있게 해줍니다.

함께 AI의 미래를 만들어 갑시다!

미래의 머신러닝 여정을 시작하세요