신경망은 단순한 계산 단위(뉴런)를 층으로 쌓아, 직선 하나로는 나눌 수 없는 무늬도 배웁니다. 작은 신경망을 이 브라우저에서 학습시키며 뉴런과 층, 역전파, 학습이 흘러가는 모습, 합성곱을 봅니다.
뉴런은 입력의 가중합에 편향을 더하고, 그 결과를 활성 함수에 통과시킵니다. 뉴런 하나로는 곧은 경계밖에 못 그립니다. 뉴런 여러 개를 은닉층에 나란히 두고 층을 쌓으면, 곧은 조각들을 이어 굽은 선·고리·나선을 만들 수 있습니다. 비선형 활성 함수가 없으면 층을 아무리 쌓아도 곧은 선 하나와 같습니다.
작은 지도 하나가 같은 평면에서 뉴런 하나가 내는 값입니다. 뉴런마다 곧은 경계가 하나씩이고, 출력 뉴런이 이것들을 합칩니다.
뉴런 하나는 z = w₁x₁ + w₂x₂ + b를 계산하고 활성화 함수를 씌웁니다. z = 0인 곳이 직선 경계(점선)입니다. 가중치를 움직여 네 점을 맞혀 보세요. 점을 누르면 정답이 0↔1로 바뀝니다. XOR은 어떤 직선으로도 나눌 수 없어서, 퍼셉트론 규칙을 돌려도 멈추지 않습니다(Minsky·Papert 1969).
역전파는 층을 지날 때마다 활성화 함수의 기울기 f′(z)를 곱합니다. 시그모이드의 기울기는 많아야 0.25라서, 층이 쌓이면 곱이 금방 0에 가까워집니다. ReLU는 z > 0이면 기울기가 정확히 1입니다. z와 층 수를 움직여 보세요.
| 기호 | 뜻 |
|---|---|
| w, b | 뉴런의 가중치와 편향 |
| φ | 활성 함수 |
| p | 신경망 출력, 범주 1일 정도로 읽음 |
배우려면 가중치마다 자기가 움직일 때 오차가 얼마나 바뀌는지, 곧 기울기를 알아야 합니다. 역전파는 연쇄 법칙으로 뒤에서 앞으로 한 번 훑으며 모든 기울기를 구하고, 위층에서 이미 구한 조각을 다시 씁니다. 숫자를 모두 적을 수 있을 만큼 작은 신경망입니다. 입력 2, 은닉 2, 출력 2, 활성은 모두 sigmoid이고, 널리 쓰이는 손풀이 예제와 같은 시작값입니다.
입력 하나, 뉴런 하나, 제곱 오차입니다. 위에서 아래로 값이 흐르고(순전파), 아래에서 위로 ∂L/∂(·)이 흐릅니다(역전파). 각 칸의 기울기는 바로 아래 칸의 기울기에 국소 미분 하나를 곱한 값입니다. 옆에 같은 값을 수치 미분으로도 계산해 둡니다. 갱신을 눌러 w와 b가 기울기 반대쪽으로 움직이는 것을 보세요.
수치 미분은 (f(z+h) − f(z))/h로 기울기를 어림합니다. h가 크면 잘라낸 항 때문에 틀리고, 너무 작으면 64비트 부동소수점의 반올림 오차가 h로 나뉘어 커집니다. f(z) = eᶻ·sin 3z에서 h를 10⁻¹⁶부터 10⁻⁰·⁵까지 바꾸며 실제 오차를 쟀습니다. 중앙 차분은 잘라낸 오차가 h²에 비례해 더 큰 h에서 더 정확합니다.
같은 자료에 같은 신경망이라도 옵티마이저, 학습률, 묶음 크기, 시작 가중치에 따라 빨리 배우거나, 천천히 배우거나, 못 배웁니다. 기본 확률적 경사하강법(SGD)은 지금 기울기를 따라가고, momentum은 지나온 방향을 이어 가며, Adam은 가중치마다 최근 기울기 크기로 보폭을 맞춥니다. 아래 셋은 같은 시작 가중치에서 같은 묶음을 봅니다.
색이 진할수록 손실이 큽니다(로그 눈금, 띠는 등고선). ★이 최솟값입니다. 그림을 누르면 그 자리에서 세 옵티마이저가 같은 학습률로 출발합니다. 좁은 골짜기에서는 GD가 벽 사이를 튀고, 모멘텀은 속도를 모으고, Adam은 좌표마다 걸음 폭을 맞춥니다.
손실 ½(x² + λy²)에서 경사하강법을 50걸음 돌린 뒤의 손실입니다. 학습률이 2/λ를 넘으면 가파른 방향에서 걸음마다 오차가 커져 발산합니다(빨간 선). 그 아래에서는 완만한 방향이 느려서, 가장 빠른 학습률은 2/(1+λ)입니다(초록 선). λ가 클수록(조건수가 클수록) 두 선 사이가 좁고 수렴이 느립니다.
이미지는 픽셀이 너무 많아 모든 픽셀을 모든 뉴런에 잇기 어렵습니다. 합성곱 층은 작은 가중치 격자(커널, 필터)를 이미지 위로 밀면서 자리마다 숫자 하나를 써서, 같은 몇 개 가중치를 모든 곳에 다시 씁니다. 손으로 정한 커널은 가장자리를 찾거나 흐리게 하고, 학습한 신경망에서는 커널 값을 배웁니다. 이어서 pooling이 작은 칸마다 가장 센 반응만 남기며 크기를 절반으로 줄입니다.
입력 칸 수 n, 커널 k, 보폭 s, 패딩 p, 팽창 d를 바꾸면 출력 크기가 바뀝니다. 오른쪽 출력 칸을 누르면 그 칸이 읽는 입력 칸이 왼쪽에 칠해집니다. 패딩 칸은 0입니다. ‘같은 크기’는 보폭 1에서 출력이 입력과 같아지는 패딩을 넣습니다(k가 홀수일 때).
출력 한 칸이 입력에서 보는 폭(수용 영역)은 층마다 (k−1)·d·(앞 층들의 보폭 곱)만큼 늘어납니다. 위의 설정을 그대로 층마다 반복했다고 치고 셉니다. 보폭이나 팽창이 없으면 폭이 직선으로만 늘고, 팽창을 1, 2, 4, …로 두 배씩 키우면 지수로 늡니다.
교육용 페이지입니다. 자료는 원리를 보이기 위해 만든 2차원 합성 점이고, 결과는 실제 모델의 성능을 뜻하지 않습니다. 점수는 확률이 아닙니다.