관리 메뉴

ComputerVision Jack

머신러닝 가이드 - Chapter 7 확률 학습 본문

DeepLearning/머신러닝 - Algorithm

머신러닝 가이드 - Chapter 7 확률 학습

JackYoon 2020. 3. 16. 20:30
반응형

뉴럴 네트워크에서 비판할 점은(MLP 에서) 알고리즘에서 무엇을 학습하는지 알기 힘들다는 점이다.

뉴런들의 활성화와 가중치들을 살펴 볼 수 있지만, 이들은 많은 정보를 말해 주지는 않는다. ( 흔히 블랙박스라고한다.)

따라서 해석하기 힘든 가중치 대신 통계학을 바탕으로 학습된 확률들을 살펴보고 해석한다.

1. 가우시안 혼합 모델

같은 데이터에서 목표 라벨들이 존재하지 않는 비지도학습이라고 가정했을 때,

다른 클래스에 속하는 데이터들이 각각 가우시안 분포에서 생성된다고 가정한다.

각각의 다른 클래스에 대해서 하나씩의 모드(Mode)가 존재하므로 다중 최빈값 데이터(multi-modal data)라고 부른다.

 

데이터 전체에 얼마나 많은 클래스들이 존재하는지 알 수 있다면 많은 가우시안 파라미터들을 추측할 수 있다.

물론 몇 개의 클래스가 존재하는지 모르는 경우라면, k-means 알고리즘을 통해서 예측할 수 있다.

이러한 데이터에 대해서 알고리즘의 입력 값인 특정 데이터 포인트에서의 출력 값은 M개의 가우시안 예측 값들의 합이된다.

 

이런 가우시안 모델에서 가중치를 찾는 문제는 일반적으로 최대 우도(maxumum likelihood)를 사용해서 해결한다.

최대 우도는 모델이 주어졌을 때 데이터의 조건부 확률이며, 모델을 변형시키면서 조건부 확률을 최대화해서 모델을 찾아간다. 기대값 최대화 (EM : ExpectationMaximisation) 알고리즘으로 예제를 알아본다.

 

기대값 최대화(EM)

EM 알고리즘의 기본 아이디어는 이미 알려지지 않은 여분의 알려지지 않는 변수를 추가해서 추가 변수에 대한

함수를 최대화 하는 것이다. 기대값 최대화에 사용된 가정은 데이터들이 생성될 때, 두 개 중 하나의 가우시안을 무작위로 선택하고, 선택된 가우시안을 사용해서 데이터가 만들어진다는 것이다.

만약 이 데이터에 대해서 최대 우도를 찾는 다면 어렵지만, 데이터가 가우시안 분포에서 나온 것인지 알 수 있다면 계산이 쉽다. 평균 값과 표준 편차의 값 역시 각 가우시안에 포함된 데이터를 통해서 계산할 수 있다.

 

새로운 변수 F

  • F값이 이라면 가우시안 첫번쨰 분포에서 생성되었다
  • F값이 1이라면 두번째 가우시안 분포에서 생성되었다.

일반적인 EM 알고리즘의 초기화 단계는, 잠재 변수(Laten variables)를 추가하고, 추가한 변수를 통해서 어떻게 최적화를 수행해야 하는지 생각하고 기대 값을 최대화 시키는 것이다.

 

이러한 EM알고리즘의 문제점은 잠재 변수들을 정확하게 포함시켜 각각의 단계에서 계산을 수행하는 것이다.

 

정보 기준

트레이닝된 모델이 얼마나 잘 동작할지 말해주는 측정을 찾아서 사용한다. 잘 사용되는 2가지 정보 기준이 있다.

  • 에이카케 정보 기준(Aikake information Criterium)
  • 베이지언 정보 기준(Bayesian Information Criterium)

2.최근접 이웃법

k-means 알고리즘

데이터를 설명할 수 있는 모델이 없다면 최선의 방법은 비슷한 데이터를 살펴보고 비슷한 클래스를 선택하는 것이다.

이를 위해서 입력 공간에 자리하고 있는 데이터 점들 중에 어떤 트레이닝 데이터가 가장 가까운지를 결정한다.

이는 각각의 데이터 포인트마다 거리를 계산하는 것이 요구되므로 계산 비용이 높다.

 

군집화 K 설정

  • K 값이 너무 작으면 노이즈에 영향을 받는다.
  • K 값이 너무 크면 정확도가 떨어지게 된다.

K 최근접 이웃법(KNN)은 차원의 저주에 영향을 받는다. 따라서 계산 비용이 데이터의 차원이 높아짐에 따라서

같이 높아진다. 즉, 차원이 증가함에 따라서 다른 데이터 포인터에 대한 거리 또한 증가하게 되는 점이다.

다양한 방향으로 멀리 떨어져 있을 수 있어서 어떤 차원에서는 아주 가깝지만, 다른 차원에서는 아주 먼 위치에 놓여 있을 수 있다. 이를 해결하기 위해 적응형 최근접 이웃(Adaptive nearest neighbour) 방법이 있다.

 

KNN 알고리즘에서 바이어스 분산 분해 수식에 접근해 본다면

K가 작을 때 작은수의 이웃들이 고려되어 모델이 유연하게 잘 일반화하지만, 고려되는 데이터가 작아서 실수를 많이 만들게 된다. K가 커짐에 따라 분산은 줄어들지만, 유연성이 줄어들고 따라서 바이어스가 높게 된다.

 

최근접 이웃 스무딩

최근접 이웃(Nearest neighbor) 방법은 이웃들의 평균 값, 스플라인 또는 비슷한 적용을 통해서 회귀에 사용된다.

가장 일반적인 방법은 커널 스무더(kernel smoothers)라고 부르며 커널을 이용하는 것이다. 입력 값에서 각 데이터까지의 거리를 이용해서 데이터의 가중치를 설정하는 것이다.

  • 에파네크니코브 2차 커널(Epanechnikovquadratic kernel)
  • 트라이큐브 커널(tricube kernel)

두개의 커널은 가까이 있는 점의 스무딩을 위해서 특정 범위(parameter)를 넘어서면서 부드럽게 0으로 가도록

차등해서 가중치를 부여한다. 특정 범위 파라미터에 대해 큰 값을 적용할 때 더 많은 데이터를 사용해서 평균을

구함으로써 높은 바이어스와 더 작은 변화량을 갖는다.

 

효율적인 거리 계산 : KD 트리

모든 데이터 점 사이의 거리를 구하는 것은 계산 비용이 많이 든다. 따라서 가까운 이웃을 찾는 문제에 대해서는

KD 트리가 존재한다.

KD 트리의 아이디어는 한 차원을 정해서 중앙 값을 구하고, 이를 사용해서 둘로 나눠 바이너리 트리를 만든다.

각 단계에서 한 차원씩을 이용해 데이터를 쪼개며, 어디를 중심으로 둘로 가를지는 중앙 값을 사용한다. 어느 차원을

사용할지는 여러 선택 방법이 있으며, 또는 무작위로 결정한다.

 

트리에서 검색 방법은 바이너리 트리와 같으며, 테스트 점에 대한 최근접 이웃 노드들을 찾는 일에 집중한다.

첫 번째로 해야하는 일은 최단거리의 이웃 노드들의 잎(leaf) 노드를 라벨하고, 테스트 포인트와 잎 노드의 거리를 계산한다. 다음으로 다른 박스들을 확인해서 더 가까운 이웃 노드가 존재하는지 따져 본다. 

부모 노드의 형제 노드도 확인해야한다.

 

거리 측정

유클리드 거리(Euclidean distance)

직선 거리인 최단 경로

맨해튼 거리(Manhattan = city - block)

격자 무늬의 사각형 모양에 대해서 실제 걸어서 가는 거리

탄젠트(tangent) 거리

일반적으로 이미지에 이용되는 지표.  테일러 전개식(Taylor expansinon)의 1차 유도 함수이며,

작은 회전이나 스케일링의 변화에는 잘 동작한다.

 

수학적으로 거리를 측정하는 것을 지표(metrics)라고 부른다. 지표 함수(놈 norm)은 두 개의 입력 값을 받고

스칼라(scalar) 거리 값을 출력하며, 이는 0 또는 양수이고 대칭이고 삼각 부등식을 만족한다.

 

유클리드 거리는 더 높은 차원에도 일반화 한다.

반응형
Comments