이 글은...
Andrew Ng 교수의 Deep Learning 강좌 C1W4L02까지의 내용을 정리한 것이다. 심층 신경망에서의 행렬 차원을 확인하는 방법을 설명한다.
내용 요약
행렬의 차원을 알맞게 만들기
각 층에서 만들어지는 행렬들의 차원을 혼돈하지 않기 위해서 확인하는 방법을 설명하였다. 아래와 같은 심층 신경망이 있을 때를 예시로 들었다.
각 층마다 계산하게되는 식은 $z^{[l]}=w^{[l]}a^{[l-1]}+b^{[l]}$ 이다.
$l=1$ 층에서 은닉층의 노드 수($n^{[1]}$)는 3이다. 따라서 $z^{[1]}$ 행렬의 크기는 (3, 1)이 되어야 한다. $a^{[0]}$의 크기는 입력 특성의 수 이므로 (2, 1)이다. 그러면 $w^{[1]}$의 크기는 (3, 2)가 되어야 하다는 것을 알 수 있다. 그리고 $b^{[1]}$은 $z^{[1]}$의 크기와 같은 (3, 1)이 되어야 한다. 마지막으로 활성값 $a^{[1]}$는 $z^{[1]}$의 크기와 같으므로 (3, 1)이다.
이런 방식으로 크기를 확인해보면 아래와 같이 정리될 수 있다.
행렬 | 차원의 크기 |
---|---|
$z^{[l]}$ | ($n^{[l]}$, 1) |
$w^{[l]}$ | ($n^{[l]}$, $n^{[l-1]}$) |
$b^{[l]}$ | ($n^{[l]}$, 1) |
$a^{[l]}$ | ($n^{[l]}$, 1) |
다음은 벡터화한 계산식에서 행렬 차원의 크기이다.
행렬 | 차원의 크기 |
---|---|
$z^{[l]}$ | ($n^{[l]}$, $m$) |
$w^{[l]}$ | ($n^{[l]}$, $n^{[l-1]}$) |
$b^{[l]}$ | ($n^{[l]}$, 1) |
$a^{[l]}$ | ($n^{[l]}$, $m$) |
여기서 $m$은 각 층의 입력 세트의 수를 의미한다. $b^{[l]}$의 크기가 이상하게 느껴질 수 있는데, 실제 계산에서는 NumPy의 브로드캐스팅에 의해서 크기가 ($n^{[l]}$, $m$)로 변환된다.
역전파로 계산될 때에도 행렬 크기는 위에 정리한 표와 같다.
'연구 노트 > 머신러닝' 카테고리의 다른 글
[TIL] 210423 - Deep LearniNg (~C1W4L05) (0) | 2021.04.23 |
---|---|
[TIL] 210422 - Deep LearniNg (~C1W4L04) (0) | 2021.04.22 |
[TIL] 210419 - Deep LearniNg (~C1W4L02) (0) | 2021.04.19 |
[TIL] 210415 - Deep LearniNg (~C1W5L01) (0) | 2021.04.15 |
[TIL] 210414 - Deep LearniNg (~C1W4L11) (0) | 2021.04.14 |