[Deep Learning] 방사형 기저 함수 신경망 (Radial Basis Function Network)
방사형 기저 함수 (Radial Basis Function)
RBF (방사형 기저 함수)는 값이 원점 또는 특정 지점으로부터의 거리에 따라 달라지는 실수 값 함수이다. 신경망에서 활성화 함수 역할을 하는 기계 학습을 포함하여 다양한 분야에서 널리 사용된다. RBF 활성화 함수는 데이터를 선형적으로 분리할 수 없는 문제에 특히 유용하다. 입력 공간을 데이터가 선형적으로 분리 가능한 고차원 공간으로 매핑할 수 있으므로 복잡한 분류 문제에 대한 강력한 도구가 된다.
방사형 기저 함수 신경망 (Radial Basis Function Network)
방사 신경망은 왕립신호 및 레이더 연구소의 연구원인 브룸헤드 (Broomhead)와 로우 (Lowe)에 의해 1988년 논문에서 처음 공식화되었다. 방사 신경망은 다차원 공간의 보간법에 강력한 능력을 가지고 있는 신경망으로 방사형 구조를 기본으로 하는 네트워크를 가지고 있다. 1개의 은닉층에는 확률 가우시안이 적용되어 있다. 방사 신경망은 은닉층이 1개이며, 유클리디안 거리를 사용한다. 또한 역전파 알고리즘을 사용하고, 안정성 판별이 가능하다는 네 가지의 특징이 있다. 방사 신경망은 보편적인 근사 및 빠른 학습 속도로 인해 다른 신경망과 구별된다. 방사 신경망은 입력 계층, 숨겨진 계층 및 출력 계층의 세 계층으로 구성된 피드 포워드 신경망의 한 유형이다. 이러한 각 계층에는 서로 다른 작업이 존재한다. 계산된 오류가 원하는 값 또는 학습 반복 횟수에 도달하면 방사 신경망 모델의 학습이 종료된다. 그리고 히든 레이어에 특정 수의 노드가 있는 방사 신경망이 선택된다. 이는 가우스 함수 계산 단위의 전달 함수로 사용된다. 경우에 따라 일반적으로 방사 신경망이 다층 퍼셉트론에 비해 훈련 종료에 도달하는 데 더 적은 시간이 필요하다는 것이 관찰된다. 선택된 다층 퍼셉트론 및 방사 신경망은 나중에 새로운 테스트 조건에서 검토된다. 그리고 모델 예측과 실험적 관찰 사이의 일치를 조사하고 두 모델의 결과를 비교한다. 그런 다음 최소 계산 오류를 기반으로 최종 모델이 선택된다.
RBFN 작동 방식
|
Keras에서 RBFN 함수 구현
import keras.backend as K
from keras.layers import Layer
class RBFLayer(Layer):
def __init__(self, units, gamma, **kwargs):
super(RBFLayer, self).__init__(**kwargs)
self.units = units
self.gamma = K.cast_to_floatx(gamma)
def build(self, input_shape):
self.mu = self.add_weight(name='mu',
shape=(int(input_shape[1]), self.units),
initializer='uniform',
trainable=True)
super(RBFLayer, self).build(input_shape)
def call(self, inputs):
diff = K.expand_dims(inputs) - self.mu
l2 = K.sum(K.pow(diff, 2), axis=1)
res = K.exp(-1 * self.gamma * l2)
return res
Keras model에서 RBFN 함수 사용
from keras.models import Sequential
model = Sequential()
model.add(RBFLayer(10, 0.5, input_shape=(1,)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam')