본문 바로가기
학부생의학부연구생/_deep_learning

CNN이 뭐야?

by 호상 🐧 2022. 2. 3.
CNN이 뭐야? 

 

https://hunkim.github.io/ml/

 

모두를 위한 머신러닝/딥러닝 강의

 

hunkim.github.io

 

sungkim 교수님의 시즌 1 딥러닝 강의를 다 들었지만 여전히 CNN 과 RNN 이 이해가 되지 않아 블로그에 글을 작성하며 생각을 정리하고 이해 해 볼 생각이다. 

강의를 다듣고 난 생각은 그래서 CNN 이 뭐고 RNN 이 뭐야? 라는 의문이 들었다. 그래서 CNN과 RNN 부분의 강의를 여러번 다시 들어봤지만 더욱더 의문점이 늘어났고 몇일을 삽질해도 풀리지가 않았다. 

무지성으로 강의를 여러번 듣는다고 해결되지는 않는다는것을 2년간 학부생활로 알터인데.......

역시 사람은 같은 실수를 반복하나 보다....

 

각설하고 본 게시물은 비루한 학부생의 딥러닝 이해하기가 되겠다 😋


CNN 

 

먼저 CNN 의 개념을 살펴볼 필요가 있다. 

 

Convolutional Neural Networks

 

합성곱 신경망(Convolutional neural network, CNN)은 시각적 영상을 분석하는 데 사용되는 다층의 피드-포워드적인 인공신경망의 한 종류이다. 딥 러닝에서 심층 신경망으로 분류되며, 시각적 영상 분석에 주로 적용된다. 또한 공유 가중치 구조와 변환 불변성 특성에 기초하여 변이 불변 또는 공간 불변 인공 신경망 (SIANN)으로도 알려져 있다. 영상 및 동영상 인식, 추천 시스템, 영상 분류, 의료 영상 분석 및 자연어 처리 등에 응용된다.

 

딥 러닝 - 위키백과, 우리 모두의 백과사전

심층 학습(深層學習) 또는 딥 러닝(영어: deep structured learning, deep learning 또는 hierarchical learning)은 여러 비선형 변환기법의 조합을 통해 높은 수준의 추상화(abstractions, 다량의 데이터나 복잡한 자

ko.wikipedia.org

 

일단 위키백과에서 정의한 CNN에 대한 내용을 가져와 봤다. 어려운 내용은 쳐내고 집중해야 할 부분을 찾아보자면

 

1. 합성곱 신경망(Convolutional neural network, CNN)은 시각적 영상을 분석하는 데 사용

2. 딥러닝에서 심층 신경망으로 분류

3. 시각적 영상 분석에 주로 적용

4. 상 및 동영상 인식, 추천 시스템, 영상 분류, 의료 영상 분석 및 자연어 처리 등에 응용

 

위 내용들을 토대로 단적으로 보자면 딥러닝에서의 사용방법, 시각적 영상이나 이미지를 분석하는데 사용한다는 것을 알수 있다.

 

필자는 그저 왜 딥러닝과 CNN 을 따로 구분하지? 라는 고민을 해봤는데 따로 구분하는 것이 아니라 딥러닝을 할때 CNN 을 사용한다 라는 개념을 몰랐던 것이었다. 마치 빵을 만들때 밀가루를 사용하듯 말이다.

 

그렇다면 왜 CNN 을 사용해야 하는것일까?

 

why use CNN?

https://halfundecided.medium.com/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-cnn-convolutional-neural-networks-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-836869f88375

 

[딥러닝/머신러닝] CNN(Convolutional Neural Networks) 쉽게 이해하기

필자는 뉴욕에서 머신러닝 전공으로 석사학위 취득과정에 있습니다. 학교 수업을 듣고 실습 과제를 하며 항상 느끼는 점은 이 분야는 무엇보다도 튼튼한 이론지식이 중요하다는 것입니다. 물론

halfundecided.medium.com

 

왜 CNN 을 사용하는가에 대해 방대한 구글의 바다를 떠도는 중 나에게 한줌 이해의 시야를 넓혀준 블로그 글을 인용하겠다. 

 

그렇다면  CNN이라는 방법을 쓰기 시작했을까요? 이에 대한 은 일반 DNN(Deep Neural Network)의 문제점에서부터 출발합니다. 일반 DNN은 기본적으로 1차원 형태의 데이터를 사용합니다. 때문에 (예를들면 1028x1028같은 2차원 형태의)이미지가 입력값이 되는 경우, 이것을 flatten시켜서 한줄 데이터로 만들어야 하는데 이 과정에서 이미지의 공간적/지역적 정보(spatial/topological information)가 손실되게 됩니다. 또한 추상화과정 없이 바로 연산과정으로 넘어가 버리기 때문에 학습시간과 능률의 효율성이 저하됩니다.

이러한 문제점에서부터 고안한 해결책이 CNN입니다. CNN은 이미지를 날것(raw input) 그대로 받음으로써 공간적/지역적 정보를 유지한 채 특성(feature)들의 계층을 빌드업합니다. CNN의 중요 포인트는 이미지 전체보다는 부분을 보는 것, 그리고 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것입니다.

 

본문을 요약해보자면 DNN에 이미지가 입력되는 경우 데이터 손실이 발생하기 때문에 CNN을 사용하게 된다 라는 것이다.

 

그럼 어떤 과정을 거치기에 CNN을 사용한다면 데이터 손실을 방지한 채 NN 을 구성할 수 있을까?

 

CNN 은 어떻게 작동하는거야?

https://youngq.tistory.com/40

 

[딥러닝 CNN] 1. CNN이란?

CNN 기초정리 원래는 mnist 데이터를 다루려고 했는데, 그래도 CNN 기초정리는 해야겠어서 잠깐 살짝 다루고 넘어가겠습니다. 0. 시작 전에 CNN에 대해서 깊게 설명하려면 일단 기존 DNN의 개념부터

youngq.tistory.com

https://halfundecided.medium.com/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-cnn-convolutional-neural-networks-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-836869f88375

 

[딥러닝/머신러닝] CNN(Convolutional Neural Networks) 쉽게 이해하기

필자는 뉴욕에서 머신러닝 전공으로 석사학위 취득과정에 있습니다. 학교 수업을 듣고 실습 과제를 하며 항상 느끼는 점은 이 분야는 무엇보다도 튼튼한 이론지식이 중요하다는 것입니다. 물론

halfundecided.medium.com

 

사실 이 두 블로그에 적인 글을 통하여 깔끔하게 설명이 가능할것 같다. 학부 3년생인 나지만 생각보다 이해하기 쉬웠고, CNN 의 구조를 이해하는데 도움을 많이 주셨다고 생각한다. 

 

CNN 의 구조에 대한 설명을 위 두 블로그를 참고하면 될것같다. 본인이 공부한 내용이 생각이 나지 않거나 가물가물하다면 이 포스팅을 보고 다시 복습하는 시간을 갖길 바란다 미래의 나! 😸

 

 

포스팅을 마치며.....

역시 몇일 삽질하는것도 나쁘진 않지만 생각을 정리하고 무엇인가고민하고 다시 정리하는 과정이 필요하다는 것을 느낀다. 포스팅을 작성하며 잠깐 쉬는 시간에 석사분들에게 모르는것을 여쭈어 보는 시간을 가졌었는데 이 역시 도움이 많이 됬다. 시야가 트인다는 느낌을 오랜만에 느껴보는 시간이었다. 역시 모르는것은 그냥 삽질좀 하다가 여쭈어 보는게 답인가 싶다. 아직 갈길이 멀지만 천리길도 한걸음부터라고 하지 않는가. 열심히 해보자...! 😄

 

 

댓글