概率神经网络实现Parzen窗方法
2016-05-24 17:10
525 查看
概率神经网络实现Parzen窗方法
标签(空格分隔): 模式分类假设我们要实现一个Parzen估计,共有n个d维度的样本,都是随机从c个类别中选取的,这种情况下,输入层由d个输入单元组成,每个输入单元都与n个模式单元相连。每一个模式单元都与c个类别中的其中之一相连。
从输入层到模式层的连线表示为可以修改的权系数,这些系数都可以通过训练得到。这些权重可以用一个向量θ表示,但为了与神经网络术语保持一致,统一改用向量w来表示,而一个类别单元都计算与之相连的各模式单元的输出结果和。
首先我们先把样本x进行归一化处理,即∑idx2i=1,经过归一化后的样本置于输入层单元上。同时,连接输入单元和第一个模式层单元的那些连接被初始化为w1=x1,然后从模式层的第一个单元到类别层中代表x1的那个类别建立了一个连接,如图所示
![](http://static.zybuluo.com/lancelot-vim/85k9xc8gslqsu2a2iyq0wj7e/PNN%E5%88%9D%E5%A7%8B%E5%8C%96.png)
如此,当n个随机样本遍历完成之后,可以得到一个输入层到模式层的全连接网络,和一个模式层到类别层的一个稀疏连接网络
PNN训练算法
begin initialize j <- 0, n, aji <- 0, j = 1, … n; i = 1, …, c
do j <- j + 1
xjk <- xjk/(∑idx2)1/2
wjk <- xjk
if x∈ωi then aji <- 1
until j = n
end
训练完成之后,对于测试样本,首先对测试样本进行归一化处理,然后供给输入节点,之后计算”净激活(net activation)”
netk=wTkx
然后把净激活输入一个非线性函数exp(netk−1σ2), 其中σ为用户设置的参数,表示高斯窗的有效高度,最后再把这些估计和与相连接的权重相乘相加得到类别层的估计
PNN分类算法
begin initialize k <- 0, x<-测试数据
do k <- k + 1
netk <- wTkx
if aki=1 then gi <- gi+exp((netk−1)/σ2)
until k = n
return class <- argmax(gi)
end
PNN的好处之一就是学习速度很快,因为规则简单,而且新的训练样本容易被加入以前训练好的分类器中,但是它的关键问题实际上和Parzen窗一样,就是选取体积序列(在这里是选取σ),如果过大,会导致平滑效果太过明显,太小会导致变化特别剧烈,分类效果都不会太好,实际上可以使用交叉验证方法来确定一个比较恰当的σ值
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- bp神经网络及matlab实现
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 基于神经网络的预测模型
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 人工智能扫盲漫谈篇 & 2018年1月新课资源推荐