해당 시리즈에서는 데이터 사이언스 인터뷰 질문 모음집 에서 소개한 질문들에 대한 답변을 다룹니다.
궁금한 사항, 혹은 잘못된 내용 발견시 댓글 부탁드립니다.
CNN은 Convolutional Neural Network의 약자로 보통 Convolution Layer, Pooling Layer, Fully Connected Layer로 이루어져 있습니다. 이미지 분야에서 많이 사용됩니다.
CNN이 주로 사용되는 CV 분야에서 좋은 이유는 local connectivity를 들 수 있습니다.
이미지에서 픽셀간의 거리가 가까울수록 유의미한 관계를 가질텐데, CNN의 경우 kernel이 가까운 픽셀 사이의 정보를 더 많이 학습하도록 합니다. MLP의 경우에는 모든 픽셀이 서로 연결되어 불필요한 학습이 진행됩니다. 이러한 특성 덕분에, 파라미터 수는 더 적게 유지하면서 성능은 높일 수 있습니다.
CNN에서 파라미터는 크게 Conv layer와 FC layer로 나누어 생각할 수 있습니다. 일반적으로 FC layer가 Conv layer에 비해 더 많은 파라미터를 갖습니다.
Conv layer에서 예시를 들자면 아래와 같습니다.
kernel size: 7 by 7
input channel: 3
output channel: 64
이 때, 만큼의 파라미터가 존재합니다.
FC layer에는 아래와 같습니다.
이전 노드: n
현재 노드: m
이 때, 만큼의 파라미터가 존재합니다.
m 차원에서 n 차원으로의 MLP는
filter size가 m, input channel 1, output channel이 n인 CNN과 동일합니다.
반대의 임의의 CNN에 대해 MLP는 불가능할 것 같습니다.
Pooling에는 일반적으로 Average와 Max를 사용하는데, Max를 사용한다면 특징을 추출하기 용이합니다. 또한 Average Pooling에 비해 non-linearity를 높이는데도 유용하다고 생각됩니다. 반대로 Average를 사용한다면 특징보다는 전반적인 정보, 분포 등을 파악하는데 유리합니다.
1d CNN을 가지고 시퀀스 데이터에 적용이 가능합니다. 예를들어 1by3 filter를 사용한다면 3개의 시간 step에 대한 데이터를 한번에 처리할 수 있게 됩니다.