[IBM AI course #2] Introduction to Deep Learning & Neural Networks with Keras
Convolutional Neural Networks (CNNs)
CNN?
CNN은 입력이 이미지일 것이라는 전제를 명시적으로 도입한 신경망 구조
기존의 fully connected neural network와 달리, 매우 적은 수의 파라미터로 효율적인 연산 가능
이미지 인식, 객체 탐지, 전반적인 컴퓨터 비전 분야에 사용됨

CNN의 구조 및 구성 요소
Input → Convolution → ReLU → Pooling → Flatten → Fully Connected → Output
Input Layer
흑백 이미지: n x m x 1
컬러 이미지: n x m x 3 (RGB 3채널)
Convolutional Layer
필터(Filter)로 구성됨
필터가 이미지 위를 슬라이딩하며 합성곱(convolution) 연산 수행 (작은 dot product를 반복) 한 결과를 feature map에 저장
추가로 ReLU 활성화 함수를 함께 적용하여 음수 제거, 비선형성 도입
→ 왜 이미지를 그냥 1차 벡터로 flatten 해서 Fully Connected Layer에 넣지 않고, 굳이 Convolution을 쓰는가?
- Flatten하면 너무 많은 파라미터가 생긴다. 100x100 이미지 = 10,000개의 입력 노드. Fully Connected Layer를 쓰면 이 모든 픽셀과 다음 층의 모든 노드가 연결됨
- 파라미터 수가 많아질수록 모델은 복잡해지고, 훈련 데이터에 과적합(overfitting)되기 쉬워진다.
- flatten하면 공간 구조를 모두 잃게 된다. 테두리, 모서리 등의 특징을 잃게 된다.
Pooling Layer
공간 차원 축소
- Max Pooling: 각 영역의 최대값만 유지. 특징 보존력이 강해서(물체의 위치가 조금 바뀌어도 인식 가능) 실제로 Average 보다 많이 쓰임.
- Average Pooling: 각 영역의 평균값 유지
Fully Connected Layer (Dense Layer)
CNN의 마지막 단계
Flatten 후 모든 노드 연결
출력층에서 문제에 따라 노드 수 결정 (예: 10클래스 → 노드 10개)
Softmax 활성화 함수로 확률 출력
# create model
model = Sequential()
model.add(Input(shape=(28, 28, 1)))
model.add(Conv2D(16, (5, 5), strides=(1, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
# compile model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Recurrent Neural Networks (RNNs)
RNN?
기존 신경망은 각 데이터 포인트를 독립적으로 처리하기 때문에, 예를 들어 영상 장면 분석과 같이 순차적 연관성이 있는 데이터에 적합하지 않다.
이런 문제를 해결하기 위해, RNN은 이전 단계의 출력을 다음 입력의 일부로 활용하였다.
RNN은 주로 텍스트, 유전자 서열(genomes), 필기체, 주식시장 데이터 등에 활용된다.

RNN 구조 및 작동 방식
RNN은 loop(순환 구조)를 가진 신경망
각 시점 t에서 입력 x_t를 받고, 이전 출력 a_{t-1}, 이전 출력에 대한 가중치 w_{t-1,t}도 함께 입력으로 사용
이 구조 덕분에 시간적(temporal) 패턴과 순서 정보를 학습할 수 있음
LSTM (Long Short-Term Memory)
RNN의 한 종류로 장기 의존성 문제(long-term dependency) 해결
이미지 생성, 필기체 생성, 자동 이미지 캡셔닝, 영상 설명 생성 등에 주로 사용
'🥇 certification logbook' 카테고리의 다른 글
| [Coursera/IBM course #3] Advanced Keras (0) | 2025.05.21 |
|---|---|
| [Coursera/IBM] Deep Learning & Neural Networks with Keras 코스 소개 (2) | 2025.05.18 |
| [Coursera/IBM course #2] Using Pretrained Models & Fine-Tuning (0) | 2025.05.18 |
| [Coursera/IBM course #2] Transformers & Autoencoders (1) | 2025.05.18 |
| [Coursera/IBM course #2] Deep Learning Libraries & Keras Models (1) | 2025.05.17 |
| [Coursera/IBM course #2] Backpropagation & Vanishing Gradient & Activation Functions (0) | 2025.05.11 |
| [Coursera/IBM course #2] Gradient Descent (0) | 2025.05.11 |
| [Coursera/IBM course #2] Neurons and Neural Networks & Artificial Neural Networks (0) | 2025.05.10 |