본문 바로가기

Convolutional Neural Network 본문

Python/machine learning

Convolutional Neural Network

Data to Knowledge 2020. 8. 11. 18:51

인공 지능(AI: Artificial Intelligence)은 인간과 기계의 능력 사이의 격차를 해소하는 데 있어 기념비적으로 기여하고 있습니다. 인공지능을 통해서 기계가 인간처럼 세상을 보고 비슷한 방식으로 인식하고 이미지 및 비디오 인식, 이미지 분석 및 분류, 미디어 재생, 추천 시스템과 같은 다양한 작업에 인공지능이 이용됩니다.

오늘은 인간의 뇌의 시각 피질과 유사한 구조를 가진 합성곱 신경망 (Convolutional Neural Network)에 대해 알아보도록 하겠습니다.

ConvNet / CNN (Convolutional Neural Network)은 입력 이미지를 가져와 이미지의 다양한 측면 / 객체에 중요도(학습 가능한 가중치 및 편향)를 할당하고 서로 구별 할 수 있는 딥 러닝 알고리즘입니다. ConvNet에 필요한 전처리는 다른 분류 알고리즘에 비해 훨씬 낮습니다. 원시 방법에서 필터는 충분한 교육을 통해 수작업으로 설계되었지만 ConvNet은 이러한 필터 / 특성을 학습 할 수 있습니다.

ConvNet의 아키텍처는 인간 두뇌에 있는 뉴런의 연결 패턴과 유사하며 Visual Cortex의 조직에서 영감을 받았습니다. CNN은 거의 합성곱층과 함께 풀링층이 사용됩니다. 합성곱층에서 하는 일은 입력데이터를 이용하여 정보를 축약합니다. 풀링층에서는 합성곱층의  최종 이미지를 분류하는 일을 합니다. CNN은 기본적으로 합성곱층과 풀링층으로 구성되어 있습니다.

[그림1] 합성층과 풀링층

[source] Iuliana Tabian et al.(2019), A Convolutional Neural Network for Impact Detection and Characterization of Complex Composite Structures, Sensors 201919(22), 4933; https://doi.org/10.3390/s19224933

 풀링층에서는 특징 맵의 부분 구간의 최대값(Max Pooling)을 갖거나 평균(Average Pooling)을 취하여 데이터의 압축을 실행합니다.

 [그림2] Max Pooling

 Max Pooling이 제대로 이루어지면 특징맵으로 변환이 됩니다. 뉴런의 출력층에 대해서는 class 분류를 위하여 마지막 단계에서 출력값에 대한 정규화를 해주는 함수인 softmax 함수를 사용합니다. softmax의 특징은 결과물의 수치의 합은 언제나 1.0이라는 점입니다.

 

[자료] https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

'Python > machine learning' 카테고리의 다른 글

scikit-learn Machine Learning in Python  (0) 2020.08.11
독립성분분석(ICA)  (0) 2020.01.28
Comments