[ML] day3 최적화
컨벡스 셋
* 아핀 셋( affine set )
: 집합 내부에 존재하는 두 점을 잇는 직선을 포함하는 공간을 아핀 셋 ( 직선이 무한으로 뻗어나가므로 아핀 셋도 무한 )
* 아핀 함수 vs 선형 함수
* 컨벡스 셋 ( Convex set )
: 만약 집합 C 내부의 두 점 사이의 선분이 집합 C에 속한다면 집합 C는 컨벡스 셋
* 초평면 ( Hyperplane )
- 머신러닝의 목적 : 데이터를 분리하는 초평면을 찾는 것이 목적
- 초평면은 1차원 (직선이기 때문) => 반드시 1차원은 아님 ( 정확하게 알 수는 없지만 피처의 개수보다 많을 수 없음 )
- 데이터는 2차원 공간 / 2차원 공간을 나누는 초평면은 1차원
- 데이터가 3차원 공간이면 초평면은 2차원
** 초평면과 반공간( Halfspace )
ex)
컨벡스 함수 ( Convex function )
* 컨벡스 함수
-> 아래로 볼록함 함수
컨벡스 최적화
* 컨벡스 최적화 ( Convex optimization )
- g₁(x) ≤ 0 이어야 g₁(x) 가 컨벡스 함
라그랑주 프리멀함수 ( Lagrange primal function )
* 라그랑주 프리멀함수
라그랑주 듀얼함수 ( Lagrange dual function )
* 라그랑주 듀얼 함수
KKT ( Karush-Kuhn-Tucker) 조건
* KKT 조건
* Complemetary slackness 조건이 성립되는 이유
=> 손실함수를 최적화할 때 라그랑주 프리멀, 라그랑주 듀얼 함수를 사용한다 정도만 일단 이해할 것!
머신러닝에서의 최적화
* 최소 제곱법
* 최소 제곱법 with 제약식
- 제곱합의 최소값 : 라쏘
- 절댓값의 최소화 : 릿지
그래디언트 디센트( = 경사하강법)
* 옵티마이저 ( optimizer )
: 최적화 목적 함수인 손실 함수를 기반으로 매 학습 때마다 어떻게 업데이트 할지 결정
- 모델을 학습할 때 어떤 방식으로 손실함수의 값을 줄일지 결정하는 방법
* 그래디언트 디센트 ( gradient descent )
: 경사 하강법 / 옵티마이저 방법 중 하나
- 그래디언트 디센트는 전체 데이터를 이용해 파라미터가 최적값으로 수렴하게끔 학습
- 여러 딥러닝 알고리즘은 그래디언트 디센트 알고리즘을 기반으로 최적화 함수 사용
- 비용 함수의 미분값을 이용하는 방법 ( 미분해서 기울기가 0이 되는 지점은 최적값의 조건 )
- 학습률 η : 미분값의 반대방향으로 움직일 때 얼마나 움직일지 정함 ( 함수의 최소값을 향해 가고자 하기 때문 )
학습률을 높게 설정 : 한 번에 이동하는 값이 커져 최적값을 구할 수 x
학습률을 낮게 설정 : 최적값을 구하는 데 많은 시간 소요
ex) 등산할 때의 한 발자국
* 확률적 그래디언트 디센트 ( Stochastic Gradient Desent )
: 전체 데이터에 대해 수행하는 것이 아닌 전체 데이터에서 추출한 샘플 트레이닝 데이터를 사용해 최적값을 구함
- 모형 학습을 빠르게 시키기 위해 고안
- 그래디언트 디센트의 샘플링 버전
- 장점 : 배치 그래디언트 디센트보다 속도가 빠름 ( ∵ 전체 데이터가 아닌 일부만 이용)
시스템 리소스 적게 요구
- 단점 : 잘못하면 최적해 벗어남
적절한 학습률을 정하는 것이 중요하지만 학습률을 정하기 어려움 ( 만약 최적해를 벗어나는 경우, 학습률을 낮추면 최적해에 수렴)
* 미니배치 그래디언트 디센트
- 미니배치 : 사이즈가 작은 배치 데이터
* 모멘텀 ( Momentum )
- 학습 속도를 가속화하는 방법
- 하이퍼 파라미터 γ는 모멘텀을 얼마나 줄지 결정하는 값으로 일반적으로 0.9 근방의 값으로 설정