Neural Network 표기법(Feat: Andrew NG)
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의 표기법 확장
위에서 설명한 표기법은 기본적으로 레이어 단위입니다. 레이어 하위인 단위 노드와 여러 데이터 입력에 대한 입력 데이터 단위로 표기법을 확장할 수 있습니다.
$$ 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의 첫 번째 노드 출력 값 |