윤희

[호붕싸 모각코 12차] Lecture 07. Convolutional Networks

y_unique 2025. 5. 23. 21:10
작성자 김윤희
소 감 CNN 리뷰를 진행하였다. 보다 쉬운 내용이라 후다닥 끝낼 수 있었고, 친구들과 이야기하며 하니 재미있었다.
일 시 2025. 5. 23. (금) 18:00 ~ 21:00
장 소 미래관 429호 자율주행스튜디오
참가자 명단 신수민, 임혜진, 배세은, 김윤희 (총 4명)
사 진

 

 

 

 


  • fully connected 의 문제점
    • 이미지의 공간적 구조를 알 수 없음 → flatten 해버리니까
    • → 어떻게든 입력데이터의 구조를 활용하는 모델을 구축하는 것이 좋다
      • 입력데이터의 구조 → 이미지의 공간적 정보?
  • convolution layer
    • filter의 depth 는 항상 input image의 depth(channels)와 같아야함
    • input image와 fliter의 내적 곱을 통해 계산
    • 일반적으로 bias를 추가해
      • 입력이 0이거나 낮은 값일때도 활성화 될 수 있도록 하기 위함이래
    • activation map
      • 전체 input image가 해당 필터 중 하나에 반응하는 정도? → 공간구조
    • batch별로 처리 → N : batch 수
  • stacking convolutions
    • input image의 depth와 filter의 depth는 같아야하고
    • filter의 개수와 다음 layer의 input image의 depth가 같아야함
    • 문제점
      • 그냥 쌓으면 다른 필터를 사용했더라도 그 의미가 없어짐
      • → activation function을 사용하는 이유와 같징
  • what do convolutional fitlers learn?
    • 사실 첫번째 layer만 거치면 fully-connected로 학습한 것과 같음
    • 두번째 layer를 거치게되면 더 작은 크기의 local 정보를 학습하게 됨 → edge나 color 와 같은
  • spatial dimensions
    • filter 연산을 진행하면 각 layer를 지날때마다 shrink되는 문제
      • filter 크기에 따라서 특정 pixel 정보를 잃어버리게 되는거지
    • 그래서 padding이 등장 → 테두리 주위를 모두 0으로 채움
  • receptive fileld
    • 높은 해상도의 이미지를 갖고싶으면 많은 수의 conv를 쌓아 올려야한다.
    • input 관점
      • layer가 깊어질수록 receptive fileld가 커진다
    • previous layers 관점
      • layer가 깊어져도 똑같다.
    • 문제점
      • 큰 이미지, 예를 들어 1024 x 1024 사이즈의 이미지가 들어온다고 했을때 output이 전체 이미지를 볼 수 있도록 하려면 너무 많은 layer를 쌓아야 함.
        • layer를 많이 쌓는게 왜 문제가 되는데?
        1. gradient vanishing의 문제 → 쨋든 하나하나 거치면 0-1 사이로 될테고 그게 많이 연산되면 ..
        2. 비슷한 맥락이지만 차원의 저주? → 많이 쌓는다는건 고차원이니까 → sparse해짐
      → stride와 같은 downsampling으로 극복해
  • 1x1 convolution
    • input 채널을 압축하고 싶을때, 근데! spatial한 structure를 가지고 연산을 하고싶을 때 사용
      • spaital한 정보를 보존한다는 것이 fully connected와의 차이점
    • 그냥 독립적으로 작동하는 선형레이어로 볼 수 있음
    • NIN 구조
      • conv연산 다음에 MLP 2개를 추가한 구조인데,
      • 1x1 conv를 쌓으면 mlp 연산을 하는 것과 같은 효과를 얻는거지
  • Other types of convolution
    • 1D conv
      • 커널이 벡터 형태이며 입력을 따라 sliding 하는 구조
      • 따라서 텍스트나 오디오 등 순차적인 구조를 띄는 데이터 처리에 사용됨
    • 3D conv
      • 시공간적 데이터 분석에 사용되겠지?
  • pytorch convolution layer
    • 여러가지를 정의하면 pytorch에서 사용가능
    • dilation=1 → 커널 필터의 확장을 의미, 1이 default, 2라면 필터 내 요소들 사이에 간격이 추가되어 커널 확장 ⇒ 계산량 증가x, context 영역을 넓힘
    • groups=1 → 입출력 채널 사이의 연결방식? 1이면 완전연결상태(default)
    • 1이라면 입력 채널과 출력 채널이 그룹으로 나뉘어 부분적으로만 연결 (병렬화)
  • pooling
    • stride말고도 downsampling을 할 수 있는 방법
    • stride보다 선호되는 이유
      • pooling에서는 leanable parmeter가 없고, 약간의 spatial shift에도 invariance가 보장된다
    • max pooling
      • 중요한 특징을 강조하고 noise를 제거하는 효과가 있음
      • 위치에 대한 강건성 → spatial invariance, 작은 변형이나 이동에 대해 robust함