pullwall
Well done! 코딩
pullwall
전체 방문자
오늘
어제
  • 분류 전체보기 (151)
    • 개발환경 (2)
    • java study (21)
    • 백준 단계별 (51)
    • 알고리즘 (3)
    • AI (43)
    • 클라우드 (3)
      • Kubernetes in Google (3)
    • 논문 (5)
    • 리눅스 (1)
    • AWS (4)
    • 수학 (15)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 수학
  • 정렬알고리즘
  • Google
  • Kubernetes
  • 백준 단계별
  • 자바독학
  • dataset
  • Java
  • Ai
  • 선택정렬
  • 자바
  • AWS
  • 쿠버네티스
  • 알고리즘
  • 정렬
  • LLM
  • 논문리뷰
  • pytorch
  • 단계별
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
pullwall

Well done! 코딩

Adam (Adaptive Moment Estimation)
AI

Adam (Adaptive Moment Estimation)

2024. 9. 2. 20:47
728x90
해당 게시물은 "혁펜하임의 AI DEEP DIVE"를 수강하고 작성되었습니다.

image from original paper

 

위 사진과 같은 Adam의 알고리즘에서 마지막 줄만 보자.

 

기존의 update 방식은 아래와 같은 수식으로 이루어졌다.

  • $ \begin{bmatrix} a_{k+1} \\ b_{k+1} \end{bmatrix} = \begin{bmatrix} a_k \\ b_k \end{bmatrix} - \alpha g$

위 수식의 형태는 Adam 알고리즘의 마지막 부분과 동일하다.

 

$m_t$는 모멘트의 개념을 반영한 것이며 $v_t$는 RMS norm의 개념을 반영한 것이다.

 

$m_t=\beta_1 m_{t-1}+(1-\beta_1)g_t$ 에서 $beta=\frac{1}{2}$라고 한다면

 

첫 번째 step에서 $m_1=\frac{1}{2}m_0+\frac{1}{2}g_1=\frac{1}{2}g_1$

 

그 다음 step에서 $m_2= \frac{1}{2}m_1+\frac{1}{2}g_2=\frac{1}{4}g_1+\frac{1}{2}g_2$

 

그 다음 step에서 $m_3= \frac{1}{2}m_2+\frac{1}{2}g_3=\frac{1}{8}g_1+\frac{1}{4}g_2+ \frac{1}{2}g_3$

 

이렇게 현재의 값을 많이 반영하게끔 하고 과거의 값을 점점 잊게 gradient를 누적함으로써 관성을 부여한다. (모멘텀)

 

 

$v$는 $m$과 식이 유사한데, 제곱한다는 차이점이 있다.

 

따라서 크기를 누적해서 보여준다는 의미가 있다. (작은건 작게 큰건 크게)

 

 

$\epsilon $은 매우 작은 양수이다. 해당 상수는 $v_t$가 아무리 작아도, 좀 과장해서 0이 된다고 하더라도 수식의 분모가 0이 되지 않도록 하는 역할을 한다.

 

https://www.analyticsvidhya.com/blog/2021/10/a-comprehensive-guide-on-deep-learning-optimizers/

 

SGD는 안장점에서 약한 모습을 보이며

 

모멘텀은 관성을 가지고 좌우로 요동치다가 loss가 감소하는 방향을 발견하고 그게 누적돼서 쭉 빠진다.

 

RMSprop은 경사가 심한 방향으로 덜 가고 완만한 곳으로 더 가므로 쭉 빠진다. 한번 빠지고 너무 가파르다고 판단되어 속도를 줄인다.

 

 

https://www.analyticsvidhya.com/blog/2021/10/a-comprehensive-guide-on-deep-learning-optimizers/

 

RMSprop이 마지막 순간에 튀는 것이 보일 것이다.

 

$\epsilon$값이 너무 작아 거의 다 수렴할 때 쯤에 분모가 0에 가까워져 팍 튀는 것이다!

 

 

 

728x90

'AI' 카테고리의 다른 글

Backpropagation  (0) 2024.09.03
MLP를 행렬과 벡터로 나타내기, Non-linear activation의 중요성  (2) 2024.09.02
Momentum vs RMSProp  (0) 2024.09.01
파라미터 (parameter) vs 하이퍼파라미터 (hyperparameter)  (0) 2024.09.01
mini-batch SGD  (0) 2024.09.01
    'AI' 카테고리의 다른 글
    • Backpropagation
    • MLP를 행렬과 벡터로 나타내기, Non-linear activation의 중요성
    • Momentum vs RMSProp
    • 파라미터 (parameter) vs 하이퍼파라미터 (hyperparameter)
    pullwall
    pullwall

    티스토리툴바