基于tensorflow的深层神经网络(一)为什么神经网络需要解决非线性和异或问题

news2024/11/14 4:18:59

参考为什么神经网络需要解决多层和非线性问题 - 云+社区 - 腾讯云

 

维基百科对深度学习的精确定义为“一类通过多层非线性变换对高复杂性数据建模算法的合集”。因为深度神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中基本上可以认为深度学习就是深度神经网络的代名词。从维基百科给出的定义可以看出,深度学习有两个非常重要的概念,并将通过具体样例------多层和非线性。那么为什么要强调这两个性质?先说明线性模型的局限性,再给出去线性化的方法,最后再说明使用多层的原因。

1、线性模型的局限性

在线性模型中,模型的输出为输入的加权和。假设一个模型的输出y和输入xi满足以下关系,那么这个模型就是一个线性模型。

                                                              y=\sum_iw_i x_i +b

其中w_i,b\in R 为模型参数。被称之为线性模型是因为当模型的输入只有一个的时候,x和y形成了二维坐标系上的一条直线。类似地,当模型有n个输入时,x和y形成了n+1维空间中的一个平面。而一个线性模型中通过输入得到输出的函数被称之为一个线性变换。上面的公式就是一个线性变换。线性模型的最大特点是任意线性模型的组合仍然还是线性模型。因为线性模型就能解决线性可分问题,而在深度学习面对的问题至少是无法通过直线(或者高维空间的平面)划分的。在现实世界中,绝大部分的问题都是无法线性分割的。

2.激活函数实现去线性化

如果将每一个神经元(也就是神经网络中的节点)的输出通过一个非线性函数,那么整个神经网络的模型就不再是线性了。这个非线性函数就是激活函数。下图显示了加入激活函数和偏置项之后的神经元结构。

                     

以下公式给出了神经网络结构加上激活函数和偏置项后的前向传播算法的数学定义:

                                           A_1=[a_{11},a_{12},a_{13}]=f(xW^{(1)}+b)\\= f([x_1,x_2])\bigl(\begin{smallmatrix} W^{(1)}_{1,1} & W^{(1)}_{1,2} & W^{(1)}_{1,3}\\ W^{(1)}_{2,1} & W^{(1)}_{2,2} & W^{(1)}_{2,3} \end{smallmatrix}\bigr +[b_1, b_2, b_3])\\ =f(W_{1,1}^{(1)}x_1+W_{2,1}^{(1)}x_2+b_1, W_{1,2}^{(1)}x_1+W_{2,2}^{(1)}x_2+b_2, W_{1,3}^{(1)}x_1+W_{2,3}^{(1)}x_2+b_3 )\\ =[f(W_{1,1}^{(1)}x_1+W_{2,1}^{(1)}x_2+b_1),f(W_{1,2}^{(1)}x_1+W_{2,2}^{(1)}x_2+b_2),f(W_{1,3}^{(1)}x_1+W_{2,3}^{(1)}x_2+b_3)] 

相比于之前新的公式第一个改变是增加了偏置项(bias),偏置项是神经网络中非常常用的一种结构。第二个改变就是每个节点的取值不再是单纯的加权和。每个节点的输出在加权和的基础上还做了一个非线性变换。下图展示了几种常用的非线性激活函数的的函数图像。

                                                               

            f(x)=max(x,0)                                      f(x)=\frac{1}{1+e^{-x}}                               f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}

这些激活函数的函数图像都不是一条直线。所以通过这些激活函数。每一个节点不再是线性变换,于是整个神经网络也就不再是线性的了,加入ReLU激活函数之后,神经网络的前行传播算法的计算方法为:

                                                                   \\a_{11}=f(W_{1,1}^{(1)}x_1+W_{2,1}^{(1)}x_2+b_1)\\ a_{12}=f(W_{1,2}^{(1)}x_1+W_{2,2}^{(1)}x_2+b_2)\\ a_{11}=f(W_{1,3}^{(1)}x_1+W_{2,3}^{(1)}x_2+b_3)\\ 

输出层的公式为:

                                                       Y=f(W_{1,1}^{(2)}a_{1,1}+W_{2,1}^{(2)}a_{1,2}+W_{3,1}^{(2)}a_{1,3}+b_1^{(2)}) 

目前tensorflow提供了7种不同的非线性激活函数,tf.nn.relu、tf.sigmoid和tf.tanh是其中比较常用的几个。当然,tensorflow也支持使用自己定义的激活函数,下面的代码实现了神经网络的前向传播算法。

a = tf.nn.relu(tf.matmul(x, w1) + biases1)
y = tf.nn.relu(tf.matmul(a, w2) + biases2)

3.多层神经网络解决异或问题

在神经网络的发展历史上,一个很重要的问题就是异或问题。神经网络的理论模型由 Warren McCulloch和Walter Pitts在1943年首次提出,并在1958年由Frank Rosenblatt提出感知机(perceptron)模型,从数学上完成了对神经网络的精确建模。感知机可以简单地理解为单层的神经网络。感知机会将输入进行加权和,然后再通过激活函数最后得到输出。这个结构就是一个没有隐藏层的神经网络。在上世纪60年代,神经网络作为对人类大脑的模拟算法受到了很多关注。然而到了1969年,Marvin Minsky和Seymour  Papert在Perceptrons:An Introduction to Computational Geometry一书中提出感知机无法模拟异或运算。深层神经网络实际上有组合提取特征的功能。这个特征对于解决不以提取特征向量的问题(比如图片识别、语音识别等)有很大帮助。这也是深度学习在这些问题上更加容易取得突破性进展的原因。

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

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

相关文章

音频信号特征

1.声音 音信号是由空气压力的变化而产生的,可以测量压力变化的强度,并绘制这些测量值随时间的变化。 声音信号经常在规律的、固定的区间内重复,每个波都具有相同形状,高度表示声音的强度,称之为振幅。 信号完成一个…

论文笔记-时序预测-FEDformer

论文标题:FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 论文链接: https://arxiv.org/abs/2201.12740 代码链接: https://github.com/DAMO-DI-ML/ICML2022-FEDformer 摘要 尽管基于变压器的方法…

笔记--Ubuntu20.04安装Nvidia驱动、CUDA Toolkit和CUDA CuDNN

目录 1--安装Nvidia驱动 2--安装CUDA 2-1--禁用nouveau 2-2--选择CUDA Toolkit 2-3--下载和安装CUDA Toolkit 2-4--配置环境变量 2-5--测试是否安装成功: 3--安装CUDA CuDNN 4--测试pytorch能否使用Cuda 1--安装Nvidia驱动 ① 查看可安装的Nvidia驱动版本…

Matplotlib学习笔记(第二章 2.13 Matplotlib中的图形(一))

在这里,您将发现大量示例图,其中包含生成它们的代码。 线图(Line Plot) 下面是如何使用plot()创建带有文本标签的线图。 Fig. 1: Simple Plot 多个绘图区域(Multiple subplots in one figure) 多个绘图区域由subplot()函数创建: Fig. 2:…

【小程序】内容滚动方案,视频或者照片上方不随滚动而滚动

💭💭 ✨:内容滚动方案,视频或者照片上方不随滚动而滚动   💟:东非不开森的主页   💜: 优于别人,并不高贵,真正的高贵应该是优于过去的自己。——海明威💜&a…

【图像去噪】基于自适应滤波器消除椒盐噪声图像附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

web前端课程设计(HTML和CSS实现餐饮美食文化网站)静态HTML网页制作

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

论文笔记-时序预测-Informer

论文标题: Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting 论文链接: https://arxiv.org/abs/2012.07436 源码链接: https://github.com/zhouhaoyi/ETDataset 摘要 许多实际应用都需要对长序列时间序列…

游戏开发55课 性能优化12

4.9 带宽优化 带宽优化的目的是减少CPU与GPU之间的数据传输。 4.9.1 LOD(Level Of Detail) LOD即细节层次,根据物体在画面的大小选用不同级别的资源,以减少渲染和带宽的消耗。LOD在图形渲染中应用广泛,适用的对象有…

au cs6七线阁教程 笔记

01 驱动 asio 02 I 监听 R录音 一般是单声道 03 调整音量声相 04 导出 删除轨道文件 07 删除选区 自定义波形剪辑颜色 录音激活后,监听才能激活 08 自动控制 默认控制音量: 09 效果器: Vst3 dll 插件 独立效果器面板,实时&a…

[附源码]Python计算机毕业设计SSM基于框架预约挂号系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【leetcode】对称二叉树

一、题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 二、代码思路 详细题解地址 思路有…

初识Dockerfile

初识Dockerfile Dockerfile 就是用来构建 docker 镜像的构建文件,命令脚本! # 创建一个dockerfile文件,建议 Dockerfile # 文件中的内容 指令(大写)FROM centosVOLUME ["volume01","volume02"]CMD echo "-------e…

【总复习】操作系统

操作系统总复习第1章 操作系统引论第2章 进程的描述与控制第3章 处理机调度与死锁第4章 进程同步第5章 存储器管理第6章 虚拟存储器第7章 输入/输出系统第1章 操作系统引论 1、操作系统的概念(定义) 操作系统( Operating System,…

力扣(LeetCode)1691. 堆叠长方体的最大高度(C++)

动态规划 状态计算 : f[i]{cuboids[i][2]if 不存在kmax(f[k])cuboids[i][2]if k∈[1,i−1]f[i] \begin{cases} cuboids[i][2] &\text{if } 不存在k \\ max(f[k])cuboids[i][2] &\text{if } k \in [1,i-1] \end{cases}f[i]{cuboids[i][2]max(f[k])cuboids[i][2]​if 不…

I-02Python自带编辑器IDLE的使用教程

目录 前言 正文 1. 开启行号功能 2. 运行代码,自动保存 3. 放大字体 4. 附常用快捷键 前言 IDLE是在安装python的时候自带的一个编辑器。 拥有基本的python编程的环境, 常用功能点: 代码自动补齐Debug模式python文档 你肯定想说&…

论文笔记-时序预测-Pyraformer

论文标题: Pyraformer: Low-Complexity Pyramidal Attention for Long-Range Time Series Modeling and Forecasting 论文链接: https://openreview.net/pdf?id0EXmFzUn5I 源码链接: https://github.com/alipay/Pyraformer 摘要 根据过去的…

(6)Pytorch常用函数

Pytorch用到的函数 文章目录Pytorch用到的函数1、tensor.eq()和tensor.lt()2、3、torch.pow()4、torch.clamp()5、item()和tolist()说明 1、发现了官方说明文档,使用这一套是最好的! 2、in-place操作说明,这是一个要被抛弃的方法,…

ArcGIS基础:获取栅格数据边界的线要素和独立格网面

本操作是为了提取栅格DEM数据的边界数据: 看一下原始数据:是一个非常普通的DEM栅格数据。 【方法:1】:使用【栅格范围】工具,通过搜索工具进行查找,如下所示: 该工具可以直接提取栅格外边界数…

将Bean交给Spring容器管理有几种方式?

将Bean交给Spring容器管理有几种方式? Spring核心 Spring核心是 IOC 和 AOP 。 所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。 至于更详细的说明,或者去深入理解Spring这两大核心&#x…