CNN - Convolutional neural network
cnn 의 기본 개념은 여러 뉴런들이 각기 다른 신호를 위해 대기하고 있다는 점에서 착안되었다. 이를 인공신경망을 구축하여 컴퓨터 적으록 구현화 한 것이 cnn 학습이다.
주로 이미지 학습등의 복잡한 데이터 구조를 단순화 하여 특징을 뽑아 낼 때 주로 사용된다.
복잡한 데이터를 단순화 할 때에는 일종의 레이어(filter)를 응용하여 각 레이어별 특징을 뽑아낸다.

다음과 같은 경우를 해석하자면 wx+b 의 관계식을 이용하되, 5*5*3 의 레이어만 적용하여 하나의 값을 추출한다는 뜻이다.
5 - x / 5 - y / 3 - ( RGB )
움직 이는 기준 - stride
stride = 2 이면 2칸씩 레이어가 움직이며,
stride = 3 이면 3칸씩 레이어가 움직인다.

이 그림이 전체 레이어이며 3*3의 레이어 , stride = 1 이라면, padding 은 1 씩 설정된다. padding 은 해당 레이어가 끝이라는 것을 보여주는 일종의 지표 역할을 할 뿐만 아니라 , 움직이는 layer 의 범주를 벗어나지 않는 역할을 도와준다. 보통 stride 와 같은 깊이의 padding 이 설정된다.
이러한 레이어가 한번, 두번, 중복적으로 적용이 된다면 길지만 하나의 특정값을 가진 여러 레이어들이 하나의 줄로 만들어지게 된다.
이를 그림으로 상상해보면 ,

이다.
그렇다면 이 레이어들이 각자 어떠한 기준으로 특정값이 추출될까??

그러한 과정을 Pooling layer 라고 일컫는다.
작게 resizing 하는 것이라고 해석 가능하다.
알고리즘은 다음과 같다.

해당 grid 에서 2x2 로 작게 조각내여 그 조각 낸 grid 중 , mean 값을 뽑거나, max 값, min 값 등을 뽑아 해당 모든 그리드를 특정하는 특정값으로 해석한다.
그렇다면 2*2 가 2*2 번 되어 2*2 의 그리드로 변환되는데,

이와 같이 pooling 된다.
그렇다면 4*4 의 레이어가 2*2로 4개, 다시 2*2 레이어는 1*1 레이어로 4개가 나오며 특정값은 총 16개를 뽑아낼 수 있다.
이를 다시 Optimzer.minimize(cost) 를 통해 기계학습 시켜 각 계층의 f(x) = wx + b 의 값을 완성 시키는 것이 Convolutional neural network 이다.
'AI' 카테고리의 다른 글
Semi-supervised Active Learning for Semi-supervised Models: Exploit Adversarial Examples with Graph-based Virtual Labels (0) | 2023.01.17 |
---|---|
딥러닝 -03 Recurrent Neural Network (0) | 2020.04.04 |
딥러닝 01 - 기초 정리 XOR 문제 해결 과정 (3) | 2020.03.22 |
머신러닝 스터디 -04 코드정리 (1) | 2020.03.17 |
머신러닝 스터디 -03 Softmax Classification (0) | 2020.03.15 |
댓글