
가장 기본적인 인공 신경망으로, 그 형태는 확률적 경사하강법을 사용하는 로지스틱 회귀와 매우 유사하다. 인공신경망은 보다 높은 성능을 가진 새로운 종류의 머신러닝 알고리즘일 뿐, 정말 우리 뇌에 있는 뉴런과 같지 않다는 것을 항상 인지해야한다.
입력층: x값, 픽셀값 그 자체이고 특별한 계산수행 없이 원시 데이터를 받아 전달만 한다.
은닉층: 입력층과 출력층 사이에 있는 모든 층으로, 입력값에 가중치를 곱하고 비선형 함수(활성화 함수)를 적용해 특징을 추출한다.
출력층: z값을 계산하고 이를 바탕으로 클래스 예측하여 신경망의 최종 결과를 만든다.
cf) 밀집층(Dense Layer): 모든 뉴런이 앞층의 뉴런과 연결된 구조
ANN은 단일 신경망으로, Dense가 하나로 구성되어있으며, 다층 신경망은 Dense가 여러 개인 신경망이다.
Dense: 신경망의 밀집층(fully connected layer)을 만드는 클래스로, 각 뉴런이 이전 층의 모든 뉴런과 연결되며,activation 매개변수로 활성화 함수를 지정할 수 있다.Sequential(): 순차적으로 층을 쌓는 모델. 신경망 모델을 만드는 클래스로, 객체 생성 시 신경망 모델에 추가할 층을 지정할 수 있다. 1개 이상일 경우, 리스트의 형태 [] 로 전달한다.dropout: 모델이 과대적합되지 않도록 일부 뉴런을 랜덤하게 끄는(출력=0) 정규화 기법이다.Early Stopping: 모델 훈련 중에 자동으로 특정 동작을 수행하게 해주는 도구인 call back 의 클래스 중 하나로, 검증 성능이 더 이상 좋아지지 않으면 훈련을 중단하여 과대적합을 줄여준다.optimizer)손실함수를 최소화하기 위해 모델의 가중치를 조정하는 알고리즘
| 이름 | 특징 |
|---|---|
SGD (Stochastic Gradient Descent) | 기본적인 옵티마이저. 단순하지만 느릴 수 있음 |
Momentum | 이전 단계의 이동을 고려해 속도를 붙임 |
RMSprop | 학습률을 개별 파라미터마다 조절 |
Adam | 가장 많이 쓰임. 빠르고 안정적 |
Adagrad / Adadelta | 희귀 특성 학습에 유리함 |

뉴런의 선형 방정식 결과에 적용되는 함수로, 선형을 비선형으로 바꿔서 신경망이 곡선적인 분리/예측을 가능케 하고 더 복잡한 문제를 해결할 수 있도록 도와준다. 용도에 맞게 골라 써야한다.
어떻게 복잡한 문제를 해결하느냐?
→ ReLU : 입력이 양수일 경우, 활성화 함수가 없는 것처럼 그냥 입력을 통과시키고 음수일 경우 0으로 만든다
→ sigmoid : 입력값을 0과 1 사이로 변환해서 확률처럼 해석이 가능하다(양수는 1에 가깝고, 음수는 0에 가깝다)
→ softmax : 여러 출력값들을 확률분포처럼 바꿔서 전체 합이 1이 되도록 조정한다
두 그래프가 비슷하게 낮게 유지되면(=두 그래프가 같을 때), 모델의 일반화 능력(=성능)이 좋다고 할 수 있다.
두 그래프의 간격이 과적합을 의미해서 차이가 적을수록 과적합이 없다
⇒ 간격이 좁고, 그래프가 낮다

도장 찍어내듯이 출력(특징)이 하나씩 생겨나는 신경망 구조로 도장의 크기, 즉 커널(kernel)의 크기는 하이퍼 파라미터로서 우리가 지정해줘야한다. 입력의 배열 차원과 커널의 차원이 동일해야한다.
여러 가중치들로 계산된 필터(커널)들이 있고, 각 필터별로 나온 출력값들을 모은 것이다. 이 하나의 출력 행렬을 특징맵(feature maps)이라고 한다.
CNN은 여러 개의 필터를 사용하므로, 여러 개의 출력 행렬이 생기는 것이다. 그 여러 feature map을 쌓은 것이 합성곱 층의 출력이다.

노란색이 필터 = 도장 / 빨간 x1,x0 글씨는 가중치(w)
전 은닉층의 뉴런 개수 x 출력층의 뉴런 개수 만큼 가중치의 개수가 생긴다. 인공신경망의 개념
합성: 출력층의 개수가 정해지면 그 전 은닉층에서의 가중치 개수가 정해짐
| 층 이름 | 역할 요약 |
|---|---|
Conv2D | 이미지를 스캔하며 특징(패턴)을 뽑음 (모서리, 선, 윤곽 등) |
| → 필터를 이미지에 돋보기(🔍) 처럼 움직이며 적용(특정 모양을 응시) | |
MaxPool2D | 추출한 특징 중 가장 중요한 것만 남기고 크기를 줄임 |
| → 이미지에서 가장 강한 특징만 출력하는 역할 |
[입력 이미지]
↓ Conv2D
[특징맵] ← 가장자리, 윤곽선, 패턴 등
↓ MaxPool2D
[축소된 특징맵] ← 정보는 유지하되 크기는 절반
No. 일반적인 패턴이긴 하지만 항상 붙여다녀야하는 건 아니다.
| 패턴 | 설명 | 예시 |
|---|---|---|
Conv → MaxPool | 가장 일반적인 구조 | 간단한 CNN |
Conv → Conv → MaxPool | 더 많은 특징 추출 후 축소 | VGG |
Conv(stride=2) | 풀링 없이 직접 축소 | ResNet 등 |
Conv만 연속 | 임시적으로 특징 추출만 | 성능 조정 목적 |
https://colab.research.google.com/drive/1P9NCB3MQX5QrCf93VHYfPGa0R1V4qD1y?usp=sharing
01 - https://colab.research.google.com/drive/1P9NCB3MQX5QrCf93VHYfPGa0R1V4qD1y?usp=drive_link
02 - https://colab.research.google.com/drive/1Mu5kBwfkfCIRRQ3nvOF4a3wMaz5Cmebz?usp=drive_link
03 - https://colab.research.google.com/drive/1gpLfy1YFGLyHNLdaA1zVnFN4iPCC4kuo?usp=sharing