거의 알고리즘 일기장

CNN (합성곱 신경망) 본문

딥러닝

CNN (합성곱 신경망)

건우권 2020. 10. 3. 02:51

CNN의 필요성

이론적으로는 ANN으로도 모든 함수를 근사할 수 있다고 알고있지만, 이미지 데이터에 직접 이용해보면 성능이 좋지 않다.

그 이유는 밑의 그림을 보면 이해가 빠를것이다.

https://e2eml.school/how_convolutional_neural_networks_work.html

사람이 보기에는 그냥 x와 기울어진 x이지만 컴퓨터에게는 전혀 다른 input이다. 그러므로 만약에 기울어지지 않은 x의 데이터만 학습한 모델은 오른쪽과 같이 기울어진 x는 판별하기 힘들것이다. 이처럼 기본적인 ANN은 변형된 데이터에 약하다.

 

사실 왼쪽과 오른쪽의 이미지의 특징은 비슷하다. 밑의 그림을 보면 알수 있다.

 

https://e2eml.school/how_convolutional_neural_networks_work.html

그래서 나온게 CNN이다. 사람처럼 이런 변형된 x라도 이러한 이미지의 특징을 뽑아 훈련시켜 판별할 수 있게끔 하는 신경망이다.


CNN의 연산 과정

https://e2eml.school/how_convolutional_neural_networks_work.html

위의 그림이 정말 잘 설명해둔 그림이다. 왼쪽의 입력 이미지가운데의 필터가 왼쪽 위부터 지나가면서 오른쪽의 특징을 뽑은것이다.  


Padding과 Pooling

 

Padding

 

쉽게 생각하면 Padding은 필터의 사이즈나 스트라이드에 따라 특징을 뽑을 이미지가 계속 줄어들수있으므로 이를 방지하기 위해 이미지를 층으로 감싸는것이다.

Padding이미지 http://taewan.kim/post/cnn/

 

Pooling 

 

이건 이미지의 사이즈를 줄어들게 한다고 생각하면 된다. 밑의 그림 참고하면 간단하게 이해가 가능하다.

https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/


MNIST CNN예제

유명한 MNIST예제이다. 밑의 git링크 참고. pytorch로 짰음.

github.com/Kwonkunkun/DeepLearning/blob/main/CNN%20MNIST.ipynb

 

Kwonkunkun/DeepLearning

딥러닝 연습. Contribute to Kwonkunkun/DeepLearning development by creating an account on GitHub.

github.com


e2eml.school/how_convolutional_neural_networks_work.html

 

https://e2eml.school/how_convolutional_neural_networks_work.html

Find the rest of the How Neural Networks Work video series in this free online course. slides         pdf [2MB]         ppt [6MB] in French by Charles Crouspeyre in Japanese in Simplified Mandarin by Jimmy Lin in Traditional Mandarin by Jimmy Lin i

e2eml.school

위의 링크는 영어자료지만 CNN을 알기에 좋은자료인것 같아 참고하길 바란다.


'파이토치 첫걸음' 참고함.

반응형

'딥러닝' 카테고리의 다른 글

ANN (인공신경망)  (0) 2020.10.02
선형회귀분석  (0) 2020.10.02
CT사진에서 폐사진만 가져오기!!  (0) 2020.09.29
Comments