-
1. CNN(Convolutional Neural Network)
합성곱 신경망은 데이터의 특징점을 추출하여 패턴을 파악하는 신경망이다. cnn은 이미지 처리를 위해서 탄생한 신경망으로 이미지 처리를 위해서 일반적인 이미지 입력값인 2차원 데이터를 1차원 데이터로 펼치면 픽셀 간의 관계성이 사라지고 픽셀의 고유한 값만 남기기 때문에 이미지의 패턴과 구조가 사라진다.
예를 들어 필기체 인식을 위해 16*16 사이즈의 이미지를 학습하기 위해서는 256개의 입력 유닛, 100개의 은닉 유닛, 26개의 출력 유닛으로 구성되며 3개의 층에서 필요한 가중치와 바이어스는 모두 28326개이다. 또한 기존의 이미지에서 1픽셀만 이동하거나 1도만 회전되어도 새로운 학습 데이터로 처리해야 한다. 즉 이미지 문제를 ann으로 진행하면 필요한 유닛과 시간, 조절해야 할 파라미터가 끝이 없고 그나마 정해진 데이터셋만 사용할 수 있다.
2. CNN의 구조
cnn은 이러한 문제점을 해결하기 위해 등장하였으며 학습 전에 추상화 과정, 데이터의 주요한 정보만을 추출하는 과정을 통해 학습의 효율성을 추구한다. cnn은 합성곱층, 풀링층, 완전 연결층으로 구성된다.
3. Convolution layer
합성곱층은 합성곱 연산을 통해서 입력 이미지에 대해서 특징을 추출하는 역할이다. 3*3, 5*5 등의 작은 크기를 가진 필터가 이미지 데이터의 처음부터 끝까지 돌아가면서 합성곱연산을 수행하여 값을 업데이트하고 활성화 함수를 적용한다. 합성곱 연산은 그림처럼 입력 데이터에 필터값을 각각 곱한 값을 모두 더하는 연산이다.
이미지에 대해서 합성곱연산을 진행하면서 필터가 이동하는 크기가 스트라이드이며 스트라이드값이 커질수록 필터가 이미지를 많이 건너뛰고 데이터 크기가 작아지고 계산량이 작아지지만 그만큼 정보 손실이 일어나 과적합이 발생할 수 있다.
합성곱 연산에서 가장자리의 픽셀들은 중앙 부분의 픽셀보다 연산이 적게 이루어지므로 이를 보정하기 위해 패딩을 사용한다. 패딩은 입력 데이터 주변을 추가적인 값으로 둘러싸는 기법이며 패딩값을 적용하지 않는 valid padding, 0으로 감싸는 zero padding, 입력 데이터와 출력 데이터의 크기를 같게 만들기 위한 same padding 등이 있다.
4. Pooling layer
풀링 층에서는 공간적인 크기를 줄이고 추상화된 특징을 유지한다. 즉 이미지를 압축한다. 일반적으로 최대 풀링과 평균 풀링이 가장 많이 사용되며 최대 풀링은 입력 데이터를 영역을 나눠서 가장 큰 출력만 선택하는 방법이고 평균 풀링은 평균을 계산하여 선택하는 방법이다. 풀링 역시 계산 비용을 줄이지만 정보 손실이 발생한다.
풀링 층의 사용은 유용할 수 있지만 풀링 층을 여러 번 쌓으면 그 수만큼 풀링의 계산 비용 또한 증가하기 때문에 스트라이드의 값을 더욱 크게 조절하거나 dilated convolution, traposed convolution 등 다양한 컨볼루션 기법들을 사용하는 방법으로 대체할 수 있다.
5. Fully connected layer(fc)
dense layer라고도 하며 완전연결층의 역할은 2차원 행렬을 1차원 행렬로 펼치는 것이다. 입력에 대해서 가중치를 곱하여 활성화 함수를 적용하고 역전파를 통해서 학습하여 해당 학습의 목적에 따라 분류 등의 작업을 진행한다.
'딥러닝' 카테고리의 다른 글
딥러닝- 최적화 (0) 2023.05.23 딥러닝- 손실함수 (0) 2023.05.23 딥러닝 - 활성화함수 (0) 2023.05.23 딥러닝 (0) 2023.05.21