精华内容
参与话题
问答
  • matlab BP神经网络 机器学习 函数逼近

    万次阅读 2016-02-05 20:33:26
    1、BP网络构建 (1)生成BP网络 :由维的输入样本最小最大值构成的维矩阵。 :各层的神经元个数。 :各层的神经元传递函数。 :训练用函数的名称。 (2)网络训练 (3)网络仿真 {'tansig','purelin'}...


    1BP网络构建

    1)生成BP网络

    :由维的输入样本最小最大值构成的维矩阵。

    :各层的神经元个数。

    :各层的神经元传递函数。

    :训练用函数的名称

    2)网络训练

    3)网络仿真

    {'tansig','purelin'},'trainrp'

    BP网络的训练函数    

    训练方法

    训练函数

    梯度下降法

    traingd

    有动量的梯度下降法

    traingdm

    自适应lr梯度下降法

    traingda

    自适应lr动量梯度下降法

    traingdx

    弹性梯度下降法

    trainrp

    Fletcher-Reeves共轭梯度法

    traincgf

    Ploak-Ribiere共轭梯度法

    traincgp

    Powell-Beale共轭梯度法

    traincgb

    量化共轭梯度法

    trainscg

    拟牛顿算法

    trainbfg

    一步正割算法

    trainoss

    Levenberg-Marquardt

    trainlm

     

    BP网络训练参数

    训练参数

    参数介绍

    训练函数

    net.trainParam.epochs

    最大训练次数(缺省为10

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.goal

    训练要求精度(缺省为0

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.lr

    学习率(缺省为0.01

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.max_fail

    最大失败次数(缺省为5

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.min_grad

    最小梯度要求(缺省为1e-10

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.show

    显示训练迭代过程(NaN表示不显示,缺省为25

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.time

    最大训练时间(缺省为inf

    traingdtraingdmtraingdatraingdxtrainrptraincgf、traincgptraincgbtrainscgtrainbfgtrainosstrainlm

    net.trainParam.mc

    动量因子(缺省0.9

    traingdmtraingdx

    net.trainParam.lr_inc

    学习率lr增长比(缺省为1.05

    traingdatraingdx

    net.trainParam.lr_dec

    学习率lr下降比(缺省为0.7

    traingdatraingdx

    net.trainParam.max_perf_inc

    表现函数增加最大比(缺省为1.04

    traingda、traingdx

    net.trainParam.delt_inc

    权值变化增加量(缺省为1.2

    trainrp

    net.trainParam.delt_dec

    权值变化减小量(缺省为0.5

    trainrp

    net.trainParam.delt0

    初始权值变化(缺省为0.07

    trainrp

    net.trainParam.deltamax

    权值变化最大值(缺省为50.0

    trainrp

    net.trainParam.searchFcn

    一维线性搜索方法(缺省为srchcha

    traincgf、traincgptraincgbtrainbfgtrainoss

    net.trainParam.sigma

    因为二次求导对权值调整的影响参数(缺省值5.0e-5

    trainscg

    net.trainParam.lambda

    Hessian矩阵不确定性调节参数(缺省为5.0e-7

    trainscg

    net.trainParam.men_reduc

    控制计算机内存/速度的参量,内存较大设为1,否则设为2(缺省为1

    trainlm

    net.trainParam.mu

    的初始值(缺省为0.001

    trainlm

    net.trainParam.mu_dec

    的减小率(缺省为0.1

    trainlm

    net.trainParam.mu_inc

    的增长率(缺省为10

    trainlm

    net.trainParam.mu_max

    的最大值(缺省为1e10

    trainlm

    2BP网络举例

    举例1

    %traingd
    clear;
    clc;
    P=[-1 -1 2 2 4;0 5 0 5 7];
    T=[-1 -1 1 1 -1];
    %利用minmax函数求输入样本范围
    net = newff(minmax(P),[5,1],{'tansig','purelin'},'trainrp');
     
    net.trainParam.show=50;%
    net.trainParam.lr=0.05;
    net.trainParam.epochs=300;
    net.trainParam.goal=1e-5;
    [net,tr]=train(net,P,T);
     
    net.iw{1,1}%隐层权值
    net.b{1}%隐层阈值
     
    net.lw{2,1}%输出层权值
    net.b{2}%输出层阈值
     
    sim(net,P)


     

    举例2、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

    样本数据:

    输入X

    输出D

    输入X

    输出D

    输入X

    输出D

    -1.0000

    -0.9602

    -0.3000

    0.1336

    0.4000

    0.3072

    -0.9000

    -0.5770

    -0.2000

    -0.2013

    0.5000

    0.3960

    -0.8000

    -0.0729

    -0.1000

    -0.4344

    0.6000

    0.3449

    -0.7000

    0.3771

    0

    -0.5000

    0.7000

    0.1816

    -0.6000

    0.6405

    0.1000

    -0.3930

    0.8000

    -0.3120

    -0.5000

    0.6600

    0.2000

    -0.1647

    0.9000

    -0.2189

    -0.4000

    0.4609

    0.3000

    -0.0988

    1.0000

    -0.3201

    解:

    看到期望输出的范围是,所以利用双极性Sigmoid函数作为转移函数。

    程序如下:

    clear;
    clc;
    X=-1:0.1:1;
    D=[-0.9602 -0.5770 -0.0729 0.3771 0.6405 0.6600 0.4609...
        0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 -.0988...
        0.3072 0.3960 0.3449 0.1816 -0.312 -0.2189 -0.3201];
    figure;
    plot(X,D,'*'); %绘制原始数据分布图(附录:1-1)
    net = newff([-1 1],[5 1],{'tansig','tansig'});
    net.trainParam.epochs = 100; %训练的最大次数
    net.trainParam.goal = 0.005; %全局最小误差
    net = train(net,X,D); 
    O = sim(net,X); 
    figure; 
    plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:1-2、1-3)
    V = net.iw{1,1}%输入层到中间层权值
    theta1 = net.b{1}%中间层各神经元阈值
    W = net.lw{2,1}%中间层到输出层权值
    theta2 = net.b{2}%输出层各神经元阈值

    所得结果如下:




     

    举例3、利用三层BP神经网络来完成非线性函数的逼近任务,其中隐层神经元个数为五个。

    样本数据:

    输入X

    输出D

    输入X

    输出D

    输入X

    输出D

    0

    0

    4

    4

    8

    2

    1

    1

    5

    3

    9

    3

    2

    2

    6

    2

    10

    4

    3

    3

    7

    1

     

     

    解:

    看到期望输出的范围超出,所以输出层神经元利用线性函数作为转移函数。

    程序如下:

    clear; 
    clc;
    X = [0 1 2 3 4 5 6 7 8 9 10];
    D = [0 1 2 3 4 3 2 1 2 3 4];
    figure;
    plot(X,D,'*'); %绘制原始数据分布图
    net = newff([0 10],[5 1],{'tansig','purelin'})
    net.trainParam.epochs = 100;
    net.trainParam.goal=0.005;
    net=train(net,X,D);
    O=sim(net,X);
    figure;
    plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:2-2、2-3)
    V = net.iw{1,1}%输入层到中间层权值
    theta1 = net.b{1}%中间层各神经元阈值
    W = net.lw{2,1}%中间层到输出层权值
    theta2 = net.b{2}%输出层各神经元阈值



    问题:以下是上证指数200922日到327日的收盘价格,构建一个三层BP神经网络,利用该组信号的6个过去值预测信号的将来值。

     

    日期

    价格

    日期

    价格

    2009/02/02

    2011.682

    2009/03/02

    2093.452

    2009/02/03

    2060.812

    2009/03/03

    2071.432

    2009/02/04

    2107.751

    2009/03/04

    2198.112

    2009/02/05

    2098.021

    2009/03/05

    2221.082

    2009/02/06

    2181.241

    2009/03/06

    2193.012

    2009/02/09

    2224.711

    2009/03/09

    2118.752

    2009/02/10

    2265.161

    2009/03/10

    2158.572

    2009/02/11

    2260.822

    2009/03/11

    2139.021

    2009/02/12

    2248.092

    2009/03/12

    2133.881

    2009/02/13

    2320.792

    2009/03/13

    2128.851

    2009/02/16

    2389.392

    2009/03/16

    2153.291

    2009/02/17

    2319.442

    2009/03/17

    2218.331

    2009/02/18

    2209.862

    2009/03/18

    2223.731

    2009/02/19

    2227.132

    2009/03/19

    2265.761

    2009/02/20

    2261.482

    2009/03/20

    2281.091

    2009/02/23

    2305.782

    2009/03/23

    2325.481

    2009/02/24

    2200.652

    2009/03/24

    2338.421

    2009/02/25

    2206.572

    2009/03/25

    2291.551

    2009/02/26

    2121.252

    2009/03/26

    2361.701

    2009/02/27

    2082.852

    2009/03/27

    2374.44

     

     

     

     

     

    load data3_1.txt;
    [m,n]=size( data3_1); 
    tsx = data3_1(1:m-1,1);
    tsx=tsx';
    ts = data3_1(2:m,1);
    ts=ts';
    [TSX,TSXps]=mapminmax(tsx,1,2);
    [TS,TSps]=mapminmax(ts,1,2);
    TSX=TSX';
     
     
    figure;
    plot(ts,'LineWidth',2);
    title('到杭旅游总人数(1999.01.01-2009.12.31)','FontSize',12);
    xlabel('统计年份(1990.12.19-2009.08.19)','FontSize',12);
    ylabel('归一化后的总游客数/万人','FontSize',12);
    grid on;
     
    % 生成BP网络、利用minmax函数求输入样本范围
    net_1=newff(minmax(TS),[10,1],{'tansig','purelin'},'traincgf')
     % 设置训练参数
    net_1.trainParam.show = 50;  %显示训练迭代过程(NaN表示不显示,缺省25)
    net_1.trainParam.lr = 0.025;     %学习率(缺省0.01)
    net_1.trainParam.mc = 0.9;   %动量因子(缺省0.9)
    net_1.trainParam.epochs = 10000; %最大训练次数
    net_1.trainParam.goal = 0.001;   %训练要求精度
     
     
    inputWeights=net_1.IW{1,1}  %输入层权值
    inputbias=net_1.b{1}         %输入层阈值 
    layerWeights=net_1.LW{2,1}  %输出层权值
    layerbias=net_1.b{2}         %输出层阈值
     
    TS',TSX
    % 网络训练 
    [net_1,tr]=train(net_1,TS,TSX);


     

     

     

    展开全文
  • ↑ 点击上方【计算机视觉联盟】关注我们深度学习三大巨头Geoffrey Hinton经典的《神经网络机器学习》课程。课程中详细介绍了神经网络的各种概念与特点,虽然来自于5...
        

    ↑ 点击上方【计算机视觉联盟】关注我们



    深度学习三大巨头Geoffrey Hinton经典的《神经网络机器学习》课程。课程中详细介绍了神经网络的各种概念与特点,虽然来自于5年前,但是是一份非常有意义的讲解。


    课程地址:

    https://www.cs.toronto.edu/~hinton/coursera_lectures.html

    640?wx_fmt=png


    课程目录

    640?wx_fmt=png


    PPT下载方式

    关注公众号后台回复关键词:

    20190117

    640?wx_fmt=gif

    声明:本文来源于网络

    如有侵权,联系删除

    热文荐读

    2018年12月精选文章目录一览

    亲身经历2019年校招8个大厂心得体会,纯干货分享(大疆、百度...)

    重磅!图森王乃岩团队最新工作—TridentNet:处理目标检测中尺度变化新思路
    GANs最新综述论文: 生成式对抗网络及其变种如何有用【附pdf下载】
    算法岗百里挑一热爆了,全球AI大厂薪酬大起底
    史上最全!计算机科学领域顶会最佳论文大合集:微软研究院最多,清华排24MIT的周博磊博士如何解释深度学习模型(附PPT)
    【资源下载】512页IBM沃森研究员Charu最新2018著作《神经网络与深度学习》(附下载链接)
    人工智能相关领域的国际顶尖会议介绍

    640?wx_fmt=gif

    展开全文
  • BP神经网络模型

    BP神经网络模型

    简介

    BP网络(Back-Propagation Network)是1986年被提出的,是一种按误差逆向传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一,用于函数逼近、模型识别分类、数据压缩和时间序列预测等。
    来源网络
    BP网络又称为反向传播神经网络,它是一种有监督的学习算法,具有很强的自适应、自学习、非线性映射能力,能较好地解决数据少、信息贫、不确定性问题,且不受非线性模型的限制。一个典型的BP网络应该包括三层:输入层、隐含层和输出层。(关于神经网络的基础术语等知识可以查看我之前的博客)各层之间全连接,同层之间无连接。隐含层可以有很多层,对于一般的神经网络而言,单层的隐含层已经足够了。上图是一个典型的BP神经网络结构图。

    学习过程

    正向传播

    输入信号从输入层经过各个隐含层向输出层传播从,在输出层得到实际的响应值,若实际值与期望值误差较大,就会转入误差反向传播阶段。

    反向传播

    按照梯度下降的方法从输出层经过各个隐含层并逐层不断地调整各神经元的连接权值和阈值,反复迭代,直到网络输出的误差减少到可以接受的程度,或者进行到预先设定的学习次数。

    BP神经网络通过有指导的学习方式进行训练和学习。标准的BP算法采用误差函数按梯度下降的方法学习,使网络的设计输出值和期望输出值之间的均方误差最小。BP神经网络的传输函数通常采用sigmoid函数,而输出层则采用线性传输函数。

    原理

    输入输出层的设计

    • 输入层
      • 输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元,它的节点数为输入变量的个数。
    • 输出层
      • 输出层向外界输出信息处理结果。它的节点个数为输出变量的个数。

    隐含层设计

    • 内部信息处理层,负责信息变换,根据信息变换能力的需求,中间层可以设计为单隐层或多隐层结构;最后一个隐含层传递信息到输出层各神经元,经过进一步处理后,完成一次学习的正向传播处理过程。
    • 有关研究表明,一个隐含层的神经网络,只要隐节点足够多,就可以以任意精度逼近一个非线性函数。因此,通常采用含有一个隐层的三层多输入单输出的BP神经网络建立预测模型。
    • 在网络设计过程中,隐层神经元数的确定十分重要。隐层神经元数目过多,会加大网络计算量并容易产生过度拟合问题;神经元数目过少,则会影响网络性能,达不到预期效果。网络中隐层神经元的数目与实际问题的复杂程度、输入和输出层的神经元数及对期望误差的设定有着直接的关系。目前,对于隐层的神经元数目的确定没有明确的公式,只有一些基于经验的公式,神经元的个数最终需要根据经验和多次试验确定。
      L=n+m+aL= \sqrt {n+m} + a
      其中,n为输入层神经元个数,m为输出层神经元个数,a为1到10之间的常数。

    BP算法改进

    虽然BP神经网络具有高度非线性和较强的泛化能力,但也存在收敛速度慢、迭代步数多、易陷入局部极小和全局搜索能力差等缺点。可以采用增加动量项、自适应调节学习率、引入陡度因子等方法进行改进。

    • 增加动量项
      • 加速算法收敛
      • wij=wijη1×δij×xi+αwijw_{ij} = w_{ij} - \eta_1 \times \delta_{ij}\times x_i + \alpha ∆w_{ij}
      • 其中,动量因子α\alpha一般为0.1~0.8。
    • 自适应调节率
    • 引入陡度因子

    实战

    案例使用神经网络预测公路运量。

    过程

    • 划分训练集和验证集
    • 建立模型,设定模型参数
    • 对模型进行训练并可视化损失函数变化
    • 模型验证并使用(观察预测值和真实值对比)

      可以看到,效果还是很显著的。
    # -*-coding:utf-8-*-
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    def logsig(x):
        """
        定义激活函数
        :param x:
        :return:
        """
        return 1/(1+np.exp(-x))
    
    
    def get_Data():
        """
        读入数据,转为归一化矩阵
        :return:
        """
        # 读入数据
        # 人数(单位:万人)
        population = [20.55, 22.44, 25.37, 27.13, 29.45, 30.10, 30.96, 34.06, 36.42, 38.09, 39.13, 39.99, 41.93, 44.59,
                      47.30, 52.89, 55.73, 56.76, 59.17, 60.63]
        # 机动车数(单位:万辆)
        vehicle = [0.6, 0.75, 0.85, 0.9, 1.05, 1.35, 1.45, 1.6, 1.7, 1.85, 2.15, 2.2, 2.25, 2.35, 2.5, 2.6, 2.7, 2.85, 2.95,
                   3.1]
        # 公路面积(单位:万平方公里)
        roadarea = [0.09, 0.11, 0.11, 0.14, 0.20, 0.23, 0.23, 0.32, 0.32, 0.34, 0.36, 0.36, 0.38, 0.49, 0.56, 0.59, 0.59,
                    0.67, 0.69, 0.79]
        # 公路客运量(单位:万人)
        passengertraffic = [5126, 6217, 7730, 9145, 10460, 11387, 12353, 15750, 18304, 19836, 21024, 19490, 20433, 22598,
                            25107, 33442, 36836, 40548, 42927, 43462]
        # 公路货运量(单位:万吨)
        freighttraffic = [1237, 1379, 1385, 1399, 1663, 1714, 1834, 4322, 8132, 8936, 11099, 11203, 10524, 11115, 13320,
                          16762, 18673, 20724, 20803, 21804]
    
        # 将数据转换成矩阵,并使用最大最小归一数据
        # 输入数据
        samplein = np.mat([population, vehicle, roadarea])  # 3*20
        # 得到最大最小值,方便归一
        sampleinminmax = np.array([samplein.min(axis=1).T.tolist()[0], samplein.max(axis=1).T.tolist()[0]]).transpose()
        # 输出数据
        sampleout = np.mat([passengertraffic, freighttraffic])  # 2*20
        # 得到最大最小值,方便归一
        sampleoutminmax = np.array([sampleout.min(axis=1).T.tolist()[0], sampleout.max(axis=1).T.tolist()[0]]).transpose()
        sampleinnorm = (2 * (np.array(samplein.T) - sampleinminmax.transpose()[0]) / (
                    sampleinminmax.transpose()[1] - sampleinminmax.transpose()[0]) - 1).transpose()
        sampleoutnorm = (2 * (np.array(sampleout.T).astype(float) - sampleoutminmax.transpose()[0]) / (
                    sampleoutminmax.transpose()[1] - sampleoutminmax.transpose()[0]) - 1).transpose()
    
        # 给输入样本添加噪声
        noise = 0.03 * np.random.rand(sampleoutnorm.shape[0], sampleoutnorm.shape[1])
        sampleoutnorm += noise
        return samplein, sampleout, sampleinminmax, sampleoutminmax, sampleinnorm, sampleoutnorm
    
    
    def model_create():
        """
        建立模型并训练
        :return:
        """
        maxepochs = 60000
        learnrate = 0.035
        errorfinal = 0.65 * 10 ** (-3)
        samnum = 20
        indim = 3
        outdim = 2
        hiddenunitnum = 8
        w1 = 0.5 * np.random.rand(hiddenunitnum, indim) - 0.1
        b1 = 0.5 * np.random.rand(hiddenunitnum, 1) - 0.1
        w2 = 0.5 * np.random.rand(outdim, hiddenunitnum) - 0.1
        b2 = 0.5 * np.random.rand(outdim, 1) - 0.1
    
        errhistory = []
        # 开始训练模型
        samplein, sampleout, sampleinminmax, sampleoutminmax, sampleinnorm, sampleoutnorm = get_Data()
        for i in range(maxepochs):
            hiddenout = logsig((np.dot(w1, sampleinnorm).transpose() + b1.transpose())).transpose()
            networkout = (np.dot(w2, hiddenout).transpose() + b2.transpose()).transpose()
            err = sampleoutnorm - networkout
            sse = sum(sum(err ** 2))
            errhistory.append(sse)
            if sse < errorfinal:
                break
            delta2 = err
            delta1 = np.dot(w2.transpose(), delta2) * hiddenout * (1 - hiddenout)
            dw2 = np.dot(delta2, hiddenout.transpose())
            db2 = np.dot(delta2, np.ones((samnum, 1)))
            dw1 = np.dot(delta1, sampleinnorm.transpose())
            db1 = np.dot(delta1, np.ones((samnum, 1)))
            w2 += learnrate * dw2
            b2 += learnrate * db2
            w1 += learnrate * dw1
            b1 += learnrate * db1
    
        # 绘制误差曲线图
        errhistory10 = np.log10(errhistory)
        minerr = min(errhistory10)
        plt.plot(errhistory10)
        plt.plot(range(0, i + 1000, 1000), [minerr] * len(range(0, i + 1000, 1000)))
        ax = plt.gca()
        ax.set_yticks([-2, -1, 0, 1, 2, minerr])
        ax.set_yticklabels([u'$10^{-2}$', u'$10^{-1}$', u'$10^{1}$', u'$10^{2}$', str(('%.4f' % np.power(10, minerr)))])
        ax.set_xlabel('iteration')
        ax.set_ylabel('error')
        ax.set_title('Error Histroy')
        plt.savefig('errorhistory.png', dpi=700)
        plt.close()
    
        # 实现仿真输出和实际输出对比图
        hiddenout = logsig((np.dot(w1, sampleinnorm).transpose() + b1.transpose())).transpose()
        networkout = (np.dot(w2, hiddenout).transpose() + b2.transpose()).transpose()
        diff = sampleoutminmax[:, 1] - sampleoutminmax[:, 0]
        networkout2 = (networkout + 1) / 2
        networkout2[0] = networkout2[0] * diff[0] + sampleoutminmax[0][0]
        networkout2[1] = networkout2[1] * diff[1] + sampleoutminmax[1][0]
    
        sampleout = np.array(sampleout)
    
        fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(12, 10))
        line1, = axes[0].plot(networkout2[0], 'k', marker=u'$\circ$')
        line2, = axes[0].plot(sampleout[0], 'r', markeredgecolor='b', marker=u'$\star$', markersize=9)
    
        axes[0].legend((line1, line2), ('simulation output', 'real output'), loc='upper left')
    
        yticks = [0, 20000, 40000, 60000]
        ytickslabel = [u'$0$', u'$2$', u'$4$', u'$6$']
        axes[0].set_yticks(yticks)
        axes[0].set_yticklabels(ytickslabel)
        axes[0].set_ylabel(u'passenger traffic$(10^4)$')
    
        xticks = range(0, 20, 2)
        xtickslabel = range(1990, 2010, 2)
        axes[0].set_xticks(xticks)
        axes[0].set_xticklabels(xtickslabel)
        axes[0].set_xlabel(u'year')
        axes[0].set_title('Passenger Traffic Simulation')
    
        line3, = axes[1].plot(networkout2[1], 'k', marker=u'$\circ$')
        line4, = axes[1].plot(sampleout[1], 'r', markeredgecolor='b', marker=u'$\star$', markersize=9)
        axes[1].legend((line3, line4), ('simulation output', 'real output'), loc='upper left')
        yticks = [0, 10000, 20000, 30000]
        ytickslabel = [u'$0$', u'$1$', u'$2$', u'$3$']
        axes[1].set_yticks(yticks)
        axes[1].set_yticklabels(ytickslabel)
        axes[1].set_ylabel(u'freight traffic$(10^4)$')
    
        xticks = range(0, 20, 2)
        xtickslabel = range(1990, 2010, 2)
        axes[1].set_xticks(xticks)
        axes[1].set_xticklabels(xtickslabel)
        axes[1].set_xlabel(u'year')
        axes[1].set_title('Freight Traffic Simulation')
    
        fig.savefig('simulation.png', dpi=500, bbox_inches='tight')
        plt.show()
    
    
    if __name__ == '__main__':
        model_create()
    

    补充说明

    参考书《Python3数据分析与机器学习实战》,具体数据集和代码可以查看我的GitHub,欢迎star或者fork。

    展开全文
  • 机器学习——BP神经网络

    千次阅读 2019-05-30 20:18:37
    1.BP神经网络的思想: BP 神经网络的基本思想就是根据梯度下降法不断更新,输入,输出权值得到的模型。 BP(back propagation)神经网络是非线性不确定性数学模型,是一种具有连续传递函数的多层前馈人工神经网络,...

    1.BP神经网络的思想:

    BP 神经网络的基本思想就是根据梯度下降法不断更新,输入,输出权值得到的模型。

    BP(back propagation)神经网络是非线性不确定性数学模型,是一种具有连续传递函数的多层前馈人工神经网络,训练方式是误差反向传播算法(BP 算法),并以均方误差最小化为目标不断修改网络的权值和阈值,最终能高精度地拟合数据。

     

    2.BP网络由输入层、隐含层和输出层3个神经层次组成,其拓扑结构如图

                                                                

    3.流程

    (1)工作信号的正向传播。网络在输入层将接收输入信号传递到隐含层,再经由隐含层传向输出层并在此生成输出信号,在这个过程中,工作信号只进行正向传播并且始终保持各层的阈值和权值固定不变,每一层神经元的状态只决定于上一层神经元的状态。若输出层得到的不是期望的输出,就转入过程(2);

    (2)误差信号的反向传播。误差信号指的是网络的实际输出与期望输出的差值,输出层得到误差信号后将它逐层向前传输形成误差信号的反向传播。在这一过程中,网络通过误差反馈调节修正各层的阈值和权值,从而达到网络的实际输出逐步逼近期望输出的目的。

    展开全文
  • 通过学习他们的底层网络结构和连接关系,向学生介绍了机器学习技术和数据挖掘工具,这些工具和数据挖掘工具易于揭示对社会,技术和自然世界的见解。 主题包括:食物链和金融市场的健壮性和脆弱性;...
  • 机器学习】广义回归神经网络(GRNN)的python实现

    万次阅读 多人点赞 2018-12-12 21:29:34
    机器学习】广义回归神经网络(GRNN)的python实现一、广义回归神经网络原理1.1、GRNN与PNN的关系2.2、GRNN的网络结构二、广义回归神经网络的优点与不足2.1、优点2.2、不足三、GRNN的python实现参考资料 ...
  • 吴恩达机器学习与深度学习作业目录 [图片已修复]

    万次阅读 多人点赞 2018-10-23 10:03:59
    3 吴恩达机器学习作业Python实现(三):多类分类和前馈神经网络 4 吴恩达机器学习作业Python实现(四):神经网络(反向传播) BP(反向传播)神经网络 5 吴恩达机器学习作业Python实现(五):偏差和方差 6 吴恩达机器...
  • 机器学习】RBF神经网络原理与Python实现

    万次阅读 多人点赞 2018-11-24 19:51:20
    机器学习】RBF神经网络原理与Python实现一、LSSVM数学原理1. 感知机2. SVM3. LSSVM4. LSSVM与SVM的区别二、LSSVM的python实现参考资料 一、LSSVM数学原理 1. 感知机 SVM是从感知机发展而来。假设有m个训练样本{...
  • 150讲轻松搞定Python网络爬虫

    万人学习 2019-05-16 15:30:54
    另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。   从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 ...
  • 机器学习之神经网络视频学习

    千人学习 2018-01-09 03:13:35
    神经网络是学好深度学习的前提要素,也是机器学习中的一个重要算法。本课程主要讲解神经元模型、权重、阈值、激活函数等定义,讲解感知机与多层网络,讲解误差逆传播算法,全局小和局部小的概念,讲解梯度寻优方法,...
  • BAT机器学习面试1000题系列(第1~305题)

    万次阅读 多人点赞 2017-09-28 11:37:49
    BAT机器学习面试1000题系列 整理:July、元超、立娜、德伟、贾茹、王剑、AntZ、孟莹等众人。本系列大部分题目来源于公开网络,取之分享,用之分享,且在撰写答案过程中若引用他人解析则必注明原作者及来源链接...
  • 1.背景以人脑中的神经网络为启发,前者加生物神经网络,最著名的算法是1980年的 backpropagation 2多层向前神经网络(Multilayer Feed-Forward Neural Network)2.1 Backpropagation被使用在多层向前神经网络上2.2 多层...
  • 神经网络机器学习笔记

    千次阅读 2015-04-15 19:50:06
    导言 神经元模型 激活函数类型
  • 机器学习】神经网络做数据分类

    万次阅读 2019-12-19 12:07:09
    神经网络做数据分类 问题描述 给定两个范围在[-1, 1]之间的数字[x1, x2],求落在[-0.5, 0.5]之间的数字个数 思路 构建一个神经网络,包含若干层,将一系列训练数据输入训练参数进行预测 神经网络的每层用一个Relu...
  • 原理[机器学习]机器学习笔记整理10- 神经网络算法1. 关于非线性转化方程(non-linear transformation function)sigmoid函数(S 曲线)用来作为activation function: 1.1 双曲函数(tanh) 1.2 逻辑函数(logistic ...
  • 前言本文基于R实现BP神经网络用以预测,输入属性有三个,输出属性一个,隐藏层设置20个神经元,数据如下:代码library(grid)  library(MASS) library(neuralnet) #加载相应的程序包,这里用的是neuralnet,还可以用...
  • 本来这篇还缺个RBM,但RBM在DBN中使用,暂时放在深度学习那里。这里看到一篇非常好的总结,保存下来。 转自:http://blog.csdn.net/fengbingchun/article/details/50274471 本文主要对人工神经网络基础进行了描述...
  • 机器学习:贝叶斯网络入门

    千次阅读 2016-04-02 16:57:46
    作为一种基于概率的不确定性推理方法,贝叶斯网络在处理不确定信息的智能化系统中已得到了重要的应用,已成功地用于医疗诊断、统计决策、专家系统、学习预测等领域。它有几个特性 1、贝叶斯网络本身是一种不定性...
  • 神经网络的动机感知器的线性融合前面我们知道了将简单的模型进行融合之后会得到一个非常强大的模型。我们试着将感知器(简单的二元分类模型)做线性融合之后得到下图:其中每一个节点都是一个感知器,其第一层的感知...
  • 一、BP神经网络的概念 二、BP神经网络
  • 系统学习机器学习之神经网络(四) --SOM

    万次阅读 多人点赞 2016-12-05 10:29:28
    转自:...本文详细介绍一下自组织神经网络概念和原理,并重点介绍一下自组织特征映射SOM网络。SOM和现在流行的ANN(MLP)模型在结构上类似,都由非常简单的神经元结构组成,但是SOM是一类“无...
  • 机器学习】深度神经网络实践

    万次阅读 2019-12-19 12:07:14
    深度神经网络实践 优化 Regularization 在前面实现的RELU连接的两层神经网络中,加Regularization进行约束,采用加l2 norm的方法,进行负反馈: 代码实现上,只需要对tf_sgd_relu_nn中train_loss做修改即可: 可以...
  • 机器学习】全连接神经网络

    万次阅读 2019-12-19 12:06:41
    全连接神经网络 Linear Model 加载lesson 1中的数据集 将Data降维成一维,将label映射为one-hot encoding def reformat(dataset, labels): dataset = dataset.reshape((-1, image_size * image_size)).astype(np....
  • 神经网络机器学习基础入门分享

    万次阅读 2015-11-03 05:16:35
    本文主要讲述了机器学习的一些入门知识以及神经网络的基础概念,同时引入了很多例子进行讲解。 机器学习方法是计算机利用已有的数据(经验),得出了某种模型(迟到的规律),并利用此模型预测未来(是否迟到)的一种方法...
  • 经过一段时间的积累,对于神经网络,已经基本掌握了感知器、BP算法及其改进、AdaLine等最为简单和基础的前馈型神经网络知识,下面开启的是基于反馈型的神经网络Hopfiled神经网络。前馈型神经网络通过引入隐层及非...
  • 机器学习——BP神经网络模型

    万次阅读 2016-04-26 19:04:46
    BP网络学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型...
  • 自适应线性神经网络:ADAptive LInear NEuron (Adaline) 大纲 1. look --- 比Rosenblatt感知器算法的优势 2. write --- 吐槽实验结果 3. code --- python 对比Rosenblatt 憋说话,先上图 -.- Rosen
  • 联想记忆网络的研究是神经网络的重要分支,在各种联想记忆网络模型中,由B·Kosko于1988年提出的双向联想记忆(Bidirectional Associative Memory,BAM)网络的应用最为广泛。前面介绍过的Hopfiled网络可实现自联想...
  • 这里先介绍GrossBerg网络是因为后面CPN中,输出层会用到GrossBerg网络,所以,先做些简单说明。 1.生物学启发   Grossberg网络是受到了人类视觉系统的生理学研究的启发 如图,视网膜是大脑的一部分,它由三层神经...
  • 机器学习——DBN深度信念网络详解

    万次阅读 2016-08-11 16:48:02
    使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络。...使用层叠波尔兹曼机组成深度神经网络的方法,在深度学习里被称作深度信念网络DBN,这是目前非常流行的方法。

空空如也

1 2 3 4 5 ... 20
收藏数 27,305
精华内容 10,922
关键字:

网络机器学习