티스토리 뷰
* 합성곱 계층(Convolutional Layer, Conv Layer)
- MLNN(Multi-Layer Neural Network )의 문제를 해결하고자 만들어진 것이 합성곱 계층
- 필기체나 MNIST 데이터 같은 이미지 데이터는 일반적으로 채널, 세로, 가로 이렇게 3차원으로 구성된 데이터
- Affine 계층에서는 이 3차원 데이터를 1차원 데이터(784=28*28)로 바꿔 입력했지만 합성곱에서는 3차원 데이터(1, 28, 28)를 입력하고 3차원의 데이터로 출력하므로 형상을 유지
- CNN에서는 이러한 입출력 데이터를 특징맵(Feautre Map)
(1) 합성곱 계층 – 연산
(2) 합성곱 계층 - 패딩(Padding)
- 패딩(Padding)은 합성곱 연산을 수행하기 전, 입력데이터 주변을 특정값으로 채워 늘리는 것을 말한다
- 패딩(Padding)은 주로 출력데이터의 공간적(Spatial)크기를 조절하기 위해 사용
- 패딩을 할 때, 채울 값은 hyperparameter로 어떤 값을 채울지 결정할 수 있다. 주로 zero-padding
Dd
사용한p다.
- 패딩을 사용하는 이유는 패딩을 사용하지 않을 경우, 데이터의 Spatial 크기는 Conv Layer를 지날 때 마다 작아지게 되므로, 가장자리의 정보들이 사라지는 문제가 발생하기 때문에 패딩을 사용한다
(3) 합성곱 계층 - 스트라이드(Stride)
- 스트라이드(Stride)는 입력데이터에 필터를 적용할 때 이동할 간격을 조절하는 것, 즉 필터가 이동할 간격을 말한다
- 스트라이드(Stride) 또한 출력 데이터의 크기를 조절하기 위해 사용한다
- 스트라이드(Stride)는 보통 1과 같이 작은 값이 더 잘 작동하며, Stride가 1일 경우 입력 데이터의 spatial 크기는 pooling 계층에서만 조절하게 할 수 있다.
(4) 합성곱 계층 - 출력크기 계산
- 패딩(입력데이터 주변을 특정값으로 채워 늘리는 것)과 스트라이드(필터가 이동할 간격) 를 적용하고, 입력데이터와 필터의 크기가 주어졌을 때 출력 데이터의 크기를 구하는 식은 아래 식과 같다.
Ex) 패딩 1 스트라이드 1 일때의 출력데이터 크기를 구한 예제
- 출력크기가 정수가 아닌 경우에는 에러가 발생할 수 있는데, 보통 딥러닝 프레임워크에서는 반올림을 통해 에러없이 작동
(5) 풀링계층(Pooling Layer)
풀링계층은 합성곱 계층의 패딩과 스트라이드처럼 데이터의 공간적 크기를 축소하는데 사용
주로 합성곱 계층(Conv Layer)에서 출력데이터의 크기를 입력데이터의 크기 그대로 유지하고, 풀링계층(Pool 에서만 크기를 조절
6) 딥러닝
- 딥러닝 학습의 일반적인 절차
1. 적절한 네트워크 선택 1) 구조(structure) : Single words vs Bag of Words, etc. 2) 비선형성(nonlinearity) 획득 방법 : ReLu vs tanh, etc. 2. 그래디언트 체크 : 네트워크를 구축했는데 그래디언트 계산이 혹시 잘못될 염려가 있으므로 잘됐는지 체크해봅니다 3. 학습 파라메터 초기화 : 초기화 방법에도 여러가지가 있으므로 적절히 선택합니다 4. 학습 파라메터 최적화 : Stochastic Gradient vs Adam, etc. 5. 과적합 방지 : dropout vs regularize, etc. |
'인공지능 > 딥러닝' 카테고리의 다른 글
딥러닝(Deep Learning) - GAN (0) | 2019.10.18 |
---|---|
딥러닝(Deep Learning) - Variational Autoencoder (0) | 2019.10.18 |
[1] tensorflow - 헷갈리는것 shape 정리 (0) | 2019.09.11 |
[1] Machine learning basic (0) | 2019.09.05 |
[3] Keras Mnist CNN Regression (1) | 2019.09.05 |