RNN入门
一,RNN的释义
循环神经网络,顾名思义,表示了一种含有循环神经元的神经网络.RNN之所以被发明,主要原因是因为能够克服传统CNN不能克服的时序问题.但是在某些任务中,时序包含了重要的信息.如下图所示,如果用CNN来处理判断句子语气的任务,会丢失时序信息:
CNN中的全连接结构,并不能很好理解因为句子顺序带来的意思上的变化,而循环神经网络则可以通过时序,理解其意思的不同.
二,其他相关技术
1. one shot code
将不同形式信息编码为用来神经网络输入,该功能要做到不重不漏。如根据hell预测o这个任务,只需要编码能覆盖这四个字母即可: , , , $ o = [0, 0, 0, 1]^T$.
2. 时间步
在RNN中,一个时间步表示的是一次输入的处理过程。
3. 前向传播
前向传播是从输入,到神经元结构,到权重,直到输出,最后获得误差的过程.
4. 后向传播
是从误差,反算回来,获得每个神经元偏导数的过程.
前向传播的一个简单例子如下:
输入为x, 输出为y,假设此时有一个训练样本(x,y) = (1, 10),初始化权重为w = 0;
那么前向传播计算残差f的过程如下:
通过前向传播,马上就能计算出第一次训练的误差为
根据反向传播:
根据梯度下降法:
因为此处为一维的例子,因此可以得到
的更新公式为:
第一次训练得到的
, 因此
第二次训练得到的
, 因此
第三次训练得到的
, 因此
第四次训练得到的
, 因此
第五次训练得到的
, 因此
第六次训练得到的
, 因此
如上,继续训练将得到一个非常接近理想参数的值.
二,RNN实践,二维速度估计
1. 环境构造
以一个正方形(或者曲线形态)的点作为feature,构造一个环境,如下图所示:
上图中,中心线为车辆行驶的路径,而两边的点为landmark。
2. 观测构造
以激光点云的形式,在每一个点位可以观察到环境中的每一个点,在上图中,一共有100个姿态,其中70个作为训练集,30个作为验证集