神经网络与深度学习——第4章 前馈神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第4章 前馈神经网络

前馈神经网络

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

神经元

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

Sigmoid型函数

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

Hard-Logistic函数和Hard-Tanh函数

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

ReLU函数

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

带泄露的ReLU

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

带参数的ReLU

在这里插入图片描述

ELU函数

在这里插入图片描述

Softplus函数

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

Swish函数

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

GELU函数

在这里插入图片描述

Maxout单元

在这里插入图片描述

网络结构

在这里插入图片描述

前馈网络

在这里插入图片描述

记忆网络

在这里插入图片描述

图网络

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

前馈神经网络

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

通用近似定理

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

应用到机器学习

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

参数学习

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

反向传播算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以实际上反向传播类似于动态规划,一般来说对所有神经元都需要单独进行链式法则求梯度,但反向传播从最后一层向前传,防止重复计算,提高了计算效率,而且这种计算是自动的(下节的自动梯度计算)。

自动梯度计算

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

数值微分

在这里插入图片描述

符号微分

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

自动微分

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里解释了,对于一般的函数形式 f : R N → R M f:R^N \rightarrow R^M f:RNRM,前向模式需要对每一个输入变量都进行一遍遍历,共需要 N N N遍,而反向模式需要对每一个输出进行遍历,共需要 M M M遍,当 N > M N>M N>M时,反向模式更高效。在前馈神经网络的参数学习中,风险函数为 f : R N → R f:R^N \rightarrow R f:RNR,输出为标量,因此采用反向模式时最有效的计算方式,只需要一遍计算。
在这里插入图片描述

优化问题

在这里插入图片描述

非凸优化问题

在这里插入图片描述

梯度消失问题

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

总结和深入阅读

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

习题

在这里插入图片描述
如果进行0均值化,那么输入的 x \bm x x要么大于0要么小于0,在0附近,sigmoid函数的导数在0附近是最大的,所以收敛速度很快。当输入恒大于0的时候,均值肯定大于0,那么有可能就到了sigmoid函数的平缓部分,所以收敛速度更慢。
在这里插入图片描述
XOR问题即异或问题,有 0 X O R 0 = 0 0 XOR 0 = 0 0XOR0=0 0 X O R 1 = 1 0 XOR 1 = 1 0XOR1=1 1 X O R 0 = 1 1 XOR 0 = 1 1XOR0=1 1 X O R 1 = 0 1 XOR 1 = 0 1XOR1=0,分类时就必须把(0,1)、(1,0)分为类别1,把(0,0)、(1,1)分为类别0,可以看到这是线性不可分的,那么用一个前馈神经网络来解决这个问题,
在这里插入图片描述
代码实现如下:

import torch
from torch import nn

class XOR(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear1 = nn.Linear(2, 2)
        self.linear2 = nn.Linear(2, 1)
        self.relu = nn.ReLU()
        self.sigmoid = nn.Sigmoid()

    def forward(self, x):
        x = self.linear1(x)
        x = self.relu(x)
        x = self.linear2(x)
        x = self.sigmoid(x)
        return x

model = XOR()
learning_rate = 0.1
epochs = 1000
loss_function = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)

input = torch.tensor([[0, 0], [0, 1.0], [1, 0], [1, 1]])
target = torch.tensor([[0], [1], [1.0], [0]])

for epoch in range(epochs):
    optimizer.zero_grad()
    output = model(input)
    loss = loss_function(output, target)
    loss.backward()
    optimizer.step()

input_test = input
output_test = model(input_test)
print("input_x", input_test.flatten())
print("output_y", [(lambda x: 1 if x > 0.5 else 0)(x) for x in output_test])

结果为:

input_x tensor([0., 0., 0., 1., 1., 0., 1., 1.])
output_y [0, 1, 1, 0]

在写代码过程中,发现如果输出层用ReLU激活函数,那么大概率会出错,用Sigmoid函数可以确保百分百的正确率。
在这里插入图片描述
比如说在权重更新的时候,在某个神经元上的所有样本的输出全部都是负数,那么因为用的是ReLU,梯度为0,所以此处的权重再也不能更新了,成了死亡神经元,解决可以用带泄露的ReLU、带参数的ReLU、ELU函数和Softplus函数等。
在这里插入图片描述
偏置 b \bm b b对函数来说是平移,对输入的改变是不敏感的,因为相对于 ω \bm \omega ω,偏置训练准确需要的数据很少,weight指定了两个变量的关系,而bias只控制一个变量,如果对bias进行正则化,对于控制过拟合的作用是有限的,而对weight进行正则化可以防止某些参数过大导致过拟合。
在这里插入图片描述
如果全都设为0,那么第一遍前向计算过程中所有隐藏层神经元的激活值都相同,反向传播时参数更新也一样,相当于隐藏层只有一个神经元,没有区分性,这种现象称为对称权重现象。
在这里插入图片描述
可以通过增加学习率缓解梯度消失问题,但是不能解决梯度消失,梯度消失是指梯度在最后一层往前传的过程中不断减小,直至为0,如果学习率变大,那么梯度会放大,相对来说可能变大了,但是如果学习率过大,和最开始的较大的导数相乘,就会导致梯度爆炸,因此不论学习率大或小,都有可能出现梯度消失或爆炸的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7基础操作02_优化Linux操作系统中的服务

1、实验环境 公司在文件服务器中新安装了CentOS系统.由于默认启动的服务程序较多,系统运行缓慢。现需要对系绞服务进行适当优化,减少一些不必要的自启动服务.并设置系统在开机后直接进入字符模式。 2、需求描述 根据实际使用需求对CentOS 7操作系统中的…

PLC无线通讯模块

在工业自动化日益深入的今天,PLC(可编程逻辑控制器)作为工业控制的核心大脑,其功能的扩展和智能化水平直接影响着整个生产线的效率和安全性。而PLC无线通讯模块,作为连接PLC与外界信息世界的桥梁,其重要性不…

揭秘Python:下划线的特殊用法,你绝对想不到!

在Python编程中,下划线(underscore)是一个常见而又强大的工具。它不仅仅是一个普通的字符,而是具有特殊含义和用法的符号。今天,我们就来揭开Python下划线的神秘面纱,探索它的各种妙用。 下划线的基本用法…

前端html-docx实现html转word,并导出文件,文字+图片

前端html-docx实现html转word,并导出文件 前端web页面 有文字,有图片,保存web的css效果 使用工具:html-docx 官方网址:http://docs.asprain.cn/html-docx/readme.html 步骤: 1 npm install html-docx-js…

边缘网关在数据采集方面发挥的作用-天拓四方

随着物联网技术的快速发展,边缘网关作为连接物理世界与数字世界的桥梁,其重要性日益凸显。特别是在数据采集方面,边缘网关以其独特的优势,为物联网系统的运行和管理提供了强大的支持。本文将从边缘网关的基本概念、数据采集流程、…

vcruntime140_1.dll在哪个文件夹?详细修复vcruntime140_1.dll缺失的方法

vcruntime140_1.dll文件是什么?相信很多人都对它很陌生吧?毕竟大部分人对于dll文件还是了解得太少了,当突发情况出现vcruntime140_1.dll文件丢失?你要怎么办?不要担心,下面我们就来给大家详细的讲解一下修复…

记一次netty客户端的开发

背景 近日要开发一个tcp客户端程序去对接上游厂商的数据源,决定使用netty去处理,由于很久没有开发过netty了,顺便学习记录下 netty搭建 考虑到我们需要多个client去对接server服务,所以我们定义一个公共的AbstractNettyClient父…

2024最新智能优化算法:常春藤算法(Ivy algorithm,LVYA)求解23个函数,提供MATLAB代码

一、常春藤算法 常春藤算法(Ivy algorithm,LVYA)是Mojtaba Ghasemi 等人于2024年提出智能优化算法。该算法模拟了常春藤植物的生长模式,通过协调有序的种群增长以及常春藤植物的扩散和演化来实现。常春藤植物的生长速率是通过微分…

Apache Druid 代码执行(CVE-2021-25646)漏洞复现

Druid简介与漏洞成因 Apache Druid是一个高性能的实时分析型数据库,旨在对大型数据集进行快速查询分析。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景,同时,Druid也通常被用来助力分析型应用的图形化界面&am…

Java 内存泄露风险

目录 内存泄露的定义 潜在的内存泄露场景 未关闭的资源类 未正确实现 equals() 和 hashCode() 非静态内部类 重写了 finalize() 的类 针对长字符串调用 String.intern() ThreadLocal 的误用 类的静态变量 虽然 Java 程序员不用像 C、C 程序员那样时刻关注内存的使用情…

常见场文件解析

收费工具,白嫖党勿扰 收费金额2000元 1 概述 因某所项目比较特殊,需要对各种格式场文件进行可视化展示,要对场可视化展示,首先要做的,是要解析场文件中存储哪些信息。好在,有个ParaView开源免费工具&#…

产品人生(9):从“波士顿矩阵”看“个人职业规划”

波士顿矩阵(简称BCG矩阵)是一种战略规划工具,由波士顿咨询公司的创始人布鲁斯亨德森(Bruce Henderson)于1970年代初提出的,它以两个关键指标作为分析维度:市场增长率和相对市场份额,…

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二)

整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二) 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(…

npm run dev 同时运行vue前端项目和node后端项目

将两个项目放到一个目录下 项目拖进vscode中,安装包依赖,修改配置 npm i concurrently "dev": "concurrently \"vite --mode development\" \"nodemon app.js\"" 命令行 npm run dev 运行 没有运行成功排查 …

vue2 bug 小白求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)

我的vue2项目出现了一个超级恶心的bug 具体流程: 页面a点击a标签->到页面b->页面b用户退出刷新页面->点击浏览器的返回按钮返回上一页 返回页面后页面没有刷新导致用户名还显示这 项目中没有用keep-alive缓存 也在设置了key 尝试了window.removeEventLi…

光学仪器镀膜上下料设备:智能化生产的引领者

当智能技术与制造业相融合,富唯智能镀膜上下料设备成为智能化生产的新引擎。它不仅将智能化、自动化理念融入到生产的各个环节,更为企业带来了生产效率的提升和成本的降低。 富唯智能镀膜上下料设备以其卓越的性能,在实现单面和两面镀膜的上料…

大模型高级 RAG 检索策略:自动合并检索

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

NLP课程笔记-基于transformers的自然语言处理入门

toc 项目地址 https://github.com/datawhalechina/learn-nlp-with-transformers/ 2017年,Attention Is All You Need论文(Google Brain)首次提出了Transformer模型结构并在机器翻译任务上取得了The State of the Art(SOTA, 最好)的效果。2…

如何准确查找论文数据库?

在学术研究过程中,查找相关论文是获取最新研究成果、支持自己研究的重要途径。准确查找论文数据库不仅可以节省时间,还能确保找到高质量的学术资源。本文将介绍一些有效的方法和策略,帮助您准确查找论文数据库。 1. 选择合适的数据库 不同的…

城市公共交通IC卡消费流程

一,获取卡片信息 1,选择交通部电子钱包应用 指令:00A4 + 04 + 00 + AID长度 + AID AID:A000000632010105 具体可参照城市公共交通IC卡技术规范第二部分 应用指令 选择命令部分 2,读取15文件公共信息基本文件 指令:00B0 +9500 指令返回:公共信息基本文件 具体可参照 城…