분류 전체보기
[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 인 경우) 신경망 네트워크와 경사 하강법 경사 하강법을 구현하기 위한 식을 알아보았다. 미분을 이해할 수 있으면 좋겠지만 ..
수식을 그래프로 그릴 때 필요한 툴
딥러닝 공부를 하던 중 그래프를 그리고 싶다는 생각이 들어서 그래프를 그릴 수 있는 툴을 찾아보았습니다. 더 많은 전문적인 툴이 있겠지만 여기서는 제가 사용해본 툴 2가지만 소개합니다. Windows 10 기본 계산기 장점 최신 Windows 10을 사용하고 있다면 별도의 설치 없이 바로 사용 가능하다. 단점 표현하지 못하는 함수가 있다. 윈도10 20H2 버전부터 계산기에 그래프 기능이 정식으로 추가되었습니다. 사용하기에 어렵지 않고 보기에도 깔끔해서 가끔 사용하곤 했습니다. 다만, 제가 잘 모르는 것인지 아니면 지원하지 않는 것인지 모르겠지만 max 함수 표현을 못 하더군요. $y=max(0,x)$ 이런 식 말이지요. 그래서 저는 다른 툴을 찾아볼 수밖에 없었습니다. Desmos 장점 Windows ..
[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보다 클 때 ..
[TIL] 210406 - Deep LearniNg (~C1W3L05)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W3L05 까지의 내용을 정리한 것이다. 많은 입력 샘플에 대한 신경망 네트워크를 백터화 하는 방법을 설명합니다. 내용 요약 많은 샘플에 대한 벡터화 m개 샘플이 있을 때, for i in range(m): z_1[i] = W_1 * x[i] + b_1 a_1[i] = sigma(z_1[i]) z_2[i] = W_2 * a_1[i] + b_2 a_2[i] = sigma(z_2[i]) 이런 식으로 샘플을 순환하며 계산해야함을 알 수 있다. 당연히 for 문은 효율이 떨어지므로 벡터화하여 계산하는 것이 빠르다. 각각의 중요 벡터의 형태를 살펴보면 아래와 같다. 여기에 $W$ 벡터와 $b$ 벡터가 빠졌는데, $W$ 벡터의 형태는 (은닉 ..