32일차는 딥러닝으로 넘어가면서, 기존 머신러닝과 무엇이 달라지는지 큰 흐름을 잡은 날이었다. 앞에서는 Y = f(X)에서 좋은 함수를 찾는다는 관점으로 머신러닝을 봤다면, 이번에는 그 함수 f를 인공신경망 구조로 만들고, 입력과 출력의 형태를 훨씬 자유롭게 설계할 수 있다는 점을 봤다.
특히 전통적인 머신러닝은 대부분 데이터를 2D matrix 형태로 맞춰야 했지만, 딥러닝은 이미지, 영상, 음성, 텍스트처럼 더 복잡한 입력과 출력을 다룰 수 있다는 점이 크게 달랐다. 물론 자유도가 커진 만큼 파라미터도 많아지고, 학습 시간과 비용도 커진다는 점도 같이 봤다.
1. AI, Machine Learning, Deep Learning의 관계
먼저 AI, ML, DL의 관계를 다시 정리했다. AI는 가장 큰 범주이고, 그 안에서 기계가 데이터로부터 규칙을 학습하는 방식이 Machine Learning이었다. Deep Learning은 그 머신러닝 안에서 인공신경망을 깊게 쌓아 복잡한 관계를 학습하는 방식으로 볼 수 있었다.
AI
= 문제를 인식하고 해결하는 지능을 구현하는 기술
Machine Learning
= 데이터를 기반으로 기계가 스스로 규칙을 학습하는 방법
Deep Learning
= 인공신경망을 이용해 복잡한 데이터 관계를 학습하는 머신러닝 기법
결국 딥러닝도 머신러닝의 한 종류라는 점은 같았다. 다만 기존 머신러닝보다 모델 구조의 자유도가 높고, 입력과 출력의 형태도 다양하게 설정할 수 있다는 점이 달랐다.
2. 딥러닝의 장점과 부담
딥러닝의 장점은 복잡한 함수를 잘 근사한다는 점이었다. 기존 머신러닝에서는 사람이 feature를 어느 정도 잘 만들어야 했다면, 딥러닝은 데이터 안에서 필요한 특징을 모델이 직접 학습할 수 있다. 이미지나 음성처럼 사람이 규칙을 직접 만들기 어려운 데이터에서 강한 이유도 여기에 있었다.
하지만 단점도 명확했다. 파라미터 수가 많아지기 때문에 학습 시간과 비용이 커지고, 좋은 데이터를 많이 확보해야 한다. 또 모델이 왜 그런 결과를 냈는지 해석하기 어렵다는 점도 있었다.
딥러닝의 장점
- 복잡한 비선형 관계를 잘 표현한다.
- 특징 추출을 모델이 함께 학습한다.
- 이미지, 음성, 텍스트처럼 복잡한 데이터에 강하다.
딥러닝의 부담
- 파라미터 수가 많다.
- 학습 시간과 비용이 크다.
- 해석이 어렵다.
- 좋은 데이터 확보가 중요하다.
이 부분은 “딥러닝이 무조건 좋다”가 아니라, 문제의 복잡도와 데이터 규모에 따라 선택해야 한다는 쪽으로 이해했다. 작은 정형 데이터라면 기존 머신러닝이 더 적합할 수도 있고, 이미지나 텍스트처럼 구조가 복잡한 데이터라면 딥러닝을 고려할 수 있다.
3. FNN은 가장 기본적인 신경망 구조였다
순방향 신경망, 즉 FNN은 가장 기본적인 신경망 구조였다. 입력이 들어오고, hidden layer를 거쳐, output layer로 나가는 한 방향 구조다. 피드백 구조 없이 앞에서 뒤로만 흐른다.
Input Layer
→ Hidden Layer
→ Output Layer
Input layer는 내가 가진 데이터의 형태에 따라 정해진다. 예를 들어 10개의 feature를 가진 데이터라면 input node도 10개가 필요하다. MNIST처럼 28×28 흑백 이미지라면, 단순 FNN에서는 이를 784개의 값으로 펼쳐 input layer에 넣을 수 있다.
Output layer는 문제의 목적에 따라 정해진다. 회귀 문제라면 값을 하나 내보내면 되고, 0부터 9까지 숫자를 분류하는 문제라면 10개의 output node가 필요하다.
입력층
= 데이터의 feature 개수에 맞춰 결정
출력층
= 내가 풀려는 문제의 목적에 맞춰 결정
은닉층
= 모델 설계자가 조정하는 영역
여기서 남은 건 input과 output은 어느 정도 문제에 의해 고정되지만, hidden layer는 설계의 영역이라는 점이었다. 몇 층을 쌓을지, 각 층에 node를 몇 개 둘지, 어떤 activation function을 쓸지는 실험과 경험이 필요하다.
4. Activation Function은 비선형성을 넣는 역할이었다
신경망에서 각 뉴런은 입력과 가중치의 선형결합을 계산한 뒤 activation function을 통과시킨다. 만약 activation function이 없으면 여러 층을 쌓아도 결국 선형결합의 반복에 가까워져 복잡한 관계를 표현하기 어렵다.
입력값
→ 가중치와 선형결합
→ Activation Function
→ 다음 Layer로 전달
초기에는 sigmoid 계열을 많이 사용했지만, 딥러닝에서는 ReLU 계열이 많이 쓰인다고 했다. sigmoid는 값이 양끝에서 포화되면서 gradient가 작아지는 문제가 있고, 지수함수 계산이 들어가서 연산 비용도 있다. 반면 ReLU는 0보다 작으면 0, 크면 그대로 내보내는 단순한 구조라 계산이 빠르다.
Sigmoid
= 0~1 사이로 값을 눌러줌
= gradient saturation 문제가 생길 수 있음
ReLU
= max(0, x)
= 계산이 빠르고 딥러닝에서 많이 사용됨
물론 ReLU도 음수 구간이 전부 0이 되면 학습이 멈출 수 있는 문제가 있다. 그래서 Leaky ReLU, ELU 같은 변형도 존재한다. 이 부분은 activation function도 단순 선택지가 아니라 모델 성능과 학습 안정성에 영향을 주는 요소라는 점이 남았다.
5. 학습은 결국 Loss를 줄이는 파라미터를 찾는 과정이었다
딥러닝도 결국 학습의 관점에서는 머신러닝과 같았다. 모델이 예측한 값과 실제값의 차이를 Loss Function으로 계산하고, 그 값을 줄이는 방향으로 파라미터를 업데이트한다.
모델 예측
→ Loss 계산
→ Gradient 계산
→ 파라미터 업데이트
문제는 신경망의 파라미터가 앞쪽 layer에 숨어 있다는 점이었다. Loss Function은 최종 output에서 계산되지만, 앞쪽 hidden layer의 weight도 이 loss에 영향을 준다. 그래서 chain rule을 이용해 뒤에서 앞으로 미분값을 전달해야 한다. 이것이 backpropagation이었다.
Backpropagation
= Loss에서 시작해
= output layer → hidden layer 방향으로
= 미분값을 역방향으로 전달하며
= 각 weight를 업데이트하는 과정
이전에는 backpropagation을 그냥 “딥러닝 학습 알고리즘”처럼 들었는데, 이번에는 chain rule을 이용해 합성함수의 미분을 역방향으로 계산하는 구조로 이해할 수 있었다.
6. Mini-batch는 학습 단위를 나누는 방식이었다
신경망을 학습할 때 전체 데이터를 한 번에 넣으면 메모리와 시간이 부담될 수 있다. 반대로 한 샘플씩 학습하면 경로가 너무 흔들릴 수 있다. 그래서 보통은 데이터를 작은 묶음으로 나눈 mini-batch 방식으로 학습한다.
Batch
= 전체 데이터를 한 번에 사용
Stochastic
= 한 샘플씩 사용
Mini-batch
= 일부 샘플 묶음 단위로 사용
mini-batch는 전체 batch보다 빠르고, 매번 조금씩 다른 데이터 묶음으로 학습하기 때문에 일반화에도 도움이 될 수 있다. 다만 batch size도 hyperparameter라서 적당한 값을 찾아야 한다.
이 부분은 실제로 딥러닝 코드에서 batch_size, epochs, iterations를 자주 보는 이유와 연결됐다. epoch는 전체 train data가 모델을 한 번 통과한 횟수이고, iteration은 한 epoch를 끝내기 위해 필요한 batch 업데이트 횟수였다.
7. CNN은 이미지의 공간 구조를 살리기 위한 구조였다
마지막으로 CNN의 기본 아이디어를 봤다. FNN에 이미지를 넣으려면 28×28 이미지를 784개의 1D 벡터로 펼쳐야 한다. 그런데 이렇게 하면 픽셀의 위아래, 좌우 관계가 약해진다. 이미지는 개별 픽셀보다 주변 픽셀과의 영역적 관계가 중요하기 때문에, CNN은 이 공간 구조를 살리기 위해 사용된다.
CNN에서 핵심은 Convolution Layer와 Pooling Layer였다. Convolution은 필터를 이미지 위에 움직이며 특정 패턴을 찾는 연산이다. 예전 이미지 처리에서 세로선, 가로선, edge를 찾기 위해 필터를 쓰던 것처럼, CNN에서는 이 필터의 값을 학습 가능한 weight로 본다.
Convolution Layer
= 필터를 이용해 이미지의 특징을 추출
Feature Map
= 필터를 적용한 결과
Pooling Layer
= 특징맵의 크기를 줄이고 대표값을 뽑음
Flatten Layer
= 추출된 특징을 1차원으로 펼쳐 Dense Layer에 전달
Pooling은 feature map을 그대로 쓰지 않고, 일정 영역을 대표값으로 줄이는 과정이었다. Max Pooling은 해당 영역에서 가장 큰 값을 뽑고, Average Pooling은 평균을 사용한다. 결국 CNN은 이미지에서 특징을 뽑고, 크기를 줄이고, 마지막에는 flatten해서 기존 신경망처럼 분류나 회귀 목적에 연결하는 구조로 이해됐다.
마무리
32일차는 딥러닝의 전체 구조를 처음으로 크게 잡은 날이었다. 딥러닝도 결국 Y = f(X)에서 좋은 함수를 찾는 머신러닝의 한 종류지만, 그 함수 f를 인공신경망 구조로 만들고, 입력과 출력의 형태를 더 유연하게 다룰 수 있다는 점이 달랐다.
FNN에서는 input layer와 output layer가 데이터와 목적에 의해 정해지고, hidden layer는 모델 설계의 영역이라는 점이 남았다. Activation function은 비선형성을 넣는 역할을 하고, backpropagation은 loss에서 시작해 미분값을 역방향으로 전달하는 학습 과정이었다.
CNN은 이미지 데이터를 단순히 1D로 펴는 대신, 필터와 convolution을 통해 공간적 특징을 추출하는 구조였다. 이미지에서는 픽셀 하나보다 주변 영역의 패턴이 중요하기 때문에, convolution과 pooling이 왜 필요한지 조금 더 연결해서 볼 수 있었다.
32일차는 딥러닝을 머신러닝의 확장으로 보고, FNN의 기본 구조와 CNN의 이미지 특징 추출 흐름을 처음 연결해서 이해한 날이었다.
'[SK플래닛] ASAC 빅데이터전문가 11기 > 학습기록' 카테고리의 다른 글
| [SK플래닛] ASAC 빅데이터전문가 11기 | 33일차 (0) | 2026.06.03 |
|---|---|
| [SK플래닛] ASAC 빅데이터전문가 11기 | 31일차 (3) | 2026.06.01 |
| [SK플래닛] ASAC 빅데이터전문가 11기 | 29일차 (0) | 2026.05.29 |
| [SK플래닛] ASAC 빅데이터전문가 11기 | 28일차 (0) | 2026.05.28 |
| [SK플래닛] ASAC 빅데이터전문가 11기 | 27일차 (0) | 2026.05.27 |
