해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.
이미지가 입력으로 들어왔을 때 Fully Connected한 신경망은 모든 노드를 활성화 시켜서 이미지를 보려고 한다.
하지만 CNN은 위치별 특징(패턴) 을 Convolution을 통해 찾는다. 즉, 패턴을 통해 이미지가 무엇인지 알아내는 것이다. (인간처럼..)
CNN은 스캔하듯이 같은 weight와 bias를 가지는 kernel (filter)이라는 스캔기로 입력 데이터를 쭉 스캔한다.
위 과정은 가까이 있는 데이터들만 connection하여 하나의 노드를 구성하는 과정을 반복하게 되는데,
이를 통해 위치 정보를 유지할 수 있게 된다. (새롭게 태어난 노드는 그 구역의 담당 일진 느낌..)
그렇다면 convolution이 어떻게 특징을 추출하는 것일까?
위 사진과 같은 filter를 가졌을 때, convolution을 거치면 filter의 weight와 그 구역의 weight가 비슷할 때는 convolution 값이 커지고, 비슷하지 않다면 작아진다.
즉, filter의 weight와 같은 특징을 가지는게 어디에 얼만큼 있는지를 표현할 수 있다.
만약 여러 개의 필터를 사용해서 내가 원하는 특징을 뽑았다면, 이는 깊이로 쌓아서 첫번째 필터를 거친 정보, 두번째 필터를 거친 정보... 이렇게 위치 정보를 유지한 채로 나타낼 수 있다. 이것을 feature map이라고 부른다.
filter에서 사용되는 weight와 bias는 AI가 알아내야 하는 학습 파라미터이다.
'AI' 카테고리의 다른 글
VGGnet (0) | 2024.09.12 |
---|---|
Padding, Stride, Pooling (0) | 2024.09.11 |
Regularization (Overfitting 방지 방법) (0) | 2024.09.10 |
Overfitting 방지를 위한 Dropout (1) | 2024.09.09 |
Overfitting, Data augmentation (0) | 2024.09.09 |