凸函数

什么是凸函数及如何判断一个函数是否是凸函数

こ雲淡風輕ζ 提交于 2019-11-30 16:01:56
什么是凸函数及如何判断一个函数是否是凸函数 t元j 一、什么是凸函数   对于一元函数 f ( x f(x),如果对于任意 t ϵ [ 0 , 1 ] tϵ[0,1]均满足: f ( t x 1 + ( 1 − t ) x 2 ) ≤ t f ( x 1 ) + ( 1 − t ) f ( x 2 ) f(tx1+(1−t)x2)≤tf(x1)+(1−t)f(x2),则称 f ( x ) f(x)为凸函数 (convex function)  如果对于任意 t ϵ ( 0 , 1 ) tϵ(0,1)均满足: f ( t x 1 + ( 1 − t ) x 2 ) < t f ( x 1 ) + ( 1 − t ) f ( x 2 ) f(tx1+(1−t)x2)<tf(x1)+(1−t)f(x2),则称 f ( x ) f(x)为严格凸函数 (convex function)   我们可以从几何上直观地理解凸函数的特点,凸函数的割线在函数曲线的上方,如图1所示:  上面的公式,完全可以推广到多元函数。在数据科学的模型求解中,如果优化的目标函数是凸函数,则局部极小值就是全局最小值。这也意味着我们求得的模型是全局最优的,不会陷入到局部最优值。例如支持向量机的目标函数 | | w | | 2 / 2 ||w||2/2就是一个凸函数。 二、如何来判断一个函数是否是凸函数呢?  

信息论——the Convexity

烂漫一生 提交于 2019-11-30 12:49:18
这篇博客来介绍熵,互信息,鉴别信息的凸性,与优化有着重要的关系。 凸集(Convex Set) 凸集:在欧氏空间中,凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内的集合。 凸集有:实数,概率矢量集合等。整数,有理数等不是凸集。 想要研究凸函数,首先凸函数一定要定义在凸集上。而概率矢量集合为凸集,是一个好消息。 凸函数有个坑。就是中国教材总是叫凸函数和凹函数,但是实际上中国的凸函数,是有最大值的函数,而非国外的convex function(最小值)。另外一种比较好的叫法是上凸和下凸,这个就容易区分了,上凸函数有最大值,下凸函数有最小值。 严格的数学定义: 定义在凸集D上的函数$f(x)$如果满足$f(lambda alpha + (1-lambda)beta) leq lambda f(alpha) + (1-lambda) f(beta)$,则为下凸函数。 定义在凸集D上的函数f(x)如果满足$f(lambda alpha + (1-lambda)beta) geq lambda f(alpha) + (1-lambda) f(beta)$,则为上凸函数。 Jenson不等式 如果f是下凸函数,且X是离散随机变量,则$Ef(X)geq f(EX)$,并且如果f是严格下凸函数,则上式中等号说明X为常数,及X与EX以概率1相等。(其中E为平均取值)。

P10 凸函数的扩展

℡╲_俬逩灬. 提交于 2019-11-30 06:06:21
P10 凸函数的定义 凸函数的扩展 示性函数是凸函数 一阶条件 凸函数的定义 一个函数 f : R n ↦ R f: R^n \mapsto R f : R n ↦ R 为凸,等价于 d o m f dom f d o m f 为凸集 且对所有的 x , y ∈ d o m f , 0 ≤ θ ≤ 1 x,y \in domf, 0 \leq \theta \leq 1 x , y ∈ d o m f , 0 ≤ θ ≤ 1 有 f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x + (1-\theta) y) \leq \theta f(x) + (1-\theta)f(y) f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) 凸函数的扩展 f : R n ↦ R f: R^n \mapsto R f : R n ↦ R 为凸 d o m    f = C ⊆ R n dom \; f = C \subseteq R^n d o m f = C ⊆ R n 定义 f ^ = { f ( x ) , x ∈ d o m f + ∞ , x ∉ d o m f \hat{f} =\begin{cases} f(x), & \text { $x

归并排序、jensen不等式、非线性、深度学习

独自空忆成欢 提交于 2019-11-29 18:50:13
前言 在此记录一些不太成熟的思考,希望对各位看官有所启发。 从题目可以看出来这篇文章的主题很杂,这篇文章中我主要讨论的是深度学习为什么要“深”这个问题。先给出结论吧:“深”的层次结构是为了应对现实非线性问题中的复杂度,这种“深”的分层结构能够更好地表征图像语音等数据。 好了,如果各位看官感兴趣,那就让我们开始这次思考的旅程吧! 归并排序 我们首先从归并排序算法开始,这里先跟大家回顾一下这个算法,相信大家都已经非常熟悉了。排序是计算机基础算法中的一个重要主题,要将一个无序的数组排成有序的一个容易想到的算是冒泡法,其时间复杂度为O(n^2),冒泡算法并没用到“分而治之”的思想,而是一次性地解决问题。而我们要讨论的归并算法的时间复杂度为O(nlogn),归并算法的大致原理是递归地将待排序的数组分解成更小的数组,将小数组排好序,再逐层将这些排好序的小数组拼成大数组,最终完成排序。直接上代码吧: def merge_sort(arr): """ input : unsorted array output: sorted array in ascending order """ if len(arr) <= 1: return arr half = len(arr)//2 left = merge_sort(arr[0:half]) right = merge_sort(arr[half:])

【资源分享】最优化理论

落花浮王杯 提交于 2019-11-27 22:15:36
今天给大家分享的是 最优化理论 。 简单的来说,就是求一个函数(空间上的一条曲线或曲面)在一个区间中的最小值。由于函数有可能很复杂,或区间范围很大,我们就利用最优化来将区间缩小。最后,确定我们所要的最小值是在经过计算后的缩小的范围中能够得到。 当然,以上的说法不是特别准确。但是,我们可以简单认为是求函数的最小值,但是一般很难一下子求到。所以,我们通过像是线搜法,梯度下降法,牛顿法,拟牛顿法等等方法,缩小了最小值可能存在的区间范围。 最优化理论在机器学习中的应用很广。这里需要介绍的就是凸函数。因为,凸函数的性质很优秀:连续可导,且有最小值。所以,在机器学习中,一些损失函数(很有可能是离散的,不连续的,如0/1)。所以,我们都会将其改造为连续可导的凸函数,然后就是求最小值。但是,现实中很多问题都是NP问题(你不遍历完所有可能性,你就不知道哪个是最优解,就好像有100种口味的肉包子,你不吃完100种,你不能说哪一种是你最喜欢的)。遍历完所有值的计算量有时非常非常大,计算机有可能很难实现。所以,我们一般使用最优化理论,快速的缩小最优解可能在的区域,在这个区域中,我们能找到最优解或是找到次优解(已经比其他区域中的值小很多了)。所以,最优化理论就是在计算资源有限的条件下,使我们能够找到最小的那个值(一般是次优解)。 分享链接: 今天晚上添加链接 来源: https://www.cnblogs