본문 바로가기
Artificial Intelligence/Deep Leaning

Training Neural Networks(뉴럴 네트워크 훈련)

by YUNZEE 2023. 12. 31.
728x90

뉴럴 네트워크 훈련 과정의 마지막 단계로 손실 함수를 최소화하여 네트워크를 개선하는 방법에 대해 설명하도록 하겠습니다.

이미지 출처: https://go-hard.tistory.com/28

왼쪽 그래프는 손실 함수 그래프로 네트워크의 성능을 나타낸다. 곡선의 최저점은 우리가 찾고자 하는 최소 손실이다. (good learning rate)

오른쪽 그래프는 적당한 손실함수의 형태를 보인다. 위아래 진동하는 이유는 배치 사이즈가 너무 낮기 때문이다. 모든 데이터에 대하여 손실 함수(오차)가 향상할 것이기 때문이다.(비용 감소)

- W*는 이 최소 손실을 달성하는 네트워크의 가중치 벡터이다.

- 훈련 데이터 전체에 걸쳐 평균 손실을 최소화하려고 한다. 이는 즉, 네트워크가 모든 데이터 포인트에서 작은 오류를 만드는 것이 가장 좋다는 것을 의미한다.

 

정리

 - 훈련 데이터 전체에 걸쳐 평균 손실을 최소화하여 네트워크를 개선한다.

- 이를 위해 손실 함수를 사용하여 네트워크의 성능을 측정한다.

- 손실 함수의 값이 낮을수록 네트워크의 성능이 좋아진다.

- 최적의 가중치 벡터는 손실 함수를 최소화 하는 것이다.

 

이미지 분류 문제에서 네트워크는 이미지의 클래스를 예측하는 작업을 수행한다. 

예를 들어, 네트워크가 고양이 이미지를 개로 잘못 분류하면 손실 함수의 값이 증가하게 된다. 이런 식으로 손실 함수를 최소화하기 위해 네트워크의 가중치를 조정한다.

- 손실 함수의 기울기를 나타냄

- 가로축은 첫 번째 가중치(w1), 세로축은 두 번째 가중치(W2)를 나타낸다.

- 화살표의 길이는 기울기의 크기를 나타낸다. 화살표가 길수록 기울기가 가파르다.

 

기울기는 손실이 가장 가파르게 증가하는 방향을 가리킨다. 이미지를 보면, 기울기가 가파른 곳은 손실이 큰 곳으로 기울기의 반대 방향으로 이동하면서 손실을 줄일 수 있다.

표면이 높낮이는 손실의 크기를 나타낸다. 표면이 높을수록 손실이 크고, 표면이 낮을수록 손실이 작다.

우리의 목표는 손실이 가장 낮은 지점, 즉 표면의 최저점을 찾는 것이다.

 

1. 손실 함수 이해하기:

- 손실 함수는 (J(w))는 가중치(w)의 함수이다.

- 특정 가중치 값을 손실 함수에 대입하면 손실의 크기를 계산할 수 있다.

- 손실은 신경망의 오류를 수치화한 값이다.

 

2. 2차원 공간에서 가시화하기:

- 예를 들어, 가중치가 두 개뿐인 신경망이 있다고 했을 때

- 이 경우 2차원 공간에서 모든 가능한 가중치 값에 대한 손실을 표시할 수 있다.

- 이 공간은 매우 크고 무한하지만, 각 지점에서 손실 값을 계산할 수 있다.

 

3. 손실 최소화하기:

- 목표는 손실을 최소화하는 가중치 값을 찾는 것이다.

- 2차원 공간에서 가장 낮은 지점, 즉 손실 함수의 최솟값을 찾는 것과 같다.

 

4. 무작위로 시작하기:

- 무작위로 가중치 값을 선택한다.

- 이 지점에서 손실 값을 계산하고 손실 함수의 기울기를 계산한다.

 

5. 기울기 이용하기:

- 기울기는 손실이 가장 가파르게 증가하는 방향으로 가리킨다.

- 손실을 증가시키는 것이 아니라 감소시키고 싶기 때문에 기울기의 반대 방향으로 이동해야 한다.

 

예시:

공을 골짜기의 가장 낮은 지점으로 굴리는 것을 생각해보자.

공이 현재 위치에서 가장 가파르게 내려가는 방향은 기울기의 반대 방향이다. 

공을 계속해서 기울기의 반대 방향으로 굴리면 결국 골짜기의 가장 낮은 지점에 도달하게 된다.

신경망 훈련도 이와 유사하다.

무작위로 가중치를 선택하고 기울기의 반대 방향으로 가중치를 업데이트한다.

이과정을 반복하면 손실이 점점 감소하고 결국 손실 함수의 최소 값에 도달하게 된다.

 

구체적인 알고리즘은경사하강법 알고리즘이 있다.

- 신경망을 훈련시키는 가장 널리 사용되는 알고리즘이다.

- 손실 함수의 기울기를 이용하여 가중치를 업데이트한다.

- 손실 함수의 최소 값을 찾는 것을 목표로 한다.

 

1. 가중치 초기화:

- 모든 가중치를 임의의 값으로 초기화한다.

- 가중치의 개수는 문제에 따라 다릅니다. 간단한 문제에는 두 개의 가중치만 있을 수도 있고, 복잡한 문제에서는 수십억 개의 가중치가 있을 수도 있다.

2. 기울기 계산:

- 손실 함수의 기울기를 계산한다.

- 기울기는 손실이 가장 가파르게 증가하는 방향을 가리킨다.

3. 가중치 업데이트:

- 기울기의 반대 방향으로 가중치를 업데이트한다.

- 이렇게 손실이 감소하는 방향으로 가중치가 조정된다.

4. 반복:

- 2~3단계를 반복한다.

 

오른쪽에 나온 코드는 단순한 예시이며, 실제 신경망을 훈련시키기 위해서는 더 복잡한 코드를 사용한다.

728x90