Multi–Layer Perceptron & Back-propagation algorithm

As for Multi-Layer Perceptron, it can be taken as a combination of many Linear Classifications, using many hyper plane to split the space and separate the dataset, to get a better classification, also MLP can be used in regression and Dimension reduce. In this blog, we’ll take about the MLP in classification, how to calculate the neutron network and show the main code.

As for a MLP with 2-layer, the following picture show the combination of 2 neutron (or two hyper plane), simplify the neutron as the picture bellow and define the functions:

The Back-propagation algorithm

It is an iterative algorithm, repeating the following steps

1. Pick a pair (X, z∗) randomly from the training set

2. Forward pass

3. Backward pass

 

In step2: Forward Pass we calculate Y, Y’, z and z’

In step2: Backward Pass we calculate update W, wn, V, vn, Error

 

 1 /**
 2      *  computes the forward pass of the backpropagation algorithm
 3      *  calculate Y, Yp, z and zp; X have N coefficients
 4      */
 5     private void forward(final Vector X){
 6         //calculate Y,Yp
 7         for(int i=0;i<K;i++){
 8             double temp= vn.get(i)+X.dot(V[i]);
 9             temp=Math.tanh(temp);
10             Y.set(i, temp);
11             temp=1-temp*temp;
12             Yp.set(i, temp);
13         }
14         //calculate z & zp
15         z=wn+Y.dot(W);
16         z=Math.tanh(z);
17         zp=1-z*z;    
18     }
19     /**
20      * computes the backward pass of the backpropagation algorithm, 
21      * with X as input and as desired output c
22      * update W, wn, V , vn, E
23      */
24     private void backward(final Vector X, double c){
25         double pout=-(z-c)*zp;
26         //System.out.println(zp);
27         //update W & wn
28         for(int i=0;i<K;i++){
29             double delt_v=eta*Y.get(i)*pout;
30             W.set(i, W.get(i)+delt_v);
31             double pin=pout*W.get(i)*Yp.get(i);
32             //update V & vn
33             for(int j=0;j<N;j++)
34                 V[i].set(j, V[i].get(j)+etaout*X.get(j)*pin);
35             vn.set(i, vn.get(i)+etaout*pin);
36         }
37         wn+=eta*pout;
38     }
39     /**
40      * returns true if the output of the MLP for X is positive, 
41      * false if the output of the MLP for X is negative
42      */
43     public boolean classify(final Vector X){
44         Vector Yclassify=new Vector(K);
45         
46         for(int i=0;i<K;i++){
47             double temp= vn.get(i)+X.dot(V[i]);
48             temp=Math.tanh(temp);
49             Yclassify.set(i, temp);
50         }
51         //calculate z & zp
52         z=wn+Yclassify.dot(W);    
53         return z>0;        
54     }
55     /**
56      * updates W, wn, V ,vn update_weights implements 
57      * one iteration of the backpropagation algorithm
58      */
59     public void update(final Vector X, boolean inClass){
60         double c= inClass? 1:-1;
61         forward(X);
62         backward(X, c);
63     }

 

The following picture shows the result of 2 dataset running MLP (the Figure1/2-1 is the dataset, and the Figure1/2-2 is result).

参考资料:

http://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf

http://en.wikipedia.org/wiki/Multilayer_perceptron

http://en.wikipedia.org/wiki/Backpropagation

http://www.marmakoide.org/download/teaching/dm/dm-perceptron-2.pdf

 

转载于:https://www.cnblogs.com/sunshinewill/archive/2013/04/18/3029716.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
### 回答1: 多层感知器(Multi-Layer Perceptron)是一种人工神经网络,由多个神经元层组成。它是一种前向反馈网络,每一层的神经元都与下一层的神经元相连。多层感知器可以用于分类、回归和预测等任务。它的训练过程通常使用反向传播算法。 ### 回答2: 多层感知器(Multi-Layer Perceptron,MLP)是一种前馈神经网络,由多层单元组成。每一层的单元都与其它层的单元相连,每个连接都有一个权重。MLP通常用于各种机器学习任务,如分类、回归和预测问题。MLP模型使用反向传播算法(backpropagation)来训练,该算法可以有效地更新权重和偏置,以最小化损失函数。 MLP的每一层通常包括以下组成部分: 1.输入层:接受输入数据(例如,图像像素或声音信号等)的神经元。 2.隐藏层:包含多个神经元,用于处理输入数据并学习特征。 3.输出层:输出神经元向前传递信号,将结果转换为适当格式。 MLP的优点在于它具有复杂的非线性模型,可以学习复杂的非线性关系。它还可以处理多个输入和输出,并在训练过程中自动调整它们之间的权重。在某些情况下,MLP可以实现非常高的准确度,并且能够泛化到新的数据集中。 然而,MLP也有一些缺点。由于其模型复杂性,训练和优化过程需要大量的计算资源和时间。在处理非常大型的数据集时,可能需要使用分布式计算或GPU硬件加速等技术来提高性能。此外,MLP也容易出现过拟合问题。为了避免这种情况,可以使用正则化或丢弃(dropout)等技术来减少模型的复杂性。 总之,多层感知器是一个非常强大的机器学习模型,可以应用于各种任务中。但是,在应用之前,需要对它的优缺点及应用场景有深刻的了解,以充分利用其潜力。 ### 回答3: 多层感知器(multilayer perceptron,缩写为 MLP)是一种前馈神经网络(feedforward neural network)的结构,由多个中间层(hidden layer)和一个输出层组成。每个中间层和输出层都由多个神经元(neuron)组成,每个神经元接受多个输入,并产生一个输出值。 传统的单层感知器只能解决线性可分问题,而多层感知器通过引入中间层来实现非线性映射,因此可以解决更加复杂的非线性问题。 在多层感知器中,每个神经元都有一个激活函数(activation function)用于将输入信号转化为输出信号。常见的激活函数有sigmoid函数、ReLU函数等。在通过多层进行计算后,最终的输出结果将被送入输出层,由输出层的神经元给出最终的分类结果或回归预测结果。 多层感知器的训练过程通常采用反向传播算法(backpropagation),通过计算预测结果与实际结果的误差,以及每个神经元对误差的贡献,来更新每个神经元的权重和偏置参数,优化整个网络的性能,使其能够更好地对未知数据进行预测。 多层感知器广泛应用于模式分类、信号处理、语音识别、图像识别、自然语言处理等领域,已经成为深度学习的重要组成部分。随着硬件设备性能提升和深度学习算法的不断发展,多层感知器和其他深度学习技术有望在更广泛的领域中得到应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值