首页 > 编程知识 正文

softmax交叉熵损失函数公式,sigmoid函数图像

时间:2023-05-05 10:13:59 阅读:49884 作者:4999

softmax分类函数本教程介绍以下两部分:

在softmax函数交叉熵损失函数之前的教程中,您学习了如何使用Logistic函数实现二分类问题。 多分类问题可以使用多个逻辑回归,也称为softmax函数。 接下来,让我来说明一下softmax函数以及如何得到它。

请先导入教程中使用的软件包。

importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.colorsimportcolorconverter, listedcolormapfrommpl _ toolkits.MP lot3dimportaxes3dfrommatplotlibimportcmsoftmax函数在上一个教程中,Logistic函数只能用于二分类问题即,如果softmax函数的输入数据是c维的向量z,则softmax函数的数据也是c维的向量y,其中的值是0或1。 softmax函数实际上是归一化指数函数,定义如下。

softmax函数式的分母起到正则项的作用,可以

作为神经网络的输出层,softmax函数中的值可以由c个神经元表示。

对于给定的输入z,每一分类的概率t=c for c=1 . C可以表示为

这里,p(t=c|z )表示给定某个输入z时,其输入数据是c分类的概率。

下图表示,在某个二分类(t=1,t=2)中,输入向量为z=[z1,z2]时,输出概率p(t=1|z )如下图所示。

# definethesoftmaxfunctiondefsoftmax (z ) : return np.exp(z ) z )/NP.sum(NP.exp ) z ) plotthesoftmaxoutputfor

asses# Plot the output in function of the weights# Define a vector of weights for which we want to plot the ooutputnb_of_zs = 200zs = np.linspace(-10, 10, num=nb_of_zs) # input zs_1, zs_2 = np.meshgrid(zs, zs) # generate gridy = np.zeros((nb_of_zs, nb_of_zs, 2)) # initialize output# Fill the output matrix for each combination of input z'sfor i in range(nb_of_zs): for j in range(nb_of_zs): y[i,j,:] = softmax(np.asarray([zs_1[i,j], zs_2[i,j]]))# Plot the cost function surfaces for both classesfig = plt.figure()# Plot the cost function surface for t=1ax = fig.gca(projection='3d')surf = ax.plot_surface(zs_1, zs_2, y[:,:,0], linewidth=0, cmap=cm.coolwarm)ax.view_init(elev=30, a魁梧的小蚂蚁m=70)cbar = fig.colorbar(surf)ax.set_xlabel('$z_1$', fontsize=15)ax.set_ylabel('$z_2$', fontsize=15)ax.set_zlabel('$y_1$', fontsize=15)ax.set_title ('$P(t=1|mathbf{z})$')cbar.ax.set_ylabel('$P(t=1|mathbf{z})$', fontsize=15)plt.grid()plt.show()
P(t=1|z)的概率 softmax函数的导数

在神经网络中,使用softmax函数,我们需要知道softmax函数的导数。如果我们定义:


那么可以得到:


因此,softmax函数的输出结果y对于它的输入数据z的导数∂yi/∂zj可以定义为:


导数推导

注意,当i = j时,softmax函数的倒数推导结果和Logistic函数一样。

softmax函数的交叉熵损失函数

在学习softmax函数的损失函数之前,我们先从学习它的最大似然函数开始。给定模型的参数组θ,利用这个参数组,我们可以得到输入样本的正确预测,正如在Logistic损失函数推导中,我们可以仿照写出这个的最大似然估计:


最大似然估计

根据联合概率,我们可以将似然函数改写成:P(t,z|θ),根据条件分布,我们最终可以得到如下公式:


条件分布

因为我们不关心z的概率,所以公式又可以改写为:L(θ|t,z)=P(t|z,θ)。而且,P(t|z, θ)可以被写成P(t|z),如果θ会一个定值。因为,每一个ti都是依赖于整个z,而且只有其中一个t将会被激活,所以我们可以得到下式:


概率推导

正如我们在Logistic函数中推导损失函数的导数一样,最大化似然函数就是最小化它的负对数释然函数:


负对数似然函数

其中,ξ表示交叉熵误差函数。在二分类问题中,我们将t2定义为t2=1−t1。同理,在softmax函数中,我们也可以定义为:


交叉熵误差函数

在n个样本的批处理中,交叉熵误差函数可以这样计算:


批处理

其中,当且仅当tic是1,那么样本i是属于类别c,yic是样本i属于类别c的概率。

softmax函数的交叉熵损失函数的推导

损失函数对于魁梧的小蚂蚁的导数∂ξ/∂魁梧的小蚂蚁求解如下:


求导过程

上式已经求解了当i=j和i≠j的两种情况。

最终的结果为∂ξ/∂魁梧的小蚂蚁=yi−ti for all i ∈ C,这个求导结果和Logistic函数的交叉熵损失函数求导是一样的,再次证明softmax函数是Logistic函数的一个扩展板。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。