[1주차] boostcamp 회고록 (Python & AI Math)

gromit·2022년 1월 21일
0

💡 경사하강법(Gradient Desecent) 구현


[1] Gradient Descent를 활용한 Linear Regression 구현

    gradient_w = np.sum((_y - train_y) * train_x) / n_data
    gradient_b = np.sum(_y - train_y) / n_data
  • gradient w 는 (오차*x값)의 평균, gradient b 에는 (오차)의 평균이 쓰였다.
  • 수식의 의미를 피어세션에서 팀원들에게 질문하며, error(오차) 계산에 쓰인 MSE의 수식을 각 wb로 편미분했을 때 나오는 식이라는 것을 배울 수 있었다.

- ➕ 추가 학습

mse = mean(실제 데이터 – 예측 데이터)**2

  • 예측 함수의 w, b를 포함하면 다음과 같습니다.

mse = mean(y – wx+b)**2 (❗ 평균제곱오차, 오차 제곱의 평균값)

  • 편향 w로 편미분하면 다음과 같습니다.

mse/dw = 2mean(y – wx+b) * x (❗ x 가 살아 남아있다!)

  • 편향 b로 편미분하면 다음과 같습니다.

mse/db = 2mean(y – wx+b)


- ➕ 추가 학습

  • 회귀모델에 쓰이는 손실함수에는 MSE, MAE, RMES 등이 있으며
  • 분류에 쓰이는 손실함수에는 Binary cross-entropy, Categorical cross-entropy 등이 있다.
  • MAE: 최적값에 가까워졌다고 하더라도 이동거리가 일정하기 때문에 최적값에 수렴하기 어렵다.
  • MSE: MAE와 달리 최적값에 가까워질수록 이동값이 다르게 변화하기 때문에 최적값에 수렴하기 용이하다.
  • MAE와 MSE는 그래프가 다르며, 그래프에 따른 특징/장단점이 다름을 배웠다.

[2] Gradient Descent를 활용한 복잡한 Linear Regression 구현

  • 다항 선형식에 대해서는 행렬로 접근하여, intercept 항을 추가한 X 데이터, np.transpose 함수, @ 연산자 등을 활용해, 오차를 최적화해나가며 각 항의 계수(beta_gd)를 구할 수 있었다.

[3] Stochastic Gradient Descent (확률적 경사 하강법)

  • 전체 데이터가 아닌 1개/일부 데이터(이를 미니배치(Mini-Batch)라고 부른다. ➡️ 이 부분에서 "확률적"이라고 부르는 것 같다.)를 활용해 Gradient Descent를 구하는 방법론.
  • 장점: (1)연산량 감소 & (2)볼록이 아닌(Non-Convex) 목적식도 최적화 가능 & (3)Local-minimum(지역 최적해)에 빠질 확률도 훨씬 적다..!



💡 RNN에서 Backpropagation 구현




💡 MLE (Maximum Likelihood Estimation, 최대가능도 추정법=최대우도법)

  • 최대가능도 추정법에 의한 정규분포의 기댓값은 표본평균 과 같고 분산은 표본분산과 같다..!





➕ 추가로 알게된 점들

- ❗ input_string에서 띄어쓰기 여러번 -> 띄어쓰기 1번으로 일괄 변환하기

  • .split()로 쪼갠 후 ➡️ ' '.join()으로 합치기 !
    normalized_string = ' '.join(input_string.split())

- ❗ gradient descent를 계산할 때, abs(grad=diff)np.abs(grad=diff)는 다르다..!

  • np.abs(grad)가 정답





📝 1주차 회고

  • 그동안 인공지능을 공부하면서 단편적으로 알고 있던 개념을 AI Math 강의를 통해 깊게 배우면서도 + AI 관련하여 한 큐에 이어지도록 내용을 정리해볼 수 있었다.
  • 피어세션을 통해 팀원들과 질문을 던져보고 의논해보고 시간을 가질 수 있었다.
  • 기본기의 중요성을 다시 한번 다짐할 수 있었던 한 주였다.
profile
AI, Big Data, Industrial Engineering

0개의 댓글