[TIL] CNN과 전이학습

hyewon·2022년 1월 2일
0

TIL

목록 보기
45/59

CNN

CNN 쉽게 이해하기, CNN 요약 글과 수업 자료를 참고하여 작성했습니다.

CNN은 Convolutional Neural Network의 약자로 합성곱 신경망이라고 부르는 convolution 전처리 작업을 해주는 모델이다. 합성곱 신경망은 이미지 분류에서 많이 사용된다. CNN은 이미지의 일부분을 훑으면서 연산이 진행되고 특징을 잡아내 학습하기 때문에 층이 깊어지더라도 공간적 특성을 최대한 보존할 수 있다는 장점을 갖고 있다.

구조

CNN은 Input layer, Convolution layer, Pooling layer, Fully Connected layer로 나뉘어져 있다.

Convolution layer

Convolution layer는 입력 데이터로부터 특징을 추출하는 역할을 한다.

위의 이미지에서 주황색 부분이 filter 부분으로 filter를 이미지에 적용하는 방식이 바로 convolution이다. convolution은 필터를 일정한 간격으로 이동시키면서 연산을 한다. 이때 필터가 이동하는 간격을 바로 stride라고 하며 위의 이미지에서는 stride가 1인 것을 확인할 수 있다. 이렇게 나온 결과를 바로 feature map이라고 부른다.

zero padding

zero padding은 위의 이미지처럼 파란색의 이미지의 외부에 0으로 둘러싸주는 것을 말한다. feature map의 크기를 조절하고 실제 이미지 값을 충분히 활용하기 위해서 사용한다.



Pooling layer

Pooling은 차원을 축소를 수행하는 layer다.

Pooling에는 두가지 방법이 있는데 Max Pooling은 정해진 범위 내에서 가장 큰 값을 꺼내오고, Average Pooling은 정해진 범위 내에 있는 모든 값들의 평균을 가져오는 방식이다. 요즘에는 Average Pooling을 쓰면 특징이 스무스해져서 주로 Max를 쓴다고 들었다.

Pooling layer는 학습해야할 가중치가 없으며 채널의 수가 변하지 않는다는 특징을 가지고 있다.

채널?

보통 컬러 이미지는 red, blue, green 채널이 하나로 합쳐진 이미지이다. 때문에 입력 데이터로 컬러 이미지가 들어왔을 경우 다음과 같이 3개의 채널을 갖게 된다.

반면에 흑백 이미지가 들어왔을 경우 1개의 채널으로 구성이 된다.

그리고 채널은 오로지 색깔로만 분류하는 것이 아니라 보통 갖고 있는 특징 정보를 담고 있는 필터의 개수만큼 채널의 수가 나온다.
예를 들어서 체크무늬 셔츠 흑백 이미지가 있다고 하면 한개는 가로무늬 필터, 나머지 하나는 세로무늬 필터가 나오게 된다.





전이학습 (Transfer Learning)

전이학습은 대량의 데이터를 학습한 다음 사전 학습 모델의 가중치를 그대로 가져온 뒤 분류기(= 완전 연결 신경망 부분)만 추가로 설계해서 사용하는 것을 뜻한다.

사전 학습 모델의 가중치는 대량의 데이터를 학습해서 얻어지기 때문에 어떤 데이터를 넣더라고 좋은 성능을 보인다는 장점이 있다. 또한, 사전 학습 가중치는 학습되지 않도록 고정한채로 진행되기 때문에 빠르게 좋은 결과를 얻을 수 있다.

VGG

VGG는 2014년 ILSVRC 에서 우승을 거둔 모델로 층의 개수에 따라서 VGG13, VGG16, VGG19로 나뉘어져 있다.

VGG는 모든 합성곱 층에서 3X3의 필터를 사용하고, 활성화 함수로는 ReLU, 가중치의 초기값으로는 He 초기화를 사용한다. 또한 분류기 층에 Dropout을 사용해서 과적합을 방지한 모델이다.

GoogLeNet (Inception)

GoogleNet은 2015년 ILSVRC 에서 우승을 거둔 모델로 세로 방향 뿐만 아니라 가로 방향으로도 넓은 신경망층을 갖고 있다는 것이 특징이다. 이렇게 가로 방향으로 층을 넓게 구성한 것을 인셉션(Inception) 구조라고 한다.

ResNet

ResNet은 2016년에 ILSVRC에서 우승을 거둔 모델로 층을 넘어서 이어지는 화살표가 특징이다.

층을 넘어서 이어지는 화살표를 Residual Connection(=Skipped Connection)이라고 부르며 층을 거친 데이터의 출력에 층을 거치지 않고 넘어온 데이터를 더해주게 된다. 이러한 방법으로 층이 깊어짐에 따라 발생하는 기울기 소실 문제를 어느정도 해결할 수 있다.





이미지 증강

이미지 증강은 일반화가 잘 되는 모델을 만들기 위해서 학습 데이터셋에 있는 이미지를 일부러 회전하거나 기울이는 것을 말한다.
이미지 증강을 통해서 일반화가 잘 된 모델을 만들 수 있다.

profile
우당탕탕 코린이

0개의 댓글