-
728x90
1. Binary Classification
64*64 이미지에서 cat이 맞다면 1, 아니라면 0을 y의 값으로 가지는 이진 분류법
RGB 총 3개의 이미지로 나타내므로 64*64*3의 값을 가져서 nx = 12288의 값을 가지게 됨.
- x는 x 차원을 가진 특징 벡터. y는 0 or 1의 값을 가지는 레이블, 훈련 셋은 m training example임.
- 각각 X와 Y의 shape을 위와 같이 정의할 수 있음.
2. Logitstic Regression
- y(hat) 은 y의 추정치. x가 input 사진이라면 y(hat)이 1과 같을 확률이 되기를 원함.
- 로지스틱 회귀에서는 y(hat) = w_T * x + b가 되기를 기대하기 어렵기 때문에 sigmoid function을 사용하여 나타낸다.
- W + b가 잘 학습되어서 y(hat)이 1일 가능성에 대한 좋은 추정치가 되도록 하는 것이 이상적임.
3. Logistic Regression Cost Function
- Loss function : L이 실제 라벨 y 일 때 출력 y(hat)이 얼마나 좋은지 측정하기 위해 정의해야 하는 함수
- 로지스틱 회귀에서는 실제로 제곱오차와 유사한 역할을 하지만 볼록한 최적화 문제를 제공하는 다른 손실 함수를 제공함.
- L(y(hat), y) 로 정의되어 log로 표현된 것이 로지스틱 회귀에서의 손실 함수임.
- Cost Function : J(w, b) 는 평균이 되고 손실 함수의 합 중 m은 훈련 예제에 적용됨. y(hat)은 특정 매개변수 w와 b를 사용하는 로지스틱 회귀 알고리즘에 의한 예측 결과가 됨.
4. Gradient Descent
Cost Function은 볼록 함수임.
- Gradient Descent는 수렴할 때까지 계속 해서 반복한다. w에 대한 변경 사항의 업데이트이다. 그래서 dW가 매우 중요함.
((alpha = learning rate)
- 기본적으로 기준이 기울기이므로 J에 대한 기울기와 어느 방향으로 이동할지 여부를 알아내는 것이 중요하다.
5. Derivatives
- 일차함수에서 일반적인 도함수의 정의를 설명함. 미분적분학의 도함수 정의를 살펴본다면 이해하기가 훨씬 수월할 듯함.
6. More Derivative Examples
이차함수에서의 도함수의 정의.
- 이차, 삼차, ln 에서 도함수를 정의하는 단계를 예시를 통해 보여줌.
- 함수에 따라 위치 마다 기울기가 달라질 수 있음. 도함수는 직선의 기울기다.
- 도함수나 선의 기울기를 직관적으로 이해하는 것이 바람직하다.
7. Computation Graph
- 최적화할 식별 변수, 특수 출력변가 명확할 때 유용하게 사용된다.
8. Derivatives with a Computation Graph
- 계산 그래프를 이용해서 연쇄법칙을 직관적으로 증명함.
- dJ/dc = 3 : c가 1이라면 j는 3배로 증가한다는 직관적인 의미를 가진다.
9. Logistic Regresstion Gradient Descent
- 로지스틱 회귀 공식에서 연쇄법칙을 이용한 미분의 예시를 설명함.
10. Logistic regression on m examples
- 다음 수도 코드에는 두 개의 for loop가 있다는 약점이 있다. 딥러닝 구현시에는 for문을 사용할 경우 알고리즘 성능이 하강될 수 있으므로 vectorization이라고 하는 벡터화 기법을 사용한다.
11. Verctorization
벡터화로 np.dot(a, b)를 사용한 것과 for문을 사용한 것을 시간으로 비교해 보았을 때, 엄청난 시간 차이를 볼 수 있다.
12. More Vectorization Examples
- 기본은 가능하다면 for문을 피하는 것이다.
for문을 사용해야 하는 경우, numpy를 사용해서 쉽게 사용가능한 부분이 있는지를 먼저 알아보자.
이렇게 for문을 두번 쓰는 경우더라도 벡터화를 통해 for문을 줄여서 한 번만 사용하게 할 수 있다.
13. Vectorizing Logistic Regression
- 로지스틱 회귀식을 이처럼 행렬로 모두 표현할 수 있으며 1*m 형태로 만드는 것을 "브로드캐스팅" 이라고 한다.
14. Vectorizing Logistic Regression's Gradient Output
dz와 db를 수식으로 vectorization을 직접 구현해봄.
- 로지스틱 회귀를 for loop를 이용해서 구현한 방식에서 numpy를 이용한 vectorization으로 이렇게 표현이 가능하다.
15. Broadcasting in Python
브로드캐스팅이란? 파이썬 코드를 더 빠르게 실행하는 데 사용할 수 있는 또 다른 기술
이런식으로 1*m 이든 m*1 행렬이 있다면 해당 행렬을 확장시켜서 계산하는 방식
일반적으로는 이런식으로 브로드캐스팅 계산을 실시한다.
percentage = 100*A/cal.reshape(1,4) 부분이 브로드캐스팅하는 부분임. reshape을 통해서 모양을 변형시켜 사용할 수 있다.
16. A Note on Python/Numpy Vectors
a = np.random.randn(5) -> not use
a = np.random.randn(5, 1) -> a.shape = (5, 1) column vector
a = np.random.randn(1, 5) -> a.shape = (1, 5) row vector
이렇게 정확하게 행과 열을 명시해주는 것이 필요하다!!!
728x90'Google ML Bootcamp > Neural Networks and DL' 카테고리의 다른 글
Deep Neural Network (0) 2023.09.10 Shallow Neural Network (0) 2023.09.06