딥러닝 Feature, 어디서 추출해야 성능이 잘 나올까?

Bean·2025년 5월 26일
0

인공지능

목록 보기
42/123

딥러닝 모델을 설계하거나 여러 네트워크를 연동할 때, 자주 마주치는 고민이 하나 있습니다.
바로 "feature를 어디서, 어떻게 추출할 것인가?"입니다.

하나의 네트워크에서 추출한 feature를 다른 네트워크의 입력으로 사용하거나, 추출된 feature 자체를 분석하고 활용하려는 경우, 이 결정은 모델의 성능과 해석 가능성에 직접적인 영향을 줍니다.

이 글에서는 네트워크 feature 추출에 대한 일반적인 가이드라인을 소개합니다.


1. Feature는 어디서 추출할까?

네트워크에서 feature를 추출할 때 가장 먼저 고려해야 할 것은 "무엇을 위해 사용할 것인가?"입니다. 용도에 따라 적절한 추출 위치가 달라집니다. 대표적으로 아래 세 가지 방식이 있습니다:

1.1 중간 계층 출력 (Intermediate Features)

가장 일반적인 방식은 최종 출력 직전의 layer (보통 마지막 FC 레이어 전단계)에서 feature를 추출하는 것입니다.

  • 예: 이미지 분류 모델(CNN)에서 마지막 분류층 전의 출력 벡터
  • 특징: class-specific 정보는 줄어들고, 데이터의 일반적인 패턴이나 구조를 더 잘 표현합니다.

1.2 Global Feature Vector

데이터 전체를 요약한 하나의 벡터입니다. 주로 다양한 입력 요소(이미지, 시계열, 문장 등)의 전체 구조를 표현하는 데 사용됩니다.

  • 예: 여러 토큰을 처리한 후 Transformer에서 생성된 [CLS] token
  • 예: 이미지 전체에서 평균 풀링 또는 max-pooling한 벡터
  • 특징: downstream task에 사용하기 좋은 high-level 표현을 담고 있습니다.

1.3 모델 출력값 (Logits)

Softmax 이전의 raw한 예측 값을 그대로 feature로 사용하는 경우도 있습니다.
특히, 예측 정보와 함께 중간 표현이 혼합되어 있을 때 유용합니다.

  • 예: 다중 클래스 분류에서 softmax 이전의 logit 벡터
  • 장점: feature와 분류 신호를 동시에 포함
  • 단점: class에 과도하게 특화되어 있을 수 있어, 일반화된 표현에는 부적합할 수 있음

2. 실제 활용에서의 고려 사항

실제 프로젝트에서는 다음과 같은 판단 기준을 적용해볼 수 있습니다:

  • 후속 네트워크에서 일반적인 표현을 활용하고 싶다면?
    → 중간 계층 출력 또는 global feature 사용 권장

  • 후속 네트워크가 분류 결과를 보조 정보로 사용한다면?
    → logit을 feature로 사용하는 것도 고려할 수 있음

  • 특정 위치 정보, 맥락 정보 등을 함께 전달하고 싶다면?
    → 별도의 position embedding 또는 context vector를 추가하는 것이 좋음


3. 결론

Feature 추출은 단순한 기술적인 선택이 아닌, 전체 모델 아키텍처와 목적에 직결되는 설계 전략입니다.

  • 너무 상위 계층의 feature는 분류 정보에 편향될 수 있고,
  • 너무 하위 계층의 feature는 잡음이 많고 의미가 희석될 수 있습니다.

따라서 "어떤 정보를 담고 싶은가?", "어디에 활용할 것인가?"를 먼저 정의한 뒤, 그 목적에 맞는 feature를 선택하는 것이 핵심입니다.


profile
AI developer

0개의 댓글