
213
4
숫자 분류기의 학습 내부 들여다보기
4.4.3
SGD
지금까지 그레이디언트로 손실을 최소화하는 방법을 알아보았습니다. 이제는
SGD
예제를 살
펴보고 최솟값을 찾는 과정이 어떻게 모델을 데이터에 더 잘 적합시키는 학습에 사용될 수 있
는지를 알아볼 차례입니다.
우선 간단한 합성 데이터로 시작해보겠습니다. 가장 높은 지점으로 올라가는 롤러코스터의 속
도를 측정하는 상황을 상상해봅시다. 처음에는 빠르지만 경사로를 올라가면서 점점 느려질 것
입니다. 최정상에서 가장 느리고 내리막을 내려가면서 점점 빨라지겠죠. 여기서는 시간에 따른
속력의 변화 정도를 예측하는 모델을 만들려 합니다.
20
초 동안 매초에 수작업으로 속력을 측
정해서 다음의 형태를 띤 그래프를 얻는다고 가정합니다.
>>> time = torch.arange(0,20).float(); time
tensor([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
> 14., 15., 16., 17., 18., 19.])
speed = torch.randn(20)*3 + 0.75*(time-9.5)**2 + 1
plt.scatter(time,speed);
수작업 측정은 정확하지 않을 수 있어서 임의의 노이즈도 ...