본문 바로가기

Programming/Deep Learning

딥러닝 겉핥기 with pytorch - 합성곱신경망

본 글은 "딥러닝 파이토치 교과서" 책을 겉핥으면서 개인 공부 목적으로 작성되었습니다.

 

왜 합성곱층이 필요한가?

순전파-역전파 과정에서 계산 과정이 복잡하고 많은 자원을 잡아먹음.
이미지 전체를 한 번에 계산하는 것이 아니라 이미지의 국소적 부분을 계산함으로써 시간과 자원을 절약하여 이미지의 세밀한 부분 분석
2D 이미지의 공간적 구조를 무시하는 문제점 해결

합성곱 신경망 구조

입력층(Input layer)
Height * Width * Channel의 3차원 입력 데이터

합성곱층
입력 데이터에서 특성을 추출하는 역할 수행
입력 이미지에 필터/커널을 통해 모든 영역을 훑으면서 특성 맵(feature map) 추출.
필터는 주로 3*3, 5*5로 잡으며 스트라이드(stride)를 통해 간격만큼 이동하면서 이미지를 분석.
필터의 채널 수는 입력 데이터와 동일하게 맞춰줘야 함
하이퍼파라미터: 필터개수 K, 필터크기 F, 스트라이드 S, 패딩 P
출력 데이터: (W-F+2P)/S+1 * (H-F+2P)/S+1 * K

풀링층
특성맵의 차원을 다운샘플링하여 연산량을 감소시키는 역할과 주요 특성 벡터 추출역할을 함
최대풀링: 대상영역 최댓값 추출
평균풀링: 대상영역 평균값 반환
평균풀링은 중요 가중치 값의 특성이 희미해질 수 있기에 최대풀링을 많이 활용함.

완전연결층
3차원 벡터를 1차원 벡터로 펼쳐주게 됨

출력층
소프트 맥스 활성화함수 주로 활용