大家好,我是小轩
这两天在忙着完成手头上的任务,没来得及更新
任务也涉及到NLP领域方面的知识,关于这个领域我就不做过多的介绍了,我也是个小白,现在连脚趾头都还没有迈过门槛
我要完成的就是用模型训练数据,之前的数据格式和前几天的数据格式不太一样,数据里边的实体类型和个数也不一样,所以我就得先对数据格式进行处理
另外,输入到模型的那部分代码也不一样,由于我论文的算法和代码实现不是很熟,所以就看了好几天代码...
由于之前的知识基本已经忘了,所以我准备再看一遍,也做做笔记,仅供大家参考和学习
废话不多说了,开始今天的正题
-
什么是循环神经网络RNN?
-
RNN是用来干什么的呢?
-
和普通的神经网络有什么不同呢?
先看这段文字
那边窗子里亮起来的是什么光?那就是东方,朱丽叶就是太阳!起来吧,美丽的太阳!那是我的意中人
如果现在让你先背下来,然后让你倒着背一遍,可能就很难了
这就说明对于预测顺序排列很重要
按照文字顺序读,我们知道这段文字是什么意思,但是如果顺序打乱,就很难理解是什么意思了
看这张图片
对输入的四个数据进行预测最终的结果,这四个数据都是使用同一个神经网络NN
如果上面四个数据之间有关系,上面使用的神经网络并没有把这四个输入数据关联起来,只是对每个数据单独进行预测
所以普通的神经网络不能满足其需求
如何可以进行关联呢?
就是记住之前发生的事情
如何具有记住发生之前事情的能力呢?
在对第一个输入数据进行预测时,可以把分析的结果存入记忆,当分析下一个数据时候,会产生新的记忆,可以把上一个记忆调用过来对下一个数据进行预测,以此类推
看下面的图,画的比较粗糙,下面把神经网路换成RNN了, 每次RNN运算完之后,都会产生一个对于当前状态的描述state,简写成S(t),表示在t时刻的结果
然后RNN在t+1时刻,会根据X(t+1)产生S(t+1),此时的Y(t+1)是由S(t)和S(t+1)共同创造的
上面两张图可以用下面这张表示,就是在t时刻计算的S(t)然后再到下一层和S(t+1)同时计算t+1时刻的结果
其实RNN的结构形式有很多种
比如一句话,判断这句话的感情色彩是积极的还是消极的,可以使用下面这个,只需要在最后输出结果就可以了
如果是对一张图片进行分析,可以使用一个输入X
现在RNN有很多应用,所以有很多形式
比如让RNN描述照片、写论文等等