IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> BP神经网络原理与异或实例分析 -> 正文阅读

[人工智能]BP神经网络原理与异或实例分析


BP神经网络原理介绍


BP神经网络算法(Back-Propagation Neural Network)

一、BP神经网络算法原理是什么?

人类大脑是有多个相互链接的神经元组成,通过视觉、触觉、嗅觉等输入信号,经过人类大脑神经元的多次处理,我们人类可以做出某种判定(或反应),受人类大脑神经元的启发,我们提出了神经网络算法模型。
如下图所示:
输入层x(x1~xn)相当于我们的感知信号(视觉、嗅觉、触觉等)。
隐含层就是神经元的处理。
经过神经元的处理得到某种判定(反应)就是结果输出层。

三层神经网络模型
在介绍BP神经网络实例之前,理解一下神经网络得灵魂_激活函数。

二、激活函数

1.激活函数作用

激活函数作用:在于如何来激活输入信号得总和,对于下图感知机来说:
感知机
如上图感知机,输入x1,x2,偏置值b,来计算信号总和a通过阈值计算预测值。
a=w1+w2+b
y=h(a)
感知机的激活函数**(阶跃函数)**:以阈值为界,一旦输入超出阈值,就切换输出。
在神经网络中,激活函数都是非线性函数(如果激活函数是线性函数,无论如何加深层数,效果都将等同“无隐含层的神经网路”),最常用的非线性激活函数有:sigmoid函数,如果不懂激活该函数作用请参考:深度学习之魂之神经网络激活函数。

三、BP神经网络异或实例分析

1.问题:

相同为0不同为1。
例如:
输入:【0,0】、【0,1】、【1,0】、【1,1】经过异或判定,输出0或1;

2.分析:

通过BP神经网络实现首先明确输入参数2个。偏置值参数1个。则输入层参数共3个,假设隐藏层有4个,输出层只有一个,输入层与隐藏层权值为V【V0-V3】,隐藏层与输出层权值W[W0-W3]。通过权值可以计算y0-y3,如下图所示:
在这里插入图片描述
如上图所示,每个输入层和隐藏层都有一个权重,则共有12个权重值V,和4和权重值W。则输出O可表示为:
在这里插入图片描述

3.代码

import numpy as np

# import matplotlib.pyplot as plt

# 导入数据
X = np.array([[1, 0, 0],
              [1, 0, 1],
              [1, 1, 0],
              [1, 1, 1]
              ])
# 标签
Y = np.array([[0, 1, 1, 0]])
# 输入层和隐藏层权值V、隐藏层和输出层之间的权值W初始化,取值范围-1到1
V = np.random.random((3, 4)) * 2 - 1
W = np.random.random((4, 1)) * 2 - 1
print(V, W)
# 学习率设置
lr = 0.11

# 定义sigmoid激活函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

#定义sigmoid函数导数
def dsigmoid(x):
    return x * (1 - x)

#设置更新权值,更新权值理论推导可参照《神经网络导论》
def update():
    global X, Y, W, V, lr
    L1 = sigmoid(np.dot(X, V))  # 隐藏层的输出(4,4)
    L2 = sigmoid(np.dot(L1, W))  # 输出层输出(4,1)

    L2_delta = (Y.T - L2) * dsigmoid(L2)
    L1_delta = L2_delta.dot(W.T) * dsigmoid(L1)

    W_C = lr * L1.dot(L2_delta)
    V_C = lr * X.T.dot(L1_delta)

    W = W + W_C
    V = V + V_C


for i in range(20000):
    update()  # 更新权值
    if i % 500 == 0:
        L1 = sigmoid(np.dot(X, V))  # 隐藏层输出(4,4)
        L2 = sigmoid(np.dot(L1, W))  # 输出层输出(4,1)
        print('Error:', np.mean(np.abs(Y.T - L2)))

L1 = sigmoid(np.dot(X, V))  # 隐藏层输出(4,4)
L2 = sigmoid(np.dot(L1, W))  # 输出层输出(4,1)
print(L2)

运行结果:
异或
异或

该处使用的url网络请求的数据。


总结

学习了BP神经网络的后向反馈机制,通过实例更加清晰神经网络使用,神经网络推到还需进一步了解。
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:21:53  更:2021-09-02 11:22:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:38:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码