[Deep Learning]여러 개의 훈련 데이터set로 딥러닝 기반 신경망 알고리즘 적용/Neural Networks and Deep Learning/in multiple training examples/in several hidden layer
AI, Deep Learning Basics/Basic

[Deep Learning]여러 개의 훈련 데이터set로 딥러닝 기반 신경망 알고리즘 적용/Neural Networks and Deep Learning/in multiple training examples/in several hidden layer

*이 글은 Coursera: Neural Networks and Deep Learning(Andrew Ng)과 데이터 과학을 위한 통계(피터 브루스, 앤드루 브루스 지음)를 참조하여 작성되었습니다.

 

이 글을 읽기 위해서는 기본적인 미분 개념 및 행렬 개념(dimension 관련)이 필요합니다.

▶하나의 훈련데이터로 딥러닝 기반 신경망 알고리즘 적용하기(+신경망 기본 개념) :  https://jisuhan.tistory.com/9

 

이번 포스팅에서는...

하나의 훈련 데이터가 아닌 m개(여러 개)의 훈련 데이터 set을 바탕으로 신경망 알고리즘이 어떻게 작동하는지 알아보는 시간을 가질 것입니다!

 

신경망을 공부하는데 훈련 데이터 set들을 for loop으로 돌리기에는 너무 많은 시간이 들어서 행렬로 계산도 쉽게 바뀐 것인데요, 이것이 여러 개의 훈련 데이터들에는 어떻게 적용되는지 알아보겠습니다.

다량의 훈련데이터 set을 어떻게 처리하는지 일련의 과정을 보시겠습니다!

저번에 본 Layer 관련 사진을 일단 보시겠습니다! 이 Layer를 예시로 들어 어떻게 작동하는지 보도록 하겠습니다.

 

이 사진은

하나의 input, output layer, 3개의 hidden layer으로

나뉘어서 작동하는 모습을 보이고 있습니다.

 

 

 

이 사진에 Layer들과 Unit들을 행렬로 나타내 보겠습니다. 여기서는 

동그라미 안에 내용은 계산 과정(화살표)를 통해 나온 계산 결과를 나타내며,

이러한 동그라미들을 Layer안에 있는  Unit이라고 말씀드렸습니다!

 

 

 

이렇게 나타내지고, 이들을 행렬으로 나타내면 이런 형식으로 표현됩니다.

먼저 입력값X입니다!

X의 열 각각이 training set이고 각각의 열 안에 각각의 행들 값들이 training example로 이루어져 전체를 나타냅니다!

이 행렬의 차원은 옆에 나온 대로 나옵니다. 여기서 하나의 training set에 n(x) 개의 training example이 있음을 기호로 임의 설정하였습니다.

Layer안에 Unit의 값을 구하는 과정을 행렬과 관련하여 자세히 보도록 하겠습니다.

여기서 Z를 통해서 Layer A로 나타내야 하므로, Z는 A의 차원을 따라서 이렇게 표현됩니다.

이때 나타난 차원(알파)의 기호는 임의로 설정하였습니다. 

Layer A의 차원은 이렇게 Z와 같게 표현이 됩니다.

하나의 신경망에 들어가 나타나는 출력값

그러면 W, b는 어떻게 설정이 되는 것일까요?

먼저 결론부터 말씀드리면, W, B는 임의의 파라미터이기 때문에 행렬의 크기들은 Hidden Layer와 Imput Layer 들의 상황들에 따라 결정됩니다.

Z, X의 행렬로 W,B의 차원 추론하기

여기서 Z의 차원은(n(x), m), X는 (α[l], m)으로 계산이 된다고 하면 W는 Z, X의 행렬에 따라 자연스럽게(n(x),α[l])으로 결정됩니다. B는 행렬에 맞춰서 열은 1인 행렬을 갖추므로 (n(x),1)로 보시면 되겠죠.

+ Q. 여기서 b가 행렬에 맞지 않는데 계산이 어떻게 되는 건가요?

   A. 이러한 현상을 BroadCasting브로드캐스팅이라 불립니다. 이 부분에서는 세부적인 사항이라 간단히 말씀드리면, 두 행렬이 있다고 하면 두 행렬을 계산하는 데에 있어서 작은 부분이 큰 부분에 맞춰주는 규칙입니다. 밑에 예시를 보시면 더 이해가 쉬울 것입니다!

브로드캐스팅 예시

이처럼 m개의 훈련 데이터 set들에는 행렬을 통한 전체적인 계산으로 시간을 단축함을 알 수 있습니다!!

여기서 나오는 A [l] 행렬이 다음 hidden Layer의 입력값으로 들어가서 여러 개의 Hidden Layer의 계산이 수행됩니다. 여기서 간단하게나마 일반화를 시켜보시면 W [l]은 (α[l+1], α[l])의 차원으로 이루어진 것을 보실 수 있으실 겁니다!

이렇게 해서 여러 개의 training example 속에서 어떻게 Layer 들을 처리하는지 알아보는 시간을 가졌습니다!

 

긴 글 읽어주셔서 감사합니다!

이 글이 유익하셨다면 밑 버튼을 눌러서 후원하실 수 있습니다!

Buy me a MilkshakeBuy me a Milkshake