내가 하고싶은 건 다 하는 공간
혼자 만들면서 공부하는 딥러닝 1-2 합성곱 신경망(CNN) 모델 이해하기 본문
최초의 CNN 모델: LeNet
LeNet의 구조를 직접 그려보았는데 틀린 부분이 있을 수도 있어요.. 직접 수기로 그려보니까 풀링, 패딩 등의 개념이 더 확실히 이해되고 좋네요:)
인공 신경망 ANN Artificial Neural Network
입력층, 은닉층, 출력층을 거쳐 데이터를 처리합니다. 합성곱 신경망보다 간단한 분류 작업 및 예측에 활용됩니다.
사람의 신경망 구조를 본따서 만든 기계학습 알고리즘으로, 신호나 값을 받고(Input) 그 수치가 임계값을 넘어서면 특정 결과를 내뱉습니다(Output).
단점으로는 1) 학습시간이 오래 걸린다. 2) 과적합 Overfitting이 발생한다 3) 최적 파라미터 찾기가 어렵다 - 3가지가 있습니다.
합성곱 신경망 CNN Convolutional Neural Network
인공 신경망의 한계를 극복하고, 주로 이미지를 다루는 작업(예. 얼굴 인식, 이미지 분석, 공간적 데이터)에 활용됩니다.
합성곱 신경망에서는 하나의 기본 계산 단위를 커널 Kernel 혹은 필터 Filter라고 합니다. (보통은 뉴런 Neuron 혹은 유닛 Unit이라고 부릅니다.)
이미지 Input Image - 합성곱층 Convolutional Layer - 풀링층 Pooling Layer - 밀집층 (=완전 연결층) Dense Layer - 결과 도출 Output
1. 합성곱층 Convolutional Layer
합성곱층은 필터와의 합성곱 연산을 통해 만들어집니다. 이미지의 일부(3*3)과 필터(3*3) 사이의 합성곱이 일어나면 같은 위치에 있는 원소끼리 곱하고, 그 곱한 결과를 모두 더해서 새로운 합성곱층 Convolutional Layer의 한 원소가 됩니다.
곱셈과 덧셈만 알면 정말 쉬운 ‘합성곱'
합성곱 연산은 CNN의 핵심원리라고 할 만큼 중요하다. 그런데, 합성곱은 곱셈과 덧셈만 이용하면 되는 매우 단순한 작업이다. 그림과 함께 보면 합성곱 연산을 쉽게 이해 할 수 있을 것이다. 아래
ardino.tistory.com
합성곱 계산하는 방식은 위의 글을 참고했습니다.
합성곱층 Convolutional Layer를 한 번 거칠 때마다 "이미지 데이터를 압축한다"라고 봐도 무방합니다. 합성곱층 Convolutional Layer을 겹겹이 쌓으면 하나의 커널 Kernel이 더 넓은 영역의 상관관계를 표현합니다. 위 그림을 보면 Layer1에서 3*3 부분이 Layer 1에서는 하나의 커널 Kernel로 표현되고 있습니다.
그렇게 여러 필터와의 합성곱 연산을 통해 만들어진 특성맵들을 이용해서 풀링 Pooling을 진행하게 됩니다.
2. 풀링층 Pooling Layer
풀링 Pooling을 통해 특성맵을 다운샘플링해서 특성 맵의 크기를 축소합니다. 즉, 텐서의 높이와 너비를 줄이면서 픽셀값을 압축합니다. 이는 처리 속도를 높이고 모델이 더 중요한 패턴에 집중하도록 만들기 위함입니다.
풀링 Pooling 방식으로는 최댓값을 뽑아내는 최대 풀링 Max Pooling, 평균값을 뽑아내는 평균 풀링 Mean Pooling 등 다양한 종류가 있습니다. 합성곱 연산은 행렬 연산이지만 풀링은 단순히 특정 구역에서의 최댓값 혹은 평균값을 이용한다는 점에서 차이가 있습니다. 입력 텐서 위를 지나다니면서 평균값/최댓값을 도출하는 사각 영역을 풀링 윈도 Pooling Window 라고 합니다.k
이렇게 풀링을 통해 특성의 개수를 줄입니다. 즉 과대적합을 방지하는 효과가 있습니다.
3. 밀집층 Dense Layer (=완전 연결층)
이렇게 합성곱 연산과 풀링 연산을 반복해서 만들어진 3차원 데이터를 1차원 벡터로 변환하는 과정이 필요합니다.
1차원 벡터로 변환된 벡터를 분류기 Classifier에 전달해서 최종적으로 클래스를 예측(예. 이 사진이 고양이(0)인지 강아지(1)인지)합니다.
입력 이미지
↓
[Conv → ReLU → Pooling] ← 여러 번 반복
↓
Flatten
↓
Fully Connected Layer(s)
↓
Softmax (예측 확률)
↓
출력 (예: "고양이"일 확률 92%)
따라서 CNN의 전체적인 과정은 이렇습니다.
ANN vs CNN
ANN은 이미지 데이터(2차원 배열)을 1차원 배열로 만든 다음에 연산을 수행하기 때문에 1차원 데이터의 상관관계를 추출합니다.
CNN은 합성곱층 Convolutional Layer가 이미지 위에서 필터를 옆으로 슬라이딩하면서 합성곱 연산을 진행하기 때문에 이미지의 공간적 상관관계를 추출합니다. 고양이 사진이 있을 때, "두 눈 사이에 코가 있다", "눈 위에 귀가 있다" 등등이 공간적 상관관계입니다.
참고
[AI/ML] CNN에서 Convolutional layer의 개념과 의미 | 컨볼루션 신경망 | 합성곱 신경망
딥러닝에서 CNN (Convolutional Neural Network) 은 주로 이미지를 분석하는 데 가장 일반적으로 사용하는 ANN (Artificial Neural Network) 이다. 물론 요즘은 트랜스포머 기반의 네트워크를 많이 사용하지만 CNN
mvje.tistory.com
CNN에서 pooling이란?
* 20.12.22. update, 블로그 옮겼습니다. 공교롭게도 이 블로그를 시작하자마자 취직을 해서 글을 이어쓸 수 없었네요. 이제라도 다시 시작하려고 합니다.
hobinjeong.medium.com
분명 학부 때 수업으로 두 번 들은 내용인데 졸업하고 책으로 혼자 공부하면서 더 이해가 잘 되는 것 같습니다.. 여러 번 들어서 이해가 잘 되는 것일까 공부방식의 문제였을까..
'인공지능' 카테고리의 다른 글
혼자 만들면서 공부하는 딥러닝 1-2 합성곱 신경망(CNN) 모델 이해하기: 풀링층과 밀집층 (1) | 2025.07.05 |
---|---|
혼자 만들면서 공부하는 딥러닝 1-2 합성곱 신경망(CNN) 모델 이해하기: 합성곱층 Conv2D (1) | 2025.07.05 |
혼자 만들면서 공부하는 딥러닝 1-1 딥러닝 개발환경 구축하기 (0) | 2025.07.05 |
혼공학습단 13기 활동 회고 (0) | 2025.02.23 |
[혼공머신] 7-3. 신경망 모델 훈련 (0) | 2025.02.23 |