본문 바로가기
카테고리 없음

elc11-1 ConvNet의 Conv 레이어 만들기

by OKOK 2018. 5. 6.

CNN에 대해서 적어보겠습니다. 예를 들어 입력을 받고, 연산을 앞으로 보내고 출력을 내는 것을 만들 수 있습니다. 전체가 연결되었다고 해서 Fully connected 라고도 불립니다. (forward). 그리고 입력이 여러 형태로 나눈 경우도 생각할 수 있습니다. 이것이 CNN의 기본형태로 생각하시면 됩니다.

CNN의 기본 아이디어는 고양이 실험에서 시작되었습니다. 고양이에게 어떤 형태의 그림을 보여주었더니. 그림을 읽어들이는 뉴런들이 동시에 동작하는 것이 아니라, 어떤 부분에 대해서만 동작한다는 것을 알게 되었습니다. 입력을 나누어 받는 것에 착안해서 이것을 수식화 하자고 해서 만든 것입니다.


conv 잘라서 넣는 것을 말합니다. 렐루를 넣고, 도 겹겹히 쌓습니다. 그리고 풀링도 하고 마지막으로 풀리 커넥티트 뉴럴 네트워크를 만들어 라벨링을 하는 것을 뒤에다 붙일 수 있게 됩니다. 소프트 맥스 클래스 파이어.


고양이 실험에서 처럼 이미지의 일부분만 처리하고 싶습니다. 필터라는 개념을 가지고 설명을 합니다. 곱의 합을 통해서 하나의 필터를 통해 하나의 값을 만들어 냅니다. 그리고 ReLU를 붙여주면 ReLu창이 생기게 되는 것입니다.

옆으로 넘기면서 각각 값들을 가져옵니다. 이런형태로 하나의 필터 전체 이미지를 훑습니다. 몇개의 값을 모을 수가 있을까요. 이 값들을 알아야 어떻게 넘길 수 있을까 설계를 하게 됩니다. 7 * 7 이면 5 * 5 의 출력물이 나오게 됩니다. 스트라이드의 크기가 1이다 하는것은 한칸 씩 이동한다는 뜻입니다. 스트라이드를 크게 할 수록 이미지가 작아집니다. 그럼 정보를 잃어버리게 됩니다. 그래서 패딩 개념이 들어갑니다. 한 가지 이유는 급격히 작아지는 것을 방지하는 것. 모서리라는 것을 네트워크에 알려주고 싶은 것 입니다.


7*7 -> 9*9 -> 7*7 로 다시 나오게 됩니다. Conv 를 해도 같은 사이즈의 이미자가 나온다는 것입니다. 그래서 이것이 패딩을 해서 원래 입력의 이미지와 출력 이미지 사이즈가 같도록 합니다. 필터를 6개를 동시에 적용시킵니다. 조금씩 다른 맵들이 존재합니다.

액티베이션 맵에 대해서 또 Conv, Relu 를 적용할 수 있습니다. 

웨잇에 사용되는 갯수는 몇개인가요. 5*5*3*6 입니다. 뒤에도 마찬가지 입니다. 이런 값들은 어떻게 정해질까요? 처음에는 초기화를 합니다 (랜덤하는 방법이 있습니다.) 그리고 가진 데이터로 학습을 하게 되는 것입니다.