Aprendizaje automático - Red neuronal RBF

Red neuronal RBF

Fuentes de algunos materiales y casos en este artículo: "Análisis de 43 Casos de Redes Neuronales MATLAB"

Breve introducción de la red neuronal RBF

Antes de presentar la red neuronal RBF, echemos un vistazo a la función de base radial (RBF). En la Enciclopedia Baidu, RBF se define de la siguiente manera:

La función de base radial es una función de valor real cuyo valor depende únicamente de la distancia al origen, es decir, Φ(x)=Φ(‖x‖), o también puede ser la distancia a cualquier punto c, que es llamado punto central, es decir, Φ(x, c)=Φ(‖xc‖).

En términos simples, RBF es una función que representa la distancia desde un punto hasta un punto central en el espacio. Los RBF comúnmente utilizados incluyen principalmente los siguientes tipos: la
FBR
red neuronal que usa la función de base radial como función de activación es la red neuronal RBF, y La red neuronal RBF es un tipo de La red neuronal directa (la señal pasa hacia adelante y no regresa), es una red directa de tres capas. La primera capa de la red neuronal RBF es la capa de entrada, que se compone de nodos de fuente de señal; la segunda capa es la capa oculta, y la función de transformación de neuronas en la capa oculta es la función de base radial; la tercera capa es la salida capa, que realiza la respuesta de entrada de patrón.
El texto anterior puede resultar algo abstracto, a continuación, tomemos la siguiente figura como ejemplo para hablar de lo que es la red neuronal RBF:
La siguiente figura es un modelo simple de red neuronal de base radial:
inserte la descripción de la imagen aquí

Como se puede observar en la figura, la función de activación de la red neuronal de base radial toma como variable independiente la distancia entre el vector de entrada y el vector de peso. Es decir, la entrada de datos a la capa oculta es la variable de entrada X ⃗ = [ x 1 , x 2 , … , xm ] \vec X=[x_1,x_2,\dots,x_m]X =[ X1,X2,,Xm] y el vector de pesoW ⃗ = [ w 1 , w 2 , … , wm ] \vec W=[w_1,w_2,\dots,w_m]W =[ w1,w2,,wm] , generalmente toma∣ ∣ dist ∣ ∣ = ∑ i = 1 m ( xi − wi ) 2 ||dist||=\sqrt{\sum_{i=1}^m{(x_i-wi)^2} }∣∣ re yo s t ∣∣=yo = 1m( Xyow yo )2 . b en la figura es el umbral, cuando ∣ ∣ dist ∣ ∣ ||dist||∣∣ d i s t ∣∣Cuando el valor es menor que b, la red neuronal no se activará para ajustar la sensibilidad de la red neuronal, mientras que el vector de pesoW ⃗ \vec WW Este es el centro de datos que encontramos.

La función de activación de la capa oculta generalmente toma una función Gaussiana: f ( x ) = e − 1 2 σ 2 x 2 f(x)=e^{- \frac 1{2\sigma^2}x^2}f ( x )=mi2p _21X2 , dondeσ \sigmaσ es
la varianza de la función gaussiana, que es una constante. La salida de cada nodo en la capa oculta es la entrada∣ ∣ dist ∣ ∣ ||dist||∣∣ d i s t ∣∣El valor de la función transformado por la función de activación.

En cuanto a la salida y, dado que este modelo tiene solo una salida y la capa oculta tiene solo un nodo, entonces y = e − 1 2 σ 2 ∣ ∣ dist ∣ ∣ 2 y=e^{- \frac 1{2\sigma ^2} ||distancia||^2}y=mi2p _21∣∣ re yo s t 2

Para una red neuronal de base radial más compleja, su capa oculta tiene múltiples nodos y su estructura es la siguiente:
inserte la descripción de la imagen aquí
en este momento, la capa oculta tiene múltiples salidas a la capa de salida, y la salida de la capa de salida es la salida de la capa de salida. capa oculta El promedio lineal ponderado de , para distinguir el vector de peso de la capa de entrada, usamos wi 2 w^2_iwi2Representa el peso del i-ésimo nodo de capa oculta, por lo que la salida de la capa de salida es y = salida ( ∑ i = 1 nwi 2 RBF ( X ⃗ , W ⃗ i ) ) y=salida(\sum_{i=1 }^ nw^2_iRBF(\vec X,\vec W_i))y=o tu tp tu t ( yo = 1nwi2RBF (X ,W yo)) ,W ⃗ y \vec W_iW yoEs el vector de punto central del i-ésimo nodo de capa oculta. La función de salida () necesita usar diferentes funciones de acuerdo con diferentes escenarios. Por ejemplo, podemos usar la función de signo () para la clasificación binaria.
Una estructura de red neuronal más general es una estructura en la que la capa de salida de la capa oculta contiene varios nodos. El principio no es muy diferente de la estructura simple anterior, por lo que no se presentará aquí.

inserte la descripción de la imagen aquí

Pasos del algoritmo de red neuronal RBF

El algoritmo de aprendizaje de la red neuronal RBF necesita resolver tres parámetros: el vector central W de la función base ⃗ \vec WW , varianza σ \sigmaσ y los pesos de la capa oculta a la capa de salida. De acuerdo con los diferentes métodos de selección del centro de función de base radial, la red neuronal RBF tiene diferentes métodos de aprendizaje. A continuación, se presentará el método de aprendizaje de la red neuronal RBF del centro de selección autoorganizado. El método consta de dos etapas: una es la etapa de aprendizaje autoorganizado, que es un proceso de aprendizaje sin tutor, y se resuelven las funciones de vector centro y varianza de la base de la capa oculta; pesos intermedios.

Usamos la función gaussiana como la función de activación de la red neuronal de base radial, luego la función de activación se puede expresar como:
R ( X ⃗ p − W ⃗ i ) = e − ∣ ∣ X ⃗ p − W ⃗ i ∣ ∣ 2 2 σ 2 R (\vec X^p-\vec W^i)=e^{-\frac {||\vec X^p-\vec W^i||^2}{2\sigma^2}}R (X pagW yo )=mi2p _2∣∣X pag -W yo2
wi es el centro de la función gaussiana ∣ ∣ xi − wi ∣ ∣ es la norma euclidiana σ es la varianza de la función gaussiana X ⃗ p = [ x 1 p , x 2 p , … , xmp ] es la p-ésima muestra de entrada W ⃗ i = [ w 1 i , w 2 i , … , wmi ] es el vector central p = 1 , 2 , … , P de la i-ésima función de base radial del nodo de capa oculta, P es el número total de muestras w_i es el centro de la función gaussiana\\||x_i -w_i|| es la norma europea \\\sigma es la varianza de la función gaussiana\\\vec X^p=[x^p_1,x^p_2,\dots,x^ p_m] es la p-ésima muestra de entrada\\\vec W^i=[w^i_1,w^i_2,\dots,w_m^i] es el vector central de la i-ésima función de base radial del nodo de la capa oculta \\p= 1,2,\dots,P, P es el número total de muestraswyoes el centro de la función gaussiana∣∣x _yowyo∣∣ es la norma euclidianaσ es la varianza de la función gaussianaX pag=[ X1pag,X2pag,,Xmetropag] es la p-ésima muestra de entradaW i=[ w1yo,w2yo,,wmetroyo] es el vector central de la i- ésima función de base radial del nodo de capa ocultapag=1 ,2 ,,P , P es el número total de muestras

La salida de la red neuronal radial es:
yj = ∑ i = 1 hwij 2 e − ∣ ∣ X ⃗ p − W ⃗ i ∣ ∣ 2 2 σ 2 y_j=\sum_{i=1}^hw^2_{ij}e ^{-\frac {||\vec X^p-\vec W^i||^2}{2\sigma^2}}yj=yo = 1hwyo2mi2p _2∣∣X pag -W yo2
wij 2 es el valor de ponderación desde el i-ésimo nodo en la capa oculta hasta el j-ésimo nodo en la capa de salida i = 1 , 2 , … , h es el número de nodos en la capa oculta yj es la salida real de el j-ésimo nodo de salida de la red neuronal. w^2_{ij} es el peso desde el i-ésimo nodo en la capa oculta hasta el j-ésimo nodo en la capa de salida \\i=1,2,\dots, h es el número de nodos de la capa oculta\\ y_j es la red neuronal La salida real del j-ésimo nodo de salida.wyo2es el peso desde el i- ésimo nodo en la capa oculta hasta el j -ésimo nodo en la capa de salidai=1 ,2 ,,h es el número de nodos de capa ocultayjes la salida real del j-ésimo nodo de salida de la red neuronal .
Los pasos específicos del algoritmo son los siguientes:
Paso 1: Calcular el centro de la función base según el método de agrupamiento de K-medias:

  1. Inicialización de red: seleccionar aleatoriamente h muestras de entrenamiento como centros de clúster ci ( i = 1 , 2 , … , h ) c_i(i=1,2,\dots,h)Cyo( yo=1 ,2 ,,h ) ;
  2. Agrupe el conjunto de muestra de entrenamiento de entrada de acuerdo con la regla del vecino más cercano: es decir, de acuerdo con la muestra X ⃗ p \vec X^pX La distancia euclidiana entre p y el centro del conglomerado seleccionado asigna muestras a diferentes conjuntosϱ i ( i = 1 , 2 , … , h ) en \varrho_i(i=1,2,\dots,h)ϱyo( yo=1 ,2 ,,h ) ; _
  3. Reajuste el centro del conglomerado: calcule el valor medio de las muestras de entrenamiento en cada conjunto y utilice estos valores medios como el nuevo centro del conglomerado. Si el nuevo centro del conglomerado no cambia, el ci c_i obtenidoCyoEs el centro de función base final W i W^i de la red neuronalWi , de lo contrario, devuelva 2 para la próxima ronda de cálculo central.
    Paso 2: Resuelve la varianzaσ \sigmaσ :
    La fórmula para calcular la varianza de la función gaussiana es la siguiente:
    σ = W max 2 h \sigma=\frac {W_{max}}{\sqrt{2h}}pag=2h _ Wmáximo _
    W max es la distancia máxima entre los centros de clúster seleccionados, h es el número de nodos de capa ocultos W_{max} es la distancia máxima entre los centros de clúster seleccionados, h es el número de nodos de capa ocultosWmáximo _es la distancia máxima entre los centros de clúster seleccionados, h es el número de nodos en la capa oculta
    Paso 3: Calcular el peso entre la capa oculta y la capa de salida:
    wij = ehcmax 2 ∣ ∣ X ⃗ p − W ⃗ i ∣ ∣ 2 , i = 1 , 2 , ... , h ;p = 1 , 2 , ... , P w_{ij}=e^{\frac h{c^2_{max}}||\vec X^p-\vec W^i||^2}, i=1,2,\puntos,h;p=1,2,\puntos,Pwyo=miCmáx .2h∣∣X pag -W yo2 ,yo=1 ,2 ,,H ;pag=1 ,2 ,,P
    De la fórmula anterior, podemos ver que j=p, es decir, el número de muestras de entrada es igual al número de resultados de salida.

Ajuste de curvas usando la red neuronal RBF

Para funciones relacionadas, consulte la documentación de Matlab:
newrb(P,T,goal,spread,MN,DF);
net = newrbe(P,T,spread);
A = radbas(N,FP);
el código es como sigue:

%% Matlab神经网络43个案例分析
 
%% 清空环境变量
clc
clear
%% 产生训练样本(训练输入,训练输出)
% ld为样本例数
ld=400; 

% 产生2*ld的矩阵 
x=rand(2,ld); 

% 将x转换到[-1.5 1.5]之间
x=(x-0.5)*1.5*2; 

% x的第一行为x1,第二行为x2.
x1=x(1,:);
x2=x(2,:);

% 计算网络输出F值
F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

%% 建立RBF神经网络 
% 采用approximate RBF神经网络。spread为默认值
net=newrb(x,F);

%% 建立测试样本

% generate the testing data
interval=0.1;
[i, j]=meshgrid(-1.5:interval:1.5);
row=size(i);
tx1=i(:);
tx1=tx1';
tx2=j(:);
tx2=tx2';
tx=[tx1;tx2];

%% 使用建立的RBF网络进行模拟,得出网络输出
ty=sim(net,tx);

%% 使用图像,画出3维图

% 真正的函数图像
interval=0.1;
[x1, x2]=meshgrid(-1.5:interval:1.5);
F = 20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
subplot(1,3,1)
mesh(x1,x2,F);
zlim([0,60])
title('真正的函数图像')

% 网络得出的函数图像
v=reshape(ty,row);
subplot(1,3,2)
mesh(i,j,v);
zlim([0,60])
title('RBF神经网络结果')


% 误差图像
subplot(1,3,3)
mesh(x1,x2,F-v);
zlim([0,60])
title('误差图像')

set(gcf,'position',[300 ,250,900,400])


Supongo que te gusta

Origin blog.csdn.net/sunshineking9/article/details/126229913
Recomendado
Clasificación