Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Argmax函数

在数学中, 最大值的参数(缩写arg max 或 argmax)是函数值最大化时某个函数域的点。不同于函数本身的最大输出(也即函数全局最大值), arg max指的是函数输出尽最大值时的输入或参数值。

来源:Wikipedia
简介

在数学中,arguments of the maxima(缩写arg max或argmax)的参数是函数值最大化的某个函数域的点。与global maxima相比,arg max指的是函数的最大输出,它指的是函数输出尽可能大的输入或参数。

给定一个任意集合X,一个完全有序集合Y,和一个函数f:X→Y,在某个X子集S上的arg max定义为。

如果S = X或S在上下文中是清晰的,那么S就经常被out,就像换句话说,arg max就是这个集合,其中f(X)获得了函数最大的值(如果它存在)。Arg max可能是空集,一个singleton,或包含多个元素。例如,如果f(x)= 1−|x|,那么f达到其最大值1当且仅当x = 0,也就是

arg max运算符将与max运算符区分,该运算符具有相同的函数,返回最大值而不是达到该值最大值的点;换句话说

和arg max一样,max可能是空集(在这种情况下,最大值是未定义的)或单例,但与arg max不同的是,max可能不包含多个元素

【出处:wiki ,URL:https://en.wikipedia.org/wiki/Arg_max

举例

下面 振荡函数在举例 [0,L]:

下面定义的是两个维度的数组,值L=1,N=100点 (rows) 并且 n=1,2,⋯,5, 有5列数据,找出5列数据中的最大值最小值. 对于每一列的最大值和最小值都会找出来 argmax (axis=0)argmin(axis=0).

import numpy as np import pylab N = 100 L = 1 def f(i, n): x = i * L / N lam = 2*L/(n+1) return x * (L-x) * np.sin(2*np.pi*x/lam) a = np.fromfunction(f, (N+1, 5)) min_i = a.argmin(axis=0) max_i = a.argmax(axis=0) pylab.plot(a, c='k') pylab.plot(min_i, a[min_i, np.arange(5)], 'v', c='k', markersize=10) pylab.plot(max_i, a[max_i, np.arange(5)], '^', c='k', markersize=10) pylab.xlabel(r'$x$') pylab.ylabel(r'$f_n(x)$') pylab.show()

最大值和最小值的上述函数fn(x)。注意, max或min函数只返回第一个。

举例:

>>>a = np.arange(6).reshape(2,3)

>>>a

array([[0, 1, 2], [3, 4, 5]])

>>>np.argmax(a)

5

返回最大值

>>>np.argmax(a, axis=0)

array([1, 1, 1])

代表了每一列的最大值的位置

>>>np.argmax(a, axis=1)

array([2, 2])

代表了每一行的最大值的位置

与MAX函数之间的区别:

  • y = f(t) 是一般常見的函数式,如果給定一个t值,f(t)函数式会赋一个值給y。
  • y = max f(t) 代表:y 是f(t)函式所有的值中最大的output。
  • y = arg max f(t) 代表:y 是f(t)函式中,會產生最大output的参数t。

看起來很模糊,举个例子以便于理解:

假設有一個函式 f(t),t 的可能範圍是 {0,1,2}对应角标得值为,【10,20,7】;f(t=0) = 10 ; f(t=1) = 20 ; f(t=2) = 7,那分別对应的y如下:

  • y = max f(t) = 20
  • y= arg max f(t) = 1

发展历史

argmax函数的运用很广泛,没有限制,在各个领域都有广泛的运用,下面就举几个例子:

argmax也被用到广泛的领域中,如2003年,Koehn, P., Och, F. J., & Marcu, D. 等人提出了一种新的基于短语的翻译模型和解码算法,并评估和比较之前提出的基于短语的翻译模型。argmax函数来获取最大贝叶斯概率的值来构建模型。

2014年,Pinheiro, P. H., & Collobert, R. 提出的用于场景标记的循环卷积神经网络中,也是使用argmax函数来根据给定图像,让神经网络预测标签。

2016年,Ma, L., Lu, Z., & Li, H.在提出的论文《Learning to Answer Questions from Image Using Convolutional Neural Network. 》《用卷积神经网络回答图像中的问题》中将image QA问题,使用argmax函数来formulate problems,在给定的问题q和相关的图像I预测答案a。

除此之外,在机器学习中,最优化算法可以应用于对过度拟合的惩罚上。优化算法帮助我们最小化(或最大化)一个目标函数(也叫Error函数)E(x),它仅仅是一个依赖于模型内部可学习参数的数学函数,该函数用于计算模型中使用的预测数据集合(X)中的目标值(Y)。例如,我们将神经网络的权值Weights(W) 和偏置Bias(b)值称为其内部可学参数,这些参数用于计算输出值,并在最优解i的方向上学习和更新。通过网络的训练过程来减少损失Loss。如Adam, Adamax,Adagrad等等优化算法应用于神经网络中来最小化Error,使得训练的模型达到最佳。

而argmax函数一般会运用在模型评估中,训练好的模型需对其准确率进行评估。例如,我们可以计算在预测中正确与错误样本的比例。

correct_prediction = tf.equal(tf.argmax(y_predict,1), tf.argmax(y_actual,1))

主要事件

更新为下表:

年份事件相关论文/Reference
2003Koehn, P., Och, F. J., & Marcu, D. 等人提出了一种新的基于短语的翻译模型和解码算法Koehn, P., Och, F. J., & Marcu, D. (2003, May). Statistical phrase-based translation. In Proceedings of the 2003 Conference of the North American Chapter of the Association for Computational Linguistics on Human Language Technology-Volume 1 (pp. 48-54). Association for Computational Linguistics.
2014Pinheiro, P. H., & Collobert, R.将argmax函数用于预测标签预测上Pinheiro, P. H., & Collobert, R. (2014). Recurrent convolutional neural networks for scene labeling. In 31st International Conference on Machine Learning (ICML) (No. EPFL-CONF-199822).
2016Ma, L., Lu, Z., & Li, H.将argmax函数用户问题定义上Ma, L., Lu, Z., & Li, H. (2016, February). Learning to Answer Questions from Image Using Convolutional Neural Network. In AAAI (Vol. 3, No. 7, p. 16).

发展分析

未来发展方向

我们可以计算在预测中正确与错误的比例,查看哪些样本被正确的预测了.

Contributor:Ruiying Cai

简介