logistic 회귀분석에서, weight를 절대값으로 주고 학습하려면 어떻게 해야할까요?

안녕하세요
logistic 회귀분석에서, weight를 절대값으로 주고 학습하려면 어떻게 해야할까요?

아래와 같이 로지스틱 회귀분석시, weight를 절대값을 주려고 합니다.

그리고 코드 작성시

이렇게 weight에 torch.abs(w)후에, 시그모이드 함수에 넣는데
weight가 처음에 0으로 초기화 후, 학습이 되지 않습니다.
도움 주시면 감사하겠습니다!


정확히는 “EyeQual: Accurate, Explainable, Retinal Image
Quality Assessment” 논문에서 나온, Shifted Weight average pooling 입니다.

32x32 feature map에 32x32 weight를 내적하여, 시그모이드 함수에 넣는 것입니다.
그런데, weight가 학습되지 않고, 0이 되기에 질문을 드립니다.

안녕하세요, @bub3690 님.

(S-WAP 부분인지는 잘 모르겠지만 ^^; ) 말씀해주신 W의 초기값을 0으로 설정해서 생기는 문제이지 않을까 싶습니다.

한 번 W = torch.zeros((2, 1), requires_grad=True) 대신,
W = torch.randn((2, 1), requires_grad=True) 와 같이 무작위의 값으로 초기화하시고 학습을 해보시면 어떠실까요?

또한 (학습용 데이터셋을 보지는 못했지만) lr을 좀 낮춰보시는 것도 학습에 도움이 될 것 같습니다. :slight_smile:

좋아요 1

감사합니다!
초기화 방법만 달라져도 학습이 되는군요!

문제가 해결된 것 같아 다행입니다!

네, 가중치(Weight)의 초기화도 중요한 주제 중 하나로 알고 있습니다.

대략 도움이 되실 것 같은 링크들을 몇 개 첨부하니 참고 부탁드립니다. :wink:

https://ko.d2l.ai/chapter_deep-learning-basics/numerical-stability-and-init.html

좋아요 1