본문 바로가기
728x90
반응형

전체 글190

Singulardecomposition 이번 장에서는 특잇값분해 singulardecomposition을 알아본다. 앞서 고윳값분해에서는 square matrix에서만 정의될 수 있었고, 항상 존재하진 않았다. 또한 주어진 n x n 의 고윳값들이 linear independent해야 정의가 됐었다. 하지만 특잇값분해는 어떠한 형태의 matrix도 정의가능하고 항상 존재한다. SVD도 linear mapping과 연관지은 설명과, 직관적으로 어떤작용을 하는지 알아보자. $A = U \Sigma V^{T}$ 행렬곱으로 표현이 된다. matrix $\Sigma$의 $\sigma_{i}$ 값들을 singular value라고 한다. $\Sigma$ 행렬이 직사각행렬이기 때문에 $ii$를 벗어난 값들(off diagonal term)은 전부 0이다... 2020. 5. 30.
Eigendecomposition 이번 장에선 행렬을 여러개의 행렬의 곱으로 decomposition하는 방법에 대해 알아본다. 먼저 Cholesky Decomposition에 대해 알아본다 행렬 $A$가 $LL^{T}$로 factorized로 가능하다는 것이다. 이 때 $L$은 lower-triangular matrix이고 positive diagonal elements이다. $L$은 $A$의 Cholesky factor라하고, $L$은 unique하다고 한다. 아래는 Cholesky decomposition의 예제이다. 결과적으로 앞서 계산된 $l$들을 가지고 순차적으로 element들을 연산해낼 수 있다는 것을 보여주는 것이다. 이점으로는 $A$의 determinant를 구한다고 한다면 $det(LL^{T})$는 $det(L)det.. 2020. 5. 30.
Higher-Order Derivatives gradient는 주어진 함수를 한번 미분한 결과였다. 이번 장에서는 주어진 함수를 여러번 미분한 Higher-Order Derivatives를 알아본다. Higher-Order Derivatives는 주어진 함수에 대한 특정 지점에서 풍부한 정보를 얻고 싶을 때의 정보를 알려준다. gradient는 local영역에서의 slope를 의미하는데, 그 지점에서의 함수 형태가 얼마나 곡선을 띄고 있는지 등에 대한 정보를 알 수 있다. 아래의 경우 두 개의 입력을 받는 함수를 보자. $f$를 $x$에 대해 2번 미분하거나 $n$번 미분한다는 말이고, 두개의 입력을 받기 때문에 $x$에 대해 먼저 미분하고 $y$를 미분하거나 순서를 바꾸어서 반대의 순서를 나타낸다. 이 notation에 대해 숙지하자. Highe.. 2020. 5. 30.
Backpropagation and Automatic Differentiation 머신러닝 알고리즘들이 데이터를 잘 성명하면서 일반화성능이 좋은 모델 파라미터를 찾는게 목적인데, 좋은 파라미터라는 것은 GD(gradient descent) 방식으로 찾게 된다. train 데이터를 잘 설명하는 objective function을 define하고 이를 minimize하는 방법으로 parameter를 찾는 방식으로 GD를 수행한다. gradient를 구하는 함수가 (5.109)와 같이 매우 복잡한 경우라고 생각해보자. 이런 계산을 효율적으로 계산하게 도와주는 알고리즘이 Automatic Differentiation이고, 이의 특별한 경우가 backpropagation알고리즘이라고 부른다. backpropagation는 gradient를 계산하기 위해 활용하는 최적화 알고리즘인데, 간단하게 .. 2020. 5. 30.
Gradients of Matrices 행렬이 주어졌을 때 행렬을 벡터로 미분한 gradient 혹은 행렬을 다른 행렬로 미분한 gradient 들은 multidimensional tensor로 계산이 된다. 이 gradient를 어떻게 구하는지 알아본다. multidimensional tensor이기 때문에 output의 dimension과 크기만 신경쓰면 지금까지 배운 미분개념에서 크게 벗어나지 않는다. 예를 들어 행렬 $A \ (m \times n)$ 행렬 $B \ (p \times q)$로 미분되면 4 dimensional tensor $J$가 되고, $J_{ijkl}$ 엔트리에는 각각 partial derivatives 값들이 들어간다. 행렬을 벡터 또는 행렬로 미분했을때 output의 shape을 잘 상기해야한다. $A$라는 행렬을.. 2020. 5. 27.
Differentiation of Univariate/Multivariate Functions 최적화 문제를 풀기 위해서 GD(Gradient Descent) 방법으로 최적의 해를 찾는다는 것을 들어보았을 것이고, 이 gradient는 소위 기울기라 알려져 있다. 이 gradient는 미분을 통해 쉽게 얻는다는 것도 알고 있다. 벡터, 행렬의 미분으로 가면 더 복잡해 지지만 다항식에 대한 미분은 어렵지 않게 구할 수 있다. 이번 장에서는 머신러닝에서 미지수가 하나인 univariate function 에 대한 내용을 알아본다. 머신러닝 알고리즘을 접하다 보면 자연스레 최적의 parameter값을 찾는 문제에 직면하게 된다. 이렇게 최적의 값을 찾아가는 과정을 learning이라고 한다. 이 과정에서 필요한 정보가 gradient 이다. Vector Calculus (a) 와 같은 경우는 + 모양의.. 2020. 5. 27.
python matplotlib.pyplot 한글 깨짐 해결하기. 전에도 몇번 그래프 출력시 한글이 깨져서 찾아서 해결하곤 했는데, 외워지질 않고 반복되서 블로그에 올려보기로 하였다. ttf 파일이라고 해서 폰트 파일은 다음의 링크를 통해 원하는 폰트를 다운 받을 수 있다. https://hangeul.naver.com/2017/nanum [네이버 한글한글 아름답게 : 나눔글꼴] 한글의 아름다움, 나눔글꼴로 나눕니다. hangeul.naver.com 아래는 이미 해결하여 x축 라벨은 한글입력이 되었고, y축 라벨은 해결방법을 적용하지 않아 계속 깨져있는 상태다. 천천히 잘 따라하면, 한번에 쉽게 해결이 가능하다. 위의 링크를 통해서 ttf 파일을 다운받았으면, 아래의 코드처럼 font_path에 ttf파일이 담겨진 경로를 담아주고, font_manager 함수를 사용해.. 2020. 5. 24.
MNIST 데이터를 활용한 딥러닝 기초 딥러닝을 입문할 때 바이블 데이터인 MNIST를 가지고 딥러닝을 배워보자 !¶ tensorflow 모듈을 불러오고, 버전을 확인한다. tensorflow의 경우 2.1.0, 그 안의 keras의 경우 2.2.4 인 환경에서 실행한다. In [24]: import tensorflow as tf tf.__version__ Out[24]: '2.1.0' In [25]: tf.keras.__version__ Out[25]: '2.2.4-tf' 이제 tensorflow에 속한 keras에서 mnist를 불러와보자. 아래의 형식대로 불러오게 되면 train set과 test셋을 불러오게 된다. In [7]: from tensorflow.keras.datasets import mnist .. 2020. 5. 16.
scatter plot 그리기 가볍게 산점도를 그려보자. In [9]: import matplotlib.pyplot as plt import pandas as pd import re UCI 사이트에서 iris 데이터를 다운받았음.¶ https://archive.ics.uci.edu/ml/datasets.php In [6]: iris=pd.read_csv('iris.data', header=None) iris.columns = ["sepal length","sepal width",'petal length','petal width','class'] In [17]: iris['class'] = iris['class'].map(lambda i: re.sub('Iris-','',i)) In [18]: iris Out[18]: sepal len.. 2020. 5. 14.
728x90
반응형