본문 바로가기
반응형

전체 글83

Vectorizing Logistic Regression m개의 훈련 샘플이 있을 때, 아래의 값을 계산해야 한다. 정방향 전파 단계를 실행하기 위해선 (m개의 훈련 샘플에 대한 예측값 계산) for문 없이 계산하는 방법이 있다. X는 훈련 입력을 열로 쌓은 행렬이다. n_x행 m열 행렬이다. 이는 X가 (n_x,m) 차원 행렬이라는 것이다. 먼저, z^(1),z^(2),z^(3) 등을 한 단계 혹은 한 줄의 코드로 계산하는 법이다. 행 벡터이기도 한, (1,m) 행렬을 만든다. 여기에 z^(1),z^(2)에서 z^(m)까지 동시에 계산할 것이다. 이를 w^T X와 b로 이루어진 벡터의 합으로 표현될 수 있다. b로 이루어진 이것은 (1,m)벡터 혹은 (1,m)행렬이다. m차원 행 벡터이다. w^T에 x^(1), x^(2)부터 x^(m)로 이루어진 행렬을 곱하.. 2024. 3. 25.
More Vectorization Examples 신경망이나 로지스틱 회귀를 프로그래밍할 때 기억해야 할 것은 가능한 한 for문을 사용하지 않는 것이다. 필요한 값을 계산할 때, 내장 함수나 다른 방법을 쓸수 있다면 for문을 쓰는 것보다 대부분 빠를 것이다. 행렬 A와 벡터 v의 곱인 벡터 u를 계산하고 싶을 때, 행렬 곱셉의 정의는 u_i = A_ij 점 v_j의 합이다. 벡터화되지 않은 구현은 먼저 u를 np.zeros(n,1)로 정의하고, 그 후에 i와 j에 대한 for문을 작성한다. 이후, u[i]는 A[i][j] * v[j] 가 된다. 여기엔 i와 j에 대한 두 개의 for문이 있다. 벡터화된 버전은 먼저 u를 np.dot(A,v)로 지정해준다. 이는 두 개의 for문을 없애므로 훨씬 빠르게 실행된다. 예시) 메모리 상에 벡터 v가 있다고 .. 2024. 3. 25.
Vectorization 백터화는 간단히 말하면, 코드에서 for문을 없애는 일종의 예술과 같다. 딥러닝 알고리즘에서는 큰 데이터 세트를 학습시킬 때가 많은데, for문이 아닌, 벡터화를 통해 더 빠르게 실행하는 것이 가능하다. 예시) 로지스틱 회귀에서는 z = w^Tx + b를 계산해야 한다.i w는 열 벡터이고, x도 마찬가지이다. w와 x는 모두 R^(n_x)의 차원을 가진 벡터이다. 벡터화되지 않은 구현일 때엔 w^Tx를 계산하기 위해, z=0와 i가 1부터 n_x까지 일 때, z+=w[i]*x[i]를 하고, 마지막에 z+=b를 할 수 있다. 이는 벡터화되지 않은 구현으로 느리다. 그에 반해, 벡터화된 구현은 w^Tx를 직접 계산한다. 파이썬이나 NumPy에서 명령어는 np.dot(w,x)이다. z= np.dot(w,x).. 2024. 3. 25.
Gradient Descent on m Examples m개의 훈련 샘플에 대한 로지스틱 회귀의 경사하강법 예시) J(비용함수)=0, dw_1=0, dw_2=0, db=0 으로 초기화한다. 그리고 훈련 세트를 반복해 각 훈련 샘플에 대한 도함수를 계산하고 이를 더한다. i=1에서 훈련 샘플의 개수 m까지인 for문에서 z^(i) = w^T*x(i)+b 와 예측값 a^(i) = σ(z^(i))를 계산하고, J에 더해준다. ----> J += -[y^(i) loga^(i) + (1-y^(i)) log(1-a^(i))] 이다. 전에 확인한 바로, dz^(i) = a^(i)-y^(i) 이고, dw_1 += x_1^(i) dz^(i), dw_2 + = x_2^(i) dz^(i) 이다. 지금의 계산은 특성이 n=2으로 가정하고 진행한 것이다. 끝으로, db += dz^.. 2024. 3. 25.
반응형