机器学习(19)---神经网络详解

news2024/11/24 3:57:50

神经网络

  • 一、神经网络概述
    • 1.1 神经元模型
    • 1.2 激活函数
  • 二、感知机
    • 2.1 概述
    • 2.2 实现逻辑运算
    • 2.3 多层感知机
  • 三、神经网络
    • 3.1 工作原理
    • 3.2 前向传播
    • 3.3 Tensorflow实战演示
      • 3.3.1 导入数据集查看
      • 3.3.2 数据预处理
      • 3.3.3 建立模型
      • 3.3.4 评估模型
  • 四、反向传播
  • 五、例题
    • 5.1 题1
    • 5.2 题2


一、神经网络概述

1.1 神经元模型

 1. 这里采用最广泛一种定义:神经网络是由适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

 2. 定义中的 “简单单元” 是神经网络中最基本的成分,叫神经元模型。目前一直沿用至今的是 “M-P神经元模型”。

在这里插入图片描述

 3. 在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值与神经元的阈值进行比较,然后通过 “激活函数” 处理以产生神经元的输出。

1.2 激活函数

 1. 神经网络中的激活函数是一种非线性函数,它被应用于神经元的输出,以便引入非线性特性。激活函数的作用是对输入信号进行转换,使其能够更好地适应复杂的数据模式。

 2. 理想中的激活函数是阶跃函数,它将输入值映射为输出值“ 0 ”和“ 1 ”,显然 " 1 " 对应于神经元兴奋 " 0 " 对应于神经元抑制。然而阶跃函数具有不连续、不光滑等不太好的性质,因此常用Sigmoid函数作为激活函数。它把可能在较大范围内变化的输入值挤压到 (0,1) 输出值范围内,因此有时也称为 " 挤压函数 " (squashi functio)。

在这里插入图片描述
 3. 不要在隐藏层中使用线性激活函数;通常在隐藏层中使用ReLu激活函数。

在这里插入图片描述

二、感知机

2.1 概述

 1. 感知机 (Perceptron)由两层神经元组成,输入层接收外界输入信号后传递给输出层, 输出层是M-P神经元,亦称"阔值逻辑单元" (threshold logic unit)。

在这里插入图片描述
 2. (手写)感知机的学习方法:

在这里插入图片描述

2.2 实现逻辑运算

 1. 感知机能实现基本逻辑运算:与、或、非。 注意:需要我们选取正确的参数!
 如下图所示:我们拿与来举例子,当x1和x2只有同时取1时,输出结果才会为1;如果有一个或者两个都取0,则输出结果为0,实现了与的逻辑运算。

在这里插入图片描述

 2. 但是单层感知机不能实现异或运算。

2.3 多层感知机

 1. 多层感知机有多层神经元,输出层与输入层之间的一层神经元,被称为隐居或隐含层(hidden laye),隐含层和输出层神经元都是拥有激活函数的功能神经元。

在这里插入图片描述

 2. 多层感知机因为可以有多个隐层,所以可以实现异或运算。

 3. 多层感知机有强大的表示能力,只需一个包含足够多神经元的隐层, 多层感知机就能以任意精度逼近任意复杂度的连续函数。多层感知机可以有多个隐层,每个隐层提取的特征不一样,越深(越靠近输出层)的隐层能够提取更高层的特征。

在这里插入图片描述
在这里插入图片描述

三、神经网络

3.1 工作原理

 1. 原理可归结为:每一层输入一个数字向量并对其应用一堆逻辑回归单元,然后计算另一个数字向量(这一层的输出作为下一层的输入),然后从一层传递给另一层,直到到达最终的输出层。之后的输出结果可以进行预测也可以不进行预测。

 2. 简单神经网络模型的工作原理解析:

在这里插入图片描述

:a、w、b右上角方括号里的数字代表是第几层,右下角数字表示是该层的第几个神经元。

 3. 从简单到复杂,多层神经网络的工作原理和上叙是一样的。我们以一个四层网络为例子:

在这里插入图片描述

:一般说到多层的神经网络时,它包括输出层和所有的隐含层,不包括输入层。

3.2 前向传播

 神经网络在训练和计算时采用了前向传播的算法(从左往右)。

在这里插入图片描述

3.3 Tensorflow实战演示

3.3.1 导入数据集查看

 MNIST数据集,由 60000 张训练图像和 10000 张测试图像以及表示图像中存在的数字的标签组成。每个图像由 28×28 个灰度像素表示,这里直接调用API即可。

import tensorflow as tf
import matplotlib.pyplot as plt

mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 查看整体情况
print("train_images shape: ", train_images.shape)
print("train_labels shape: ", train_labels.shape)
print("test_images shape: ", test_images.shape)
print("test_labels shape: ", test_labels.shape)

# 展示前9个图像
fig = plt.figure(figsize=(10, 10))

nrows = 3
ncols = 3
for i in range(9):
    fig.add_subplot(nrows, ncols, i + 1) #行数、列数、索引
    plt.imshow(train_images[i])
    plt.title("Digit: {}".format(train_labels[i]))
    plt.axis(False)
plt.show()

在这里插入图片描述

3.3.2 数据预处理

 因为里面有数字,防止模型将数字当作数值处理,我们的目的是识别数字而非有大小之分的数值因此标记独一标签。

train_images = train_images / 255
test_images = test_images / 255

print("First Label before conversion:")
print(train_labels[0]) #5

# 转换成One-hot标签
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)

print("First Label after conversion:")
print(train_labels[0]) #[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]

3.3.3 建立模型

 1. 展平层:我们的输入图像是 2D 数组。展平层通过逐行解堆叠将 2D 数组(28 x 28 像素)转换为 1D 数组(像素)。该层只是更改数据形状,不会学习任何参数/权重,28*28=784;隐藏层:我们唯一的隐藏层由一个完全连接的节点(或神经元)密集层组成,每个节点(或神经元)都有激活功能,512relu输出层:神经网络的输出层由一个具有 10 个输出神经元的密集层组成,每个神经元输出 10 个概率,每个概率为 0 – 9,表示图像是相应数字的概率。输出层被赋予激活函数,以将输入激活转换为概率,softmax

 2. 损失函数:这告诉我们的模型如何找到实际标签和模型预测的标签之间的误差。该指标衡量我们的模型在训练期间的准确性。我们希望模型最小化此函数值。我们将为我们的模型使用损失函数;优化:这告诉我们的模型如何通过查看数据和损失函数值来更新模型的权重/参数。我们将为我们的模型使用优化器adam;指标(可选):它包含用于监视训练和测试步骤的指标列表。我们将使用准确性或模型正确分类的图像数量。

### 设置图层
model = tf.keras.Sequential([
  # 展平层
  tf.keras.layers.Flatten(),
  # 隐藏层
  tf.keras.layers.Dense(units=512, activation='relu'),
  # 输出层
  tf.keras.layers.Dense(units=10, activation='softmax')
])

### 编译模型
model.compile(
  loss = 'categorical_crossentropy',
  optimizer = 'adam',
  metrics = ['accuracy']
)

3.3.4 评估模型

 1. 可视化损失性:

在这里插入图片描述

 2. 可视化准确性:

在这里插入图片描述

四、反向传播

 1. 这里我们采用每层1个单元的多层感知机做介绍。下图W和B中的K代表省略的值。

在这里插入图片描述

 2. 反向传播计算中实际上是对每个参数求梯度下降。那求梯度下降关键是求损失函数对每个参数的偏导。

在这里插入图片描述

 3. 推导过程:

在这里插入图片描述
 4. 总结反向传播:从最后一层开始求每个参数的偏导,并将每层求得的部分偏导值(误差),反向传播给上一层,以方便求上一层参数的偏导。

五、例题

5.1 题1

在这里插入图片描述
在这里插入图片描述

5.2 题2

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1041037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt/C++音视频开发56-udp推流和拉流/组播和单播推流

一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流&a…

Linux DataEase数据可视化分析工具结合cpolar实现远程访问

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务…

2023-油猴(Tampermonkey)脚本推荐

2023-油猴(Tampermonkey)脚本推荐 知乎增强 链接 https://github.com/XIU2/UserScript https://greasyfork.org/zh-CN/scripts/419081 介绍 移除登录弹窗、屏蔽首页视频、默认收起回答、快捷收起回答/评论(左键两侧)、快捷回…

HTML+CSS综合案例二:CSS简介

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title> CSS简介</title><style>h1{color: #33…

Linux安装Mysql主从集群(图文解说详细版)

MySQL主从集群是一种数据库架构模式&#xff0c;由一个主数据库&#xff08;Master&#xff09;和多个从数据库&#xff08;Slave&#xff09;组成。在主从集群中&#xff0c;主数据库负责处理写操作&#xff08;如插入、更新、删除&#xff09;&#xff0c;而从数据库则用于读…

蓝桥杯每日一题2023.9.23

4961. 整数删除 - AcWing题库 题目描述 分析 注&#xff1a;如果要进行大量的删除操作可以使用链表 动态求最小值使用堆&#xff0c;每次从堆中取出最小值的下标然后在链表中删除 注意long long 代码解释&#xff1a; while(k --){auto t q.top();q.pop();res t.first;i…

【二分图染色】ARC 165 C

C - Social Distance on Graph 题意&#xff1a; 思路&#xff1a; 首先考虑一条链的情况&#xff0c;注意到如果两条相邻的边加起来 < x&#xff0c;一定不行 这个结论推广到图也是一样的 同时注意到 x 具有单调性&#xff0c;考虑对 x 二分 在check时进行二分图染色 …

Linux知识点 -- 网络基础 -- 传输层

Linux知识点 – 网络基础 – 传输层 文章目录 Linux知识点 -- 网络基础 -- 传输层一、传输层协议1.端口号2.网络相关bash命令 二、UDP协议1.UDP报文的解包与交付2.理解UDP报文3.UDP协议的特点4.UDP应用层IO类接口5.UDP的缓冲区6.UDP使用注意事项7.基于UDP的应用层协议 三、TCP协…

SpringMVC 学习(二)Hello SpringMVC

3. Hello SpringMVC (1) 新建 maven 模块 springmvc-02-hellomvc (2) 确认依赖的导入 (3) 配置 web.xml <!--web/WEB-INF/web.xml--> <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee…

简述信息论与采样定理

信息论 香农信息论发表于1948/1949年&#xff0c;它由三部分组成&#xff1a;信号采样、信源编码、信道编码&#xff1b; 信号采样&#xff1a;采样理论研究在何种条件下对连续信号进行采样&#xff0c;从而得到的离散型号可以可逆地恢复出采样前的连续信号。采样得到的离散实…

网络安全--防火墙旁挂部署方式和高可靠性技术

目录 一、防火墙 二、防火墙旁挂部署方式 使用策略路由实现 第一步、IP地址配置 第二步、配置路由 第三步、在防火墙上做策略 第四步、在R2上使用策略路由引流 三、防火墙高可靠性技术--HRP 拓扑图 第一步、配置SW1、SW2、FW1、FW2 第二步、进入防火墙Web页面进行配…

分布式网络在移动医疗场景中的应用

随着医疗信息化建设实践的深入&#xff0c;越来越多的医疗机构开始借助网络信息技术改善其运营及管理模式&#xff0c;为患者提供更高质量、更高效率、更加安全体贴的医疗服务。移动医疗便是在此背景下产生的新业务需求。 常见的移动医疗场景 住院部&#xff1a;移动查房、智…

【好文推荐】openGauss 5.0.0 数据库安全——全密态探究

前言 写此文章的目的&#xff0c;主要是验证&#xff1a; openGauss 5.0.0 数据库能够实现哪种加密方式的全密态全密态数据库的特点 一、全密态介绍 全密态数据库意在解决数据全生命周期的隐私保护问题&#xff0c;使得系统无论在何种业务场景和环境下&#xff0c;数据在传…

Spring面试题23:Spring支持哪些事务管理类型?Spring框架的事务管理有哪些优点?你更倾向用哪种事务管理类型?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持哪些事务管理类型? Spring 支持以下几种事务管理类型: 编程式事务管理:通过在代码中显式地使用事务管理 API(如 TransactionTempla…

AMEYA360:瑞萨电子整合Reality AI工具与e² studio IDE,扩大其在AIoT领域的卓越地位

全球半导体解决方案供应商瑞萨电21日宣布已在其Reality AI Tools?和e2 studio集成开发环境间建立接口&#xff0c;使设计人员能够在两个程序间无缝共享数据、项目及AI代码模块。实时数据处理模块已集成至瑞萨MCU软件开发工具套件&#xff08;注&#xff09;&#xff0c;以方便…

腾讯mini项目-【指标监控服务重构】2023-08-26

今日已办 Venus 的 Trace 无感化 定义 handler 函数 fiber.Handler 的主要处理逻辑返回处理中出现的 error返回处理中响应 json 的函数 // handler // Description: // Author xzx 2023-08-26 18:00:03 // Param c // Return error // Return func() error : function for …

【Redis】记录一次K8S存储故障导致Redis集群拓扑异常的修复过程

文章目录 背景处理新节点遗忘旧节点 背景 集群部署在K8S环境内&#xff0c;存储使用的localpv&#xff0c;有一台K8S主机节点磁盘故障&#xff0c;导致在该节点上的redis节点均出现故障&#xff0c;主要表现为持久化失败、集群拓扑异常&#xff0c;持久化失败可以临时关闭RDB和…

Python:pyts库中的GramianAngularField

您想要使用pyts库中的GramianAngularField类&#xff0c;这是一个用于时间序列数据图像转换的工具。要使用这个类&#xff0c;首先确保您已经安装了pyts库。如果尚未安装&#xff0c;您可以使用以下命令来安装它&#xff1a; pip install pyts一旦安装完成&#xff0c;您可以通…

sql分词查询,实现类似ES的效果

需求&#xff1a;希望通过缩写查询到全称&#xff0c;列如输入常州一院&#xff0c;要得到常州市第一人民医院。 1、创建全文索引 # 创建全文索引 create FULLTEXT INDEX ft_hospitalname ON hospital_information(hospitalname) with parser ngram;2、编写查询sql # 自然语…

计算机专业毕业设计项目推荐09-个人医疗系统(Spring+Js+Mysql)

个人医疗系统&#xff08;SpringJsMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及…