RSNNS中的径向基网络

时间:2018-06-27 19:39:07

标签: r machine-learning neural-network

我试图了解RBF网络如何与RSNNS一起使用,并且对“ nitFuncParams”和“ learnFuncParams”中的参数有一些疑问,例如,我尝试使用此代码(这是R代码):*

X <- data.frame(x1=c(1,0,0,1),x2=c(1,1,0,0))
Y <- as.matrix(c(1,0,1,0),4,1)
library(RSNNS)

在这里,我使用两个中心并且仅进行一次迭代

rbfn.model <- RSNNS::rbf(as.matrix(X,ncol=2),as.matrix(Y),         
                     size=2,    
                     maxit=1,
initFunc = "RBF_Weights",
initFuncParams = c(0, 0,0, 0.02, 0),
learnFunc = "RadialBasisLearning",
learnFuncParams = c(0,0,0.01,0,0),
updateFunc = "Topological_Order",
updateFuncParams = c(0),linOut=TRUE)

这是预测

rbf.network.pred <-predict(rbfn.model, X) 
rbf.network.pred

       [,1]
   [1,] 0.05882368
   [2,] 0.05805492
   [3,] 0.05805485
   [4,] 0.05882360

这是附加信息

extractNetInfo(rbfn.model)

## $infoHeader
##                 name               value
## 1       no. of units                   5
## 2 no. of connections                   6
## 3  no. of unit types                   0
## 4  no. of site types                   0
## 5  learning function RadialBasisLearning
## 6    update function   Topological_Order
## 
## $unitDefinitions
##   unitNo   unitName   unitAct  unitBias        type posX posY posZ
## 1      1    Input_1 1.0000000 0.0000000  UNIT_INPUT    1    0    0
## 2      2    Input_2 0.0000000 0.0000000  UNIT_INPUT    2    0    0
## 3      3 Hidden_2_1 1.0000000 1.0000000 UNIT_HIDDEN    1    2    0
## 4      4 Hidden_2_2 0.3678795 1.0000000 UNIT_HIDDEN    2    2    0
## 5      5   Output_1 0.0611404 0.0388499 UNIT_OUTPUT    1    4    0
##                actFunc      outFunc sites
## 1         Act_Identity Out_Identity      
## 2         Act_Identity Out_Identity      
## 3     Act_RBF_Gaussian Out_Identity      
## 4     Act_RBF_Gaussian Out_Identity      
## 5 Act_IdentityPlusBias Out_Identity      
## 
## $fullWeightMatrix
##            Input_1 Input_2 Hidden_2_1 Hidden_2_2   Output_1
## Input_1          0       0          1          1 0.00000000
## Input_2          0       0          0          1 0.00000000
## Hidden_2_1       0       0          0          0 0.01415128
## Hidden_2_2       0       0          0          0 0.02212468
## Output_1         0       0          0          0 0.00000000

我阅读了SNNS的手册,并使用了公式,但没有得到相同的答案(权重)

weights = pseudoinverse(t(G)%%G + lamda C)%%t(G)%%Y

其中lamda = 0.01, G是包含例如exp(-0.02 * || xi-ti || ^ 2)的矩阵,其中t在这种情况下是1,1和1,0的两个中心 C是使用中心之间的距离的矩阵,例如exp(-0.02 * || ti-tj || ^ 2) Y是输出

在这里我们可以看到我的第一个权重是0.01415128和0.02212468,我在otuput中的偏倚是0.0388499,如何获得这个第一个值??,并且当我使用2次迭代时,我使用此公式来实现输出神经元中的偏差:b(i + 1)= b(i)+ lambda * sum(error),它可以工作,但w(i + 1)= w(i)+ lambda * sum(error)* centers不能作为权重,请有人可以帮助我吗?

这是迭代= 2中的附加信息

extractNetInfo(rbfn.model)
$infoHeader
            name               value
1       no. of units                   5
2 no. of connections                   6
3  no. of unit types                   0
4  no. of site types                   0
5  learning function RadialBasisLearning
6    update function   Topological_Order

$unitDefinitions
  unitNo   unitName   unitAct   unitBias        type posX posY posZ
1      1    Input_1 1.0000000 0.00000000  UNIT_INPUT    1    0    0
2      2    Input_2 0.0000000 0.00000000  UNIT_INPUT    2    0    0
3      3 Hidden_2_1 1.0000000 0.02000000 UNIT_HIDDEN    1    2    0
4      4 Hidden_2_2 0.9801987 0.02000000 UNIT_HIDDEN    2    2    0
5      5   Output_1 0.1107717 0.03766243 UNIT_OUTPUT    1    4    0
               actFunc      outFunc sites
1         Act_Identity Out_Identity      
2         Act_Identity Out_Identity      
3     Act_RBF_Gaussian Out_Identity      
4     Act_RBF_Gaussian Out_Identity      
5 Act_IdentityPlusBias Out_Identity  

$fullWeightMatrix
           Input_1 Input_2 Hidden_2_1 Hidden_2_2   Output_1
Input_1          0       0          1          1 0.00000000
Input_2          0       0          0          1 0.00000000
Hidden_2_1       0       0          0          0 0.03691628
Hidden_2_2       0       0          0          0 0.03692412
Output_1         0       0          0          0 0.00000000

0 个答案:

没有答案