계획의 시작 MLP입니다. MLP with 2 layer 모델로 MNIST 분류 문제를 풀어보겠습니다.
우선 아주 쉽게 축소하여 한번 가봅시다!
보통 Hidden layer의 수와 Output layer의 수를 합쳐서 layer 수를 결정하는 것으로 추정됩니다.
아마 곱해지는 행렬이 2개라서 그런것 같습니다.
[그림 1] 에 추상화된 MLP 모델이 그려져 있습니다.
Input layer를 [1 x 3] vector \(I\)
Hidden layer를 [1 x 4] vector \(H\)
Output layer를 [1 x 3] vector \(O\)
\(W^0\), \(W^1\) 은 행렬입니다.
행렬 곱셈에는 in(곱해지는 것)과 out(결과)을 알고 있다면 그 형태에 끼워 맞춘 행렬을 만들 수가 있습니다.
[그림 1] 예시에서 \(W^0\) 행렬의 형태는 3개의 node를 가진 input layer \(I\)와 4개를 가진 hidden layer \(H\)에 의해서 결정됩니다.
뭘까요~?
input layer \( I \)가 3개의 node를 갖고있기에 [1 x 3] 형태의 벡터라고 생각하고,
hidden layer \( H \)도 4개의 node를 갖고있으니 [1 x 4] 형태의 벡터라고 생각할 수 있습니다.
그러면~~ [1 x 3] 형태의 벡터가 [1 x 4] 형태의 벡터로 계산되어 지기 위해 \( W^0 \) 행렬은 [3 x 4]의 형태를 띄면 됩니다~!
input layer \( I \) 와 \( W^0 \) 행렬의 곱셈 결과는 [1 x 4]형태의 hidden layer \( H \)벡터를 얻을 수 있겠죠?
이를 수식으로 보시겠습니다.
같은 방식으로 output layer까지의 계산을 해보겠습니다.
여기에 사용된 # 기호는 갯수를 나타내는 기호 입니다. 예를 들어 [#나에게온카톡 = 0] 뭐 이런식입니다.
#input =3 , #hidden=4 #output = 3이 되겠네요.
첨자[문자 아래에 쓰여있는 작은 숫자]를 설정하는 것 에 어려움이 있으신 분들이 있을 줄로 압니다.
설명은 의미가 없고 직접 손으로 쓰시면 5분이내로 깨닫으실 겁니다.
힌트는? 패턴을 묶어낸다 입니다~
자 이제 추상화된 요약본은 이해가 되셨을거라 믿고 MNIST에 직접 적용해 보도록 하겠습니다.
'Have Done > MLP' 카테고리의 다른 글
MLP from Scratch with Numpy [5 / 7] - backpropagation1 (0) | 2022.01.06 |
---|---|
MLP from Scratch with Numpy [4 / 7] - feed forward 코딩 흐름 (0) | 2022.01.05 |
MLP from Scratch with Numpy [3 / 7] - Activation (0) | 2022.01.04 |
MLP from Scratch with Numpy [2 / 7] - feed forward2 (0) | 2022.01.03 |
MLP from Scratch with Numpy [0 / 7] - Classification 사전작업 (0) | 2022.01.03 |
댓글