스터디/Deep Learn

2. MLP

elenalee 2024. 9. 23. 13:33

1. Multi Layer Perceptron

- 여러개의 결정경계를 학습할수 있는 퍼셉트론 

 

1) Multi-Layer의 구성 

(1)다층 퍼셉트론 

- 입력층과 출력층 사이에 1개이상의 층이 있는 FeedForward 신경망 

- 여러개의 경계를 구성하여 적절한 분류가능 

 

 

① Hidden Layer

- 은닉층을 이용한 다양한 경계의 표현이 가능

- 내부층의 레이블이 제공되지 않음 ( 관련 학습 알고리즘 필요 )

 

(2) Back Propagation(역전파)

- 1974년 Paul Werbos, 1986년 Rumelhart등이 발표한 Feedforward신경망의 학습 알고리즘

- Rumelhart의 논문에서는 활성함수로 시그모이드 함수 (모든 u값에 대해 미분값 계산가능)

 

① Gradient Descent

- 함수의 결과값을 가장 minimum으로 이동하기 위해 gradient descent를 이용해 update

- 함수를 특정 벡터(파라미터)로 미분한 값은 contour와 직교하며, 가장 급격한 경사값

- 여러개의 벡터로 편미분한 결과의 행렬 

 출력층 연결가중치 ( 경사하강법에 의한 Backpropagation ) 

- 손실함수를 가중치에 대해 미분하여 얻은 Gradient Descent의(-)로 뉴런의 가중치를 update 

- Gradient Descent(활성함수(𝝁)를 통해 얻은 추정치와 레이블의 연산결과인 𝜹값*해당 뉴런의 입력)

 

 

 은닉층 연결가중치 ( 경사하강법에 의한 Backpropagation ) 

- 손실함수를 가중치에 대해 미분하여 얻은 Gradient Descent의(-)로 뉴런의 가중치를 update 

- Gradient Descent(출력층에 가까운 층부터 연산되어 이미 저장된 𝜹값*해당 뉴런의 입력)

 

(3) Momentum

- 가속기법을 이용한 경사하강법의 개선

- 𝝎의 변화량을 속도의 개념으로 보고, 이전 시점의 속도를 일정 비율(m)로 반영

 

2) 실습

 

1) Dense층 

① variables

self.nIn , self.nOut : 완전연결층의 입력 및 출력

self.w, self.b : 가중치 & bias

self.activation : 활성함수

self.dE_du : ∂E/∂u

slef.do_du : ∂O/∂u계산

self.velocity_w , self.velocity_b : 모멘텀을 적용한 가중치 변화량

self.in_vec, self.out_vec : 역전파를 위한 층의 입력과 출력값 저장변수 

 

② methods

__init__ (self, nIn, nOut, activation='sigmoid', loss='mse') : 완전연결층의 입출력갯수 & 함수

output (self, X) : 입력 X에 대한 출력계산

gd(self, dw, db, momentum = 0) : gradient descent 적용으로 w,b갱신

dE_du_sigmoid_mse(self, y) : 손실함수 MSE일때 적용되는 ∂E/∂u계산

dE_du_sigmoid_ce(self, y) : 손실함수 CE일때 적용되는 ∂E/∂u계산

do_du_sigmoid(self) : 시그모이드 함수에 대한 ∂o/∂u계산

 

2) BP_Model (역전파 학습을 하는 피드포워드 모델 클래스)

 Instance variables

self.nLaysers: 모델의 층수

self.layers : 모델을 구성하는 완전연결층의 배열

self.ohe : 레이블을 ont-hot encoding한 벡터의 배열(3가지이므로 1,0,0/0,1,0/0,0,1)

self.loss : 손실함수

 

 methods

__init__ (self, nUnitList,  loss='mse' , activation_h='sigmoid' , activation_o='sigmoid')

nUnitList : 층의 입출력 List  예) [2,4,3,1] : 3개층, 2개→4개(1층),4개→3개(1층),3개→1개(1층)

predict(self, X) : 입력 표본 X(배열형태) 에 대한 출력을 추론

fit (self, X, y, N, epochs, eta=0.01, momentum=0 ) : N개의 입력표본배열X와 레이블 y로 모델훈련

 

2. Multi Layer Perceptron_다중 클래스 분류

- label이 3개 이상으로 주어지는 다중 클래스 분류

 

1) Multi-Layer와 다중출력의 구성

 

(1) 다층 퍼셉트론 _ 다중 클래스

- 여러 개의 출력 클래스를 구성하여 가장 확률값이 높은 class로 출력

- 출력은 one-hot encoded label제공 

 

① softmax함수 

- 다중 클래스 분류문제에서 출력층의 활성함수로 적합한 함수 

- 출력은 클래스 집합의 확률분포를 나타내는 값 

 

 

교차 엔트로피 (cross entropy) _ 손실함수 

- 추정된 확률분포와 레이블에 해당되는 확률분포의 차이를 측정하는데 적절한 손실함수

- softmax함수와 함께 사용됨 

 

 

연결가중치와 최종 출력

- 손실함수를 가중치에 대해 미분하여 얻은 Gradient Descent의(-)로 뉴런의 가중치를 update 

- 이전 단계의 𝜹를 이용하여 은닉층의 가중치 조정

- 최종적으로 가장 높은 확률을 나타내는 index의 class로 출력  

 

2) 실습 

 

 

'스터디 > Deep Learn' 카테고리의 다른 글

6. AutoEncoder & GAN , RNN  (0) 2024.09.29
5. Deep CNN  (0) 2024.09.27
4. CNN Basic & LeNet5  (0) 2024.09.27
3. 프레임 워크와 학습 기술  (0) 2024.09.25
1. 인공신경망과 퍼셉트론  (0) 2024.08.31