softmax回归 讨论区

http://zh.diveintodeeplearning.org/chapter_deep-learning-basics/softmax-regression.html

第 y(i)(样本 ii 类别的离散数值)个元素为 1
这句话什么意思啊,y(i)不是个向量吗

1赞

y是向量,y(i)是其第i个元素。(你可以理解为one hot encoding)

在使用softmax时,使用了如下公式,原因是为了使得转换后的变量和为一。
image
但为什么不用类似下述的公式呢?
y_1=\frac{0_1}{\sum_i(o_i)}
这样转换后的变量和仍然为一且计算量还小。

2赞

你这个方程可能会出现负数,而一个概率为负是没有意义的。所以用exp把每一个o1 o2 o3转化成非负值

3赞

关于练习题:交叉熵函数和极大似然估计有什么异曲同工之妙?
我在推导极大似然函数作为loss function的时候,对极大似然损失取log,发现和交叉熵的公式是一样的。所以我能不能说极大似然函数和交叉熵函数作为loss function本质上是一样的?

感谢这个课程,我想补充一点东西(范例)

cross entropy一般是用来量化两个机率分布之间的差距的
举个例子,你现在要预测一张图片是狗或猫
你的模型得到的概率是
狗 = 0.4, 猫 = 0.6
而真实的概率则是
狗 = 0.0, 猫 = 1.0

那么预测出来的概率和真实的概率,两者之间的差距有多大呢?这就是cross entropy要量化的事情了
根据上述的例子,我们可知道cross entropy为

-( 0.0 * log(0.4) + 1.0*log(0.6) ) = 0.22

0.22代表的是你的model预测出来的概率和真实的概率之间,差距有多大

我觉得比起硬绷绷的数学公式,加入一些例子会比较容易理解和记忆
有说错的地方请不吝指教

9赞

建议将

“虽然我们仍然可以使用回归模型来进行建模”

修改为

“虽然我们仍然可以使用线性回归模型来进行建模”

为什么我在别的的地方看到交叉熵求和的是y*log( p)+(1-y)*log(1-p)?这个教程里是只有第一项?这两个什么关系?

这个公式我在Andrew Ng的课程里见过,应该是用在二分类的情况下,如果分类情况多于二的话就需要用这个课程里的公式。

我这是我一个人的问题吗? 感觉没渲染出来啊

刷新一下浏览器试试?

你不能保证算出来的值是正的,比如,O1 = -2, O2 = -8, O3 = 5, 结果按照你算出来的,Y3 = -1,不知道我这样理解的对不对。

我觉得你这样说,可以让我更容易地理解交叉熵函数

@stereomatchingkiss 你举的例子确实很好理解。我有一个问题,

作者说$$ y(i)y(i)个元素y(i)y(i)yy(i)(i)为1,其余全为0,这个地方怎么理解?

既然是计算预测值和真实概率之间相差多少,为何不用1-0.6呢?

所以这个公式的最鲜明特色是$ -ln(x) $是个下凸函数,误差越大损失值涨的越快,

  1. 假设本来该是1,结果你得出来是0.9 ,误差就是$ -ln(0.9)=-0.1 $,
  2. 假设本来该是1,结果你得出来是0.1 ,误差就是$ -ln(0.9)=-2.3 $, 两者相差可不是线性的关系
2赞

负数好解决啊,采用oi平方即可

你头像好骚哦~

其实衡量两个概率分布的差距,应该用KL散度更合理,但是在真实概率标签为one-hot的时候(即狗=0,猫=1)时,最小化KL散度等价于最小化交叉熵。
因为有如下公式:
假设p为真实分布(狗=0,猫=1), q为模型预测的分布(狗=0.4,猫=0.6)
KL(p||q) = 交叉熵H(p, q) - 熵H( p)
而由于后者 熵H( p)在one-hot定义时值恒为0,所以KL(q||p) = 交叉熵H(q,p) , 最小化KL相当于最小化熵。

在公式 H = y*log( p) +(1-y)*log(1-p)这个公式中,
y表示某一个的真实标签。
如果y=0,表示当前样本的真实标签为0。此时, H=(1-y)log(1-p)。也是只有一项。
如果y=1,表示当前样本的真实标签为1。此时, H=y
log§。也是只有一项。
就看当前样本的真实标签是哪一类,就保留哪一项。其它项都是0.