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

神经网络(十)激活函数DLC

激活函数是构成神经元的重要部件之一,它衔接了神经元净输入z和神经元净输出a

可以分为以下几种:

一、Logistic函数

        \sigma(x)=\frac{1}{1+exp(-x)}

        可以视为一个挤压函数,输出区间[0,1],输入越小越接近0,输入越大越接近1。连续可导;可以作为软性门

        Hard-Logistic函数

                        其中 g_l(x)=\sigma(0)+x\times {\sigma}'(0)=0.25x+0.5实质为\sigma(x)在0出的泰勒展开

                                {\sigma}'=\sigma(x)(1-\sigma(x))

                        最终形式为:=max(min(g_l(x),1),0)=max(min(0.25x+0.5,1),0) 

二、Tanh函数

        tanh(x)=\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}

         可视为变换后的Logistic函数 tanh(x)=2\sigma (2x)-1,值域为[-1,1] 

         Hard-Tanh函数

                g_t(x)=tanh(0)+x \times {tanh}'(0)=x

                         最终形式为:=max(min(g_t(x),1),-1)=max(min(x,1),-1)

        上述激活函数的图像如下图:

         !!!Hard型函数用于解决Logistic函数和Tanh函数计算开销过大的问题。采用分段函数进行模拟近似(其在0附近都具有近似性),近0点采用导数进行近似

三、ReLU函数

        神经网络中较为常用的一种激活函数,实际为一个斜坡函数

        优点:具有生物合理性(单侧抑制,宽兴奋边界),同时具有良好的稀疏性(50%左右的神经元处于激活状态,而Sigmoid型激活函数会导致一个非稀疏型神经网络) 

        缺点:其为非零中心化(会给下一层引入偏置偏移,影响梯度下降的效率)可能出现ReLU死亡现象

        为避免ReLU死亡问题,出现以下几种变种函数

        1.带泄露的ReLU

                在x<0时,保持一个较小的梯度\gamma

                 当\gamma <0.01时,可以写作LeakyReLU(x)=max(x,\gamma x)

        2.带参数的ReLU

                引入一个可以学习的参数,对于第 i 个神经元

                       若\gamma_i=0则会退化为ReLU

                       若\gamma_i非常小,这可以视为LeakyReLU

                       允许一组神经元共享一个参数,也可以是不同的参数

        3.ELU函数

                是一个近似的零中心非线性函数

                        其中\gamma\geq 0为超参数,决定 x≤0时的饱和曲线,并调整输出均值在0附近

        4.Softplus函数

                可以视为Rectifier函数的平滑版本

                                Softplis(x)=log(1+exp(x))

                 其导数刚好为Logistic函数,虽然具有单侧抑制、宽兴奋边界;但没有稀疏激活性

四、Swish函数

        自门控激活函数

          swish(x)=x\sigma(\beta x)

        其中\sigma(.)可以视为Logistic函数\beta是一个可以学习的参数/固定的超参数

        当\sigma(\beta x)接近1时,门处于开的状态;\sigma(\beta x)接近-时,门处于关闭状态

                其形态由\beta控制

                        \beta=0时,Swish函数变为\frac{x}{2}

                        \beta=1时,Swish在x >0时近似线性,在x <0时近似饱和,同时具有非单调性

                        \beta\rightarrow \infty时,Swish函数可以近似为ReLU函数

五、GELU函数

        高斯误差线性单元,也是通过门控机制来调整输出值的激活函数,类似Swish

        GELU(x)=xP(X\leq x)

        其中P(X \leq x)高斯分布N(\mu,\sigma ^2)的累积分布函数,一般设\mu=0,\sigma=1

                高斯分布即为正态分布,常用的形式为标准正态分布N(0,1)

        GELU函数可以由Tanh或Logistic近似

                 GELU(x) \approx 0.5x(1+tanh(\sqrt{\frac{2}{\pi}})(x+0.044715x^3))

        ​​​​​​​        GELU(x) \approx x\sigma(1.702x)

六、MaxOut单元

        一种分段线性函数,不同于上面的激活函数只能处理净输入值z(标量),其可以直接处理上层的全部原始输入(向量)

        每个MaxOut单元有K个权重向量w_k,可以得到K个净输入z_k

        ​​​​​​​        z_k=w^T_kx+b_k

        MaxOut单元的非线性定义为

        ​​​​​​​        ​​​​​​​maxout(x)=\underset{k\in [1,K]}{max}(z_k)

相关文章:

  • 堆技巧 数组反向越界泄露地址
  • 技术分享| 基于RTM 实现的呼叫邀请如何添加推送功能?
  • IMX6ULL学习笔记(3)——挂载NFS网络文件系统
  • RestTemplate使用
  • Mysql---子查询的三种查询方式( 表子查询,条件子查询,列中子查询)
  • springboot+学校运动会信息管理 毕业设计-附源码231058
  • 进行日常记账后,怎样导出表格
  • Vue3中组件数据的传递以及更改
  • geoserver2.18(8):添加CSW(网络目录服务)扩展及前端开发调用
  • DOM--页面渲染流程
  • LeetCode 85双周赛(补记)
  • Apache DolphinScheduler PMC:开源不一定也要九死一生
  • SpringMVC之拦截器
  • Linux环境Docker的安装过程
  • 第四章【ADFS集成Exchang实现OWA\ECP单点登录SSO】安装Active Directory联合身份验证服务(AD联合身份验证 ADFS)
  • php的引用
  • [LeetCode] Wiggle Sort
  • 08.Android之View事件问题
  • Cookie 在前端中的实践
  • JS数组方法汇总
  • Koa2 之文件上传下载
  • Magento 1.x 中文订单打印乱码
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • ubuntu 下nginx安装 并支持https协议
  • Vim 折腾记
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • XForms - 更强大的Form
  • 记一次用 NodeJs 实现模拟登录的思路
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端临床手札——文件上传
  • 前端性能优化--懒加载和预加载
  • 深入浅出webpack学习(1)--核心概念
  • 双管齐下,VMware的容器新战略
  • 学习使用ExpressJS 4.0中的新Router
  • 鱼骨图 - 如何绘制?
  • ​香农与信息论三大定律
  • ​用户画像从0到100的构建思路
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Python第六天)文件处理
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三) diretfbrc详解
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core 中间件验签
  • .Net Core和.Net Standard直观理解
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET面试题(二)
  • .net中的Queue和Stack