일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- tool
- 요리
- linux
- 맛집
- Spring Boot
- java
- php
- AWS
- redis
- Design Patterns
- Spring
- Web Server
- laravel
- db
- IntelliJ
- elasticsearch
- devops
- Oracle
- jenkins
- MySQL
- springboot
- jsp
- javascript
- Git
- Spring Batch
- Gradle
- JVM
- it
- ReactJS
- ubuntu
- Today
- Total
아무거나
cost 최소화 알고리즘 설명 본문
[Hypothesis and Cost]
* 가설의 값과 실제 값의 차이를 제곱한 다음에 이것들을 총 더하고 이것을 m으로 나누면 된다.
즉, W와 b의 값을 우리가 가지고 있는 데이터를 통해서 구해보자는 것이 Linear Regression의 목표이다.
[ Simplified hypothesis : 쉬운 설명을 위해서 간단하게 hypothesis를 만들었다. ]
이제 cost를 minimize 하려고 하는데 그렇게 하기 위해서는 cost라는 함수를 한번 확인해보자.
하기 이미지에 표와 같은 데이터를 갖고 있다고 하자. 그리고 W에 값이 주어지면 cost(W)를 구해보자.
W=2일 때도 값을 구하면 4.6667로 나온다. 즉, 계속 값을 구하다 보면 cost(W, b)는 W가 1로 갈수록 0으로 수렴, 양쪽으로 퍼질수록 cost 값도 커지는 걸 확인할 수 있다. 해당 값들을 그래프로 그려보면 아래 그림과 같이 만들어진다.
이 그래프를 보면 어느 시점에 cost가 가장 낮은지 한눈에 알 수 있다. (W가 1일 때 cost가 0이다.)
하지만 컴퓨터가 찾아내게 하기 때문에 기계적으로 찾아내기 위해서는 Gradient descent algorithm( Gradient: 경사, descent: 내려가다 -> 즉, 경사를 따라 내려가는 알고리즘이다. ) 을 사용해야 한다.
Gradient descent algorithm(경사 하강법)
- cost function을 minimize 하기 위해 사용
- 머신 러닝에도 많이 사용되지만 그 이외에 문제에서도 많이 사용된다.
- cost(W, b)에 W,b뿐만이 아니라 여러 개의 값들이 있을 때(w1, w2...) 많은 값들이 있는 cost function도 minimize를 해준다.
Gradient descent algorithm은 랜덤 한 값의 W를 지정하고, 그 지점에서부터 경사를 따라 내려오는 알고리즘이다. 해당 알고리즘은 어떻게 작동할까?
1. 시작은 아무 점에서 시작한다. Start at 0,0
2. W값을 계속 바꿔가면서 cost를 reduce한다.
3. 1,2 번을 계속해서 반복하면 경사도가 그려지게 된다. 그러다보면 결국 최소점에 도달하게 된다.
위의 내용까지 이해했다면 경사도는 어떻게 구하는 것일까? 경사도는 바로 미분을 사용하여 구한다. (기울기 = 미분)
learning rate와 gradient의 곱한 값만큼 이동하며 학습하므로 적절한 learning rate를 주는 것이 중요하다. 만약 learning rate가 너무 큰 경우에는 학습이 발산 / 너무 작은 경우는 학습이 너무 오래 걸린다.
위의 이미지와 같은 경우에는 gradient descent algorithm을 사용할 수 없다.
위 이미지와 같이 Convex function(볼록함수)인 경우에만 사용이 가능하다.
* 결론적으로는 Linear Regression을 사용할 때는 Cost Function이 Convex Function이 되는지 확인해야 하는 것이 중요하다.
-
'AI or APP > Tensorflow' 카테고리의 다른 글
multi-variable linear regression (0) | 2019.12.01 |
---|---|
Linear Regression (0) | 2018.07.04 |
TensorFlow 설치 및 사용 (6) | 2018.06.22 |
머신러닝이란 (0) | 2018.06.18 |