[인공지능 기초] 앙상블 학습(Ensemble Learning)
·
AI Research/Artificial Intelligence
▶ 앙상블 학습(Ensemble Learning)이란? 앙상블 학습은 여러 개의 모델을 생성하고, 그 모델들의 예측을 결합하여 보다 나은 예측 결과를 도출하는 방법입니다. 강력한 모델 하나만을 사용하는 대신 조금 약한 모델들을 조합하여 더 정확한 예측을 하겠다는 방식입니다. 앙상블 학습은 굉장히 강력한 학습법인만큼 캐글에서 XGBoost, LightGBM과 같은 앙상블 알고리즘들이 큰 인기를 끌고 있습니다. 가장 기본적인 앙상블 알고리즘으로는 보팅(voting), 배깅(bagging), 부스팅(boosting), 스태킹(stacking) 등이 있습니다. ​ ​ ▶보팅(voting) 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식입니다. 서로 다른 알고리즘을 여러 개 결합하여 사용합니다. ..
[Pytorch] Inference Time Check
·
Pytorch
딥러닝이 일상 생활에서 사용되려면 기본적으로 굉장히 빠른 인퍼런스 속도를 갖춰야 합니다. 때문에 millisecond 단위로 속도를 재고 평가해주어야 합니다. ​ ​ ▶Asynchronous execution 딥러닝은 비동기 방식으로 작동하기 때문에 높은 효율성을 갖습니다. 그렇다면 왜 비동기 방식으로 작동할까요? => 먼저, 여러 개의 batch를 inference 하는 상황을 생각해보겠습니다. 첫번째 batch가 GPU에서 연산이 되고 있을 때, GPU의 작업이 다 끝날때까지 CPU는 어떻게 동작해야 할까요? 마냥 기다리기만 한다면 이는 매우 비효율적일 것입니다. 때문에 CPU는 GPU의 작업이 모두 끝나지 않더라도 다음 batch 를 위한 작업을 해둬야 합니다. 바로 이점 때문에! 딥러닝 모델의 G..
[Pytorch] loss nan 해결하기
·
Pytorch
신경망을 학습시키다 보면 학습 도중 loss 가 nan 값이 등장하는 경우가 발생하기도 합니다. nan loss나 nan output이 발생했을 때 원인을 찾고 해결할 수 있는 방법에 대해 포스팅 하겠습니다. ​ ​ ▶ nan 이 발생한 연산 찾기 먼저 torch. autograd 함수중에서 nan loss 가 발생하면 그 즉시 실행을 멈추고 nan을 유발한 코드 라인을 찾아야합니다. 이를 쉽게 해주는 함수가 바로 출력해주는 함수가 autograd.set_detect_anomaly() 입니다. autograd.set_detect_anomaly(True) 스크립트 제일 위에 위 코드를 추가해주면, 어느 라인에서 nan이 발생했는지 터미널 창의 문구를 통해 알 수 있습니다. 좀 더 구체적으로 이 함수는 au..
[Pytorch] Tensor Manipulation
·
Pytorch
Pytorch는 텐서의 형을 변환해주는 다양한 함수들을 제공해줍니다. 이번 포스팅에서는 텐서의 형변화를 위한 아래 4가지 함수의 사용법과 차이점에 대해 설명해보겠습니다. - view() - reshape() - transpose() - permute() ​ ​ ▶ view( ) 와 reshape( ) 두 함수 모두 numpy의 reshape( ) 함수를 기반으로 하고 있습니다. 먼저 두 함수의 간단한 사용법 부터 설명하겠습니다. view()와 reshape() 모두 입력으로 shape을 받습니다. 원하는 차원의 shape을 적어주면 바로 형변환하여 리턴해줍니다. import torch x = torch.arange(12) print(x) # tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8,..