美文网首页机器学习实战
深度学习——BP算法

深度学习——BP算法

作者: 飘涯 | 来源:发表于2018-05-21 10:01 被阅读35次

前言:从感知器开始引出神经元,感知器中的激活函数进行改进,引入全连接神经网络,只要并且重点介绍一下BP神经网络

感知器神经网络

也就01分类器,给定阈值,解决二分类问题。类似于前面提到的二值化,例如:对分数就行排名的时候通常让大于60分的认定为“及格”。至于添加大于八十分为“优秀”只需要在添加一个感知器即可,由于神经网络模拟的是人的思考过程,既给定一个输入,会产生一个输出,人的决策过程是众多神经元的结果,下面就来分析简单的感知器神经网络对分类产生的结果。人脑分布如下下图:


  • 神经元
    前面已经提到过,现在简单附属一下。既,输入、输出、激活函数。


  • 感知器
    就是当激活函数返回值为两个值时候为感知器



    缺点:
    由于输出结果为固定的两个值,当就行参数优化的时候,要么输出不变,要么输出突然变化,参数优化不容易实现,所以通常用sigmoid函数作为激活函数

线性神经网络

可以做多分类问题
添加少量隐层的神经网络就叫做浅层神经网络;也叫作传统神经网络, 一般为2隐层的神经网络。
用sigmoid的缺点是同城隐层只能是两层,由于激活函数特殊的限制,通常在迭代求导的过程中,sigmoid函数的导数会向零方向逼近,造成“死神经元”



tanh函数效果好一点,可任然解决不了隐层多的问题,引入relu函数

BP神经网络

神经网络的一种求解W的算法,分为信号“正向传播(FP)”求损失,“反向 传播(BP)”回传误差;根据误差值修改每层的权重,继续迭代



分别求出
输出层误差


隐层的误差


输入层误差



用代码来实现BP算法的过程如下:

import numpy as np

w = [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65]
# 偏置项b不进行更新
b = [0.35, 0.65]
l = [-5, 10]


def sigmoid(z):
    return 1.0 / (1 + np.exp(-z))


def f1(w, b, l):
    # 前向传播,计算结果值
    h1 = sigmoid(w[0] * l[0] + w[1] * l[1] + b[0])
    h2 = sigmoid(w[2] * l[0] + w[3] * l[1] + b[0])
    h3 = sigmoid(w[4] * l[0] + w[5] * l[1] + b[0])

    o1 = sigmoid(w[6] * h1 + w[8] * h2 + w[10] * h3 + b[1])
    o2 = sigmoid(w[7] * h1 + w[9] * h2 + w[11] * h3 + b[1])

    # 后向传播,更新w
    t1 = -(0.1 - o1) * o1 * (1 - o1)
    t2 = -(0.99 - o2) * o2 * (1 - o2)

    w[6] = w[6] - 0.5 * (t1 * h1)
    w[8] = w[8] - 0.5 * (t1 * h2)
    w[10] = w[10] - 0.5 * (t1 * h3)
    w[7] = w[7] - 0.5 * (t2 * h1)
    w[9] = w[9] - 0.5 * (t2 * h2)
    w[11] = w[11] - 0.5 * (t2 * h3)

    w[0] = w[0] - 0.5 * (t1 * w[6] + t2 * w[7]) * h1 * (1 - h1) * l[0]
    w[1] = w[1] - 0.5 * (t1 * w[6] + t2 * w[7]) * h1 * (1 - h1) * l[1]
    w[2] = w[2] - 0.5 * (t1 * w[8] + t2 * w[9]) * h2 * (1 - h2) * l[0]
    w[3] = w[3] - 0.5 * (t1 * w[8] + t2 * w[9]) * h2 * (1 - h2) * l[1]
    w[4] = w[4] - 0.5 * (t1 * w[10] + t2 * w[11]) * h3 * (1 - h3) * l[0]
    w[5] = w[5] - 0.5 * (t1 * w[10] + t2 * w[11]) * h3 * (1 - h3) * l[1]

    return o1, o2, w


for i in range(1001):
    r1, r2, w = f1(w, b, l)
    print("第{}次迭代后,结果值为:({},{}),权重更新为:{}".format(i, r1, r2, w))

输出结果:

第1000次迭代后,结果值为:(0.09996083954832574,0.9778184034399262),权重更新为:[-0.030672263069416547, 0.41134452613883266, 0.09476393030400698, 0.4604721393919862, 0.20319883709854172, 0.5436023258029161, -0.9980730809431909, 0.9438220932399313, -0.8629482660589612, 1.0419668423034139, -1.0146000749780355, 1.181504874794456]




相关文章

  • TensorFlow系列专题(五):BP算法原理

    一.反向传播算法 反向传播算法[1](Backpropagation Algorithm,简称BP算法)是深度学习...

  • 2019-07-25 深度学习

    机器学习 - 神经网络 - 深度学习 图像 文本 语音 深度学习算法比机器学习都要好很多bp算法:多层感知器的误差...

  • 17 BP神经网络算法原理推导和数据演示

    反向传播算法(BackpropagationAlgorithm,简称BP算法)是深度学习的重要思想基础,对于初学者...

  • 反向传播算法

    反向传播算法(Backpropagation Algorithm,简称BP算法)是深度学习的重要思想基础,本文将介...

  • 深度学习——BP算法

    前言:从感知器开始引出神经元,感知器中的激活函数进行改进,引入全连接神经网络,只要并且重点介绍一下BP神经网络 感...

  • 深度学习 BP算法

    J节点的图示image.png注意图中 a的含义image.png这里的传递参数,选择很多,如sigmoid函数就...

  • 2018暑假学习笔记

    一、深度学习兴起背景 1. BP(back propagation)算法 (1969) 论文:Learning r...

  • BP神经网络的梳理

    一 BP 神经网络简介 (1)BP神经网络在深度学习的地位 BP神经网络被称为“深度学习之旅的开端”,是神经网络的...

  • 神经网络的初步构建

    神经网络算法几乎成为深度学习的代名词,未解决不同的场景问题,新的算法层出不穷,而BP(Back Propagati...

  • 深度学习 - 前向传播和反向传播

    英文原文深度学习---反向传播的具体案例BP(反向传播算法)公式推导及例题解析 前向传播 input ->输入到-...

网友评论

    本文标题:深度学习——BP算法

    本文链接:https://www.haomeiwen.com/subject/eugidftx.html