본문 바로가기

반응형

분류 전체보기

(369)
Mutable Default Arguments 파이썬은 굉장히 직관적인 언어입니다. 상대적으로 간단한 문법과 범용성으로 다양한 분야에서 많은 사람들이 사용하고 있지만 놓치기 쉬운 가벼운 실수들이 있습니다. 이번 포스트에서 살펴볼 것은 함수 정의에서 리스트 등의 가변 변수가 디폴트 값으로 설정되었을 때 발생하는 현상입니다. 다음과 같은 함수를 작성했을 때, def append_to(element, to=[]): to.append(element) return to my_list = append_to(12) print(my_list) my_other_list = append(42) print(my_list) 우리가 기대하는 실행 결과는 'append_to' 함수가 호출되었을 때마다 'to' argument의 새로운 리스트가 생성되어 [12], [42] 가..
Pycharm 설치 Pycharm은 체코 회사 JetBrains 에서 개발된 파이썬 언어를 위한 거의 모든 기능을 갖춘 통합 개발 환경 (IDE, Integrated Development Environment) 로서 가상환경 (virtual env), Console, Jupyter Notebook, 시스템 에뮬레이터 (Terminal) 을 지원합니다. Community Edition과 Professional version이 존재하며 community edition만 무료로 사용할 수 있습니다. (참고로 Professional version은 개인이 사용하려면 월 $89 가 필요하며 오래 구독할 수록 구독료가 감소합니다.) Pycharm 다운로드 공식 홈페이지에서 Pycharm을 다운받습니다. 이때 community edit..
Clustering - DBSCAN 지난 포스트에서 다루었던 K-Means는 데이터 간의 거리를 이용해 군집을 나누는 방법이라면, 이번 포스트에서 다룰 DBSCAN (Density-Based Spectral Clustering of Application with Noise)는 데이터가 세밀하게 모여있는 밀도가 높은 곳을 뭉치는 군집 방법으로서 서로 이웃한 데이터들을 군집에 반복적으로 포함시키기 때문에 일반적으로 원형 형태 군집으로 나타나는 거리 기반 군집화에 비해 불특정한 모양의 군집 형성이 가능합니다. 위 그림은 sklearn.datasets 모듈의 make_moons 함수를 이용한 가상 데이터를 K-Means와 DBSCAN을 이용하여 군집화 한 결과로 K-Means는 거리 기반으로 두 군집이 명확히 구분되지 않으나 DBSCAN은 밀도 ..
Clustering - 군집 개수 정하기 이전 포스트에서 군집화의 대표 알고리즘 K-Means에 알아보았습니다. K-Means의 대표적인 특징으로는 군집의 개수 $k$를 미리 설정해주어야 하는 것이었는데요. 데이터에 대한 사전 지식이나 나눌 그룹의 수를 미리 정의한 경우에는 괜찮지만 그러한 배경이 없는 경우 군집화가 비지도 학습이라 정답이 없기 때문에 일반적인 성능평가 방법을 이용할 수 없습니다. 어떻게 군집 알고리즘에 대한 성능평가를 내려 $k$를 적절하게 설정할 수 있을까요? Elbow method 가장 대표적인 방법으로 지난 포스트에서 다루었던 inertia 를 이용하는 방법입니다. Inertia는 각 군집 별 오차의 제곱의 합으로 군집 내 분산으로 정의할 수 있는데, 일반적으로 $k$가 증가하면 샘플이 할당된 센트로이드에 가까워져 ine..
Clustering - K-Means 군집화는 대표적인 비지도학습 주제의 하나로 데이터 $x$에 대한 출력 $y$를 예측하는 지도학습과는 달리 $x$ 자체가 비슷한 것끼리 묶어주는 알고리즘입니다. 비지도학습이니 당연히 $x$에 대한 라벨 $y$가 필요하지 않고 비슷한 특성을 가진 데이터끼리 그룹 (군집)을 구성하는 것으로 간단하게는 문서, 음악, 영화를 여러 주제의 그룹으로 모으는 경우나 스팸 이메일을 판단하는 데이도 사용되는 중요한 분야입니다. 이번 포스트에서는 군집화의 대표적인 알고리즘, K-Means를 살펴보도록 하겠습니다. K-Means K-Means 는 군집의 개수 $k$를 설정하고 각 군집에 할당된 데이터 샘플의 평균 중심으로 군집 중심을 이동하는 방법입니다. K-Means는 다음과 같이 4단계로 요약할 수 있습니다. 1) 데이터..
Dimension Reduction - t-SNE (1) t-SNE (t-distributed Stochastic Neighbor Embedding) 는 2008년에 Laurens van der Maaten이 발표한 차원 축소 기법으로 고차원 시각화에 많이 쓰이는 방법입니다. 전체 데이터에 대해서 선형 변환을 적용해 분산이 큰 principle component를 뽑아내는 PCA는 고차원 데이터의 복잡한 관계를 저차원으로 매핑하는 능력이 부족합니다. t-SNE는 고차원 manifold 상에 놓여진 데이터 간의 유사도를 저차원에서도 유지할 수 있도록 저차원 embedding 벡터를 학습함으로써 고차원 상의 복잡한 비선형 관계를 저차원 상에서도 잘 표현할 수 있도록 고안되었습니다. Stochastic neighbor embedding t-SNE는 SNE (Stoc..
Dimension Reduction - PCA 지난 여러 포스트에서 다루었던 특성 선택 (feature selection)은 원본 데이터의 feature를 유지하면서 덜 중요한 feature를 제거하는 방법이었습니다. 하지만 학습 알고리즘의 효율성을 높이기 위한 특성 줄이기의 방법으로는 새로운 특성 공간으로 데이터를 투영하여 원본 데이터의 정보를 최대한 유지하면서 특성 차원을 압축하는 차원 축소 (dimension reduction) 방법도 있습니다. 이번 포스트에서는 차원 축소에서 가장 대표적인 알고리즘, PCA (Principle Component Algorithm)을 다루어보도록 하겠습니다. 차원 축소는 변수 선택에 비해 어떤 장점을 지닐까요? 변수 선택은 손쉽게 덜 중요한 feature를 제거하지만 데이터 특성의 일부분을 완전히 제거하는 것이..
Self-Supervised Learning - SwAV (2) 이전 포스트 [Machine Learning/Unsupervised Learning] - Self-Supervised Learning - SwAV (1) Experiments SwAV 의 기본 실험 세팅은 SimCLR 과 거의 비슷합니다. 배치 사이즈는 4096을 사용하고 $\tau=0.1$, $\epsilon=0.05$를 사용합니다. 또한, LARS 옵티마이저를 사용하며 SimCLR 처럼 learning rate를 초반에 4.8로 높게 선택하고 일정 epoch 이후 cosine learning rate decay에 의해 감소시킵니다. 마지막으로 2-layer MLP projection head를 사용합니다. 실험 전체적으로는 ResNet-50 모델을 400 epoch 만큼 훈련시키며 2개의 일반적인 r..

반응형