损失函数(Loss)也可能有影响

4. 损失函数(Loss)也可能有影响

(还没看长的版本)

在回归问题中,输入一个值,输出一个预测值,通过计算预测值与真实值之间的差距来判断预测的是否准确。

在分类问题中,也可以将他看作为一个特殊的回归问题,输入一个值,输出一个预测值,但是如果简单的把分类从线性上挨个罗列出来会产生歧义,例如将类别1的真实值设为1,类别2的真实值设为2,类别3的真实值设为3。那么这里就会默认一个信息,类别1和2相似,类别2和3相似,因为二者的距离更小;而类别1,3则不相似,因为距离大。但是这样的分类并不准确,因为类别之间可能不具有任何相似关系。

所以将分类问题使用回归来解决的话,使用one-hot vector来解决整个情况。就是将类别划分为向量:

y 1 ^ = [ 1 , 0 , 0 ] T \hat{\bm{y_1}} = [1,0,0]^T y1^=[1,0,0]T

y 2 ^ = [ 0 , 1 , 0 ] T \hat{\bm{y_2}} = [0,1,0]^T y2^=[0,1,0]T

y 3 ^ = [ 0 , 0 , 1 ] T \hat{\bm{y_3}} = [0,0,1]^T y3^=[0,0,1]T

其中每个类别只有一个位置不为零,其他的位置都为零。

这样的话每个类别所代表的向量之间的距离都是两两相等的,就不再有相似的问题。

因为每个类别都是向量,所以要输出的话,就要有对应向量的维度的输出,上例中即为3个。

然后对所计算的结果经过softmax后,得到 y ′ y' y,然后才去计算 y ′ y' y y ^ \hat y y^的距离。

这里的softmax单独去听了李宏毅老师2020年的课程去寻找答案。(还没做)

用骗小孩的话说就是softmax是把 y y y归一化之后和label y ′ y' y计算相似度。

但归一化只是softmax的一个附加结果。

soft-max:

y i ′ = e x p ( y i ) ∑ j e x p ( y i ) y'_i = \frac{exp(y_i)}{\sum _j exp(y_i)} yi=jexp(yi)exp(yi)

其中每个 y i y_i yi是一个数字,是向量中的一个分量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bIyZumS1-1648377083747)(./imgs/softmax.png)]

softmax还有附带效果:让让大的值与小的值差距更大

如果是二分类的话softmax则等价于sigmoid。

计算 y ′ y' y y ^ \hat y y^之间距离的方法有很多:可以是MSE,但是有另外一个更常用的做法:

叫做交叉熵cross-entorpy:

e = − ∑ i y ^ i l n y i ′ e = -\sum_i \hat y_i ln y'_i e=iy^ilnyi

即把y的每一个维度按照真值乘计算后softmax后得到的值全加起来取负。当 y ^ \hat y y^, y ′ y' y相等的时候,cross-entropy也是最小的。

那么cross-entropy是哪来的呢?

首先,minimizing cross-entropy等价于maximizing likelihood,一模一样。

cross-entropy很常用,常用到在pytorch中,softmax与cross-entropy是绑定在一起的。只要调用cross-entropy里面就自动内建了softmax。当选择cross-entropy作为loss function的时候,pytorch自动把softmax加到神经网络的最后一层。所以如果此时手动再加,则会成了使用了两次softmax。可见二者的关系紧密。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值