loss를 미분할 때 chain rule
w.grad = dloss / dw
loss(backward 당하는 객체)는 무조건 스칼라값이어야 함
c = 3 * a
c = c.sum()
c.backward()
print(a.grad)
=> 3
self.linear = torch.nn.Linear(1, 1) # input, output이 각각 하나
criterion = torch.nn.MSELoss(reduction='sum')
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
GD는 dataset을 전체로, SGD는 batch 이용 (memory 과부하 문제 해결, outliar 묻힘 문제 해결)
batch는 32와 1024 사이 2의 제곱수로 이용하는 것이 좋음
optimizer.zero_grad()
losss.backward()
optimizer.step()
torch.optim.Adam
기존 * 0.9 + 최신 * 0.1
local minimum에 빠지지 않고 global minimum으로 갈 수 있음
** Adam은 lr 0.001이 최댓값.. 좀 작게 줘야 함, SGD는 0.1 까지 줘도 됨
적응적 학습률
sample이 들어올 때 마다 학습률이 바뀌는 것
r += g^2
1/r^(0.5) * lr
MSE에서 발생되는 gradient는 낮음
cross-ent 는 틀린 경우 거의 무한대
그래서 logistic regression 할 때는 거의 bce, ce 사용
하나의 값만 있을 때는 시그모이드 굿
1000개의 class 중 확률 분포를 나타낼 때는 시그모이드 안 씀
BCELoss 일 때만 sigmoid, 값이 클 때는 softmax
L1, MSE, SmoothL1, BCE, KLDiv
Adam, SGD
'머신러닝 > 기초 공부' 카테고리의 다른 글
[확률/통계] 2-3. 베이지안 결정 이론 + ppt, 연습문제 (패턴인식 - 오일석) (0) | 2023.01.13 |
---|---|
[확률/통계] 2-2. 베이지안 결정 이론 + ppt, 연습문제 (패턴인식 - 오일석) (2) | 2023.01.13 |
[확률/통계] 2-1. 베이지안 결정 이론 + ppt, 연습문제 (패턴인식 - 오일석) (0) | 2023.01.11 |
[딥러닝] 기초 및 꿀팁 3 (1) | 2022.09.23 |
[딥러닝] 기초 및 꿀팁 1 (2) | 2022.09.13 |
댓글