윤희
[호붕싸 모각코 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으로 채움
- filter 연산을 진행하면 각 layer를 지날때마다 shrink되는 문제
- receptive fileld
- 높은 해상도의 이미지를 갖고싶으면 많은 수의 conv를 쌓아 올려야한다.
- input 관점
- layer가 깊어질수록 receptive fileld가 커진다
- previous layers 관점
- layer가 깊어져도 똑같다.
- 문제점
- 큰 이미지, 예를 들어 1024 x 1024 사이즈의 이미지가 들어온다고 했을때 output이 전체 이미지를 볼 수 있도록 하려면 너무 많은 layer를 쌓아야 함.
- layer를 많이 쌓는게 왜 문제가 되는데?
- gradient vanishing의 문제 → 쨋든 하나하나 거치면 0-1 사이로 될테고 그게 많이 연산되면 ..
- 비슷한 맥락이지만 차원의 저주? → 많이 쌓는다는건 고차원이니까 → sparse해짐
- 큰 이미지, 예를 들어 1024 x 1024 사이즈의 이미지가 들어온다고 했을때 output이 전체 이미지를 볼 수 있도록 하려면 너무 많은 layer를 쌓아야 함.
- 1x1 convolution
- input 채널을 압축하고 싶을때, 근데! spatial한 structure를 가지고 연산을 하고싶을 때 사용
- spaital한 정보를 보존한다는 것이 fully connected와의 차이점
- 그냥 독립적으로 작동하는 선형레이어로 볼 수 있음
- NIN 구조
- conv연산 다음에 MLP 2개를 추가한 구조인데,
- 1x1 conv를 쌓으면 mlp 연산을 하는 것과 같은 효과를 얻는거지
- input 채널을 압축하고 싶을때, 근데! spatial한 structure를 가지고 연산을 하고싶을 때 사용
- Other types of convolution
- 1D conv
- 커널이 벡터 형태이며 입력을 따라 sliding 하는 구조
- 따라서 텍스트나 오디오 등 순차적인 구조를 띄는 데이터 처리에 사용됨
- 3D conv
- 시공간적 데이터 분석에 사용되겠지?
- 1D 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함