Neural Networks
"Neural networks are computing systems vaguely inspired by the biological neural networks that constitute animal brains."
뉴럴 네트워크라는 단어 자체는 뇌 신경망인 것인데, 인간의 뇌를 모방했다는 뜻이다.
예를 들어, GoogLeNet
- Convolution 이라고 불리는 연산이 Relo가 되었던, 블록들이 반복해서 이뤄졌다.
ResNet도 마찬가지이다.
함수를 모방한다.
Linear Neural Networks
Linear Neural Networks, 대표적으로 Linear Regression 모델의 목표는 입력 특성(ex.1차원 또는 2차원 데이터)을 선형 함수로 연결하는 가장 기본적인 신경망 구조이다. 이 모델의 목적은 주어진 데이터에 대해 기울기(w)와 절편(b)이라는 두 개의 파라미터를 찾아내 입력과 타깃 사이의 최적의 직선을 도출하는 것이다.
회귀 문제에서 사용되는 Loss Function으로는 보통 MSE(Mean Squared Error)가 대표적으로 사용된다. 전체 n개의 데이터 샘플 각각에 대해 모델이 예측한 출력값과 실제 값 간의 차이를 모두 더해 평균을 내고, 이를 최소화하는 것이 학습의 핵심 목표가 된다.
이 과정을 수식적으로 최적화하기 위해 기울기 w와 절편 b에 대해 각각 편미분을 계산한다. 각각의 파라미터에 대한 손실 함수의 기울기를 구하여 파라미터가 손실 함수의 최소값에 다가가도록 업데이트를 반복적으로 수행한다. 이때 사용하는 대표적인 최적화 기법이 Gradient Descent 이다.
Gradient Descent 에서는 각 파라미터에 대해 손실 함수에 대한 편미분값(δ)을 학습률과 곱한 뒤, 그 값을 빼는 방식으로 w와 b를 계속 갱신한다.
Loss에 대한 파라미터 미분
- 각 파라미터(가중치 w, 편향 b)에 대해 기울기(gradient)를 계산한다.
∂w∂loss=∂w∂(N1i=1∑N(yi−y^i)2)=∂w∂(N1i=1∑N(yi−wxi−b)2)=−N1i=1∑N2(yi−wxi−b)xi
∂b∂loss=∂b∂(N1i=1∑N(yi−y^i)2)=∂b∂(N1i=1∑N(yi−wxi−b)2)=−N1i=1∑N2(yi−wxi−b)
Gradient Descent 업데이트
- 계산된 gradient를 바탕으로 w, b 값을 업데이트한다. 이때 η은 학습률(learning rate: Stepsize)이다.
- 오차를 줄이는 방향으로 w, b를 조정하면서 모델이 점점 더 정답에 가까운 예측을 하도록 학습된다.
w←w−η∂w∂lossb←b−η∂b∂loss
이런 과정은 파라미터가 움직일 때마다 loss function이 어떻게 변화하는 지 참고해 모델이 더 나은 직선을 그릴 수 있는 방향으로 학습한다. 반복적인 업데이트는 loss function이 최소가 될 때까지 진행하며 이때 파라미터인 w와 b는 데이터 전체의 패턴을 가장 근사하는 값이 된다.
N차원일 때, 행렬로 나타내면 된다.
y=WTx+b
- y : 입력 벡터(input vector), 차원 d×1
- WT : 가중치 행렬의 전치(transpose), 크기 m×d
- b : 편향 벡터(bias vector), 크기 m×1
- y : 출력 벡터(output vector), 크기 m×1
One way of interpreting a matrix is to regard it as a mapping between two vector spaces.
행렬을 곱하는 것에 대한 해석 : 두 개의 벡터 스페이스의 변환이라고 볼 수 있다.
Beyond Linear Neural Networks
네트워크를 여러 개로 쌓으려면, 히든 벡터를 이어붙이면 된다. 레이어에서 이뤄지는 연산은 가중치 행렬 W과의 행렬 곱이다.
이런 연산을 여러 번 반복한다고 해도 비선형 함수(activation function)가 없다면 단순히 여러 개의 선형 변환을 합성한 것일 뿐이다.
그래서 신경망의 표현력을 극대화하기 위해서는 각 레이어 사이에 비선형 함수(Nonlinear Transformation)를 넣어야 복잡하고 다양한 패턴을 학습할 수 있다. 시그모이드(Sigmoid) 함수, ReLU(Rectified Linear Unit) 함수, Hyperbolic Tangent가 여기에 해당한다.
이런 구조를 여러 번 반복하게 되면 결과적으로 비선형적이고 고차원적인 패턴까지 표현할 수 있게 된다.
English
There is a single hidden layer feedforward network that approximates any measurable function to any desired degree of accuracy on some compact set K.
Math
For every function g in Mr there is a compact subset K of Rr and an f∈Σr(Ψ) such that for any ϵ>0 we have
μ(K)<1−ϵ and for every x∈K we have
∣f(x)−g(x)∣<ϵ, regardless of Ψ, r, or μ.
- 임의의 함수 g에 대해 신경망 함수 f가 충분히 근사할 수 있다는 것을 수학적으로 서술하고 있다.
Multi-Layer Perceptron
This class of architectures are often called multi-layer perceptrons.
y=W2Th=W2Tρ(W1Tx)
- W1,W2 : 각각 1층, 2층의 weight matrix
- ρ : 비선형 활성화 함수(ex. ReLU, sigmoid)
- h : hidden layer
- x : 입력 벡터
- y : 출력값
더 깊게 갈수도 있다..
What about the loss functions?
딥러닝에서 Loss Function은 모델이 학습 과정에서 무엇을 기준으로 잘하고 있는지 판단하게 해주는 핵심 지표이다.
Task의 종류에 따라 최적의 Loss는 달라지며, 정확한 문제 정의가 Loss 선택에 직접적인 영향을 미친다.
- Regression Task
회귀 문제는 연속적인 실수값을 예측하는 문제이다.
따라서 모델이 출력한 값과 실제 값 사이의 오차를 최소화하는 것이 핵심이다.
MSE나 MAE와 같은 이런 Loss 들은 출력 벡터의 절대적인 크기나 방향이 정답과 얼마나 가까운지를 기반으로 학습을 유도한다.
- Classification Task
분류 문제에서는 모델이 여러 클래스 중 어떤 클래스가 확률적으로 가장 유력한지 예측하는 것이 목표이다. 모델 출력은 보통 각 클래스에 대한 확률 분포 형태로 나타나며 정답 클래스의 확률이 가장 높아지도록 학습하는 것이 중요하다.
정답 클래스의 인덱스에 해당하는 출력값만 높아지면 되는 구조이므로, 나머지 클래스보다 해당 클래스에 대한 확신을 높이는 것이 중요하다.
하지만 이 방식이 언제나 분류 문제에 최적인가에 대한 의문을 가져볼 수 있다.
- Probablitistic Task
확률 기반 문제에서는 단순히 맞추는 것이 아니라, 모델이 얼마나 확신을 가지고 예측하는가가 중요하다. 이때 확률 분포 간의 유사도, Likelihood, 정보 이론 기반의 지표를 Loss로 사용한다.
이런 Loss는 단순한 분류 정확도를 넘어 예측의 불확실성이나 모델의 신뢰도까지 반영할 수 있도록 한다.
REFERENCE