Sigmoid函数的求导证明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sigmoid函数的求导证明相关的知识,希望对你有一定的参考价值。
参考技术A 前文提到了神经网络中的Sigmoid函数,实际上在反向传播中还会用到Sigmoid的导数,形式很简单: s(x)*(1-s(x)),但是我想把这个过程自己推导一次,顺便复习一下导数和微分。Derivative(导数)和Differential(微分)
首先我画了一张图来说明什么是导数和微分,本质上就是在极限中以线性函数(直线)来表示非线性函数(曲线)。
红色的线是第一条割线(从[x,f(x)]到[x+h, f(x+h)]),(f(x+h) - f(x))/h 就是割线的斜率,物理学上是一段时间内的平均速度。
灰色的线是第二条割线,当割线围绕着[x, f(x)]为原点继续顺时针转动时,h会不断变小,小到极限就变成了[x, f(x)]的切线。
蓝色的线即这条切线,其斜率就是[x,f(x)]的 导数 ,物理意义是当前这一个点的瞬间速度。
当h小到极限的时候dy(导数除以h)就是[x,f(x)]的微分。
割线斜率减去切线斜率即为误差函数E(h)
Reciprocal Rule(倒数法则)
根据微积分中的倒数法则,如果g(x) = 1/f(x), 则有
这个简单公式也非常容易证明
再将极限表达式分拆一下
因为f在x点的连续性第二个极限表达式的分母等于f(x)的平方
现在利用倒数法则把Sigmoid函数的导数推导一下,这次我们记Sigmoid函数为s(x),它的倒置函数为f(x)
根据倒数法则从f(x)开始推导得出公式S1
Chain Rule(链式法则)
根据链式法则我们可以有关于幂指求导的推广
即
于是可以得出f(x)导数的另一种表达式S2
最后我们把S2和S1放到一起来消元就可以得到Sigmoid的导数公式了
用Python来实现如下逻辑:
References:
1. Differential on wiki
2. Chain rule on wiki
3. Derivatives of logarithmic and exponential functions
4. MIT open course - Multivariable Calculus
5. Mathematics Stack Exchange
第六周了加油鸭
---恢复内容开始---
山师第六周学习心得
一.高数重点小结
1.导数
?即函数变化率的极限
2.函数的求导法则
?函数的和差积商求导法则与复合函数求导法则(高中内容不再赘述)
?反函数的求导法则
[f -1(x0)]‘=(frac{1}{f‘(y)})
3.函数在某处连续、可导、极限存在的证明比较
?可倒一定连续,连续不一定可导
(哈哈哈哈哈哈哈哈嗝)
?在某处连续:(1):(limlimits_{x ightarrowx0})f(x)=f(x0) (2)f(x0+)=f(x0-)
?在某处可导:(1)f ‘-(x0)=f ‘+(x0)
?极限存在:(1)f (x0-)=f (x0-)
4.高阶导数
重难点:莱布尼茨公式(计算时注意是否有某一项因式求导后为零)
5.隐函数求导
?一般方法:等式两边分别求导(y相当于复合函数,求导时注意准确性)
?对数求导法:适用于(1)幂指函数
(2)多因子乘幂函数
二.c语言重点小结
1.课堂内容
? 利用数组处理批量数据:
定义一维数组a[n],方括号内的下标从0开始,可以包括常量和符号常量,不能包含变量,不可越界(无法检测出来此错误)
?运用数组的一些算法
(1)除留余数法将十进制数转化为二进制数;
#include<stdio.h> int main() { int a[100]; int n,i=0; scanf("%d",&n); while(n!=0)//n最后为0时取余结束 { a[i]=n%2;//取余数 n=n/2; i++; } for(int j=i-1;j>=0;j--)//将余数倒序输出 printf("%d",a[j]); return 0; }
结果:
(2).将一串数字逆置
#include<stdio.h> main() { int j; scanf("%d",&j); int a[j]; int i,t; for(i=0;i<j;i++) scanf("%d",&a[i]); for( i=0;i<j/2;i++)//将对称的元素互换(若写为i<j,则会互换两次,数字回到了原位) { t=a[i]; a[i]=a[j-i-1]; a[j-i-1]=t;//第i个元素与第j-i-1个元素互换 } for(i=0;i<j;i++) printf("%d",a[i]); return 0; }
结果:
2.自学内容
选择排序
从第一个元素开始,依次将其与后的元素相比并与最小的那个元素进行交换,n轮比较后各元素即可按由小到大的顺序排列。
冒泡排序
每次将相邻两个数进行比较,将较小的那个数调到前面,再进行下一趟两两比较,直到最小的数“上浮”到第一个。
(若有n个数,要进行n-1次比较,在第一趟比较中要进行n-1次两两比较,在第j次比较中要进行n-j次两两比较)
三.英语积累汇总
1.语法知识点
(1)虚拟语气从句为if+had done,主句为would+had done,可省略if,助动词had提前。
例句:If I had known what this week‘s lecture was about,I wouldn‘t have gone.
Had I known what this week‘s lecture was about,I wouldn‘t have gone.
(2)with+符合宾语(宾语后加上作宾部的adj,adv或非谓语动词)表原因或伴随。
例句:The music was playing loudly,I coudn‘t concentrate.
With the music played loudly,I coudn‘t concentrate.
2.词汇积累
essential 必要的 clutter 杂乱的 amass 积累
fussy 爱挑剔的,难取悦的 thereby 由此 indiscriminate 任意的
四.学习感悟(?)
高数学习成果的巩固要靠刷题。。。
C语言要天天练手。。。
---恢复内容结束---
以上是关于Sigmoid函数的求导证明的主要内容,如果未能解决你的问题,请参考以下文章