ML의 기본적인 개념

zoya·2024년 4월 25일

인공지능 공부

목록 보기
2/19

가설(Hypothesis) 수립

머신 러닝에서 식을 세울 때 이 식을 가설이라고 합니다. 가설은 임의로 추측해서 세워보는 식일 수도 있고, 경험적으로 알고 있는 식일 수도 있습니다. 그래서 맞는 가설이 아니라고 판단되면 계속 수정해나가는 식이 되기도 합니다.

선형 회귀의 가설은 y = Wx + b 입니다. y를 H(x)라고 표현하기도 합니다.
이 식에서 W는 가중치(Weight)이고 b는 편향(bias)입니다.

손실 함수(Loss function)

손실함수 = 비용함수 = 오차함수 = 목적함수 다 같은 의미입니다.
손실함수를 가장 많이 쓰기 때문에 손실함수로 부르겠습니다.

이 손실 함수는 말 그대로 손실(Loss)를 나타냅니다. 즉, 실제값과 예측값의 차이를 계산하는 함수입니다.
단순하게 실제값-예측값 으로 손실을 계산하게 되면 손실값이 음수가 나오는 경우가 생깁니다.
또한 데이터의 특성에 맞는 계산 방법을 사용해야 학습의 효율이 올라갑니다.
파이토치에서는 다양한 손실 함수 기능을 제공합니다.

1. torch.nn.MSELoss(평균 제곱 오차)
Mean Square Error, 즉 평균 제곱 오차 방식으로 계산하는 방법입니다. 회귀문제에 자주 사용됩니다.

2. torch.nn.L1loss(평균 절대 오차)
Mean Absolute Error, 즉 평균 절대 오차를 계산하는 손실 함수입니다. 회귀문제에 자주 사용됩니다.

3. torch.nn.CrossEntropyLoss(교차 엔트로피)
일반적으로 다중 분류 문제에 사용됩니다.

4. torch.nn.BCELoss(이진 교차 엔트로피)
Binary CrossEntropy Loss, 즉 이진 교차 엔트로피 손실 함수로써 이진 분류에 사용됩니다. 이 손실 함수는 Sigmoid 함수를 포함합니다.

5. torch.nn.BCEWithLogitsLoss
BCELoss 손실함수에서 Sigmoid가 포함되지 않은 손실함수입니다.

6. torch.nn.NLLloss
Negative Log Liklihood, 음의 로그 우도 방법으로 손실을 계산합니다. 분류 문제에 사용되며 주로 로그 소프트맥스(Log Softmax) 출력을 사용하는 다중 클래스 분류에 사용됩니다.

7. torch.nn.KLDivLoss
쿨백-라이블러 발산을 계산하는 손실 함수입니다. 주로 생성 모델의 분포와 실제 데이터 분포 간의 차이를 측정하는 용도, 분포 간의 정규화를 위해 사용됩니다.


옵티마이저(Optimizer)

옵티마이저는 학습 과정에서 최적화 역할을 합니다. 앞서 보았던 손실 함수에서는 손실을 계산합니다. 좋은 학습 결과가 나오기 위해서는 이 손실값이 작아야 합니다. 그렇다면 손실값이 작아질 수 있도록 돕는 역할을 하는 것이 바로 이 옵티마이저입니다. 최적화 알고리즘이라고 부르기도 합니다.
이런 옵티마이저를 통해서 가중치와 편향을 찾아내는 과정이 학습 과정이 되는 것이죠.

1. SGD(Stochastic Gradient Descent)
각각의 파라미터에 대해 학습률을 곱한 값을 사용해 가중치를 업데이트 합니다.

2. Adam(Adaptive Moment Estination)
학습률을 각 파라미터마다 동적으로 조절합니다. 현재 기울기와 이전 기울기의 지수 가중 평균을 사용하여 업데이트 합니다.

3. RMSprop(Root Mean Square Propagation)
그래디언트의 제곱값의 이동 평균을 사용해서 학습률을 조절합니다.

4. Adagrad(Adaptive Gradient Descent)
이전 기울기의 제곱의 누적 값을 사용하여 학습률을 조절하는 방식으로 업데이트 합니다.

5. AdamW(Adam with weight decay)
Adam에 가중기 감쇠(L2 정규화)를 추가한 옵티마이저입니다. 가중치 감쇠를 넣음으로써 모델을 규제하는 효과가 있습니다.

profile
동물을 좋아하는 개발자(희망)의 저장소

0개의 댓글