관리 메뉴

ComputerVision Jack

머신 러닝 가이드 - Chapter 5 방사기저함수와 스플라인 본문

DeepLearning/머신러닝 - Algorithm

머신 러닝 가이드 - Chapter 5 방사기저함수와 스플라인

JackYoon 2020. 3. 10. 21:39
반응형

멀티 퍼셉트론에서는 입력 갑과 가중치들의 곱이 뉴런의 활성화를 결정하는 임계 값 보다

높은지 낮은지에 따라서 은닉노드 활성화를 결정한다.

즉, 입력 값이 비슷하다면 비슷한 반응이 나타나기 때문에 같은 뉴런이 반응을 나타낸다.

1.수용 영역

수용영역(receptive field)

노드들이 입력과 어느 정도 가깝다면 활성화 해야한다는 아이디어

뉴런의 활성화를 계산하는 가중치 공간(Weight Space)의 개념을 사용하여 입력 값들을 추상적으로

같은 차원의 그래프에 표현하고, 입력과 가까운 뉴런일수록 더 활성화하는게 좋은 방법

이 방법에 대해 근거를 수용영역을 통해서 알 수 있다.

 

뉴런의 수용영역이 입력 값이 가깝다면 강력하게 멀어질수록 약해지다가 아주 멀어지면 사라지도록

가우시안을 이용해서 모델을 만들 수 있다.

 

가우시안 모델

g(x, w, ∂) = exp( -||x - w||^2 / 2∂^2) 식을 사용한다.

시그마는 가우시안의 폭을 결정하기 때문에, 무한대로 크게 설정하면 뉴런은 모든 입력 값에 대해

활성화한다. 반대로 작게 설정하면 가우시안은 점점 얇아지게 된다. 이는 수용 영역 역시 점점 폭이 줄어들게 한다.

그럼 뉴런은 하나의 자극에만 반응한다. 이를 지시자(indicator) 또는 델타(delta)함수 라고 한다.

 

보통 가우시안을 이용한 모델은 비지도학습에서 사용된다. 지도학습은 방사 기저 함수(RBF, Radial Basis Fuction)

네트워크를 사용한다.

2.방사 기저 함수 네트워크

RBF 네트워크

뉴런의 출력 값이 입력 값과 가중치 사이의 거리에 비례하는 가우시안 활성화를 사용해서 수용영역을 만든다.

가우시안 활성화에서 입력 벡터들을 정규화 하는 것은 RBF 네트워크에서 매우 중요하다.

 

어떤 입력 값에 대해서 가중치장에서 가중치들과 특정 입력 사이의 거리에 따라서 강하게 또는 약하게 활성화 하거나

비활성화 하는 뉴런들의 집합을 제공한다. 이 노드들은 은닉층으로 마치 MLP의 두번째 층에 있는 출력 노드들과 연결해서 사용한것 처럼 만들 수 있따. 이를 위해선 RBF의 은닉 뉴런들의 가중치와 결합해서 출력 노드를 설정해야한다.

 

RBF 네트워크 고민점

RBF 뉴런들이 모두 비활성화할 경우를 다루기 위해 출력층에 바이어스 입력이 존재한다.

퍼셉트론을 어떻게 트레이닝 하는지 역전파로 알고 있기에 네트워크의 두번째 부분을 트레이닝 하는 것은 쉽다.

하지만 퍼셉트론을 사용하는 거보다 좋은지, 그리고 RBF 뉴런들이 위치하는 첫 번째 층의 가중치를 어떻게

트레이닝 할지가 미지수이다.

 

RBF 네트워크는 ML처럼 보편 근사자(Universal approximaor)다.

어떤 입력 값에 대해서 RBF노드는 이를 반영한다. 더 정확한 출력 값을 원하면 수용 영역의 반지름을 줄여

더 많은 RBF 노드를 추가하면 되고, 반대로 정확도가 상관없다면 아주 큰 반지름 노드 몇개로 수용 영역을 만들면 된다.

  • MLP : 은닉 노드를 사용해서 초공간들로 분리한다.
  • RBF : 함수를 지역 배칭을 위해서 사용한다.

RBF 네트워크 트레이닝

RBF 네트워크로 가장 일반적인 것이 K-means 알고리즘이다. 

즉, RBF 네트워크를 트레이닝 하는 것은 머신러닝에서 일반적으로 잘 알려진 두 개의 알고리즘을 차례로

적용하는 것으로 압축된다. ( 지도학습과 비지도 학습을 합쳐서 적용하므로 하이브리드 알고리즘이다.)

3. 보간법과 기저함수

함수 근사 문제에선 주어진 데이터들의 노이즈에 오버피팅하지 않으면서 모든 데이터를 통과하는 함수를 찾고

이를 사용해 데이터 포인트들 사이의 값들에 대해서 유추하고 보간한다.

RBF 네트워크는 이 문제를 각각의 기저 함수를 입력 값이 수용영역안에 있을 때마다 출력에 영향을 미치게 만들어서 

해결한다.

 

스플라인(Spline)

스필라인

함수를 사용해서 그래프에서 데이터의 각 부분을 예측할 수 있다. 함수는 점점더 복잡하게 만들 수 있지만, 점들의 경계선에선 몇 아원의 연속성이 요구되는지를 알아내야한다. 이러한 함수를 스플라인 함수라고 한다.

가장 보편적인 방법은 3차원 스플라인을 사용한다.

 

기저 확장

방사 기저함수와 몇몇의 머신러닝 알고리즘

f(x) = n∑i=1 * ai * Φi(x) 

위 식과 같은 형태로 쓰일 수 있다.

 

 Φi(x) 는 기저 함수라고 알려져 있으며, 선택된 모델에 대한 파라미터 변수이다.

그래프의 각 구간 점 xi는 매듭점(knotpoint)라고 불리며 보통 간격을 두고 펼쳐져 있지만, 몇 개의 매듭점이 필요한지를 정하는 것은 쉽지 않다. 많은 매듭점이 있다면 복잡한 모델이 될테고, 데이터에 오버핏하기 쉽다. (많은 데이터 요구)

 

따라서 모델을 연장해서 각각의 매듭점에서 만나면서 각 구역마다 다른 행동을 보이게 하려면

ai(모델을 데이터에 맞추기 위해 풀 수 있는 파라미터)를 선택할 때 각 매듭점에서

f(x1)의 값이 x1의 왼쪽에서 접근하듯 오른쪽에서 접근하든 같게 만들면된다.

 

더 많은 차원과 복잡성을 x에 부여할 수 있으나, 3차 스플라인이 보통 충분하다.

 

규격화(regularisation)

모든 매듭점에 대해서 정확하게 모델링하는 것은 오버핏이 된다 따라서 스플라인 모델이 데이터를 더

정확하게 만들려면 더 많은 매듭점을 추가하고 이는 오버피팅으로 이루어진다. 이를 해결하기 위한 방법

 

스플라인에 이용되는 가장 보편적인 규격화는 스플라인 모델을 가능한 한 더 부드럽게 만드는 것,

부드러운 정도는 각각의 점에 있는 곡선의 2차 도함수를 제곱해서 양수 값으로 계산한 측정을 곡선에 포함시킨다.

 

스무딩(smoothing) 스플라인

λ  변수를 도입해서 두 가지의 가중치를 조절한다.

스플라인 보간은 λ  = 0 로 만들어지며 λ ->무한대가되면직선의최소제곱이된다.

크로스 벨리데이션을 사용해서 모통 λ  값을 찾아낸다.

 

고차원 데이터

고차원 데이터의 경우 각각의 차원에 대해서 독립적인 기저 함수들의 집합을 갖고 모든 가능한 방법으로 조합하면 된다. 텐서곱 기저(tensor product basis)라고 알려져 있고, 이는 아주 쉽게 차원의 저주(curse of dimensionality) 문제를 유발하지만, 2D 또는 3D에서 B-스플라인이 만들어지는 것에는 잘 동작한다.

반응형
Comments