선형 변환 측면에서의 SVD

  1. m x n 차원의 행렬의 의미: n차원 공간에서 m차원 공간으로 선형 변환

  2. 선형 변환: 벡터 공간에서 벡터 공간으로 가는 함수로, 그것들 중 벡터 공간의 성질을 보존하는, 즉 선형성을 갖는 함수

  3. 임의의 벡터 x에 행렬 A를 곱하면 벡터 x는 A에 의해 변환된 새로운 벡터 Ax가 된다.

  4. 좌표 공간에서 선형 변환으로 봤을 때(기하학적 의미) 직교 행렬 (AA^T = A^TA = I, A^T = A^-1)은 회전 변환 또는 반전된 회전 변환이고, 대각 행렬(대각 원소를 제외한 모든 원소는 0)은 좌표값의 스케일 변환이다.

  5. Ax = y 라고 할 때, x 의 값이 바뀔 때 만들어지는 모양(1)은 y 의 값이 바뀔 때 만들어지는 모양(2)과 약간 차이가 있다. 아래의 그림만 봤을 때는 (1)을 회전시킨 다음 길이에 변화를 주어 (2)가 된 느낌이다. 벡터의 길이가 바뀐 값들을 scaling factor라고 하며, 특이값(singular value)라고도 한다.

  6. 4번에서 설명했듯이 직교 행렬은 회전 변환, 대각 행렬은 좌표값의 스케일 변환이므로 모양 (2)는 어떤 직교 행렬에 의해 회전되고나서 특이값을 대각원소로 가지는 대각 행렬에 의해 스케일 변환된 형태라고 설명할 수 있다.

  7. 실제로 행렬 A는 특이값을 대각 원소로 하는 대각 행렬(Σ)과 2개의 직교 행렬 U와 V로 분해할 수 있으며, 이 방법을 특이값 분해(SVD)라고 한다. 특이값 분해의 정의는 다음과 같다.

    • A = UΣV^T

    • A : m×n rectangular matrix

    • U : m×m orthogonal matrix

    • Σ : m×n diagonal matrix

    • V : n×n orthogonal matrix

  8. 정리하자면, 벡터 x를 행렬 A로 변환했을 때, Ax는 x를 먼저 V^T에 의해 회전시킨 후 Σ로 스케일을 변화시키고 다시 U로 회전시키는 것임을 알 수 있다.

    • 다시 언급하자면, 도형의 모양을 바꾸는 것은 오로지 특이값에 의해서만 결정이 된다.

[ 벡터 x를 행렬 A로 선형변환 했을 때의 결과 ]

 

특이값 분해의 증명: A = UΣV^T

먼저 두 개의 직교하는 벡터 x, y를 행렬 A에 의해 선형 변환된 결과 Ax 와 Ay 를 살펴보면, 변환 후에도 Ax와 Ay가 직교 벡터가 되는 경우가 한 번이 아님을 알 수 있다.

직교 벡터 x와 y를 row vector로 가지는 행렬을 V라고 했을 때, U는 선형 변환 후(Ax와 Ay) 각각의 크기를 1로 정규화한 벡터를 column vector로 가지는 행렬, Σ는 특이값들을 대각원소로 가지는 행렬로 설명할 수 있다.

즉, AV = UΣ 임을 알 수 있다. 양 옆에 V^T를 곱해주면

VV^T = I 이기 때문에 AVV^T = UΣV^T 에서 A = UΣV^T 가 된다.

 

특이값 분해의 활용

행렬 A에 의해 임의의 벡터를 변환한 결과를 통해 형태적인 측면에서의 변화는 오로지 특이값에 의해 결정된다는 사실을 확인했다. 임의의 벡터 뿐만 아니라 임의의 행렬도 마찬가지로 행렬 A의 대각 행렬에 의해서 변환 후 모양이 바뀐다. 즉, 특이값이 행렬의 원소를 결정짓는다는 의미이다.

그리고 행렬의 원소를 결정짓는 것은 SVD를 이용하면 행렬 A에도 적용이 가능하다. 간단하게 생각해보면 항등 행렬 I를 A로 선형 변환 시킬 때 특이값을 조정할 수 있다면 변형된 A을 얻게 될 것이다. 이는 바로 A를 곱한다는 의미가 아니라 SVD 후에 차례대로 3개의 행렬을 곱하는 경우를 의미한다. 그러나 더 쉽게 변형된 A를 얻을 수 있다. 바로 SVD로 행렬 A를 분해한 뒤 대각 행렬의 원소만 바꾸고 다시 3개의 행렬을 곱하면 된다.

예를 들어, SVD를 적용한 후에 대각 행렬에서 가장 작은 특이값 하나를 0으로 만들어서 행렬 A'을 얻었다. 이 때 A'은 원본 행렬 A와 매우 유사한데 그 이유는 가장 작은 특이값 하나만 0으로 만들었기 때문이다. 가장 작은 특이값이 의미하는 바는 행렬 A가 어떤 정보를 가지고 있느냐에 따라 다르며, 필요없는 정보를 지우고 싶다면 예시와 같이 연산을 수행할 수 있을 것이다.

예시에 대해 구체적인 상황을 덧붙이자면, 어떤 원본 데이터에 대한 행렬 A가 각 사용자가 영화에 등급을 매긴 경우라 할 때(row는 사용자, column은 영화) 이를 분해해서 얻은 U는 사용자가 각 영화의 컨셉과 얼마나 관련이 있는지를 나타내고, V^T는 각 영화의 컨셉과 해당 영화가 얼마나 관련이 있는지를 나타낸다. 그리고 Σ의 대각원소는 현재 원본 행렬에서 영화의 컨셉이 얼마나 많은 비율을 차지하는지 (높은 강도로 점유하는지)를 나타내게 된다.

여기서 가장 낮은 강도로 점유하는 특이값을 지워버리면, 실제 데이터에서 비율이 낮은 컨셉의 영화에 대한 데이터는 지워진다.

결국, 가장 작은 특이값을 0으로 만든다는 것은 원본 행렬 A에 가장 근사하면서도 불필요한 특징(noisy feature)을 제거한 행렬 B를 얻을 수 있다는 의미이며 동시에 두 개의 직교 행렬의 벡터들을 사용하지 않으니 차원을 축소했다고도 볼 수 있다.

또 다른 예시로는 이미지 압축 또는 이미지 부분 복원이 있다. 어떤 사진에 대해 픽셀값을 원소로 가지는 행렬로 표현한다면 특이값을 조정해서 사진의 본질적인 특징들을 살리고 불필요한 부분들을 없애거나 원하는 특징들만 남겨서 유용한 정보를 얻을 수 있을 것이다.

주로 차원을 축소하는 이유는 다음과 같다.

  • 숨겨진 상관 관계(correlation)이나 주제를 찾기 위함
    예) Text: 공통적으로 같이 쓰이는 단어들이 있다.

  • 중복되거나 쓸모없는(noisy) 특징(feature)들을 제거하기 위함

    예) Text: 모든 단어들이 유용하진 않다.

  • 해석(Interpretation)과 시각화(Visualization)에 용이

  • 데이터를 처리하고 저장하는게 쉽다.

 

참고 자료

 

클러스터링

주어진 데이터셋을 학습시켜 다른 변수들에 의해 연관성이 있거나 유사한 것들로 나누는 것

 

K-means

[ centroid ]
[ clustroid ]

  • 거리에 대한 정의: 데이터간의 가까움은 유클리디안 거리로 계산되며, 코사인 유사도나 자카르드 유사도, 에딧 디스턴스 등이 있긴 하다.

  • K-means 는 먼저 클러스터의 개수를 정하고 클러스터링을 수행한다.

  • 알고리즘 

    1. 클러스터별 하나의 점(centroid)를 선택해서 클러스터를 초기화한다.

      • 랜덤으로 점을 고를 수도 있다. 단, K-1개의 다른 점들은 가능한 멀리 떨어져 있어야 한다.

    2. 각 점을 그 점과 가장 가까운 centroid를 갖는 클러스터에 포함시킨다.

    3. 모든 점들이 할당된 후, K개의 클러스터들의 centroid 위치를 갱신한다.

      • 현재 클러스터에 포함된 모든 점들의 평균을 계산해서 다시 구한다.

    4. 2번 과정으로 돌아가서 클러스터 내 데이터들이 바뀌지 않을 때까지 반복한다.

  • K를 선택하는 방법: 엘보우 기법

    • 클러스터 개수를 늘렸을 때 centroid 간의 평균 거리가 더 이상 많이 감소하지 않는 경우의 K를 선택하는 방법.

    • 개수가 늘 때마다 평균값이 급격히 감소하는데 적절한 K가 발견되면 매우 천천히 감소한다.

    • 그래프 상에서 이 부분이 팔꿈치랑 닮아서 엘보우 기법이라고 한다.

    • 참고로, 클러스터 개수가 적으면 centroid 간의 거리가 매우 커지며, 적절한 개수이면 거리가 점점 짧아진다. 개수가 많으면 평균 거리가 매우 조금씩 줄어든다.

[ 엘보우 기법 ]

  • K를 선택하는 방법: 실루엣 기법

    • 각 데이터의 실루엣 계수를 계산한다. 클러스터의 개수가 최적화되어 있으면 실루엣 계수는 1에 가까운 값이 된다.

    • 실루엣 계수의 평균이 0.7보다 크면 잘 분류되었다고 본다.

    • 엘보우 기법에 비해 계산하는데 시간이 굉장히 오래걸린다.

 

계층적 클러스터링

BFR

CURE

분류(Classification)

  • 불연속적인 값(이산형 데이터 또는 범주형 데이터)을 가진 결과를 예측하는 것

  • 이진 분류(binary-class classification): 데이터의 결과가 0과 1로만 표현이 되는 것

    • y∈{0,1}

    • 예를 들면, 종양 크기에 따른 악성과 양성의 유무가 있다. 악성이면 1, 양성이면 0으로 클래스를 지정할 수 있다. 여기서 종양의 크기는 독립 변수이다.

  • 다중 분류(mutli-class classification): 데이터의 결과가 3개 이상으로 표현이 되는 것

    • y∈{1,2,...,N}

    • 예를 들면, 환자의 증상이 나타나는 부위와 통증의 정도에 따른 N가지 질병으로 분류하는 것이 있다. 클래스가 N가지 있고, 증상 부위 및 통증의 정도는 입력으로 들어오는 독립 변수이다.

 

이진 분류(Binary-class Classification)

  • 이진 분류는 비용 함수를 계산하기 위해 시그모이드 함수를 이용해서 가설 함수를 바꿔준다.

[ 시그모이드 함수 ]
[ 로지스틱 회귀의 가설 함수 ]

  • 위와 같은 함수를 로지스틱 함수(logistic function)라고 하며 이진 분류를 로지스틱 회귀(logistic regression)라고도 부른다.

  • 시그모이드 함수를 사용하는 이유

    • 가설 함수의 예측값은 항상 0 ~ 1 사이의 값이어야 한다.

    • 가설 함수는 입력값 x에 대해 y = 1 일 확률을 의미해야 한다. (여기서 y는 이진 분류의 클래스 0 또는 1 이다.)

    • 클래스는 두 가지 밖에 없기 때문에 y = 1일 확률을 알면 y = 0인 확률을 알 수 있다. 두 확률의 합은 1이다.

    • 그래프를 보면 알 수 있듯이, 시그모이드 함수의 특징은 입력값(=z) >= 0 인 경우 0.5 이상의 값을 반환하고 입력값(=z) < 0 인 경우 0.5 미만의 값을 반환한다. 반대로 말하자면, h = g(z) 이므로 가설 함수의 결과(=h) >= 0.5 이면 y = 1로, 가설 함수의 결과(=h) < 0.5 이면 y = 0으로 분류할 수 있다.

    • 즉, 확률을 이용해서 데이터를 두 클래스로 분류할 수 있다.

[ 이진 분류의 가설 함수 ]
[ 가설 함수의 결과에 따른 클래스 분류 ]

  • 단, 가설 함수의 결과가 0또는 1일 때는 무한대 값을 가진다.

[ 무한대 값은 일종의 최대 비용으로 본다. ]

  • z는 선형 함수인데 (z 는 원래 가설 함수로 y = ax + b 형태) 그래프 상에서 데이터를 두 개의 클래스로 나누는 역할을 한다. 실제로 그래프에서 z > 0 인 부분은 y = 1 로 분류하고 z < 0 인 부분은 y = 0으로 분류를 한다. 이렇게 z로 데이터들을 두 클래스로 나누면 그래프에서 경계가 생기는데 이를 결정 경계(decision boundary)라고 한다.

    • 2차원 그래프의 경우 직선이나 곡선, 3차원 그래프의 경우 평면이 된다. 시그모이드 함수를 사용해서 데이터들을 분류할 때 아래 예시와 유사하게 비선형(곡선)으로 분류할 수 있게 된다. 즉, 비선형 함수로 분류하면 비선형 결저 경계(non-linear decision boundary)가 형성되고, 다항 함수에 항을 추가해서 더 복잡한 결정 경계를 만들 수도 있다. (항이 많아질수록 함수가 복잡할수록 결정 경계는 세밀해지고 복잡해진다.)

    • 결정 경계는 훈련 데이터보다는 매개변수와 관련된 가설 함수의 속성이라고 볼 수 있다.

출처: https://www.kdnuggets.com/2015/06/decision-boundaries-deep-learning-machine-learning-classifiers.html

  • 로지스틱 회귀의 가설 함수는 다변량(mutlivariate)의 경우 행렬로 다음과 같이 표현될 수 있다.

[ 가설 함수의 행렬 표현 ]

  • 예시: 아래와 같은 파라미터를 가지게 되면 결정 경계는 x축에 수직인 직선이 된다. x <= 5 인 데이터들은 y = 1 로 분류가 되고, x > 5인 데이터들은 y = 0으로 분류가 된다.

[ 예시 ]

  • 선형 회귀의 비용 함수를 그대로 사용할 경우 비용 함수의 그래프가 아래와 같이 비블록 함수의 모양을 띄게 된다. 따라서 극소점으로 착각할 수 있는 위치가 많아지게 되어 경사 하강법을 적용할 수 없게 된다.

출처: https://sebastianraschka.com/faq/docs/logisticregr-neuralnet.html

  • 로지스틱 회귀에서 비용 함수는 가설함수에 로그(log)를 씌워서 y = 1일 때와 y = 0일 때의 출력을 다르게 낸다.

    • 변경된 비용 함수는 각각 그래프가 다르지만 하나로 합치면 극소점이 하나 존재하여 경사 하강법을 적용할 수 있게 된다.

[ 로지스틱 회귀에서의 비용 함수 ]
출처: https://medium.com/deep-math-machine-learning-ai/chapter-2-0-logistic-regression-with-math-e9cbb3ec6077

  • 위와 같은 비용 함수를 편의상 한 번에 표현할 수 있는 식이 있는데, 이를 Binary Cross-Entropy 라고 한다.

    • Binary Cross-Entropy는 실제로 최대 우도 추정의 원리로 유도된 함수인데, 서로 다른 모델에 대한 매개변수를 효율적으로 찾는 방법에 대한 통계에서 나온 아이디어이다. 이에 대한 자세한 증명 과정은 여기를 참고.

[ Binary Cross-Entropy ]
[ 행렬적 표현 ]

  • 비용 함수의 경사 하강법

  • 위 식의 자세한 증명 과정은 수식으로 대체한다. 시그모이드 함수를 직접 미분해보면 알 수 있다.

[ 시그모이드 함수의 미분 ]
[ 미분을 행렬로 표현한 수식 ]

 

다중 분류(Mutli-class Classification)

  • 다중 분류는 이산형 데이터에 대해 클래스가 셋 이상일 때 적용하는 기법이다.

  • One-vs-all 방식이 있는데, 각 클래스에 대해 이진 분류를 수행하는 방법이다. 예를 들어, 클래스 A, B, C가 있을 때 클래스 A에 대해 이진 분류를 하게 되면 클래스 A이면 y = 1로 분류되고, 그 외에는 y = 0으로 분류하는 것이다. 클래스 B나 C의 경우도 마찬가지로 해당 클래스일 때는 y = 1로 분류하고, 아닌 경우는 y = 0으로 분류한다.

    • 그러면 각 데이터마다 각각의 클래스에 대한 확률이 나오게 되고, 이 확률들의 합은 1이 된다. 즉, 모든 클래스의 확률의 합은 1인 것이다. 여기서 확률이 가장 높은 클래스가 해당 데이터가 분류된 클래스인 것이다.

[ 다중 분류의 가설 함수 ]

 

정규화(Regularization)

  • 학습할 때 사용한 데이터 외에 새로운 데이터에 대해 학습 결과가 좋지 않은 것을 과적합(Overfitting)이라고 한다. 과적합은 주로 매개변수에 비해 데이터셋이 작은 경우 발생하기 쉬운데, 그 이유는 매개변수가 많다는 것은 가설 함수가 복잡하고 곡선이 많아 데이터셋에 딱 맞는 함수를 찾을 수 밖에 없기 때문이다.

  • 과적합을 피하기 위해 비용 함수의 매개변수에 제약을 거는 방법을 정규화라고 한다. 제약을 건다는 의미는 매개변수의 변화량을 제어한다는 것이다.

    • 예를 들어, 아래와 같은 가설 함수와 비용 함수가 있을 때, 경사 하강법을 적용하면 𝝷3과 𝝷4는 작은 값만 가져도 비용 함수에 영향을 많이주게 되므로 가장 작은 값을 가질 수 밖에 없다. 따라서 최종적으로 찾게 되는 함수는 2차 함수처럼 나오게 된다.

[ 다항 함수인 가설 함수 ]
[ 정규화 예제 ]

  • 위의 예제처럼 비용 함수의 뒤에 추가되는 항을 regularization term 이라고 하며, 다음과 같이 수식으로 표현할 수 있다. 아래에서 람다(lamda) 값은 상수이며 regularization parameter 라고 한다.

[ 정규화를 적용한 비용 함수 ]

  • 정규화를 적용한 비용 함수에 대한 경사 하강법

    • 경사 하강법을 적용하면, 이미 변화량이 커서 극소점에 가까워진 파라미터는 변화량을 줄여서 조금씩 움직이도록 하고, 변화량이 작아서 극소점에서 멀어진 파라미터는 변화량을 늘려서 크게 움직이도록 하는 효과를 준다.

[ 정규화가 적용된 비용 함수의 경사 하강법 ]

  • 로지스틱 회귀에서 정규화 적용하기

[ 로지스틱 회귀의 비용 함수에 적용된 정규화 ]
[ 정규화가 적용된 비용 함수의 경사 하강법 ]

  • 정규화는 가설 함수를 단순화하는 것을 목적으로 하며, 과적합을 막는 방법으로는 파라미터의 개수를 줄이는 방법(feature의 개수를 줄이기)이 있다.

 

회귀 분석(Regression Analysis)

  • 위키백과에 따른 정의는 다음과 같다.

    • 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한뒤 적합도를 측정해 내는 분석 방법

    • 회귀분석은 시간에 따라 변화하는 데이터나 어떤 영향, 가설적 실험, 인과 관계의 모델링등의 통계적 예측에 이용될 수 있다.

  • 회귀 분석은 하나의 종속변수와 하나의 독립변수 사이의 관계를 분석하는 단순 회귀 분석과 하나의 종속변수와 여러 독립변수 사이의 관계를 분석하는 다중 회귀 분석으로 나뉜다.

    • 통계학에서 독립변수(independent variable)와 종속변수(dependent variable)는 실험으로 획득한 데이터를 통해 수학적 모델을 세우거나 통계적 모델을 세울 때 사용되는 변수의 두 종류다. 종속변수가 독립변수에 의해 영향을 받는다고, 즉 종속되어있다고 해석하기 때문에 이러한 이름이 붙여졌다. 따라서 독립변수는 입력값이나 원인을 나타내며, 종속변수는 결과물이나 효과를 나타낸다. 기타 여러 가지 원인으로 관찰 중인 변수들은 기타 변수라고 한다.

    • 예를 들어, y = 3x + 5 라는 함수가 있을 때 y는 x에 따라 값이 변하므로 종속변수이고, x는 독립변수이다.

  • 정리하자면, 회귀 문제는 연속된 값을 가진 결과를 예측하는 것으로 볼 수 있고, 예측하는 함수를 찾는 것이 회귀 분석의 목적이다.

    • 예를 들어, 부동산 평수에 따른 집값 가격 예측이 있다.

    • 다음과 같은 좌표계에서 x축이 부동산 평수이고, 우측이 집값 가격이라고 할 때 빨간색 선형 함수는 두 변수를 잘 설명한다고 볼 수 있다.

[ 데이터를 잘 예측하는 선형 함수의 예 ]

  • 기계 학습에서는 회귀 분석을 수행하는 모델을 회귀 모델(Regression Model)이라고 하며, 크게 선형 회귀다항 회귀 두 가지 방법으로 학습을 진행한다.

    • 회귀 모델은 위의 두 개 말고도 다양하게 있다.

    • 연속형(continous) 데이터가 아닌 범주형(categorical) 데이터에 대해서는 로지스틱 회귀(Logistic Regression)라는 예측 모델을 적용할 수 있는데 회귀 분석의 목표와는 일치하나 분류(classification) 기법의 한 종류로 본다. 이름에 회귀가 붙은 것은 역사적인 이유라고 한다.

  • 예측의 정확도 판단

    • 회귀 모델이 학습으로 찾은 함수를 가설 함수(hypothesis function)라고 하며, 예측 결과의 정확도를 판단하는 함수를 비용 함수(cost function)라고 한다.

    • 회귀 모델에서 비용 함수는 평균 제곱 오차(Mean Squared Error, MSE)가 사용되며, 가설 함수의 결과(=예측값)와 실측값(=정답)의 오차 제곱의 합이 그것이다.

    • 좌표계에서 평균 제곱 오차의 의미는 다음 그림으로 설명된다. 거리는 예측값과 실측값의 차이이며, 모든 데이터에 대해 이 값이 가장 작은 함수가 바로 찾고자 하는 가설 함수이다.

[ 좌표계에서 함수와 데이터의 오차 ]

 

선형 회귀(Linear Regression)

  • 단변량 선형 회귀(Univariate Linear Regression): 변수(variable or feature) 또는 독립변수가 1개인 데이터를 예측하는 것. 종속 변수와 독립 변수가 각각 1개씩 있어서 2차원 좌표계에 데이터를 나타낼 수 있다.

    • 파라미터가 1개인 가장 단순한 가설 함수는 다음과 같다.

[ 단순한 가설 함수 ]

  • 비용 함수는 오차제곱합으로 다음과 같이 정의된다.

    • x_i는 변수에서 i번째 값(그래프 상의 x좌표값)이고, y_i는 변수에서 i번째 실측값(label, 그래프 상의 y좌표값)이다.

    • 맨 앞에 2를 나누는 것은 미분 했을 때 계산의 편의성 때문이다.

[ 오차제곱합 ]

  • 파라미터에 따른 가설함수와 비용함수 그래프는 다음과 같다.

    • 비용 함수의 극소점 == 찾고자 하는 가설 함수의 파라미터

    • 즉, 비용 함수 그래프 상에서 극소점으로 갈수록 가설 함수는 정답에 가까워진다.

    • 이러한 이유로 비용 함수를 최소화하는 것이 회귀의 목표이다.

[ 파라미터 변화에 따른 가설함수와 비용함수의 비교 ]

  • 파라미터가 2개인 일반적인 선형 함수 형태

    • 비용 함수는 두 파라미터를 입력으로 받기 때문에 3차원 그래프로 나타낼 수 있다.

    • MSE 함수의 특성상 비용 함수는 항상 극소점이 1개만 존재한다. 이러한 모양의 함수를 볼록 함수(convex function)이라고 한다.

[ 파라미터가 2개인 가설함수와 비용함수 ]
[ 파라미터가 2개일 때의 비용함수 그래프 ]

  • 파라미터가 2개인 비용 함수는 2차원 그래프에서 아래와 같이 등고선 형태로 표현할 수 있으며, 작은 타원에 멀리 떨어진 등고선일수록 극소점에서 멀리 떨어진 좌표이다.

  • 경사 하강법(gradient descent): 비용 함수의 최솟값을 구하는 알고리즘

    • 비용 함수의 극소점으로 파라미터를 계속 움직이기 위해 학습률(아래 공식의 알파값)과 기울기를 곱해서 빼는 방법

    • 학습률을 곱하는 이유: 학습률은 상수이며 움직이는 변화량을 조절하는 것이 목적이다. 보통 0~1 사이의 값

    • 기울기를 곱하는 이유: 기울기는 극소점과 떨어진 거리와 비례하는 변화량을 갖기 때문이다. 즉, 극소점에서 멀리 있으면 비용함수의 그래프에서 해당 기울기가 가파르기 때문에 많이 움직일 수 있고, 극소점에 가까이 있으면 완만한 기울기를 가지므로 적게 움직이게 된다.

    • 학습률과 기울기의 곱을 빼는 이유: 미분값의 부호는 극소점으로 이동하는 방향과 반대이기 때문이다.

[ 경사 하강법 알고리즘 ]
[ 위치에 따른 미분의 부호와 움직여야 하는 방향 ]

  •  실제로 각 파라미터들은 별도로 갱신되어야 하며 구현할 때 동시에 갱신되어야 한다.

[ 파라미터를 동시에 갱신해야 하는 이유 ]

  • 학습률은 너무 크면 비용함수의 그래프를 벗어날 수 있고, 너무 작으면 학습 속도가 매우 느리게 되므로, 적절한 학습률을 찾는 것은 많은 실험을 필요로 한다.

[ 학습률에 따른 그래프에서 파라미터의 변화 ]
[ 두 파라미터에 대한 경사 하강법 수식 ]

  • 다변량 선형 회귀(Mutlivariate Linear Regession): 변수(feature)가 2개 이상인 데이터의 결과를 예측하는 것

  • 가설 함수는 다음과 같은 형태이며, n은 (feature의 개수 + 1)이다. +1은 bias 인 첫번째 파라미터를 포함한 것이다.

[ 변수가 둘 이상일 때 가설 함수 ]

  • 변수가 여러개이기 때문에 데이터셋을 테이블 형태로 나타냈을 때 x_i는 i번째 행의 데이터를 벡터로 나타내어 전체 데이터셋을 x_i로 구성된 행렬로 표현할 수 있다. 표기법은 다음과 같다.

[ Notation ]

  • 데이터셋의 각 행을 열 벡터로 두고 파라미터 벡터와 행렬 곱 연산을 해서 가설 함수를 구할 수 있다. 아래의 수식은 입력 데이터 하나를 의미한다.

[ 각 입력 데이터마다 행렬 연산으로 표현된 가설 함수 ]

  • 전체 입력 데이터는 X라는 행렬로 표현할 수 있고, X는 각 행에 입력 데이터 하나를 row vector로 포함한다.

    • 전체 데이터에 대한 가설 함수는 행렬과 벡터의 곱으로 표현된다.

[ 다변량 선형 회귀에서 가설 함수]

  • 오차제곱합을 벡터에 대한 연산으로 표현하면 다음과 같은 수식을 얻을 수 있으며, 비용 함수를 각 파라미터에 대한 편미분으로 0이되는 파라미터 값을 모두 찾아야 한다.

[ 선형 회귀의 비용 함수 ]
[ 다변량 선형 회귀의 비용 함수에서 각 파라미터의 경사 하강법 수식 ]
[ 편미분 값을 원소로 가지는, 비용함수 미분을 벡터로 표현한 것 ]
[ 전체 미분 결과를 행렬로 표현한 수식 ]
[ 다변량 선형 회귀의 경사 하강법 수식 ]

  • Feature Scaling: 서로 다른 변수들은 범위가 달라서 비용함수의 그래프에서 파라미터를 임의 값으로 했을 때 극소점하고 멀리 떨어져 있을 확률이 높다. 비용 함수의 그래프가 3차원일 때 매우 넓게 퍼져 있음. 변수의 범위가 많이 차이가 날 경우 경사 하강법에 시간이 오래 걸리는 단점이 있다. 따라서, 학습 속도를 높이기 위해 변수의 범위가 모두 동일하도록 스케일링 해주어야 한다.

    • 보통 모든 변수의 범위를 -1 ~ 1 사이로 스케일링함

    • 단, 어떤 변수의 범위 차이가 많이 나면 안된다. -100 ~ 100 인 거랑 -0.0001 ~ 0.0001 인 경우 두 feature 에 대해 전처리를 해주어야 한다.

    • 너무 정확할 필요는 없다. 경사 하강법이 빨라지기만 하면 된다.

We can speed up gradient descent by having each of our input values in roughly the same range. This is because θ will descend quickly on small ranges and slowly on large ranges, and so will oscillate inefficiently down to the optimum when the variables are very uneven.
  • 아래는 스케일링 전후 비용 함수의 그래프 모양을 나타낸 것이다. 각 feature의 범위가 고르게 형성되면 비용 함수가 한쪽으로 치우치거나 편향된 모양이 아니게 된다.

[ 왼쪽: 스케일링 전, 오른쪽: 스케일링 후 ]

  • Mean normalization: 각 데이터에 일반적으로 적용되는 방식으로, feature 내 평균값을 뺀 다음 feature 의 범위로 나눠준다.

  • 경사 하강법 디버깅: 적절한 학습률을 찾고 싶거나, 경사 하강법이 제대로 적용되고 있는지 확인할 때 다음과 같이 반복 횟수별 비용함수의 결과를 그래프로 나타내서 디버깅을 할 수 있다. 경사 하강법이 올바르게 작동하는 경우 매 반복마다 비용 함수가 줄어드는 것이 수학적으로 증명되었기 때문에 그래프가 감소하는 형태가 아니라면 코드를 고쳐야 할 것이다.

  • 학습률이 너무 작으면 천천히 수렴하고, 너무 크면 매 반복마다 비용 함수가 증가하여 수렴하지 않을 수 있다. 따라서, 아래와 같이 0.001 부터 3배씩 학습률을 늘려보면서 적절한 값을 찾을 필요가 있다. 10배씩 차이를 두기 보다 3배가 적당하다고 한다.

  • 아래의 그림에서 A는 학습률이 0.1 일때, B는 학습률이 0.01 일 때, C는 학습률이 1일 때의 그래프이다. A의 그래프는 학습률이 0.1로 처음에는 크게 비용 함수가 떨어지다가 어느 정도부터 천천히 낮아지는 것을 볼 수 있다. B의 그래프는 학습률이 0.01로 처음부터 천천히 값이 떨어진다.

 

다항 회귀(Polynomial Regression)

  • 항이 여러 개인 가설 함수로 결과를 예측하는 회귀 분석 방법이다.

  • 항은 제곱근이나 2차항, 3차항 등 다양하게 있으며 함수의 형태가 비선형이라는 특징이 있다.

  • 다항 회귀를 활용하는 한 가지 방법은 서로 다른 두 Feature 를 하나의 feature로 만들어서 해당 feature를 입력으로 2차 이상의 함수를 예측하는 것이다.

    • 예를 들어, 부동산에서 집값 예측 시 땅의 가로/세로 길이가 주어졌을 때 면적(=가로*세로)으로 만들어서 면적에 따른 결과를 예측하기

    • 새 feature 에 대해 그래프를 그렸을 때 데이터를 잘 표현하는 비선형 함수를 찾아야 한다.

    • 새 feature 에 대해서도 feature scaling 을 적절히 해주어야 한다. 특히, 실수의 곱이나 범위가 큰 두 feature의 곱은 너무 0에 가깝거나 너무 큰 수가 되버릴 수 있다.

  • 보통 2차함수는 중간에 하강하므로 3차(cubic) 함수부터 아니면 단조증가하는 제곱근이나 로그 함수를 많이 쓴다.

[ 다항 함수의 예시 ]

We can improve our features and the form of our hypothesis function in a couple different ways.
We can change the behavior or curve of our hypothesis function by making it a quadratic, cubic or square root function (or any other form).
One important thing to keep in mind is, if you choose your features this way then feature scaling becomes very important.

 

정규 방정식(Noraml Equation)

  • 경사 하강법 외에 비용 함수를 최소화하는 분석적인 방법으로, 행렬 연산을 이용한다.

[ 데이터의 행렬 표현 ]

  • 반복이 없다는 장점이 있지만 역행렬을 구하는데 연산이 많이 든다는 단점이 있다.

[ 정규 방정식으로 파라미터 구하는 공식 ]

  • 역행렬이 존재하지 않는 경우: 선형 대수에서는 역행렬이 존재하려면 행 벡터(row vector) 또는 열 벡터(column vector)끼리 선형 독립이어야 한다. 선형 독립이 아닌 경우는 첫번째 열 벡터가 두번째 열벡터의 2배 (v1 = 2*v2) 처럼 다른 벡터와 의존성이 있는 경우인데 이는 데이터셋에서 보기 힘든 케이스이다. 예를 들어 집을 m^2과 feet^2 으로 표현된 데이터셋이 있다고 하면 둘은 선형독립이 아니지만 데이터의 의미가 같으므로 하나의 열은 없애버려도 될 것이다. 이런 식으로 전처리를 하고 입력으로 주어지는 경우가 많기 때문에 역행렬이 존재하지 않는 경우는 거의 없다.

noninvertible, the common causes might be having :
Redundant features, where two features are very closely related (i.e. they are linearly dependent)
Too many features (e.g. m ≤ n). In this case, delete some features or use "regularization" (to be explained in a later lesson).
Solutions to the above problems include deleting a feature that is linearly dependent with another or deleting one or more features when there are too many features.
  • 정규 방정식과 경사 하강법과의 비교: 데이터셋의 크기가 10^6 을 넘어가면 경사 하강법을 적용해야 한다.

 

+ Recent posts