4. 경사 하강법 Gradient Descent, 파이썬 코드, 머신 러닝
2022. 2. 8. 22:45ㆍ코딩/AI
* 경사 하강법 (Gradient Descent)
경사 하강법 (Gradient Descent)이란 쉽게 말하면, Training set (funtion)의 극솟점을 찾는 알고리즘이다. a는 Step size (또는 learning rate)로 수렴 속도를 결정한다. Cost function을 설정하고, 모델의 Cost function 최솟값을 찾아 그 값을 구할 때 쓰인다.
w : data point
J(w) : Cost function
반복 알고리즘을 통해, w를 계속 업데이트 한다.
* 경사 하강법 파이썬 코드
from numpy import asarray
from numpy import arange
from numpy.random import rand
from matplotlib import pyplot
def objective(x):
return -(x**2.0) + 4.0*x
def derivative(x):
return 2.0 * (-x) + 4.0
def step_size(x):
return 2**(-x)
def gra_des(objective, derivative, bounds,n_iter, step_size):
solutions, scores = list(),list()
solution = 5.0
solutions.append(solution)
scores.append(objective(solution))
for i in range(n_iter):
gradient = derivative(solution)
solution = solution + step_size(i+1)*gradient
solution_eval = objective(solution)
solutions.append(solution)
scores.append(solution_eval)
return [solutions,scores]
bounds = asarray([[-8.0,10.0]])
n_iter = 30
solutions,scores = gra_des(objective,derivative,bounds,n_iter,step_size)
inputs = arange(bounds[0,0], bounds[0,1]+0.1, 0.1)
results = objective(inputs)
pyplot.plot(inputs,results)
pyplot.plot(solutions,scores,".-",color='red')
pyplot.show()
- 결과
* 경사하강법 활용 예시
RNN의 학습에 경사 하강법을 이용한다.
'코딩 > AI' 카테고리의 다른 글
5. 비지도 학습 (Unsupervised Learning), Clustering 뜻, 파이썬 코드 (0) | 2022.02.11 |
---|---|
3. 딥러닝 Overfitting(과적합)과 Regularization 뜻(Ridge, Lasso regression) (0) | 2022.02.07 |
2. 지도 학습(Supervised learning): 회귀 분석(Regression), 파이썬 코드 (0) | 2022.02.06 |
1. 주 성분 분석 Principal component analysis(PCA), 파이썬 코드 (0) | 2022.01.29 |