공학/인공지능

Fully Connected Layer, Convolutional Neural Network (CNN), Activation Function (ReLU), Batch Normalization, Underfitting & Overfitting, Object Detection, Anchor Box & NMS

2wnswoo 2025. 5. 5. 16:59

 

Fully connected layer는 모든 퍼셉트론이 커넥션되어 있다는 이유로 명명한다.

  • 1D vector의 의미 : [1, 2, 3, 4, 5] > 이것은 1D vector, Dimension
    • [[1,2,3], [4,5,6]] 2D vector > 행렬
  • loss의 의미 :  MSE에서는, loss = (예측값 - 실제값)^2  # Mean Squared Error
  • Validation test : Traning Data의 일부를 데이터 검증하는데 활용하겠다는 의미
  • 하이퍼파라미터 : 머신러닝 모델이 학습되기전 사용자가 직접 설정해줘야 하는 값, 모델이 아닌 사람이 정해주는 값
  • batch : 데이터셋에서 한 번 훈련할 때 몇개를 모델에 넣어학습시킬거냐? Ex. Batch 64 > 64개 가져오겠다
  • Activation Function에서 Relu 가장 많이 사용
    • 비선형성 부여가 핵심
    •  
      Relu. Rectified Linear Unit


Rectified Linear Unit Ex.이다. 입력값 음수 > 0 출력 / 입력값 양수면 그대로 출력

 

  • Bias 가 있어야 기울기, 절편 값을 바꿀 수 있음
  • Upstream Gradient는 Backpropagation 과정에서, "이전 레이어로부터 전달받은 Gradient"를 의미한다.
  •  Sparse 하다 : 듬성듬성하다.

 

CNN의 주요 특징 3가지

1. ✅ Sparse Interactions (희소 연결, 희소 연산)

CNN에서는 전체 입력에 대해 모든 연결을 계산하지 않고, 일부 영역(커널 크기만큼)만 보고 연산하는 것

이걸 local receptive field (지역 수용 영역)라고도 한다.

파라미터 수를 줄일 수있어 computation도 계산량을 훨씬 줄일 수 있다는 이점이 있음

 

Q. 저렇게 Sparse 하게 커넥션 되면, 한 가지 유닛은 특정 부위밖에 못보는데, 그러면 이미지 전체를 커버 하지 못하는 것이 아닌가??

A. > 맞다. CNN은 특정 국소 부위 밖에 못본다. > 한 개의 레이어만 보면 그렇지만,  Depth 깊이 늘리면 해결된다.

 

2. ✅ Parameter Sharing (파라미터 공유)

같은 가중치(파라미터)를 여러 위치에서 "공유해서 쓰는 것"

 

  • 동일한 필터(커널)를 입력의 여러 위치에 동일하게 적용하는 것
  • 즉, 같은 가중치를 반복 사용하는 구조

3. ✅ Equivariant Representation (등변 표현)

  • 입력이 변하면(예: 이동), 출력도 그에 따라 변하되 일관된 방식으로 변합니다.
  • 특히 CNN은 translation equivariant (이동에 대해 등변)입니다.

📍예시:

  • 이미지에서 고양이가 오른쪽으로 이동하면,
    CNN의 feature map에서도 고양이 특징 위치가 같이 이동합니다.

--

  • pooling : size 줄이는거, 대표값 뽑는거
  • 언더피팅, 오버피팅에 대해서

🎨 그림 그리는 예로 설명해볼게!

🧩 상황:

너는 친구 얼굴을 보고 그림을 그리는 AI야.
그림 연습을 하면서 점점 잘 그려야 해.


1. ✅ 언더피팅 (underfitting)

너무 못 그림. 아무 얼굴도 제대로 못 닮음.

  • 연습을 너무 조금 했거나,
  • 너무 간단하게 배워서
  • 아무 얼굴도 제대로 못 그려

🧒: “이게 누구야...? 그냥 동그라미에 점 찍었네…”


2. ✅ 오버피팅 (overfitting)

한 친구 얼굴만 너무 열심히 외워서, 다른 친구 얼굴도 똑같이 그림

  • 한 사람 얼굴만 보고 진짜 똑같이 그림
  • 근데 다른 사람 얼굴도 그 친구처럼 그려버림!

🧒: “왜 다 이준우처럼 생겼어? 이거 철수인데...”


3. ✅ 정답은? 적당히 잘 배운 경우!

여러 사람 얼굴 특징을 잘 배워서,
새로운 친구 얼굴도 비슷하게 잘 그림!

🧒: “오~ 이건 진짜 철수 닮았다!”

 

  • Convolution Operation 하는 모습 Stride 1과 2의 차이

Stride 2 했을 때 본그림에서는 3x3 output이 나옴, 그런데 stride 3인 경우에는 칸이 맞지 않아 output이 나오지 않음! 그럴때 사용하는게, Zero padding
zero padding

  • Convolutional Layer는 입력과 sparse하게(희소하게) 연결되어 있다. fully connected가 아님!

--

Batch Nomalization

  • ML이나 DL에서 중요한 것은, 데이터로부터 유용한 feature 뽑는 것이 핵심이다
  • Batch Nomalization이란, 한 번 학습할 때 쓰는 batch 안의 데이터 값들(출력값, 즉 activation)을
    평균 0, 분산 1처럼 비슷한 범위로 정규화(normalization) 해주는 게 Batch Normalization이다.
    • 하나의 Batch안에 들어있는 데이터 값들에 대해 관심, 그것들을 일정한 값(Ex. 평균 = 0)으로 해주는 것을 의미

그 외에도 다양한 Nomalization 정규화 방법들이 있음. Batch Norm, Layer Norm, Instance Norm

 

배치 노말라이제이션을 왜하냐?

> 입력 데이터의 정규화를 통해 각 층에서 더 안정적으로 학습되기 때문이다.

--

  • Fully-Connected Layer: 각 레이어의 모든 뉴런이 서로서로 커넥션 되어있는 것을 의미

--

VGG, Visual Geometry Group ( 3x3 필터 반복 사용이 핵심 )

  • 간단한 구조의 CNN을 깊게 쌓은 모델로, 3×3 작은 필터를 반복 사용해 특징을 추출
  • 무조건 3x3 은 아니고 대부분 3x3 사용함

ResNet( Skip Connection 이용이 핵심 )

  • Residual Connection 을 도입해, 아주 깊은 네트워크도 학습 가능하게 만든 모델
    • Residual Connection은 Skip Connection과 같음
      • Skip Connection은 hidden layer, 중간 레이어 건너뛰고 뒤쪽에 있는 레이어에다가 값을 바로 다이렉트로 전달하는 것

--

전통적인 Object Detection, 사진안에 이건 고양이고 이건 자동차고 분류하고 그 위치가 어디에 있는지를 찾는 문제

는 이미지에서 이미지가 있을 법한 곳을 box proposals 하여 sliding box 방식으로 이미지 전체를 훑는 방식으로 object detection을 진행하였었다. > 이것은 비효율적임

 

따라서 등장함 > 최초의 딥러닝 기반의 R-CNN  이때 R은 Region

 

YOLO

  • 이미지를 먼저 격자 형식으로 나눔
  • 1Stage 방식으로 한 번에 진행되므로, 실행속도 빠르다는 장점

*1stage : 객체 탐지 + Classification 한 번에 진행. 속도 빠름 Ex. YOLO
*2stage : 객체탐지 후 Calssification. Sequential 하게 진행. 정확도 높음 Ex. R-CNN

객체 탐지에서 Precision 과 Recall

Precision이 TP / (TP + FP) Recall이 TP / ( TP + FN )

> 재현율이 실제 토탈 갯수에만 관심, 정밀도가 내가 찾은 갯수에 관심

> TP 가 내가 찾은 실제 값 갯수 FP가 실제 토탈 값에서 내가 찾은거 뺀거 FN이 내가 뽑은 거중에서 아닌 값

객체 탐지 성능 평가할 때 precsion과 Recall은 가로 세로 축을 담당하여 성능 평가에 중요한 파라미터임

가로 recall 세로 precision. 넓이( AP )가 넓을 수록 성능이 좋다!

--

  • Fully Connected Layer:
    한 레이어의 모든 뉴런이 그 다음 레이어의 모든 뉴런과 연결되어 있는 구조를 의미
  • Object Detection에서 중복된 경계 상자를 제거하여 하나의 객체에 대해 하나의 경계 상자만 남기기 위해 사용하는 기법은 무엇인가요?  > NMS
    • Object Detection에서 여러 개의 경계 상자(bounding boxes)가 하나의 객체를 가리키는 경우, 이 중에서 가장 신뢰도(confidence score)가 높은 상자만 남기고 나머지를 제거하는 기법
  • Confidence Score

Bounding Box안에 객체가 있는지를 나타낸 것 (0~1) / 노란색 0 빨간색 1 임

NMS( Non-Maximum Suppression )

  • Non maximum suppression NMS, 수행하는 이유는 동일한 물체를 가리키는 여러 박스의 중복을 제거하기 위함
  • 각 물체별 가장 좋은 Box 한 개만 남기고 나머지는 다 지우는 역할

  • NMS 방법?
    • Confidence score이랑 IoU 사용하는 데, 
    • 1. 특정 Confidence Score 이하의 Bounding Box는 제거함 ( Confidence Score Threshold는 HyperParameter )
    • 2. 남은 Bounding Box 들을 Confidence Score 기준으로 내림차순 정렬
    • 3. 맨 앞 박스부터 기준으로, 이 박스와 IoU가 특정 Threshold 이상인 박스들은 모두 제거한다. (IoU Threshold 역시 HyperParameter)
      • *IoU는 "박스 위치가 얼마나 정확한가"에 관심 있고, Ground truth 얼마나 겹치는가?
        *Confidence Score는 "그 박스 안에 있는 물체가 진짜 그 클래스인가"에 관심
      • Ground Truth는 정답(label)입니다.
        즉, 사람이 직접 보고 정해준 실제 정답을 의미, ML, CS분야에서 많이 사용됨

--

Anchor Box

그러나, NMS 사용시 object들이 서로 겹쳐있을 때 object에 대한 bounding box까지 날라갈 수 있다

이를 해결하기위해 등장한 것이 > Anchor Box

Anchor box는 탐지하려는 객체의 모양을 정해놓고, 객체가 탐지되었을 때 어떤 Anchor Box와 유사한지 판단해서 벡터값을 할당하는 방법이다.

 

Anchor Box는 다양한 물체 크기·비율을 커버하기 위해 미리 정해 놓은 기준 박스이며,
객체는 IoU가 가장 높은 anchor box에 할당되어 탐지/학습된다.

 

 

--

위 모든 내용 정리

Fully Connected Layer

  • 한 레이어의 모든 뉴런이 다음 레이어의 모든 뉴런과 연결된 구조

1D, 2D Vector

  • [1, 2, 3] → 1D Vector
  • [[1,2,3], [4,5,6]] → 2D Vector (행렬)

Loss Function

  • 모델의 예측값과 실제값의 차이
  • 예: MSE = (예측값 - 실제값)²

Validation

  • Training Data의 일부를 검증용으로 사용

하이퍼파라미터

  • 모델이 학습되기 전 사람이 정하는 값 (예: learning rate, batch size 등)

Batch

  • 한 번 학습에 사용하는 데이터 묶음
  • 예: batch size 64 → 한 번에 64개 샘플 사용

ReLU (Rectified Linear Unit)

  • 음수면 0, 양수면 그대로 출력
  • 딥러닝에서 가장 널리 사용됨

Bias

  • 절편 역할, 기울기만으로 표현 못하는 경우 조정 가능

Backpropagation & Gradient

Upstream Gradient

  • 역전파 과정에서 이전 레이어로부터 전달받은 기울기

CNN 핵심 개념

Sparse Interaction

  • 입력 전체가 아닌 일부(Local)만 보고 연산
  • 연산 효율성, 파라미터 감소

Parameter Sharing

  • 동일한 필터(가중치)를 입력 전체에 반복 적용
  • 파라미터 수 감소

Equivariant Representation

  • 입력이 이동하면 출력도 동일하게 이동
  • CNN은 translation equivariant

Pooling

  • 대표값을 뽑아 특성 맵 크기를 줄이는 작업 (예: max pooling)

학습 이슈

Underfitting

  • 너무 단순해 아무것도 못 맞추는 상태

Overfitting

  • 학습 데이터에 과도하게 맞춰서 새로운 데이터에 약한 상태

Convolution Operation

Stride

  • 필터가 이동하는 간격
  • 큰 stride → 출력 크기 작아짐

Zero Padding

  • 출력 크기를 맞추기 위해 주변에 0을 추가하는 기법

Batch Normalization

  • 배치 안의 값들을 평균 0, 분산 1로 정규화
  • 학습 안정화, 속도 향상

모델 구조

VGG

  • 대부분 3×3 필터 반복 사용
  • 단순한 구조로 깊은 네트워크 설계 가능

ResNet

  • Skip Connection(Residual)을 통해 깊은 네트워크도 학습 가능
  • 입력을 중간 레이어를 건너뛰어 다음 레이어로 더함

Object Detection 핵심 개념

Precision & Recall

  • Precision: 내가 찾은 것 중 맞은 비율
  • Recall: 실제 중에서 내가 맞춘 비율
  • 평가 지표: Precision-Recall Curve의 넓이(AP)

Confidence Score

  • 해당 박스 안에 특정 클래스가 있을 확률 (0~1)

IoU (Intersection over Union)

  • 예측 박스와 실제 박스가 얼마나 겹치는지 나타내는 값 (0~1)

NMS (Non-Maximum Suppression)

  • 겹치는 박스 중 Confidence가 가장 높은 것만 남기고 나머지를 제거
  • IoU가 특정 임계값 이상이면 같은 객체로 판단하고 중복 제거
  • 같은 물체에 대해 여러 박스가 예측되었을 때 중복 제거 목적
  • 모든 박스 중 하나만 남기는 것이 아니라, 중복되는 것만 제거

Anchor Box

  • 다양한 크기와 비율의 객체를 탐지하기 위해 미리 정해놓은 기준 박스
  • 예측 박스와 anchor box의 IoU를 비교해 가장 유사한 anchor에 할당
  • 모델은 각 anchor box마다 벡터(클래스, 위치, confidence 등)를 예측함