앞선 Linear Regression이나 Linear Classification에서는 모델을 f(x) = Wx + b와 같은 선형(Linear) 형태로 가정하여 입력과 출력 사이의 관계를 학습했다. 하지만 실제 세상의 데이터는 선형 관계로 설명되지 않는 경우가 대부분이다. 따라서 이런 단순한 선형 모델만으로는 복잡한 패턴을 충분히 표현할 수 없다. 이 한계를 극복하기 위해 등장한 것이 바로 Nueral Networks(신경망)이다. 이번 글에서는 이 Neural Networks에 대해서 정리해 보려고 한다.
1. Neural Networks
Neural Networks는 인간의 신경망에서 아이디어를 얻어 만들어진 모델이다. 인간의 신경망은 뉴런이라는 신경세포로 이루어져 있으며, 수많은 뉴런들이 서로 연결되어 신호를 주고받으며 우리 몸의 동작과 인지를 제어한다. 외부 자극이 역치 이상이 되면, 뉴런은 이를 전기적 신호로 받아들여 확산의 방식으로 다른 뉴런에게 전달한다.
이처럼 뉴런들이 복잡하게 얽혀 신호를 전달하는 구조를 모방한 것이 바로 Neural Networks이다. 즉, Neural Networks에서 f(x)는 사람의 신경망처럼 다수의 노드가 서로 얽힌 그물망 형태로 구성된다.

f(x) 내에 파란색 원으로 표현되는 노드들이 같은 열에 위치하면 하나의 층, Layer으로 구분된다. X(Input)와 제일 가까운 Layer는 4차원, 그 다음은 5차원, 6차원, 4차원 그리고 마지막은 3차원으로 되어 있는 구조이다. 각 Layer는 하나의 간단한 함수(선형 + 비선형)으로 표현되며, 이러한 간단한 함수들이 여러 층에 걸쳐 합성되면서 최종 함수 f(x)는 매우 복잡한 형태를 표현할 수 있게 된다.
이때 중요한 점은 각 층이 비선형(Non-linear) 방식으로 연결되어 있다는 것이다. 단순히 선형함수(Wx + b)를 여러 번 쌓는 것만으로는 하나의 큰 선형함수에 불과하지만, 각 층마다 비선형 활성함수(ReLU, Sigmoid 등)를 적용하면 훨씬 복잡하고 다양한 형태의 f(x)를 표현할 수 있다.
f(x)의 기본 구조에 대해서는 선형함수에 비선형함수를 곱해준 형식인데, 식으로 표현하면 다음과 같다.

즉, 선형함수 W에 비선형 함수 σ를 반복적으로 곱해준 형태로 표현할 수 있다.
2. Neural Networks - Forward Propagation
이제부터 Neural Networks에서 f(x)를 예측하는 방법에 대해서 차근차근 알아보려고 한다. 기본적으로 Neural Networks는 두 가지 단계를 거친다.
- Inference: Forward Propagation
- Learning: Backward Propagation
즉, 두 가지 방법을 모두 거쳐야 최종적으로 학습 모델을 구할 수 있다. 먼저 Froward Propagation에 대해 정리해 보려고 한다. 다음과 같이 NN을 구성했다고 가정해보자.

이때, forward propagation은 이름에서 알 수 있듯이 앞으로, input에서 output까지 순서대로 계산이 진행되는 과정이다. 다음과 같이 진행된다.
- Input으로 학습에 사용할 데이터가 들어온다.
- 맨 처음 Layer(3차원)으로 해당 데이터를 넣고 계산을 진행한다.
- 이때, 계산에 사용되는 W와 b는 학습이 시작돌 때 한 번 임의의 초기값으로 설정해둔 상태이며, 각 Layer에서는 이 값을 이용해 Wx + b 형태의 연산을 수행한다.
- 계산된 결과는 다음 Layer의 입력으로 전달되고, 모든 Layer에서 동일한 방식으로 반복된다.
- 최종적으로 마지막 Layer에서 얻은 출력값(예측값)과 실제 정답 Y를 비교해 Loss를 계산한다.
이렇게, 주어진 X로 각 Layer마다 순차적으로 계산하여 예측값을 구하고 Loss를 산출하는 과정을 Forward Propagation이라고 한다.
3. Nerual Network - Back Propagation
이제, Neural Networkd에서 중요한 단계인 Back Propagation에 대해서 정리해 보겠다.
앞서 Forward Propagation을 계산할 때, 각 Layer의 W와 b는 맨 처음에는 임의의 값으로 설정되어 있었고, 이를 통해 계산을 진행했다. 하지만 이렇게 되면 실제 Y와 계산한 값과 Loss가 생길 수 밖에 없다.
이제 해야 할 일은 Loss가 줄어드는 방향으로 W와 b를 조정하는 것, 즉 모델을 학습시키는 것이다. 그러기 위해선 이 Loss 값이 다시 각 Layer의 파라미터(W와 b)에 어떤 영향을 주는지를 알아야 한다. 즉 이를 미분(Gradient)값으로 Loss 값이 Layer에 의해 얼마나 영향을 받았는지 계산하는 것이다. 이를 구하려면 Loss 정보를 다시 이전단계 Layer 전달되어야 한다. 이때, 이용하는 방법이 바로 Back Propagation이다.
Back Propagation은 최종 출력된 Loss를 시작점으로, 미분(Gradient Descent)을 이용해 각 Layer의 W와 b가 Loss에 얼마나 끼쳤는지 계산한다. 그리고 이 Gradient 값을 이용해 Loss가 감소하는 방향으로 각 Layer의 가중치(W)를 업데이트한다.

4. Neural Network 예시
위의 Neurla Network 방식에 대한 간단한 예시로 이해해 보려고 한다. 다시 강조하면, 우리가 Back Propagation을 통해서 W를 업데이트 하는 방법은 다음과 같다.

Gradient Descent 방식의 핵심 원리, 즉 Loss에 대한 W의 미분값을 통해 W를 업데이트 시켜주는 것인데, 이때 Neural Networks에서는 이 기존 W를 이전 Layer에게서 전달받은 미분값이 적용된 인자를 사용한다는 것이다. 다음 예시를 통해 한 번 살펴보자.
다음과 같은 간단한 예시가 있다.

위 그림에 대해서 설명하면, 구하고자 하는 모델은 f(x; W)이며, L2-Loss 방법을 채택해 모델을 학습시키고자 한다. 이때, 선형 함수에 해당하는 것은 Wx, 비선형 함수에 해당하는 것은 L2-norm이다.
- W의 초기 상태에서 W는 2x2 행렬, x(input)값은 2x1 행렬로 되어있다.
- Forward Propagation을 통해 q = Wx를 계산하고 그 결과에 대해 L2-norm을 구한 값이 0.2285 이다.
- 이때, q는 W와 x를 내적한 2*1 벡터로 나타나고, 이를 output과 비교하기 위해 벡터의 크기를 구하는 방법 중 하나인 L2-norm 방식을 이용한 것이다.
- 이 값은 실제 정답 Output인 1과 비교했을 때 오차가 존재한다.
이 차이를 줄이기 위해 back propagation 방법을 통해 W를 조정해 주어야 한다. 이때, 이용되는 수학적인 개념을 잠시 살펴보면 다음과 같다.
- 벡터 q에서 L2-norm을 적용할 때, 사용한 식은 다음과 같다.

따라서, q가 f에 대한 끼치는 영향을 미분값으로 나타내면, 2q로 나타낼 수 있다.
이를 통해 q의 gradient를 구했으면, q에 대한 backpropagation이 다음과 같이 진행된다. 우리가 최종적으로 알고 싶은 것은 W를 얼마나 조정해줘야 하는가 이므로, 다음과 같은 식으로 표현된다.

이때, 앞의 식은 2q이다. 2q는 다음 그림과 같다.

이때, 이 값은 L2의 영향을 받아 바뀐 값이고 이를 q'이라고 하자. 이제, 뒤에 식을 구하기 위해 직관적인 이해를 적용시켜보자.
- Wx = q에서 q가 q'으로 바뀌었다. 이때, 입력(x)은 전과 동일하다고 가정하면, q'로 바뀌었다는 것은, W가 바뀌어야 한다는 것이다. 이때, 바뀔 W를 W'이라고 하자.
- W', x, q'이 각각 행렬로 표현되어 있기 때문에, W'xx^T = q'x^T로, 양변에 x^T를 곱해주면, W' = q'x^T를 통해 구할 수 있다는 것을 알 수 있다.
위와 같은 방법을 통해 W를 W'으로 갱신할 수 있다. 이 방법을 통해 계산식과 W'을 보면 다음과 같다.

따라서, back propagation을 통해 업데이트한 W'은 위와 같은 행렬로 나타낼 수 있고, 이를 동일하게 x에 적용시키면, x도 업데이트 할 수 있다.
+) x에 동일하게 적용한다는건 이번에는 W를 고정시킨 상태에서 입력 x에 대한 gradient를 계산하는 과정을 의미한다.
5. 비선형 함수에 많이 쓰이는 종류
앞선 예시에서는 L2-Loss를 비선형 함수로 선택했다. 즉, 비선형 함수는 입력값을 단순한 선형 형태로 전달하지 않고, 비선형성을 부여하여 모델이 더 복잡한 패턴을 학습하도록 돕는 역할을 한다. 다음은 대표적으로 많이 쓰이는 비선형 함수들이다.

L2 - Loss에 대해서는 많이 설명했으므로 Sigmoid와 ReLU에 대해서 간단히 설명하면,
- Sigmoid는 출력이 0~1 사이에 존재하고, 확률값처럼 해석 가능하지만, Gradient vanishing(미분값이 사라지는) 문제가 발생할 수 있다.
- ReLU는 입력이 0보다 작으면 0, 크면 입력 그대로 출력하며, 계산이 간단하고 학습 속도가 빠르지만, Dead ReLU 현상이 발생할 수도 있다.
Sigmoid는 확률적 해석에 강점이 있고, ReLU는 속도와 효율성이 뛰어나다. 오는날 대부분의 딥러닝 네트워크는 ReLU 계열을 많이 사용한다고 한다.
6. Neural Network의 발전
딥러닝의 대부라 불리는 Geoff Hinton은 backward propagation 방식을 "deeply suspicious"하다고 했다. 그 이유는 backward propagation 방식은 점진적으로 오차를 전파하며 학습시키는 방법인데, 이는 실제 우리 뇌에서 학습이 일어나는 방법과 다르다는 이유 때문이다.
우리 뇌는 한 번 개 이미지를 보고 나면, 그 뒤 새로운 종의 개를 보더라도 순간 폭발적인 신호로 인해 개로 인식할 수 있다. 아직 생물학적 회르를 정확히 모방하지 못한다.
과거 Neural Network의 발전 과정을 살펴보자. 현재 딥러닝이 나오기 전까지 여러 세대의 모델들이 존재했다.
- Neocognitron(1982): 인간 시각 피질 구조를 모방한 최초의 계층형 네트워크로, Convolution 개념의 시초가 된 논문이다. 그렇지만 제대로 학습시키는 법에 대해서 몰랐고, 컴퓨터 성능도 그리 좋지 않았기에, 당시 주목받지 못했다.
- LeNet: 초기 CNN 구조이자 손글씨 숫자 인식 모델이다.. Back propagation을 도입해 성공적인 학습을 달성했다. 현대 CNN의 시초로 언급된다.
그리고 등장한 것이 VGGNet이다. 2014년에 등장한 VGGNet은 다음과 같은 특징을 지녔다.
- 심층화된 CNN 모델
- Convolution layer를 깊게 쌓은 구조
- 단순하면서도 강력한 성능으로 다양한 응용 가능
VGGNet은 다음과 같이 구성된다.

CNN에 대해서는, 그리고 위 구조에 대해서는 다음 정리글에서 더 자세히 정리할 예정이다.
'학교공부 > [비디오이미지프로세싱]' 카테고리의 다른 글
| [비디오이미지프로세싱] - CNN_Activation Functions (0) | 2025.10.22 |
|---|---|
| [비디오이미지프로세싱] - CNN(Convolutional Neural Network)_주요 Layer (0) | 2025.10.21 |
| [비디오이미지프로세싱] - Linear Classification (0) | 2025.10.17 |
| [비디오이미지프로세싱] - 머신러닝(Linear Regression, Gradient Decsent) (0) | 2025.10.16 |