본문 바로가기

분류 전체보기156

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.
[머신 러닝/딥 러닝] 합성곱 신경망 (Convolutional Neural Network, CNN)과 학습 알고리즘 1. 이미지 처리와 필터링 기법 필터링은 이미지 처리 분야에서 광범위하게 이용되고 있는 기법으로써, 이미지에서 테두리 부분을 추출하거나 이미지를 흐릿하게 만드는 등의 기능을 수행하기 위해 이용된다. 필터링은 행렬의 형태로 표현된 이미지에 대해 행렬로 표현된 필터를 동일하게 적용함으로써 수행된다. 일반적으로 행렬로 표현된 필터링된 이미지의 $i$번째 행, $j$번째 열의 픽셀인 $G_{ij}$는 다음과 같이 원본 이미지 $X$와 필터 $F$의 합성곱 (convolution)으로 계산된다: $$G_{ij} = (F*X)(i,j) = \sum_{m=0}^{F_H - 1} \sum_{n=0}^{F_W - 1} F_{m,n} X_{(i-m),(j-n)}. \tag{1}$$ 위의 식 (1)에서 $F_H$와 $F_W.. 2019. 2. 6.
[머신 러닝/딥 러닝] 인공 신경망을 위한 확률적 경사 하강법 기존의 경사 하강법 (Gradient descent method)에서 특정 데이터만을 샘플링하여 학습하는 확률적 경사 하강법 (SGD)은 deep neural network를 학습시키기 위해 주로 이용되고 있는 최적화 기법이다. 미니 배치 단위로 정의되는 loss function을 $L$이라 할 때, SGD를 통한 neural network의 $i$번째 뉴런의 $j$번째 weight $w_{ij}$는 다음과 같이 update된다.$$w_{ij}^{(t+1)} = w_{ij}^{(t)} - \eta \frac{\partial L}{\partial w_{ij}^{(t)}}, \tag{1}$$이 때 $\eta$는 learning rate라고 하는 hyperparameter이고, $\frac{\partial L.. 2018. 12. 24.
2018년 12월 최신 프로그래밍 언어 순위 TIOBE Index for December 2018 TIOBE programming language index는 해당 프로그래밍 언어를 이용하는 엔지니어 및 업체의 수와 Google, Bing, Yahoo 등의 검색 엔진을 통해 검색되는 결과물의 수를 바탕으로 순위를 결정한다. 따라서 TIOBE index에서는 JavaScript와 같은 가벼운 프로그래밍 언어보다는 C/C++이나 Java와 같이 전통적인 프로그래밍 언어의 순위가 높게 산정되는 경향이 있다. [그림 1] TIOBE programming language index (출처: TIOBE) Top 5 Programming languages 가장 특이한 점은 C# 대신 Visual Basic .NET이 top 5 프로그래밍 언어에 올라갔다는 것이.. 2018. 12. 23.
[데이터 마이닝] DBSCAN과 밀도 기반 클러스터링 1. 밀도 기반 클러스터링 (Density-based clustering) 클러스터링 알고리즘은 크게 중심 기반 (center-based) 알고리즘과 밀도 기반 (density-based) 알고리즘으로 나눌 수 있다. 중심 기반 알고리즘의 가장 대표적인 것으로는 k-means clustering이 있으며, 밀도 기반 알고리즘에는 DBSCAN$^{[1]}$이 있다. 중심 기반 클러스터링 알고리즘은 "동일한 클래스에 속하는 데이터는 어떠한 중심을 기준으로 분포할 것이다"라는 가정을 기반으로 한다. 이와 다르게 밀도 기반 알고리즘은 "동일한 클래스에 속하는 데이터는 서로 근접하게 분포할 것이다"라는 가정을 기반으로 동작한다. 아래의 [그림 1]은 중심 기반 클러스터링 알고리즘 (k-means clusterin.. 2018. 9. 10.
[데이터 마이닝] 주성분 분석 (Principal Component Analysis, PCA)과 차원 축소 1. 차원 축소 (Dimensionality reduction) 대부분의 경우, 현실 세계의 문제는 가공되지 않은 데이터를 처리해야 한다. 예를 들어, 머신 러닝 모델을 이용하여 증명사진에 있는 인물의 성별을 맞추는 문제가 있을 때, 이 문제를 풀기 위해 우리는 성별이 표시된 증명사진을 머신 러닝 모델의 학습 데이터로 이용할 것이다. 하나의 사진이 200X200의 이미지라고 하면, 해당 사진은 총 40,000개의 feature를 갖는 벡터로 표현이 될 것이다. 그러나 대부분의 머신 러닝 모델은 입력 데이터의 차원이 클 경우, 차원의 저주와 학습 속도가 저하되는 문제를 갖고 있다. 이를 위해 생각해볼 수 있는 것은 이미지에서 인물에 대한 정보를 포함하지 않는 부분을 제거하여 입력 데이터의 차원을 낮추는 것.. 2018. 8. 27.