전체 글150 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. 2018년 6월 최신 프로그래밍 언어 순위 TIOBE Index for June 2018 TIOBE programming language index는 해당 프로그래밍 언어를 이용하는 엔지니어 및 업체의 수와 Google, Bing, Yahoo 등의 검색 엔진을 통해 검색되는 결과물의 수를 바탕으로 순위를 결정한다. 따라서 TIOBE index는 C/C++이나 Java와 같이 전통적인 프로그래밍 언어의 순위가 높게 산정하는 경향이 있다. [그림 1] TIOBE programming language index (출처: TIOBE) Top 5 Programming languagesJava와 C, C++, Python, C#은 최근 3년간 꾸준히 가장 인기 있는 프로그래밍 언어로 선정되고 있다. 5개의 프로그래밍 언어의 ratings를 합치면 약 50%.. 2018. 6. 18. 2018년 프로그래밍 언어 순위 및 비교 TIOBE Index for April 2018 TIOBE programming language index는 해당 프로그래밍 언어를 이용하는 엔지니어 및 업체의 수와 Google, Bing, Yahoo 등의 검색 엔진을 통해 검색되는 결과물의 수를 바탕으로 순위를 결정한다. 따라서 TIOBE index는 C/C++이나 Java와 같이 전통적인 프로그래밍 언어의 순위를 높게 산정하는 경향이 있다. [그림 1] TIOBE programming language index (출처: TIOBE) RedMonk Programming Language Rankings for January 2018 RedMonk Programming Language Ranking은 GitHub에서 해당 프로그래밍 언어로 작성된 소스 코.. 2018. 5. 1. [머신 러닝/딥 러닝] 인공신경망 (Artificial Neural Network, ANN)과 역전파 알고리즘 (Backpropagation Algorithm) Artificial neural network (ANN)는 딥 러닝의 가장 핵심적인 기술로써, 신경 세포인 neuron을 추상화한 artificial neuron으로 구성된 네트워크이다. ANN은 일반적으로 어떠한 형태의 function이든 근사할 수 있는 universal function approximator로도 알려져 있다. 이 글에서는 ANN을 구성하는 가장 작은 요소인 artificial neuron부터 multi-layer ANN과 이를 학습시키기 위한 algorithm에 대해 서술한다. 1. Neuron과 artificial neuronNeuron은 생물체의 신경계를 이루는 신경 세포를 말하며, artificial neuron은 생물체의 neuron을 구성하는 dendrite, soma, a.. 2018. 4. 21. [머신 러닝] 은닉 마르코프 모델 (Hidden Markov Model, HMM)의 개념과 학습 알고리즘 Markov model은 어떠한 날씨, 주식가격 등과 같은 어떠한 현상의 변화를 확률 모델로 표현한 것이다. Hidden Markov model (HMM)은 이러한 Markov model에 은닉된 state와 직접적으로 확인 가능한 observation을 추가하여 확장한 것이다. HMM은 observation을 이용하여 간접적으로 은닉된 state를 추론하기 위한 문제를 풀기 위해 사용된다. 아래의 [그림 1]은 은닉된 state와 그에 따른 observation의 개념을 나타낸다. HMM을 이용해 우리가 풀고자 하는 문제는 관측 가능한 것은 오직 $y_t$뿐이며, $y_t$는 $q_t$에 종속적으로 발생한다고 할 때, $y_t$의 sequence를 통해 $q_t$의 sequence를 추론하는 것이다. .. 2018. 4. 16. [머신 러닝/강화 학습] Markov Decision Process (MDP) 강화 학습은 주로 Markov decision process (MDP)라는 확률 모델로 표현된다. MDP는 의사결정 과정을 확률과 그래프를 이용하여 모델링한 것으로써, "시간 $t$에서의 상태는 $t-1$에서의 상태에만 영향을 받는다"는 first-order Markov assumption을 기반으로 고안되었다. First-order Markov assumption을 확률로 나타내면 식 (1)과 같다. $$p(s_t|s_0, s_1, ..., s_{t-1}) = p(s_t|s_{t-1}) \tag{1}$$ 이 글에서는 MDP에 대해 설명하기 전에 MDP의 기본 모델이 되는 Markov reward process에 대해 먼저 서술한다. 1. Markov reward process Markov reward .. 2018. 4. 11. [머신 러닝] 나이브 베이즈 분류기 (Naive Bayes Classifier, NBC) Naive Bayes Classifier (NBC)는 스팸 필터, 문서 분류 등에 사용되는 분류기이다. NBC의 기본 원리는 posterior probability에 베이즈 정리 (Bayes' theorem)과 naive한 가정을 적용하여 데이터를 분류하는 것이다. NBC는 1950년대 이후 광범위하게 연구되고 있으며, 적절한 전처리를 거치면 서포트 벡터 머신 (Support Vector Machine)과도 경쟁할 만큼 우수한 분류 성능을 보여준다. 1. Decision rule 먼저, state of nature $\omega_k \in \{0, 1 \}$를 정의한다. $\omega_k$는 $k$번째 class인 $c_k$가 선택되었을 때, 1의 값을 갖는 binary variable이다. NBC는 주.. 2018. 4. 10. 이전 1 2 3 4 5 6 7 ··· 13 다음