no image
Semantic Segmentation
🔑 Semantic SegmentationSemantic segmentation이미지의 각 픽셀을 특정 카테고리로 분류하는 작업→ 이미지의 픽셀 단위에서 의미론적 의미를 이해하고 분류하는 데에 중점, 객체의 인스턴스는 구분하지 않음인스턴스 무시Semantic segmentation에서는 객체의 인스턴스(예: 특정 사람 또는 특정 자동차)가 아닌, 객체의 종류(즉, 카테고리)만을 고려함 → 같은 종류의 여러 객체가 구분되지 않음ex) 이미지에 두 명의 사람이 있을 때, 두 사람을 개별적으로 구분하는 것이 아니라, "사람"이라는 카테고리로 모든 픽셀을 분류Semantic segmentation architecturesFully Convolutional Networks (FCN)semantic segmen..
2025.01.14
ViT & GAN
🔑 CV 이론, ViT, GANViT visualizationSelf-attention layer visualizationVision Transformer(ViT)에서 Self-Attention Layer Visualization은 모델이 이미지 데이터를 처리할 때 어떤 부분에 주목하고 있는지를 시각화하는 방법ViT는 이미지를 패치(patch)로 나누어 입력으로 사용하고, 이를 통해 이미지의 전역적 특성을 학습하는데, Self-Attention 메커니즘은 이 과정에서 중요한 역할Self-Attention ViT에서는 이미지가 작은 패치들로 나누어지며, 각 패치는 입력 토큰으로 변환됨 Self-Attention 메커니즘은 이 패치들이 서로 어떤 관계를 가지고 있는지를 학습한다쿼리(Query), 키(K..
2025.01.14
no image
[Paper] Lightweight Deep Learning Models For Edge Devices—A Survey 리뷰
Lightweight Deep Learning Models For Edge Devices—A Survey페이퍼 리뷰Lightweight Deep Learning Models For Edge Devices—A Survey Keywords edge devices model compression 모델 압축deep learning 딥러닝pruning 프루닝quantization 양자화knowledge distillation 지식 증류 개요엣지 컴퓨팅 등 다양한 환경에서 딥러닝 모델을 사용할 수 있도록, 파라미터와 가중치를 줄인 경량 모델의 수요가 증가했다.대부분의 경량화, 모델 압축 기술이 성능 저하를 겪고 겪기 때문에, 이 Survey에서는 프루닝, 양자화, 지식 증류를 결합한 하이브리드 무손실 압축 모델을 ..
2025.01.14
no image
CNN (Convolution Neural Network)
🔑 CV 이론, CNNCNN (Convolution Neural Network)CNN은 컨볼루션을 이용한 인공 신경망 모델다차원 배열 데이터 처리에 특화된 모델로 데이터의 공간적 정보를 유지하면서 배열 데이터 정보를 다음 레이어로 보낼 수 있어 이미지 (3차원 배열) 분야에서 적극 활용 Convolutional layer필터는 이미지를 통과하여 한 번에 몇 Pixel(NxN)을 스캔하고 각 형상이 속하는 클래스를 예측하는 형상 맵을 만든다 Pooling layer (downsampling)가장 중요한 정보를 유지하는 동시에, 각 피쳐의 정보량을 줄임 (보통 여러 개의 회전이 있다?) Fully Connected layer 완전 연결 계층한 층(layer)의 모든 뉴런이 그 다음 층(layer)의 모든 ..
2025.01.13
데이터 전처리 : 시계열, 이미지, 텍스트
🔑 시계열 데이터, 이미지 데이터, 텍스트 데이터, 전처리시계열 데이터하나의 변수를 시간에 따라 여러 번 관측한 데이터가격, 매출, 온도, 성장 등 변화 예측과 반복되는 패턴에 대한 인사이트 도출을 목표로 함단순히 값 뿐만 아니라 변동성 등에 대한 다양한 예측시간 또는 회차 단위이며, 시간 t는 절대적인 순서가 중요한 데이터이므로 t는 고정하고 이외의변수들의 여러 요인에 대해 분석하는 것이 일반적시계열 데이터의 특징추세(trend) : 장기적인 증가 또는 감소계절성(seasonality) : 특정 요일/계절에 따라 영향주기(cycle) : 고정된 빈도가 아니지만 형태적으로 유사하게 나타나는 패턴노이즈(noise) : 측정 오류, 내부 변동성 등 다양한 요인으로 생기는 왜곡이미지 데이터이미지 데이터 전처..
2025.01.13
정형 데이터
🔑 범주형 데이터(순서형, 명목형), 수치형 데이터(이산형, 연속형), 피쳐 엔지니어링, 결측치, 이상치, 클러스터링, 차원 축소범주형 데이터 : 명확한 그룹 등으로 구분 - 순서형 / 명목형수치형 데이터 : 수로 나타남 - 이산형 / 연속형순서형인지 수치형인지가 고민된다면 산술연산의 의미를 두면 된다. (별점 4점은 별점 2점보다 2배 좋은건가?)경우에 따라 순서형도 수치형처럼 치환하여 계산해볼 수 있다. (평균 별점)범주형 데이터명목형 데이터순서가 상관없이 항목으로 구분되는 데이터데이터 분석에 있어서는 집단 간 분석에 용이 / 범주 별 관계 분석에도 용이 (추천 알고리즘)순서형 데이터에서는 오히려 적합할 수 있으나, 일반적으로 선형적인 연산이 들어가는 대부분 모델에서는 모델에 좋지 않은 영향명목형 ..
2025.01.13
데이터 분석 & 데이터 시각화
🔑 데이터 분석, 데이터 문해력, 데이터 선별, 데이터 시각화데이터 분석통계적 데이터 분석과거 통계적 데이터 분석 결과물의 핵심은 추론이다.전체 모집단이 존재하고, 현재 가지고 있는 데이터를 표본 집단으로 가정한다.현재의 표본 데이터로 모집단의 특징을 아는 것이 통계적 데이터 분석의 목적이다.데이터가 많아질수록 추론의 신뢰도가 높아진다.인공 신경망과 같은 최신 머신러닝 모델이 더 뛰어난 성능을 보이는 영역이 존재하나, 데이터의 수 및 학습 환경 등의 영향을 받기 때문에 해결하고자 하는 문제가 무엇이냐에 따라 통계 모델을 사용하기도 한다.데이터 문해력데이터를 건전한 목적과 윤리적인 방법으로 사용한다는 전제 하에, 현실 세상의 문제에 대한 끊임없는 탐구를 통해 질문하고 답하는 능력좋은 질문을 할 수 있는 ..
2025.01.10
Transformer
🔑 Transformer, RNN, seq2seqTransformerRNN(Recurrent Neural Network)RNN의 장점가변적인 길이의 Input Sequence를 처리할 수 있음.입력이 많아져도 모델의 크기는 증가하지 않음.(이론적으로) t 시점에서 수행된 계산은 여러 단계 이전의 정보를 사용할 수 있음.모든 단계에서 동일한 가중치가 적용됨.RNN의 단점Recurrent computation이 느림.Sequence output inference는 병렬화(parallelization)가 어려움.바닐라(=기본) RNN은 훈련 중 기울기 소실(vanishing gradient) 문제를 겪음.바닐라 RNN은 종종 시퀀스 내 장거리 의존성(long-rangedependence)를 모델링 하는데실패..
2025.01.10



Semantic segmentation

이미지의 각 픽셀을 특정 카테고리로 분류하는 작업

→ 이미지의 픽셀 단위에서 의미론적 의미를 이해하고 분류하는 데에 중점, 객체의 인스턴스는 구분하지 않음

인스턴스 무시

  • Semantic segmentation에서는 객체의 인스턴스(예: 특정 사람 또는 특정 자동차)가 아닌, 객체의 종류(즉, 카테고리)만을 고려함 → 같은 종류의 여러 객체가 구분되지 않음
    • ex) 이미지에 두 명의 사람이 있을 때, 두 사람을 개별적으로 구분하는 것이 아니라, "사람"이라는 카테고리로 모든 픽셀을 분류





Semantic segmentation architectures

Fully Convolutional Networks (FCN)

  • semantic segmentation 작업을 위한 첫 번째 end-to-end 네트워크 아키텍처
    • 이미지의 각 픽셀을 분류하여 세밀한 의미론적 정보를 제공
  1. End-to-End 아키텍처
    • FCN은 입력 이미지부터 최종 세그멘테이션 맵까지 모든 과정이 네트워크 내에서 직접적으로 연결된 구조를 가짐
    • 중간 단계에서 별도의 데이터 전처리나 후처리 없이, 입력 이미지가 네트워크를 통과하여 최종 출력이 생성됨
  2. 입력 이미지 크기
    • 변동 크기: FCN은 임의의 크기를 가진 이미지를 입력으로 받을 수 있음 → 이미지의 해상도가 다양한 상황에서도 유연하게 대응할 수 있음을 의미
  3. 출력 세그멘테이션 맵
    • 해상도 유지 : 네크워크는 입력 이미지의 크기에 맞춰 세그멘테이션 맵을 출력. 원본 이미지의 크기와 동일한 해상도의 출력 맵을 생성하여, 이미지의 각 픽셀에 대해 클래스를 할당

FCN의 작동 과정

  1. 이미지 입력: 임의의 크기의 이미지를 네트워크에 입력
  2. 특징 추출: 여러 개의 합성곱 레이어를 통해 이미지의 특징을 추출
  3. 업샘플링: 낮은 해상도의 특징 맵을 업샘플링하여 원본 이미지 크기와 동일한 크기로 변
  4. 세그멘테이션 맵 생성: 최종적으로 각 픽셀에 대해 카테고리를 할당하여 세그멘테이션 맵을 출력


Fully Connected vs Fully Convolutional

  1. 완전 연결층(Fully connected layer): 고정된 차원의 벡터를 출력하고, 공간 좌표를 버린다
    • 작동 방식: 완전 연결층에서는 입력 데이터의 모든 특징이 네트워크의 모든 뉴런과 연결됨. 결과적으로 각 뉴런은 입력 데이터의 모든 요소를 고려하여 출력을 생성한다
    • 출력 형태: 고정된 크기의 벡터(1차원 배열)임
      • ex) 이미지 분류 문제에서는 클래스 수에 맞춰 고정된 크기의 벡터가 출력
    • 공간 좌표: 이 층은 입력 이미지의 공간적 정보를 고려하지 않는다. 즉, 입력 이미지의 위치나 형태에 대한 정보를 잃어버리며, 공간 좌표를 모두 버린다
    • 용도: 주로 이미지 분류와 같은 문제에서 최종적으로 클래스 확률을 출력하는 데 사용된다
  2. 완전 합성곱층(Fully convolutional layer): 공간 좌표를 유지하면서 분류 맵을 출력
    • 작동 방식: 합성곱 층에서는 입력 데이터의 공간적 구조를 유지하면서 특징을 추출하고, 각 픽셀 위치에서 지역적인 정보만을 고려하여 연산을 수행함
    • 출력 형태: 공간 좌표를 가지는 분류 맵
      • 입력 이미지의 각 픽셀에 대해 클래스 레이블을 할당한 결과를 얻을 수 있습음
    • 공간 좌표: 완전 합성곱층은 입력 데이터의 공간적 정보를 보존하며, 공간 좌표를 유지한다. 이는 이미지의 세밀한 위치 정보를 고려할 수 있음을 의미함
    • 용도: 주로 semantic segmentation과 같은 작업에서 사용
      • 입력 이미지의 각 픽셀에 대해 클래스 레이블을 예측해야 하므로 공간적 정보를 유지하는 것이 중요

Fully Connected Layer (완전 연결층)

  • 작동 방식: 완전 연결층은 입력 데이터의 모든 뉴런이 다음 레이어의 모든 뉴런과 연결
    • flattening 단계에서 2D 이미지 데이터를 1D 벡터로 변환한 후, 완전 연결층은 이 벡터를 입력으로 받아 각 뉴런에 가중치와 편향을 적용하여 최종 출력을 생성
  • 출력: 단일 벡터로서, 각 뉴런이 이미지 전체를 요약하는 정보를 출력

1x1 Convolution Layer

  • 작동 방식: 1x1 합성곱층은 1x1 크기의 필터를 사용하여 각 위치의 특징 벡터를 새로운 벡터로 변환
    • 공간적인 구조(위치)를 유지하면서도 각 위치의 특징을 독립적으로 변환하는 방식
    • 입력 특징 맵의 각 위치에서 채널 간 결합을 수행. → 공간적 차원(H, W)은 변하지 않고, 채널 수만 변한다
  • 출력: 입력 특징 맵의 각 위치에서 동일한 크기의 특징 벡터를 출력

  • 입력 특징 맵이 H x W x N의 크기를 가지며, 여기서 HW는 각각 높이와 너비, N은 입력 채널 수
  • 1x1 합성곱의 각 필터는 1 x 1 x N 크기 → 이 필터는 1x1 크기로 공간적 정보를 다루지는 않지만, 각 위치에서 N개의 입력 채널에 대해 가중합을 수행
  • M개의 필터가 있다면, 각 필터는 입력 특징 맵의 각 위치(H x W)에서 N차원 벡터와 곱해지며, 이를 통해 새로운 출력 채널을 생성함
    • M개의 필터를 적용한 후, 결과로 얻어지는 출력 특징 맵은 H x W x M의 크기를 가지게 된다
    • 각 위치에서 N개의 입력 채널이 M개의 필터 각각에 의해 결합되므로, 출력 채널의 수는 M

1x1 합성곱층은 합성곱 특징 맵의 모든 특징 벡터를 분류

1x1 합성곱층만 많이 쌓는다고 하면?

  • 예측된 스코어 맵이 많이 저해상도가 된다는 한계가 있다?
    • 더 넓은 수용 영역(receptive field)을 가지기 위해, 여러 공간 풀링 레이어가 사용되기 때문?
    • 업샘플링으로 스코어맵의 해상도를 높여 해결 가능!

피쳐 맵 자체가 이미 해상도가 많이 낮아지고 피쳐 디멘션만 커진 구조

풀링 레이어나 스트라이드가 있는 컨볼루션을 거치면서 이미지의 중심 피쳐만 두고 해상도가 감소하게 되는데, 이 1 x 1 컨볼루션은 해상도에 영향을 주지 않아서 결과적으로 스코어 맵이 저해상도인 채로 나오게 된다?


업샘플링 Upsampling

작은 활성화 맵(activation map)을 원본 이미지 크기로 확장하는 과

  • 언풀링(Unpooling): 언풀링은 주로 풀링 층에서 사용된 인덱스 정보를 기반으로 원래 크기로 복원하는 방법
    • 최대 풀링(max pooling) 후에 언풀링을 사용하면, 최대 값이 있었던 위치에 다시 값을 복원.
    • 그러나 이는 비선형적인 방법이기 때문에, 고해상도의 세밀한 세부 사항을 복원하기에는 한계가 있을 수 있음
  • 전치 합성곱(Transposed Convolution): 전치 합성곱, 또는 업샘플링 합성곱(upsampling convolution)은 입력 데이터에 대한 합성곱 연산을 역으로 적용하는 방법
    • 이미지의 해상도를 증가시키며, 필터를 사용하여 고해상도 이미지를 생성
    • 전치 합성곱은 대개 많은 파라미터와 계산량을 필요로 하지만, 고해상도의 세밀한 정보를 생성하는 데 효과적
  • 업샘플링과 합성곱(Upsample and Convolution): 먼저 업샘플링을 통해 입력 데이터의 크기를 늘리고, 그 후에 합성곱을 적용하여 세부 사항을 보강하는 방식
    • 전치 합성곱보다 연산이 덜 복잡할 수 있으며, 보다 제어된 방식으로 해상도를 증가시킬 수 있음

FCN의 특징

  • FCN은 빠르다. 다른 작업으로 만든 구성 요소에 의존하지 않는 종단 간 (end-to-end) 아키텍처를 갖추고 있다는 점에서 빠름
    • FCN은 이미지 분할과 같은 작업을 수행할 때, 입력 이미지에 대해 전체적으로 합성곱 연산을 적용하여 직접 예측을 수행함.
    • 전통적인 방법에서 필요했던 여러 전처리 및 후처리 단계가 줄어들어 모델의 속도가 빠르다! 모든 연산이 네트워크 내부에서 이루어지기 때문에, 각 구성 요소가 독립적으로 조정되거나 설계되지 않아도 됨
  • FCN은 정확하다. 특징 표현(feature representation)과 분류기(classifier)가 함께 최적화된다는 점에서 정확도가 높음
    • FCN은 네트워크가 입력 이미지를 처리하고, 다양한 수준의 특징을 추출하며, 최종적으로 분류를 수행
    • 특징 표현과 분류가 동시에 학습되고 최적화되기 때문에, 이미지의 세부 사항을 잘 반영할 수 있어서 더 정확한 예측 가능
    • 전통적인 방법에서처럼 별도로 특징 추출과 분류기를 훈련시키는 것과 비교하여, 이 통합된 접근 방식이 더 높은 정확도를 제공함



U-Net

  • 진행 방식이 U 모양이라 U-Net
  • fully convolution networks 기반으로 구축되어 FCN의 특성을 공유함
  • 입력 이미지로부터 픽셀 단위의 출력 맵을 예측하는 데에 주력
    • 수축 경로(contracting path)에서 얻은 특징 맵들을 연결하여 밀집된 맵을 예측
    • FCN의 스킵 연결과 유사
  • 더 정밀한 분할 결과를 생성함
  • 수축 경로(contracting path)확장 경로(expanding path)로 구성된 대칭적인 아키텍처
    • 수축 경로에서는 이미지를 점점 더 작은 해상도의 특징 맵으로 압축하면서 중요한 정보(특징)를 추출하고, 확장 경로에서는 이 특징 맵들을 다시 큰 해상도로 확장하며 밀집된 예측 맵(dense map)을 생성
    • 수축 경로에서 생성된 특징 맵들을 확장 경로로 전달할 때, 중간중간의 특징 맵들을 직접 연결(concatenation)하는 방식이 사용 → FCN에서의 스킵 연결(skip connections)과 유사
      • 이를 통해 더 정밀한 이미지 분할 결과를 얻을 수 있고, U-Net은 특히 의료 영상 처리나 위성 이미지 처리와 같은 영역에서 성능이 좋다

  1. 수축 경로(contracting path)

    • 시작점에서 최저점까지 우하향
    • Conv Layers + Pooling: 먼저, 입력 이미지는 여러 개의 합성곱(Convolution) 층과 최대 풀링(Max Pooling) 층을 거쳐 점차적으로 해상도가 줄어들고, 특징이 추출
      • 이미지가 점점 작아지면서 더 많은 채널을 가지는 특징 맵들이 생성
    • 이 경로는 FCN의 다운샘플링(downsampling) 단계와 유사하며, U의 왼쪽 절반에 해당
  2. 최저점 (Bottleneck)

    • 수축 경로의 마지막 단계는 해상도가 가장 낮은 특징 맵을 생성하는 부분
      • 네트워크의 가장 깊은 레벨이며, U의 바닥에 해당
    • 여기서도 합성곱과 풀링이 적용
  3. 확장 경로(expanding path)

    • Upconv Layers: 확장 경로에서는 반대로 해상도가 다시 커지도록 업샘플링(Upsampling)을 수행
      • 업샘플링: 입력을 확장해서 더 높은 해상도의 출력으로 변환하는 과정으로, 풀링의 반대 역할
    • 이 경로는 U의 오른쪽 절반에 해당
  4. 스킵 연결 (Skip Connections)

    • 수축 경로에서 생성된 특징 맵들이 확장 경로의 대응되는 단계로 직접 연결(concatenate)된다
    • 스킵 연결은 정보를 잃지 않고 잘 보존할 수 있게 해어, 최종 출력에서 더 정확한 분할 결과를 얻을 수 있게 해줌
  5. 최종 출력 (Final Output)

    • 업샘플링된 특징 맵은 다시 합성곱 층을 통해 최종 분할 결과, 즉 각 픽셀이 어떤 클래스에 속하는지를 나타내는 밀집된 맵으로 변환



'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Object Detection & R-CNN  (0) 2025.01.15
ViT & GAN  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13



ViT visualization

Self-attention layer visualization

  • Vision Transformer(ViT)에서 Self-Attention Layer Visualization은 모델이 이미지 데이터를 처리할 때 어떤 부분에 주목하고 있는지를 시각화하는 방법

  • ViT는 이미지를 패치(patch)로 나누어 입력으로 사용하고, 이를 통해 이미지의 전역적 특성을 학습하는데, Self-Attention 메커니즘은 이 과정에서 중요한 역할

    Self-Attention

    ViT에서는 이미지가 작은 패치들로 나누어지며, 각 패치는 입력 토큰으로 변환됨

    Self-Attention 메커니즘은 이 패치들이 서로 어떤 관계를 가지고 있는지를 학습한다

    1. 쿼리(Query), 키(Key), 값(Value) 벡터 생성: 각 패치에 대해 쿼리, 키, 값 벡터가 생성. 이는 패치 간의 연관성을 계산하는 데 사용
    2. 유사도 계산: 각 쿼리 벡터와 모든 키 벡터 간의 유사도를 계산 → 이 유사도는 두 패치가 얼마나 관련 있는지를 나타내며, 주로 내적(dot product)을 통해 계산
    3. 가중치 계산 및 값 벡터 가중합: 유사도를 기반으로 가중치를 계산하고, 각 패치에 대한 최종 출력을 얻기 위해 이 가중치를 값 벡터에 곱한 후 가중합을 한다.
      1. 이 과정에서 모델은 중요한 패치에 더 높은 가중치를 할당

주로 어텐션 맵(attention map)을 시각화하는 방식

  1. 어텐션 맵 생성
  • Self-Attention 메커니즘을 통해 계산된 가중치 행렬이 어텐션 맵의 기초
    • 이 행렬은 각 패치가 다른 패치와 얼마나 관련 있는지를 나타내며, 이를 통해 이미지 내 패치 간의 상호작용을 이해할 수 있음
    • 예를 들어, 특정 패치에 대해 다른 모든 패치와의 관계를 시각화할 수 있음. 이 관계는 이미지의 다른 부분이 특정 패치와 얼마나 연관되어 있는지를 보여준다!
  1. 어텐션 맵 해석
  • 어텐션 맵을 시각화하면, 모델이 이미지의 어떤 부분에 집중하고 있는지 알 수 있음.
    • 예를 들어, 사람이 있는 이미지에서 모델이 사람의 얼굴이나 몸에 더 높은 어텐션 값을 할당하는 것을 볼 수 있음 → 모델이 사람을 인식하기 위해 이 부분에 더 집중하고 있음을 나타낸다!



입력 토큰 vs CLS 토큰

1. 입력 토큰

  • 정의: 입력 토큰은 ViT 모델에 입력으로 사용되는 이미지 패치들이 변환된 벡터
  • 생성 과정: 이미지를 작은 패치들(예: 16x16 픽셀)로 나눈 후, 각 패치는 선형 변환(즉, 임베딩) 과정을 통해 고정된 크기의 벡터로 변환 → 이 벡터들이 ViT의 입력 토큰이 된다
  • 역할: 입력 토큰들은 ViT에서 서로 간의 관계를 학습하는 Self-Attention 메커니즘에 의해 처리됨.이 토큰들 간의 상호작용을 통해 모델은 이미지의 전역적 특징을 학습

2. CLS 토큰

  • 정의: CLS 토큰(Classification Token)은 ViT의 입력에 추가되는 토큰
    • 모델이 이미지 전체의 표현(representation)을 학습하고, 이를 기반으로 최종 클래스 예측을 수행하기 위해 사용
  • 생성 과정: ViT의 입력에는 패치로 나눈 이미지들로부터 생성된 입력 토큰들과 함께, 맨 앞에 CLS 토큰이 추가된다
    • CLS 토큰은 일반적으로 학습 가능한 임베딩 벡터로 초기화
    • 이미지의 패치와 무관하게 모델이 분류 작업을 위해 학습하는 임베딩 벡터로, 처음엔 빈 벡터 같은 걸로 설정되었다가 학습 과정에서 모델에 의해 조정되는 형태
  • 역할:
    • 전역 정보 집약: Self-Attention 레이어를 거치면서, CLS 토큰은 이미지 전체의 전역 정보를 집약하게 된다. Self-Attention 메커니즘은 모든 토큰 간의 관계를 학습하며, 특히 CLS 토큰은 다른 모든 입력 토큰들과 상호작용하여 이미지 전체를 대표하는 벡터로 변환됨
    • 분류 작업: ViT의 마지막 레이어에서는 이 CLS 토큰을 사용하여 이미지의 최종 클래스를 예측. CLS 토큰은 이미지의 중요한 정보를 모두 포함하고 있으므로, 이를 통해 모델이 최종 예측을 수행할 수 있음

특징 CLS 토큰 입력 토큰
역할 이미지 전체를 대표하는 벡터로 사용 이미지 패치의 개별 표현을 담당
위치 입력 시 맨 앞에 추가됨 이미지 패치마다 하나씩 존재
주요 사용 목적 최종 클래스 예측을 위한 전역 표현 학습 Self-Attention을 통해 이미지 패턴 학습
학습 방식 학습 가능한 임베딩 벡터로 초기화됨 각 패치를 임베딩한 벡터로 구성

CLS 토큰은 ViT에서 이미지 전체의 정보를 집약하여 최종 분류를 수행

입력 토큰들은 이미지의 각 패치를 나타내는 반면, CLS 토큰은 이 모든 정보를 결합하여 최종적인 분류 결과를 얻기 위한 역할

두 토큰은 ViT의 Self-Attention 메커니즘 내에서 상호작용하며, 모델이 이미지의 중요한 특징을 효과적으로 학습하도록 돕는다

Self-Attention은 일반적으로 Multi-Head Attention으로 확장된다

Multi-Head Attention은 여러 개의 독립적인 Self-Attention 헤드를 사용하여 입력 데이터의 다양한 부분을 동시에 처리하고, 각 헤드는 서로 다른 표현 공간에서 Self-Attention을 수행하여 다양한 정보를 추출

  • 여러 개의 헤드는 이미지의 다양한 부분에 서로 다른 관심을 가질 수 있음
    • 하나의 헤드는 이미지의 배경에 집중하고, 다른 헤드는 객체에 집중…
  • 시각화에서 각 헤드가 다른 위치에 집중하는 모습을 색상으로 구분할 수 있음

→ Multi-Head Attention은 다양한 관점을 동시에 고려해서 다양한 부분에 집중해 서로 다른 의미적 지역을 학습할 수 있게 함





Conclusion

GAN(Generative Adversarial Network) dissection

GAN 모델이 학습하는 과정에서 생성되는 해석 가능한 표현(interpretable representation)을 분석하고 활용하는 방법

→ GAN이 학습하는 과정에서 어떻게 해석 가능한 정보를 발견하고 활용하는지!


1. 자발적으로 형성되는 해석 가능한 표현:

  • 학습 과정에서의 표현: GAN의 학습 과정에서, 생성기(generator)는 다양한 특성(예: 얼굴의 표정, 배경, 조명 등)을 조절하는 다양한 잠재 공간(latent space) 표현을 학습
    • 주로 고차원 잠재 공간에서 자발적으로 형성되며, 이는 모델이 다양한 데이터의 특성을 캡처할 수 있도록 한다
  • 해석 가능한 표현: 학습 과정 중에 생성기는 잠재 벡터(latent vector)의 특정 방향이 이미지의 특정 속성(예: 웃는 얼굴, 안경 착용 등)을 나타내는 것을 발견할 수 있음
    • 해석 가능한(interpretative) 표현으로, 생성된 이미지의 특정 특성을 조절하는 데 사용될 수 있음

2. 분석 및 조작 응용:

  • 분석적 활용: 해석 가능한 표현은 GAN의 내부 작동 방식을 이해하는 데 유용하다
    • ex) 어떤 잠재 벡터의 방향이 이미지에서 특정 객체의 크기나 색상 변화를 유도하는지를 분석 가능 → GAN의 동작을 분석하고, 모델이 학습한 표현이 실제로 무엇을 의미하는지를 보여줌
  • 조작적 활용: 이러한 해석 가능한 표현은 이미지 조작 및 생성 작업에서 유용하게 사용
    • ex) 얼굴 이미지를 생성하는 GAN에서 특정 방향의 잠재 벡터를 조정하면, 생성된 얼굴의 나이, 감정, 헤어스타일 등을 변경 가능 → 사용자는 생성된 이미지의 속성을 세밀하게 조정

사용 예시

  • 이미지 조작: StyleGAN과 같은 GAN 모델에서는 잠재 공간의 특정 방향이 얼굴의 표정, 나이, 헤어스타일 등을 조절하는 데 사용될 수 있음.
  • 데이터 분석: GAN을 통해 생성된 이미지를 분석하여, 잠재 벡터가 어떻게 이미지의 속성을 조절하는지를 알 수 있다. 다양한 잠재 벡터 값을 실험하여 어떤 값이 특정 특성(예: 행복한 표정, 특정 배경 색상 등)에 영향을 미치는지를 확인



'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Object Detection & R-CNN  (0) 2025.01.15
Semantic Segmentation  (0) 2025.01.14
CNN (Convolution Neural Network)  (0) 2025.01.13

Lightweight Deep Learning Models For Edge Devices—A Survey

페이퍼 리뷰

Lightweight Deep Learning Models For Edge Devices—A Survey

 

Keywords

edge devices

model compression 모델 압축

deep learning 딥러닝

pruning 프루닝

quantization 양자화

knowledge distillation 지식 증류

 


개요

엣지 컴퓨팅 등 다양한 환경에서 딥러닝 모델을 사용할 수 있도록, 파라미터와 가중치를 줄인 경량 모델의 수요가 증가했다.

대부분의 경량화, 모델 압축 기술이 성능 저하를 겪고 겪기 때문에, 이 Survey에서는 프루닝, 양자화, 지식 증류를 결합한 하이브리드 무손실 압축 모델을 제안했다. 제안된 모델은 일반적인 CNN 모델보다 세 배 작으며 압축 후 97%의 최첨단 정확도를 달성하는 성과를 보여줬다.

 


 

모델 경량화 기술

 

 


 

Prunning 프루닝

Prunning = 가지치기

  • 딥러닝 모델에서 중요하지 않은 연결 또는 불필요한 파라미터를 제거하여 모델 크기와 계산 비용을 줄이는 기술
    • 네트워크 프루닝(Network Prunning)은 중복된 매개변수를 줄이기 위해 사용하는 주요 기법으로, 불필요한 연결을 제거하여 매개변수의 수를 줄이고 계산 비용을 줄이는 방식으로 작동한다.
  • 목표 : 모델의 정확도에 영향을 최소화 하면서 메모리 사용량과 연산 복잡도를 줄이는 것
  • 원리 : 모델 성능에 기여도가 낮은 가중치와 뉴런, 중복 매겨변수 등은 제거해도 성능 저하가 거의 없다는 점을 활용함
  • 참고할 만한 자료
 

DropNet: Reducing Neural Network Complexity via Iterative Pruning

Modern deep neural networks require a significant amount of computing time and power to train and deploy, which limits their usage on edge devices. Inspired by the iterative weight pruning in the L...

proceedings.mlr.press

 

Structured Prunning 구조적 프루닝

  • 채널, 필터, 뉴런과 같은 전체 구조적 구성 요소를 식별하고 제거해서 딥러닝 모델의 크기를 줄이는 것을 목표로 함
  • 모델의 구조를 유지하여 하드웨어 가속기에서 효율적인 배포가 가능함
    • 개별 매개변수를 제거하는 Unstructured Prunning과 달리 모델의 원래 구조를 보존하여 효율적으로 구현할 수 있다.
    • 하드웨어 가속기가 프루닝으로 유도된 희소성 패턴을 활용해 메모리 접근 및 계산 효율성을 최적화하기 때문에, 리소스가 제한된 상황에서의 호환성이 좋다.
  • 적용 사례
    • AlexNet 모델 : 9배 압축 후에도 정확도를 유지함
  • 양자화(Quantization)나 지식 증류(Knowledge Distillation)와 함께 사용 가능

 

Unstructured Prunning 비구조적 프루닝

  • 중요도가 낮은 개별 가중치나 뉴런을 제거
  • 장점
    • 구현이 상대적으로 간단하고 유연함
  • 단점
    • 모델의 밀도가 낮아져서 하드웨어 최적화가 어려움
    • 정리된 구조가 없어 메모리 접근 및 계산 비효율 가능성

 

프루닝의 작동 원리

프루닝은 불필요한 가중치를 "0"으로 설정하거나 제거하여 전체 모델의 복잡성을 줄인다

 

프루닝 성과

방법 프루닝 유형 성과
기하학적 평균 기반 프루닝 구조적 성능 저하 없음
프루닝 계층 재구성 구조적 5.13배 속도 증가, 정확도 0.65% 감소
경량 Bi-LSTM 구조적 36% 파라미터 감소, 정확도 3% 증가
블록 제거 전략 비구조적 5.95배 압축, 90.5% 정확도
가중치 프루닝 전략 구조적 MnasNet 12MB 모델, 83.5% Top-1 정확도
저분산 특징 프루닝 비구조적 악성코드 탐지 모델 성능 향상
선택적 구조 제거 구조적 압축 후에도 만족스러운 성능 유지

 

 


 

Knowledge Distillation(KD) 지식 증류

  • 지식 증류(Knowledge Distillation)는 복잡한 모델(교사 모델, Teacher Model)의 지식을 경량화된 모델(학생 모델, Student Model)로 전이시키는 기술
  • 경량화된 모델이 교사 모델의 동작과 출력을 모방하도록 학습시킴으로써, 성능 저하 없이 모델 크기를 줄이고 효율을 높이는 기술!!
  • 대부분의 딥러닝 모델, 특히 최신 대규모 모델은 높은 정확도를 자랑하지만, 계산량이 많고 메모리를 많이 차지하는데, 이를 엣지 디바이스에서 사용하려면 모델 크기와 연산량을 줄여야 하지만, 단순히 크기만 줄이면 성능 저하가 불가피함…
    • 지식 증류는 이러한 문제를 해결하기 위해 설계된 방법으로, 교사 모델의 "지식"을 최대한 활용해 경량 모델에서도 유사한 수준의 성능을 달성할 수 있도록 도움
  • 참고할 만한 자료
    • Hinton et al., "Distilling the Knowledge in a Neural Network" 논문: 링크

 

지식 증류의 작동 원리

KD는 교사 모델의 출력값과 행동을 학생 모델이 모방하도록 설계하며, 일반적으로 교사 모델은 복잡한 학습 과정을 통해 데이터를 잘 이해하고 높은 정확도로 예측한다. 이때 교사 모델이 생성하는 정보는 크게 세 가지 형태로 학생 모델에 전달된다.

  1. 교사 모델의 소프트 라벨 (Soft Labels)
    • 교사 모델이 예측한 각 클래스의 확률 분포
    • (예시) 고양이 사진을 분류한다고 할 때 교사 모델의 출력은 [고양이: 0.7, 개: 0.2, 새: 0.1]와 같은 형태일 수 있다. 학생 모델은 이 확률 분포를 학습하며, 단순히 정답 여부만 학습하는 것보다 데이터의 미묘한 패턴을 더 잘 이해할 수 있다.
  2. 교사 모델의 중간 특징 표현 (Feature Representations)
    • 교사 모델이 데이터의 중간 계층에서 추출한 특징 맵(feature maps)을 학생 모델이 학습한다. 이는 데이터가 교사 모델 내부에서 어떻게 처리되고 표현되는지를 학생 모델이 모방하도록 유도한ㄷㅏ
    • (예시) 이미지 분류 모델에서 교사 모델의 중간 계층이 이미지의 엣지(모서리)나 질감 같은 특징을 추출하면, 학생 모델도 이러한 정보를 학습하게 된다
  3. 클래스 간 관계 정보 (Relationships Between Classes)
    • 교사 모델이 데이터 클래스 간의 관계나 상호작용을 이해하는 방식을 학생 모델이 학습
      • 데이터 간의 복잡한 상관관계를 포착하여, 학생 모델이 더 깊이 있는 이해를 할 수 있게 함
    • (예시) 고양이와 개가 서로 비슷한 특성을 공유한다는 관계 정보를 학생 모델이 학습한다면, 새로운 데이터에서도 더 정확한 분류가 가능해짐

 

Response-Based Knowledge Distillation

  • 개념: 교사 모델의 최종 출력값(Soft Probability Distribution), 즉 소프트 라벨을 학생 모델이 학습
    • 소프트 라벨은 각 클래스에 대한 확률 분포를 나타냄
  • 특징
    • 각 클래스의 확률 분포를 학습하여 교사 모델의 분류 패턴을 모방
    • 구현이 간단하고 다양한 작업에 효과적
  • 예시: 이미지 분류에서, 교사 모델이 제공하는 출력 확률(예: 고양이: 0.7, 개: 0.2)을 학습 → 일반화 능력 향상

 

Feature-Based Knowledge Distillation

  • 개념: 교사 모델의 중간 계층 출력(Feature Maps)을 학생 모델이 학습
  • 특징
    • 고차원 특징 표현을 학습하며 데이터의 세부적인 패턴을 이해하는 데에 유리함!
    • 학생 모델이 교사 모델의 학습 과정과 유사한 표현을 생성하도록 함
  • 장점: 학생 모델이 얕고 폭이 좁은 구조에서도 성능 유지가 가능
  • 예시: 얼굴 인식에서, 교사 모델이 얼굴의 주요 포인트를 추출하면 학생 모델이 이를 학습

 

Relation-Based Knowledge Distillation

  • 개념: 교사 모델이 데이터 클래스 간의 복잡한 관계 및 상관성(Relationships and Correlations)을 학생 모델에 전이한다
  • 특징
    • 데이터 클래스 간 복잡한 관계와 상호작용를 포착하여 모델 성능 향상
    • 소프트 라벨이나 특징 표현에서 얻을 수 없는, 정답을 넘어선 추가 정보, 데이터의 깊은 구조를 학습할 수 있음
  • 예시: 두 클래스 간의 거리나 유사성을 학습
    • 고양이와 개의 관계를 학습해, 이전에 본 적 없는 새로운 동물 사진에서도 유사성을 파악

 

KD의 주요 장점

  • 유연성(하드웨어 독립성) : 경량 모델은 다양한 하드웨어 가속기에서 실행 가능
  • 효율성: 효율적인 추론 → 모델 크기와 계산향를 줄이면서도 성능 유지
  • 확장성: 자연어 처리(NLP), 컴퓨터 비전 등 여러 도메인에서 사용 가능

 

KD 기반 경량 모델의 성과

저자 Response Feature Relation 성과

저자 Response Feature Relation 성과
Musa et al. - - 정확도 개선
Chen et al. Inception 및 MobileNet에서 정확도 각각 72.25%, 64.14% 달성
Kang et al. 다른 KD 모델보다 우수한 성능 달성
Mishra et al. - - 엣지 디바이스에서 추론 시간 개선
Park et al. - 학생 모델의 성능을 유의미하게 개선
Yang et al. - - IoT 및 임베디드 디바이스에 적합

 

 

KD의 도전 과제

  1. 하이퍼파라미터 설정
    • 온도(Temperature), 손실 가중치 등 KD 과정에서 중요한 변수 최적화 필요
  2. 정확도-압축 균형
    • 모델 크기를 줄이는 과정에서 정확도 손실 방지 필요

 

논문의 핵심 KD 실험 결과

  1. 교사 모델 성능 vs 학생 모델 성능 비교
    • 학생 모델은 교사 모델에 비해 약간의 정확도 손실이 있지만, 모델 크기 및 속도에서 뛰어난 결과를 보임
    • MobileNet에서 KD를 적용한 결과, 64.14%의 높은 정확도를 유지
  2. KD 적용으로 추론 시간 단축
    • 학생 모델은 15MB 미만의 크기로 압축되었으며, 경량 하드웨어에서 실시간 처리 가능

 


 

Quantization 양자화

  • 딥러닝 모델의 가중치(weights)와 활성값(activations)을 낮은 정밀도 데이터 형식으로 변환함으로써, 모델의 크기를 줄이고 계산 효율성을 높이는 기술
  • 딥러닝 모델은 일반적으로 32비트 부동소수점(32-bit floating point) 형식으로 데이터를 처리하지만, 양자화를 통해 16비트 또는 8비트와 같은 낮은 정밀도의 형식으로 데이터를 표현하면, 메모리 사용량과 연산량을 획기적으로 줄일 수 있다!
  • 양자화는 특히 엣지 디바이스, 스마트폰, IoT 장치처럼 자원이 제한된 환경에서의 딥러닝 모델 실행을 가능하게 하기 위해 설계되었다. 이런 장치들은 처리 능력, 메모리, 배터리 용량이 제한적이기 때문에, 효율성을 극대화한 모델 설계가 필요하다.
    • 양자화는 이런 문제를 해결하며, 모델 크기 감소와 함께 추론 속도 향상을 꾀할 수 있다!

 

양자화의 원리

양자화는 모델이 사용하는 데이터 표현 방식을 변경하여 정밀도를 낮추는 방식으로 동작한다

  1. 데이터 정밀도 축소
    • 딥러닝 모델의 가중치와 활성값을 높은 정밀도의 부동소수점에서 낮은 정밀도의 정수 데이터로 변환한다.
    • (예시) 32비트 부동소수점 데이터를 8비트 정수로 표현하면, 메모리 사용량이 약 4배 줄어든다
  2. 값 범위 조정
    • 데이터의 값을 특정 범위로 압축한 뒤, 이 범위를 표현할 수 있는 낮은 비트의 정수로 변환한다
    • 변환 과정에서 발생할 수 있는 손실을 최소화하기 위해 값을 정규화하거나, 비선형적인 변환을 적용하기도 한다.
  3. 계산량 감소
    • 낮은 정밀도로 표현된 데이터는 더 적은 계산 리소스를 요구하므로, 연산 속도가 개선된다
    • 하드웨어 가속기(CPU, GPU, TPU 등)에서는 양자화된 모델이 병렬 연산을 통해 더욱 빠르게 작동할 수 있다

 

양자화의 주요 방식

양자화는 모델 학습 시점과 적용 방식에 따라 양자화 인지 훈련(QAT, Quantization-Aware Training)훈련 후 양자화(PTQ, Post-Training Quantization)로 나눈다

양자화 인지 훈련 (Quantization-Aware Training, QAT)

QAT는 모델 학습 단계에서 양자화를 시뮬레이션하며, 모델이 저정밀 데이터의 특성에 적응하도록 학습

  • 작동 방식
    1. 학습 중, 모델의 가중치와 활성값이 양자화된 상태를 시뮬레이션한다
    2. 손실 함수 계산 시, 양자화로 인한 정확도 손실을 고려한다
    3. 모델은 양자화 환경에서 발생할 수 있는 손실을 학습 과정에서 스스로 보정한다
  • 장점
    • 양자화 후에도 정확도 손실을 최소화할 수 있다
    • 모델이 낮은 정밀도에서도 높은 성능을 유지하도록 최적화
  • 단점
    • 학습 시간이 더 길어지며, 추가적인 계산 리소스를 요구한다
    • 기존 학습 모델을 사용할 수 없고, 양자화 환경에서 새로 학습해야 함

 

훈련 후 양자화 (Post-Training Quantization, PTQ)

PTQ는 이미 학습된 모델에 양자화를 적용하는 방식으로, 추가적인 학습 과정 없이 양자화를 수행할 수 있우ㅁ

  • 작동 방식
    1. 학습이 완료된 32비트 부동소수점 모델을 가져온다
    2. 모델의 가중치와 활성값을 8비트 정수로 변환함
    3. 필요한 경우, 양자화로 인해 발생한 정확도 손실을 복구하기 위해 약간의 미세 조정(fine-tuning)을 진행한다
  • 장점
    • 구현이 간단하며, 기존 학습 모델에 쉽게 적용 가능
    • 추가 학습 없이도 양자화를 수행할 수 있어 효율적
  • 단점
    • 양자화 후 정확도 손실이 QAT에 비해 클 수 있음
    • 복잡한 모델에서는 정확도 손실이 두드러질 수 있음

 

양자화의 장점

  1. 메모리 사용량 감소
    • 32비트 부동소수점 대신 8비트 정수를 사용하면 메모리 요구량이 최대 4배 줄어든다
    • 이는 엣지 디바이스와 같은 메모리 제한 환경에서 큰 장점이 됨
  2. 추론 속도 개선
    • 낮은 정밀도 데이터는 연산량이 줄어들기 때문에 모델의 추론 속도가 크게 빨라짐
    • 특히, 하드웨어 가속기에서 양자화된 모델은 병렬 처리 효율이 극대화
  3. 에너지 효율성 증가
    • 계산량 감소는 에너지 소비를 줄이며, 배터리로 작동하는 장치에서 배터리 수명을 연장

 

양자화의 도전 과제

  1. 정확도 손실
    • 양자화는 데이터 표현 정밀도를 낮추기 때문에 정보 손실이 발생할 가능성이 있음
      • 특히 복잡한 모델에서는 이 손실이 눈에 띄게 나타날 수 있다
  2. 모델 최적화 필요
    • 양자화는 모든 모델에서 동일한 효과를 보장하지는 않기 때문에, 모델 구조와 데이터 특성에 따라 성능이 달라지므로, 모델을 양자화에 맞게 최적화해야 함
  3. 복잡성 증가 (QAT)
    • QAT를 사용하는 경우, 추가적인 학습 과정이 필요함 → 학습 시간이 증가하고 리소스 요구량이 늘어날 수 있음

 

논문에서의 양자화 실험 결과

논문에서는 양자화를 적용한 다양한 실험이 수행되었으며, 양자화된 모델이 효율성을 유지하면서도 성능을 크게 저하시키지 않음을 보여줌

  • QAT를 사용한 경우, 정확도 손실은 평균 0.1% 이하로 유지되었음
  • PTQ는 모델 크기를 5배 이상 줄이면서도 원래 모델과 거의 동일한 성능을 보여줌
  • QAT와 PTQ를 결합한 혼합 방법은 모델 크기를 최대 16배까지 줄이면서도 성능 손실을 최소화

 


Research Trends

데이터베이스 기반 연구 현황

  1. Science Direct
    • 가장 많은 논문(200편 이상)이 출판된 데이터베이스로, 경량 모델 관련 연구의 주요 플랫폼
    • 연구 주제는 모델 구조 설계, 최적화 기술, 엣지 디바이스 적용 방법론 등 다양함
    • 최근 몇 년간 논문 수가 급격히 증가하면서 연구의 주요 축을 형성.
  2. Springer Link
    • Science Direct와 함께 많은 양의 연구 논문을 제공하며, 100~200편의 논문이 수록
    • 모델 압축 기술(예: 프루닝, 양자화)과 실용적 응용 사례에 대한 논문이 다수 포함
  3. IEEE Xplore
    • 하드웨어 중심의 경량 모델 연구와 관련된 논문이 다수 포함되어 있음
    • 엣지 디바이스의 계산 효율성 증대를 위한 하드웨어-소프트웨어 공동 설계와 관련된 논문들이 많음
  4. ACM Digital Library
    • 다른 데이터베이스에 비해 상대적으로 적은 수의 논문(100편 미만)을 제공하지만, 연구 주제의 다양성에서 중요한 기여를 함
    • 모델 경량화의 알고리즘적 접근과 새로운 최적화 기법을 다루는 논문이 다수 존재
  5. arXiv Preprints
    • 가장 빠르게 성장하는 플랫폼 중 하나로, 최근 몇 년간 논문 수가 급격히 증가
    • 최신 기술 동향과 실험적 접근이 공유되는 공간으로, 초기 아이디어와 이론적 연구가 활발히 진행

출판 추세 분석

  • 2010년부터 2024년까지 모든 데이터베이스에서 경량 모델에 대한 연구가 꾸준히 증가
  • Science Direct와 Springer는 전체적으로 가장 많은 논문을 보유하며, 특히 2020년 이후 급격한 증가세를 보임
  • arXiv는 최근 몇 년간 가장 빠르게 성장하는 플랫폼으로, 연구자들이 최신 연구 결과를 공유하는 데 널리 사용됨

 


Proposed Hybrid Model Methodology

Dataset

실험 데이터셋

  1. 포트홀 탐지 데이터셋
    • 도로의 포트홀(구멍)과 양호한 도로 상태를 분류
    • 클래스: "포트홀" (1,245개 이미지), "양호한 도로" (2,943개 이미지)
    • 데이터를 두 개의 디렉토리로 나누어 관리
  2. 벼 성숙도 탐지 데이터셋
    • 벼의 성숙도를 평가
    • 클래스: "성숙" (1,450개 이미지), "미성숙" (1,285개 이미지)
  3. 콩밭 잡초 탐지 데이터셋
    • 농작물에서 잡초를 탐지
    • 클래스: "콩", "옥수수", "잡초"로 구성 (3,200개 이미지)

데이터셋 특징

  • 실제 환경에서 수집된 데이터를 기반으로 하며, 다양한 클래스와 불균형 데이터 분포를 포함
  • 데이터셋의 불균형 문제를 해결하기 위해 데이터 증강(Data Augmentation) 기법을 활용

Data Pre-Processing (데이터 전처리)

전처리 절차

  1. 크기 조정 및 형식 변환
    • 데이터셋은 모델 입력 형식에 맞게 크기를 조정하고, 다양한 형식의 이미지를 통합
  2. 데이터 불균형 해결
    • 한 클래스에 데이터가 집중된 불균형 상태를 완화하기 위해 회전, 크기 조정, 반전 등의 증강 기법을 사용
      • 데이터 증강은 소수 클래스의 데이터 양을 늘리고, 학습 데이터의 다양성을 증가시킴
  3. 데이터 정규화
    • 각 픽셀 값을 정규화하여 학습 속도를 높이고 수렴성을 개선

Model Definition and Training (모델 정의 및 학습)

초기 모델 구성

  • 처음에는 다수의 **합성곱 계층(Convolutional Layers)**과 수백만 개의 파라미터를 포함하는 대규모 CNN 모델을 정의했다
  • 이 모델은 높은 성능을 달성했지만, 크기(603MB)와 연산량이 많아 엣지 디바이스에 적합하지 않았음

모델 압축 전략

초기 대규모 모델을 경량화하기 위해 세 가지 주요 기술을 결합

  1. 지식 증류(Knowledge Distillation)
    • 초기 대규모 CNN 모델을 **교사 모델(Teacher Model)**로 설정하고, 경량화된 **학생 모델(Student Model)**에 지식을 전이
    • 교사 모델은 데이터의 클래스 간 복잡한 관계를 표현하는 소프트 라벨과 특징 맵을 제공
    • 학생 모델은 소프트 라벨과 특징 맵을 학습하여 경량화된 구조에서도 높은 성능을 유지
  2. 프루닝(Pruning)
    • 모델의 비효율적인 가중치를 제거
    • 설정된 프루닝 비율(0.5)에 따라, 중요도가 낮은 가중치를 "0"으로 설정하여 모델 크기를 절반으로 줄임
    • 이 과정에서 모델의 크기가 줄어들며 성능 저하가 발생할 수 있기 때문에 재학습(Retraining) 단계에서 성능 저하를 보완
  3. 양자화(Quantization)
    • 프루닝이 적용된 모델을 32비트 부동소수점에서 8비트 정수로 변환
    • 정밀도를 낮추면서도 정확도를 유지하기 위해, 양자화 후 추가로 **2번의 미세 조정 학습(fine-tuning)**을 수행

 

하이브리드 모델 학습 절차

  1. 초기 모델 학습 : 대규모 CNN 모델을 학습하여 교사 모델로 사용
  2. 지식 증류 : 교사 모델의 출력값과 중간 계층 표현을 기반으로 학생 모델 학습
  3. 프루닝 적용 : 모델 가중치의 50%를 제거
  4. 양자화 및 미세 조정 : 모델을 양자화하고, 2번의 추가 학습으로 정확도를 복구

Performance Evaluation (성능 평가)

평가 지표

  1. 정확도 (Accuracy)
    • 학습된 모델이 테스트 데이터에서 올바르게 예측한 비율
  2. 모델 크기 (Model Size)
    • 압축 전후 모델의 메모리 사용량
  3. 파라미터 수 (Number of Parameters)
    • 모델에서 사용된 가중치의 총 개수
  4. 훈련 시간 (Training Time)
    • 각 모델이 학습을 완료하는 데 소요된 시간

 

실험 결과

제안된 하이브리드 모델은 기존 압축 기술(프루닝, 양자화, 지식 증류 단독)과 비교하여 가장 우수한 성능을 보여줌!

모델 정확도 파라미터 수 모델 크기 훈련 시간

모델 정확도 파라미터 수 모델 크기 훈련 시간
대규모 CNN 97.43% 52,768,432 603MB 17분
KD 모델 98.28% 126,569 15.3MB 3분
프루닝 모델 90.23% 52,711,489 195MB 7분
양자화 모델 92.41% 2,936,589 35MB 20분
하이브리드 모델 97.74% 142,345 3.3MB 3분

 

Algorithm 1: Proposed Hybrid Model
Data: Large model
Result: Lightweight model

initialized: pruning ratio ← β
obtained weights and parameters of large model γ, α;
compute threshold ϵ ← (β * sum (γ));
compute pruned weight (β, γ, ϵ);

while training do
    For all γ:
        if β ≤ ϵ then
            γ ← 0
        else if β > ϵ then
            γ == γ
    Update parameter α ← γ
    return pruned model

while weights are pruned = true do
    convert model precision from fp32 to int8
    re-train pruned model with quantized parameters
    return pruned and quantized model

 


Result and Discussion

Accuracy (정확도)

제안된 하이브리드 모델의 정확도는 기존의 모델 압축 기법(프루닝, 양자화, 지식 증류)을 개별적으로 적용한 모델과 비교하여 분석하였다.

실험 결과, 제안된 모델은 97.74%의 정확도를 기록하며 초기 대규모 CNN 모델(97.43%)과 거의 동일한 수준의 성능을 유지했다.

프루닝과 양자화를 단독으로 적용했을 때의 정확도 감소를 지식 증류를 통해 효과적으로 보완했기 때문인데…

모델 정확도(%) 비교 분석
대규모 CNN 97.43 초기 모델, 정확도는 높지만 모델 크기가 매우 큼
프루닝 모델 90.23 중요도가 낮은 가중치를 제거한 결과, 정확도가 감소
양자화 모델 92.41 정밀도 축소로 인한 정보 손실로 정확도가 약간 감소
지식 증류 모델 98.28 교사 모델의 지식을 효과적으로 전이하여 정확도가 가장 높음
하이브리드 모델 97.74 프루닝, 양자화, 지식 증류의 결합으로 정확도를 유지하며 효율성 개선

 

  • 프루닝 : 프루닝 모델은 정확도가 90.23%로 감소했다. 중요도가 낮은 가중치를 제거하면서도 학습 데이터를 제대로 복구하지 못한 탓임.
  • 양자화 : 양자화 모델은 정확도가 92.41%로, 정밀도 축소로 인한 데이터 손실이 원인으로 보임
  • 지식 증류 : 교사 모델의 지식을 학생 모델로 전이한 지식 증류 모델은 정확도가 98.28%로 가장 높았다
  • 하이브리드 모델 : 프루닝과 양자화로 인한 정확도 손실을 지식 증류를 통해 보완하며, 초기 대규모 모델과 거의 동일한 수준의 정확도를 유지했다

 

Model Size Reduction (모델 크기 감소)

하이브리드 모델은 모델 크기를 획기적으로 줄이며, 초기 CNN 모델의 603MB에서 3.3MB로 압축하는 데 성공했다.

이로써 약 182배의 크기 감소를 이루었으며, 이는 엣지 디바이스와 같은 제한된 환경에서 딥러닝 모델의 실용성을 크게 향상시킬 수 있음!

모델 모델 크기(MB) 비교 분석
대규모 CNN 603 초기 모델, 크기가 매우 커 엣지 디바이스에 비효율적
프루닝 모델 195 비효율적인 가중치를 제거하여 크기 감소, 하지만 최적화 수준은 낮음
양자화 모델 35 정밀도 축소로 크기를 대폭 감소, 다만 단독으로는 충분하지 않음
지식 증류 모델 15.3 교사 모델 대비 작은 크기지만 하드웨어 제약 환경에서는 여전히 비효율적
하이브리드 모델 3.3 프루닝, 양자화, 지식 증류를 결합하여 가장 작은 크기로 압축

 

  1. 프루닝 : 모델 크기가 195MB로 감소했으나, 대규모 모델에 비해 여전히 크며, 양자화와 결합하지 않으면 효과가 제한적
  2. 양자화 : 양자화는 모델 크기를 35MB까지 줄였지만, 지식 증류를 결합하지 않을 경우 정확도 손실이 심각할 수 있다
  3. 지식 증류 : 지식 증류로 모델 크기가 15.3MB로 줄었으나, 엣지 디바이스 환경에서의 최적화에는 부족
  4. 하이브리드 모델 : 프루닝과 양자화를 적용한 후 지식 증류로 성능을 보완한 결과, 3.3MB로 가장 작은 크기를 달성하며 실시간 추론 가능성을 확보했음

Discussion

제안된 하이브리드 모델의 성과

  • 모델 크기를 603MB에서 3.3MB로 줄이면서도 정확도를 **97.74%**로 유지하여, 초기 대규모 CNN 모델과 거의 동일한 성능을 달성
  • 개별 기술(프루닝, 양자화, 지식 증류)과 비교했을 때, 하이브리드 접근법은 각 기술의 약점을 보완하며 장점을 극대화했음

개별 기술의 한계와 개선

  1. 프루닝
    • 비효율적인 가중치를 제거하는 데 효과적이지만, 모델의 구조가 복잡한 경우 성능 손실이 발생할 수 있다
    • 이를 보완하기 위해 재학습(retraining) 단계를 포함했으나, 여전히 단독 사용으로는 부족함…
  2. 양자화
    • 모델 크기를 대폭 줄이는 데 유용하지만, 데이터 표현의 정밀도가 낮아져 정확도 손실이 발생했다
    • QAT(Quantization-Aware Training)를 사용하지 않을 경우, 양자화 후 성능 저하가 두드러질 수도 있음
  3. 지식 증류
    • 교사 모델에서 학생 모델로 지식을 전이하여 성능 손실을 줄이는 데 효과적이지만, 데이터의 클래스 간 복잡한 관계를 완전히 포착하는 데 한계가 있음

하이브리드 접근법의 강점

하이브리드 모델은 위의 한계를 각각 보완함!

  • 프루닝으로 모델 크기를 줄이면서도, 지식 증류를 통해 정확도를 유지
  • 양자화를 결합하여 메모리 사용량을 극단적으로 줄이면서도, 미세 조정 학습(fine-tuning)을 통해 손실을 보완

한계와 향후 연구 방향

  1. 한계점
    • 프루닝과 양자화를 적용한 모델은 특정 데이터셋에서 성능이 저하될 가능성이 있음
    • 모델 압축 과정에서 복잡한 데이터 클래스 간 관계를 완벽히 포착하지 못할 수 있음
  2. 향후 연구 방향
    • 더 복잡한 데이터셋과 다양한 응용 사례에서 하이브리드 모델을 평가
    • 자연어 처리(NLP) 및 음성 인식과 같은 다른 도메인으로 확장
    • 모델의 공정성과 안전성을 강화하여 실질적 사용을 위한 신뢰성 확보

 


마무리

이 논문은 경량화된 딥러닝 모델 연구 분야에서 중요한 기여를 했으며, 특히 자원 제약이 있는 엣지 디바이스 환경에서 딥러닝 모델을 실행할 수 있는 실질적인 가능성을 제시했다. 제안된 하이브리드 접근법은 단순히 기술을 결합한 것에 그치지 않고, 각각의 기술이 가진 한계를 상호 보완하여 성능과 효율성을 동시에 극대화했다.

그러나 연구 범위가 특정 데이터셋과 응용 사례에 한정된 점, 모델 안정성과 공정성에 대한 추가적인 검토가 필요하다는 점에서, 향후 연구의 확장이 필요할 것이다.
특히, 자연어 처리(NLP), 음성 인식, 대규모 다중 태스크 환경에서 이 방법론을 적용하고 검증하는 것은 경량화 기술이 널리 확산되는 데 중요한 과제가 될 것으로 보인다.

자원 대비 효율이 우수하고 성능이 높은 모델은, 딥러닝 기술이 많은 산업과 응용 분야로 확산될 수 있는 기반이 될 수 있을 것!

 

 



CNN (Convolution Neural Network)

CNN은 컨볼루션을 이용한 인공 신경망 모델

다차원 배열 데이터 처리에 특화된 모델로 데이터의 공간적 정보를 유지하면서 배열 데이터 정보를 다음 레이어로 보낼 수 있어 이미지 (3차원 배열) 분야에서 적극 활용

 

Convolutional layer

필터는 이미지를 통과하여 한 번에 몇 Pixel(NxN)을 스캔하고 각 형상이 속하는 클래스를 예측하는 형상 맵을 만든다

 

Pooling layer (downsampling)

가장 중요한 정보를 유지하는 동시에, 각 피쳐의 정보량을 줄임 (보통 여러 개의 회전이 있다?)

 

Fully Connected layer 완전 연결 계층

한 층(layer)의 모든 뉴런이 그 다음 층(layer)의 모든 뉴런과 연결된 상태를 의미

1차원 배열의 형태로 평탄화된 행렬을 통해 이미지를 분류하는데 사용되는 계층

Fully connected layer을 Dense layer이라고도 한다. 위의 코드에서는 Flatten을 통해 흑백 이미지, 2자원 벡터의 행렬을 1자원 배열로 평탄화 하고, ReIu함수로 뉴런을 활성화하고 softmax함수로 이미지를 분류하는 것까지가 FuIly connected layer라고 할 수 있다.

 

Fully connected input layer (평탄화)

이전 레이어의 출력을 평탄화하여 다음 스테이지의 입력이 될 수 있는 단일 벡터로 변환

 

The first fully connected layer

이미지 분석의 입력을 취하여 정확한 라벨을 예측하기 위해 가중치를 적용

 

Fully connected output layer

각 라벨에 대한 최종 확률을 제공합

 

AlexNet

Conv-Pool-LRN-Conv-Pool-LRN-Conv-Conv-Conv-Pool-FC-FC-FC




 

CNN architectures for image classification

image classification을 위한 CNN architecture 들에 대한 설명

(Stride 1의 K×K conv. filter와 P×P 의 pooling layer가 있다고 가정)

  • VGGNet은 AlexNet에 존재하던 large conv. filter를 다수의 33 convolutional layer로 변경함으로써, receptive field size를 유지할 수 있었다.
    • 주로 작은 3*3 conv 필터를 여러 층에 걸쳐 사용해서 receptive field를 확장함
    • 작은 필터를 사용하여 더 깊은 네트워크를 구성하는 것이 큰 필터를 사용하는 것보다 성능이 뛰어나다?
  • VGGNet은 AlexNet과 달리 LRN (Local Reponse Normalization)을 사용하지 않는다
    • 대신 배치 정규화 같은 거 쓴다
  • AlexNet 대비 더 깊은 레이어층을 구성하여 성능 향상에 도움을 줄 수 있다
    • VGGNet, ResNet 등의 네트워크는 AlexNet보다 더 깊은 레이어를 통해 성능을 향상시킴
  • AlexNet은 ReLU activation function과 dropout regularization을 사용
    • AlexNet은 ReLU 활성화 함수와 드롭아웃을 사용하여 학습 효율을 높이고 과적합을 방지
  • Pooling layer 내의 한 pixel의 receptive field는 (P+K−1)×(P+K−1)으로 계산할 수 있다?
    • Pooling 레이어의 한 픽셀의 receptive field는 주로 그 픽셀의 위치와 주변 픽셀에 영향을 받긴 하지만 Pooling layer 자체가 receptive field를 증가시키는 역할을 하지는 않음
    • Conv 레이어에 의해 receptive field가 확장되며, Pooling은 그동안 쌓인 receptive field를 요약하는 역할 → 정확한 receptive field 크기를 계산하려면 Conv 레이어의 영향을 고려해야 함

 

Receptive Field의 정의

Receptive field는 신경망에서 특정 뉴런이 입력 이미지의 어느 부분을 보는지 나타내는 개념

네트워크의 출력에 있는 특정 뉴런이 입력 이미지에서 참조하는 영역의 크기

→ CNN에서 한 픽셀의 receptive field는 해당 픽셀이 입력 이미지의 어느 영역에 대응하는지를 의미

  • Pooling layer의 각 픽셀의 receptive field는 단순히 해당 레이어의 파라미터만으로 계산되지 않으며, 이전 convolutional layers와 pooling layers의 연속적인 효과에 따라 결정

 

Convolution Layer와 Pooling Layer의 역할

  • Convolution Layer: 각 레이어가 입력의 작은 영역(필터 크기)에 대해 계산을 수행하며, 여러 레이어를 거치면서 receptive field가 점점 커짐 → 각 픽셀이 점점 더 넓은 입력 영역을 보게 된다
  • Pooling Layer: 일반적으로 Max Pooling 또는 Average Pooling을 사용하여 인접한 픽셀을 하나의 값으로 요약함.
    • pooling 레이어는 입력 특성을 압축하고, 네트워크의 불변성을 강화하는 역할
    • Pooling 자체는 receptive field를 크게 증가시키지 않으며, 주로 크기를 줄인다

 

Receptive Field 계산 방법

한 픽셀의 receptive field 크기는 Convolution 레이어와 Pooling 레이어의 크기, stride, padding 등 여러 요소에 따라 달라진다

  • Convolution 레이어: receptive field를 K×K 필터를 적용하면 receptive field가 넓어짐
  • Pooling 레이어: Pooling 레이어는 receptive field를 더욱 넓히는 데 기여하지는 않지만 이미지의 크기를 줄이면서 전체적으로 네트워크가 인지하는 영역을 더 넓게 만듦
  • Pooling 레이어에서 픽셀의 receptive field는 그 전 레이어에서 결정된 receptive field와 연관이 있으며, 단순히 (P+K−1)×(P+K−1)로 계산되지는 않음
    • 정확히 계산하려면 Pooling 레이어, Conv 레이어의 영향을 모두 고려해야 함
    • Pooling은 receptive field를 줄이지는 않지만, 픽셀의 수를 줄이면서 각 픽셀에 대한 receptive field는 이전 레이어의 receptive field에 기반하여 증가하게 된다

 

Convolutional Layer의 Receptive Field

Convolutional Filter의 영향:

  • K×K 크기의 convolutional filter가 stride 1로 작동하면, 입력 이미지의 각 위치에 대해 K×K 크기의 영역을 탐색

→ Convolutional layer의 각 유닛은 입력 이미지에서 K×K 영역을 본다

 

Pooling Layer의 Receptive Field

Pooling Layer의 영향:

  • P×P 크기의 pooling layer는 입력으로 주어진 영역을 P×P 블록으로 나누고, 각 블록에 대해 하나의 값을 출력 (예: Max Pooling의 경우 최대값).

→ pooling layer의 각 유닛은 그 이전 단계(Convolutional Layer)의 P×P 영역을 참

 

결합된 Receptive Field

  1. 결합된 Receptive Field 계산:
    • Pooling layer의 각 유닛이 참조하는 P×P 영역은 사실상 그 이전 단계의 receptive field
    • Convolutional Layer와 Pooling Layer의 receptive field를 결합해서 계산해 보면, Pooling Layer의 각 유닛이 참조하는 실제 입력 이미지의 영역은 P×P 블록의 각 픽셀이 참조하는 영역의 합이라고 볼 수 있다?
  2. (P+K−1)×(P+K−1)의 의미:
    • 여기서 말하는 (P+K−1)×(P+K−1)은 Pooling layer에서 각 유닛이 입력 이미지에서 참조하는 전체 영역의 크기를 나타내려는 것
      • P는 pooling layer가 보는 영역의 크기
      • K−1은 각 P×P 영역에서 convolutional filter가 적용될 때 추가로 커버되는 영역
    • 이 공식은 Convolutional Layer와 Pooling Layer의 조합으로 인해 Pooling Layer의 각 유닛이 입력 이미지에서 참조하는 영역의 크기를 표현하려는 것

(P+K−1)×(P+K−1) 공식은 Pooling Layer에서 각 유닛이 입력 이미지에서 참조하는 영역의 크기를 나타내며, Convolutional Layer와 Pooling Layer의 조합으로 인해 이와 같은 receptive field가 결정

이 계산은 입력 이미지의 특정 영역에 대해 Pooling Layer의 각 유닛이 얼마나 넓은 영역을 보고 있는지를 보여준다?

 

예시

  • K=3, P=2
    • Convolutional Layer의 각 유닛은 3×3 영역을 참조
    • Pooling Layer에서 2×2 블록을 적용한다고 할 때, 이 블록은 Convolutional Layer의 2×2 유닛을 참조
    • 그러므로, Pooling Layer에서 2×2 블록의 각 유닛이 실제 입력 이미지에서 커버하는 영역은 (2+3−1)×(2+3−1)=4×4
    •  

 

그럼 Pooling layer 내의 한 pixel의 receptive field는 (P+K−1)×(P+K−1)으로 계산할 수 있는가?

  • P+K−1이라는 식은 특정 조건 하에서만 사용될 수 있으며, 일반적인 경우에는 적용되지 않는다
  • convolutional layer의 K×K 필터와 P×P pooling layer가 단일 계층으로 결합되었을 때 적용될 수 있고, 일반적인 경우에는 적용되지 않음
    • 문제의 보기처럼 stride가 1이고 단일 convolution 레이어를 가지면서 pooling 레이어도 stride가 1일 때 → 단 풀링 레이어가 컨볼루션 레이어 바로 뒤에 있어야 함
  • 네트워크의 전체적인 구조(여러 레이어의 조합)를 고려해야 실제 receptive field를 정확히 계산할 수 있다!@

→ 일반적인 CNN 구조에서는 그 공식이 적용되지 않으며, 여러 레이어를 고려한 복잡한 계산이 필요함!





 

Analysis of model behaviors

Embedding feature analysis

모델의 어떤 레이어에서 추출하느냐에 따라 로우 레벨부터 하이 레벨까지의 특징을 모두 추출해서 분석 가능

t-SNE (t-distributed stochastic neighbor embedding)

맥시멀리 액티베이팅 패치

  1. 분석하고자 하는 특정 채널 선택
  2. 준비된 이미지 샘플 DB를 이용해 액티베이션 맵을 추출
  3. 맥스 값에 해당하는 영역의 패치를 뜯어냄 → 이 패치는 어떤 영역의 피쳐를 가지고 가는가?

I = 이미지

argmax = 최적화되는 대상

f(I) = 특정 클래스에 대한 스코어 (ex. 강아지라면 강아지에 대한 소프트맥스 값 등)

f(I)라 되어 있는 이 입력만 최적화?

Gradient ascent

  1. 초기 입력 이미지를 통해 특정 클래스 스코어 추출
  2. 로스 함수를 맥시마이즈 하는 방향으로 그래디언트를 발생시켜 역전파 → 이때 모델은 fix 하고 나서 수정하지 않음 → 인풋 이미지에 대해서만 최적화 하도록 역전파
  3. 입력 이미지 업데이트
  4. 1~3을 수렴할 때까지 반복(스코어를 맥시마이즈하는 방향으로)

특정 채널을 최대화 하는 방식으로도 할 수 있다?



CAM

Class Activation Mapping

CNN(Convolutional Neural Network) 모델이 이미지 분류를 할 때 특정 클래스에 대해 모델이 주목한 이미지의 영역을 시각화하는 방법

맨 마지막 레이어를 풀리 커넥티드(FC) 레이어 대신 Global average pooling(GAP) layer를 삽입

→ 정확히는 풀리 커넥티드 레이어가 GAP 레이어와 결합된 형태로 존재한다.

 

GAP 글로벌 평균 풀링 레이어

1. 글로벌 평균 풀링(GAP) 레이어

구조 및 동작 원리

  • GAP 레이어는 각 특징 맵(feature map)의 전체 공간에 대해 평균을 계산하여 단 하나의 값으로 축소한다
  • 예를 들어, 입력으로 7x7 크기의 특징 맵이 있다면, GAP 레이어는 이 7x7 크기의 모든 값을 평균 내어 하나의 값을 출력함
  • 이 과정은 각 특징 맵을 하나의 숫자로 축소하므로, 마지막 합성곱 층의 출력이 512개의 7x7 크기 특징 맵이라면 GAP 레이어는 512개의 숫자를 출력하게 된다.

장점

  • 모델 파라미터 감소: GAP 레이어는 단순히 평균을 내는 작업을 수행하므로, 학습해야 할 추가적인 파라미터가 없음. 이는 모델의 복잡성을 줄이고 과적합(overfitting)을 방지하는 데 도움을 준다
  • 위치 정보 유지: GAP 레이어는 전체 특징 맵의 정보(공간 정보 포함)를 하나의 값으로 요약하지만, 특징 맵의 전반적인 내용은 반영되므로 특정 클래스와 연관된 중요한 패턴을 잘 보존할 수 있음

 

2. 풀리 커넥티드(FC) 레이어

구조 및 동작 원리

  • FC 레이어는 각 뉴런이 이전 층의 모든 뉴런과 연결된 형태로, 입력 데이터의 모든 요소에 가중치를 적용하여 출력을 생성
  • 예를 들어, 7x7 크기의 특징 맵을 FC 레이어에 입력하려면 먼저 이를 평탄화(flatten)해야 함. 그러면 7x7 크기의 특징 맵이 49개의 값으로 펼쳐지며, 이 값들은 FC 레이어의 입력으로 사용
  • FC 레이어는 학습을 통해 각 입력 값에 대한 최적의 가중치를 찾고, 이를 통해 클래스 예측을 수행

장점

  • 복잡한 결정 경계 학습: FC 레이어는 모든 입력과 출력이 연결되어 있기 때문에, 매우 복잡한 비선형 관계를 학습할 수 있음.. 이는 모델이 매우 세밀한 분류 작업을 수행할 수 있게 해준다

단점

  • 모델 파라미터 증가: FC 레이어는 많은 수의 가중치를 학습해야 하므로, 네트워크의 파라미터 수가 크게 증가함. 이는 모델의 복잡성을 높이고 과적합의 위험을 증가시킬 수 있음
  • 공간 정보 손실: FC 레이어는 입력을 평탄화하여 사용하기 때문에, 이미지의 공간적 구조나 위치 정보를 잃게 됨. 이는 이미지 분석에서는 중요한 단점이 될 수 있음

 

기본 CNN 구조

  • 일반적인 CNN 모델에서는 합성곱 층(convolutional layers) 뒤에 풀리 커넥티드 레이어(fully connected layer)가 연결. 이 풀리 커넥티드 레이어는 모든 입력 뉴런과 출력 뉴런이 연결된 구조로, 마지막 합성곱 층의 출력 특징 맵(feature map)을 한 줄로 펼친(flatten) 후 이들을 클래스별로 분류하는 역할을 한다

CAM의 구조적 특징

  • CAM에서는 마지막 풀리 커넥티드 레이어 대신 글로벌 평균 풀링(GAP) 레이어를 사용. GAP 레이어는 각 특징 맵의 공간 정보를 평균화하여 하나의 값으로 축소
  • 이렇게 만들어진 각 특징 맵의 평균값들은 특정 클래스의 예측에 대한 입력으로 사용된다. 이 과정에서 풀리 커넥티드 레이어가 완전히 제거되는 것은 아니며, 다만, GAP 레이어의 출력이 각 클래스에 해당하는 가중치와 곱해져 최종 클래스 점수를 계산

가중치의 역할

  • CAM에서의 클래스 점수는 GAP 레이어에서 출력된 값(평균값)에 클래스별로 학습된 가중치를 곱해 계산. 이 가중치는 기존의 풀리 커넥티드 레이어에 있던 가중치와 유사한 역할을 하며, 각 특징 맵이 특정 클래스에 얼마나 중요한지를 반영

 

왜 GAP 레이어를 사용하는가? 풀리 커넥티드 레이어와 비교했을 때 장점

1. 모델의 해석 가능성 향상

  • 직접적인 클래스 활성화 맵 생성: GAP 레이어는 각 특징 맵의 평균을 계산하여 직접적으로 클래스 활성화 맵을 생성하는 데 사용된다. 이를 통해 모델이 예측을 내릴 때 어떤 이미지 영역에 주목했는지를 명확하게 시각화할 수 있음. 모델의 예측 과정이 더욱 투명해지고, 사용자가 모델이 왜 특정 결정을 내렸는지 이해하기가 쉬워진다

2. 모델 복잡도 감소

  • 파라미터 수 감소: GAP 레이어는 입력을 단순히 평균 내는 작업을 수행하기 때문에 학습해야 할 파라미터가 없음. 반면에 FC 레이어는 많은 가중치를 학습해야 하므로 모델의 복잡성이 증가하게 된다. GAP 레이어를 사용하면 모델의 전체 파라미터 수가 줄어들어 학습 과정이 간소화되고, 과적합(overfitting) 위험이 줄어든다

3. 공간 정보의 유지

  • 위치 정보 보존: GAP 레이어는 각 특징 맵의 평균을 내어 출력하기 때문에, 원래의 특징 맵에 담긴 공간적 정보를 어느 정도 유지할 수 있음. 반면, FC 레이어는 입력을 평탄화하여 공간적 구조를 무시하게 된다. GAP 레이어를 사용하면 이미지의 패턴이나 객체 위치에 대한 정보가 보존되어, 모델이 이미지의 중요한 부분을 잘 활용할 수 있음

4. 과적합 위험 감소

  • 더 적은 파라미터로 학습: GAP 레이어는 FC 레이어보다 학습해야 할 파라미터가 훨씬 적기 때문에, 훈련 데이터에 과도하게 맞추는 과적합의 위험이 낮아진다. 이는 특히 훈련 데이터가 제한적일 때 유리하며, 모델의 일반화 성능을 향상시킬 수 있음

5. 모델의 간소화

  • 간단하고 효과적인 구조: GAP 레이어는 구조가 단순하기 때문에 구현이 쉽고, 모델을 간소화할 수 있음. 이는 모델을 더 쉽게 유지보수하고, 다양한 하드웨어에서 실행하기 쉽게 만들어 준다
  1. 특징 맵 추출: 이미지가 CNN을 통과하면서 마지막 합성곱 층에서 다양한 특징 맵(feature map)들이 생성
  2. 클래스별 가중치: 각 클래스에 대해 학습된 완전 연결층(fully connected layer)의 가중치가 있고, 이 가중치는 각 특징 맵이 해당 클래스 예측에 얼마나 중요한지를 나타냄
  3. 특징 맵 가중합: 특정 클래스에 대해 각 특징 맵에 가중치를 곱한 후, 이들의 가중합을 계산하여 클래스 활성화 맵을 만든다. 이 맵은 모델이 해당 클래스에 대해 주목한 이미지의 영역을 나타낸다
  4. 시각화: 최종적으로, 이 클래스 활성화 맵을 원본 이미지에 중첩시켜 시각화. 이를 통해 어떤 이미지 영역이 해당 클래스의 예측에 중요한 역할을 했는지 확인할 수 있음
  • 단점: 네트워크 아키텍처의 변형과 재학습이 필요하다
    • CAM은 특정 구조를 요구하기 때문에 글로벌 평균 풀링 층이 있는 모델에서만 적용할 수 있음. 이 때문에 기존의 CNN 구조를 수정해야 하거나, 제한된 모델에서만 CAM을 사용할 수 있다는 단점

 

Grad-CAM

Gradient-weighted Class Activation Mapping

CNN(Convolutional Neural Network) 모델이 이미지에 대해 내린 예측의 근거를 시각화하는 방법

Grad-CAM은 이미지의 특정 부분이 모델의 예측에 얼마나 기여했는지를 확인하기 위해 사용

  • Grad-CAM의 주요 아이디어는 모델의 마지막 합성곱(convolutional) 층을 활용하는 것.
    • 합성곱 층은 이미지에서 위치 정보와 패턴을 보존하면서 특징을 추출하는 역할을 하므로, 이 층의 활성화 맵(activation map)을 통해 모델이 이미지의 어느 부분을 주목했는지를 알 수 있음
  1. 특정 클래스에 대한 예측 점수: 특정 클래스(예: '고양이'가 존재하는지 여부)에 대한 모델의 예측 점수를 계산
  2. 이 클래스 점수에 대한 입력 이미지의 그래디언트 계산: 이 클래스에 대한 예측 점수를 기준으로 입력 이미지의 각 픽셀에 대한 그래디언트를 계산. 이 그래디언트는 모델이 이 클래스의 예측에 얼마나 민감한지를 표현
  3. 특정 합성곱 층의 출력 활성화 맵: 그래디언트를 이용해 마지막 합성곱 층의 출력 활성화 맵을 가중합(weighted sum)한다
    1. 이를 통해 모델이 예측 시 주목한 이미지의 위치 정보를 얻을 수 있음
  4. 결과 시각화: 최종적으로 얻은 맵을 원본 이미지에 중첩하여 시각화
    1. 이 시각화 결과를 통해 모델이 예측에 있어 이미지의 어떤 부분을 주로 사용했는지 알 수 있음

Grad-CAM에서의 ReLU

알고리즘 마지막 단계에서 ReLU 함수를 적용함

  • 클래스에 대한 중요도를 나타내는 가중 합을 계산하는 것이 목적인데 ReLU 활성화 함수를 적용하면 음수 값을 제거하고 양수 값만 남길 수 있기 때문에, 모델이 특정 클래스에 긍정적으로 기여하는 특징들만 강조할 수 있음

CAM의 단점을 보완하기 위해 Grad-CAM이 개발

Grad-CAM은 모델 구조에 대한 제약이 적으며, 마지막 합성곱 층에서 활성화 맵과 클래스에 대한 그라디언트를 결합하여 보다 유연하게 모델의 예측 근거를 시각화할 수 있음

'Study - AI > Computer Vision' 카테고리의 다른 글

Computational Imaging  (0) 2025.01.16
Object Detection & R-CNN  (0) 2025.01.15
Semantic Segmentation  (0) 2025.01.14
ViT & GAN  (0) 2025.01.14



시계열 데이터

  • 하나의 변수를 시간에 따라 여러 번 관측한 데이터
  • 가격, 매출, 온도, 성장 등 변화 예측과 반복되는 패턴에 대한 인사이트 도출을 목표로 함
    • 단순히 값 뿐만 아니라 변동성 등에 대한 다양한 예측
  • 시간 또는 회차 단위이며, 시간 t는 절대적인 순서가 중요한 데이터이므로 t는 고정하고 이외의
    변수들의 여러 요인에 대해 분석하는 것이 일반적

시계열 데이터의 특징

  • 추세(trend) : 장기적인 증가 또는 감소
  • 계절성(seasonality) : 특정 요일/계절에 따라 영향
  • 주기(cycle) : 고정된 빈도가 아니지만 형태적으로 유사하게 나타나는 패턴
  • 노이즈(noise) : 측정 오류, 내부 변동성 등 다양한 요인으로 생기는 왜곡




이미지 데이터

이미지 데이터 전처리

고차원 데이터를 전처리를 하는 이유는 크게 세가지

  1. 데이터 퀄리티 향상

  2. 데이터 양 증대

  3. 쉬운 검증(시각화를 통한 인지 개선)

    → 1과 2는 테크닉, 3은 시각화로 접근

  • 색상 공간(Color Space) : RGB, HSV, Grayscale

  • 노이즈 삽입(Noise)

  • 사이즈 조정(Resizing) : Crop & Interpolation

  • 아핀 변환(Affine Transformation) : 회전, 왜곡, 평행 이동 등

  • 특성 추출(Feature Extraction) : SIFT, SURF, ORB, FAST 등

    → 이후 task에 따라 도메인 지식 기반 변형 가능


이미지 데이터 라이브러리

  • OpenCV : 효율적인 처리, 복잡한 사용
    • BGR 순서로 데이터 저장. H * W로 저장
  • PIL (Python Image Library => Pillow) : 쉬운 이미지 전처리 기능 모두 제공
    • RGB 순서로 데이터 저장, W * H로 저장
  • scikit-image : SciPy 기반 이미지 처리, scikit-learn과 유사한 포맷으로 쉬운 사용
  • albumentations : 이미지 전처리용 라이브러리. 일반적으로 데이터 증강 등에 활용
  • torchvision : torch 기반 이미지 전처리
  • SciPy : 대부분의 기능적 요소 탑재, 다만 사용성이 다른 라이브러리에 비해 아쉬움




텍스트 데이터

정규 표현식

정규표현식(Regex) 정리



'Study - AI > EDA - Data Analysis' 카테고리의 다른 글

정형 데이터  (0) 2025.01.13
데이터 분석 & 데이터 시각화  (0) 2025.01.10



  • 범주형 데이터 : 명확한 그룹 등으로 구분 - 순서형 / 명목형
  • 수치형 데이터 : 수로 나타남 - 이산형 / 연속형

순서형인지 수치형인지가 고민된다면 산술연산의 의미를 두면 된다.

(별점 4점은 별점 2점보다 2배 좋은건가?)
경우에 따라 순서형도 수치형처럼 치환하여 계산해볼 수 있다. (평균 별점)





범주형 데이터

명목형 데이터

  • 순서가 상관없이 항목으로 구분되는 데이터
  • 데이터 분석에 있어서는 집단 간 분석에 용이 / 범주 별 관계 분석에도 용이 (추천 알고리즘)

순서형 데이터에서는 오히려 적합할 수 있으나, 일반적으로 선형적인 연산이 들어가는 대부분 모델에서는 모델에 좋지 않은 영향


명목형 데이터 전처리

  • Label Encoding
    • 숫자로 1 대 1로 매핑
    • 없는 레이블에 대해서 미리 전처리 필요 (기본값 -1로 설정한다거나)
    • 다음의 2개 이상에서 [0,1,2]등으로 레이블링을 한다면 자체적인 순서 존재
  • One-Hot Encoding
    • 순서 정보를 모델에 주입하지 않기 위한 방법
    • 추가로 다수 범주가 동시에 포함될 수 있는 경우에도 효과적인 인코딩
    • 변수에 따라 데이터가 커질 수 있음.오히려 학습 속도와 퀄리티에 악영향
  • Binary Encoding
    • 범주가 너무 많다면(모델 학습 시간 또는 메모리 문제 등)
    1. 레이블링을 우선한다.(0,1,2,3…)
    2. 이를 이진수로 변환한다 (000,001,010,…111)
    3. 이를 컬럼 데이터로 변환한다 [0,0,0][0,0,1]
      → 범주의 개수가 k개일 때 k<2^N을 만족하는 최소 N만큼의 컬럼 생성
    • 순서 정보를 없애며, 개수가 많은 범주에 효과적
    • 범주의 의미가 거의 사라진다
  • Embedding
    • 자연어 처리에 있어 적절한 임베딩 모델을 사용하는 것도 하나의 방법
  • Hashing
    • 랜덤 해시 값으로 순서정보를 없앨 수도 있음

순서형 데이터

각 값이 우위 등의 순서가 존재하는 데이터


순환형 데이터

  • 순서는 있지만 해당 값이 순환되는 경우 존재 (범주형/수치형 모두 포함)
    • 월, 요일, 각도 등
  • 삼각함수 등 값의 크기에 따라 순환되는 값을 사용할 수도 있음 (시계열 등에서도 사용 가능)
    • sin(2pii/n), cos(2pii/n)등
    • NeRF에서는 각도 값의 표현력을 넓히기 위해 한 값을 여러 개의 Sin,Cos값으로 치환해서 사용





수치형 데이터

  • 이산형 데이터(Discrete) : 정수 형태 → 인구 수, 횟수 등
  • 연속형 데이터(Continuous) : 실수 형태 → 키, 몸무게, 온도 등
  • 구간형 데이터 : 구간의 값이 중요 → 온도, 시간 등
  • 비율형 데이터 : 원점과의 거리가 중요 → 인구 수, 횟수, 밀도 등





정형 데이터 피쳐 엔지니어링

결측치 missing value

  • 데이터셋에 누락된 값 (Null, NA)
  • 대다수 모델에는 공백으로 값을 받지 않기 때문에 제외, 혹은 예측으로 처리함

결측치가 얼마나 있는가?

  1. 결측치가 과반수인 경우
    • 결측치 유무만 사용
    • 결측치 데이터 포함 열 제외
  2. 결측치가 유의미하게(>5%) 많은 경우
    • 결측치 정보가 유의미한 정보임을 우선 파악
    • 결측치를 채우기 위한 대푯값 전략
  3. 결측치의 개수가 매우 적은 경우
    • 결측치가 포함된 행의 값을 미포함하는 경우도 고려 가능
    • 결측치를 위한 대푯값 계산 필요

결측치를 채우기 위한 방법

  1. 규칙 기반
    • 도메인 지식이나 논리적 추론에 의한 방법
    • 지나치게 복잡하거나 단순한 경우 잘못된 편향이 반영될 수 있음
  2. 집단 대푯값
    • 특정 집단의 대푯값(평균, 중앙값, 최빈값) 등 사용
    • 집단 설계가 중요하고 이상치에 민감할 수 있음
  3. 모델 기반
    • 회귀모델을 포함한 다양한 모델을 통해 예측
    • 복잡한 패턴을 예측할 수 있으나 과적합 이슈 발생 가능



이상치 Outlier

  • 관측된 데이터의 범위에서 과하게 벗어난 값을 의미함
  • 사분위수(IQR), 표준편차, z-score 등의 기준이 대표적
  • DBSCAN, Isolation Forest 등의 방법론 존재

IQR(Inter Quantile Range)

  • IQR = 3분위수와 1분위수의 차이
    • 1분위수 : 1.5 * IQR 이상
    • 3분위수 ­: 1.5 * IQR 이상



피쳐 엔지니어링

  • 보다 나은 특성을 통해 좋은 모델을 만들고, 해석에 용이하게 만드는 과정
  • 특성 추출(Feature Extraction), 특성 선택(Feature Selection)



클러스터링 Clustering

  • 클러스터링(Clustering)이란 유사한 성격을 가진 데이터를 그룹으로 분류하는 것
  • 클러스터링 방법론
    • K-Mean : 그룹을 K개로 그룹화하여, 각 클러스터의 중심점을 기준으로 데이터 분리
    • Hierarchical Clustering : 데이터를 점진적으로 분류하는 방법
    • DBSCAN : 밀도기반 클러스터링
    • GMM : 가우시안 분포가 혼합된 것으로 모델링



차원 축소

  • 차원 축소(dimensionreduction)란 특성 추출 방법 중 하나로 데이터의 특성(feature)N개를 M개로 줄이는 방법을 통칭
    • 데이터의 복잡성 감소 : 고차원 데이터에서
    • 시각화 : 패턴 발견에 용이 =>클러스터링과 매우 밀접한 관련
    • 모델 성능 향상
  • 차원 축소 방법
    • 정보를 최대한 보유하고, 왜곡을 최소화해야 함.
      • 가까운 데이터는 최대한 가깝게, 먼 데이터는 최대한 멀게
    • PCA : 데이터의 공분산을 계산하여 고유 벡터를 찾아 투영
    • t-SNE : 데이터 포인트 간 유사성 모델링하여, 저차원 공간에서 재현
    • UMAP : 위상 구조의 정보를 최대화하여 저차원 공간에 재현
    • LDA : 클래스간 분산을 최대화하고, 클래스 내 분산을 최소화하는 방식
    • Isomap : 고차원에서 최단 경로 거리에 대한 정보를 저장
    • Autoencoder : 인코더/디코더 구조로 고차원 데이터의 정보를 최대한 저장한 저차원 공간

특정 벡터들이 하나의 평면에 새롭게 투영된 것 → 많이 왜곡된 것

→ 차원 축소는 정답이 될 수는 없다?





데이터 분석

통계적 데이터 분석

  • 과거 통계적 데이터 분석 결과물의 핵심은 추론이다.
  • 전체 모집단이 존재하고, 현재 가지고 있는 데이터를 표본 집단으로 가정한다.
  • 현재의 표본 데이터로 모집단의 특징을 아는 것이 통계적 데이터 분석의 목적이다.
  • 데이터가 많아질수록 추론의 신뢰도가 높아진다.
  • 인공 신경망과 같은 최신 머신러닝 모델이 더 뛰어난 성능을 보이는 영역이 존재하나, 데이터의 수 및 학습 환경 등의 영향을 받기 때문에 해결하고자 하는 문제가 무엇이냐에 따라 통계 모델을 사용하기도 한다.

데이터 문해력

  • 데이터를 건전한 목적과 윤리적인 방법으로 사용한다는 전제 하에, 현실 세상의 문제에 대한 끊임없는 탐구를 통해 질문하고 답하는 능력
  1. 좋은 질문을 할 수 있는 역량
  2. 필요한 데이터를 선별하고 검증할 수 있는 역량
  3. 데이터 해석 능력을 기반으로 유의미한 결론을 만들어내는 역량
  4. 가설 기반 A/B테스트를 수행하여 결과를 판별할 수 있는 역량
  5. 의사결정자들도 이해하기 쉽게 분석 결과를 표현할 수 있는 역량
  6. 데이터 스토리텔링을 통해 의사결정자들이 전체 그림을 이해하고 분석 결과에 따라 실행하게 하는 역량

탐색적 데이터 분석 (EDA, Exploratory Data Analysis)

  1. Input Data, 전처리 방법론, 모델 후보군 고려
    • 데이터 유형
    • 모델과 학습 방법론
    • 외부 유사 데이터
  2. Target Data와 Metric에 대한 (대략적인)정보 파악
    • 기본 모델 / 단일값 결과물에 대해 베이스라인 점수 파악

데이터 선별

  1. 데이터 수집이 올바르게 진행되었는가?

  2. 예외치(Outlier)는 어떻게 선별할 것인가?

  3. 예외된 데이터는 어떻게 이후 분석에 사용할 것인가?

  4. 결측치는 어떻게 생겼을까?

  5. 결측치가 있는 데이터를 사용할 것인가?

    1. 결측치는 모델에 넣기 전 전처리 작업을 거친다. 결측치가 포함된 행 또는 열 자체를 제거하기도 하며, 대푯값으로 대체하기도 한다.

      → 따라서 “결측치를 얼마나 모델에 넣을 것인가?” 는 선별 기준이 아니다

  6. 외부 데이터를 가져온다면 어떤 것이 가장 큰 차이로 존재할까?

  7. 새로 생길 데이터에 있어 고려하지 못한 사례는 어떤 게 있을까?(edgecase)




데이터 시각화

채널 Channel

  • 채널은 데이터의 속성을 시각적으로 표현하는 방법이다.
  • 색상, 크기, 모양은 데이터 시각화에서 사용되는 채널의 예이다.
  • 데이터의 복잡성을 감소시키지는 않는다
  • 데이터에 따라 적합한 채널이 존재한다. 예시로 색상은 정확한 수치 비교에는 적합하지 않다
  • 위치, 방향, 질감도 시각화의 채널이다.



전주의적 속성

  • 전주의적 속성이란 사람이 의식적인 주의를 기울이기 전에 무의식적으로 인지하는 시각적 특성
  • 색상의 대비 등



색상

범주형 Categorical

  • Discrete, Qualitative 등으로 불림
  • 독립된 색상으로 구성되며 범주형 변수에 사용
  • 서로 다른 색상을 사용하여 데이터 포인트들 사이의 명확한 구분을 제공
  • 색의 차이로 구분하는 것이 특징이지만, 채도나 명도 등의 개별적 차이로 범주를 구분하는 것은 어렵다

연속형 Sequential

  • 정렬된 값을 가지는 순서형, 연속형 변수에 적합
  • 연속적인 색상을 사용해 값 표현 → 밝기나 채도 등을 조절해 데이터의 크기나 강도 표현

발산형 Diverge

  • 연속형과 유사하지만 중앙을 기준으로 발산
    • 상반된 값이나 서로 다른 2개를 표현하는 데에 적합
  • 중앙의 색은 양쪽 점에서 편향되지 않아야 함 → 꼭 무채색일 필요는 없음 : RdYlBU 등의 색상도 사용됨 (중간값 연노랑)



'Study - AI > EDA - Data Analysis' 카테고리의 다른 글

데이터 전처리 : 시계열, 이미지, 텍스트  (0) 2025.01.13
정형 데이터  (0) 2025.01.13



Transformer

RNN(Recurrent Neural Network)

  • RNN의 장점
    • 가변적인 길이의 Input Sequence를 처리할 수 있음.
    • 입력이 많아져도 모델의 크기는 증가하지 않음.
    • (이론적으로) t 시점에서 수행된 계산은 여러 단계 이전의 정보를 사용할 수 있음.
    • 모든 단계에서 동일한 가중치가 적용됨.
  • RNN의 단점
    • Recurrent computation이 느림.
    • Sequence output inference는 병렬화(parallelization)가 어려움.
    • 바닐라(=기본) RNN은 훈련 중 기울기 소실(vanishing gradient) 문제를 겪음.
    • 바닐라 RNN은 종종 시퀀스 내 장거리 의존성(long-rangedependence)를 모델링 하는데
      실패함.
      • 가장 최근에 들어온 정보 위주로 기억하기 때문에 기존의 정보가 사라지는 문제가 발생
        • 전체 sequence가 길이에 관계 없이 single embedding으로 encoding됨.
        • 따라서, long sequences에서는 informationloss가 불가피함.
        • 이전에 입력된 정보는 더 많이 잊혀지는 경향이 있음.
    • 실제로는 여러 단계 이전의 정보에 접근하기 어려움.



LSTM (Long Short Term Memory)




Seq2seq (Sequence-to-Sequence)

Implementation: Encoder

EncoderLSTM (nn. Module) :
class
def __init__(self, input_size, embedding_size, hidden_size, num_layers, p) :
    super(EncoderLSTM, self).__init__()
    self.input_size = input_size # one-hot input의 길이
    self.embedding_size = embedding_size # input token (word embedding)차원
    self.hidden_size = hidden_size # hidden representation 차원
    self.num_layers = num_layers # LSTM 내 레이어 개수
    self.**dropout** = **nn.Dropout(p)**
    self.embedding = nn.Embedding(self.input_size, self.embedding_size) #벡터화
    self.LSTM = nn.LSTM(self.embedding_size, hidden_size, num_layers, dropout=p)

def forward(self, x):
    # shape: [sequence Length, batch size, embedding dims J
    embedding = self.dropout(self.embedding(x))# x를 embedding 벡터화

    # outputs shape: [sequence length, batch size, hidden_size]
    # hs, cs shape: [num_layers, batch_size, hidden_size]
    outputs, (hidden_state, cell_state) = self.LSTM(embedding)
    # outputs => y1, y2 / hidden_state가 LSTM이기 때문에 cell_state도 같이

    return hidden_state, cell_state
    # seq2seq 모델은 encoder에서 hidden_state만 필요해서 outputs는 리턴하지 않음
  • Dropout

    Dropout은 과적합(overfitting)을 방지하기 위해 사용되는 정규화 기법

    • 학습 과정에서 특정 뉴런에 의존하지 않도록 일부 뉴런을 무작위로 비활성화(즉, 0으로 설정)함으로써 모델의 일반화 능력을 향상시킴

    • Encoder와 Decoder 모두 Dropout을 적용하여 임베딩 벡터에 노이즈를 추가함으로써 과적합을 방지하고, 모델이 더 일반화된 패턴을 학습하도록 함

    • 더 나아가, Encoder와 Decoder 모두에 Dropout을 적용함으로써 임베딩 벡터에 동일한 정규화 기법을 일관되게 적용할 수 있음 → 모델 전체의 성능을 높이는 데 도움

      → 시퀀스를 임베딩 공간으로 전환하는 self.embedding()


Implementation: Decoder

class DecoderLSTM(nn.Module):
    def __init__(self, input_size, embedding_size, hidden_size, num_layers, p, output_size):
         super(DecoderLSTM, self).__init__()
             self.input_size = input_size # one-hot input 의 길이
             self.embedding_size = embedding_size # input token (word embedding) 차원
             self.hidden_size = hidden_size # hidden representation 차원
             self.num_layers = num_layers # LSTM 내 레이어 개수
             self.output_size = output_size # one-hot output 길이 (output language vocab size)
             self.dropout = nn.Dropout(p)
             self.embedding = nn.Embedding(self.input_size, self.embedding_size)
             self.LSTM = nn.LSTM( self.embedding_size, hidden_size, num_layers, dropout = p)
             self.fc = nn.Linear( self.hidden_size, self.output_size)

    def forward(self, x, hidden_state, cell_state):
        x = x.unsqueeze(0) # shape of x: [1, batch_size]
        embedding = self.dropout(self.embedding(x)) # shape: [1, batch size, embedding dims]

 # outputs shape: [1, batch size, hidden_size]
 # hs, cs shape: [num_layers, batch_size, hidden_size] ← hs, cs from Encoder
      outputs, (hidden_state, cell_state) = self.LSTM(embedding, (hidden_state, cell_state))
      predictions = self.fc(outputs) # shape: [1, batch_size, output_size]
      predictions = predictions.squeeze(0) # shape: [batch_size, output_size]

      return predictions, hidden_state, cell_state

Implementation: Seq2seq Interface

 class Seq2Seq(nn.Module):
     def __init__(self, Encoder_LSTM, Decoder_LSTM):
         super(Seq2Seq, self).__init__()
         self.Encoder_LSTM = Encoder_LSTM
         self.Decoder_LSTM = Decoder_LSTM

     def forward(self, source, target):
         batch_size = source.shape[1] # source shape: [input language seq len, num_sentences]
         # num_sentences = 한 배치(batch) 안에 있는 문장의 개수, 즉 배치 크기(batch size)를 나타냄
         target_len = target.shape[0] # target shape: [output language seq len, num_sentences]
         target_vocab_size = len(english.vocab)

         outputs = torch.zeros(target_len, batch_size, target_vocab_size)
         hs, cs = self.Encoder_LSTM(source)
         #hs = hidden state, cs = cell state

         x = target[0] # Trigger token <SOS>; shape: [batch_size]
         # SOS token = Start Of Sentence

 for i in range(1, target_len):
         output, hs, cs = self.Decoder_LSTM(x, hs, cs)
         outputs[i] = output
         x = output.argmax(1)
 return outputs # shape: [output language seq len, batch_size, target_vocab_size]




Attention

  • Attention 함수: Attention (Q, K, V) = Attention 값
    query(context)와 key-valuepairs(references)가 입력되면, attention 값은 value들의 가중치 평균이며, 여기서 각 weight는 relevance query와 corresponding key 간의 관련성에 비례함.
  • Q와 K는 비교 가능해야 함. (일반적으로 동일한 dimensionality를 가짐)
  • V와 Attention value는 당연하게도 동일한 dimensionality를 가져야 함. (V와 Q&K는 달라도 OK)
  • 많은 응용 사례에서 이 4가지 요소는 모두 동일한 dimensionality를 가짐.

Attention Is All You Need 논문 참고



'Study - AI > Machine Learning' 카테고리의 다른 글

선형 대수  (0) 2025.01.06
Machine Learning Life Cycle  (0) 2025.01.06