안녕하세요, 럽미네이비입니다.
이번에도 저번 포스팅과 같이 제가 공부한 내용을 복습하는 시간을 가져볼 건데요.
저번 시간에서는 머신 러닝 중, 군집화에 대해서 설명하는 포스팅을 썼었죠. 기본 알고리즘인 K-Means와 엘보우 방법에 대해서 알아보았었는데요. 이번에는 딥러닝 중 합성곱 신경망(CNN)에 대한 설명을 적어볼까 합니다.
TIL 챌린지 2주 차, 딥러닝 - 합성곱 연산 (CNN)
이 개념에 대해 알아보기 전, 딥러닝이 무엇인가부터 설명해 볼까 하는데요. 딥러닝이란 머신러닝 기술 중 하나로, 깊은 인공신경망 알고리즘을 활용하는 것을 말합니다. 사람으로 비유하자면 뇌의 신경망 구조에 해당한다고 볼 수 있을 텐데요. 인공지능이 다양한 데이터를 학습하기 위해 이것을 모방했다고 볼 수 있겠습니다. 주로 이미지나 위치를 추적하는 등, 정형화되어 있지 않은 데이터들을 처리하는 데 많이 쓰이는 편입니다. 물론 표 데이터와 같이 정형화된 정보도 처리할 수 있으나, 대다수의 경우 이미지를 학습할 적에 많이 쓰이는 편이라고 합니다.
그중에서 합성곱 연산이라고 하는 것은 이미지 처리에 사용되는 딥러닝 모델인데요. 어떤 사진이나 그림을 컴퓨터에 학습할 적에 해당 이미지의 특성을 파악하고, 그것을 추출해 분류할 수 있도록 해주는 작업이라 할 수 있겠습니다.
합성곱 연산(CNN)의 기본적인 순서는 다음과 같은데요.
이미지 입력 → 합성곱 계층 → 활성화 함수 → 풀링(pooling) 계층 → Flatten → 완전 연결 계층 → 활성화 함수 → 출력 계층 (최종 활성화 함수 포함)
다소 어렵게 느끼실 수도 있지만, 하나씩 살펴보면 그렇게 어려운 과정은 아니라고 할 수 있어요. 우선 인공지능이 학습할 이미지를 골라 입력하면, 해당 이미지에 어떤 특징이 있는지 추출하는 과정을 거칩니다 (합성곱 계층). 그 특징을 심도 있게 학습하기 위해 중요한 부분의 표현력을 높이고, 불필요한 정보는 없애는 작업을 한 뒤 (활성화 함수), 만들어진 데이터의 양을 압축해 위치 변화에 대한 불변성을 주고, 노이즈를 줄이 조치를 취하는 작업을 하게 됩니다 (풀링 계층). 여기서 중요한 점이 하나 있는데요. 원활한 딥러닝 학습을 위해서는 위의 과정을 충분히 반복하는 것이 중요하다는 점입니다. 그래야 딥러닝을 진행할 적에 인공지능이 해당 이미지를 쉽게 인식하고, 새로운 이미지가 들어왔을 적에 이전의 것과 잘 분류할 수 있기 때문이죠.
이러한 과정을 거쳐 충분히 특징을 뽑아냈다면 이후에는 이 데이터를 한 줄로 나열해 (1차원적인 배열) 출력하기 좋도록 세팅을 합니다 (Flatten). 그렇게 나열한 데이터를 이제 본격적으로 학습하게 되죠. (완전 연결 계층). 학습이 끝나도 비선형성을 추가해 이 이미지가 무엇인지 판단을 내리면 (활성화 함수), 이제 최종 예측값을 특정 형태로 변환하고 결과를 출력하면 (출력 계층-최종 활성화 함수) 딥러닝 작업은 마무리됩니다.
이 과정을 mnist dataset이라는 숫자 그림 이미지를 활용해서 간단히 실습해 보겠습니다.
mnist dataset을 활용한 실습
우선, 해당 이미지를 부르는 것부터 시작해야겠죠? 구글 코랩에서 필요한 라이브러리와 모듈을 호출해, 이미지 데이터를 다운받아보겠습니다.
이렇게 다운로드된 mnist dataset은 28픽셀의 2차원 이미지인 것을 확인할 수 있는데요. 여기서 CNN 딥러닝을 하기 위해선 3차원으로 전환시킬 필요가 있습니다. 때문에 전처리 과정을 거쳐 2차원 이미지를 3차원으로 바꾸는 작업을 진행했죠.
이후, normalization 과정을 거쳐, 학습용과 평가용 픽셀값을 모두 0과 1 사이의 숫자로 나타나도록 전처리 과정을 거쳤습니다.
CNN 작업이 용이하도록 전처리를 마친 이후, 본격적인 딥러닝 공정을 진행했는데요. 머신러닝 때와 같이 학습용과 검증용으로 데이터를 나눈 다음, CNN 모델을 이용해 이미지를 학습시켜 보았습니다. 이때 썼던 합성곱 연산은 Conv2D이며, 활성화 함수는 ReLU, 풀링 계층 함수는 Maxpool2D를 사용했습니다.
CNN 모델 생성 후 구조 확인
위와 같은 과정을 거쳐 학습시켰다면 이제는 모델이 제대로 만들어졌는지 확인해 보아야 하겠죠? 구조를 확인하는 함수인 summary를 이용하여 시각화해 보았습니다.
여기까지 딥러닝 CNN을 활용해서 이미지를 학습하는 모델을 만드는 과정이었습니다. 다소 서툴러도 여기까지 왔다는 점이 저에게 있어서 고무적인 발전이라 생각하는데요. 혹시 잘못된 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 이상 럽미네이비였습니다. 감사합니다!
'일상' 카테고리의 다른 글
[멀티캠퍼스] TIL 챌린지 1주차, 데이터 분석 공부일지 (2) | 2025.06.03 |
---|---|
안동 산불로 보는 산불 예방의 중요성 (0) | 2025.03.26 |
꽃 덕후가 엄선한 국내 꽃 축제 여행지 추천 #벚꽃여행 #국내꽃축제 (0) | 2025.03.18 |
미세먼지 철벽 방어! 미세먼지 막는 법/ 미세먼지 대처하는 법 (1) | 2025.02.14 |
혼자 떠나기 좋은 해외 여행지 추천! 25년 2월 기준 (6) | 2025.02.05 |