edwith
[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] 210331 - Deep LearniNg (~C1W2L15)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L15 까지의 내용을 정리한 것이다. 로지스틱 회귀의 경사 계산을 벡터화해보고 NumPy의 브로드캐스팅 원리를 파악한다. 내용 요약 로지스틱 회귀의 경사 계산을 벡터화 하기 이전에 for 문을 이용한 경사 계산 pseudo 코드를 아래와 같이 적었었다. J = 0 dw_1 = 0 dw_2 = 0 b = 0 for i = 1 to m: z[i] = w_t * x[i] + b a[i] = sigmoid(z[i]) J += -(y_1 * log(a[i]) + (1 - y[i]) * log(1 - a[i])) dz[i] = a[i] - y[i] # 이곳에 for문 들어가게됨 dw_1 += x_1[i] * dz[i] dw_2 += x_2..
[TIL] 210330 - Deep LearniNg (~C1W2L13)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L13 까지의 내용을 정리한 것이다. 벡터화가 무엇이고 어떻게 사용하는지 살펴본다. 내용 요약 벡터화 (Vectorization) 순차적으로 계산하는 것보다 동시에 분산해서 처리하는 것이 훨씬 빠른 결과를 낼 수 있다. 예시로든 코드를 직접 실행해보니 for 문은 약 600ms, 벡터화를 사용한 코드는 약 2ms의 시간이 걸렸다. import numpy as np import time a = np.random.rand(1000000) b = np.random.rand(1000000) tic = time.time() c = np.dot(a, b) toc = time.time() print(c) print("Vectorized ve..
[TIL] 210329 - Deep LearniNg (~C1W2C10)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L10 까지의 내용을 정리한 것이다. 계산 그래프를 이용해서 미분 해보고 이를 로지스틱 회귀의 경사하강법에 적용해 보았다. 내용 요약 계산그래프로 미분하기 파라미터 $a$, $b$, $c$가 $J$의 결과값에 어떤 영향을 미치는지 알아낼 수 있음 위 그래프의 오른쪽에서 왼쪽으로 미분을 이용하여 파라미터 관계를 알아내는 방법을 설명함 이 때 미분의 연쇄법칙을 이용함 ${dJ \over da} = {dJ \over dv}{dv \over da}$ Andrew Ng 교수는 코드에서 미분값을 의미하는 변수를 선언할 때 아래처럼 표기하기로 함 $d Finaloutputvar \over dvar$ --> dvar 로지스틱 회귀의 경사하강법..
[TIL] 210326 - Deep LearniNg (~C1W2L07)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L07 까지의 내용을 정리한 것이다. 비용함수의 결과값을 최저로 만드는 파라미터를 어떻게 찾아야 하는지 설명한다. 그리고 그 과정에 필요한 미분의 개념을 간단히 살핀다. 내용 요약 경사 하강법 비용함수의 값을 최소화하는 $w$와 $b$를 찾는데 사용할 수 있는 방법이다. 이때 비용함수는 볼록한(convex) 형태여야 한다. 만약 비용함수의 형태가 볼록하지 않다면 지역 최솟값을 여러 개 가지게 되어 진짜 최솟값을 찾기 어려워진다. 비용함수의 최솟값을 찾기 위한 시작점은 임의로 정하여도 상관없다. 경사 하강법을 사용하면 어디에서 시작하든 최솟값이 있는 곳으로 향하게 된다. 가파른 방향으로 한 스텝씩 업데이트하며 최솟값을 찾아간다. ..
[TIL] 210325 - Deep LearniNg (~C1W2L03)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W2L03 까지의 내용을 정리한 것이다. 로지스틱 회귀와 비용 함수에 대한 내용을 다룬다. 내용 요약 신경망 학습방법 정방향 전파 역방향 전파 이 두가지가 어떻게 다른지는 이후에 다루게 됨 일단은 이런 것이 있다는 것을 알고 넘어감 이진분류(Binary Classification) yes or no로 분류하는 것 고양이가 맞다. / 고양이가 아니다. 로지스틱 회귀(Logistic regression)라는 알고리즘을 사용함 표기법 정리 $m$: 학습을 위한 데이터 세트 수 ${(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ... (x^{(m)}, y^{(m)}), }$ $n$: 입력 데이터 하나의 원소 개수 ..
[TIL] 210324 - Deep LearniNg (~C1W1L04)
이 글은... Andrew Ng 교수의 Deep Learning 강좌 C1W1L04 까지의 내용을 정리한 것이다. 내용 요약 신경망 X(입력)와 Y(출력)를 연결지어주는 함수를 찾는 과정 데이터가 많으면 많을수록 성능이 좋은 함수를 찾을 수 있음 해당 뉴런에 관련 없는 입력값이라도 입력해야 함 그 입력의 관계 여부, 가중치는 학습하면서 조절됨 신경망 종류 NN: 데이터베이스화된 데이터에 적합 CNN: 이미지에 적함 RNN: 오디오, 텍스트에 적합 Custom, Hybrid 데이터 종류 Structured Data 데이터베이스로 표현된 데이터 정보의 특성이 잘 드러남 Unstructured Data 오디오, 텍스트, 이미지 특징값을 추출하기 어려움 딥러닝 기술 발전으로 특징을 잘 찾아낼 수 있게 됨 최근 ..