본문 바로가기

활동/SK네트웍스 Family AI 캠프 2기

SK네트웍스 Family AI 캠프 2기 : 6th week (6월 3주차)

이번 주에는 유난히 힘이 많이 들었어요.

그렇지만 아직 남은 날들이 많은데 무너지면 안 되는 거죠!!

플랜 A 모두 정리하고 이 캠프에 올인하기로 마음 먹은 거였는데... 여기서 무너지면 과거의 제가 엄청 슬퍼할 거에요...

국민취업준비제도에서 대학원 포기 각서까지 쓰고 여기 입성한 거니까 더더욱 열심히 해야죠!

 

토실토실 덩치 크고 토끼처럼 귀여운,,,, 제 4090 gpu 값 다 치러야 해서 저는 오늘도 열심히 살아야 한다구요!!

집구석에 먹여 살려야 할 gpu가 있어요!!!

 

대학원 등록금으로 쓸려고 했던 돈을 개인 실험용 gpu에 투자한 케이스라... 이 프로그램 열심히 들어서 확실히 return 값을 받아내야겠다는 생각으로 입성했거든요!

 

어차피 이 분야에 올인하기로 맘 먹었으니까 끝까지 깡따구 있게 완주하겠습니다~~!!!!

AI 다루고 싶으면 석/박 이상으로 가야 한다고 많이들 말하지만, 모든 사람이 다 같은 사정에 놓인 건 아니잖아요?

최대한 열심히 하는 것이 제 나름의 답이라고 결론 내렸으니 다시 열심히 달려보겠습니다!!!

현실에 굴복할 것 같았으면 애초에 이거 시작도 안 했다구요...^^

 

● 성취

이번 주에는 머신러닝 진도를 끝마쳤습니다.

짧은 시간 내에 배우는 것이라 방대한 양을 모두 정리하는 데에는 한계가 있었지만, 이전에 배웠던 머신러닝 내용을 다시 점검할 수 있었다는 점에서 나름의 성취가 있었다고 생각합니다!

 

특히 이번 주 수업에는 제가 정말 좋아하는 책이 부교재로 등장해서 기분이 좋았습니다.

'모두의 딥러닝(조태호 저)'이라는 책인데, 대학 교수님 추천을 받고 정독을 했던 경험이 있거든요.

제가 정말 좋아하는 교수님의 추천 서적이라서 흥미롭게 읽었던 기억이 나요 :)

쉽고 재밌게 쓰여져 있어서 제 인생 전공책으로 삼고 있습니다...^^

그니까 가끔씩 제가 길거리 전도하는 것마냥 이 책 읽으라고 권해도 다들 놀라지 마세요!

 

● 개선 & 학습

 

이번 주간에는 개선이 곧 학습이고, 학습이 곧 개선이라고 느껴져서 하나로 합쳤습니다...^^

공부할 내용이 많은 주간이었던지라 테마를 나눌 필요가 없다는 생각이 들었네요.

 

# 앙상블(Ensemble) 기법

앙상블은 여러 개의 머신러닝 모델을 사용하여, 최적의 답을 구하는 기법입니다.

속담 중에 '백지장도 맞들면 낫다'라는 말이 있죠?

앙상블 기법이 이와 유사하다고 생각하면 좋아요.

참고로 앙상블 기법 중에는 보팅(Voting), 배깅(Bagging), 부스팅(Boosting) 등이 있습니다!

 

# 배깅(Bagging)

배깅(Bagging)은 영어로 '자루에 넣음, 자루 만드는 천'을 의미합니다.

왜 해당 기법에 자루에 넣는다는 표현을 붙인 걸까요?

 

그 이유는 바로 배깅의 '부트스트랩(Bootstrap)' 기법 때문입니다.

부트스트랩을 적용하면, 전체 데이터 중에서 일부만 뽑아서 같은 기법을 적용한 N개의 모델에 사용하게 됩니다.

그리고 사용한 데이터는 제거하지 않고, 타 모델 학습 시에도 사용합니다.

고급지게 말하면 복원추출이고... 막말로 표현하자면 재활용과 개념이 비슷하겠네요.

 

+) 위 사진에서 데이터 버리지 않고 재활용한 모습 잘 보이시나요? 게다가 똑같은 가방도 여러 개랍니다~

 

이렇게 N개의 모델에 부트스트랩 기법을 적용하면 N개의 값이 나오겠죠?

여기서 나온 N개의 값을 집계한 후, 답을 도출하는 방법을 '배깅(Bagging)'이라고 한답니다!

 

# 보팅(Voting)

보팅(Voting)은 영어로 투표, 선거를 의미합니다.

잠깐 대통령 선거에 참여했을 때를 떠올려 볼까요?

선거에 참여한 각각의 국민들은 모두 고유한 존재들입니다.

저마다 살아온 배경도 다르고, 갖고 있는 견해도 달라요.

 

보팅(Voting) 기법도 마찬가지입니다.

그래서 N개의 다른 기법을 적용한 모델을 사용합니다.

대통령 선거에 참여한 국민들이 모두 다른 것처럼, 보팅 기법에 참여한 모델들도 사용 기법이 모두 다릅니다.

이런 점이 바로 앞에서 설명한 배깅(Bagging) 기법과 다르죠!

 

보팅에는 두 가지 종류가 있습니다.

하나는 하드 보팅(Hard Voting)이고, 다른 하나는 소프트 보팅(Soft Voting)입니다.

하드 보팅은 다수결로 투표를 진행하고, 소프트 보팅은 각각의 확률값을 모아서 평균을 냄으로써 투표를 진행합니다.

 

 

그림을 보니확실히 하드 보팅이 좀 더 Voting의 원래 느낌이 강하긴 하죠?

그에 반해 소프트 보팅은 확실히 전자에 비해 소극적인 느낌이 들긴 합니다.

 

# 부스팅(Boosting)

부스팅의 영단어(Boost)에서 파생되었어요.

Boost라는 단어에는 '신장시키다, 북돋우다'라는 뜻을 갖고 있답니다!

이 단어 뜻은 부스팅 기법과도 연관이 있어요.

 

본격적인 설명을 하기 전에 앞에서 배운 '배깅(Bagging)' 기법을 떠올려 볼까요?

배깅은 독립적인 가방 N개를 생성해서 데이터를 재활용하여 의견을 도출했습니다.

'부스팅(Boosting)'은 배깅처럼 데이터 재활용(랜덤 복원)한다는 면에서 비슷한 점도 있지만, 순차적으로 N개의 모델을 학습시킨다는 점에서 달라요.

 

그리고 부스팅은 N개의 모델을 순차적으로 학습시킬 때, 이전 모델의 오답 요소에 더 집중한다는 특징이 있답니다! 사진에서도 잘 보이시죠?

 

부스팅 기법은 오답 노트 작성을 통해서 능력을 신장시키는 학생과 학습법이 비슷하다고 생각하면 좋을 것 같아요~!

 

# 의사결정나무(Decision Tree)

 

의사결정나무(Decision Tree)는 딱 봤을 때, 스무고개와 비슷해 보여요!

스무고개의 질문처럼 어떤 기준들을 통해 데이터를 걸러내는 단계를 거치면서, 깔끔하게 데이터 분류하는 것을 목표로 삼습니다.

 

고급지게 표현하면, 각 영역의 순도(homogeneity)는 증가하고, 불순도(impurity)와 불확실성(uncertainty) 감소를 목표로 학습하는 머신러닝 모델이라고 할 수 있습니다.

 

 

# 랜덤포레스트(Random Forest)

랜덤 포레스트(Random Forest)는 의사결정나무 모델에 배깅(Bagging)을 적용한 머신러닝 알고리즘이랍니다.

 

# 엑스트라트리(Extra Trees)

엑스트라 트리는 여러 개의 동일한 의사결정나무 모델을 사용한다는 점에서 랜덤포레스트와 비슷해 보입니다.

그러나 부트스트랩(재활용 적용한 랜덤 샘플 추출) 적용 없이, 훈련 데이터셋을 통으로 사용한다는 점에서 랜덤포레스트와 다릅니다. 

바로 이 차이점 때문에 엑스트라트리는 Bagging이라고 표현 불가능한 거랍니다!

 

# 그레디언트 부스팅(Gradient Boosting)

그레디언트 부스팅(Gradient Boosting)은 의사결정나무 모델 N개에 부스팅(Boosting)을 적용한 머신러닝 알고리즘이에요.

 

 

 

휴... 많은 개념을 정리한 게 아닌데도 상당히 벅찼네요... 그래도 다 작성하니까 뿌듯하다!

위에서 설명한 머신러닝 알고리즘 말고도 더 찾아봐야겠어요!

그리고 해당 모델들을 뒷받침하는 수식도 더 알아보려구요.

 

저는 쉽고 말랑한 설명을 좋아해서 글을 이렇게 쓰기는 하지만... 공부를 딥하게 하려면 수식을 더 찾아보긴 해야 할 것 같아요...^^ 절대 깔짝깔짝 공부로 끝내고 싶지 않아요!!!!

 

아무튼 다음 주차 수업도 힘내서 들어볼게요~ 아자잣~~!!

 

+) 부족한 부분이 있으면 댓글로 말씀해 주세요! 겸허한 마음으로 더 공부하겠습니다.