神经网络基础--什么是神经网络?? 常用激活函数是什么???

前言

  • 本专栏更新神经网络的一些基础知识;
  • 案例代码基于pytorch;
  • 欢迎收藏 + 关注, 本人将会持续更新。

神经网络

1、什么是神经网络

人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的 计算模型。

高中学生物的时候,我们可以发现在生物的神经网络中,由一个个神经元连接而成,在每个神经元中传递各种复杂的信号,在树突中输入信号,然后对信号进行处理,在轴突中输出信号这一过程。生物神经网络如图:

在这里插入图片描述

从生物的神经网络中可以看出,神经网络由神经元、树突、轴突所构成,当细胞核电量收集到一定程度的时候,会向数突发送电信号,电信号经过各种处理,最终会在轴突中输出。

2、人工神经网络

人工神经网络(ANN)实际上就是模拟生物神经网络的过程,神经网络可以看作由很多神经元所构成的,一个神经元中树突接收信号,然后进行处理,在轴突中输出信号,换算成人工神经网络中即有三部分构成:输入层、隐藏层、输出层所构成,一个简单的模拟神经元如图:

在这里插入图片描述

从上图可以看出,当接收到输入信号的时候,对信号要进行加权计算,最后输出的过程。其中w叫做权重,b叫做偏置,和之前学的斜率和截距相比有着更加专业的名称。

由多个神经元所构成自然就成为了神经网络,如图:

在这里插入图片描述

在神经网络中信号只是单方向移动,大概过程就是:

  1. 输入层:接收信号,可以看作的输入X
  2. 隐藏层:处理信号,对输入的数据进行各种线性和非线性变换,去拟合
  3. 输出层,输出信号,可以看作是Y

神经网络的作用:可以看作是一个万能的函数拟合器,拟合各种分布规律的点。

3、总结

神经网络是从生物神经网络中产生的,由很多神经元所有构成,每个神经元又包含输入层、隐藏层、输出层,从而发现数据的规律。

激活函数

1、非线性因素

线性:可以用一个线性方差来表示,如一元线性方程、多元线性方程……

非线性:在高中数学中,我们可以发现,实际应用很少数据规律是符合线性的,因为生活中的数据总是收到多个因素的影响,包括很多不确定因素的影响,数据分布可能符合:指数、对数、指对结合、三角结合…………

神经网络:从上面的神经网络图中可以发现,线性拟合可以经过不同神经元之间的权重和偏置进行拟合,而非线性因素需要引入激活函数,引入了激活函数后,神经网络就可以拟合各种曲线,逼近各种函数了,那什么是激活函数呢?请看下面讲解。

2、常见的激活函数

sigmoid

简介

表达式

f ( x ) = 1 1 + e − x \mathrm{f(x)=\frac1{1+e^{-x}}} f(x)=1+ex1

图像以及其导函数的图像

在这里插入图片描述

分析可以得出

  • sigmoid函数值域为:(0, 1),即:可以将任何函数值都可以映射到(0, 1) 范围内
  • 函数值效果分析
    • (-6, 6)区间内,效果可以,输出值有区别,尤其是在(-3, 3)区间中,效果最好,输出值有明显区别
    • 当x在大于6,或者小于-6的时候,效果不佳,输出值没有说明区别
  • 导数图像分析:
    • 值域:(0, 0.25)
    • 当x在大于6,或者小于-6的时候,导数值接近为0,收敛平缓

使用场景

  • 用作激活函数不多,主要运用在二分类中,如逻辑回归,并且神经网络层数不能多,否则很容易到后面求出导数值为0
pytorch代码举例
import torch
import matplotlib.pyplot as plt 
import torch.nn.functional as F 

from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False

def test():
    # 创建画板
    fig, axes = plt.subplots(1, 2)
    
    # 创建sigmoid
    x = torch.linspace(-20, 20, 1000)
    y = F.sigmoid(x)
    axes[0].plot(x, y)
    axes[0].grid()
    axes[0].set_title('Sigmoid 函数值')
    
    # 导函数
    x = torch.linspace(-20, 20, 1000, requires_grad=True)  # 最后一个参数,全程跟踪求导,并且将求导值存入 grad中
    # 求导
    torch.sigmoid(x).sum().backward()  # .backward() 以及任何被x直接或间接影响的、需要梯度的参数,将其值全部存储在 .grad 中
    # 绘图
    axes[1].plot(x.detach(), x.grad)   # .detach() 分离出x没有求导的值,x.grad存储求导的值
    axes[1].grid()
    axes[1].set_title('Sigmoid 导数值')
    
    
    
if __name__ == '__main__':
    test()

输出图像如上图sigmoid所示。

tanh

简介

表达式

f ( x ) = 1 − e − 2 x 1 + e − 2 x \mathrm{f(x)=\frac{1-e^{-2x}}{1+e^{-2x}}} f(x)=1+e2x1e2x

图像及其导函数图像

在这里插入图片描述

分析

  • tanh的值域为:[-1, 1],即:任何函数值通过tanh函数都可以映射到:[-1, 1]区间
  • 关于源点0对称
  • 函数效果值分析
    • 在x属于[-3, 3]这个区域内,函数值映射效果区分度较大
    • 当x>3或者x<-3的时候,分别映射成 -1 与 1
  • 导数值分析
    • 值域:(0, 1)
    • 当x>3或者x<-3的时候,导数值为0
  • 与sigmoid函数区别
    • tanh函数收敛速度较快,运用范围较广
    • 查阅资料:可以搭配使用,隐藏层用tanh,输出层用sigmoid,用于二分类问题
pytorch代码举例
import torch 
import matplotlib.pyplot as plt 
import torch.nn.functional as F 

from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False

def test():
    # 创建画板
    fig, axes = plt.subplots(1, 2)
    
    # tanh图像
    x = torch.linspace(-20, 20, 1000)
    y = F.tanh(x)
    axes[0].plot(x, y)
    axes[0].grid()
    axes[0].set_title('tanh 函数')
    
    # 导函数图像
    x = torch.linspace(-20, 20, 1000, requires_grad=True)
    torch.tanh(x).sum().backward()
    axes[1].plot(x.detach(), x.grad)
    axes[1].grid()
    axes[1].set_title('tanh 导数')
    
    plt.show()
    
if __name__ == '__main__':
    test()

ReLu(最常用的)

简介

表达式

f ( x ) = m a x   ( 0 , x ) \mathrm{f(x)=max~(0,x)} f(x)=max (0,x)

图像

在这里插入图片描述

分析

  • 当 x 值小于0的时候,映射成0,当 x 值大于 0 的时候,映射成它本身
  • 运算简单,效率高,容易通过线性变换非线性变换拟合任何函数,最常用

导函数图像

在这里插入图片描述

分析

  • 函数值小于0,则导函数为 0 ,函数值大于0,导数值为 1
  • ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。

缺点

  • 如果我们网络的参数采用随机初始化时,很多参数可能为负数,这就使得输入的正值会被舍去,而输入的负值则会保留,这可能在大部分的情况下并不是我们想要的结果
  • 随着训练的推进,部分输入会落入小于0区域,导致对应权重无法更新。这种现象被称为“神经元死亡”

SoftMax

用于多分类题目

简介

表达式

s o f t m a x ( z i ) = e z i ∑ j e z j softmax(z_{i})=\frac{e^{z_{i}}}{\sum_{j}e^{z_{j}}} softmax(zi)=jezjezi

在这里插入图片描述

Softmax 直白来说就是将网络输出的 logits 通过 softmax函数,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们将它理解成概率,选取概率最大(也就是值对应最大的)节点,作为我们的预测目标类别

pytorch代码
import torch 

scores = torch.tensor([0.2, 0.02, 0.15, 0.15, 1.3, 0.5, 0.06, 1.1, 0.05, 3.75])
probabilities = torch.softmax(scores, dim=0)
print(probabilities)

3、总结

如何选取激活函数?

对于隐藏层:

  1. 优先选择RELU激活函数
  2. 如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。
  3. 如果你使用了Relu, 需要注意一下Dead Relu问题, 避免出现大的梯度从而导致过多的神经元死亡。
  4. 不要使用sigmoid激活函数,可以尝试使用tanh激活函数

对于输出层:

  1. 二分类问题选择sigmoid激活函数
  2. 多分类问题选择softmax激活函数
  3. 回归问题选择identity激活函数

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

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

相关文章

大模型也要“私人定制“?最新综述带你解锁AI的个性化服务 | 综述!扩散模型:AI艺术创作背后的“魔法引擎“

大模型领域的发展日新月异&#xff0c;每天都有许多有趣的论文值得深入品读。下面是本期觉得比较有意思的论文&#xff1a; 1、大模型也要"私人定制"&#xff1f;最新综述带你解锁AI的个性化服务 2、综述&#xff01;扩散模型&#xff1a;AI艺术创作背后的"魔法…

【MySQL 保姆级教学】深层理解索引及其特性(重点)--上(11)

MySQL与磁盘 1. MySQL与内存和磁盘的联系2. 认识磁盘2.1 MySQL与存储2.2 磁盘结构2.3 扇区2.4 定位扇区 3. MySQL与磁盘交互基本单位4. 建立共识5. 索引的理解5.1 建立一个表并查询5.2 为何 I/O 交互要是Page 6. B树 Vs B 树数6.1 不同存储引擎支持的索引结构类型6.2 B树 Vs B树…

1分钟教你利用ai工具免费制作养生视频,自动化批量操作,效率提升10倍!

养生这个是未来比较火爆的一个赛道,很多人越来越注重养生&#xff0c;你会发现抖音各种健身操博主&#xff0c;视频播放数据都很不错。很多人上一秒说的养生&#xff0c;下一秒又熬起了夜。年纪轻轻就喝起了枸杞续命。 有想做视频号带货的家人&#xff0c;其实可以考虑养生赛道…

思通数科纸质档案扫描与识别与档案馆应用场景介绍

在传统档案馆中&#xff0c;纸质文件的处理和管理是一个重要且繁琐的环节&#xff0c;特别是面对庞大的历史资料库。思通数科的AI能力平台提供了一种高效的数字化解决方案&#xff0c;利用OCR技术将纸质档案中的信息自动提取并转化为数字文本&#xff0c;具体过程包括以下几个步…

AutoCAD的Dwg版本代号、R版本参数值以及二次开发时VS、.NET版本关系

Dwg的AC版本代号 出处&#xff1a;https://www.autodesk.com.cn/support/technical/article/caas/sfdcarticles/sfdcarticles/CHS/drawing-version-codes-for-autocad.html 以下是AutoCAD图形的不同版本代号&#xff1a; MC0.0 - DWG Release 1.1 AC1.2 - DWG R1.2 AC1.4 - DW…

微服务day02

教学文档&#xff1a; 黑马教学文档 Docker Docker的安装 镜像和容器 命令解读 常见命令 案例 查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行容器 搜索Nginx镜像&#xff1a;在 www.hub.docker.com 网站进行查询 拉取镜像&#xff1a; docker pull ngin…

脉冲全闭环EtherCAT运动控制器的固件升级

本文导读 随着产品的发展&#xff0c;正运动技术产品的固件也在不断更新与完善&#xff0c;新固件较老固件会解决一些客户的新需求与软件上的bug&#xff0c;增加了一些指令和功能&#xff0c;添加了更多的 EtherCAT从站与io模块。因此&#xff0c;升级固件是常用功能。推荐优…

用 Python 爬取淘宝商品价格信息时需要注意什么?

用 Python 爬取淘宝商品价格信息时&#xff0c;需要注意以下方面&#xff1a; 一、法律和道德规范&#xff1a; 遵守法律法规&#xff1a;网络爬虫的行为应在法律允许的范围内进行。未经淘宝平台授权&#xff0c;大规模地爬取其商品价格信息并用于商业盈利等不当用途是违法的…

三周精通FastAPI:35 最常用的模板引擎Jinja2

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/advanced/templates/ 模板 FastAPI 支持多种模板引擎。 Flask 等工具使用的 Jinja2 是最常用的模板引擎。 在 Starlette 的支持下&#xff0c;FastAPI 应用可以直接使用工具轻易地配置 Jinja2。 安装依赖项 安装 ji…

AI 搜索来势汹汹,互联网将被颠覆还是进化?

最近&#xff0c;美国新闻集团起诉了知名 AI 搜索引擎 Perplexity AI。也许你会想&#xff0c;这不就是又一起“AI 惹官司”吗&#xff1f;其实&#xff0c;这次情况不太一样&#xff0c;甚至可能会改变我们未来上网的方式&#xff01; 争议的焦点是什么&#xff1f;是未来的 …

微信小程序官方评价组件wxacommentplugin下线后如何巧妙调用

在前一段时间微信小程序官方下线了评价组件后&#xff0c;无法再申请到了&#xff0c; 先来说说小程序什么情况下弹出评价&#xff1f; 1.官方邀请用户评价 用户通过搜索使用过小程序后&#xff0c;官方会邀请用户对小程序的使用体验进行评价。这个是系统随机的&#xff0c;…

Nat Med 病理AI系列|人工智能在肝病临床试验中的应用·顶刊精析·24-11-06

小罗碎碎念 今天分析Nature Medicine病理AI系列的第6篇文章——《AI-based automation of enrollment criteria and endpoint assessment in clinical trials in liver diseases》。 这篇文章介绍了一种基于人工智能的测量工具AIM-MASH&#xff0c;它能够提高非酒精性脂肪性肝…

AWG5200系列-美国泰克AWG5202/5204/5208任意波形

AWG5200系列-美国泰克AWG5202/5204/5208任意波形 美国泰克AWG5202/5204/5208任意波形发生器AWG5200可满足苛刻的信号生成需求&#xff0c;具有高信号保真度&#xff0c;支持多台同步&#xff0c;可扩展到zui多32条及以上通道&#xff0c;高性价比。是高级研究、电子测试和雷达、…

SpringBoot在城镇住房保障系统中的应用案例

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了城镇保障性住房管理系统的开发全过程。通过分析城镇保障性住房管理系统管理的不足&#xff0c;创建了一个计算机管理城镇保障性住房管理系统的方案。文章介绍了城…

无需专业技能,快速上手本地部署Llama3:让你的个人电脑也能高效运行

大家好&#xff0c;我是斜杠君。今天手把手教大家如何在本地部署Llama3&#xff0c;打造一个属于自己的本地大模型助手。 在教大家部署Llama3之前&#xff0c;先要带大家了解一个概念&#xff1a;Ollama。 Ollama是什么&#xff1f; Ollama是一个用于在本地计算机上运行大型语言…

使用Python和OpenCV实现火焰检测

使用Python和OpenCV实现火焰检测 项目解释&#xff1a; 此 Python 代码是使用 OpenCV、线程、声音和电子邮件功能的火灾探测系统的简单示例。 以下是它的功能的简单描述&#xff1a; 导入库&#xff1a;代码首先导入必要的库&#xff1a; cv2&#xff1a;用于图像和视频处理…

异步4位计数器(Quartus与Modelsim联合仿真)

异步计数器&#xff08;也称为ripple-through counter&#xff09;的特点是每一位触发器的输出作为下一位触发器的时钟输入&#xff0c;因此计数速度会因为级联触发器的传播延迟而受到限制。这种计数器的最大工作频率通常低于同步计数器。 一、电路符号 输入信号&#xff1a;时…

EDA技术简介

目录 可编程逻辑器件 CPLD/FPGA 基于查找表结构的FPGA 硬件描述语言 EDA软件 EDA技术的 应用领域 电子系统的设计方法 EDA (Electronic Design Automation,电子设计自动化) 以可编程逻辑器件 (Programmable Logic Device,简称PLD)为实现载体、以硬件描述语言 (Hardwar…

【The Art of Unit Testing 3_自学笔记06】3.4 + 3.5 单元测试核心技能之:函数式注入与模块化注入的解决方案简介

文章目录 3.4 函数式依赖注入技术 Functional injection techniques3.5 模块化依赖注入技术 Modular injection techniques 写在前面 上一篇的最后部分对第三章后续内容做了一个概括性的梳理&#xff0c;并给出了断开依赖项的最简单的实现方案&#xff0c;函数参数值注入法。本…

如何打开别人的 vsqt 代码?QString 中有中文的时候,如何转换中文?

如何打开别人的 vsqt 代码&#xff1f; 我们下载了 一段源码。并且知道这个源码的关于 音视频的&#xff0c;那么八成会用到ffmpeg 假设我们源码下载后&#xff0c;位置在D:\downloadcode\112_yuv_rgb_player 第一步就是删除.vs 和debug&#xff0c;因为这是别人的vs 项目的…