전체 글(327)
-
22. Neural Networks Overview
Logistic Regression의 경우 layer가 1개 WX + b -> Z -> A -> L(A,Y) Neural Network의 경우 layer가 여러개 - 예시는 two layer W(1)X + b -> Z(1) -> A(1) -> W(2)A + b -> Z(2) -> A(2) -> L(A(2), Y) - 즉 각 layer의 output 인 A(i)가 다음 Layer의 input으로 들어가는 구조
2023.09.09 -
21. Explanation of Logistic Regression Cost Function(Optional)
Cost function을 왜 사용하는지. y 는 true. p(y|x) 란 x가 주어졌을 때 y=1일 확률을 의미 - binary classification의 경우 y=0 or y=1 두가지 경우밖에 없음 따라서 y=1 -> p(y|x) = y* y = 0 -> p(y|x) = 1-y* 이걸 하나의 방정식으로 표현하면 y* **y * (1-y*) **(1-y) 왜? y=0과 y=1을 대입했을 때 우리가 원하는 p(y|x)가 나오기 때문. 이때 양변에 log를 취해주게 되면 우리가 앞서 정의한 loss function이 나오게 된다. log p(y|x) = y log(y*) + (1-y) log(1-y*) 여기까지는 loss를 구했을 뿐인데, 우린 이걸 최소화 하고 싶으므로 앞에 음수를 표기한다 min ..
2023.09.08 -
20. Quick tour of Jupyter/iPython Notebooks
jupyter notebook 설명내용.. 그 이상 이하도 아님
2023.09.08 -
19. A Note on Python/Numpy Vectors
import numpy as np a = np.random.randn(5) a.shape - (5,) : 1순위 배열이라고 부름. - 이는 행 벡터나 열 벡터로 일관되게 동작하지 않음. 열벡터도 행벡터도 아님. 중요한것은 1순위 배열을 사용하지 않는 것. a = np.random.randn(5,1) or a = np.random.randn(1,5)로 선언하여 사용. a.shape - (5,1) or (1,5) 행렬 차원을 구체화할 것.
2023.09.08 -
18. Broadcasting in Python
python matrix operation. 더하기,빼기,곱하기, 나누기(+ - * / ) : element-wise. **중요 곱하기조차 행렬곱이 아닌 element-wise로 진행됨, np.dot(a,b)의 경우 행렬곱으로 진행** - but (3,4) shape matrix + (1,4) shape matrix = (3,4) shape matrix - 이때는 (1,4)를 행방향으로 복사하여 (3,4) matrix로 만든 후 element-wise 연산을 수행한다고 생각. - (3,4) shape matrix + (3,1) shape matrix = (3,4) shape matrix - 이때는 (3,1)를 열방향으로 복사하여 (3,4) matrix로 만든 후 element-wise 연산을 수행한다고 ..
2023.09.08 -
17. Vectorizing Logistic Regression's Gradient Output
a 는 sigmoid(z)의 결과값으로 y* dz(i) = a(i) - y(i) , 즉 loss를 의미. 따라서 dZ = A - Y - dZ = [a(1)-y(1), a(2)-y(2), ... , a(m)-y(m)] 기존 for m for w(nx) 에서 for m dw+= x * dz 로 for문 제거. 에서 또 한번 for문을 제거 결국 dW = 1/m * X * dZ(T) dB = 1/m * np.sum(db) 로 초기화함으로써 for문 하나 더 제거. 즉 dW에는 m개의 훈련 예제가 x * dz를 통해 x(i)당 nx개의 기울기 누적합이 존재. - 그걸 m개 평균을 내서 한번에 update 진행. 기존에는 1부터 m까지 한번씩 dw+=를 통해 진행. 그걸 한번에 sum(dw)로 바꾼거.
2023.09.08