본문 바로가기
AI

딥러닝 -02 CNN 학습

by Wonryeol 2020. 3. 31.

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 하는 것이라고 해석 가능하다.

 

 

 

 

 

 

 

 

 

 

 

 

알고리즘은 다음과 같다.

 

max pooling / 2*2 filter / 2 stride 

해당 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 이다. 

 

 

댓글