[TIL]선형회귀
선형회귀는 머신러닝에서 가장 많이 쓰이는 모델 중 하나이다.
매우 빠르면서도 좋은 성능을 보여주는 경우가 많기 때문이다.
딥 모델을 이해하기 위해서도 선형모델에 대한 이해가 필수적이다.
선형회귀모델, 선형분류 모델에 대해 잘 이해하고 넘어가도록 하자.
선형 기저 함수 모델
- x에 대해 비선형인 함수 $\Phi_0(x)$를 기저함수라고 부른다.
- 다항식 기저함수 : j에 따라서 얼마만큼 x를 곱해줄것인지 정함
- 가우시안 기저함수 : 뮤j는 그래프가 어떤 위치에 있는지를 결정하는 파라미터이고, s는 얼마나 옆으로 퍼지는지를 결정하는 파라미터이다.
- 시그모이드 기저함수 : 뮤j, s는 시그모이드 함수가 어떤 위치에, 얼마나 옆으로 퍼지는지를 결정해주는 값들이다. 시그모이드 함수는 항상 그 값의 범위가 0부터 1사이이다. 반드시 그 범위 내에 속해야 한다.
최대우도와 최소제곱법
- 에러함수가 가우시안 노이즈를 가정할 때 최대우도로부터 유도될 수 있다.
- 제곱합이 손실함수로 쓰이는 경우 새로운 x가 주어졌을 때 t(목표값)의 최적의 예측값은 t(목표값)의 조건부 기댓값이다.
- 우리가 할 수 있는 것은 w(파라미터, weight)의 최적의 값을 찾아서 새로운 x가 들어올 때 이 함수값을 계산해서 예측을 하는 것이 최선이다.
- 파라미터 w를 찾기 위해 최대우도추정법을 사용한다.
- t에 대한 가우시안 분포를 가정했을 때, 최대우도를 구하기 위해서 식을 전개하다보면 결국 최대우도를 만들어내는 w는 바로 제곱합 에러함수를 최소화시키는 w와 동일하다.
- 지도학습 문제에서는 우리가 입력벡터를 모델링하는게 아니라 출력값 t를 모델링하기 때문에 우도를 표현하는 것은 바로 이 출력값t에 관한 것이다.
- 이전에 우리가 우도 표현할때 인풋값 x에 대해서 표현했었는데, 지도학습에서는 타겟값에 대한 확률을 계산해야 한다는 것을 기억해라.
- 우도를 최대화시키는 w를 찾기 위해서는 우도를 w와 관해서 미분하고, 이를 0으로 놓고 w에 대해서 풀면 된다.
- 행렬 $\Phi$를 머신러닝에서 “디자인 매트릭스”라고 한다.
- 이러한 형태를 무어 페너스 수도 인버스라고 한다. 왜 수도 인버스라는 이름이 나오는지 생각해보면..
- 파이라는 디자인 매트릭스가 주어져있을때, weight matrix w를 곱해서 그 결과가 목표값 t와 가장 가깝게 되기를 원한다. 정확하게 일치하는 w가 있다면 좋겠지만, 그렇게 되지 않을 가능성이 높다. 디자인 매트릭스 파이가 스퀘어 메트릭스가 아닐수도 있기 때문이다. 만약 스퀘어 매트릭스라면 inverse로 양측에 곱하면, 이 식을 완벽하게 만족하는 w를 구할 수 있다. 하지만 아닌 경우가 더 많다.
- 보통은 기저함수, 인풋의 demension보다 데이터의 개수가 훨씬 많다. 따라서 inverse는 존재하지 않고, 대신에 만약 정확하게 일치하는 것이 아니라 최대한 비슷한 값을 가지도록 하는 w를 찾는다고 하고, 수도 인버스라고 부른다.(Pseudo-inverse)
Maximum likelihood solution의 기하학적 의미
- 벡터의 집합에 대한 생성(span)
- 벡터의 집합이 주어져 있을때 벡터의 집합의 선형조합으로 나타낼 수 있는 모든 벡터들의 집합을 Span이라고 한다.
- 알파값의 곱의 합으로 나타낼 수 있다.
- 행렬의 치역(range)
- 치역은 행렬 A가 주어져있을때, 임의의 벡터 x를 곱해서 결과로 나타낼 수 있는 모든 가능한 v의 집합.
- 벡터의 사영(projection )
- 벡터 t가 주어져 있을때, span에 속해있는 벡터 중에서 벡터t와 가장 가까운 벡터로 정의된다.
- 사영을 얘기할때, span이 주어진 것이 아니라 행렬 A를 주었을 경우, span대신에 A의 치역으로 사영을 시키는 것이다.
온라인 학습
- 우리가 갖고있는 데이터가 너무 큰 경우 온라인 학습을 할 수 있다.
- 가지고 있는 학습데이터 전체를 조금씩 나누어서 모델을 업데이트 하는 것이다.
- 온라인학습 중에서도 가장 많이 쓰는 방법이 stochastic gradient decent라고 한다.
- 에러함수를 각각의 개별적인 샘플에 대한 에러들의 합으로 나타낼 수 있다.
대규모의 선형회귀(실습)
- 대규모의 선형회귀가 있을때 확률적 경사하강법 외에도, 원래 우리가 풀고자 했던 exac solution, 즉 normal equation을 사용하고싶지만 데이터가 너무 크기 때문에 메모리 안에 데이터가 다 안들어갈 수도 있는 상황일때 exac solution을 어떻게 구할 것인가?에 대해 생각해보자.
- 굳이 데이터를 한꺼번에 읽어들이지 않더라도 각각의 데이터를 읽어서 그것 자신과의 outer product를 계산해서 계속 더해나가면 된다.
- 알고리즘화
- A라는 행렬을 하나 선언하는데 0으로 초기화를 시킨다.
- 이 A의 사이즈는 M*M
- B라는 벡터는 M*1사이즈이로 0으로 초기화
- I가 1~N사이의 값일 때 A를 계속해서 업데이트 시켜나가는데, A에 외적을 계속 더해나가면 된다.
- B값도 계속해서 열벡터에 t의 i번째 값을 곱한것을 더하여 업데이트 시킨다.
- 이 값이 w의 maximum likelihood soultion의 값과 동일하게 된다.
- A라는 행렬을 하나 선언하는데 0으로 초기화를 시킨다.
규제화된 최소제곱법
- 에러함수가 두 부분으로 나뉘어진다.
- 람다 값에 의해서 얼마나 규제할 것인지 컨트롤할 수 있다.
- 에러함수에 대해서 w에 대해 미분하고, 그것을 0으로 놓고 w에 대해 미분하면 w의 최적값을 구할 수 있다.
- 일반적으로 규제화 항을 L_q norm으로 할 수도 있다.
- 예를 들자면 q를 1로하면 L1 norm이 된다.
- 규제화된 에러함수를 최소화시키려고 할 때, constrained optimization문제로 바꿔서 생각할 수 있다.
- 제약조건을 만족시키면서, 에러함수를 최소화시키는 값을 찾아야 한다.
편향-분산 분해
- 제곱합 손실함수가 주어졌을 때 최적의 예측값은 x가 주어졌을 때의 조건부 기댓값이라고 했다.
- 손실함수의 기댓값에서 데이터의 노이즈 부분은 모델링으로 개선할 수 없지만, 다른 부분은 잘 학습해서 최대한 손실함수의 기댓값을 줄이려고할 수 있다. 하지만 우리는 유한한 양의 데이터를 갖고 있으므로…
- 제한된 데이터로 인해 발생하는 모델의 불확실성을 표현하기 위해
- 베이지안 방법 : 파라미터 w에 대해서 사후확률 분포를 계산해 제한된 데이터에 대해서도 이 모델의 불확실성을 표현할 수 있다.
- 빈도주의 방법 : 파라미터 w를 구하는데 점 추정값을 구한다. 여러개의 데이터셋을 가정하고.. 손실의 기댓값 expected loss는 이와 같이 정리된다. 세가지로 분해된다.
- 편향, 분산, 노이즈
중요한것은 편향과 분산 부분이다. 손실함수는 두가지의 합으로 나타난다고 했다.
편향 부분은 평균예측값이다. 데이터셋이 여러개가 주어져 있을 때 같은 x에 관한 출력값을 평균을 낸 것이다. 평균예측값이 우리가 바라는 h(x)로부터 떨어져있는지를 보여준다.
Variance는 평균예측값이 각각의 D가 주어져있을때의 예측값과 얼마나 떨어져 있는지 분산된 정도를 측정하는 것이다. - 모델의 자유도가 높을수록 편향값이 낮게 나오는 경향이 있다.
- 모델의 자유도가 높다는 것은 모델의 복잡도가 높다는 것이다.
Polynomial의 경우 차수가 높을수록 복잡도가 높다.
이럴 때 반대로 분산의 부분은 오히려 켜지는 경향을 보인다. 모델의 복잡도가 높을수록, 각각의 예측값이 평균적인 예측값에서 많이 벗어나고, 다른 데이터셋이 주어질 때마다 그 데이터에 민감한 성향을 보인다. 모델이 단순한, 예를들어 선형이라면 데이터가 다르더라도 평균적인 예측값에서 크게 벗어나지 않는다. 대신 편향 측면에서 높은 값을 갖는다. 정리하자면 - 모델 복잡도 높으면 편향이 낮고 분산이 높다. (왜냐면 구불구불한 선 위의 점들이니까)
- 모델 복잡도 낮으면 편향이 높고 분산이 낮다. (왜냐면 같은 직선위의 점들이니까)
- 너무 복잡하지도 단순하지도 않은 모델을 써야한다.
규제화를 사용한, 가우시안 기저함수를 사용한 학습결과. 람다값이 크면 클수록 규제화가 많이 되기 때문에 모델의 자유도가 낮다. 람다값이 작으면 작을수록 규제화가 없어지기 때문에 모델의 자유도가 증가한다.
예측값들과 정답이 대체로 멀리 떨어져 있으면 결과의 편향(bias)이 높다고 말하고, 예측값들이 자기들끼리 대체로 멀리 흩어져 있으면 결과의 분산(variance)이 높다고 한다
모델의자유도가 높아질수록
- 편향은 줄어든다
- 분산은 늘어난다
- 편향+분산은 적절한 람다값에서 최소값을 가진다.
- 별개의 테스트셋에 대한 에러 또한 편향+분산과 거의 동일한 지점에서 최소값을 갖는다.
제한적인 데이터가 주어져있을 때, 빈도주의 방법으로 접근하면, 모델의 불확실성을 나타내기 힘들다.
베이지안 모델을 쓰게 되면 모델의 불확실성을 깔끔하게 다룰 수 있다.
모델 파라미터를 학습하면서 파라미터들의 분포까지 다 학습하게 된다.
주어진 데이터가 아무리 작더라도 그 데이터를 가지고 학습한 모델의 불확실성을 잘 나타낼 수 있다.
W가 m_0라는 평균벡터와 S_0라는 공분산 행렬을 가지고 있다고 가정하자.
우리가 첫번째로 원하는 것은 파라미터 w의 사후확률을 구하는 것이다. 사후확률은 데이터를 관찰하고 나서의 파라미터 w의 확률인데, 이를 위해 베이즈 정리를 생각해야 한다. 파라미터의 사전확률을 가지고 있고, 우도를 계산해서 베이즈 정리를 통해 사후확률을 계산할 수 있다.
가우시안 분포에 대해 배우면서 사전확률과 우도함수가 가우시안으로 표현되었을 때 사후확률을 어떻게 구하는지 공식을 유도했었다. 그 공식을 그대로 적용하면 사후확률을 쉽게 구할 수 있다.
베이지안 모델이 빈도주의가 제공하는 방법보다 일반적이고 강력한 방법론임을 알 수 있다.