딥러닝 모델을 설계하거나 여러 네트워크를 연동할 때, 자주 마주치는 고민이 하나 있습니다.
바로 "feature를 어디서, 어떻게 추출할 것인가?"입니다.
하나의 네트워크에서 추출한 feature를 다른 네트워크의 입력으로 사용하거나, 추출된 feature 자체를 분석하고 활용하려는 경우, 이 결정은 모델의 성능과 해석 가능성에 직접적인 영향을 줍니다.
이 글에서는 네트워크 feature 추출에 대한 일반적인 가이드라인을 소개합니다.
네트워크에서 feature를 추출할 때 가장 먼저 고려해야 할 것은 "무엇을 위해 사용할 것인가?"입니다. 용도에 따라 적절한 추출 위치가 달라집니다. 대표적으로 아래 세 가지 방식이 있습니다:
가장 일반적인 방식은 최종 출력 직전의 layer (보통 마지막 FC 레이어 전단계)에서 feature를 추출하는 것입니다.
데이터 전체를 요약한 하나의 벡터입니다. 주로 다양한 입력 요소(이미지, 시계열, 문장 등)의 전체 구조를 표현하는 데 사용됩니다.
Softmax 이전의 raw한 예측 값을 그대로 feature로 사용하는 경우도 있습니다.
특히, 예측 정보와 함께 중간 표현이 혼합되어 있을 때 유용합니다.
실제 프로젝트에서는 다음과 같은 판단 기준을 적용해볼 수 있습니다:
후속 네트워크에서 일반적인 표현을 활용하고 싶다면?
→ 중간 계층 출력 또는 global feature 사용 권장
후속 네트워크가 분류 결과를 보조 정보로 사용한다면?
→ logit을 feature로 사용하는 것도 고려할 수 있음
특정 위치 정보, 맥락 정보 등을 함께 전달하고 싶다면?
→ 별도의 position embedding 또는 context vector를 추가하는 것이 좋음
Feature 추출은 단순한 기술적인 선택이 아닌, 전체 모델 아키텍처와 목적에 직결되는 설계 전략입니다.
따라서 "어떤 정보를 담고 싶은가?", "어디에 활용할 것인가?"를 먼저 정의한 뒤, 그 목적에 맞는 feature를 선택하는 것이 핵심입니다.