본문 바로가기
머신러닝

머신러닝(Machine Learning) 15장 - ConvNet(Convolutional Neural Network) -

by ChocoPeanut 2017. 6. 2.

머신러닝(Machine Learning) 15

- ConvNet(Convolutional Neural Network) -

 

Neural Network를 구성하는 방식은 여러 가지로 나눌 수 있다. 일렬로 regression을 나열할 수도 있고 입력 값을 여러 개를 받은 후 이를 모아서 다른 결과 값으로 나타나게 하는 방식이 있을 수 있다. 전자의 경우 앞에서 계속 배웠던 모델의 형태이고 후자의 경우는 이번에 학습할 ConvNet이라고 할 수 있다. ConvNet의 경우 처음에 고양이 실험으로부터 고안되었다. 고양이가 모니터 화면에서 움직이는 막대를 보는데 특정 부분에 따라 인식하는 뉴런이 다르다는 결론이 나왔다. 따라서 여러 개의 입력 값을 다르게 받아서 전체의 막대를 인식하는 것이다.



처음 특정 이미지가 있다고 가정을 해보자. 여기서정 단위의 부위를 filter로 생각하여 그 부위만 읽는 부분을 만들게 된다. 그래서 결과를 하나의 숫자로 나타나게 만든다. 이 때 사용하는 방법은 앞에서도 많이 사용한 Wx + b라는 식을 사용하게 된다. 여기서 W의 값이 filter를 해주는 값이라고 할 수 있다. 여기에 ReLU의 식을 넣어서 계산을 할 수 있다. filter를 이미지의 모든 부위에 사용시켜 각각에 대한 데이터를 뽑아내게 된다. 그러면 각각의 부위에서 뽑아낸 데이터로 새로운 데이터가 만들어지는데 처음의 이미지보다는 크기가 작은 이미지의 형태가 만들어질 것이다. 그런데 filter를 하나만 사용하는 것이 아니라 처음의 이미지에서 다른 weight 값을 가지는 filter를 사용하여 다른 이미지 결과를 만들 수 있다. 이런 과정을 반복하여 conv layer를 만들어서 보내게 된다.




ConvNet의 형태는 위의 과정과 같은 filter를 사용하는 방법과 그 사이에 ReLU를 통해 결과를 내보내는 과정, 그리고 POOL이라는 과정으로 구성된다. Pooling이라는 것은 간단하게 sampling이라고 할 수 있다. 우리가 filterReLU를 사용하여 conv layer를 만들어 냈는데 여기서 하나의 layer에서 한 부분씩을 뽑아내어 Pooling이라는 방법을 통해 resize하여 더 작은 이미지로 바꾼 뒤 새로운 layer를 만들어 낸다. 그 중 가장 많이 사용되는 방법이 MAX Pooling인데 각 filter에 걸리는 부분에서 최댓값을 골라서 그 값으로 이미지의 크기를 줄이는 것이다.



다시 정리를 해보게 되면 처음부터 생각해보자. 차에 대한 이미지를 인식하는 과정을 생각해보자. 먼저 CONV를 통해 이미지를 filter로 거르게 된다. 이 거르는 과정에서 ReLU의 계산을 사용하여 다른 결과의 이미지를 생성하게 된다. 그 후 중간 중간에 Pooling이라는 방법을 통해 이미지의 크기를 축소시키게 되는데 이 때도 하나의 filter를 사용하고 이 filter의 경우 MAX Pooling이면 최댓값을 선정하여 새로운 이미지를 만들게 된다. 마지막으로 FC(Fully connected layer)로 기존의 softmax regression의 방법과 같은 방식을 사용하여 결론을 도출하게 된다.