1、MLP模型

多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构。
多层感知器(multilayer Perceptron,MLP)是指可以是感知器的人工神经元组成的多个层次。MPL的层次结构是一个有向无环图。通常,每一层都全连接到下一层,某一层上的每个人工神经元的输出成为下一层若干人工神经元的输入。MLP至少有三层人工神经元,如下图所示。

输入层(input layer)由简单的输入人工神经元构成。每个输入神经元至少连接一个隐藏层(hidden layer)的人工神经元。隐藏层表示潜在的变量;层的输入和输出都不会出现在训练集中。隐藏层后面连接的是输出层(output layer)。

隐藏层中的人工神经元,也称单元(units)通常用非线性激励函数,如relu函数和sigmond函数,sigmond函数公式如下所示:


tanh读作Hyperbolic Tangent,如上图所示,它解决了zero-centered的输出问题,然而,gradient vanishing的问题和幂运算的问题仍然存在,函数公式如下:


ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取sub-gradient,如下图所示:

Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

Leaky ReLU函数如下所示:

2、MLP的训练方法

反向传播(backpropagation)算法经常用来连接优化算法求解成本函数最小化问题,比如梯度下降法。这个算法名称是反向(back)和传播(propagation)的合成词,是指误差在网络层的流向。理论上,反向传播可以用于训练具有任意层、任意数量隐藏单元的前馈人工神经网络,但是计算能力的实际限制会约束反向传播的能力。

反向传播的过程主要利用了链式法则,而网络神经元结点的导数更新根据最小均方误差函数或者平均绝对误差等函数也行。上面绿色的数字代表前向计算时的数值,下面红色的字代表了各个结点的导数,即对最终结果的影响程度。

3、MLP的代码实验

  • MLP 拟合线性函数 y=x+1
    结果如图所示:

    从上图可见,对于简单的线性函数,简单的三层MLP网络的拟合效果还是可以的。
    代码如下:
import torch
import numpy
import random
from torch.autograd import Variable
import torch.nn.functional as F
import matplotlib.pyplot as plt x = torch.unsqueeze(torch.linspace(-1,1,100),dim=1)
y = x+1
x,y = Variable(x),Variable(y)
plt.ion()
class Net(torch.nn.Module):def __init__(self,n_feature,n_hidden,n_output):super(Net,self).__init__()#两层感知机self.hidden = torch.nn.Linear(n_feature,n_hidden)self.predict = torch.nn.Linear(n_hidden,n_output)def forward(self,x):x = F.relu(self.hidden(x))x = self.predict(x)return xnet = Net(1,8,1)  #输入节点1个,隐层节点8个,输出节点1个
optimizer = torch.optim.SGD(net.parameters(),lr = 0.2)
loss_func = torch.nn.MSELoss()for t in range(200):prediction = net(x)loss = loss_func(prediction,y)optimizer.zero_grad()loss.backward()optimizer.step()if t%5==0:plt.cla()plt.scatter(x.data.numpy(),y.data.numpy())plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=5)plt.pause(0.1)plt.ioff()
plt.show()
  • MLP 拟合非线性函数 y = x 2 y=x^2 y=x2
    效果如下所示:

    可见,对于普通的非线性也是可以拟合的。
  • MLP拟合SIN函数

    结果也是可以的。

多层感知机MLP的理解及代码实现相关推荐

  1. 花书+吴恩达深度学习(一)前馈神经网络(多层感知机 MLP)

    目录 0. 前言 1. 每一个神经元的组成 2. 梯度下降改善线性参数 3. 非线性激活函数 4. 输出单元 4.1. 线性单元 4.2. sigmoid 单元 4.3. softmax 单元 5.  ...

  2. 多层感知机MLP常见的超参数有哪些?如果MLP模型对于数据集过拟合了,如何调整这些超参数来进行解决?

    多层感知机MLP常见的超参数有哪些?如果MLP模型对于数据集过拟合了,如何调整这些超参数来进行解决? 目录

  3. 多层感知机MLP、RBF网络、Hopfield网络、自组织映射神经网络、神经网络算法地图

    多层感知机MLP.RBF网络.Hopfield网络.自组织映射神经网络.神经网络算法地图 目录

  4. python与机器学习(六)——支持向量机(SVM) 多层感知机(MLP)

    在这次实验中,我们将尝试提取基本的图像特征并利用支持向量机或多层感知机算法对提取的特征进行图像分类. 导入: import numpy as np import matplotlib from sci ...

  5. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...

  6. MLP多层感知机(人工神经网络)原理及代码实现

    一.多层感知机(MLP)原理简介 多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间 ...

  7. 多层感知机(MLP)简介

    一.多层感知机(MLP)原理简介 多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间 ...

  8. 经典机器学习方法(3)—— 多层感知机

    参考:动手学深度学习 注:本文是 jupyter notebook 文档转换而来,部分代码可能无法直接复制运行! 前文介绍的线性回归和 softmax回归,在模型结构上都属于单层神经网络(只有一个输入 ...

  9. 多层感知机multiLayerPercetrons

    目录 1. 感知机: 2. 常用非线性的激活函数 ​3. 多层感知机--多隐藏层 4. 代码实践 1. 感知机: 感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为 ...

最新文章

  1. eclipse的怪问题。background indexer crash recovery .java.lang.OutOfMemoryError: Java heap space
  2. 感觉 asp.net mvc开发好难啊_青岛开发区晟创广告公司
  3. 腾讯数字生态大会倒计时4天:请收下这份最全的TEG参会攻略~
  4. Python自动化运维之常用模块—logging
  5. uwsgi --http :8888 --wsgi-file test.py(无法部署)
  6. 第二阶段冲刺——个人总结07
  7. day1-接口测试与接口测试工具
  8. Android【报错】Description Resource Path Location Type AndroidManifest.xml file missing!
  9. 直播源码网站,自定制配置页面布局和写法
  10. Maple绘图小技巧1
  11. 买服务器上国外网站,国外服务器怎么买?
  12. html span 字体位置,span内文字居中css布局方法_让span内容居中
  13. linux远程灰屏,解决配置Ubuntu中vnc远程显示灰屏
  14. Gucci“瑕疵”口红海报是一种对审“丑”广告的致敬吗?
  15. 教你2种常用的电商高并发处理解决方案
  16. hive 以beeline的模式启动
  17. 多地推广应用电子劳动合同,君子签赋能人力资源管理数字化
  18. Android-茫茫9个月求职路,终于拿满意offer,项目实践
  19. 7-33 统计素数并求和 (20 分)
  20. 关于CreateParams的参数

热门文章

  1. 被讨厌的勇气:目的论
  2. Android程序设计之学生考勤管理系统
  3. 搭建云流媒体存储服务+直播+gb81818+智能摄像头,海康威视,大华,华为,国标推流,RTSP 拉流 srs
  4. pythons+selenium, 下拉框非select选元素
  5. C++Primer--数组、指针
  6. vivado 2022.1添加pynq z2板卡
  7. python yield 协程_用yield实现python协程
  8. iOS 切圆角 任意几个角
  9. ctfshow菜狗杯 web 我的眼里只有$
  10. 股票交易系统接口设计