본문 바로가기

분류 전체보기156

[머신 러닝 이론] - 다양한 관점에서의 머신 러닝 머신 러닝 분야의 엄청난 발전과 함께 최근 머신 러닝을 활용하면 무엇이든지 가능한 것처럼 이야기하는 연구나 제품들이 많이 등장하고 있다. 그러나 머신 러닝은 장단점이 존재하며, 실제 머신 러닝을 실용 기술 개발 단계에서 적용하다보면 기존의 방법론보다 비효율적인 경우도 많이 접하게 된다. 머신 러닝의 장단점과 응용 가능 분야를 이해하기 위해, 이 글에서는 머신 러닝이 무엇이고 어떠한 점이 새로운 것인지 다양한 관점에서 소개한다. 1. 데이터 과학 관점에서의 머신 러닝 머신 러닝을 한 문장으로 정의하자면 '데이터로부터 예측 알고리즘을 학습시키기 위한 모든 구성 요소'이다. 즉, 머신 러닝의 가장 기본적인 요소 중 하나는 '데이터'이다. 컴퓨터 과학에서 데이터를 기반으로 연산을 수행하는 모든 것을 데이터 과학.. 2021. 12. 14.
2021년 9월 최신 프로그래밍 언어 순위 2021년 9월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 .. 2021. 9. 14.
[머신 러닝/딥 러닝] 그래프 어텐션 네트워크 (Graph Attention Network) 구조 및 설명 1. Self-Attention Mechanism Graph attention network (GAT) [1]를 이해하기 위해서는 먼저 self-attention mechanism에 대한 이해가 필요하다. 아래의 그림 1은 구글 AI 블로그의 예제를 이용하여 자연어 처리에서 self-attention이 어떻게 정의되고 이용되는지를 보여준다. 자연어 처리에서는 'it', 'them', '그것'과 같이 문맥을 고려해야 단어가 무엇을 의미하는지 알 수 있는 경우가 많다. 그림 1의 예제에서도 'it'이라는 단어가 'animal'을 의미하는지 'street'을 의미하는지 알기 위해서는 같이 입력된 문장 전체를 고려해야 한다. Self-attention은 어떠한 입력을 이해하기 위해 같이 입력된 요소들 중에서 무.. 2021. 8. 1.
[최적화] 입자 군집 최적화 (Particle Swarm Optimization, PSO)의 개념과 구현 1. 군집 기반 최적화 (Swarm-Based Optimization) 군집 기반 최적화는 수리적 최적화의 한 방법론으로써, 군집 기반 최적화에서는 여러 개의 optimizer가 서로 정보를 교환하며 동시에 최적화를 수행한다. 그림 1은 경사하강법 (gradient descent method)와 같은 single agent optimization과 PSO와 같은 swarm-based optimization의 차이를 개념적으로 보여준다. Single agent optimization에서는 주어진 법칙에 따라 최적해를 찾아간다. 대표적으로 경사하강법에서는 함수의 gradient를 따라 최적해를 찾아간다. 반면에 PSO와 같은 swarm-based optimization에서는 주어진 법칙에 더하여 agent .. 2021. 7. 25.
2021년 7월 최신 프로그래밍 언어 순위 2021년 7월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 .. 2021. 7. 8.
Python을 이용한 이용한 유튜브 (YouTube) 댓글 수집 1. YouTube Data API YouTubue 댓글 수집에는 Google에서 제공하는 YouTube Data API를 이용하는 방법과 동영상이 게시된 HTML 문서에서 직접 데이터를 크롤링 (crawling)하는 방법이 있다. 그러나 크롤링 방식은 YouTube에 의해 크롤링 코드의 접근이 차단되거나, 홈페이지 업데이트로 인해 HTML 문서의 형식이 변경되면 동작하지 않을 수 있다는 문제점이 있다. 이 글에서는 Python과 Google에서 제공하는 YouTube Data API를 이용하여 YouTube에 게시된 동영상의 댓글을 수집하는 방법을 소개한다. 개인적인 용도로 API를 이용할 경우에는 할당량을 초과할 일이 거의 없지만, 공개 서비스를 제공하기 위한 목적으로 API를 이용하는 경우에는 반드.. 2021. 1. 17.
2020년 9월 최신 프로그래밍 언어 순위 2020년 9월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 .. 2020. 9. 7.
[머신 러닝/딥 러닝] 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.