[ML] Neural Networks
인간의 뇌가 작동하는 방식을 모방한 수학적 모델을 Neural Networks 라고 부름.
데이터들이 가중치를 가진 네트워크 형태로 연결되어있고, 들어오는 신호가 강할 때만 해당 노드가 활성화되고 신호를 전달함.
가장 기초적인 역할은 데이터를 분류하는 것.
그냥 지금까지 한 것 처럼 Linear Function으로 공간을 두 개로 나누는거랑 똑같음.

기하 관점에서는 그래프그리는거고, 대수 관점은 g(x) > 0 이면 Class 1, g(x) < 0 이면 Class -1 이런식..
대수 관점에서 수식을 세워두면, 네트워크 형태로 표현할 때 입력값에 가중치를 곱해서 더하는 구조가 된다.

Multivariate 문제로 일반화하면, 신경망의 구조가 명확해진다.
1. Inputs, Weights
x0, x1.. 입력변수들이 들어온다. x0은 Bias를 위한 입력으로 1로 설정되어 있음.
각 입력은 w0, w1.. 가중치들과 곱해진다. (Bias)
2. Weighted Sum
입력값과 가중치를 곱하고 더해준다.
3. Activation Function
더해진 값을 특정 함수에 통과시켜 최종 출력을 만든다.
초기 모델은 0보다 크면 1 아니면 -1 이런식으로 출력이 간단한데, 이거 말고도 다양한 함수가 있음.
여기까지는 별다른게 없음.
데이터를 분류하기 위해 선을 그으려고 하고, 이를 위해 입력값 / 가중치를 통해 가중합을 구한다.
그리고 활성 함수를 통해 기준을 넘는지 확인한다.
Neural Network는 이름 그대로 뇌의 기본 단위인 Neuron의 구조를 따른다.


Dendrites가 다른 Neuron으로부터 신호를 받아들인다.
Synpase가 신호의 세기를 조절하듯, 가중치로 입력값의 중요도를 조절한다.
생물학적 구조를 수학으로 표현한 모델이 Perceptron 이다.
입력 벡터와 가중치 벡터를 내적하고 활성화 함수에 넣는 구조로 구성되어있다.

활성 함수는 가중합과 최종 신호 사이의 관계를 정의한다.
이진 분류를 사용할 때는 Threshold, 0~1 사이의 확률로 변환할 때는 Logistic 등.. 상황에 따라 적합한 활성 함수를 씀.
뇌의 신경세포를 흉내낸다. 입력 -> 가중치 곱 -> 가중합 -> 활성화함수 -> 출력
Neural Network는 단순한 선형 분류기가 아니라, 수학적 모델에 뇌의 구조를 차용함.
Ensemble Method 에서도 가중치를 구해서 계산하는 개념이 그대로 적용되는데, 가중치가 적용되는 범위가 다르다.
Perceptron은 단일 모델이고, Ensemble은 다중 모델을 사용하는게 가장 큰 차이점. 가중치도 입력 변수와 독립적인 모델의 출력에 적용됨.
Perceptron은 입력값에 가중치를 곱해서 더하고, 기준을 넘는지 판단하는 단위로 생각하면 됨.
AND 게이트와 유사한 문제는 굉장히 잘 푼다. Linearly Separable한 문제를 해결할 수 있음.
다만, 모든 데이터가 직선 하나로 깔끔하게 나뉘지 않는다. XOR 문제는 풀 수 없음. (Nonlinear Problem)
그래서.. Multi Layer Perceptron을 사용한다.
직선 하나로 해결할 수 없으면, Perceptron 하나가 직선 하나니까, 여러 직선을 사용하면, 여러 Perceptron을 사용해서 해결하자.
Ensemble Method에서 여러 모델을 사용하는 것 처럼, Perceptron도 여러 개를 사용하자.
Input Layer : 데이터를 받기만 하고 학습하지는 않는다.
Hidden Layer : 입력층과 출력층 사이에서 입력 데이터를 비선형적으로 변환하고 복잡한 Feature를 추출한다.
Output Layer : 분류, 회귀 등 결과를 내보낸다.
Input Layer의 노드들은 Perceptron이 아니고 데이터 그 자체임.
Hidden Layer에서 숫자를 조합해서 의미 있는 Feature를 찾아낸다. 겉에서는 안 보이니까 Hidden.
Output Layer에서 Hidden Layer의 결과를 취합해서 최종 결론을 내림.
여러 Layer가 없다면 입력값만 가지고 바로 결정해야 하는데, 이러면 너무 단순하니 풀 수 있는 문제가 제한된다.

목표는 4가지 점을 두 그룹으로 분할하기.
Input Layer : x1, x2
Hidden Layer : x1 + x2 +0.5 / x1 + x2 - 1.5
Output Layer : y1 - y2 -1
활성화 함수는 Step Function을 사용한다.
Hidden Layer의 y1은 너무 작은 것을 쳐내고, y2는 너무 큰 것을 골라낸다.
이 원리가 확장되면 아무리 복잡한 모양이라도 다 분류할 수 있음. (충분한 Neuron 과 Layer 가 있다는 가정)
Feed-Forward - Input -> Hidden -> Output 정방향으로 진행.
입력 데이터를 바탕으로 예측값을 계산해 출력한다.
Hidden Layer에서는 입력값과 가중치의 합을 계산함.
신경망을 학습한다는건, 복잡한 함수 내부의 모든 가중치를 최적화해서 데이터에 맞는 함수를 찾는 과정을 의미한다.
활성화 함수는 Hidden Layer와 Output Layer 에서 사용함.
Hidden Layer에서는 Non-Linearity를 추가해준다.
이게 없으면 층을 아무리 깊게 쌓아도 단순한 사칙연산의 반복이라 복잡한 연산을 처리할 수 없음.
Output Layer에서는 형식을 맞추기 위해서 사용함.
최종 결과가 확률이면 Sigmoid를, 객관식이면 Softmax 이런식으로.
Back-Propagation - Output -> Hidden -> Input 역방향으로 진행.
Feed-Forward로 계산한 예측값과 정답 간 오차를 확인하고 오차를 역방향으로 전파시키며 노드의 가중치를 수정한다.
아까 말했듯 해결하려는 문제가 객관식인지 확률구하기인지에 따라 마지막 단계의 활성화 함수를 다르게 사용해야 한다.
그리고 채점할 때 사용하는 Loss Function도 다르게 사용해야 함. (Cross-Entropy, Regression..)
채점이 끝나면 Loss가 나온다. 이 Loss를 줄이기 위해 가중치를 수정하는데, 이 때 Back-Propagation을 사용한다.
최종 오차가 발생에 대해 각 뉴런이 얼마나 기여했는지를 따지는 과정이다.
책임이 큰 가중치는 많이 수정하고, 책임이 적은 가중치는 조금 수정한다.
여기서 책임은 Gradient. 실제로 가중치를 수정할 때는 Gradient Descent를 사용한다.
Gradient는 가중치가 조금 변했을 때 Loss가 얼마나 크게 변하는지를 의미하는 Sensitivity니까 책임 == Gradient
손실함수 J(w)에서 오차가 가장 작은 곳으로 이동함. (한 방 미분이 안되는 이유는 Ensemble에서 다뤘음)
구조랑 학습 방법이 Ensemble Method랑 정말 비슷하긴 함.
다만 Ensemble 에서는 Back-Propagation을 안씀. (Decision Tree의 Discrete한 구조적 특성 때문)
입력층 바로 뒤에 있는 가중치가 오차에 얼마나 기여했는지를 알기 위해서는 Hidden Layer, 활성화 함수 등을 거쳐야 함.
즉, 오차를 뒤로 전달한다는건, 대수적으로 합성함수 미분을 의미한다. (Chain Rule)

코드를 제대로 짜도 학습이 안 될 때가 있음. Learning Rate 및 Local Optima 관련 문제.
Learning Rate가 너무 크면 최소치를 지나쳐 버릴 수 있고, 너무 작으면 말 그대로 학습 속도가 너무 느리다.
'Computer Science > Machine Learning' 카테고리의 다른 글
| [ML] Kernel Method (0) | 2025.12.07 |
|---|---|
| [ML] Deep Neural Networks (0) | 2025.12.06 |
| [ML] Ensemble Method (0) | 2025.12.05 |
| [ML] Decision Tree (0) | 2025.10.18 |
| [ML] Nearest Neighbor Method (0) | 2025.10.18 |
댓글
이 글 공유하기
다른 글
-
[ML] Kernel Method
[ML] Kernel Method
2025.12.07 -
[ML] Deep Neural Networks
[ML] Deep Neural Networks
2025.12.06 -
[ML] Ensemble Method
[ML] Ensemble Method
2025.12.05 -
[ML] Decision Tree
[ML] Decision Tree
2025.10.18