본문 바로가기
2023-1/인공지능

기울기 강하 기법

by 철없는민물장어 2023. 6. 12.
728x90
반응형

깔끔한 글을 원한다면 아래 더보기를 클릭.

더보기


신경망의 학습은 가중치를 적절하게 조정하는 과정입니다. 이 과정은 순방향 전파(FNN)를 통해 입력에 대한 실제 출력을 계산하고, 이 출력값을 목표 출력값과 비교하는 방식으로 이루어집니다. 

추론 결과와 목표값의 차이를 '에러'라고 부르며, 이 에러를 역으로 전파하여 가중치를 조정하는 방식으로 신경망의 학습이 이루어집니다. 이를 통해 가중치를 조정하여 추론값이 목표값과 같아지도록 합니다. 이러한 방법을 '에러 정정 기법'이라고도 합니다.

신경망 학습에서는 '경사하강법'이라는 방법을 사용합니다. 이를 위해 '손실 함수'를 적용해야 합니다. 손실 함수는 목표치(라벨 값)와 실제 출력(추론)간의 차이(손실, 에러)를 계산하는 함수입니다. 이에는 평균제곱오차(MSE; 회귀 방법에 주로 사용)와 교차 엔트로피 오차(Cross-Entropy Error; 분류에 주로 사용) 등이 사용됩니다.

주어진 입력 샘플에 대해 신경망을 통해 추론을 진행하고, 이 추론값과 목표값을 손실 함수에 넣어서 에러(손실)값을 가져옵니다. 손실 함수는 미분 가능하며, 손실 함수의 미분값이 0에 가까워지도록 가중치를 갱신하는 것이 신경망 학습의 목표입니다.

다중 분류(Multiclass Classification)의 경우, q개의 클래스 중 하나를 선택하는 문제입니다. 출력층에서 나온 값을 소프트맥스 함수를 거치면 확률로 변환됩니다. 이 중에서 가장 높은 확률을 가지는 클래스를 선택합니다.

교차 엔트로피 에러는 소프트맥스 함수를 거친 후, 확률에 대한 로그를 취하고, 그 값과 실제 목표치 값을 곱하여 더하면 전체 손실값을 얻을 수 있습니다.

우리는 손실 함수에 의해 계산된 에러값을 감소시키는 것을 목표로 합니다. 이는 궁극적으로 이 에러값을 0으로 만들고자 하는 것을 의미합니다.



경망을 통과한 출력값 y를 손실함수에 넣으면, 에러값을 얻을 수 있습니다. 이 에러값이 0이 되었으면 좋겠다는 것이 경사하강법의 원리입니다.

손실함수는 곡선을 가지며, 손실함수의 값이 0에 가까워지기 위해서는 그 시점에서의 기울기를 계산하여 기울기가 0의 방향으로 이동하면 됩니다. 이 과정은 시작점부터 반복적으로 가중치 값을 조금씩 갱신하는 방식으로 이루어집니다. 기울기가 0이 되면 적절한 가중치를 찾은 것입니다.

가중치 업데이트는 다음과 같은 방식으로 이루어집니다: 새로운 가중치 = 현재 가중치 - 학습률 * 그래디언트. 여기서 학습률이란 가중치 갱신 속도를 결정하는 하이퍼파라미터입니다. 학습률이 너무 낮으면 수렴이 느려져 더 많은 에폭이 필요하며, 학습률이 너무 크면 빠른 수렴이 일어날 수 있지만 최소점을 찾지 못해 진동할 수 있습니다.

퍼셉트론의 학습 알고리즘을 구현할 때는 경사하강법의 개념이 없었기 때문에 선형 분리만 가능한 한계가 있었습니다. 그러나 경사하강법의 개념을 퍼셉트론의 학습 알고리즘에 적용함으로써 비선형적인 문제도 해결할 수 있게 되었습니다. 이런 발전이 CNN, 딥러닝 등의 기술 발전으로 이어졌습니다.

그러나 경사하강법은 한계를 가지고 있습니다. 그 중 하나는 국소 최소점에 갇히는 문제입니다. 즉, 전역 최소점 대신 국소 최소점만을 찾게 될 경우가 있습니다.

경사하강법을 신경망 학습에 적용하는 과정은 다음과 같습니다:

1. 가중치 초기화
2. 현재의 각 가중치 값에 대해 에러 기울기(손실함수 미분)를 계산
3. 기울기의 반대 방향으로 가중치 값을 변경
4. 수렴할 때까지 2와 3의 과정을 반복

신경망의 학습은 가중치를 적합하게 조정하는 작업이다.

순방향으로 입력에 대해 실제 출력을 계산(FNN)하고, 이 출력값이 목표 출력값과 비교한다.

추론을 한 결과와 목표값 차이를 에러라고 하는데, 이 에러를 역으로 전파시켜 가중치를 조정시킨다. 이를 통해 신경망의 학습이 된다. 가중치를 조정해서 추론값이 목표값이 되도록 한다. 이것은 에러값을 정정하므로 에러 정정 기법이라고 한다.

---------------------------------------------------

 

"기울기 강하"라는 방법을 사용한다.

 

기울기 강하 기법을 사용하기 위해서는 손실함수를 적용시켜야 한다.

손실함수는 목표치(라벨 값)와 실제 출력(추론)간의 차이(손실,에러)를 계산하는 함수이다.

손실함수는 평균제곱에러(회귀 방법에 주로 사용), 교차엔트로피에러(분류에 주로 사용) 등이 사용된다.

 

입력샘플이 주어질 때 신경망을 통해 추론한다. 이 추론값이 목표값과 추론값을 손실함수에 넣어서 에러(손실)값을 가져온다. 이때 손실함수는 미분가능한데, 손실함수의 미분값이 0에 가까워지도록 가중치를 갱신하는것이 학습이다.

 

손실함수 종류

-평균제곱에러(MSE)

출력값과 목표치의 값의 차이의 제곱에 1/2를 곱한 값

(1/2)*(di-yi)^2 

 

모든 학습샘플(개수N) 기준 MSE는 위 평균제곱에러를 모두 더한 후 N분의1을 곱하면 된다.

 

 

(다중 분류(multiple classfication)

-q개의 클래스 중 하나를 선택하는 것.

출력층에서 나온 값을 소프트맥스함수를 거치면 확률로 값이 나온다. 여기서 가장 높은 확률을 가지는 것을 선택한다.)

교차엔트로피 에러는:

소프트맥스 함수를 거친 후 전체 에러를 계산하기 위해서, 확률에 대한 로그를 취하고, 그 값과 실제 목표치 값을 곱한 결과를 모두 더해주면 전체 손실값이 나온다.

 

---

우리는 손실 함수에 의해 계산된 에러값을 감소시키고싶다.

궁극적으로는 이 에러값을 0으로 만들고싶다.

 

신경망을 통과한 출력값 y를 손실함수에 넣는다. (출력값 y와 목표치를 넣음)

그럼 에러값을 얻을 수 있다. 이 에러값이 0이 되었으면 좋겠다는 것이 기울기 강하 기법의 원리이다.

 

손실함수는 곡선을 가지고 있다. 손실함수의 값이 0에 가까워지기 위해서는, 그 시점에서의 기울기를 계산해서 기울기가 0의 방향으로 이동하도록 하면 된다. 시작점부터 반복적으로 가중치 값을 조금씩 값을 갱신한다. 기울기가 0이 되면 적합한 가중치를 찾은 것.

 

가중치 갱신은

새 파라미터 = 현시점 파라미터 값 - 갱신률 * 기울기 

가 된다. 갱신률*기울기가 -인 이유는 기울기의 반대방향으로 이동시키기 위함이다.

 

기울기 강하기법의 학습률

학습률이 너무 낮으면 늦은 수렴이 일어나 더 많은 에폭이 필요하다.

학습률이 너무 크면 빠른 수렴이 일어날 수 있지만 최소점을 찾지 못해 진동할 수 있다.

 

우리가 퍼셉트론의 학습 알고리즘을 구현할 때...퍼셉트론은 기울기 강하의 개념이 없었기 때문에 선형 분리만 가능하다는 한계가 있었는데, 퍼셉트론의 학습 알고리즘에 기울기 강하라는 개념을 적용함으로써 비선형적인 문제도 해결할 수 있게 된다. 이것이 CNN 딥러닝 등으로 발전하게 됨.

 

기울기 강하 기법의 한계

: 전역 최소점 대신 국소 최소점만을 탐색할 경우가 많다.

 

 

기울기 강하 기법의 신경망 학습 적용

1. 가중치 초기화

2. 현재의 각 가중치 값에 대해 에러 기울기(손실함수 미분)를 계산

3. 기울기 부호의 반대방향으로 가중치 값을 변경

4. 수렴시까지 2,3을 반복

728x90
반응형

'2023-1 > 인공지능' 카테고리의 다른 글

CNN 개요: 딥러닝과 컴퓨터 비전  (1) 2023.06.12
역전파 학습 개념  (0) 2023.06.12
FNN 원리와 구현  (0) 2023.04.19
퍼셉트론의 학습  (0) 2023.04.19
신경망  (0) 2023.04.19

댓글