【深度学习】2-1 神经网络 - 激活函数

激活函数

将输入信号的总和转换为输出信号,一般称为激活函数(activation function)。激活函数作用在于决定如何来激活输入信号的总和。
对激活函数,一般要求:

  1. 非线性:为提高模型的学习能力,如果是线性,那么再多层都相当于只有两层效果。
  2. 可微性:有时可以弱化,在一些点存在偏导即可。
  3. 单调性:保证模型简单。

激活函数在神经网络中的作用有很多,主要作用是给神经网络提供非线性建模能力。如果没有激活函数,那么再多层的神经网络也只能处理线性可分问题。

神经网络使用的激活函数:
(记住激活函数的表达式和对应的图形)

sigmoid函数
优点在于输出映射在(0,1)内,单调连续,适合用作输出层,求导容易;缺点是具有软饱和性,一旦输入数据落入饱和区,一阶导数变得接近0,就可能产生梯度消失问题

公式
在这里插入图片描述
在python中实现sigmoid函数

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

这里 np.exp(-x)对应exp(-x),要注意的是参数x为NumPy数组,结果也能正确计算,sigmoid的运算会在NumPy数组的各个元素间进行

函数图形
在这里插入图片描述

阶跃函数
阶跃函数的定义当输人超过0时,输出1否则输出0。
实现如下:

def step_function(x):return np.array(x > 0, dtype=int)

tip: 对NumPy数组进行不等号运算后,数组的各个元素都会进行不等号原酸生成一个布尔型数组。然后将数组y的元素类型从布尔型转换为int型

函数图形
在这里插入图片描述

sigmoid函数和阶跃函数的比较

  1. “平滑性”的不同:阶跃函数只能返回0或1,sigmoid函数可以返回0.71、0.80等实数
  2. 两个函数具有相同的形状,两者的结构均是“输入小时,输出接近0(为0),随着输人增大,输出向1靠近(变成1)。
  3. 两者均为非线性函数

要注意的是:神经网络的激活函数必须使用非线性函数。因为使用线性函数的话,加深神经网络的层数就没有意义了。也就是常说的断线性。
线性函数的问题在于,不管如何加深层数,总是存在与之等效的“无隐藏层的神经网络”。例如:这里我们考虑把线性函数h(z)=c作为激活函数,把y(z)=h(h(h(z)))的运算对应3层神经网络·。这个运算会进行y(z)=c x c x c x X的乘法运算,但是同样的处理可以由y(z)=az(注意a=c3)这一次乘法运算(即没有隐藏层的神经网络)来表示。换言之,用线性函数无法发挥叠加层的作用

ReLU函数
relu函数是目前最受欢迎的激活函数,在x<0时,硬饱和,x>0时,导数为1,所以在x>0时保持梯度不衰减,从而可以缓解梯度消失问题,能更快收敛,并提供神经网络的稀疏表达能力。但随着训练的进行,部分输入会落入硬饱和区,导致对应的权重无法更新,称为“神经元死亡”
ReLU函数在输人大于0时,直接输出该值;在输入小于等于0时,输出0
ReLU函数的实现如下:

def relu(x):return np,maximum(0,x)

函数图形
在这里插入图片描述

tanh
tanh激活函数同样具有软饱和性,输出以0为中心,收敛速度比tanh激活函数同样具有软饱和性,输出以0为中心,收敛速度比sigmoid快,但是也存在梯度消失问题
tanh函数公式如下:
在这里插入图片描述
在python的实现如下:

def tanh(x):return np.tanh(x)

图形如下:
在这里插入图片描述
在搭建神经网络时,如何选择激活函数?
如果搭建的神经网络层数不多,选择sigmoid、tanh、relu、softmax都可以;
如果搭建的网络层次比较多,那就需要小心,选择不当就可导致梯度消失问题。此时一般不宜选择sigmoid、tanh激活函数,因它们的导数都小于1,尤其是sigmoid的导数在[0,1/4]之间,多层叠加后,根据微积分链式法则,随着层数增多,导数或偏导将指数级变小。所以层数较多的激活函数需要考虑其导数不宜小于1,当然导数也不能大于1,大于1将导致梯度爆炸,导数为1最好,激活函数relu正好满足这个条件。所以,搭建比较深的神经网络时,一般使用relu激活函数,虽然一般神经网络也可使用。此外,激活函数softmax由于Σσi(Z)=1,常用于多分类神经网络输出层

补充
饱和,软饱和,硬饱和的概念

  1. 饱和
    当x趋近于正无穷,h(x)趋近于0,称之为右饱和。
    当n趋近于负无穷,h(x)趋近于0,称之为左饱和。
    当一个函数既满足左饱和又满足右饱和的时候就称之为饱和。
  2. 硬饱和
    对于任意的x,如果存在常数c,当x>c时,恒有h(x)=0,则称其为右硬饱和。
    如果对于任意的x,如果存在常数c,当x<c时,恒有h(x)=0,则称其为左硬饱和。
    既满足左硬饱和又满足右硬饱和的我们称这种函数为硬饱和。
  3. 软饱和
    对于任意的x,如果存在常数c,当x>c时,恒有h(x)趋近于0,则称其为右软饱和。
    如果对于任意的x,如果存在常数c,当x<c时,恒有h(x) 趋近于0,则称其为左软饱和。
    既满足左软饱和又满足右软饱和的我们称这种函数为软饱和。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习李宏毅学习笔记33

文章目录 前言一、神经网络压缩二、Network pruning----一种network compression技术1.移除不同单位的区别2.大乐透假说 总结 前言 神经网络压缩&#xff08;一&#xff09; 类神经网络剪枝&#xff08;pruning&#xff09; 一、神经网络压缩 简化模型&#xff0c;用比较少的…

软件安全技术复习内容

软件安全技术 边复习边写的&#xff0c;有错误及时指正第一章 软件安全概述零日漏洞安全威胁分类CIA安全基本属性PDRR模型软件安全的主要方法和技术基本方法主要技术 第二章 软件漏洞概述概念软件漏洞成因分析软件漏洞分类基于漏洞成因的分类基于漏洞利用位置的分类基于威胁类型…

【工作记录】基于CSS+JS可拖拽改变大小、可吸附到边界的DIV

记录一段实现可拖拽、可自动吸附到边界的代码。 <!DOCTYPE html> <html lang"en"> <head><style>body {overflow: hidden;}#pane {position: absolute;width: 45%;height: 45%;top: 20%;left: 20%;margin: 0;padding: 0;z-index: 99;border…

Google禁止自动更新

前言&#xff1a; 为了使用selenium&#xff0c;必须要禁止google自动更新&#xff0c;要不然辛苦下的驱动&#xff0c;随着更新还得再下一遍。 解决&#xff1a; 1.打开服务 2.禁用google更新服务 然后就可以了

单片机学习12-串口通信

目录 串口通信实验 通信的基本概念 串行通信与并行通信 异步通信与同步通信 单工、半双工与全双工通信 通信速率&#xff08;比特率&#xff09; 单片机串口介绍 串口通信简介 串口相关寄存器 串口工作方式 方式 0 方式 1 方式 2 和方式 3 串口的使用方法 硬件设计…

vtk创建x,y,z轴

创建三维空间中的xyz轴 引言示例开发环境示例代码运行结果总结 引言 本文的示例实际上是vtk官网中的示例&#xff0c;只是稍做了一点改动。 示例 开发环境 使用QtCreator4.11.2来开发&#xff0c;基于Qt5.14.2。使用的vtk9.2。创建空项目。 示例代码 由于是空项目&#x…

开源大型语言模型(llm)总结

大型语言模型&#xff08;LLM&#xff09;是人工智能领域中的一个重要研究方向&#xff0c;在ChatGPT之后&#xff0c;它经历了快速的发展。这些发展主要涉及以下几个方面&#xff1a; 模型规模的增长&#xff1a;LLM的规模越来越大&#xff0c;参数数量显著增加。这种扩展使得…

抖音seo矩阵系统源码|需求文档编译说明(一)

抖音seo矩阵系统文章目录技术囊括 ①产品原型 ②需求文档 ③产品流程图 ④部署方式说明 ⑤完整源码 ⑥源码编译方式说明 ⑦三方框架和SDK使用情况说明和代码位置 ⑧平台操作文档 ⑨程序架构文档 短视频矩阵系统源码开发锦囊囊括前言一、短视频账号矩阵系统开发者必备能力语言&…

计算机视觉 + Self-Supervised Learning 五种算法原理解析

计算机视觉领域下自监督学习方法原理 导语为什么在计算机视觉领域中进行自我监督学习&#xff1f; 自监督学习方法Generative methodsBEiT 架构 Predictive methodsContrastive methodsBootstraping methodsSimply Extra Regularization methods 导语 自监督学习是一种机器学习…

【React】React Hooks解析

React Hooks解析 React 16.8 认识和体验Hooks 为什么需要Hook? Hook是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下使用state以及其他的React特性&#xff08;比如生命周期&#xff09; 我们先来思考一下class组件相对于函数式组件有什么优势&…

期末复习【计算机网络】

期末复习【计算机网络】 前言推荐期末复习如何快速阅读电子书重点第1章 概述1.6 计算机网络的性能1.6.2 计算机网络的性能指标√ 1.7 计算机网络体系结构1.7.3 具有五层协议的体系结构√ 第2章 物理层2.3 物理层下面的传输媒体 *2.4 信道复用技术2.4.1 频分复用、时分复用和统计…

node笔记_读写excel

文章目录 ⭐前言⭐安装依赖⭐读取excel&#x1f496; 按行读取&#x1f496; 按列读取 ⭐写入excel⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于node读取excel内容 往期文章 node_windows环境变量配置 node_npm发布包 linux_配置node node_nvm安装配置…