강의 복습
1. 경사하강법 (순한맛)
더보기
1) 미분 (differentiation)
- 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구
- 주어진 점에서의 접선의 기울기
- 경사상승법(gradient ascent): 미분값을 더하여 함수의 극대값의 위치를 구할 때 사용
- 경사하강법(gradient descent): 미분값을 빼서 함수의 극소값의 위치를 구할 때 사용
- 경사상승/경사하강 방법은 극값에 도달하면 움직임을 멈춤
2) 경사하강법 알고리즘
- input
- gradient: 미분을 계산하는 함수
- init: 시작점
- lr: 학습률 (업데이트 속도 조절)
- eps: 알고리즘 종료조건
- 컴퓨터로 계산할 때 미분이 정확히 0이 되는 것은 불가능하므로 eps보다 작을 때 종료하는 조건이 필요
3) 편미분 (partial differentiation)
- 벡터가 입력인 다변수 함수의 경우 편미분을 사용
- 각 변수 별로 편미분을 계산한 그레디언트(gradient) 벡터를 이용하여 경사하강/경사상승법에 사용 가능
- 그레디언트 벡터는 각 점에서 가장 빨리 증가하는 방향으로 흐름
- 경사하강법 알고리즘은 그대로 적용되지만 절대값 대신 norm을 계산해서 종료조건 설정
2. 경사하강법 (매운맛)
더보기
1) 경사하강법으로 선형회귀 계수 구하기
- np.linalg.pinv를 이용하면 데이터를 선형모델로 해석하는 선형회귀식 찾을 수 있음
- 선형회귀의 목적식은 ||y-Xβ||2이고 이를 최소화하는 β를 찾아야 하므로 그라디언트 벡터 𝛁β||y-Xβ||2 를 구해야 함
2) 경사하강법 기반 선형회귀 알고리즘
- input: X, y, lr, T
- norm: L2-norm 계산하는 함수
- lr: 학습률
- T: 학습횟수
- output: beta
3) 경사하강법은 만능일까?
- 이론적으로 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장됨
- 선형회귀의 경우 목적식은 회귀계수 β에 대해 볼록함수이기 때문에 수렴 보장
- 비선형회귀의 경우 수렴이 항상 보장되지 않음
4) 확률적 경사하강법 (stochastic gradient descent)
- 모든 데이터를 사용하는 대신 데이터 한 개 또는 일부만 활용하여 업데이트 → 연산자원을 좀 더 효율적으로 활용 가능
- 볼록이 아닌 목적식은 SGD를 통해 최적화할 수 있음
- 딥러닝의 경우 SGD가 경사하강법보다 더 효율적
- 미니배치를 가지고 그레디언트 벡터 계산 → 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜
코멘트
오늘은 경사하강법에 대해 배웠다. 이제부터 슬슬 어려운 내용이 나오는 것 같다. 확률적 경사하강법은 처음 보는 것 같은데 더 자세히 공부해봐야겠다.
'부스트캠프 AI Tech 1기 [T1209 최보미] > U stage' 카테고리의 다른 글
Day9 학습정리 - Pandas II / 확률론 (0) | 2021.01.28 |
---|---|
Day8 학습정리 - Pandas I / 딥러닝 학습방법 이해하기 (0) | 2021.01.27 |
Day6 학습정리 - Numpy / 벡터 / 행렬 (0) | 2021.01.25 |
Day5 학습정리 - 파이썬으로 데이터 다루기 (0) | 2021.01.22 |
Day4 학습정리 - 파이썬 기초 문법 III (0) | 2021.01.21 |