모두야
CH4) 신경망 학습 - (2) 본문
4.3 수치 미분
: 경사법에서는 기울기(경사) 값을 기준으로 나아갈 방향을 정한다.
미분이란?
x의 작은 변화(+h)가 함수 f(x)를 얼마나 변화시키냐를 의미한다.
h ( 시간의 작은 변화 ) : 얼마나 작은 변화냐면, 시간은 0에 최대한 가깝게 lim 한다.
위의 식은 x+h와 x의 기울기에 불과하다.
따라서 진정한 접선과는 다르다. 오차가 발생할 것이다.
=> "" 차분 ""
중심 차분 (중앙 차분)
전방 차분
기울기가 가리키는 쪽 : 각 장소에서 함수의 출력 값을 가장 크게 줄이는 방향이다.
경사 하강법
기계 학습 : 학습 단계에서 최적의 매개변수를 찾아낸다.
신경망 : 학습 단계에서 최적의 매개변수 (가중치와 편향) 을 알아내야 한다.
"최적" - 손실 함수가 최솟값이 될 때의 매개변수 값
- 일반적으로 데이터 범위가 너무 광대해서, 어디가 최솟값인지 알아내기 어렵다.
"경사 하강법" -> "기울기" 를 이용하여 함수의 최솟값을 찾아 낸다.
경사법 : 현 위치에서 기울어진 방향으로 일정 거리만큼 이동하여, 마찬가지로 기울기를 구하고, 또 그 기울어진 방향으로 나아간다.
=> 함수의 값을 점차 줄인다.
- 경사 하강법 : 최솟값을 찾는다.
- 경사 상승법 : 최댓값을 찾는다.
n (에타) : 갱신 하는 양 = 학습률 !!!! : 한번의 학습으로 얼마만큼 학습 해야하는가 = 매개변수 값을 어마나 갱신하는라를 정하는 것
학습률 값은 0.01,0.001 등 특정 값으로 미리 정한다.
값이 너무 크거나, 작으면 "좋은 최적의 값"으로 찾아가기 어렵다.
따라서, 학습률을 변경하며 올바르게 학습 되는지 살펴본다.
def gradient_descent(f,init_x, lr=0.01,step_num=100):
x = init_x
for i in range(step_num):
grad = numerical_gradient(f,x)
x -= lr*grad
return x
f : 최적화 하려는 함수
init_x : 초깃값
lr : learning rate 학습률
grad = numerical_gradient(f,x) : 함수의 기울기
step_num : 함수의 기울기에 학습률을 곱한 값으로 갱신 처리하는 횟수
init_x : 초깃값 (-3,4)
하이퍼파라미터 : 학습률 처럼, 사람이 직접 설정해야하는 매개변수이다.여러 시험을 통해 가장 잘 학습하는 값을 찾는 과정이 필요하다.
<-> 신경망의 가중치와 편향의 경우, 훈련 데이터와 학습 알고리즘에 의해 '자동'으로 획득 되는 매개변수이다.
신경망에서의 기울기
= 가중치 매개변수에 대한 손실 함수의 기울기
4.5 학습 알고리즘 구현하기
경사 하강법으로 매개변수를 갱신하는 방법 = 신경망 학습이 이뤄지는 순서이다.
0. 전제
신경망에는 가중치, 편향이 있다.
이 가중치와 편향을 훈련 데이터에 맞게 조정하는 과정을 '학습'이라고 한다.
신경망 학습 4단계
1. 미니배치
훈련 데이터 중 일부를 무작위로 가져와 선별한다. 이를 "미니배치"라고 한다.
미니배치의 손실함수 값을 줄이는 것이 목표이다.
2. 기울기 산출 (수치미분 사용) -> 다음장에선 (오차역전파법)
미니배치의 손실 함수 값을 줄이기 위하여, 각 가중치 매개변수의 기울기를 구한다.
기울기는 손실 함수 값을 가장 작게 하는 방향으로 제시한다.
3. 매개변수 갱신
가중치 매개변수를 기울기 방향으로 아주 조금 갱신한다.
4. 반복
1~3단계를 반복한다.
1단계에서, 미니배치로 데이터를 무작위 선정하기 때문에 " 확률적 경사 하강법 ( SGD ) " 라고 부른다.
=> 확률적으로 무작위 골라낸 데이터에 대하여 수행하는 경사하강법
'밑.시.딥 > 1권' 카테고리의 다른 글
CH6) 학습 관련 기술들 (0) | 2021.07.24 |
---|---|
CH5) 오차역전파법 (0) | 2021.07.24 |
CH4) 신경망 학습 - (1) (0) | 2021.07.15 |
CH3) 신경망 - (2) (0) | 2021.07.12 |
CH3) 신경망 - (1) (0) | 2021.07.08 |