RNN入门

RNN入门

一,RNN的释义

循环神经网络,顾名思义,表示了一种含有循环神经元的神经网络.RNN之所以被发明,主要原因是因为能够克服传统CNN不能克服的时序问题.但是在某些任务中,时序包含了重要的信息.如下图所示,如果用CNN来处理判断句子语气的任务,会丢失时序信息:
在这里插入图片描述CNN中的全连接结构,并不能很好理解因为句子顺序带来的意思上的变化,而循环神经网络则可以通过时序,理解其意思的不同.

二,其他相关技术

1. one shot code

将不同形式信息编码为用来神经网络输入,该功能要做到不重不漏。如根据hell预测o这个任务,只需要编码能覆盖这四个字母即可: h = [ 1 , 0 , 0 , 0 ] T h = [1, 0, 0, 0]^T , e = [ 0 , 1 , 0 , 0 ] T e = [0, 1, 0, 0]^T , h = [ 0 , 0 , 1 , 0 ] T h = [0, 0, 1, 0]^T , $ o = [0, 0, 0, 1]^T$.

2. 时间步

在RNN中,一个时间步表示的是一次输入的处理过程。

3. 前向传播

前向传播是从输入,到神经元结构,到权重,直到输出,最后获得误差的过程.

4. 后向传播

是从误差,反算回来,获得每个神经元偏导数的过程.
前向传播的一个简单例子如下:
@一个最简单的神经网络
输入为x, 输出为y,假设此时有一个训练样本(x,y) = (1, 10),初始化权重为w = 0;
那么前向传播计算残差f的过程如下:
f = ( y x w ) 2 f = (y - xw)^2
通过前向传播,马上就能计算出第一次训练的误差为 f = ( 10 1 ) 2 = 81 f= (10 - 1)^2 = 81
根据反向传播:
k = f / w = 2 ( y x w ) ( x ) k = \partial f/\partial w = 2(y-xw)(-x)
根据梯度下降法:
( y x w ) 2 = k Δ w -(y-xw)^2 = k\Delta w
因为此处为一维的例子,因此可以得到 Δ w \Delta w 的更新公式为:
( y x w ) / ( 2 x ) = Δ w (y-xw)/(2x) = \Delta w
第一次训练得到的 Δ w = 5 \Delta w = 5 , 因此 w 1 = 5 w^1 = 5
第二次训练得到的 Δ w = 2.5 \Delta w = 2.5 , 因此 w 2 = 7.5 w^2 = 7.5
第三次训练得到的 Δ w = 1.25 \Delta w = 1.25 , 因此 w 3 = 8.75 w^3 = 8.75
第四次训练得到的 Δ w = 0.625 \Delta w = 0.625 , 因此 w 4 = 9.375 w^4 = 9.375
第五次训练得到的 Δ w = 0.3125 \Delta w = 0.3125 , 因此 w 5 = 9.6875 w^5 = 9.6875
第六次训练得到的 Δ w = 0.15625 \Delta w = 0.15625 , 因此 w 6 = 9.84375 w^6 = 9.84375
如上,继续训练将得到一个非常接近理想参数的值.

二,RNN实践,二维速度估计

1. 环境构造

以一个正方形(或者曲线形态)的点作为feature,构造一个环境,如下图所示:
模拟了一条landmark
上图中,中心线为车辆行驶的路径,而两边的点为landmark。

2. 观测构造

以激光点云的形式,在每一个点位可以观察到环境中的每一个点,在上图中,一共有100个姿态,其中70个作为训练集,30个作为验证集

3. 特征输出

4.

发布了36 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wang_jun_whu/article/details/90257450
RNN