ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [주간학습 정리] Week 1
    Naver AI Tech 2024. 8. 9. 13:45

     

    학습 중 생긴 이론적 이슈 및 해결방법에 대해 기록하자

     

    1. nn.BCELoss() 파라미터 순서

    이슈: train loss가 비정상적으로 크고 학습하면서 감소가 되지 않는다.

    • BCELoss(Binary Cross Entropy Loss)는 이진 분류 문제에서 예측값과 실측값의 차이를 측정하는데 사용된다
    • 예측값과 실측값 간의 교차 엔트로피를 계산하여 손실을 산출한다
    • loss_function = nn.BCELoss() 일때
    • loss_function(예측값, 실측값) 순서로 작성해야한다
    • 예측값과 실측값 순서가 잘못된 경우의 문제점
      • 손실값의 왜곡
      • 훈련 오류
    • 수식적인 이유 
      • 수식에서 p는 예측값(0~1 사이의 확률값), y는 실측값(0 또는 1)을 의미한다
      • 참고로 log의 경우, log(0) = -infinity 이고 log(1) = log(1) 이다
      • 즉, 예측값과 실측값의 입력 순서가 바뀔경우, 계산상에 오류가 발생한다

    import torch.nn as nn
    
    loss_function = nn.BCELoss()
    
    # pre: 예측값, gt: 실측값
    loss = loss_function(pred, gt)

     

     

    2. torch.max(t, 0) vs torch.max(t, torch.tensor(0.)) 비교

    이슈: 원하는데로 양수 결과값이 반환되지 않는다

    • 텐서 t 가 있을때
    • torch.max(t, 0)은 t 텐서와 스칼라값 0을 비교한것이 아니라 t 텐서의 특정 차원에 대한 최대값을 계산한다
      • 0은 차원을 의미하며, t 텐서의 첫번째 차원에 대한 최대값을 계산한다
      • 이 연산은 다음 두개의 결과를 반환한다
        • 최대값 텐서: 각 위치에서 최다값을 포함하는 텐서
        • 인덱스 텐서: 각 위치에서 최대값을 가진 원소의 인덱스를 포함하는 텐서
    • torch.max(t, torch.tensor(0.))은 t 텐서의 각 요소와 스칼라값 0을 비교하여 최대값을 계산한다
      • t 텐서의 각 요소와 0을 비교하여 최대값을 포함하는 새로운 텐서를 반환한다

     

    import torch
    
    t = torch.tensor([1.2])
    
    torch.max(t, 0)
    '''
    torch.return_types.max(
    values=tensor(1.2000),
    indices=tensor(0))
    '''
    
    torch.max(t, torch.tensor(0))
    '''
    tensor([1.2000])
    '''

     

     

    'Naver AI Tech' 카테고리의 다른 글

    [주간학습 정리] Week 6  (2) 2024.09.13
    [주간학습 정리] Week 5  (1) 2024.09.06
    [주간학습 정리] Week4  (0) 2024.08.30
    [주간학습 정리] Week 3  (0) 2024.08.23
    [주간학습 정리] Week 2  (0) 2024.08.16

    댓글

© 2019 All rights reserved.