본 게시물은 UDEMY 강좌 '딥러닝의 모든 것 with Python, Tensorflow, Pytorch'를 학습하고 요약한 게시물입니다.
- 강좌 URL : https://www.udemy.com/course/best-artificial-neural-networks/
> 2-4단원까지의 내용 wrap - up
- 신경망이 학습하려면 역전파가 일어나야 함
- 역전파 : ŷ와 y의 오차 또는 제곱 차이의 합이 신경망을 통해 역전파되고 그에 따라 가중치가 조정
- 본 게시물에서 다룰 내용 : 가중치가 어떻게 조정되는지
> 비용함수를 최소화시키는 방법 ① - 무차별 접근 방식
- 단순하게 대량의 가중치를 가져다가 비교해서 가장 근사한 값을 찾는 것
- 천 개의 가중치가 있다고 했을 때, 천개 가중치에 대한 비용함수를 모두 표시하고, 가장 비용함수 값이 낮은 점을 가장 좋은 가중치라고 여긴다.
- 다만 가중치의 수를 늘리고 네트워크 내의 시냅스 수를 늘리면서 차원의 저주를 맞닥뜨리게 되기 때문에 이런식으로는 하지 않는다.
※ 차원의 저주
$ 이미 훈련된 상태의 신경망
- 신경망의 실제 작동 방식을 알아 봤을때 봤었던 예시 : 부동산 감정을 위해 신경망을 구축하고 실행
$ 훈련하기 전 가중치를 모를 때의 실제 신경망
- 가중치 개수 : 4 * 5 + 5(은닉층에서 출력층) = 25개
- 각 가중치별로 테스트할 조합이 1,000개씩 있다고 가정 → 전체 조합의 수 : 10의 75제곱 만큼 다양한 조합이 나온다.
- 선웨이 타이후 라이트 : 93.01 PFlop/s의 속도로 처리할 수 있음.
- 플롭스 : 초당 부동소수점 연산
- 즉, 초당 부동 소수점 연산을 93 * 10의 15제곱만큼 할 수 있음
- 평범한 컴퓨터는 연산 속도가 몇 기가 플롭 정도로 훨씬 성능이 뒤떨어짐
- 이상적인 세계에서 부동소수점 연산 한 번마다 테스트를 한 번 할 수 있다고 가정했을 때, 1.08 곱하기 10의 58제곱 초가 필요하다는 거고, 이는 10의 50제곱 년과 똑같으며, 우주가 존재한 시간보다 길다 (!)
→ 이 숫자는 너무 커서 최적화에는 절대로 사용할 수 없음
- 신경망이 이렇게 생겼다면, 계산은 더 복잡해짐. → 그렇기에 우리가 다음에 알아볼 방법은 Gradient Descent
> 비용함수를 최소화시키는 방법 ② - Gradient Descent
- 빨간점에서 시작한 후에 그 지점에서의 비용함수의 각도를 확인 -> 이에 대응하는 다음 점을 찍고 계속 반복한 후 최적의 가중치를 찾는다.
- 적절한 최적값을 찾기위한 매개변수가 있고 이는 추후 안내
$ 2차원 공간에 적용된 경사 하강법의 예시
$ 3차원 공간에 적용된 경사 하강법의 예시
- 최소값까지 지그재그 형태로 다가가는 것을 확인할 수 있음