theano教程


损失函数

模型的训练过程也就是最小化损失函数的过程。 在多类别的对数回归模型中,通常采用负对数似然函数作为模型的参数。这相当于在以 θ 为参数的模型中,最大化训练数据的似然。如果我们定义似然和损失函数如下:

L(θ={W,b},D)=i=0|D|log(P(Y=y(i)|x(i),W,b))(θ={W,b},D)=L(θ={W,b},D)


分类器的学习

0-1损失

在本指南中介绍的方法也常常用于一般的分类问题中。训练一个分类器的目的是最小化预测函数在测试实例上面的错误。这种错误最简单的表示方法是0-1损失。如果预测函数定义为 f:RD>0,...,L ,那么损失函数可以表示为:

l0,1=i=0|D|If(xiyi)

这里, D  可以是训练过程中的训练数据,或者和训练数据没有任何交集,以避免验证或测试过程中的偏差。 指标函数 I 定义为:

Ix={1 if x is True0 else

在本指南中,预测函数定于为:

f(x)=argmaxkP(Y=k|x,θ)

在python中,结合Theano,该函数的实现如下:

# zero_one_loss is a Theano variable representing a symbolic
# expression of the zero one loss ; to get the actual value this
# symbolic expression has to be compiled into a Theano function (see
# the Theano tutorial for more details)
zero_one_loss = T.sum(T.neq(T.argmax(p_y_given_x), y))

负对数似然损失

因为0-1损失函数是不可微的,在一个含有几千甚至几万个参数的复杂问题中,模型的求解变得非常困难。因此我们最大化分类器的对数似然函数:

L(θ,D)=i=0|D| logP(Y=yi|xi,θ)

 正确类别的似然,并不和正确预测的数目完全一致,但是,从随机初始化的分类器的角度看,他们是非常类似的。但是请记住,似然函数和0-1损失函数是不同的,你应该看到他们的在验证数据上面的正相关性,但是有时候又是负相关。(这段是不是很明白

既然我们可以最小化损失函数,那么学习的过程,也就是最小化负的对数似然函数的过程:

NLL(θ,D)=i=0|D| logP(Y=yi|xi,θ)

NLL函数其实是0-1损失函数的一种可以微分的替代,这样我们就可以用它在训练集合的梯度来训练分类器。相应的代码如下:

复制代码
# NLL is a symbolic variable ; to get the actual value of NLL, this symbolic
# expression has to be compiled into a Theano function (see the Theano
# tutorial for more details)
NLL = -T.sum(T.log(p_y_given_x)[T.arange(y.shape[0]), y])
# note on syntax: T.arange(y.shape[0]) is a vector of integers [0,1,2,...,len(y)].
# Indexing a matrix M by the two vectors [0,1,...,K], [a,b,...,k] returns the
# elements M[0,a], M[1,b], ..., M[K,k] as a vector.  Here, we use this
# syntax to retrieve the log-probability of the correct labels, y.


当在深度学习中采用minibatch的时候,SGD稍微有一点变化。在minibatch SGD中,我们每次用多个训练数据来估计梯度。这种技术减少了估计的梯度方差,也充分的利用了现在计算机体系结构中的内存的层次化组织技术。

L1/L2规则化这种简单的方法并不一定意味着模型的泛化。在实际应用过程中,人们发现在神经网络中应用这种技术有助于泛化,特别是小数据集上面。下面的代码演示了如何应用这种技术。

提前结束训练是另一种处理训练过度的办法,它的解决思路是监测模型在验证数据上的表现。验证数据在训练过程中,可以用来做测试数据。如果模型的性能在验证数据中改进很小,真是变差,那么就应该放弃进一步的优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值