当前位置: 首页 > news >正文

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

神经网络概述

神经网络分为:一个输入层,一个或多个隐藏层,一个输出层

隐藏层中,训练集的值是无法直接看到的。

计算神经网络的层数不算入输入层,将输入层称为第0层。

下图是一个双层神经网络:

a的上标[]表示层数,下标表示第几个神经元。


神经网络输出

一个隐藏层的神经元中要计算两步:


多样本向量化

a^[m](i)中

[m]表示第m层

(i)表示第i个训练实例

因为每个神经元都要计算z和a,所有可以将他们向量化,不用循环计算多次:


激活函数

激活函数为模型引入非线性变换,从而让神经网络能够学习和拟合复杂的非线性关系。没有激活函数的神经网络,本质上只是多层线性回归模型,无法处理现实世界中诸如图像、语言、声音等具有复杂非线性特征的数据。

输出 = 激活函数(权重×输入 + 偏置)

上面例子中的sigmoid函数(0,1)就是一个激活函数.

激活函数可以将神经元的输出值映射到特定范围(如 0~1 或 - 1~1),避免数值过大导致的梯度爆炸或模型不稳定

tanh函数((-1,1)sigmoid函数的位移版)效果更好,用在二分类的输出层sigmoid更好。

不同层的激活函数可以不同。

目前隐藏层的激活函数普遍用ReLU函数

激活函数特点适用场景
Sigmoid输出范围 (0,1),可表示概率;但存在梯度消失问题(输入过大 / 过小时梯度接近 0)。二分类问题的输出层
Tanh输出范围 (-1,1),中心对称;仍有梯度消失问题。早期隐藏层(现已较少用)
ReLU计算简单,缓解梯度消失;但存在 “死亡 ReLU” 问题(输入为负时神经元永久失效)。卷积神经网络(CNN)隐藏层
Leaky ReLU解决死亡 ReLU 问题,保留 ReLU 的高效性。深度学习通用隐藏层
Softmax输出多分类概率分布(和为 1)。多分类问题的输出层

 

为什么要有非线性激活函数:如果一直用线性激活函数,有隐藏层和没有任何隐藏层是一样的,即没有激活函数的神经网络无法学习非线性关系。


随机初始化

逻辑回归中可以初始化为0,但是其他的不一定能这样。

如果w全初始化为0,则输入相同的东西计算得到的输出总是相同的,各个神经元在计算同样的东西。

可以令w = np.random.randn((2,2))*0.01 #输入两个特征,则w为2×2的矩阵,乘0.01因为如果w是一个很大的数,则通过激活函数计算后输出结果落在一个坡度很平缓的地方,梯度下降较慢,减慢学习速度,所以一开始×0.01需要一个比较小的数(初始化参数一般较小)。

b可以设置为0,即b = np.zero((2,1))

http://www.dtcms.com/a/337623.html

相关文章:

  • 最短路spfa和多层图(P1073 [NOIP 2009 提高组] 最优贸易)题解
  • Linux系统等保三级安全加固执行手册(ReahtCentosKylin)
  • mq存量消息如何处理
  • STM32G4 Park及反Park变换(一)matlab建模
  • Spark 运行流程核心组件(三)任务执行
  • C语言基础:变量与进制详解
  • 直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化
  • 计算机网络技术-交换机配置(Day.2)
  • 戴尔易安信 PowerEdge R540服务器系统安装教程
  • 深度学习篇---卷积
  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • IoT/透过oc_lwm2m和at源码,分析NB-IoT通信模组和主板MCU之间的通信过程
  • 自建K8s集群无缝集成阿里云RAM完整指南
  • 重温 K8s 基础概念知识系列五(存储、配置、安全和策略)
  • Kubernetes(K8s)常用命令全解析:从基础到进阶
  • kubeadm方式部署k8s集群
  • 备考国央企-算法笔记-01链表
  • HakcMyVM-Friendly
  • MongoDB Windows 系统实战手册:从配置到数据处理入门
  • Esp32基础(③旋转编码器)
  • 用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
  • 上海1KM人口热力数据分享
  • 音频分类模型笔记
  • rust 从入门到精通之变量和常量
  • 杂记 04
  • 脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像
  • python的课外学习生活活动系统
  • 视觉语言导航(13)——AIR-VLN 4.3
  • Mysql核心框架知识
  • 学习雪花算法