분류 전체보기 84

스태킹 앙상블 (Stacking Ensemble)

이번 글에서는 앙상블 모델의 한 종류인 스태킹 앙상블(Stacking Ensemble)에 대해 소개한다. Stacking Ensemble 스태킹 앙상블은 여러 모델을 이용하여 결과를 도출한 후 이를 종합하여 최종 예측을 한다는 점에서 보팅, 배깅 등의 다른 앙상블과 공통점이 있다. 스태킹 앙상블의 가장 중요한 차이점은 다음과 같다. 개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다 왼쪽 그림이 보팅, 오른쪽 그림이 스태킹이다. 보팅은 학습데이터를 이용해 개별 모델들을 학습하고, 학습된 모델들을 기반으로 검증데이터의 label을 예측하여 예측결과를 합산하는 방식이다. 스태킹은 반면, 학습데이터를 이용하여 개별 모델을 학습하고, 학습 과정 중에 예측했던 개별 모델의 예측값을 모두 취합하여 최종..

하이퍼 파라미터 튜닝 기법 (Grid Search, 베이지안 최적화)

머신러닝 알고리즘의 성능을 가장 간단하게 올릴 수 있는 방법은 하이퍼 파라미터를 적절하게 튜닝하는 것이다. 이번 글에서는 대표적인 하이퍼 파라미터 튜닝 기법인 Grid Search와 베이지안 최적화에 대해 소개한다. Hyper Parameter 하이퍼 파라미터란 학습 모델의 '설정'과도 같다. 모델 선언시 각각의 모델이 가진 설정을 변경하지 않는다면 기본값으로 설정되고, 모델은 이 설정을 참고하여 학습을 진행한다. 대표적인 하이퍼 파라미터로는 학습률(Learning Rate), 반복 횟수(Epoch, 주로 딥러닝에서 사용) 등이 있다. 각각의 학습 모델은 특정 하이퍼 파라미터 값의 조합에서 가장 높은 성능을 발휘한다. 이 조합은 같은 종류의 모델이더라도 데이터셋의 크기나 종류에 따라 완전히 다른 조합이 ..

부스팅(Boosting) - XGBoost, LightGBM

이번 글에서는 부스팅(Boosting)과 대표적인 부스팅 알고리즘인 XGBoost, LightGBM에 대해 소개한다. Boosting 부스팅은 여러 개의 약한 학습기(weak learner)를 순차적으로 학습-예측하면서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가며 학습하는 방식이다. 위의 그림은 부스팅의 기본 알고리즘을 그림으로 나타낸 것이다. 부스팅은 다음과 같은 순서로 진행된다. 첫 번째 분류기 이용하여 데이터셋을 분리한다(Box 1). 세 개의 Positive 데이터가 잘못 분류된 것을 확인할 수 있다. Box 1에서 잘못 분류된 데이터에 가중치를 두어 옳게 분류할 수 있도록 두 번째 분류기를 생성한다. 그 결과 Negative 데이터 3개가 잘못 분류된 것을 확인할 수 있다. 설..

배깅(Bagging) - 랜덤 포레스트(Random Forest)

이번 글에서는 앙상블 학습 유형 중 하나인 배깅에 대해 소개한다. 보팅(Voting) 배깅(Bagging) 부스팅(Boosting) Bagging Bagging은 이전 글에서 소개한 Voting과는 달리 같은 알고리즘으로 여러개의 분류기를 만들고, 보팅으로 최종 결정하는 알고리즘이다. 대표적으로는 랜덤 포레스트(Random Forest) 알고리즘이 있다. 랜덤 포레스트는 결정 트리(Dicision Tree)를 기반 알고리즘으로 사용한다. 랜덤 포레스트는 앙상블 알고리즘 중 비교적 빠른 속도를 가지고 있고, 다양한 영역에서 높은 예측 성능을 보인다. Bagging이 Voting과 다른 점은 크게 두 가지이다. 보팅은 여러가지 종류의 Classifier를 사용하지만, 배깅은 한 종류의 Classifier를 ..

Ensemble Learning - Voting(보팅)

Ensemble Learning(앙상블 학습)은 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합하여 보다 정확학 최종 예측을 도출하는 기법이다. 이미지, 영상, 음성 등의 비정형 데이터의 분류는 딥러닝이 앙상블보다 뛰어난 성능을 보이고 있지만 정형 데이터 분류에 있어서는 앙상블이 더 뛰어난 성능을 나타내고 있다. 대표적인 앙상블 학습 유형은 3가지가 있다. 보팅(Voting) 배깅(Bagging) 부스팅(Boosting) 이번 글에서는 앙상블 학습 유형 중 하나인 보팅(Voting)에 대해 소개한다. Voting Voting은 일반적으로 서로 다른 알고리즘을 가진 분류기를 결합한다. 위의 그림은 Voting 방식을 도식화한 것이다. 동일한 데이터 셋에 대하여 Decision Tree, ..

DeepLab V3+ Xception

이전 글에서 소개한 Xception, Depth-wise Separable Convolution 등을 토대로 DeepLab V3+ Xception을 소개한다. DeepLab V3+ Xception에서 사용하는 Xception BackBone은 이전글에서 소개한 Xception과는 구조가 약간 다르다. Middle flow를 기존에 8번 반복하던 것에서 16번으로 바꾸어 더 깊은 구조를 형성 Max Pooling을 Depth-wise Separable Convolution(stride=2)로 바꾸어 사용 3 * 3 Depth-wise Convolution 후에 Batch Normalization과 ReLU를 사용하였다. 다음과 같이 수정된 Xception을 BackBone으로 이용한다. 여기서 BackBo..

Inception & Xception (for DeepLab V3+ Xception)

이번 글에서는 DeepLab V3+ Xception의 BackBone이 되는 Xception과 Xception의 이전 버전 모델인 Inception에 대해 소개한다. Inception Inception은 2014년 IRSVRC에서 1등한 모델로 GoogLeNet이라고도 부른다. Inception은 노드 간의 연결을 줄이면서(Sparse Connectivity), 행렬연산은 Dense하도록 처리한다. Inception의 기본 가정은 채널과 공간의 convolution을 분리하는 것이다. 위의 그림을 보면 모두 1 * 1 conv를 진행한 후 각자 다른 conv를 이용해 convolution을 수행하고 결과를 concatenation한다. 이 과정으로 채널과 공간의 convolution을 분리하게 된다. X..

Depth-wise Separable Convolution (for DeepLab V3+ Xception)

DeepLab V3+ Xception은 Xception model을 BackBone으로 이용한 DeepLab V3+ 아키텍처이다. 이번 글에서는 DeepLab V3+ Xception을 이해하기 위해 필요한 개념인 Depth-wise Separable convolution에 대해 소개한다. Depth-wise Convolution 기본적인 convolution 연산은 R, G, B 3개의 채널에 대하여 모두 같은 kernel을 이용하여 각각의 feature map을 뽑아낸 후 이를 합연산하여 하나의 feature map을 생성한다. 이렇게 convolution 할 경우 모든 채널에 같은 filter를 적용해야 하므로 해당 채널에 특이적인 filter를 만들 수 없다. 반면 Depth-wise Convolu..

DeepLab V3+

이전 글에서 DeepLab V3+를 이해하기 위해 필요한 Atrous Convolution, ASPP에 대해 소개하였다. 이를 이용하여 이번 글에서는 DeepLab V3+에 대해 소개한다. 위의 그림은 전체적인 DeepLab V3+의 구조이다. DeepLab V3+는 Encoder - Decoder 구조로 이루어져 있다. Encoder에서는 먼저 Atrous Conv를 이용하여 feature map을 형성한다. 그 후 ASPP를 이용하여 최종 feature map을 형성한다(ASPP를 이용하면 다양한 receptive field를 이용하여 feature map을 형성할 수 있다). Decoder의 시작은 Encoder에서 생성한 Low-Level Features로부터 시작한다. Encoder의 featu..

Atrous Convolution, Atrous Spatial Pyramid Pooling(ASPP) (for DeepLab V3+)

DeepLab v1~v3는 대표적인 segmentation 모델이다. 이번 글에서는 가장 최신 segmentation model 중 하나인 DeepLab V3+를 이해하기 위해 필요한 Atrous Convolution, Atrous Spatial Pyramid Pooling(ASPP)를 설명한다. Atrous Convolution Atrous Convolution은 기존 covolution과 동일한 parameter, 연산량을 유지하면서 receptive field(convolution kernel이 인지하는 영역)는 크게 만드는 covolution이다. 중심 pixel의 최근접 이웃 pixel이 아닌 더 먼 거리의 이웃 pixel을 이용하여 convolution을 진행하면 더 큰 영역을 인식하는 fea..