본문 바로가기
Studies & Courses/Machine Learning & Vision

[ML/DL] 수포자가 이해한 2-Layer Neural Net의 vector form

by Air’s Big Data 2021. 1. 5.

*본 포스팅은 중학교때 수학을 놓아버린 수포자가 기계학습을 이해하기 위해 만든 자료이오니 정확한 정보가 아닐 수 있습니다. 

 

Python으로 2층 신경망 구현 과제를 하면서 score 계산을 위한 Dimension과 Neural Net의 vector form의 이해가 필요하여 복습을 진행하였습니다. 이 글에서 이해하고자 하는 2층 신경망의 구조는 아래 같으며, Dx1, MxD 등과 같은 vector가 무엇을 의미하는지 살펴봅시다.

 

2-Layer Neural Net in a vector form

먼저 vector derivatives와 matrix multiplication에 대해 알아봅시다. 

 


Vector Derivatives (벡터 도함수) 

  • Scalar to Scalar: scalar 형태인 x가 조금씩 변할 때 scalar 형태인 y가 얼마나 바뀔까? → Regular derivate (Scalar 형태) 
  • Vector to Scalar: vector형태의 x의 각 원소가 조금씩 변할 때 scalar 형태인 y가 얼마나 바뀔까? → Gradient
  • Vector to Vector: vector형태의 x의 각 원소가 조금씩 변할 때 vetor 형태인 y가 얼마나 바뀔까? → Jacobian

N개의 x(=input)이 있고, M개의 y(=output)을 가지는 신경망은 Matrix form을 사용합니다. 

 


Matrix (행렬)과 Matrix multiplication (행렬곱)

행렬은 숫자로 구성된 표정도로 이해하면 되며, 관행적으로 행(row)을 먼저 쓰고, 열(column)을 그 다음에 씁니다. 그리고 행렬과 행렬을 곱하는 것을 행렬곱이라고 합니다. 

 

 


1-Layer Neural Net (with MSE Regression Loss)

 

 이 행렬곱은 신경망에서 weight를 표현할 때 사용 할 수 있습니다. (hidden layer가 없는) 1층 신경망을 행렬로 표현하면 아래와 같습니다. 

 

 

Input인 X는 D개의 벡터이며, bias인 b와 output인 y는 M개의 값을 가진 벡터입니다. 그리고 weight인 W는 W의 전치행렬의 M개이므로 D X M개가 됩니다. 이를 간단한 vector form으로 표현하면 아래와 같습니다.

 

여기서 z는 활성화함수인 sigmoid를 거치기 전 (pre-activation) scores를 의미하며, p는 sigmoid를 거친 후 scores를 의미합니다.

 


2-Layer Neural Net (with MSE Regression Loss)

 

은닉층이 있는 2층 신경망의 경우, W1, b1 뿐만 아니라 은닉층에서 나가는 W2, b2도 존재합니다. 이에 따라 z2, p2도 있습니다. 이를 vector form으로 표현하면 아래 그래프를 보시면 z와 p가 두 번씩 나오는 것을 알 수 있습니다. 

 

 


요약

1-Layer Neural Net

  • x(Input): Dx1개의 벡터
  • b(bias): Mx1개의 벡터
  • y(output): Mx1개의 벡터
  • W(weight): W의 전치행렬 M개 = D X M개의 벡터 (행렬곱)

2-Layer Neural Net 

  • K: 2층 신경망에서 y(output)의 vector의 행 개수
  • Z1, Z2: sigmoid를 거치기 전 점수
  • P1, P2: sigmoid를 거친 후 점수

 

 

댓글