Deep Learning Yoshua Bengio

深度学习阅读笔记(1) chapter 6

Learning a Conditional Probability Model

我们可以定义一个损失函数对应一个条件log似然函数,也就是负log似然函数损失函数为:
LNLL(fθ(x),y)=logP(y=y|x=x;θ)

该条件对应于最小化KL离散变换,在模型 P(y|x) 和数据产生分布Q。
minimizing this negative log-likelihood is therefore equivalent to minimizing the squared error loss. Once we understand this principle, we can readily generalize it to other distributions, as appropriate.

Softmax

y 为离散且为有限整数值域时,伯努利分布拓展为multinoulli分布,softmax 函数

p=softmax(a)pi=eaijeaj

另外可以得到
aLNLL(p,y)=(pey)

如果预测正确,这是梯度接近0。
如果预测失败, pj1 ,这是会有较强的push降低 aj
如此以此类推。
对于平方误差损失
L2(p(a)=p(a)y)

损失的梯度相对于输入向量为
ajL2(p(a),y)=L2(p(a),y)(p(a)(p(a)aj=j2(pj(ayi))

所以如果模型对正确的类别给出很低的概率预测,i.e. py=pj1 ,这时给正确类别的分没有被优化器拉高。所以使用者正喜欢使用负log似然函数with softmax非线性,而不是应用平方损失。

softmax的另一个有用的性质为他的输出对加一个常量具有不变形。

softmax(a)=softmax(a+b)

这个性质可以用来实现数值稳定不变性。这使得我们计算softmax的时候只存在于很小的数值误差。
softmax输出的和总为1。
当一个战胜其他时,winner-take-all.
NeuralNetOutputsasParametersofaConditionalDistribution

对于任意的参数概率分布 p(y|ω) ,可以构造一个条件分布 p(y|x) 通过构造 ω 为一个参数函数of x ,并学习函数: p(y|ω=fθ(x))
另一个神经网络的输出分布为混合模型
p(y|x)=p(c=i|x)N(y|μi(x),Σi(x))

网络包含三个输出 p(c=i|x) , μi(x) 以及 Σi(x)
Multiple Output Variables
最简单的办法是假设 yi 之间是相互独立的。i.e.
p(y1,y2,...,yk|x)=i=1kp(yi|x)
, 一个更常用的方法是假设给定 x ,不同的 yi 之间存在共同的影响因素,这些可以网络的隐含层表示。
(yi,x) 可以联系不同的学习任务。另外可以使用概率图模型对联合分布建模。

Cost Functions for Neural Networks

除了负log似然函数可以增加一些正则项。

Optimization step

NN的优化很困难以至于优化过程和建模过程交织在一起。也就是说我们经常设计优化过程比较简单的模型。

BP算法

The basic idea of the back-propagation algorithm is that the partial derivative of the cost J with respect to parameters θ can be decomposed recursively by taking into consideration the composition of functions that relate θ to J , via intermediate quantities that mediate that influence, e.g., the activations of hidden units in a deep neural network.

缺点

  • 反向传播算法很难调试得到正确结果,尤其是当实现程序存在很多难于发现的bug时。举例来说,索引的缺位错误(off-by-one error)会导致只有部分层的权重得到训练,再比如忘记计算偏置项。这些错误会使你得到一个看似十分合理的结果。

L_BFGS

L-BFGS算法我们以后会有论述(另一个例子是共轭梯度算法)。你将在编程练习里使用这些算法中的一个。使用这些高级优化算法时,你需要提供关键的函数:即对于任一个 θ,需要你计算出 J(θ) θJ(θ) 。之后,这些优化算法会自动调整学习速率/步长值 α 的大小(并计算Hessian近似矩阵等等)来自动寻找 J(θ) 最小化时 θ 的值。诸如L-BFGS和共轭梯度算法通常比梯度下降法快很多。
Newton算法在计算时需要用到Hessian矩阵 H , 计算Hessian矩阵非常费时, 所以研究者提出了很多使用方法来近似Hessian矩阵, 这些方法都称作准牛顿算法, BFGS就是其中的一种, 以其发明者Broyden, Fletcher, Goldfarb和Shanno命名.

BFGS算法使用以下方法来近似Hessian矩阵, BkHk

这里写图片描述

初始时可以取 B0=I

因为Hessian矩阵的大小为 O(D2) , 其中D为参数的个数, 所以有时Hessian矩阵会比较大, 可以使用L-BFGS(Limited-memory BFGS)算法来进行优化.
detail

参考

UFLDL BP algorithm
BFGS算法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值