ML
[TIL] 210423 - Deep LearniNg (~C1W4L05)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W4L05까지의 내용을 정리한 것이다. 심층 신경망의 계산 과정을 대략적으로 흝어보았다. 내용 요약 심층 신경망 네트워크 구성하기 $l$번째 층을 기준으로 볼 때 입력은 $a^{[l-1]}$이고 출력은 $a^{[l]}$이 된다. 이 때 계산 과정에서 얻게되는 $w^{[l]}$, $b^{[l]}$ 그리고 $z^{[l]}$은 역전파 계산에 사용되므로 캐싱하도록 한다. 역방향으로 계산될 경우에 입력은 $da^{[l]}$이고 출력은 $da^{[l-1]}$이다. 이 계산과정에서 캐싱해두었던 $w^{[l]}$, $b^{[l]}$ 그리고 $z^{[l]}$를 사용하면 효율적으로 처리할 수 있다. 역방향 전파의 계산 과정에서 얻어지는 $dw^{[l..
[TIL] 210422 - Deep LearniNg (~C1W4L04)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W4L04까지의 내용을 정리한 것이다. 심층 신경망이 좋은 결과를 낼 수 있는 이유에 대해 설명하였다. 내용 요약 심층 신경망이 더 많은 특징을 잡아낼 수 있는 이유 심층 신경망이 왜 잘 작동할 수 있는지에 대한 직관을 심어주는 내용이었다. 크게 두 가지 직관을 설명하였다. 첫 번째 직관은 신경망이 깊을수록 아주 단순한 특징부터 시작해 복합적인 특징을 학습할 수 있다는 것이다. 얼굴 인식을 예로 들면 처음에는 여러 방향의 경계 특징(edge)을 인식하다가 층이 깊어질수록 눈, 코, 입, 귀와 같은 특징을, 마지막에는 얼굴 전체 학습하여 특정할 수 있다. 음성 인식에서는 단순한 노이즈 수준의 특징부터 시작해 음소 단위, 단어, 문장 ..
[TIL] 210420 - Deep LearniNg (~C1W4L03)
이 글은... 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)가 되어야 하다는..
[TIL] 210419 - Deep LearniNg (~C1W4L02)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W4L02까지의 내용을 정리한 것이다. 심층 신경망에서의 정방향 전파 수행 방법을 살펴본다. edwith에 공개된 강의 순서대로 공부하다 보면 내용이 조금 이상한 점이 있다. 앞서 배운 C1W4L01 내용 뒤에 C1W4L06이 나오기 때문이다. 해당 강의 내용은 순서에 맞게 나중에 정리하도록 한다. 내용 요약 심층 신경망에서의 정방향 전파 얕은 신경망에서의 정방향 전파와 다른 점이 없다. 단인 세트에 대한 계산식은 아래와 같다. $z^{[l]} = w^{[l]}a^{[l-1]}+b^{l}$ $a^{[l]} = g^{[l]}(z^{[l]})$ 그리고 이것을 벡터화한 식도 얕은 신경망의 것과 다르지 않다. $Z^{[l]} = W^{[l..
[TIL] 210415 - Deep LearniNg (~C1W5L01)
더 많은 층의 심층 신경망 깊은 신경망이란 은닉층이 여러층 있는 신경망을 의미한다. 정확한 경계 수치가 있는 것은 아니고 상대적인 의미인 듯하다. 로지스틱 회귀는 1층짜리 신경망이다. 이에 비해 3층짜리 신경망은 1층짜리보다 '깊다'고 할 수 있다. 반대로 3층짜리 신경망은 아래 그림과 같은 5층 짜리 신경망보다는 얕은 모델(shallow model)이라고 말할 수 있다. 앞으로 깊은 신경망 네트워크를 살펴볼 때 사용할 표기법을 정리하였다. $L$: 네트워크 층 수 $n^{[l]}$: $l$층에 있는 유닛 수 $a^{[l]}$: $l$층의 활성값 $a^{[0]}$: 입력 특성 ($=X$) $a^{[L]}$: 출력된 예상 값 ($=\hat{y}$)
[TIL] 210414 - Deep LearniNg (~C1W4L11)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W3L11까지의 내용을 정리한 것이다. 강의는 앞에서 배운 신경망 네트워크의 경사 하강법의 미분 관련 내용을 자세히 설명하였다. 그리고 각 층의 가중치 초깃값을 설정하는 방법에 대해서도 설명하였다. 내용 요약 역전파에대한 이해 쉽게 이해하기 어려웠다. 완전히 이해하지 못해도 알고리즘 구현에 큰 문제는 없다고 하니 일단 넘어가기로 했다. 필요하다면 다음에 충분한 시간을 가지고 이해해보기로 한다. 랜덤 초기화 신경망에서 가중치 $w$의 초깃값을 0으로 하면 안 된다. $b$ 값은 상관이 없다. 하지만 $w$값을 0으로 설정하고 시작하게 되면 어떤 입력 특성을 주어도 같은 결과가 나오기 때문이다. 그러면 여러 은닉층을 가지고있어도 하나의..
[TIL] 210413 - Deep LearniNg (~C1W3L09)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W3L09까지의 내용을 정리한 것이다. 활성화 함수의 미분과 경사 하강법을 구현하기 위한 식을 살펴보았다. 내용 요약 활성화 함수의 미분 앞서 살펴본 활성화 함수의 미분을 알아보았다. sigmoid $g'(z) = g(z)(1-g(z))$ Tanh $g'(z)=1-(g(z))^2$ ReLU $g'(z)=0$ (z = 0 인 경우) Leaky ReLU $g'(z)=0.01$ (z = 0 인 경우) 신경망 네트워크와 경사 하강법 경사 하강법을 구현하기 위한 식을 알아보았다. 미분을 이해할 수 있으면 좋겠지만 ..
[TIL] 210410 - Deep LearniNg (~C1W3L07)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W3L07까지의 내용을 정리한 것이다. 활성화 함수의 종류와 비선형 함수를 사용해야 하는 이유에 대해 알아보았다. 내용 요약 활성화 함수 활성화 함수는 여러 종류가 있을 수 있다. 지금까지는 시그모이드 함수만 다루었는데, 이를 대체할 수 있는 대표적인 활성화 함수를 알아보았다. Tanh $a={{e^{z}-e^{-z}}\over{e^{z}+e^{-z}}}$ 형태가 시그모이드와 유사하게 생겼다. 원점을 지나고 기울기가 다르다. 출력값 범위가 -1과 1 사이이다. 평균이 0이기 때문에 데이터가 원점을 중심으로 이동하게 된다. ReLU (Rectified Linear Unit) $a=max(0,z)$ 활성화 함수 입력값이 0보다 클 때 ..