Skip to content
PART 6 · 32장

신경망 실전

TensorFlow Playground 따라하기

이론에서 실전으로

31장에서 뉴런과 경사하강법을 이해했습니다. 뉴런 하나가 직선을 긋고, 은닉층을 추가하면 곡선 경계가 가능해진다는 것까지 확인했습니다.

이제 직접 신경망을 설계하고 훈련시킵니다. 은닉층 수, 뉴런 수, 활성화 함수, 학습률 -- 이 네 가지 선택이 결과를 어떻게 바꾸는지 실시간으로 관찰합니다.

핵심 메시지는 하나입니다. 은닉층을 늘리면 복잡한 패턴을 학습할 수 있지만, 과적합 위험도 커진다. 드롭아웃과 배치 정규화가 이를 방지합니다.

신경망 설계의 네 가지 선택

신경망을 만들 때 결정해야 하는 핵심 요소를 정리합니다. 각 선택이 학습 결과에 미치는 영향을 이해하는 것이 이 장의 목표입니다.

은닉층 수 (Depth)

층이 깊을수록 더 추상적인 특징을 단계적으로 학습합니다. 1층은 단순 곡선, 2층은 영역, 3층은 복잡한 섬 모양까지 표현합니다.

뉴런 수 (Width)

뉴런이 많을수록 각 층의 표현력이 풍부해집니다. 그러나 불필요하게 많으면 훈련 데이터를 암기하여 과적합이 발생합니다.

활성화 함수

ReLU: 빠르고 안정적, 대부분의 기본 선택. Sigmoid: 0~1 출력, 깊은 네트워크에서 기울기 소실. Tanh: -1~1, Sigmoid보다 중심이 0에 가까워 약간 유리.

학습률 (Learning Rate)

너무 작으면 학습이 지나치게 느리고, 너무 크면 손실이 발산합니다. 적절한 학습률은 데이터와 네트워크 구조에 따라 달라집니다.

비유: 조직 설계 -- 은닉층은 중간 관리자
은닉층은 회사의 중간 관리자입니다. 입력(현장 데이터)을 가공하여 출력(경영진 보고서)에 전달합니다. 사원(입력층)이 보고한 원시 정보를 팀장(1층)이 정리하고, 부장(2층)이 요약하고, 이사(3층)가 핵심만 추려 사장(출력층)에게 전달합니다. 뉴런은 각 계층의 인원 수입니다. 계층이 많으면 정보가 더 추상적으로 정제되지만 전달이 느려지고, 인원이 많으면 다양한 관점을 얻지만 의사결정이 복잡해집니다. 활성화 함수는 각 직원의 판단 방식이고, 학습률은 조직의 변화 속도입니다.

실습 1: 미니 TensorFlow Playground

2D 분류 데이터셋을 선택하고, 네트워크 구조를 직접 설계한 뒤 "훈련 시작" 버튼을 누르세요. 캔버스에 결정 경계가 실시간으로 변화하고, 손실 곡선이 그려집니다.

0.030

결정 경계

손실 곡선

에포크
0
손실
-
정확도
-
파라미터 수
-
실험 과제: (1) XOR 데이터에서 은닉층 1개, 뉴런 2개로 시작하세요. 100%가 되지 않을 수 있습니다. (2) 뉴런을 4개로 늘려보세요. 경계가 복잡해지면서 정확도가 올라갑니다. (3) 나선형 데이터를 선택하세요. 은닉층 2개, 뉴런 6개 이상이 필요합니다. (4) 활성화 함수를 바꿔가며 수렴 속도를 비교하세요.
관찰 포인트: 같은 데이터라도 ReLU는 각진 경계, Sigmoid는 부드러운 경계를 만듭니다. 나선형처럼 복잡한 패턴은 깊고 넓은 네트워크가 필요합니다. 그러나 너무 크면 훈련 데이터에 과적합됩니다 -- 이 문제는 실습 3에서 다룹니다.

깊이 vs 너비: 어떤 네트워크가 더 나은가?

같은 수의 뉴런을 가지고 있어도, 배치 방식에 따라 성능이 달라집니다. 예를 들어 뉴런 12개를 한 층에 모두 넣는 것(1x12)과 세 층에 나누는 것(3x4)은 전혀 다른 결과를 냅니다.

깊은 네트워크의 장점: 각 층이 이전 층의 출력을 추상화합니다. 첫 번째 층은 선분, 두 번째 층은 도형, 세 번째 층은 패턴을 인식하는 식입니다. 이러한 계층적 표현 학습이 딥러닝의 핵심 아이디어입니다.
깊은 네트워크의 위험: 층이 깊어질수록 기울기가 소실되거나 폭발할 수 있습니다. 학습이 불안정해지고, 같은 데이터에 대해서도 수렴이 보장되지 않습니다. 실무에서는 잔차 연결(Residual Connection), 배치 정규화 등으로 이를 완화합니다.

실습 2: 깊이 실험 -- 같은 뉴런, 다른 구조

동일한 데이터셋에서 총 뉴런 수를 고정한 채, 1층/2층/3층 구조의 손실 곡선을 비교합니다. "비교 실행" 버튼을 누르면 세 네트워크가 동시에 학습을 시작합니다.

손실 곡선 비교

1층 최종 정확도
-
2층 최종 정확도
-
3층 최종 정확도
-

1개 은닉층

2개 은닉층

3개 은닉층

핵심 관찰: 나선형 데이터에서 1층은 한계가 뚜렷합니다. 2층은 대부분의 패턴을 잡아내고, 3층은 더 세밀하지만 학습이 불안정할 수 있습니다. 깊다고 무조건 좋은 것이 아니라, 문제의 복잡도에 맞는 깊이를 선택해야 합니다.

과적합: 시험 문제를 외우면 실전에서 망한다

네트워크가 충분히 크면 훈련 데이터를 100% 맞출 수 있습니다. 하지만 새로운 데이터(테스트 데이터)에서는 성능이 급락합니다. 이것이 과적합(overfitting)입니다.

비유: 기출문제만 외운 학생
기출문제 답을 모조리 외운 학생은 같은 시험지에서는 만점을 받지만, 문제가 조금만 바뀌면 전혀 풀지 못합니다. 반면, 개념을 이해한 학생은 기출에서 98점이라도 새 문제에서 90점을 받습니다. 우리는 후자를 원합니다.
드롭아웃 (Dropout):
훈련 중 각 뉴런을 확률 p로 무작위 비활성화
특정 뉴런에 의존하지 않도록 강제하여 일반화 성능을 높인다
쉽게 말하면 -- 랜덤으로 일부 팀원을 쉬게 하기: 회사에서 핵심 인력 한두 명에게 모든 업무가 집중되면, 그 사람이 빠지는 순간 조직이 마비됩니다. 드롭아웃은 훈련 중 랜덤으로 일부 뉴런을 "오늘은 쉬세요"라고 비활성화합니다. 나머지 뉴런들이 빈 자리를 채워야 하므로, 특정 뉴런에 과도하게 의존하지 않는 튼튼한 네트워크가 만들어집니다. 팀원 몇 명이 없어도 돌아가는 조직이 튼튼한 조직입니다.
배치 정규화 (Batch Normalization):
각 층의 출력값을 미니배치 단위로 평균 0, 분산 1로 정규화합니다. 학습이 안정되고, 더 높은 학습률을 사용할 수 있으며, 일종의 정규화 효과도 있습니다.

실습 3: 드롭아웃 효과 비교

동일한 네트워크를 드롭아웃 있이/없이 학습시킵니다. 훈련 정확도와 테스트 정확도의 차이(과적합 갭)를 비교하세요. 드롭아웃 없이는 훈련 정확도가 매우 높지만 테스트 정확도와 큰 격차가 벌어집니다.

0.30

정확도 곡선 비교

드롭아웃 OFF: 훈련
-
드롭아웃 OFF: 테스트
-
드롭아웃 ON: 훈련
-
드롭아웃 ON: 테스트
-
직접 해보기: (1) 뉴런 16, 드롭아웃 0으로 실행하세요. 과적합 갭이 크게 벌어집니다. (2) 드롭아웃 0.3으로 다시 실행하세요. 갭이 줄어드는 것을 확인하세요. (3) 드롭아웃 0.7로 올려보세요. 너무 많이 꺼뜨리면 학습 자체가 어려워집니다.
드롭아웃의 핵심: 드롭아웃은 앙상블의 효과를 냅니다. 매 훈련 단계마다 다른 부분 네트워크가 활성화되므로, 수많은 작은 네트워크의 평균 예측을 사용하는 것과 유사한 효과가 있습니다. 테스트 시에는 드롭아웃을 끄고 모든 뉴런을 사용합니다.

실습 4: 학습률 탐색기

세 가지 학습률(너무 작은/적절한/너무 큰)로 동시에 학습을 진행합니다. 슬라이더로 "적절한" 학습률을 직접 조정하면서, 각각의 손실 곡선이 어떻게 달라지는지 비교하세요.

학습률 탐색이 중요한 이유: 학습률은 신경망 훈련에서 가장 먼저 조정해야 하는 하이퍼파라미터입니다. 아무리 좋은 네트워크 구조를 설계하더라도 학습률이 잘못되면 학습이 실패합니다. 너무 작으면 합리적인 시간 안에 수렴하지 못하고, 너무 크면 손실이 발산하여 아예 학습이 되지 않습니다. 실무에서는 로그 스케일(0.0001, 0.001, 0.01, 0.1)로 탐색하는 것이 일반적입니다.
0.0005 0.032 0.800

손실 곡선 비교 (로그 스케일)

너무 작은: 최종 손실
-
적절: 최종 손실
-
너무 큰: 최종 손실
-
세 가지 시나리오: 너무 작은 학습률 -- 손실이 매우 천천히 줄어듭니다. 수백 에포크가 지나도 최적점에 도달하지 못합니다. 적절한 학습률 -- 빠르고 안정적으로 수렴합니다. 너무 큰 학습률 -- 처음에는 빠르게 줄다가 곧 진동하거나 발산합니다.
실험 과제: 슬라이더를 조절하여 "적절한" 학습률의 범위를 찾아보세요. 로그 스케일에서 대략 0.01~0.1 사이가 최적인 경우가 많습니다. 실무에서는 이 범위를 자동으로 찾아주는 "학습률 스케줄러"를 사용합니다.

신경망 설계 실전 가이드

선택 항목기본 권장주의점
활성화 함수ReLU (은닉), Sigmoid/Softmax (출력)깊은 네트워크에서 Sigmoid 은닉층은 기울기 소실 위험
은닉층 수1~3개로 시작더 깊으면 잔차 연결 필요
학습률0.001 ~ 0.01Adam 옵티마이저 사용 시 0.001 추천
드롭아웃0.2 ~ 0.5입력층에도 적용 가능 (0.1~0.2)
배치 크기32 ~ 256작을수록 노이즈가 크지만 일반화에 유리
실무에서의 신경망 학습 과정:
(1) 작은 네트워크로 시작하여 과소적합 확인 (2) 네트워크를 키워서 훈련 손실이 충분히 줄어드는지 확인 (3) 과적합이 나타나면 드롭아웃, 정규화, 조기 종료(early stopping) 적용 (4) 학습률 스케줄링으로 미세 조정 이 순서를 "진단적 접근법"이라 합니다.
이 장의 핵심
  • 은닉층을 늘리면 더 복잡한 패턴을 학습할 수 있지만 과적합 위험이 커진다.
  • 활성화 함수(ReLU, Sigmoid, Tanh)는 결정 경계의 형태와 학습 안정성에 영향을 준다.
  • 학습률이 너무 작으면 느리고, 너무 크면 발산한다. 로그 스케일로 탐색한다.
  • 드롭아웃은 훈련 중 뉴런을 무작위로 비활성화하여 과적합을 방지한다.
  • 네트워크 설계는 "작게 시작 -> 키우기 -> 정규화"의 진단적 접근이 효과적이다.

다음 장 예고: 신경망은 표 형태의 데이터뿐 아니라 이미지도 처리할 수 있습니다. 다음 장에서는 이미지를 인식하는 특수한 신경망, CNN(합성곱 신경망)을 배웁니다.