본문 바로가기

23년 2학기 학교공부/기계학습

[ML] Neural Networks

728x90
반응형
SMALL
2023학년도 2학기 충남대학교 양희철 교수님의 기계학습 수업 정리자료입니다.

 

 

 

 

📁 Neural Networks (NN)

우리 뇌의 신경은 여러 감각기관들로부터 신경을 전달받아 여러 뉴런을 거쳐 뇌로 이동한 뒤, 뇌가 해당 값을 이용해서 어떠한 결정을 내리는 방식으로 동작한다. Neural Network란 이러한 뇌의 신경망을 모방한 수학적 모델을 말한다.

 

data가 입력되었을때 해당 값에 특정 웨이트를 곱하거나 더하면서 뉴런을 통과하며, 이때 각각의 뉴런에서 전달받은 신호가 임계값을 넘는 경우에 해당 노드가 활성화되어 다음 노드로 값을 전달하고, 그렇지 않으면 아주 작은 값이므로 무시하는 방식으로 동작한다.

 

Bayesian classifier, support vector machines, decision tree 등 대부분의 classificaiton 및 regression 알고리즘은 neural networks 중 하나의 특별한 형태로 표현될 수 있다.

 

 

 

 

🌙 Classification 문제

뉴럴 네트워크로 표현할 수 있는 가장 기본적인 문제인 classification 문제를 살펴보자.

 

위 그래프를 살펴보면 feature가 x1, x2 두개 존재하고, 데이터들이 1과 -1 두 개의 클래스로 분류된다. 이 데이터들을 linear function을 만들어서 분류할 수 있으면 Linear Separability를 가진다고 한다.

 

이런 경우, 우리는 linear function의 x1와 x2의 계수인 w1와 w2를 조절하여 더 적합한 함수를 구할 수 있다. 즉 두 클래스를 linear 형식으로 분류하는 문제는 곧 이런 계수를 결정하는 문제와 같다고 볼 수 있다.

 

 

우리가 표현하고자 하는 linear function을 뉴럴네트워크 형태로 표현하면 오른쪽과 같이 그릴 수 있다. 오른쪽 그림을 해석해보면 입력 x1와 x2를 받아서 각각 웨이트 w1, w2를 곱하고, 마지막으로 w0를 더한 값이 0보다 크면 1, 작으면 -1을 출력함을 뜻한다.

 

해당 모델링을 더욱 일반화해보면, feature의 개수가 여러개일 경우에는 여러 개의 입력이 들어오도록 표현할 수 있다.

 

 

이때 linear machine에서 사용하는 용어는 다음과 같다.

위에서 마지막에 더해주었던 w0은 입력괎과 무관하게 더해지는 값으로, Bias와 같다.

 

 

 

 

🌱 Perceptron

 

뉴럴네트워크 방식은 1957년부터 제기되어왔고, 이후 하드웨어가 발전하면서 약 2001년 이후 더 활발히 연구가 시작되었다.

 

이때 1957년에 Rosenblatt에 의해 고안된 Perceptron이라는 알고리즘은 NN의 기원이 되는 알고리즘으로, 다수의 신호를 입력으로 받아 입력신호 각각에 고유한 가중치를 부여하여, 최종적으로는 하나의 신호를 출력하는 방식을 기반으로 동작한다.

 

 

 

 

🌱 Activation function

뉴럴네트워크에서 Activation function의 역할은 앞에서 들어온 데이터에 대해 weight를 적용한 output을 출력하는 것으로, 지금껏 sigmoid 함수 형태와 가까운 함수를 사용해왔지만 다른 형태의 함수도 많이 사용된다.

 

 

activation function을 사용하는 간단한 예시를 살펴보자.

현재 세 개의 데이터가 있고, 1번 데이터가 동그라미, 2, 3번 데이터가 네모 클래스를 가졌으며 주어진 정보는 위와 같다고 하자.

 

이때 위에서 주어진 정보들로 어떤 activation function을 사용하느냐에 따라 결과가 달라질 수 있기 때문에, activation function의 모델링이 중요하다.

 

 

Activation function for output units

2-class classification

보통 이진 분류 문제에서는 activation function으로 sigmoid 함수를 사용한다.

 

 

Multi-class classification

클래스가 2개보다 더 많은 경우, 분류할 때 activation function으로 softmax units을 주로 사용한다.

 

 

Regression

위에서 들었던 예시처럼, regression의 경우에는 activation function으로 보통 linear units을 사용한다.

 

 

 

 

🌱 Loss Function

 

Classification

Classification 문제에서는 일반적으로 cross-entropy를 loss function으로 사용하여, 이를 최소화하고자 한다.

 

Regresion

Regression 문제에서는 일반적으로 MSE를 loss function으로 사용하며, 이를 최소화하고자 한다.

 

 

 

 

 

📁 Multilayer Perceptron (MLP)

인간의 몸에서도 뉴런 하나만 통과하지 않는 것처럼, NN에서도 여러개의 뉴런이 필요하다. 위에서 지금까지 모델링 한 Perceptron은 linear seperability를 가진 문제는 해결할 수 있겠지만, nonlinear classification 문제너 더 복잡한 문제에 대해서는 여러 개의 뉴런이 필요하기 때문에, 이를 위해 Multilayer Perceptron 개념이 도입되었다.

 

Multilayer Perceptron은 input이 들어오면 각각의 weight를 처리한 뒤 output을 내는 기존의 방법과 달리, input에 weight 및 activation function 처리 후 나오는 output을 다음 레이어의 노드에 input으로 전달하는 방식으로, 이렇게 여러겹의 layer를 통과한 후에 최종 output을 구한다.

 

만약 아래와 같은 데이터가 주어질 때, 첫번째 layer 부분을 계산하면 가운데와 같은 그래프가, 두번째 layer 부분을 계산하면 오른쪽과 같은 그래프가 나온다. 즉 multilayer perceptron이 nonlinear 문제를 해결해 줄 수 있지만, layer를 하나씩 뜯어보면  각각은 linear classifier역할을 한다는 것을 볼 수 있다.

 

 

 

대표적인 Nonlinear classification 문제에는 XOR 연산이 있다.

 

 

 

multilayer perceptron으로 해결할 수 있는 nonlinear classification 문제 중 또 다른 예시로는 Universal Approximation Theory가 있다.

 

 

 

 

📁 Feedforward Process와 Back Propagation

input 데이터가 들어오는 layer를 input layer, output이 나가는 layer를 output layer, 이외에 중간 layer들을 hidden layer라고 부른다.

 

 

이때 input을 받아서 input layer에서 weight를 곱한 후 activation function을 통과해서 hidden layer로 전달되고, hidden layer에서도 방금 전달받은 값에 weight를 곱한 후 activation function을 통과하고 다음 layer로 전달하는 과정을 Feed-Forward Process라고 한다. 즉 input을 넣어서 output을 도출하는 과정을 말한다.

 

뉴럴네트워크 모델을 학습하기 위해서는 적절한 output을 내기 위한 weight를 구하는 과정이 필요하다. 먼저 output 값을 보고 실제 값과 loss function을 통해 오차 계산 후 이전 weight에 반영한다. 이후 앞으로 가서 그 이전 weight를 업데이트하는 이러한 과정을 Back-Propagation이라고 한다.

 

 

 

🌱 Feed-Forward Process

Feed forward process의 예시를 들어보자. 다음 예시의 경우 input layer에 feature 세개, hidden layer 한 층에 노드 4개, output layer에 노드 두 개가 있다.

 

먼저 input layer에서 hidden layer로 향하는 계산은 다음과 같이 진행한다.

 

이후 hidden layer에서 output layer로 향하는 계산은 다음과 같이 진행한다.

 

 

즉 k번째 output node의 값을 나타내는 z(k)는 다음과 같이 계산된다.

 

 

 

 

🌱 BackPropagation

 

 

728x90
반응형
LIST