sigmoid函数的数值稳定性

在深度学习中,我们常常选用sigmoid函数作为激活函数。sigmoid函数的具体形式如下:

f(x)=11+ex

曲线表示为:




再画大一点,取x区间更大一些,则为:

这里写图片描述

显然从图像上看,sigmoid函数是数值稳定的,即对于更大范围的x,y的取值是连续的,有效的。

从理论上看,

limx+f(x)=1;limxf(x)=0

且中间数值可以从数学上证明是稳定的。
但我们考虑1-f(x)呢?
1f(x)=ex1+ex

我们用matlab绘制其曲线:


这里写图片描述

我们发现这时,当x趋向负无穷,甚至仅仅x趋向-800,此时1-f(x)就不再稳定了,在matlab的值变成了NAN了

其实我们发现,对于 1- f(x),显然当x趋向正无穷时,还是稳定的,此时:
分子:ex0,而分母:1+ex1,

显然01,结果趋向0.

但是当x趋向负无穷时,此时,
分子: ex+,而分母:1+ex+,
此时:
ex1+ex就会变得不稳定,尽管理论上趋向1。
因此就出现了以上的图像。

那么如何解决这种不稳定问题的解呢?

其实有两种办法:

(一)先计算稳定的f(x),结果赋予y,再计算1-y .

乍看从数学上,好像完全一致,但是在数值解上不等价。 y=f(x)是稳定的,因此对于1-f(x)=1-y也变成了稳定的解。

我们从图像上证明:


这里写图片描述

此时就正确了,与理论解完全一致。

(二)直接从1-f(x)着手
这里我们从caffe的sigmoid_cross_entropy_loss_layer.cpp得到启发。

主要办法就是对于

1f(x)=ex1+ex

分别考虑正负x.

x0时,维持上式不变;
x<0时,分子分母同时乘以ex,则有:

ex1+ex=ex1+ex11+exx0x<0

此时绘制曲线为:


这里写图片描述

因此在实际coding中,我们需要考虑计算的稳定性。

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

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

相关文章

查看CentOS版本方法

有以下命令可以查看&#xff1a; # lsb_release -a LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarchDistributor ID: CentOSDescription: CentOS release 5.4 (Final)Release: 5.4Codename: Final这个命令适用于所有的li…

windows远程连接ubuntu 黑屏_Windows跟Windows远程连接传输文件

关注奕奇科技&#xff0c;学习更多小妙招电脑小知识&#xff0c;值得收藏我们一般在使用windows远程连接时需要传输文件该怎么办&#xff1f;我们可以插入U盘导入导出&#xff0c;但这样很是麻烦而且如果身边暂时没有U盘的情况就要通过社交工具传播文件&#xff0c;大的文件也更…

思维导图分析http之前端组成

思维导图分析http前端组成全文总览本文分为三个部分&#xff1a;前端组成&#xff0c;http协议&#xff0c;http服务器应用程序。http的应用按照我自己的理解分为前端应用以及后端应用&#xff0c;所以我分别写了前端组成以及http服务器应用程序两章&#xff0c;中间穿插了一章…

Linux命令工具基础02 文件及目录管理

文件及目录管理 文件管理不外乎文件或目录的创建、删除、查询、移动&#xff0c;有mkdir/rm/mv 文件查询是重点&#xff0c;用find来进行查询&#xff1b;find的参数丰富&#xff0c;也非常强大&#xff1b; 查看文件内容是个大的话题&#xff0c;文本的处理有太多的工具供我们…

caffe 关于Deconvolution的初始化注意事项

对于fcn&#xff0c;经常要使用到Deconvolution进行上采样。对于caffe使用者&#xff0c;使用Deconvolution上采样&#xff0c;其参数往往直接给定&#xff0c;不需要通过学习获得。 给定参数的方式很有意思&#xff0c;可以通过两种方式实现&#xff0c;但是这两种方式并非完…

多目标进化优化_SDIM 学术讲座|分解多目标优化与帕累托多任务学习

分解多目标优化与帕累托多任务学习2020年11月4日晚&#xff0c;香港城市大学电脑学系讲座教授、博士生导师、IEEE Fellow张青富教授应我院王振坤教授的邀请&#xff0c;在线举办了一场主题为“分解多目标优化与帕累托多任务学习”的学术讲座。此次讲座采用线上和线下两种渠道&a…

hibernate(nested transactions not supported)异常

org.hibernate.TransactionException: nested transactions not supported错误的解决方法&#xff01; 原因&#xff1a;事务没有提交&#xff0c;事务提交后正常 Transaction tx session.beginTransaction(); tx.commit(); //缺少这句话转载于:https://www.cnblogs.com/lmq-1…

Ubuntu使用Windows下的conio.h

把虚线框里面的内容粘贴进文档文本里面 ---------------------------------------------------------------------------------------------------------- #include <termios.h>#include <stdio.h>static struct termios old, new;/* Initialize new terminal i/o …

安装oracle-java,并覆盖原先的OpenJDK

Centos默认安装openJDK只安装了java,没有安装javac.如果需要安装javac&#xff0c;需要install the openjdk-8-jdk package。参考&#xff1a;http://openjdk.java.net/install/ 为了完整地安装java&#xff0c;我们转而选择使用oracle-java&#xff0c;由于我们没有root权限&a…

反射创建对象_如何应用Java反射技术灵活地创建程序类的对象实例

软件项目实训及课程设计指导——如何应用Java反射技术灵活地创建程序类的对象实例1、如何应用属性配置文件实现对系统中的配置信息进行读写操作Java中的属性配置文件主要可以作为软件应用系统及项目的配置文件&#xff0c;比如许多J2EE的开源框架系统中都提供了属性配置文件作为…

js回到顶部

2019独角兽企业重金招聘Python工程师标准>>> <html xmlns"http://www.w3.org/1999/xhtml"> <head runat"server"> <title></title> <style type"text/css"> #control_pannel …

java 产生的固体物的基础上 增删改的SQL声明

经过多次修改。最后版本。package com.power.sql;import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; import java.util.Vector;import org.apache.commons.lang3.reflect.FieldUtils; /*** author Gary Huang* 博客地址&#xff1a;…

OSEK简介

What is OSEKA specification for an RTOS•With standard software interfaces (OS API)•Including intertask & interprocessor communication (COM)•Including network management (NM)•Including the language used to statically declare OS elements used in an a…

python中布尔型的值_在python中对于bool布尔值的取反操作

背景根据公司业务的需求&#xff0c;需要做一个对于mysql数据库的大批量更新。脚本嘛也是干干单单。使用了redis的队列做缓存&#xff0c;可以异步并发的多任务进行更新。有点难受的地方在于&#xff0c;请求访问时&#xff0c;因为一些网速&#xff0c;速率之内的原因&#xf…

门道多:一次MaxCompute PS任务的问题排查之旅

关于PS是什么&#xff0c;可以参考一下以下两个介绍&#xff1a;基于参数服务器的大规模在线学习算法和Parameter Server。更多问题可以咨询玄乐。下面主要总结一下这回遇到一个PS任务跑不起来的问题排查过程。不想看过程的直接看最后一点总结就行。一 为什么要分享一个问题排查…

源码安装Bazel

有时候我们需要源码安装tensorflow&#xff0c;这时逃不过的第一步就是安装Bazel,如果没有root权限的时候&#xff0c;这时我们就需要源码安装Bazel了。下面是安装步骤&#xff0c;参考&#xff1a;https://docs.bazel.build/versions/master/install-compile-source.html 1. E…

234. Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time and O(1) space? 先找到链表中点&#xff0c;将第二部分反转&#xff0c;然后比较两部分链表的值。 /** * Definition for singly-linked list. * public class ListNo…

当查找名字的时候通过外围作用域向外查找(如何理解)

int a;//#1int b;//#2namespace A{int c;//#3void fun(){int a;//#4使用(a);//从里查找已经声明名字首先寻找内层花括号之内a找#3//会继续查找使用(b);//从里查找已经声明名字//首先寻找内层花括号之内没有声明b//继续外层花括号&#xff08;namespace A&#xff09;内寻找没有…

python 服务注册_将python程序注册为Ubuntu系统服务,并开机启动的方法。

一、系统环境操作系统&#xff1a;ubuntu 18 (该版本已默认使用systemd作为init)python版本&#xff1a;3.6二、步骤(一)准备python程序1、在 /usr/bin/ 下新建python程序 svc-test.py# nano /usr/bin/svc-test.py#! /usr/bin/python3import timewhile True:f open(/tmp/svc-t…

源码安装NASM,无root权限

首先说明我的系统是redhat linux64位。没有root权限。我们想安装nasm2.13. 下面介绍具体的安装步骤。 1. 下载源码: https://www.nasm.us/pub/nasm/releasebuilds/2.13/ 选择nasm-2.13-xdoc.tar.gz下载在本地目录下 2. 解压&#xff0c;tar -xvzf nasm-2.13-xdoc.tar.gz &…