본문 바로가기

전체 글149

[머신 러닝/딥 러닝] Metric Learning의 개념과 Deep Metric Learning 1. 거리 함수 (Distance Function) 통계, 데이터 마이닝, 머신 러닝 등에서는 데이터 간의 유사도를 수치화하기 위해 일반적으로 거리 함수 (metric function)을 이용한다. 가장 대표적인 거리 함수로는 Euclidean 거리가 있으며, 두 데이터 $\textbf{x}_1 \in \mathbb{R}^{d}$과 $\textbf{x}_2 \in \mathbb{R}^{d}$에 대해 식 (1) 같이 정의된다. $$ d_E(\textbf{x}_1, \textbf{x}_2) = \sqrt{\sum_{i=1}^{d} (\textbf{x}_{1, i} - \textbf{x}_{2, i})^2} \tag{1}$$ 또 다른 대표적인 거리 함수로는 각 축 방향으로의 분산까지 고려한 Mahalanobi.. 2020. 9. 6.
CORD-19: 인공지능 기반의 COVID-19 연구 COVID-19 Open Research Dataset (CORD-19) 세계 최대 규모의 데이터 플랫폼인 Kaggle에서는 인공지능 기반의 코로나 바이러스 연구를 위해 COVID-19 open research dataset (CORD-19)을 공개했다. CORD-19는 COVID-19, SART-CoV-2, 그 외의 관련 코로나 바이러스에 대한 약 135,000개의 문헌을 모아 놓은 dataset이다. CORD-19는 Allen Instutite, Microsoft Research, IBM 등에서 코로나 바이러스 관련 연구를 위해 무료로 공개했으며, Kaggle CORD-19 페이지에서 다운 받을 수 있다. 데이터셋 구조 CORD-19는 코로나 바이러스 관련 문헌들의 metadata와 본문을 JSON의.. 2020. 6. 8.
2020년 6월 프로그래밍 언어 순위 2020년 6월 TIOBE Index TIOBE Index는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 결정한다. 순위 산정에 이용되는 수치는 아래와 같다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 있는 프로그래밍 언어.. 2020. 6. 2.
머신 러닝 기반의 Scientific Application을 위한 파이썬 라이브러리 1. Sckit-learn [link] 다양한 머신 러닝 알고리즘과 데이터 전처리 기법을 제공하는 라이브러이다. 간단하게 머신 러닝 기반의 application을 제작하고자 한다면 scikit-learn은 아마도 최적의 라이브러리일 것이다. 2. TensorFlow [link] 구글에서 공개한 딥 러닝 라이브러리이다. 텐서 기반의 병렬화된 연산과 다양한 종류의 인공신경망 (artificial neural network) 구현을 제공한다. 기업에서 머신 러닝 기반의 application을 제작하기 위해 특히 많이 이용되고 있다. 3. PyTorch [link] TensorFlow와 비슷한 딥 러닝 라이브러이다. PyTorch 또한 텐서 기반의 연산과 다양한 종류의 인공신경망 구현을 제공한다. 모듈화된 코드.. 2020. 5. 21.
[머신 러닝/딥 러닝] CGCNN: 인공지능과 소재 개발 (Artificial Intelligence and Material Discovery) 1. 결정 구조 및 구조에 대한 그래프 기반 표현 과학이나 공학에서 흔히 일컬어지는 소재 (material)는 원자들이 일정 패턴으로 배열된 결정 구조 (crystal structure)를 의미한다. 흔히 말하는 흑연, 다이아몬드, 페로브스카이트 등이 이러한 결정 구조를 의미하며, 결정은 반도체나 배터리 등의 다양한 응용을 제작하기 위한 기본적이면서도 필수적인 재료로 이용되고 있다. 이러한 이유로 목적에 맞는 새로운 소재를 찾는 것, 즉 소재 개발 (material discovery)은 물리 및 화학 분야에서 가장 중요하게 연구되고 있다. 그러나 하나의 결정 구조는 그림 1과 같이 결정을 구성하는 각 원자들의 종류, 구성비, 배열 등, 거의 무한대에 가까운 조합으로 만들어지기 때문에 지금까지 소재 개발은.. 2020. 3. 20.
2020년 3월 프로그래밍 언어 순위 및 비교 2020년 3월 TIOBE Index TIOBE Index는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 결정하며, 순위 산정에 이용되는 각 수치는 아래와 같다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 있는 프로그래밍 .. 2020. 3. 5.
[머신 러닝] 과적합 (Overfitting)과 Validation Dataset의 개념 1. 과소적합 (Underfitting)과 과적합 (Overfitting) 머신러닝에서 우리의 목표는 training dataset $\mathcal{D}_{train}$을 이용하여 모델을 학습하고, 학습된 모델을 이용하여 관측되지 않았던 새로운 데이터에 대해 예측을 수행하는 것이다. 머신러닝 연구 및 개발에서는 $\mathcal{D}_{train}$에 포함되지 않는 데이터를 모아서 test dataset $\mathcal{D}_{test}$를 구성하고, $\mathcal{D}_{test}$에 대해 모델의 성능을 측정함으로써 새로운 데이터에 대한 모델의 성능을 평가한다. $\mathcal{D}_{test}$는 학습 과정에서 참조할 수 없기 때문에 머신러닝 모델은 $\mathcal{D}_{train}$만을.. 2019. 12. 25.
[머신 러닝] 앙상블 (Ensemble) 방법의 이해 1. 앙상블 (Ensemble) 방법 다양한 분야의 머신 러닝 문제를 챌린지의 형태로 해결하는 플랫폼인 Kaggle에서는 복잡한 딥 러닝 알고리즘보다 간단한 머신 러닝 모델을 앙상블 방법을 기반으로 결합한 알고리즘이 우승하는 것을 많이 볼 수 있다. 머신 러닝에서 앙상블은 단어 그대로 여러 단순한 모델을 결합하여 정확한 모델을 만드는 방법이다. 만약 머신 러닝 기술을 이용하여 실세계의 문제를 해결하고자 한다면 앙상블 방법을 반드시 이용할 수 있어야하며, 이는 앞서 설명한 바와 같이 Kaggle 챌린지에서 수 없이 증명되었다. 2. 가장 기본적인 앙상블 방법: 투표 기반 앙상블 강력한 성능에 비해 의외로 앙상블 방법의 개념은 매우 단순하다. 앙상블 개념의 핵심 개념은 다양한 종류의 여러 estimator를.. 2019. 12. 24.
[머신 러닝/딥 러닝] 인공신경망 (Artificial Neural Network, ANN)의 종류와 구조 및 개념 그림으로 보는 인공신경망의 종류 및 구조 그림 1은 다양한 인공신경망 (Artificial Neural Network, ANN)의 종류와 개념을 시각적으로 보여주며, 원본 그림은 The Asimov Institute에서 확인할 수 있다. 이 글에서는 그림 1의 구조를 바탕으로 머신 러닝 분야에서 활발히 이용되고 있는 몇 가지 인공신경망들의 기본적인 개념을 소개한다. 1. Deep Feedforward Network (DFN) DFN은 딥 러닝에서 가장 기본적으로 이용되는 인공신경망이다. 그림에서도 볼 수 있듯이 DFN은 입력층, 은닉층, 출력층으로 이루어져 있으며, 보통은 2개 이상의 은닉층을 이용한다. DFN에서 입력 데이터는 입력층, 은닉층, 출력층의 순서로 전파된다. 구조에서 알 수 있듯이 DFN은.. 2019. 12. 23.
2019년 11월 프로그래밍 언어 순위 및 비교 2019년 11월 TIOBE Index TIOBE Index는 해당 프로그래밍 언어를 이용하는 엔지니어 및 업체의 수와 Google, Bing, Yahoo 등의 검색 엔진을 통해 검색되는 결과물의 수를 바탕으로 순위를 결정한다. 따라서 TIOBE index에서는 C/C++이나 Java와 같은 전통적인 프로그래밍 언어의 순위가 높게 산정되는 경향이 있다. Top 5 프로그래밍 언어 가장 인기 있는 5개의 프로그래밍 언어로는 Java, C, Python, C++, C#이 선정되었다. 그 중에서도 Python은 꾸준히 인기가 상승하여 2019년도부터는 C++을 제치고 3번째로 인기있는 언어로 선정되었다. 최근 다양한 분야에서 머신 러닝이 활발히 이용됨에 따라 Python의 인기 또한 크게 증가한 것으로 보인다.. 2019. 11. 30.
[머신 러닝/딥 러닝] 그래프 합성곱 신경망 (Graph Convolutional Network, GCN) 1. 그래프 데이터 대부분의 머신 러닝 알고리즘은 입력 데이터가 유클리드 공간 (Euclidean space)에 존재함을 가정하고 있다. 즉, 통계 데이터나 이미지처럼 입력 데이터가 벡터의 형태로 표현될 수 있어야 한다. 그러나 소셜 네트워크, 관계형 데이터베이스, 분자 구조 등과 같이 객체들과 그 객체들 간의 관계로 표현되는 데이터 (그림 1)는 기본적으로 아래와 같이 그래프로 표현된다. 소셜 네트워크: 사용자는 node로 표현되며, 친구 관계에 있는 사용자은 edge로 연결된다. 관계형 데이터베이스: 하나의 데이터베이스 또는 테이블은 node로 표현되며, 데이터간의 연관성이 있거나 쿼리를 처리하기 위해 참조해야하는 데이터베이스 또는 테이블은 edge로 연결된다. 분자 구조: 각 원자는 node로 표현.. 2019. 11. 28.
2019년 2월 프로그래밍 언어 순위 및 비교 TIOBE Index for June 2018 TIOBE programming language index는 해당 프로그래밍 언어를 이용하는 엔지니어 및 업체의 수와 Google, Bing, Yahoo 등의 검색 엔진을 통해 검색되는 결과물의 수를 바탕으로 순위를 결정한다. 따라서 TIOBE index에서는 C/C++이나 Java와 같은 전통적인 프로그래밍 언어의 순위가 높게 산정되는 경향이 있다. 그림 1. 2019년 2월 TIOBE 프로그래밍 언어 순위 (출처: TIOBE). Top 5 프로그래밍 언어 2018년도까지만해도 Java와 C, C++, Python, C#은 최근 3년간 가장 인기 있는 프로그래밍 언어로 선정되었으며, 5개의 프로그래밍 언어의 rating을 합치면 약 50%에 해당하는 수치를.. 2019. 2. 16.