机器学习系列27-循环神经网络RNN(Ⅱ)

Recurrent Neural Network(Ⅱ)

上一篇文章介绍了RNN的基本架构,像这么复杂的结构,我们该如何训练呢?

Learning Target
Loss Function

依旧是Slot Filling的例子,我们需要把model的输出 y i y^i yi与映射到slot的reference vector求交叉熵,比如“Taipei”对应到的是“dest”这个slot,则reference vector在“dest”位置上值为1,其余维度值为0

RNN的output和reference vector的cross entropy之和就是损失函数,也是要minimize的对象

需要注意的是,word要依次输入model,比如“arrive”必须要在“Taipei”前输入,不能打乱语序

Training

有了损失函数后,训练其实也是用梯度下降法,为了计算方便,这里采取了反向传播(Backpropagation)的进阶版,Backpropagation through time,简称BPTT算法

BPTT算法与BP算法非常类似,只是多了一些时间维度上的信息,这里不做详细介绍

不幸的是,RNN的训练并没有那么容易

我们希望随着epoch的增加,参数的更新,loss应该要像下图的蓝色曲线一样慢慢下降,但在训练RNN的时候,你可能会遇到类似绿色曲线一样的学习曲线,loss剧烈抖动,并且会在某个时刻跳到无穷大,导致程序运行失败

Error Surface

分析可知,RNN的error surface,即loss由于参数产生的变化,是非常陡峭崎岖的

下图中, z z z轴代表loss, x x x轴和 y y y轴代表两个参数 w 1 w_1 w1 w 2 w_2 w

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值