인강 듣다가 경사하강법(gradient descent)이라는 게 나왔는데 설명을 몇 번을 들어도 뭘 하는 건지 잘 안 잡혀서 질문 올려요. 강사님이 산에서 내려오는 비유를 드셨는데 그건 대충 알겠는데, 실제로 이게 모델 학습이랑 무슨 상관인지가 연결이 안 돼요.


제가 지금 이해한 건 이 정도예요. 손실(loss)이라는 게 있고, 그걸 최대한 작게 만드는 게 목표다. 그래서 조금씩 파라미터를 바꿔가면서 loss가 줄어드는 방향으로 계속 움직인다. 대충 이런 느낌으로 코드에 나오더라고요.


for epoch in range(100):
    pred = model(X)
    loss = loss_fn(pred, y)
    loss.backward()
    optimizer.step()


근데 여기서 방향은 기울기(gradient)로 정한다는데, 그럼 얼마나 움직일지는 뭘로 정하는 거예요? 그게 학습률(learning rate)인가요? 학습률을 크게 하면 빨리 배우는 거니까 무조건 크게 하면 좋은 거 아닌가 싶었는데, 너무 크면 발산한다는 말도 있어서 헷갈려요.


학습률을 0.01로 할지 0.001로 할지 이런 건 그냥 감으로 정하는 건가요? loss가 안 줄고 위아래로 튀기만 하면 그게 학습률이 큰 신호인 건지, 아니면 다른 문제인 건지 구분도 잘 안 되고요. 이 부분 좀 쉽게 풀어서 설명해 주실 분 계실까요.