연구 노트

    [TIL] 210419 - Deep LearniNg (~C1W4L02)

    [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)

    [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)

    [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)

    [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)

    [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$ 벡터의 형태는 (은닉 ..

    [TIL] 210405 - Deep LearniNg (~C1W3L03)

    [TIL] 210405 - Deep LearniNg (~C1W3L03)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W3L03 까지의 내용을 정리한 것이다. 신경망 네트워크의 구성과 대략적인 계산 흐름을 살펴보았다. 내용 요약 신경망 네트워크의 구성 알아보기 신경망은 아래 그림과 같이 3개의 층으로 구별할 수 있다. 입력층: 학습 데이터의 입력 특성들의 층이다. 은닉층: 입력층과 출력층 사이에 있는 층, 데이터를 확인할 수는 없다. 출력층: 출력 특성들의 층이다. 신경망 네트워크의 층을 표기할 때는 $a^{[l]}$라고 쓴다. 여기서 $l$이 층 수를 의미한다. 입력층은 0층이다. 신경망 네트워크의 층수를 셀 때 입력층은 포함하지 않는다. 위 그림에서 층은 3개로 구분되지만 2층 신경망이라 부른다. 신경망 네트워크 출력의 계산 위에서 살펴본 은닉..

    [TIL] 210401 - Deep LearniNg (~C1W2L18)

    이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L18 까지의 내용을 정리한 것이다. NumPy를 사용할 때 주의할 점과 문제를 예방하는 법을 알아보았다. 그리고 로지스틱 회귀의 비용함수가 유도되는 과정을 공부하였다. 내용 요약 파이썬과 NumPy 벡터 NumPy를 이용해서 벡터를 만들 때 흔히 실수할 수 있는 예시를 들었다. 크기가 5인 정규분포를 가지는 벡터를 만들려면 아래와 같이 입력한다. >>> a = np.random.randn(5) >>> print(a) [ 0.68386802 0.36410561 -0.67967483 -0.83958757 -2.05102972] 언뜻 보면 (1, 5) 크기의 행렬 같지만 그렇지 않다. >>> print(a.shape) (5,) 여기..