시리즈 | Deep Learning - 3. 인공신경망의 동작

Series : DEEP LEARNING Aug 15, 2025

딥러닝 시리즈 2편에서 딥러닝의 기반이 되는 퍼셉트론인공신경망에 대해 다루었다. AND 게이트, OR 게이트, XOR 게이트 등 몇몇 예시를 통해 이러한 구조가 특정 작업들을 수행할 수 있음은 확인했지만, 구체적으로 어떻게 동작하는지, 이러한 구조가 일반화될 수 있는지에 대해서는 아직 다루지 않았다.

특히 중요한 것은, 앞선 2편에서 다룬 신경망 구조에서는 특정 작업을 수행하기 위한 신경망을 설계하는 과정에서 가중치를 사람이 직접 설정했다는 것이다. 만약 사람이 신경망의 구조와 가중치를 매번 일일이 설정해야 한다면 이를 인공지능 기법이라고 부르기는 어려울 것이다. 본 포스트에서는 구체적인 신경망의 동작 원리와, 신경망이 스스로 학습하는 방법에 대해 간단히 다룬다.


신경망의 학습 - 패러다임의 전환

Remind: 앞선 2편에서 신경망 구조를 통해 다양한 종류의 작업을 수행할 수 있음을 다뤘다. 그러나, 기계가 어떻게 스스로 학습할 수 있을까?

잠시 1편에서 다룬 머신러닝의 정의로 돌아가보자. 머신러닝 관점에서의 접근의 가장 중요한 요소는 데이터다. 구체적으로, 개와 고양이 사진이 주어졌을 때 이를 구분하는 문제를 생각해보자. 사람이 눈으로 개와 고양이를 구분하기는 그리 어렵지 않지만 컴퓨터에게 분류 작업을 맡기고자 한다면 말이 달라진다. 픽셀별 RGB값이 주어져 있는 데이터를 가지고 어떤 기준으로 개와 고양이를 구분할 수 있을까? 꼬리의 길이, 얼굴의 생김새 등 어떤 기준을 생각하더라도 조금만 고민해보면 개와 고양이를 구분하는 명확한 로직을 설계하기란 매우 어렵다는 것을 알 수 있다.

여기서 머신러닝이 택하는 방법은 알고리즘을 처음부터 설계하는 대신, 주어진 데이터를 잘 활용해 문제를 해결하는 것이다. 대표적으로 이미지에서 특징(feature)를 추출하는 방법이 있다. 보다 엄밀하게는, 이미지로 주어진 입력 데이터에서 핵심이 되는 데이터를 선택하고 조합하는 과정을 거친다고 설명할 수 있다. 이런 특징을 통해 벡터로 변환된 이후에는 지도학습 기법 등 기존의 머신러닝 방법론들을 통해 스스로 학습할 수 있다.

위의 사례에서 알 수 있듯이, 기계가 데이터로부터 규칙을 찾아내어 스스로 학습하는 것이 머신러닝의 본질이다. 그러나 앞서 말한 특징 추출의 경우 아직 인간이 개입해야 한다. 고양이와 개를 분류하는 문제의 사례에서 얼굴의 크기, 꼬리의 모양, 몸통의 길이 등 어떤 특징을 추출해야 하는지는 인간이 임의로 정해야 한다. 여기서 딥러닝과 다른 머신러닝 기법들의 큰 차이점이 발생한다.

딥러닝의 end-to-end 구조

딥러닝은 이 ‘특징을 정하는 일’을 모델 스스로가 맡는다. 합성곱 신경망(CNN)을 예로 들면, 초기 계층은 가장자리·모서리 같은 저수준 패턴을, 더 깊은 계층은 귀·눈·몸통처럼 고수준 패턴을 자동으로 조합해 낸다. 우리는 어떤 특징을 쓸지 미리 설계하지 않고, 데이터와 모델 구조 등만 정한 뒤 후술할 방법론을 통해 모델을 학습시킨다. 이 과정에서 “특징 설계 → 분류기 학습”의 두 단계를 “표현과 분류기를 함께 학습”하는 한 단계로 통합한다. 이를 end-to-end 학습이라고 하는데, 다시 말해 규칙을 사람이 짜던 패러다임에서 표현을 데이터로부터 스스로 찾아내도록 설계하는 패러다임으로 초점이 이동한다. 이것이 신경망 학습이 만든 가장 큰 전환점이다.


신경망의 학습 - 손실 함수

잠시 처음으로 돌아와, '좋은 모델'이란 무엇일지 고민해 보자. 특정 입력에 대한 실제 답이 존재하는 상황에서, 모든 입력에 대해 항상 답을 출력하는 모델이 있다면 가장 이상적일 것이다. 이러한 목표 달성을 위해서는 하나의 척도가 필요하다. 손실 함수란, 예측한 값 실제 값 사이의 차이를 측정하는 함수로써 학습에 중추적인 역할을 한다. 다시 말해, 손실 함수는 현재 모델의 성능 개선해 나가야 할 방향을 하나의 지표로 표현한다.

⚠️
한 가지 특이점은, 일반적으로 손실 함수는 예측한 값과 실제 값 사이의 오차를 나타내는 함수이므로 신경망이 '나쁜' 정도를 평가한다는 것이다. 그렇기에 실제로 대부분의 학습은 손실 함수의 값줄이는 것을 목표로 이루어지는데, '나쁜 정도를 줄이는 것''좋은 정도를 늘리는 것'으로 이해한다면 보다 직관적으로 손실 함수의 의미를 이해할 수 있다.

손실 함수에는 다양한 종류가 존재하는데, 대표적으로 오차제곱합(Sum of Squares for Error, SSE)와 교차 엔트로피 오차(Cross Entropy Error, CEE)가 있다.

​오차제곱합(SSE)

\[E=\frac{1}{2}\sum_{k}{(y_{k}-t_{k})^2}\]

오차제곱합은 일반적으로 가장 많이 쓰이는 손실 함수이다. \( y_{k}\)는 신경망의 추정값, \( t_{k}\)는 정답 레이블을 의미한다. 식이 단순하여 직관적으로 의미를 알 수 있는데, 각각의 값에 대해 신경망의 추정값과 정답 레이블의 값의 오차(차의 제곱)을 모두 더한 형태로 식이 구성되어 있다. 또, 일반적인 오차제곱합과는 달리 손실 함수로 오차제곱합을 사용할 경우 \(\frac{1}{2}\)가 계수로 붙는 것을 알 수 있는데, 이는 미분을 보다 수월하게 해주기 위함일 뿐 수학적으로 큰 의미는 없다.

교차 엔트로피 오차(CEE)

\[E=-\sum_{k}{t_{k}\log{y_{k}}}\]

위와 마찬가지로, \( y_{k}\)는 신경망의 추정값, \( t_{k}\)는 정답 레이블을 의미한다. 이때 \( t_{k}\)는 정답이면 1, 아니면 0의 값을 가지는 원-핫 인코딩을 통해 표현된다. 수식의 형태가 복잡해 보이지만, 정답을 제외한 인덱스에서 \( t_{k}\)의 값이 모두 0이라는 것을 생각한다면 \( t_{k}\)값이 1인 정답 레이블에서 \(-\log{y_{k}}\)의 값이 곧 교차 엔트로피 오차라는 것을 알 수 있다. 이 경우 \( y_{k}\)가 1에 가까울수록 값이 작아지고, 0에 가까울수록 값이 커지므로 손실 함수의 기능을 수행함을 직관적으로 납득할 수 있다.

💡
CEE의 경우, SEE에 비해 어째서 저런 형태의 식이 유도된 것인지 Motivation이 잘 와닿지 않을 수 있다. 관심이 있는 독자는 정보이론에서의 섀넌 엔트로피에 관해 검색해 보면 식이 해당 형태로 유도되는 이유와 관련된 배경지식을 보다 잘 이해할 수 있을 것이다.

앞서 알아본 두 종류의 손실 함수 이외에도 학습 목적이나 방법론에 따라 다양한 종류의 손실 함수가 존재한다. 그러나 일반적으로 딥러닝에서 가장 자주 사용되는 형태의 손실 함수는 오차제곱합과 교차 엔트로피 오차이며, 앞으로도 두 손실함수를 위주로 다룰 것이다.

💡
오차함수를 배우면, 결국 학습의 최종 목표는 모델의 정확도를 높이는 것인데 어째서 정확도 값을 직접 사용하는 대신 오차함수를 사용하는지에 대한 의문이 생길 수 있다. 이는 오차함수가 단순히 현재 모델의 성능을 평가하는 척도일 뿐 아니라 앞으로 개선해 나갸아 할 방향을 알려준다는 것과 큰 관련이 있다. 후술하겠지만 학습이 성공적으로 수행되기 위해서는 모든 구간에서 연속적으로 미분값이 정의되는 함수를 고려하는 것이 유리하며, 이런 관점에서 정확도를 직접 사용하게 되면 대부분의 지점에서 미분값이 0이 되는 문제가 발생한다.

기울기와 경사하강법

⚠️
이전까지의 내용과 달리, 이후의 내용은 독자가 기초적인 수준의 미적분학 지식을 알고 있음을 상정한 상태로 작성되었습니다. 만약 관련 사전지식이 부족하다면, 기본적인 미분의 개념과 편미분에 대해 먼저 알아보기를 추천합니다.

앞선 논의의 내용을 요약한다면, 딥러닝에서 “학습한다”는 말은 손실 함수가 작아지도록 매 스텝마다 가중치를 적절히 조정한다는 뜻으로 받아들일 수 있다. 이때, 어디로 얼마나 움직일지를 결정하는 핵심 도구가 바로 경사하강법이다. 경사하강법의 이론적 토대가 되는 편미분의 개념과 그래디언트의 개념, 경사하강법의 작동 방식에 대해 소개한다.

편미분: 다변수 함수에서의 부분 기울기

어떤 일변수 함수 \(f(x)\)의 미분 \(f'(x)\)는 점에서의 접선 기울기를 의미한다. 한 점에서 \(f'(x)\)의 값은 \(f(x)\)가 가파르게 증가하는 정도를, 부호는 오르내림의 방향을 말한다.

일변수 함수의 미분과 기울기 (출처: https://vegatrash.tistory.com/12)

다변수 함수 $f(x_{1},\dots,x_{d})$에서 한 변수만 바꾸고 나머지는 고정해 본 미세한 변화율을 그 변수에 대한 편미분이라 부른다. 예를 들어 $f(x,y)=x^{2}+xy$라면 $\frac{\partial f}{\partial x}=2x+y$, $\frac{\partial f}{\partial y}=x$가 된다. 일변수에서의 미분 $f'(a)$가 점 $x=a$에서의 접선 기울기(오르내림의 정도와 방향)를 뜻하듯, 편미분은 각각의 축 방향으로만 움직였을 때의 순간 변화율을 뜻한다. 이 편미분들을 한데 모은 벡터
\[\nabla f(\mathbf{x})=\left(\frac{\partial f}{\partial x_{1}},\dots,\frac{\partial f}{\partial x_{d}}\right)\] 를 그래디언트(기울기 벡터)라 한다. \(\nabla f(\mathbf{x})\)는 함수가 가장 빠르게 증가하는 방향을 가리키며, 그 크기 \(|\nabla f(\mathbf{x})|\)는 증가 속도의 세기를 나타낸다. 임의의 단위벡터 $\mathbf{u}$ 방향으로의 순간 변화율(방향미분)은 $D_{\mathbf{u}}f(\mathbf{x})=\nabla f(\mathbf{x})\cdot\mathbf{u}$로 주어지므로, 가장 빨리 내려가는 방향은 정의상 $-\nabla f(\mathbf{x})$가 된다.

3차원 좌표공간에 표현된 이변수함수의 그래디언트 (출처: https://github.com/pvigier/gradient-descent)

이 사실은 1차 테일러 전개로도 확인된다. 작은 $\Delta$에 대해
\[f(\mathbf{x}+\Delta)\approx f(\mathbf{x})+\nabla f(\mathbf{x})^{\top}\Delta,\]
따라서 $\Delta=-\eta,\nabla f(\mathbf{x})$로 두면
\[f(\mathbf{x}+\Delta)\approx f(\mathbf{x})-\eta||\nabla f(\mathbf{x})||^{2}\]
즉 충분히 작은 스텝 $\eta>0$에서는 함수값이 1차 근사 수준에서 감소한다.

경사하강법

경사하강법은 이름에서 알 수 있듯이, 함수의 그래디언트를 이용하여 국소값(Local minimum)을 찾는 방법이다. 앞선 논의의 내용을 손실 함수 $\mathcal{L}(\boldsymbol{\theta})$의 최소화로 옮기면 경사하강법의 업데이트 규칙을 알 수 있다.
\[\boldsymbol{\theta}\leftarrow\boldsymbol{\theta}-\eta\nabla_{\boldsymbol{\theta}}\mathcal{L}(\boldsymbol{\theta}).\]
여기서 $\boldsymbol{\theta}$는 신경망의 모든 파라미터를 모은 벡터, $\eta>0$는 한 번에 얼마나 이동할지를 정하는 학습률이다. 규칙은 단순하다. 현재 파라미터에서 기울기 $\nabla\mathcal{L}$을 계산하고, 손실이 가장 빨리 줄어드는 방향 $-\nabla\mathcal{L}$으로 한 걸음 움직인다. 이를 반복하면 손실이 감소하는 쪽으로 점점 내려가게 된다. 일변수 예시로 $\mathcal{L}(w)=(w-3)^{2}$를 생각하면 $\nabla\mathcal{L}(w)=2(w-3)$, 업데이트는 $w\leftarrow w-2\eta(w-3)$가 되어 $w$가 $3$으로 수렴한다. 다변수에서도 등고선(동일 손실값 곡선)을 가로질러 최소점을 향해 내려가는 모습으로 해석할 수 있다.

경사하강법의 진행 과정 (출처: https://datahacker.rs/gradient-descent/)

경사하강법이 실제로 잘 작동하려면 $\eta$의 선택이 중요하다. $\eta$가 너무 크면 손실 계곡을 건너뛰며 발산(overshooting)할 수 있고, 너무 작으면 수렴은 가능하더라도 지나치게 느리다. 이는 아래의 시각화를 통해 직관적으로 이해할 수 있다.

$\eta$에 따른 경사하강법의 작동 모습 (출처: https://duchesnay.github.io/pystatsml/optimization/optim_gradient_descent.html)
💡
실전에서는 고정 $\eta$ 대신 점차 줄이는 스케줄(예: 스텝 감쇠, 지수 감쇠, 코사인 감쇠)이나 초기 워밍업을 사용해 안정성과 속도를 동시에 노린다. 또한 전체 데이터를 한꺼번에 사용하는 배치 경사하강법은 안정적이지만 계산량이 커서, 딥러닝에서는 표준적으로 미니배치로 손실과 기울기를 근사한다. 이는 확률적 경사하강법(SGD)의 변형으로 볼 수 있으며, 미니배치가 유도하는 잡음은 안장점이나 평탄한 구간을 벗어나는 데 오히려 도움이 되기도 한다.

경사하강법에 관한 몇 가지 이야기(optional)

딥러닝의 손실 지형은 일반적으로 비선형·비볼록이어서 지역 최소, 안장점(방향에 따라 극대/극소가 바뀌는 점), 축마다 곡률이 크게 다른 협곡이 흔하다. 이 때문에 단순한 경사하강법이 느려지거나 지체되는 구간이 생길 수 있고, 이를 완화하려 모멘텀이나 적응적 학습률(Adagrad, RMSProp, Adam 등)을 함께 쓴다. 모멘텀은 과거의 이동 방향을 누적해 작은 요철에 덜 민감하게 만들고, 적응적 방법은 좌표마다 스케일을 자동 조정해 학습률 선택의 부담을 줄인다. ReLU처럼 일부 층에서 비미분점이 존재하더라도, 실제 구현에서는 서브그래디언트나 자동미분의 관례적 처리로 업데이트가 진행되어 학습이 중단되지 않는다. 정지 기준은 기울기 노름의 감소, 검증 손실의 더 이상 개선 없음(얼리 스토핑), 혹은 사전에 정한 스텝/에폭 도달 등이 쓰인다.

요약하자면, 편미분은 각 축으로 본 미세 변화율이고, 그래디언트는 그것들을 모아 “가장 가파른 오르막”을 가리키는 벡터다. 손실을 줄이고자 한다면 항상 그 반대 방향인 $-\nabla\mathcal{L}$로 이동하면 되고, 이것이 경사하강법의 핵심이다. 학습률, 데이터 배치 방식, 손실 지형의 특성에 따라 수렴 과정이 크게 달라지므로, 미니배치와 적절한 스케줄·모멘텀/Adam·얼리 스토핑 같은 실전 기법을 결합해 안정적이면서도 효율적인 학습을 구현한다.


맺음말

지금까지 구체적인 신경망의 동작 원리와, 신경망이 스스로 학습하는 방법을 다뤘다. 인공지능의 학습에 있어 규칙을 사람이 짜던 패러다임에서 표현을 데이터로부터 스스로 찾아내도록 설계하는 패러다임으로 초점이 이동한 것은 굉장히 큰 전환점이다.

본 포스트에서는 신경망의 학습에 관한 기초 이론과 경사하강법에 대해 다뤘다. 다음 포스트에서는 딥러닝의 학습에서 가장 기본이 되는 오차역전파법에 대해 구체적으로 다루는 것을 목표로 한다.


참고문헌

밑바닥부터 시작하는 딥러닝
직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서
10. 손실 함수(Loss Function)
손실 함수(Loss Function)는 딥러닝 모델의 성능을 측정하고 최적화하는 데 중요한 역할을 하는 함수입니다. 손실 함수는 모델의 예측 값과 실제 값 사이의 차이를 계산하며…
Loss function - Wikipedia

Tags

Kim Minjae

GSHS 25 IamCoder 43rd