ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Logistic Regression as Neural Network
    Google ML Bootcamp/Neural Networks and DL 2023. 9. 3. 16:53
    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
Designed by Tistory.