关于个性化推荐网络结构的一些疑问

  • 关键字:个性化推荐网络

  • 问题描述:
    在推荐系统中,embedding层与fc层经常联合使用,我对embedding不是很熟悉,可以理解成embedding层的作用,基本都是把一个维度很大离散的输入,映射程固定长度的词向量,且词向量之间的距离可以表示原始输入的相似度?还有就是,每一个embedding_layer都会接一个同等长度的fc_layer,这么做的好处是什么呢?

  • 相关代码:

    usr_emb= layers.embedding(
            input=uid,
            dtype='float32',
            size=[USE_DICT_SIZE, 32],
            param_attr='user_table',
            is_sparse=IS_SPARSE
        )
    
    usr_fc = layers.fc(input=usr_emb, size=32)
    
  • 问题解答:
    问题描述中,提及了多个问题,这里分别对这几个问题进行简单的解答。

    1.embedding的理解?
    embedding概念其实在词向量中的章节有提及,在paddle 中的 embedding_layer 会学习一个实数矩阵,这个矩阵是一个大的词表,矩阵的每一列是为字典中每一个词语学习到的一个 dense 表示,通常大家会提到 distribute representation 这个概念

    distribute representation 核心大体上有两个作用:

    (1)对抗维数灾难,假如我们只使用 0,1 这样简单的离散变量,一个离散的二维向量只能编码4种信息,但是如果我们使用二维连续的实向量,却能够编码理论上无穷种信息 ,也就是说实向量空间的表达能力是远远大于离散向量空间,使得我们可以用更低的维度,编码更多的信息,来缓解计算的压力;

    (2)学习好的词向量,是高维实向量空间中的一个点,于是我们可以通过实向量空间的数学特性,或者其实定义的一些数学操作,来刻画语言在语义层面的一些复杂性。

    2.为什么推荐系统中embedding层与fc层经常配合使用,即embedding层的输出通常作为fc层的输入?

    (1)fc + embedding 也不是什么非常特殊的设计,需要的是找到复杂度恰好的那个模型。
    (2)对官方文档中使用的推荐系统模型而言,cnn 处理电影名那里算是一个常规的序列模型,其它部分和接多个fc 没啥区别,都可以简单理解成得到原始数据更好的表示。

  • 问题研究:

    • 在推荐系统这个例子中,性别,以及其它一些离散特征,永远都只会取到其中一个值,是一个one-hot 表示,这时候过embedding layer 和 one-hot 直接接一个fc 是没啥区别的,计算上完全一样。
    • 如果你觉得不是非常好理解, 这和接了两个 fc ,第一个 fc 没有引入非线性是一样的。
    • embedding + fc 这种配置,本身也不算是“固定的”,或者说“通用的” 就一定需要这样配的配置方法。机器学习模型设计,通常还是首先考虑尽可能地拟合住数据,在这个过程中,控制模型的复杂度。先从简单的模型开始尝试,果拟合准确率已经非常高了,够用的话,在数据没有扩大的情况下,通常可以不再考虑更复杂的模型。提高复杂度简单来说就是一个layer,一个layer 往上叠加。
    • 推荐系统这个例子中的模型已经是复杂度较低的一个模型,你可以试试去掉fc层,训练集的拟合精度会不会降;然后再加一个fc 层,看见训练集的拟合精度会不会提升,拟合速率会不会有变化,同时,在变化的过程中,测试集上的精度会不会有所改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值