Matplotlib 한글 폰트 설정

Matplotlib 한글 폰트 설정

파이썬으로 데이터 시각화를 할 때 “Matplotlib”을 주로 사용합니다. 최근에 Bokeh나 seaborn와 같은 라이브러리를 사용하기도 하지만, IPython에서 작업할 때 주로 Matplotlib를 선호합니다. 최신의 사용이 편리하고 우수한 다른 라이브러리가 있음에도 Matplotlib를 선호하는 이유는 마지막 실행 결과를 보관하는 기능 때문입니다. Jupyter 파일을 github과 같은 레파지터리에 올려 놓아도 ......
scikit-learn의 fetch_mldata('MNIST original') 에러

scikit-learn의 fetch_mldata('MNIST original') 에러

scikit-learn은 테스트 데이터로 사용할 수 있는 여러 데이터셋를 간편하게 로딩하는 기능을 제공합니다. 특히 머신러닝 테스트에 사용할 수 있는 대표적인 데이터셋을 로딩하는 기능을 제공하기 때문에, 이 기능을 이용하여 많은 문서가 이용하여 입문자 문서를 작성하는 것이 일반적입니다. scikit-learn이 제공하는 데이터셋 로딩 기능 중에서 fetch_mldata 함수는 mldata.org의 데이터셋을 이용합니다. 최근에 mldata.or ......
머신러닝 용어: Example, Sample & Data Point

머신러닝 용어: Example, Sample & Data Point

머신러닝을 공부하면서 굉장히 생소하게 느껴졌던 용어가 몇 개 있습니다. 그 중에서 가장 어색했던 용어는 데이터셋의 개별 데이터를 표현하는 용어였습니다. 일반적으로 머신러닝 데이터셋의 개별 데이터를 다음과 같은 용어로 표현합니다. Example Sample Instance Data Point 문서를 번역하거나 정리하는 과정에서 위 용어를 어떻게 처리해야 할지가 항상 고민이었습니다. 개별 데이터를 왜 이렇게 표현하는지 제 개인적인 느낌을 정리해 ......
파이썬 데이터 사이언스 Cheat Sheet: NumPy 기초, 기본

파이썬 데이터 사이언스 Cheat Sheet: NumPy 기초, 기본

파이썬 기반 데이터 분석 환경에서 NumPy1는 행렬 연산을 위한 핵심 라이브러리입니다. NumPy는 “Numerical Python“의 약자로 대규모 다차원 배열과 행렬 연산에 필요한 다양한 함수를 제공합니다. 특히 메모리 버퍼에 배열 데이터를 저장하고 처리하는 효율적인 인터페이스를 제공합니다. 파이썬 list 객체를 개선한 NumPy의 ndarray 객체를 사용하면 더 많은 데이터를 더 빠르게 처리할 수 있습니다. Nu ......
CNN, Convolutional Neural Network 요약

CNN, Convolutional Neural Network 요약

Fully Connected Layer1 만으로 구성된 인공 신경망의 입력 데이터는 1차원(배열) 형태로 한정됩니다. 한 장의 컬러 사진은 3차원 데이터입니다. 배치 모드에 사용되는 여러장의 사진은 4차원 데이터입니다. 사진 데이터로 전연결(FC, Fully Connected) 신경망을 학습시켜야 할 경우에, 3차원 사진 데이터를 1차원으로 평면화시켜야 합니다. 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없습니다. 결과적으 ......
신경망 W 행렬 표기법: 'ij'/'ji' 의 차이점?

신경망 W 행렬 표기법: 'ij'/'ji' 의 차이점?

제가 처음에 딥러닝을 학습할 때 가장 혼란스러웠던 것은 입력 레이어의 데이터와 가중치 W의 합 표현하는 “Z(Weighted Sum)” 수식이 문서마다 다른 것이었습니다. <식 1>. Z(Weighted Sum)을 표현하는 수식 $$ \begin{align} Z^{[l]} & = W^{[l]T}A^{[l-1]} & (1) \\ Z^{[l]} & = W^{[l]}A^{[l-1]} & ......
딥러닝 역전파 수식 행렬의 전치(Transpose) 기준?

딥러닝 역전파 수식 행렬의 전치(Transpose) 기준?

Backpropagation을 직접 구현하는 과정에서 이유 없이 갑자기 발생하는 행렬 전치(Transpose)와 관련된 의문점이 오랜 기간 절 괴롭혔습니다. Backpropagation을 하기 위해서 Cost Function을 해당 계층의 W(가중치)로 편미분 한 후, 현재 W를 수정하는 수식을 유도하는 과정에서 일부 행렬이 전치행렬로 갑자기 변경됩니다. 문제는 제가 행렬이 전치(Transpose)되는 근거와 기준을 이해할 수가 없다는 것입니다 ......
딥러닝을 위한 Norm, 노름

딥러닝을 위한 Norm, 노름

기계학습 자료에서 간혹 Norm과 관련된 수식이나 표기법을 나오면 당황스러울 때가 있습니다. 선형대수에 익숙하지 않다면 Norm이 이상하게 보일 수 있습니다. 본 문서에서는 인공신공망과 기계학습 일고리즘에서 사용되는 Norm을 이해하는 것을 목표로 최소한도의 Norm 개념을 정리합니다. 일반적으로 딥러닝에서 네트워크의 Overfitting(과적합) 문제를 해결하는 방법으로 다음과 같은 3가지 방법을 제시합니다. 더 많은 데이터를 사용할 것 C ......
Hidden Layer의 오차 계산

Hidden Layer의 오차 계산

Neural Network에서는 Forward Propagation 결과로 계산된 Output Layer 출력과 해당 입력 데이터 레이블의 차이를 계산하여 오차(손실, Error/Loss)를 계산합니다. 그리고 이 오차 최소화를 목표로 Hidden Layer들의 Weight(가중치)와 Bias(편향)를 업데이트합니다. 이렇게 딥러닝에서는 Neural Network에 데이터를 지속해서 흘려보내고, 오차를 계산한 후 Weight와 Bias를 수정하 ......
Neural Network 표기법(Feat: Andrew NG)

Neural Network 표기법(Feat: Andrew NG)

그림 1: Neural Network 예제 Neural Network에 대한 Forward Propagation, Backpropagation, predict, Cost Function 등을 정리할 때 뉴럴 네트워크의 구성 요소와 각 위치가 혼동되어 어려움을 겪는 경우가 많습니다. Coursera에서 deeplearning.ai가 진행하는 Neural Networks and Deep Learning 강의에서 Neural Network 표기 ......
tanh 미분 정리

tanh 미분 정리

Hyperbolic Tangent(tanh) 함수는 Sigmoid의 대체제로 사용될 수 있는 활성화 함수입니다. Hyperbolic Tangent(tanh)는 Sigmoid와 매우 유사합니다. 실제로, Hyperbolic Tangent 함수는 확장 된 시그모이드 함수입니다. tanh와 Sigmoid의 차이점은 Sigmoid의 출력 범위가 0에서 1 사이인 반면 tanh와 출력 범위는 -1에서 1사이라는 점입니다. Sigmoid와 비교하여 tan ......
Sigmoid 함수 미분 정리

Sigmoid 함수 미분 정리

Sigmoid 함수는 S자와 유사한 완만한 시그모이드 커브 형태를 보이는 함수입니다. Sigmoid는 대표적인 Logistic 함수입니다. Sigmoid 함수는 모든 실수 입력 값을 0보다 크고 1보다 작은 미분 가능한 수로 변환하는 특징을 갖습니다. 모든 입력에 대하여 sigmoid는 S와 같은 형태로 미분 가능한 0~1 사이의 값을 반환하기에 Logistic Classification과 같은 분류 문제의 가설과 비용 함수(Cost Funct ......
선형회귀 MSE 오차함수 미분 및 코드 구현

선형회귀 MSE 오차함수 미분 및 코드 구현

지도학습의 선형회귀 모델은 비용 함수로 MSE(Mean squared error, 평균 제곱 오차) 사용합니다. MSE를 사용하여 가장 간단한 선형회귀 모델을 학습시키는 알고리즘을 구현해 보겠습니다. 이 문서에서는 여러 수식을 사용합니다. 수식에서 스칼라, 벡터, 행렬을 다음과 같은 표기법을 사용할 것입니다. $w$: 스칼라, 소문자 표기는 스칼라를 의미합니다. 예제에서는 가중치 1개를 의미합니다. $\boldsymbol{w}$: 벡터, 소 ......