人民网
人民网>>传媒>>人民网奖学金>>哈尔滨工业大学>>哈工大2017

基于循环神经网络和广告转化率的个性化推荐模型研究【3】

孙旭
2018年02月11日11:09 | 来源:人民网研究院
小字号

3.2神经网络处理单元结构

循环神经网络的处理单元区别于普通神经网络的特点就是循环神经网络的处理单元需要对节点状态进行自我更新,而不是依靠上一个节点传来的数据,因此其处理单元的结构较为复杂,如图3-3所示,这是本文对RNN进行改进得出的记忆神经网络结构(MNN)的处理单元功能模块图。

状态控制模块:负责根据真实输入状态f和节点中之前存储的状态C_(t-1)根据状态更新算法计算出新的状态C_t的候选值,这部分涉及到激活函数的选择,从数学角度看,sigmoid函数和tanh函数可以互相通过线性变换得到,因此这两个函数是线性相关的,但是仔细观察二者在原点附近的图像仍会发现细微的差别。由于sigmoid函数自带bias,在提升运算速度的前提下牺牲了准确性,而tanh激活函数与之相反,tanh感知机计算的结果相对准确而速度较差。由于C_(t-1)是已经存储于存储核心中的数据,有充足的时间根据h_(t-1)和x_t进行计算,因此选择的结果显而易见。

状态更新模块:负责将前两个模块的输出与当前状态进行加权平均值计算来确定真正要更新的状态信息C_t,要注意的是,状态控制模块只是计算出了要更新的状态的候选值和对应的权值i_t,状态更新模块才会真正计算出状态信息并对节点状态进行更新。到这一步,当前节点已经完成了对之前信息的学习与存储,接下来需要确定要输出到下一次循环的输出值。

输出控制模块:负责根据更新后的节点状态通过协同过滤等手段计算出输出的值,这部分同样涉及到状态控制模块中的激活函数选择问题,输出的值主要由输入的x_t和h_(t-1)以及更新后的状态C_t来决定,因此与输入相关的计算选取注重性能的激活函数sigmoid,与存储状态相关的计算选用注重准确性的激活函数tanh。

3.3状态更新算法

输入控制模块核心算法:输入控制模块的核心算法流程就是通过sigmoid感知机将输入的h_(t-1)和x_t加上偏置bias进行迭代运算,感知机结构如图3-5所示。

状态控制模块核心算法:状态控制模块需要分为两部分进行设计,一部分用于生成候选值,另一部分用于生成候选值的权值。由于考虑到实际应用情况,前者的激活函数采用tanh确保准确性,后者采用sigmoid激活函数确保计算效率。

状态更新模块核心算法:状态更新模块负责将前两个模块的输出进行加权平均值计算来求出更新后的状态,因此这部分采用加权平均数公式进行计算即可,具体公式如下:

由于整个运算单元的数据流动存在先后制约关系,而且由于部分数据计算量巨大,需要通过异步计算来节省流程实际运算时间,因此需要结合并行设计模式与同步阻塞结构进行设计,运算单元整体算法流程如图3-7所示。

可以看出,在流程的前半部分采用阻塞设计模式,在读取输入信息计算出f之前,运算单元都是在串行模式下运行。而f计算完毕之后,可以通过建立多个线程同时执行感知机处理任务来实现异步计算,但是要注意o1,o2,C等结果计算完毕之后需要等待其他运算结果,这时需要将运算出来的中间结果进行暂存,这部分不能算作算法流程,因此流程图里没有体现,关于中间结果存储的具体细节可以参照算法的数据流动示意图(图3-4)。

(责编:温静、赵光霞)

分享让更多人看到

传媒推荐
  • @媒体人,新闻报道别任性
  • 网站运营者 这些"红线"不能踩!
  • 一图纵览中国网络视听行业
返回顶部