Neural Network 표기법(Feat: Andrew NG)

Neural Network 예제
그림 1: Neural Network 예제

Neural Network에 대한 Forward Propagation, Backpropagation, predict, Cost Function 등을 정리할 때 뉴럴 네트워크의 구성 요소와 각 위치가 혼동되어 어려움을 겪는 경우가 많습니다. Coursera에서 deeplearning.ai가 진행하는 Neural Networks and Deep Learning 강의에서 Neural Network 표기법 잘 정리하고 있습니다. Andrew NG 교수가 소개한 Neural Network 표기법을 정리합니다. 이 표기법을 사용하면 Neural Network의 여러 수식과 알고리즘을 다룰 때 혼동을 최소화 할 수 있습니다.

Neural Network의 레이어 표기법

Neural Netowk의 레이어 표기법은 Input Feature를 “Layer 0”로 표시합니다. 첫 번째 Hidden Layer부터 “Layer 1”, “Layer 2”로 표기합니다. Hidden Layer와 Output Layer의 개수를 “L”문자로 표기합니다.

표기 구분 설명
L=5 #layers Neural Newwork 레이어 수
layer 0 layer 지정자 Input Feature 레이어
layer 1 layer 지정자 첫번째 은닉층
layer 2 layer 지정자 두번째 은닉층
layer 3 layer 지정자 세번째 은닉층
layer 4 layer 지정자 네번째 은닉층
layer 5 layer 지정자 출력층

각 레이어의 node 수는 다음과 같은 형식으로 표현합니다. 아래 형식에서 (소문자 L)은 레이어 번호입니다.

$$ n_x: Number of Input features \\
n^{[l]}: Number of Layer’s node $$

각 레이어의 노드 수는 다음과 같이 표현할 수 있습니다.

표기 노드 수 설명
$$n_x=n^{[0]}$$ 3 input feature 수
$$n^{[1]}$$ 5 layer 1의 노드 수
$$n^{[2]}$$ 5 layer 2의 노드 수
$$n^{[3]}$$ 5 layer 3의 노드 수
$$n^{[4]}$$ 3 layer 4의 노드 수
$$n^{[5]}=n^{[L]}$$ 1 layer 5의 output layer의 노드 수

Neural Network의 표기법

각 레이어에 대한 z, activation function, output, Weights 및 Bias에 대한 표기법을 다음과 같이 정리할 수 있습니다.

표기 형식 유형 설명
$$z^{[l]}$$ Sum-Product(z) 지정된 레이어의 sum-product의 컬럼 벡터
$$g^{[l]}$$ activation function 지정된 레이어가 사용하는 activation function
$$a^{[l]}$$ output 값 sum-product에 activation이 적용된 출력 컬럼 벡터
$$W^{[l]}$$ 가중치(weights) 지정된 레이어의 Weight
$$b^{[l]}$$ 편향(bias) 지정된 레이어의 bias

표기법 사용 예제

위 표기법을 사용하여 그림 1은 다음과 같이 정리할 수 있습니다.

항목 설명
$$L$$ 5 네트워크 레이어 5개
$$n_x$$ 3 input feature 3개
항목 layer 1 layer 2 layer 3 layer 4 layer 5
레이어별 노드 수 $$n^{[1]}=5$$ $$n^{[2]}=5$$ $$n^{[3]}=5$$ $$n^{[4]}=3$$ $$n^{[5]}=1$$
레이어별 활성 함수 relu relu relu relu sigmoid
레이어별 Weight의 shape $$W^{[1]}=(n^{[1]},n_x)$$ $$W^{[2]}=(n^{[2]},n^{[1]})$$ $$W^{[3]}=(n^{[3]},n^{[2]})$$ $$W^{[4]}=(n^{[4]},n^{[3]})$$ $$W^{[5]}=(n^{[5]},n^{[4]})$$
레이어별 bias의 shape $$w^{[1]}=(n^{[1]},1)$$ $$w^{[2]}=(n^{[2]},1)$$ $$w^{[3]}=(n^{[3]},1)$$ $$w^{[4]}=(n^{[4]},1)$$ $$w^{[5]}=(n^{[5]},1)$$

<그림 1>의 Neural Network의 표기법을 그림으로 정리하면 <그림2>와 같습니다.

Neural Network 표기법 적용
그림 2: Neural Network 표기법 적용

Neural Network의 표기법 확장

위에서 설명한 표기법은 기본적으로 레이어 단위입니다. 레이어 하위인 단위 노드와 여러 데이터 입력에 대한 입력 데이터 단위로 표기법을 확장할 수 있습니다.

$$ P^{[l](nth)}_{nid} $$

  • P: 표기 항목
  • l: 레이어 번호
  • nid: 레이어의 node 번호
  • nth: n 번째 입력 데이터

nid와 nth를 이용하여 특정 입력 데이터와 특정 노드 지정이 가능합니다.

표기법 확장 예제

확장된 표기법은 다음과 같이 사용할 수 있습니다.

예제 설명
$$a^{[1]}$$ layer 1의 출력 벡터
$$a^{[1]}_1$$ layer 1의 첫번째 노드의 출력 값
$$a^{[1](3)}$$ 3번째 입력 데이터에 대한 layer 1의 출력 벡터
$$a^{[1](3)}_1$$ 3번째 입력 데이터에 대한 layer 1의 첫 번째 노드 출력 값

참고자료

김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com