博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Softmax v.s. LogSoftmax
阅读量:4145 次
发布时间:2019-05-25

本文共 1287 字,大约阅读时间需要 4 分钟。

Softmax v.s. LogSoftmax

 

Follow

 · 3 min read

 

 

 

 

這個是用pytorch蓋LeNet的時候,在輸出的時候加上softmax發現效果很差,所以就來研究softmax的數學特性,順便把LogSoftmax也一起比較.

softmax的功用:

softmax是把一群數據x=[x1,x2,…,xn],都指數化,然後加總,再把加總除每個分項,結果會讓每個分項都介於0~1,和sigmoid不同的,softmax後的數據組總和會是1

下圖是softmax的數學推導,主要是在反向傳遞上,softmax_xi對xi的微分後,可以拆成兩個分項,(1-softmax_xi)*softmax_xi,也就是說softmax算出來多少,誤差傳遞的鏈鎖上就會多乘這兩個分項,那這個在計算上會有什麼效果呢?

 

 

如果在softmax_xi很大的情況下(接近1),比如說0.999,那整個反向傳遞就會多乘上(0.999)(1–0.999)=0.999*0.001=0.000999,這代表你的誤差整整縮小超過1000倍,除非loss本身就很大,不然整體網路的訓練效果會非常非常差.

同理在softmax_xi很小(接近0)的情況下也會有一樣的情況.

還有一種是sofmax組內數據很多的時候,每個分項除下來都很小,這種時候整個網路的訓練效率就非常非常差.

因此softmax的限制其實不小,很容易就權重更新龜速.

logsoftmax的功用:

這個則是把softmax算出的結果取log,對於小於自然對數e的數字而言,取log後會小於零,所以輸出都是負值,而且越小的值取log後,輸出效果會越顯著,比如softmax=0.001,那取log會變成:-6.90775,因此經過logsoftmax以後的數據組就很難敘述他的特性了,運算如下圖

 

 

重點在於反向傳播的部分,他的微分後的結果是(1-softmax_xi),和softmax相比少了一項,因此就不會有softmax分項極大或極小的狀況下,誤差回傳效果極差的現象.

logsoftmax在輸出越負的狀況下,反向傳遞的倍率會越接近1,在輸出越接近0的情況下,反向傳遞的倍率會越接近0.(logsoftmax輸出都是負的,輸出越負,取絕對值後反而是越大的)

這個特殊的反向傳遞現象會有幾個結果,

  1. loss的magnitude很大,輸出的magnitude也很大,倍率接近1,因此反向傳遞的更新極快
  2. loss的magnitude很大,輸出的magnitude很小,倍率接近0,因此反向傳遞的更新偏慢
  3. loss的magnitude很小,輸出的magnitude很大,倍率接近1,因此反向傳遞的更新偏慢
  4. loss的magnitude很小,輸出的magnitude也很小,倍率接近0,因此反向傳遞幾乎無法更新

由於神經網路的配置很多樣化和初始權重隨機的條件下,各種可能性都有,但以本次講解的LeNet來說,訓練的中期以後就是loss magnitude偏小,輸出的magnitude也逐漸偏小,因此權重更新的速度也會慢慢降低.

转载地址:http://wvfti.baihongyu.com/

你可能感兴趣的文章
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>
6种方式实现JavaScript数组扁平化(flat)方法的总结
查看>>
49个在工作中常用且容易遗忘的CSS样式清单整理
查看>>
20种在学习编程的同时也可以在线赚钱的方法
查看>>
隐藏搜索框:CSS 动画正反向序列
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>