머신러닝에서는 K-Fold로 예측분포의 분산이 작은 모델 아키텍처나 하이퍼파라미터 등을 찾을 수 있잖아요. 근데 딥러닝에서는 안그래도 학습시간이 긴데 k배로 늘리는것은 너무 길어져서 적용도 어려운데, 어떻게해야 예측분포의 분산이 작은 걸 찾을수있나요?
댓글 23
저도 그거 찾아보려고 열심히 봤는데 하이퍼파라미터 최적화 관련한건 굉장히 적어서 고민이 많습니다.
저의 경우에는 해결책으로 bayesian information criterion을 최적화 값으로 두고 하이퍼파라미터 최적화를 합니다.
없써지기(suitcase0114)2024-11-21 20:09:00
답글
근데 생성형 모델은 모르겠네요
없써지기(suitcase0114)2024-11-21 20:12:00
답글
저도 하이퍼파라미터 최적화는 베이지안, 유전 알고리즘 등 여러 개 해보긴하는데 베이지안이 제일 무난한거 같긴해요.
딥부이 2(220.86)2024-11-21 23:33:00
k개의 모델을 학습한 다음 그 중에서 예측 분포의 엔트로피가 제일 작은걸 찾겠다고?
익명(vital7966)2024-11-21 21:22:00
답글
kfold말고 묻는거임
Cytrus(minhyoo1)2024-11-21 21:26:00
답글
그럼 예측 분포의 엔트로피를 가장 작게 하는 하이퍼파라미터들을 학습 없이 찾는방법이 있냐고?
익명(vital7966)2024-11-21 21:45:00
답글
제가 이 글을 쓴 이유가 뭐냐면 Kaggle로 한 번 연습해보는데 Public이랑 Private랑 성능 차이가 꽤 나오는 경우들이 있어서요. 그래서 Public의 성능을 정밀하게 측정할 필요성을 느꼈습니다. 머신러닝 같은 경우 K-Fold로 성능의 평균과 분산을 통해 정밀하게 측정이 가능하잖아요? 근데 딥러닝에서는 그러면은 학습시간이 k배가 되니까 뭔가 다른방법이 없을까해서 그런겁니다.
딥부이 2(220.86)2024-11-21 23:37:00
답글
보통 reproducible하게 seed를 고정하고 3~5개 돌려서 평균성능+분산으로 모델이나 알고리즘의 성능을 측정함
익명(vital7966)2024-11-22 01:02:00
정확히 뭘하고 싶은거임? 예측값의 분산을 구하고 싶은거임?
딥부이 1(203.230)2024-11-21 23:13:00
답글
인공지능에서 예측 분포의 분산을 줄이는건 그거 자체론 별 의미가 없는 행위인데
딥부이 1(203.230)2024-11-21 23:15:00
답글
제가 이 글을 쓴 이유가 뭐냐면 Kaggle로 한 번 연습해보는데 Public이랑 Private랑 성능 차이가 꽤 나오는 경우들이 있어서요. 그래서 Public의 성능을 정밀하게 측정할 필요성을 느꼈습니다. 머신러닝 같은 경우 K-Fold로 성능의 평균과 분산을 통해 정밀하게 측정이 가능하잖아요? 근데 딥러닝에서는 그러면은 학습시간이 k배가 되니까 뭔가 다른방법이 없을까해서 그런겁니다.
딥부이 2(220.86)2024-11-21 23:37:00
답글
개인적으론 포인트를 뭔가 잘못잡았다는 생각이 드는거 같은데 일단 Public이랑 Private 성능 차이가 발생하는건 예측 분포의 분산이 아니라 일반화 성능이 떨어지기 때문임, 예측 분포의 분산은 굳이 따지면 일반화 보다는 해당 모델의 출력을 얼마나 믿을 수 있는지를 나타내는거임. 일반적으론 예측 분포의 분산은 낮을 수록 일반화 성능이 떨어진다고 해야 하나? 당연히 K-Fold 역시 모델의 평균과 분산을 측정하기 위한 방법이라기 보다는 데이터 셋이 굉장히 적은 경우 보다 일반화된 모델을 얻기위한 접근법으로 이해해야됨, 하지만 말그대로 데이터 셋이 굉장히 적은 경우에 사용을 하는 접근 법이기 때문에 데이터 셋이 큰 경우에는 다른 방식들을 통해 일반화 성능을 확보해줘야함
딥부이 1(203.230)2024-11-22 01:24:00
답글
그보다 데이터 셋이 많으면 일반화 성능을 확보할 수 있는 방법도 많은데 굳이 K-Fold를? 이라고 일반적으론 생각하지 않을까 싶음
딥부이 1(203.230)2024-11-22 01:27:00
답글
음, 뭔가 제가 알고있는거랑 좀 다른 것 같네요. 일반적으로 머신러닝이든 딥러닝이든 편향과 분산의 문제는 있을 수밖에 없고, 그래서 Public이든 Private이든 오차 범위내의 성능을 얻고 싶어서 분산 이야기를 꺼낸겁니다. 그리고 K-Fold로 모델 성능의 평균과 분산을 통해서 정밀하게 측정하며, 딥러닝에서 잘 쓰지 않는 이유는 머신러닝에 비해 데이터셋이 거대한 경우가 매우 많은데, 학습 시간을 k배로 올리면 비용이 너무 크기 때문에 안하는 걸로 알고 있습니다.
딥부이 2(220.86)2024-11-22 01:33:00
답글
데이터셋이 정말 거대하면 K-Fold를 안해도 된다고 저도 생각하는데, Kaggle에서 그 정도로 거대한 데이터셋은 없으니까 결국 Private에서도 Public의 성능대로 나오는지 장담하기 위해 K-Fold 말고 다른건 없나 찾아보는 겁니다.
딥부이 2(220.86)2024-11-22 01:37:00
답글
public private 성능이 같아야할 이유도 없을뿐더러 성능차이가 왜 분산문제라 생갇함?? 예를들어 쉬운 테스트를 public에 넣고 어려운걸 private에 넣으면 뭔 수를 써도 당연히 metric 차이가 날텐데
익명(118.235)2024-11-22 11:32:00
답글
편향 분산 문제는 딥러닝에서 거의 일어나지 않는다고 보면됨
익명(vital7966)2024-11-22 20:18:00
나도 헷갈리는데 분산이 아니라 편향을 줄이고자 하는거 아님? 분산은 모수에있는 속성같은거라 줄이는 개념이 아닐걸
익명(219.249)2024-11-22 04:12:00
예측 분포의 분산이란 표현을 쓰면 안되지 애초에 딥러닝 자체가 데이터의 분포를 찾는게 목적인데 분산을 찾아야지 맘대로 줄이면 어떡하냐;;;
저도 그거 찾아보려고 열심히 봤는데 하이퍼파라미터 최적화 관련한건 굉장히 적어서 고민이 많습니다. 저의 경우에는 해결책으로 bayesian information criterion을 최적화 값으로 두고 하이퍼파라미터 최적화를 합니다.
근데 생성형 모델은 모르겠네요
저도 하이퍼파라미터 최적화는 베이지안, 유전 알고리즘 등 여러 개 해보긴하는데 베이지안이 제일 무난한거 같긴해요.
k개의 모델을 학습한 다음 그 중에서 예측 분포의 엔트로피가 제일 작은걸 찾겠다고?
kfold말고 묻는거임
그럼 예측 분포의 엔트로피를 가장 작게 하는 하이퍼파라미터들을 학습 없이 찾는방법이 있냐고?
제가 이 글을 쓴 이유가 뭐냐면 Kaggle로 한 번 연습해보는데 Public이랑 Private랑 성능 차이가 꽤 나오는 경우들이 있어서요. 그래서 Public의 성능을 정밀하게 측정할 필요성을 느꼈습니다. 머신러닝 같은 경우 K-Fold로 성능의 평균과 분산을 통해 정밀하게 측정이 가능하잖아요? 근데 딥러닝에서는 그러면은 학습시간이 k배가 되니까 뭔가 다른방법이 없을까해서 그런겁니다.
보통 reproducible하게 seed를 고정하고 3~5개 돌려서 평균성능+분산으로 모델이나 알고리즘의 성능을 측정함
정확히 뭘하고 싶은거임? 예측값의 분산을 구하고 싶은거임?
인공지능에서 예측 분포의 분산을 줄이는건 그거 자체론 별 의미가 없는 행위인데
제가 이 글을 쓴 이유가 뭐냐면 Kaggle로 한 번 연습해보는데 Public이랑 Private랑 성능 차이가 꽤 나오는 경우들이 있어서요. 그래서 Public의 성능을 정밀하게 측정할 필요성을 느꼈습니다. 머신러닝 같은 경우 K-Fold로 성능의 평균과 분산을 통해 정밀하게 측정이 가능하잖아요? 근데 딥러닝에서는 그러면은 학습시간이 k배가 되니까 뭔가 다른방법이 없을까해서 그런겁니다.
개인적으론 포인트를 뭔가 잘못잡았다는 생각이 드는거 같은데 일단 Public이랑 Private 성능 차이가 발생하는건 예측 분포의 분산이 아니라 일반화 성능이 떨어지기 때문임, 예측 분포의 분산은 굳이 따지면 일반화 보다는 해당 모델의 출력을 얼마나 믿을 수 있는지를 나타내는거임. 일반적으론 예측 분포의 분산은 낮을 수록 일반화 성능이 떨어진다고 해야 하나? 당연히 K-Fold 역시 모델의 평균과 분산을 측정하기 위한 방법이라기 보다는 데이터 셋이 굉장히 적은 경우 보다 일반화된 모델을 얻기위한 접근법으로 이해해야됨, 하지만 말그대로 데이터 셋이 굉장히 적은 경우에 사용을 하는 접근 법이기 때문에 데이터 셋이 큰 경우에는 다른 방식들을 통해 일반화 성능을 확보해줘야함
그보다 데이터 셋이 많으면 일반화 성능을 확보할 수 있는 방법도 많은데 굳이 K-Fold를? 이라고 일반적으론 생각하지 않을까 싶음
음, 뭔가 제가 알고있는거랑 좀 다른 것 같네요. 일반적으로 머신러닝이든 딥러닝이든 편향과 분산의 문제는 있을 수밖에 없고, 그래서 Public이든 Private이든 오차 범위내의 성능을 얻고 싶어서 분산 이야기를 꺼낸겁니다. 그리고 K-Fold로 모델 성능의 평균과 분산을 통해서 정밀하게 측정하며, 딥러닝에서 잘 쓰지 않는 이유는 머신러닝에 비해 데이터셋이 거대한 경우가 매우 많은데, 학습 시간을 k배로 올리면 비용이 너무 크기 때문에 안하는 걸로 알고 있습니다.
데이터셋이 정말 거대하면 K-Fold를 안해도 된다고 저도 생각하는데, Kaggle에서 그 정도로 거대한 데이터셋은 없으니까 결국 Private에서도 Public의 성능대로 나오는지 장담하기 위해 K-Fold 말고 다른건 없나 찾아보는 겁니다.
public private 성능이 같아야할 이유도 없을뿐더러 성능차이가 왜 분산문제라 생갇함?? 예를들어 쉬운 테스트를 public에 넣고 어려운걸 private에 넣으면 뭔 수를 써도 당연히 metric 차이가 날텐데
편향 분산 문제는 딥러닝에서 거의 일어나지 않는다고 보면됨
나도 헷갈리는데 분산이 아니라 편향을 줄이고자 하는거 아님? 분산은 모수에있는 속성같은거라 줄이는 개념이 아닐걸
예측 분포의 분산이란 표현을 쓰면 안되지 애초에 딥러닝 자체가 데이터의 분포를 찾는게 목적인데 분산을 찾아야지 맘대로 줄이면 어떡하냐;;;
편향이랑 분산을 헷갈리는거 아님?
질문한 애는 오차의 분산을 줄이고 싶다는 말을 하는 거 아님?
? - dc App
해결책은 표본 증대라고 함
https://m.dcinside.com/board/stat/190