ML study

[네이버AI class] 6주차 (2) - MLP 뉴럴 네트워크

mlslly 2024. 6. 3. 11:04

 

Neural Networks

가장 간단한 형태의 뉴럴 네트워크를 알아보고, 딥러닝 학습이 무엇인지를 알아보자.

우선 뉴럴 네트워크란 무엇인가? 

 

설명 1 - 뇌와의 연관성  

 

뉴럴 네트워크란, 인간/동물의 뇌의 뉴런 구조에서 영감을 받아 설계된 컴퓨팅 시스템으로,

데이터 패턴을 인식하고 학습하는 데 사용된다.

("Neural networks are computing systems vaguely inspired by the biological neural networks that constitute animal brains")

인간의 뉴런을 구성하는 생물학적 요소들을 비유적으로 따오긴 했지만, 완벽히 인간의 뇌를 닮은 구조를 만들어서 성능이 좋은 모델을 개발했다기엔 어려운 지점이 있음. 개념적으로 뇌의 작동과 다른 부분들도 있기에 (역전파 등) 닮은 컴퓨팅 시스템으로 보는 것이 더 나을수도.

 

사람이 날고자 하는 욕망으로 새를 모방한 에비온 3 (1897)과 그 이후의 라이트 형제의 비행기, 현대의 비행기 등 처럼.

날고 싶다고 해서 새처럼 날 수 없는 (새처럼 날지 않아도 되는) 것처럼, 

인공지능 artificial intelligence 또한 인간의 뇌에서 아이디어를 착안했더라도, 그 발전 및 성능 개선을 위해 꼭 뇌의 작동 방식을 모방하는 것이 목표는 아님. 이미 매우 다른 방식으로 발전해오고 있음.

 

 

설명 2 - 수학적 설명 

 

위에서 언급한 인간의 뇌 개념 없이 Neural network를 설명한다면, 

뉴럴 네트워크는 선형 변환과 비선형 변환을 차례로 쌓아 올려서 함수의 형태를 근사하는 기법이다.

("Neural networks are function approximators that stack affine transformations followed by nonlinear transformations")

 

선형 변환(Affine transformation) 은 입력 데이터에 가중치 행렬을 곱하고 편향을 더하는 과정으로, 이 변환은 데이터를 다른 차원으로 변환하거나, 특징을 강조하거나 축소하는 데 사용된다.

비선형 변환 (Non-linear transformation) 은 활성화 함수를 의미하며 ReLU, Sigmoid 등이 있다. 

이러한 선형, 비선형 변환 과정을 여러 층에 걸쳐 반복함으로써, 뉴럴 네트워크는 복잡한 함수도 근사할 수 있다. 

(이미지, 음성, 자연어 처리 등의 다양한 문제 해결)

 

neural network의 단순 반복 구조
GoogleNet(2014)

 

예를 들어 Resnet, GoogleNet 의 구조를 보아도, 매우 deep한 레이어들 안에서, Convolution 레이어 - 활성화함수 레이어가 번갈아가면서 구성되고 있음 

 

Linear Neural Networks 

 

선형 뉴럴 네트워크란, 하나의 입력 층과 하나의 출력 층으로 구성되는 가장 간단한 형태의 신경망 (입력 1차원, 출력 1차원)

y = wx + b 의 함수를 나타낸다 (Linear Regression)

  • 입력층: 입력 벡터 x 가 들어오는 층으로, 입력 데이터의 특성(feature)을 의미한다 
  • 출력층 : 입력 데이터에 대한 예측값을 출력하는 층으로, 입력 벡터에 가중치(weight)를 곱하고 편향(bias)을 더해 출력 벡터 를 생성한다

여기서 학습의 목적은 loss를 최소화 하는 w와 b라는 파라미터의 값을 찾는 것.

loss가 줄어들어야 하니까, loss로 각각의 파라미터를 편미분 함으로써 w와 b를 찾아나간다.

w와 b를 각각 적절한 step_size씩만큼 loss에 곱해서 빼거나 더해주면서 업데이트 하는 작업. 

 

 

그림1. w 편미분 그림2. b 편미분 그림3. 업데이트 과정

 

단순히 1차원뿐 아니라 아래와 같이 행렬의 차원을 바꿔주는 선형 변환도 가능하다.

 

 

Non-Linear Neural Network 

 

딥러닝은 결국 뉴럴 네트워크를 얕지 않게, 깊게 여러개 쌓은 구조인데, 

하나 이상의 신경망을 효과적으로 쌓으려면 'Non Linearity'의 도입이 필요하다. 

 

두개의 선형 신경망을 연속으로 쌓는다고 할 때,

아래 왼쪽 그림에서, W2와 W1의 곱은 결국 하나의 matrix를 곱한 것과 별반 다르지 않게 된다 (하나의 새로운 선형 신경망과 같다) 

반면 오른쪽 그림에서는, 한번 선형 결합을 한 이후에 이를 activation function 을 통해 hidden layer를 비선형 변환을 거치도록 한 후, 그 다음 선형 결합을 하는 방식이다.

이런 선형 - 비선형 결합의 반복으로 N번을 반복하게 되면, 단순히 선형 결합만을 N번 반복했을 때 보다 훨씬 더 많은 표현력을 가진 신경망이 된다. 

 

그림1. 단순 두 Linear 신경망의 결합 그림2. Non Linearity를 포함한 두 신경망의 결합

 

 

MLP (Multi Layer Perceptron) 

 

앞서 설명한 비선형성을 포함하여 다층 신경망을 아래와 같이 2개 이상, 더 많이 쌓을 수 있다.

MLP는 여러 개의 히든 레이어를 가지는 깊은 신경망으로, 각 히든 레이어는 비선형 활성화 함수를 적용하여 데이터를 변환한다.

 

 

MLP는 더 많은 히든 레이어와 비선형 활성화 함수를 통해 데이터의 복잡한 패턴을 더 잘 학습할 수 있으며,

이는 손실 함수 값을 낮추는 데 효과적이나, 그만큼 과적합의 위험도 있다. 

딥러닝의 태스크 종류에 따라서 서로 다른 손실함수가 사용된다.

  • MSE : 평균 제곱 오차(Mean Squared Error, MSE)는 주로 회귀 문제에서 사용되는 손실 함수로, 예측값과 실제값 사이의 차이의 제곱을 평균한 값을 계산
  • CE : 교차 엔트로피(Cross-Entropy, CE)는 주로 분류 문제에서 사용되는 손실 함수로, 예측 확률 분포와 실제 레이블 간의 차이를 측정
  • MLE : 최대 우도 추정(Maximum Likelihood Estimation, MLE)은 주어진 데이터에 대한 모델의 파라미터를 추정하는 통계적 방법으로, MLE는 주어진 데이터셋에서 관찰된 데이터를 가장 잘 설명하는 파라미터 값을 찾음