凸性在优化算法的设计中起着至关重要的作用。这主要是因为在这种情况下分析和测试算法要容易得多。换句话说,如果算法即使在凸设置中也表现不佳,通常我们不应该希望在其他情况下看到很好的结果。此外,尽管深度学习中的优化问题通常是非凸的,但它们通常在局部最小值附近表现出凸问题的某些性质。这可能会导致令人兴奋的新优化变体,例如 ( Izmailov et al. , 2018 )。
%matplotlib inline
import numpy as np
import tensorflow as tf
from mpl_toolkits import mplot3d
from d2l import tensorflow as d2l
12.2.1。定义
在凸分析之前,我们需要定义凸集和凸函数。它们导致了通常应用于机器学习的数学工具。
12.2.1.1。凸集
集合是凸性的基础。简单的说,一套X 在向量空间中是凸的,如果对于任何a,b∈X 连接的线段a和b也在 X. 用数学术语来说,这意味着对于所有 λ∈[0,1]我们有
这听起来有点抽象。考虑图 12.2.1。第一组不是凸的,因为存在不包含在其中的线段。其他两组没有这样的问题。
定义本身并不是特别有用,除非您可以对它们做些什么。在这种情况下,我们可以查看如图 12.2.2所示的交叉点。假使,假设X和 Y是凸集。然后 X∩Y也是凸的。要看到这一点,请考虑任何a,b∈X∩Y. 自从 X和Y是凸的,连接的线段a和b都包含在 X和Y. 鉴于此,它们还需要包含在X∩Y,从而证明了我们的定理。
我们可以毫不费力地加强这个结果:给定凸集 Xi, 他们的交集∩iXi 是凸的。要看到相反的情况不成立,请考虑两个不相交的集合X∩Y=∅. 现在挑 a∈X和b∈Y. 图 12.2.3中的线段连接a和b 需要包含一些既不在X也不在 Y, 因为我们假设 X∩Y=∅. 因此线段不在X∪Y要么,从而证明通常凸集的并集不一定是凸的。
通常,深度学习中的问题是在凸集上定义的。例如,Rd, 的集合d维实数向量,是一个凸集(毕竟,在任何两点之间的线Rd留在
评论
查看更多