基于梯度的学习
这章从一个神经网络必须具备的代价函数、输出单元、隐藏单元三个部分进行介绍
神经网络的因为非线性性质,导致很多代价函数变成非凸问题:
凸问题:指的是顺着梯度方向走到底就一定是最优解。�大部分传统机器学习问题都是凸的。
非凸问题:�����指的是顺着梯度方向走到底只能保证是局部最优,不能保证是全局最优。深度学习以及小部分传统机器学习问题都是非凸的。
凸集和非凸集:
如果集合C中任意2个元素连线上的点也在集合C中,则C为凸集。也就是说集合的边缘点连起来的形状没有凹进去的部分
(https://blog.csdn.net/searcher_recommeder/article/details/79467260)
凸函数:函数任意两点A1和A2之间的部分位于弦A1A2的下方或曲线任一点切线上方,不严谨一个说法:割线始终位于两点间函数曲线的上方
(https://blog.csdn.net/feilong_csdn/article/details/83476277)
凸优化问题(OPT,convex optimization problem)指定义在凸集中的凸函数最优化的问题
(https://www.jianshu.com/p/6a962fb1b4e0)
凸优化的好处
1、凸优化问题的局部最优解就是全局最优解
2、很多非凸问题都可以被等价转化为凸优化问题或者被近似为凸优化问题
3、凸优化问题的研究较为成熟,当一个具体被归为一个凸优化问题,基本可以确定该问题是可被求解的
判断是否凸优化问题:
1、目标函数如果不是凸函数,则不是凸优化问题
2、决策变量中包含离散变量(0-1变量或整数变量),则不是凸优化问题
3、约束条件写成时,如果不是凸函数,则不是凸优化问题
非凸问题转为凸问题:
1、修改目标函数,使之转化为凸函数
2、抛弃一些约束条件,使新的可行域为凸集并且包含原可行域
训练算法几乎总是基于使用梯度来使得代价函数下降的各种方法!
一、 代价函数
在大多数情况下,我们的参数模型定义了一个分布 并且我们简单地使用最大似然原理。这意味着我们使用训练数据和模型预测间的交叉熵作为代价函
数。
交叉熵:求目标与预测值之间的差距
(其中 =label, =predict)
https://blog.csdn.net/tsyccnh/article/details/79163834
1、使用最大似然学习条件分布
大多数现代的神经网络使用最大似然来训练。这意味着代价函数就是负的对数似然,与训练数据和模型分布间的交叉熵等价,即
代价函数的具体形式取决于的具体形式
负对数似然优点:
局限:神经网络用于产生隐藏单元或者输出单元的输出的激活函数会饱和(很多输出单元都会包含一个指数函数,这在它的变量取绝对值非常大的负值时会造成饱和),这时梯度变得非常小。负对数似然代价函数中的对数函数消除了某些输出单元中的指数效果,能够避免这类型问题。
2、学习条件统计量
有时我们仅仅想学习在给定时 的某个条件统计量。
我们可以:
把代价函数看作是一个泛函( functional)而不仅仅是一个函数
把学习看作是选择一个函数而不仅仅是选择一组参数
泛函:从任意的向量空间到标量的映射。也就是说,它是从函数空间到数域的映射
二、输出单元
代价函数的选择与输出单元的选择紧密相关。大多数时候,我们简单地使用数据分布和模型分布间的交叉熵表示输出单元
常见输出单元:线性单元,sigmoid、softmax
1、用于高斯输出分布的线性单元
线性单元:基于仿射变换的输出单元,仿射变换不具有非线性
给定特征,线性输出单元层产生一个向量
作用:
线性输出层经常被用来产生条件高斯分布的均值:
优点:
线性模型不会饱和,所以它们易于采用基于梯度的优化算法
2、用于 Bernoulli 输出分布的 sigmoid 单元
具有两个类的分类问题可以使用sigmoid单元
定义:
sigmoid:
是 logistic sigmoid 函数:
Sigmoid 函数图像logistic sigmoid 函数:
通常用来产生Bernoulli分布中的参数,因为它的范围是(0,1),处在的有效取值范围内。logisitic sigmoid函数在变量取绝对值非常大的正值或负值时会出现饱和(saturate)现象,意味着函数会变得很平,并且对输入的微小改变会变得不敏感
3、用于 Multinoulli 输出分布的 softmax 单元
具有n 个可能取值的离散型随机变量的分布,即n个类的分类问题
softmax中文叫归一化指数函数,可以看作是 sigmoid 函数的扩展
softmax函数: ( )
4、其他的输出类型
一般的,如果我们定义了一个条件分布,最大似然原则建议我们使用作为代价函数。
一般来说,神经网络表示函数。这个函数的输出不是对 值的直接预测。而是提供了分布的参数。损失函数为
我们经常想要执行多峰回归 (multimodal regression),即预测条件分布 的实值,可以使用混合密度网络,
混合密度网络:高斯混合作为其输出的神经网络
定义:
该定义有3个输出:
定义混合组件的向量, (在 n 个不同组件上形成 Multinoulli 分布)
对所有的给出的矩阵, (指明了与第个高斯组件相关联的中心或者均值)
对所有的给出的张量, (指明了每个组件的协方差矩阵)
三、隐藏单元
整流线性单元(常用,默认选择)
logistic sigmoid与双曲正切函数(不常用)
其他隐藏单元(特定领域才用)
选择隐藏单元时通常不可能预先预测出哪种隐藏单元工作得最好。设计过程充满了试验和错误,先直觉认为某种隐藏单元可能表现良好,然后用它组成神经网络进行训练,最后用验证集来评估它的性能
1、整流线性单元(ReLU)
ReLU整流线性单元使用激活函数,在其一半的定义域上输出为零
整流线性单元的一个缺陷是它们不能通过基于梯度的方法学习那些使它们激活为零的样本,也就是说在激活为零(负半轴)的时候因为没有梯度,所以不能通过基于梯度的方法进行学习。解决这个问题,可以对ReLU进行扩展:
ReLU的扩展基于当(即负半轴)时使用一个非零的斜率
绝对值整流( absolute value rectification)固定来得到。它用于图像中的对象识别,其中寻找在输入照明极性反转下不变的特征是有意义的。(ReLU的其他扩展比这应用得更广泛)
渗漏整流线性单元( Leaky ReLU)将 固定成一个类似 0.01 的小值
参数化整流线性单元( parametric ReLU or PReLU) 将作为学习的参数
maxout单元:对ReLU的进一步扩展
Maxout是深度学习网络中的一层网络,就像池化层、卷积层一样等,我们可以把maxout 看成是网络的激活函数层
maxout 单元将划分为每组具有k个值的组,而不是使用作用于每个元素的函数。每个maxout单元则输出每组中的最大元素
是组的输入索引集
maxout 单元可以学习具有多达k段的分段线性的凸函数。使用足够大的 k,maxout 单元可以以任意的精确度来近似任何凸函数
整流线性单元和它们的这些扩展都是基于一个原则,那就是如果它们的行为更接近线性,那么模型更容易优化
2、logistic sigmoid与双曲正切函数
因为sigmoid的饱和问题现在不鼓励将它们用作前馈网络中的隐藏单元,但在循环网络、许多概率模型以及一些自编码器有一些额外的要求使得它们不能使用分段线性激活函数时则变得非常常用
3、其他隐藏单元
径向基函数(radial basis function, RBF)
softplus函数
硬双曲正切函数(hard tanh)
网友评论