dev-logs
7. CNN 본문
CNN 구조
- 합성곱 계층 convolutional layer 과 풀링 계층 pooling layer이 추가됨.
- Conv계층, 활성화함수, Pool계층 순으로 이루어짐. 마지막 계층은 Affine, softmax
완전연결 계층의 문제점
- Affine 계층은 완전연결 계층이다. 계층의 뉴런이 모두 연결되고 출력의 수를 임의로 정할 수 있다.
- 입력 데이터의 형상(차원)을 무시함.
- CNN은 데이터의 형상을 유지함. 이미지도 3차원 데이터로 입력받고, 다음 계층에도 3차원 데이터로 전달함.
- CNN 합성곱 계층의 입출력 데이터를 특징 맵 feature map 이라고 한다.
합성곱 연산 Convolution
- CNN에서는 필터의 매개변수가 가중치에 해당한다. 편향도 존재할 수 있음. 편향은 항상 1X1로 존재하고, 모든 원소에 똑같이 더해진다.
패딩 Padding
- 주로 출력 크기를 조정하기 위해 사용. 일반적으로 패딩 없이 합성곱 연산을 하면 출력 크기가 작아지는데, 신경망에서는 여러번의 연산을 필요로 하기 때문에. (4x4 에 3x3 필터를 적용하면 출력이 2x2가 됨.)
스트라이드 Stride
- 필터가 이동하는 간격.
- stride를 키우면 출력이 작아짐.
- 출력 크기를 구하는 공식
3차원 데이터의 합성곱 연산
- 각 채널의 convolution 결과를 더해서 하나의 차원 데이터로 출력함.
- 입력 채널수와 필터의 채널 수가 같아야 함.
- 3차원을 표기할 때는 (채널x높이x너비) 로 표기한다.
- (C, H, W) * (C, FH, FW) -> (1, OH, OW)
- 필터를 FN개(가중치 역할) 사용하면 (C, H, W) * (FN, C, FH, FW) -> (FN, 1, OH, OW)
풀링계층
- 세로, 가로 방향의 공간을 줄이는 연산
- 윈도우에서 가장 큰값이 결과값이 됨. (최대 풀링 max pooling)
- 일반적으로 풀링의 윈도우 크기는 스트라이드와 같게 설정함.
- 채널 수가 변하지 않음.
- 입력 변화에 강건하다.
- Forward: ①전개(im2col) ②최대값 추출 ③reshape 순서로 구현.
im2col 함수
- 4차원 데이터를 2차원 행렬로 변환(필터링 편의성↑)
출처: 밑바닥부터 시작하는 딥러닝(한빛미디어)
'공부 > Deep Learning' 카테고리의 다른 글
8. 딥러닝 (0) | 2019.06.22 |
---|---|
6. 학습 관련 기술들 (0) | 2019.06.18 |
5. 오차역전파법 (0) | 2019.06.17 |
3. 신경망 학습 (0) | 2019.05.29 |
2. 손글씨 숫자 인식_1 (0) | 2019.05.28 |