查看“Softmax函数”的源代码
←
Softmax函数
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
在[[数学]],尤其是[[概率论]]和相关领域中,'''Softmax函数''',或称'''归一化指数函数'''<ref name="bishop"><cite class="citation book">Bishop, Christopher M. (2006). </cite></ref><sup class="reference" style="white-space:nowrap;">:198</sup>,是[[逻辑函数]]的一种推广。它能将一个含任意实数的K维向量 <math>\mathbf{z}</math> “压缩”到另一个K维实向量 <math>\sigma(\mathbf{z})</math> 中,使得每一个元素的范围都在<math>(0, 1)</math>之间,并且所有元素的和为1。(也可視為一個 (k-1)維的hyperplan,因為總和唯一.所以是subspace)该函数的形式通常按下面的式子给出: : <math>\sigma(\mathbf{z})_j = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}}</math> for ''j'' = 1, …, ''K''. Softmax函数实际上是有限项[[离散概率分布]]的梯度对数归一化。因此,Softmax函数在包括 多项逻辑回归<ref name="bishop"><cite class="citation book">Bishop, Christopher M. (2006). </cite></ref><sup class="reference" style="white-space:nowrap;">:206–209</sup> ,多项[[線性判別分析|线性判别分析]],[[朴素贝叶斯分类器]]和[[人工神经网络]]等的多种基于概率的[[多元分类|多分类问题]]方法中都有着广泛应用。<ref>ai-faq [http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-12.html What is a softmax activation function?]</ref> 特别地,在多项逻辑回归和线性判别分析中,函数的输入是从K个不同的[[線性函數]]得到的结果,而样本向量 '''x''' 属于第 '''j''' 个分类的概率为: : <math>P(y=j|\mathbf{x}) = \frac{e^{\mathbf{x}^\mathsf{T}\mathbf{w}_j}}{\sum_{k=1}^K e^{\mathbf{x}^\mathsf{T}\mathbf{w}_k}}</math> 这可以被视作K个线性函数<math>\mathbf{x} \mapsto \mathbf{x}^\mathsf{T}\mathbf{w}_1, \ldots, \mathbf{x} \mapsto \mathbf{x}^\mathsf{T}\mathbf{w}_K</math>Softmax函数的[[复合函数|复合]](<math>\mathbf{x}^\mathsf{T}\mathbf{w}</math><math>\mathbf{x}</math><math>\mathbf{w}</math>)。 == 例子 == 输入向量<math>[1,2,3,4,1,2,3]</math>对应的Softmax函数的值为<math>[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]</math>。输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。 下面是使用Python进行函数计算的示例代码:<syntaxhighlight lang="python"> import math z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0] z_exp = [math.exp(i) for i in z] print(z_exp) # Result: [2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09] sum_z_exp = sum(z_exp) print(sum_z_exp) # Result: 114.98 softmax = [round(i / sum_z_exp, 3) for i in z_exp] print(softmax) # Result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175] </syntaxhighlight> Python使用numpy计算的示例代码: <syntaxhighlight lang="python"> import numpy as np z = np.array([1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]) print(np.exp(z)/sum(np.exp(z))) </syntaxhighlight> [[Julia (编程语言)|Julia]] 的範例: <syntaxhighlight lang="jlcon"> julia> A = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0] 7-element Array{Float64,1}: 1.0 2.0 3.0 4.0 1.0 2.0 3.0 julia> exp.(A) ./ sum(exp.(A)) 7-element Array{Float64,1}: 0.0236405 0.0642617 0.174681 0.474833 0.0236405 0.0642617 0.174681 </syntaxhighlight> == 參考資料 == <references /> [[Category:人工神经网络]] [[Category:计算神经科学]]
返回
Softmax函数
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息