softmax
本文主要对于交叉熵的手动计算和PyTorch中的CrossEntropyLoss模块计算结果不一致的问题展开讨论,查阅了PyTorch的官方文档,最终发现是CrossEntropyLoss在计算交叉熵之前会对输入的概率分布进行一次SoftMax操作导致的。 在强化学习中,策略学习常用到一个损失函数为l=−lnπθ(a∣s)⋅gl=-\ln\pi_\theta(a|s)\cdot gl=−lnπθ(a∣s)⋅g,其中πθ\pi_\thetaπθ在状态sss下是关于动作的一个概率分布,而动作aaa是经验中记录的,在状态sss下选择的确定动作。因此有: 因此,该损失函数便被转换为了计算两个概率分布之间交叉熵的计算形式
结论 - 最大熵模型就是softmax分类 - 在满足广义线性模型的平衡条件下,满足最大熵条件的模型映射函数就是softmax函数 - 在统计机器学习方法一书中,给出了在特征函数定义下的最大熵模型,其与softmax回归都属于对数线性模型 - 当特征函数从二值函数扩展为特征值本身时,最大熵模型就化为softmax回归模型 - 最大熵最大化的是条件熵,不是条件概率的熵,也不是联合概率的熵。 分析这个等式: 大白话:我们希望得到这么一个映射函数\(\pi\),对某一维(j)特征,用所有样本被映射函数归为第u类的概率加权所有样本的特征值之和,等于第u类内所有样本的特征值之和。显然,最好的情况就是左右两个累加式内的元素完全一样,只有第u类的样本被累加,且第u类样本被映射函数归为第u类的概率为1,其他类样本被归为第u类样本的概率为0. 但是,这个等式非常的宽松,它只要求两个和式相同,并不要求每一个元素相同,而且这个式子没有显示的写出映射函数的表达式,任何满足该式的非线性映射都有可能称为映射函数
Transformer完全改变了2017年后NLP领域的模型方向 从某种意义上说BertGPT等模型都是Transformer模型的变体 虽然模型结构有各种改变 但是其中的一些基本计算单元则变化较小. Transformer几乎就是为了改善计算性能而专门设计的模型. 完全没有RNN之类的循环计算需求 这就极大降低了计算过程中的顺序依赖 可以极大提高并行性. 正是由于Transformer使用到的基本计算单元非常简单 几乎就只有 gemm +-*/ layernorm softmax 也没有奇怪的计算流程 所以原文的作者将其称为一个"简单"的模型是很有道理的. 本文就是简单记录Transfomer中使用到的基本计算单元. 属于未分类分类。作者是edimetia3d。
将训练一个机器学习模型用于预测图片里面的数字. 数据集被分成两部分:60000行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test) 把这些图片设为“xs”,把这些标签设为“ys” 训练数据集的图片是 mnist.train.images ,训练数据集的标签是 mnist.train.labels 可以得到输入图片 x ,[784]的向量,它代表的是数字 i 的证据可以表示: softmax函数可以看成是激励函数(activation),把线性函数输出转换成想要的格式:关于10个数字的概率分布。 结合上面的evidence可以知道,evidence越大,正则化后的结果更大,就是权重更大。 进一步写成:
本文为机器学习系统设计的好书 Machine Learning Design Patterns 中介绍的第六个模式:Multilabel pattern 的笔记。常见的例子像是帮一篇文章标上数个标签,或者预测一个人未来不同慢性病的患病几率等等。 在网络模型的最后一层用 sigmoid 就能让产生对于每个分类的几率
