【CS231n】Softmax浅谈 + Softmax代码实现

本文深入探讨了Softmax分类器,它作为SVM的改进,通过归一化的对数概率提供更直观的解释。文章对比了Softmax与SVM的区别,并详细介绍了交叉熵损失函数。此外,还提供了详细的代码实现,包括数据预处理、计算损失和梯度,并分析了向量化计算的优势。
摘要由CSDN通过智能技术生成

1. Softmax

1.1 Softmax概要

        Softmax分类器可以认为是在SVM分类器的基础上做了一些改进,SVM的输出为对于一张image在各个类别上面的评分,因为没有明确的参照,所以很难直接解释。而Softmax则不同,Softmax将对于一张image在各个类别上面的评分看作为归一化的对数概率,概率给了我们明确的参照,我们可以认为这张image应该认为是概率最高所对应的类别。

1.2 Softmax VS SVM

    SVM认为只要在正确分类上面的得分高出其它类别Δ就不会对损失产生任何贡献,而Softmax却认为在概率归一化以后在正确类别上面的概率大于其它类别上面的概率。

   SVM鼓励我们在正确类别上面的得分高出其它类别的得分Δ,Softmax鼓励我们在正确类别上的概率(归一化后)趋于1。

2. Loss Fuction

2.1 cross-entropy loss

                        {\color{Red} }L_i = -log(\frac{e^{f_{y_i}}}{\sum_{j} e^{f_j}})

2.2 calculus

2.2.1 当 j == yi :  

                                    \{-log(\frac{e^{f_{y_i}}}{\sum_{j} e^{f_j}}) \}^{'}

                              = - \frac{\sum _j e^{f_j}}{e^{f_{y_i}}}(\frac{e^{f_{y_i}}}{\sum _j e^{f_j}})^{'}

                              = - \frac{\sum_j e^{f_j}}{e^{f_{y_i}}}\frac{e^{f_{y_i}}*\sum_j e^{f_j} -e^{f_{y_i}}*(\sum_j e^{f_{y_j}})^{'}}{(\sum_j e^{f_j})^2}

                              = - \frac{\sum_j e^{f_{j}} - e^{f_{y_i}}}{\sum _j e^{f_j}}

                             =\frac{e^{f_{y_i}}}{\sum_j e^{f_{j}}} -1

2.2.2 当 j != yi

                                 \{-log(\frac{e^{f_{y_i}}}{\sum_{j} e^{f_j}}) \}^{'}

                         = - \frac{\sum _j e^{f_j}}{e^{f_{y_i}}}(\frac{e^{f_{y_i}}}{\sum _j e^{f_j}})^{'}

                         = - \frac{\sum _j e^{f_j}}{e^{f_{y_i}}} \frac{0 - e^{f_{y_i}}*(\sum_j e^{f_j})^{'}}{(\sum_j e^{f_j})^2}

                         = \frac{e^{f_j}}{\sum_j e^{f_j}}

3. 代码实现

github:https://github.com/GIGpanda/CS231n

代码由两个文件组成,一个叫softmax.py, 另一个也叫softmax.py

3.1 softmax.py(整体框架)

3.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值