코린이의 공부일기

[Boost Camp]Week 4 Day 5 P.stage(Ensemble)+회고 본문

BOOST CAMP_정리

[Boost Camp]Week 4 Day 5 P.stage(Ensemble)+회고

SOJUNG 2021. 8. 28. 02:08

이전에 모델링하는 법을 배웠다면 이번엔 만들어진 모델들을 비교해보며 각각의 특징들을 보고 나은 점을
조합하여 더 나은 모델을 만들 수 있지 않을까?


Ensemble

* 사실 Ensemble은 현업에서는 많이 쓰이지 않는다.
-> 그렇지만 성능이 좋아야하는 도메인에서는 꼭 해볼 필요가 있다.!(ex> Kaggle)

- Ensamble을 예로들자면 오케라에서 음은 같지만 음색이 다른 소리를 모아 화음을 만드는 것 과 같이
Ensemble은 싱글모델보다 더 나은 성능을 위해 여러 모델을 겹친다.

일반적으로 Ensemble은 여러 모델을 합쳐 Overfitting의 경향성이 생길 확률이 높다.

-Boosting 알고리즘은 High Bias에서 많이 쓰이며가중치를 활용해 약 분류기를 -> 강 분류기로 만들어주는 방식이다.
- Bagging 알고리즘은 High variance에서 많이 쓰이는 방식으로 데이터 샘플을 여러번 뽑아 각 모델에 학습시켜 결과물을 집계(Aggregration)하는 방식이다.


Model Averaging(Voting)

딥러닝 알고리즘은 일반적 경향에서 Voting방식을 많이 쓴다.
가정 : 서로 다른 모델이 같은 곳에서 Error을 만들 확률을 정말 적다
-> Ensemble하면 더 좋은 결과를 낼 수 있다.

-Hard Voting : 모델에서 나온 class들을 각각 다수결로 결정하는 방식

-Soft Voting : 각각의 모델이 추론한 class들의 확률을 분석해 높게 나온 점수 뿐 아니라 다른
점수들도 고려하는 방식

->결과적으로 전체적인 class을 고려한 Soft Voting이 성능이 좋을 경우가 많다.



Cross Validation

Cross Validation으로 지정된 Data을 버리지 않고 Validation의 위치를 고정하지 않고 돌아가며 지정해 훈련하는 방식이다.

Stratified K-Fold Cross Validation

K-fold Validation K는 대부분 5개부터 시작한다.
K-fold Validation의 단점은 Validation을 뽑을 때 class의 불균형하게 있을 때,
Class가 균등하게 훈련시키기 어려울 수 있다.
그래서 보안한 방법이 Stratified K-Fold Cross Validation이다
각각의 Train, Validation 클래스 분포가 최대한 동일하게 맞춰서 훈련해주도록 한다.


TTA( Test Time Augmentation)

-Test set에 augmentation을 적용해 모델의 성능을 파악할 수 있다.
+Ensemble모델에 쓸 수도 있다. 쉽게말해 Prediction Ensemble이라고 할 수 있다.



Ensemble의 성능과 효율의 Trade_Off


시간에 대한 소요시간이 많이 때문에 어디에 쓰이는지 확인하고 Ensemble을 사용해야한다.




Hyperparameter Optimization

시스템의 매커니즘에 영향을 주는 주요한 파라미터

실험을 통해 가장 최적화된 값을 찾아볼 수 있다.
그러나 학습을 1번 할때마다 고칠 수 있기 때문에 시간과 중비가 충분하다면 해볼 수 있다..!
그리고 모델자체에 성능을 많이 올려주지 않는다...!!!


Optuna

Optuna는 딥러닝 모델에 적용했을 때 매 Trial마다 파라미터를 변경하며 최적화된 parameter값을 찾아나가주는 프레임워크이다.




Experiment Toolkits & Tips


Training Visualization
-> Training 하는동안에 모니터링하는 방식을 알아보자

Tensorboard을 통해 학습동안에 학습과정을 실시간으로 관찰할 수 있다.

학습된 이미지들도 확인이 가능하다.



Tensorboard의 사용법

Wight and Bias (Wandb)

-> Wandb는 Tensorboard보다는 좀더 간편하게 사용할 수 있다

- Wandb init, log설정


+ P stage 1LEVEL 강의를 마치며
< TIP >

1. 코드만 유심히 보지말고 설명글을 유심하게보며 필자의 생각을 엿보는게 정말 중요하다 !

2. 코드는 이해력만큼 응용력도 커진다.
코드 하나하나의 구성을 파헤쳐보며 이해하는 것이 중요하다

3. Task을 진행할 때, 모델이나 논문을 찾아볼 수 있다.
게다가 코드까지 볼 수 있는 큰 장점이 있다.

2021-08-27 회고록 + 개인 Competition 끝

오늘 드뎌 ..!!! 개인 Competition이 끝이났다.
사실 월요일부터 수요일까지 3-4시간밖에 못자면서 굉장히 피곤했는데 나의 실전 역량면에서는 정말 크게 얻어낸 것이 많은 한 주 였다!
개인 Competition이 끝이나고 다음 주 부턴 팀 Competition이 진행되는데 우리 팀은 각자 역할을 나눴다.
팀전에서 난 Data Augmentation을 맡게 되었다. 사실 뭐가 하고싶은지 이야기하는데 내가바로 먼저 손을들어 Data Augmentation하고싶다고 얘기했다..!!ㅎㅎ
부스트캠프 들어오기전부터 여기서 가장 배워보고싶은 부분이 데이터 전처리 부분과 P Stage 경험이었기 때문에
나에겐 정말 좋은 기회로 다가왔다 .
그래서 이번 기회를 계기로 데이터를 시각화해보고 Augmentation의 종류들을 적용해봄으로써 성능면에 대한 부분을 나만의 보고서 (?) 처럼 작성도 해볼 예정이다.!
그렇기 때문에 주말에 Data을 맡으신 팀원 2분과 함께 그부분에 대해서 한번 논의를 해봐야 될 것 같다.
그리고 이번 강의를 통해 Wandb를 사용하면서 진행해보고싶은 마음도 생겼다.
이번에 내가 해야할 목록들을 나열해보며 정리해봐야겠다 : - )

그리고 이번에 김태진 마스터님 강의는 나에게 너무 큰 도움이 되었다.
번개장터를 많이 사용해본 앱 중 하나였는데 번개장터에서 데이터 사이언티스트를 하고 계신다고 하셔서 너무 신기했다 : )
그리고 마스터클래스 시간에 어떤 일을 하시는지 얘기해주시는데 너무 흥미롭고 더욱 궁금했다.
기회가 된다면 마스터님께 따로 여쭤볼 예정 ! *^_^*
그리고 강의 면에서도 설명도 깔끔하게 잘해주셔서 Training부분에서 잘 이해가 안갔는데
왜 이함수를 쓰고 어떤 역할을 하는지 설명해주셔서 그 부분의 고민거리가 해결되었다 .

그리고 마지막으로 마스터님께서 조언 (?)을 해주시는데 뭔가 나에게 큰 와닿는 이야기였다.
Competition 내에서 Score보다는 내가 여기서 무엇을 얻었고 어떤 것을 배웠는지가
정말 중요하다고 강조해주셨다.
즉 Competition이 끝나고 score에 너무 집착하지 않고 내가 이 Competition에서 어떠한 부분의 역할을 맡았고
내가 어떠한 작업을 통해 어떠한 결과를 얻었으며 그 과정에서 어떤 오류가 있었고 무슨무슨 과정을
통해 그 오류를 해결할 수 있었는지 얻어가는게 중요하다고 하셨다.
이렇게 마스터님 말씀처럼 Score 뿐 만 아니라 , 나의 성장과정을 Checking 해보면서 나아갈 방향을 찾는 것이
나중에 훨 씬 더 도움이 될 것이라 생각한다.!!!

모두 다음 주 팀별 Competition 화이팅합시다 ♥

Comments