우리는 머신러닝을 통해 예측값을 구하는 최적의 w 값을 찾기위해 노력한다.
최적의 w란 실제값과 가장 비슷한 값을 추종하는 웨이트(w) 가중치 값이고
그 비슷한 값을 찾기 위해선 costFunction 값 ( 실제값과 차이나는 정도) 이 0이 되는 지점을 찾아야.
실제값과 가장 비슷한 w 값을 찾을 수 있다.
2020/11/03 - [Data Science/Machine learning] - [기계학습]. Cost functions (loss function) 비용 함수
결론 : 머신러닝 기법은 결국 오차가 가장 적은 식을 구하기 위한 것이다.
그 방법 중 하나가 바로 경사하강법 Gradient descent 이다.
여기서 식을 통해 미분 값을 구하게 되는데.
2020/04/02 - [Data Science/Statistics Math] - [통계수학] 미분 기초 ( 평균변화율 , 순간변화율 , 미분계수 )
미분 값을 구하면 해당 경사(기울기)를 알 수 있게 됩니다.
Gradient Descent
Gradient Descent Algorithm은 Cost Function 을 최소로 만드는 θ0,θ1θ0,θ1 을 구하는 알고리즘으로
Gradient Descent는 먼저 θ0,θ1θ0,θ1 에 대한 임의의 초기값으로 시작합니다. 그리고 최소의 J(θ0,θ1)J(θ0,θ1) 을 찾을 때 까지 θ0,θ1θ0,θ1 을 변경시킵니다. 즉, 이 알고리즘은 임의의 초기값을 기준으로 최소가 되는 점을 찾아나갑니다.
계속해서 경사값과 학습속도를 기준으로 0의 근접해질때까지 값을 갱신해 나간다.
x = 10
derivative = []
y = []
for i in range(1000):
old_value = x
y.append(old_value ** 2)
derivative.append(old_value - 0.01 * 2 * old_value)
x = old_value - 0.01 * 2 * old_value
range(1000) 은 iteration 이고 0.01 이 여기서 Running rate 가 된다.
이렇게 2가지 하이퍼 파라미터(사용자가 지정해주는 값)를 지정해줘야한다.
Learning Rate(학습 속도)
Learning Rate 는 움직이는 보폭의 크기이고 우리가 지정해주는 값이다.
왼쪽의 그림과 같이 Learning Rate를 너무 작게 지정할 경우에는 최소값에 도달하기 위해 많은 연산을 하게됨
Learning Rate를 너무 크게 지정하면 우리는 매우 큰 거리로 이동하므로 반대쪽 값으로 넘어가게 되며 최소값으로부터 점점 멀어지는 것을 확인할 수 있다.
그래서 우리는 Learning Rate를 적당한 값으로 설정해주어야 합니다.
그럼 굴곡이 많은 함수의 경우는 어떨까?
이런 경우는 시작점에 의해서 최저점에 수렴을 할 수 있거나 없을 수 도 있다.(시작점에 따라 결과가 달라진다.)
이런 문제를 해결하기 위해 많은 노력들이 필요하다.
-> global minima 에 가야하는데 local minima에 빠져서 못나오는 경우
이런 경우 여러 시작점에서 다 시작해서 비교하는 방법등
여러방법들이 있다. 이 방법들은 나중에 자세히 알아보자.
'Machine learning' 카테고리의 다른 글
[데이터 전처리]. pandas Dataframe, Series 특수문자 제거하기 (0) | 2020.12.04 |
---|---|
[기계학습]. Cost functions (loss function) 비용 함수 (0) | 2020.11.03 |
[데이터 전처리] . 데이터 구간화 ( Data binning ) (0) | 2020.10.23 |
[데이터 전처리] . 이산형 데이터 처리하기 ( OneHotEncoding ) (0) | 2020.10.23 |
[데이터 전처리] . 결측치 처리하기 ( Missing Values ) (0) | 2020.10.23 |