English
AI Foundations

Neural Networks신경망

신경망은 단순한 계산 단위(뉴런)를 층으로 쌓아, 직선 하나로는 나눌 수 없는 무늬도 배웁니다. 작은 신경망을 이 브라우저에서 학습시키며 뉴런과 층, 역전파, 학습이 흘러가는 모습, 합성곱을 봅니다.

뉴런과 층

뉴런은 입력의 가중합에 편향을 더하고, 그 결과를 활성 함수에 통과시킵니다. 뉴런 하나로는 곧은 경계밖에 못 그립니다. 뉴런 여러 개를 은닉층에 나란히 두고 층을 쌓으면, 곧은 조각들을 이어 굽은 선·고리·나선을 만들 수 있습니다. 비선형 활성 함수가 없으면 층을 아무리 쌓아도 곧은 선 하나와 같습니다.

a = φ(w·x + b) · ReLU(z) = max(0, z) · tanh(z) · sigmoid(z) = 1/(1+e^(−z)) · loss = −mean[y log p + (1−y) log(1−p)]

체험: 신경망을 짜서 학습시키기

첫 은닉층 뉴런마다 그리는 것

작은 지도 하나가 같은 평면에서 뉴런 하나가 내는 값입니다. 뉴런마다 곧은 경계가 하나씩이고, 출력 뉴런이 이것들을 합칩니다.

체험: 뉴런 하나로 AND · OR · XOR

뉴런 하나는 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일 정도로 읽음

참고문헌

  1. Rosenblatt, F. (1958). The perceptron: a probabilistic model for information storage and organization in the brain. Psychological Review 65(6).
  2. Minsky, M., Papert, S. (1969). Perceptrons. MIT Press.
  3. Cybenko, G. (1989). Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals and Systems 2(4).
  4. Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning, ch. 6. MIT Press.
  5. Hendrycks, D., Gimpel, K. (2016). Gaussian error linear units (GELUs). arXiv:1606.08415.

역전파

배우려면 가중치마다 자기가 움직일 때 오차가 얼마나 바뀌는지, 곧 기울기를 알아야 합니다. 역전파는 연쇄 법칙으로 뒤에서 앞으로 한 번 훑으며 모든 기울기를 구하고, 위층에서 이미 구한 조각을 다시 씁니다. 숫자를 모두 적을 수 있을 만큼 작은 신경망입니다. 입력 2, 은닉 2, 출력 2, 활성은 모두 sigmoid이고, 널리 쓰이는 손풀이 예제와 같은 시작값입니다.

E = ½Σ(target − out)² · ∂E/∂w₅ = (out_o1 − target_o1) · out_o1(1 − out_o1) · out_h1 · w ← w − η ∂E/∂w

체험: 순전파 · 역전파 · 갱신

체험: 계산 그래프 한 칸씩

입력 하나, 뉴런 하나, 제곱 오차입니다. 위에서 아래로 값이 흐르고(순전파), 아래에서 위로 ∂L/∂(·)이 흐릅니다(역전파). 각 칸의 기울기는 바로 아래 칸의 기울기에 국소 미분 하나를 곱한 값입니다. 옆에 같은 값을 수치 미분으로도 계산해 둡니다. 갱신을 눌러 w와 b가 기울기 반대쪽으로 움직이는 것을 보세요.

체험: 수치 미분은 h를 얼마나 작게?

수치 미분은 (f(z+h) − f(z))/h로 기울기를 어림합니다. h가 크면 잘라낸 항 때문에 틀리고, 너무 작으면 64비트 부동소수점의 반올림 오차가 h로 나뉘어 커집니다. f(z) = eᶻ·sin 3z에서 h를 10⁻¹⁶부터 10⁻⁰·⁵까지 바꾸며 실제 오차를 쟀습니다. 중앙 차분은 잘라낸 오차가 h²에 비례해 더 큰 h에서 더 정확합니다.

요약기울기는 가중치 하나가 움직일 때 오차가 어떻게 바뀌는지를 말합니다.역전파는 연쇄 법칙으로 뒤로 한 번 훑어 모든 기울기를 얻습니다.수치 미분과 맞춰 보는 것이 버그를 잡는 표준 방법입니다.

참고문헌

  1. Rumelhart, D.E., Hinton, G.E., Williams, R.J. (1986). Learning representations by back-propagating errors. Nature 323.
  2. Mazur, M. (2015). A step by step backpropagation example. mattmazur.com (the worked example whose starting values are used here).
  3. Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning, §6.5. MIT Press.

학습이 흘러가는 모습

같은 자료에 같은 신경망이라도 옵티마이저, 학습률, 묶음 크기, 시작 가중치에 따라 빨리 배우거나, 천천히 배우거나, 못 배웁니다. 기본 확률적 경사하강법(SGD)은 지금 기울기를 따라가고, momentum은 지나온 방향을 이어 가며, Adam은 가중치마다 최근 기울기 크기로 보폭을 맞춥니다. 아래 셋은 같은 시작 가중치에서 같은 묶음을 봅니다.

SGD: w ← w − ηg · Momentum: v ← 0.9v + g, w ← w − ηv · Adam: m ← 0.9m + 0.1g, s ← 0.999s + 0.001g², w ← w − η m̂/(√ŝ + ε)

체험: 옵티마이저 셋 나란히

체험: 손실 지형 위의 세 옵티마이저

색이 진할수록 손실이 큽니다(로그 눈금, 띠는 등고선). ★이 최솟값입니다. 그림을 누르면 그 자리에서 세 옵티마이저가 같은 학습률로 출발합니다. 좁은 골짜기에서는 GD가 벽 사이를 튀고, 모멘텀은 속도를 모으고, Adam은 좌표마다 걸음 폭을 맞춥니다.

지형

체험: 학습률의 경계

손실 ½(x² + λy²)에서 경사하강법을 50걸음 돌린 뒤의 손실입니다. 학습률이 2/λ를 넘으면 가파른 방향에서 걸음마다 오차가 커져 발산합니다(빨간 선). 그 아래에서는 완만한 방향이 느려서, 가장 빠른 학습률은 2/(1+λ)입니다(초록 선). λ가 클수록(조건수가 클수록) 두 선 사이가 좁고 수렴이 느립니다.

요약옵티마이저마다 잘 맞는 학습률 범위가 다릅니다.학습률이 너무 크면 손실이 튀거나 터지고, 너무 작으면 거의 안 움직입니다.시작 가중치가 너무 작거나 크면 배우기 시작하기도 전에 느려집니다.

참고문헌

  1. Robbins, H., Monro, S. (1951). A stochastic approximation method. Annals of Mathematical Statistics 22(3).
  2. Polyak, B.T. (1964). Some methods of speeding up the convergence of iteration methods. USSR Computational Mathematics and Mathematical Physics 4(5).
  3. Kingma, D.P., Ba, J. (2015). Adam: a method for stochastic optimization. ICLR.
  4. Glorot, X., Bengio, Y. (2010). Understanding the difficulty of training deep feedforward neural networks. AISTATS.
  5. Rosenbrock, H.H. (1960). An automatic method for finding the greatest or least value of a function. The Computer Journal 3(3).

합성곱

이미지는 픽셀이 너무 많아 모든 픽셀을 모든 뉴런에 잇기 어렵습니다. 합성곱 층은 작은 가중치 격자(커널, 필터)를 이미지 위로 밀면서 자리마다 숫자 하나를 써서, 같은 몇 개 가중치를 모든 곳에 다시 씁니다. 손으로 정한 커널은 가장자리를 찾거나 흐리게 하고, 학습한 신경망에서는 커널 값을 배웁니다. 이어서 pooling이 작은 칸마다 가장 센 반응만 남기며 크기를 절반으로 줄입니다.

out(x, y) = Σᵢ Σⱼ K(i, j) · in(x + i, y + j) · 3×3 'valid' → (W − 2) × (H − 2) · 2×2 max pooling → ⌊W/2⌋ × ⌊H/2⌋

체험: 커널 고르기 · 직접 쓰기

체험: 출력 크기와 패딩 · 보폭 · 팽창

입력 칸 수 n, 커널 k, 보폭 s, 패딩 p, 팽창 d를 바꾸면 출력 크기가 바뀝니다. 오른쪽 출력 칸을 누르면 그 칸이 읽는 입력 칸이 왼쪽에 칠해집니다. 패딩 칸은 0입니다. ‘같은 크기’는 보폭 1에서 출력이 입력과 같아지는 패딩을 넣습니다(k가 홀수일 때).

체험: 층을 쌓을 때 수용 영역

출력 한 칸이 입력에서 보는 폭(수용 영역)은 층마다 (k−1)·d·(앞 층들의 보폭 곱)만큼 늘어납니다. 위의 설정을 그대로 층마다 반복했다고 치고 셉니다. 보폭이나 팽창이 없으면 폭이 직선으로만 늘고, 팽창을 1, 2, 4, …로 두 배씩 키우면 지수로 늡니다.

요약커널은 모든 자리에서 다시 쓰는 작은 가중치 묶음입니다.커널마다 한 방향 가장자리 같은 서로 다른 국소 무늬에 반응합니다.pooling은 지도를 줄이며 가장 센 반응을 남깁니다.

참고문헌

  1. LeCun, Y., Bottou, L., Bengio, Y., Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE 86(11).
  2. Sobel, I., Feldman, G. (1968). A 3×3 isotropic gradient operator for image processing. Stanford AI Project talk.
  3. Dumoulin, V., Visin, F. (2016). A guide to convolution arithmetic for deep learning. arXiv:1603.07285.
  4. Yu, F., Koltun, V. (2016). Multi-scale context aggregation by dilated convolutions. ICLR.
  5. van den Oord, A. et al. (2016). WaveNet: a generative model for raw audio. arXiv:1609.03499.
  6. Image: scikit-image data.chelsea · CC0 · van der Walt, S. et al. (2014). scikit-image: image processing in Python. PeerJ 2.

교육용 페이지입니다. 자료는 원리를 보이기 위해 만든 2차원 합성 점이고, 결과는 실제 모델의 성능을 뜻하지 않습니다. 점수는 확률이 아닙니다.