머신러닝
-
인공지능, 훈민정음에 스며들다 - 대화요약머신러닝 2022. 1. 23. 17:17
길고 긴 2달 하고도 2주간의 해커톤 대회가 끝이났다. 참 다양한 상황을 겪었고, 많은 것을 느끼게 해준 대회였다. 대회를 하면서 가장 다짐했던건 '기록'에 대한 생각이었다. 나는 나름대로 매년 해커톤을 참가하면서 실력을 키워나갔던 것 같다. 하지만, 대회가 끝나고 방전이 된 나머지 해커톤을 하면서 배웠던 지식, 느낌 감정들을 정리하지 않았다. 이번 대회를 하면서 우연히 과거에 내가 참가했던 대회들에 대한 후기들을 읽게 되었다. 그 후기들을 보면서 잊고 있었던 기억들이 흐리게나마 떠올랐다. '나도 참 얻어간게 많았는데, 정리한게 없구나' 라는 생각이 들었다. 그래서 이번에는 늦게나마 내가 실험한 모델, 아이디어, 아쉬운점을 정리해보려한다. 1. 주제 한국어 메신저 대화를 요약하자. - 데이터 AI-hub..
-
[ML] GBM (Gradient Boosting machine)머신러닝 2021. 5. 19. 17:49
최근에 ML기반의 모델에서 좋은 성능을 보이는 LGBM에 대해서 뜯어보자. 그 전에, Boosting의 기본적인 특성을 알아하는데, https://life-of-h2i.tistory.com/37 여기에서! 간단하게만 정리하면, 부스팅은 weak한 모델을 여러개 이용하여 좋은 결과를 얻는 방식이다. (단, 여기서 이용되는 모델들은 Seqeuntial하게 전자의 모델이 못 맞춘 부분을 맞추는 방식으로 생성된다.) GBM (Gradient Boosting Machine) GBM은 제목에서 알수있듯이 'Gradient Descent' + 'Boosting'이 합쳐진 것이다. Boosting은 알고 있으니, Gradient Descent를 간단히 살펴보자. 1. Gradient Descent https://lif..
-
[부캠] Python 특징에 대한 개념 정리머신러닝 2021. 1. 18. 18:30
오늘은 간단하게 Python에 대한 소개 및 설치에 대한 강의를 수강했다. 간단하다고 했지만, 파이썬 특징 설명할때 움찔했으므로 정확히 정리해야지. 1. 플랫폼에 독립적인 인터프리터 언어. 파이썬은 플랫폼 (OS)에 독립적이다. 즉, 어떤 OS에서도 파이썬은 돌아간다는 뜻. 그럴 수 있는 이유는 '인터프리터' 때문이다. - 인터프리터란 무엇인가? high level 언어로 작성된 프로그램을 한 줄 단위로 번역하고, 바로 실행하는 번역 프로그램이다. - 인터프리터 vs 컴파일러 인간의 High level로 작성된 프로그램을 컴퓨터가 이해할 수 있는 Low level로 번역하는 과정에 사용되는 2가지의 프로그램이 있다. 컴파일러와 인터프리터 이 2개는 작동방식에 따라 차이가 난다. 컴파일러는 프로그램 스크립..
-
앙상블 기법 배깅 vs 부스팅 vs 스태킹머신러닝 2021. 1. 15. 22:01
. 딥러닝, 머신러닝을 공부하다보면 '앙상블'이라는 단어가 많이 나온다. 앙상블은 인간의 집단 지성처럼 1개의 모델이 아닌, 여러 모델(여기서 모델이란 weight가 다른 같은 아키텍쳐도 다른 모델이라 생각한다)을 합쳐서 더 좋은 결과를 얻는것이다. 이러한 앙상블에 대표적인 3개의 기법이 있다. 배깅 (bagging) 배깅은 데이터의 일부를 복원추출해서 여러 모델에서 학습시킨 결과를 합쳐서 좋은 결과를 얻는다. (추출된 샘플 데이터 그룹을 bootstrap이라한다.) 대표적인 예로는 Random forest 기법이 있다. 부스팅 (Boosting) 부스팅은 weak한 모델을 여러개 이용하여 좋은 결과를 얻는 방식이다. 여기서, weak한 모델이란 성능이 별로 좋지 않은 모델을 의미한다. 그렇다면, 어떻게..
-
[머신러닝]샘플링 기법머신러닝 2020. 12. 7. 19:25
데이터 전처리 과정에서 정말 중요한 것 중 하나가 '데이터 샘플링'이다. 나는 정말 별 생각 없이 Minor Class의 개수를 늘리거나, Major Class의 개수를 줄이는 언더샘플링/ 오버샘플링을 진행했다. 하지만, 더 좋은 방법들이 많으니, 정리해봐야지. 언더샘플링 : Major class의 일부를 제거해 알고리즘에 주는 영향을 줄이는 방법 1. Random Sampling 제일 단순하고, 직관적인 방법. Major Class의 일부를 랜덤하게 없앤다. 단순하지만, 효과적이라고 알려져있다. - 단순 랜덤샘플링 : 모든 클래스가 같은 확률로 뽑히도록하는 방법 (같은 개수로 언더 샘플링) - 계통 랜덤샘플링 : 시작 데이터를 임의로 정하고 임의의 K번째마다 데이터를 뽑는 방법 - Cluster 랜덤샘..
-
[Pytorch] multiple forward process머신러닝 2020. 6. 12. 01:36
데이터를 학습하는 과정에서 같은 모델에서 학습을 하지만, 다른 인풋데이터를 동시에 사용하는 경우가 종종있다. (나는 지금 Unsupervised Out-of-Distribution Detection by Maximum Classifier Discrepancy(2019)를 재현하고 있는데, 이 모델에서도 label이 있는 데이터와 label이 없는 데이터를 같이 모델에서 학습한다.) 이러한 상황에서 내가 모델을 구현한 방법은 model.train() for i, sup_data in enumerate(dataloaders['sup_train']): unsup_data = dataloaders['unsup_train'][i % len(dataloaders['unsup_train'])] sup_inputs =..
-
CV 이미지 전처리 -Image thresholding (ft.tesseract)머신러닝 2020. 6. 10. 01:45
1. OCR로 읽을 데이터 - 크기 30*10 인 아주 미니미한 친구.. 2. 크기를 늘려주자 image.resize((image.size[0]*10,image.size[1]*10)) 3. 그레이스케일로 변환 전처리 전, 대비를 확실히주기위해 그레이 스케일로 변환을 먼저 시켯당. 4. 데이터 전처리 사실 내가 처리할 이미지는 영상 캡쳐 데이터여서 전처리하는게 어렵지 않았다. 흑과 백의 대비를 최대한 뚜렷하게가 목표!! 나는 여기서 BINARY / BINARY_INV 를 사용하기로 결정! - 방법 1 배경은 까맣게 + 숫자는 하얗게 cv2.threshold(src, thresh, maxval, type) #thresh : 흑/백이 전환되는 임계값 #임계값을 넘었을때 적용할 value np.mean(imag..