神经网络常用激活函数对比:sigmoid VS sofmax(附python源码)

xiaoxiao2021-02-28  50

更多深度文章,请关注:https://yq.aliyun.com/cloud

Softmax函数与Sigmoid函数之间的区别

作者介绍:

Saimadhu Polamuri:是一名自学成才的数据科学家,对数据科学有热爱和兴趣,他认为学习意味着生活,擅长使用python编程,业余时间在quora上回答问题。

领英:https://www.linkedin.com/in/saimadhu/

博客:http://dataaspirant.com/author/saimadhu/

Softmax函数VS Sigmoid函数在学习逻辑回归概念时,主要的困惑于计算概率的函数由于在逻辑回归模型会使用计算的概率预测目标类经常用到的两个函数是Softmax和Sigmoid函数函数水平(帮助预测目标类别)上来看,这两个函数是相同的,但存在许多明显的数学差异应用在深度学习和其他领域中,发挥至关重要的作用。所以在这篇文章中将进一步了解这两个函数及其应用之间的根本区别。在开始之前,介绍本文的目录

什么是S型函数S形函数性质Sigmoid函数使用Python中实现Sigmoid函数创建Sigmoid函数图像 什么是Softmax函数Softmax函数的性质Softmax函数使用Python中实现Softmax函数创建Softmax函数图像 Sigmoid函数与Softmax函数之间的差异结论 

什么是S型函数

数学定义上来看,Sigmoid函数取任何范围实数,返回输出值在0到1的范围内。S形函数产生“S”曲线这些曲线也用于统计使用累积分布函数(输出范围为0到1)S形函数性质

sigmoid函数返回一个实值输出。S形函数的一阶导数是非负的或非正的。

非负数:如果数字大于或等于零。非正数:如果数字小于或等于零。

Sigmoid函数的使用

Sigmoid函数用于逻辑回归模型中的二进制分类。创建人造神经元时,Sigmoid函数用作激活函数在统计学中,S形函数图像是常见的累积分布函数。 在Python中实现Sigmoid函数

现在让我们在Python中实现sigmoid函数 

# Required Python Package import numpy as np def sigmoid(inputs): """ Calculate the sigmoid for the give inputs (array) :param inputs: :return: """ sigmoid_scores = [1 / float(1 + np.exp(- x)) for x in inputs] return sigmoid_scores sigmoid_inputs = [2, 3, 5, 6] print "Sigmoid Function Output :: {}".format(sigmoid(sigmoid_inputs))

以上是Sigmoid函数的实现代码

该函数将以列表形式的值作为输入参数。列表中的每个元素/值将被视为Sigmoid函数的输入,并计算输出值。代码 1 / float(1 + np.exp(-x))是用于计算sigmoid分数的函数。接下来,我们将一个列表sigmiod_inputs作为函数输入,列表值为2,3,5,6,经过sigmoid函数计算后获得Sigmoid分数。 

脚本输出 

Sigmoid Function Output :: [0.8807970779778823, 0.9525741268224334, 0.9933071490757153, 0.9975273768433653]

创建Sigmoid函数图像现在使用上面的函数来创建图像,以方便了解Sigmoid函数的性质。

传递一个包含021范围内的数字的列表。计算输入列表的sigmoid分数。然后使用输出值来显示图像  # Required Python Packages import numpy as np import matplotlib.pyplot as plt def sigmoid(inputs): """ Calculate the sigmoid for the give inputs (array) :param inputs: :return: """ sigmoid_scores = [1 / float(1 + np.exp(- x)) for x in inputs] return sigmoid_scores def line_graph(x, y, x_title, y_title): """ Draw line graph with x and y values :param x: :param y: :param x_title: :param y_title: :return: """ plt.plot(x, y) plt.xlabel(x_title) plt.ylabel(y_title) plt.show() graph_x = range(0, 21) graph_y = sigmoid(graph_x) print "Graph X readings: {}".format(graph_x) print "Graph Y readings: {}".format(graph_y) line_graph(graph_x, graph_y, "Inputs", "Sigmoid Scores")

创建一个包含021范围内的数字的graph_x列表。之后在graph_y列表中,存储给定graph_x输入的计算sigmoid分数。调用line_graph函数,该函数采用图像的x,y和标题来创建线形图。 

脚本输出

Graph X readings: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] Graph Y readings: [0.5, 0.7310585786300049, 0.8807970779778823, 0.9525741268224334, 0.9820137900379085, 0.9933071490757153, 0.9975273768433653, 0.9990889488055994, 0.9996646498695336, 0.9998766054240137, 0.9999546021312976, 0.999983298578152, 0.9999938558253978, 0.999997739675702, 0.9999991684719722, 0.999999694097773, 0.9999998874648379, 0.9999999586006244, 0.9999999847700205, 0.9999999943972036, 0.9999999979388463]

图像

成功运行上述代码后,屏幕上将显示以下图像。如果上述代码在你的系统中运行失败。检查机器学习包设置。 

从上图可以看出,随着输入值的增加,sigmoid得分增加到1。图的顶部表示在0.9到0.99范围内什么是Softmax函数

Softmax函数计算事件超过'n'个不同事件的概率分布。一般来说,这个函数将会计算每个目标类在所有可能的目标类中的概率。计算的概率将有助于确定给定输入的目标类使用Softmax的主要优点是输出概率范围范围为0到1,所有概率的和将等于1。如果softmax函数用于多分类模型,它会返回每个类的概率,并且目标类别的概率值会很大指数公式计算给定输入值的指数和输入中所有值的指数值之和。那么输入值的指数与指数值之和的比值就是softmax函数的输出。 

Softmax函数的性质

以下是softmax函数的几个性质

计算出的概率将在01的范围内。所有概率的和等于1 Softmax函数的 使用

用于多重分类逻辑回归模型。在构建神经网络中,在不同的层使用softmax函数。

在Python中实现Softmax函数现在让我们在Python中实现softmax函数:

# Required Python Package import numpy as np def softmax(inputs): """ Calculate the softmax for the give inputs (array) :param inputs: :return: """ return np.exp(inputs) / float(sum(np.exp(inputs))) softmax_inputs = [2, 3, 5, 6] print "Softmax Function Output :: {}".format(softmax(softmax_inputs))

脚本输出

Softmax Function Output :: [ 0.01275478 0.03467109 0.25618664 0.69638749]

我们观察到输入值6的函数输出 高概率 这是可以从softmax函数 预先知道的 之后 分类任务 ,可以使用高概率值来预测给定输入特征的目标类  

创建Softmax函数图像现在让我们使用实现的Softmax函数创建图像来了解这个函数的表现

创建一个包含021范围内的值的列表。之后将通过此列表来计算已实现函数的分数。使用列表和估计分数创建图像。 # Required Python Packages import numpy as np import matplotlib.pyplot as plt def softmax(inputs): """ Calculate the softmax for the give inputs (array) :param inputs: :return: """ return np.exp(inputs) / float(sum(np.exp(inputs))) def line_graph(x, y, x_title, y_title): """ Draw line graph with x and y values :param x: :param y: :param x_title: :param y_title: :return: """ plt.plot(x, y) plt.xlabel(x_title) plt.ylabel(y_title) plt.show() graph_x = range(0, 21) graph_y = softmax(graph_x) print "Graph X readings: {}".format(graph_x) print "Graph Y readings: {}".format(graph_y) line_graph(graph_x, graph_y, "Inputs", "Softmax Scores")

脚本输出

Graph X readings: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] Graph Y readings: [ 1.30289758e-09 3.54164282e-09 9.62718331e-09 2.61693975e-08 7.11357976e-08 1.93367146e-07 5.25626399e-07 1.42880069e-06 3.88388295e-06 1.05574884e-05 2.86982290e-05 7.80098744e-05 2.12052824e-04 5.76419338e-04 1.56687021e-03 4.25919483e-03 1.15776919e-02 3.14714295e-02 8.55482149e-02 2.32544158e-01 6.32120559e-01]

图像  

该图显示了softmax函数的基本属性值越大,其概率越高Sigmoid函数与Softmax函数之间的差异以下是Sigmoid和Softmax函数之间的差异表格:

                        

结论在本文中,详细了解确定逻辑回归模型的两个函数。

Softmax:用于多分类任务。Sigmoid用于二进制分类任务。

附件为原文的pdf

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Difference Between Softmax Function and Sigmoid Function》,作者Saimadhu Polamuri,译者:海棠,审阅:

文章为简译,更为详细的内容,请查看原文

转载请注明原文地址: https://www.6miu.com/read-2622308.html

最新回复(0)