DeepCTR v0.7.1 版本更新说明

hello大家好,

自deepctr v0.7.0在去年11月底更新后,由于个人的一些原因没能及时的跟进和解答朋友们在github issue区,DeepCTR交流群以及通过邮件的方式提出的相关问题,这里先说一声抱歉,希望没有影响到朋友们的学习和工作。

放假回家在家里躺平放空若干天后,总算有心情打开电脑改改代码了。这篇文章主要介绍一下在新版本v0.7.1中主要做了哪些改动~

主要功能和改进

WeightedSequenceLayer的参数weight_normalization 在外部没有暴露API

  • 问题描述
    DeepCTR v0.7.1 版本更新说明_第1张图片

  • 问题分析

这个问题是在v0.6.3中我们支持了带权重的序列类型特征。

对于权重分数,我们在实现的时候是支持了对权重进行归一化操作的,而用户在实际使用的时候无法感知的这个功能,默认使用不进行归一化的模式,需要用户自己修改源码令WeightedSequenceLayer中的weight_normalization=True来实现启用权重分数归一化的模式。

  • 解决方案

VarLenSparseFeat中添加weight_norm参数,用户在定义带权序列特征的时候,通过设置weight_normTrue或者False来控制是否进行权重分数归一化,默认为True

问题修复

线性特征列中的离散稀疏特征的embedding维度不为1会导致模型失去记忆性

  • 问题描述
    DeepCTR v0.7.1 版本更新说明_第2张图片

  • 问题分析

这个问题是在v0.7.0版本中我们支持了对不同特征组采用不同的embedding维度引入的。

在v0.7.0以前的版本中,模型支持linear_feature_columnsdnn_feature_columns,分别为代表记忆性的wide侧和代表泛化性的deep侧。wide侧的SparseFeat模型会自动设置其embedding维度为1来模拟onehot的记忆特性,deep侧的SparseFeat通过模型的embedding_size参数来控制所有特征组的embedding维度。

在v0.7.0中,特征组的embedding维度需要在定义特征列时使用SparseFeatembedding_dim参数设置,该参数默认为4。

若用户没有指定输入进linear_feature_columnsSparseFeatembedding_dim=1,则会导致模型的wide侧失去记忆性。

  • 解决方案

在获取wide侧logit的方法get_linear_logit中,强制覆盖SparseFeatembedding_dim=1。换言之,输入进linear_feature_columnsSparseFeatembedding_dim失效,会被模型强制设置为1。

版本检查中抛出的异常用户难以理解,影响后续使用

  • 问题描述
    DeepCTR v0.7.1 版本更新说明_第3张图片

  • 问题分析

在一些无法连接网络或者pip配置有过修改的机器上,deepctr的版本检查会抛出大段用户难以理解的异常。

  • 解决方案

版本检查在出现错误时提示用户访问deepctr网站进行人工版本检查,不再提示出错和异常信息。

API变化

deepctr.layers.sequence.WeightedSequenceLayer

WeightedSequenceLayer中的weight_normalization默认值变为True

  • 旧:deepctr.layers.sequence.WeightedSequenceLayer(weight_normalization=False, supports_masking=False)

  • 新:deepctr.layers.sequence.WeightedSequenceLayer(weight_normalization=True, supports_masking=False)

deepctr.inputs.VarLenSparseFeat

由于VarLenSparseFeatSparseFeat存在较多相同参数,且很多情况下相同参数的取值也是相同的(如用户历史商品点击序列和待预估商品),故将VarLenSparseFeat的初始化参数更改为由一个SparseFeat的实例和其他序列相关的参数组成。

对用户而言,只需要理解SparseFeat的参数含义以及一些序列相关的参数含义就可以使用VarLenSparseFeat

  • 旧:VarLenSparseFeat(name, maxlen, vocabulary_size, embedding_dim=4, combiner="mean", use_hash=False, dtype="float32", length_name=None, weight_name=None, embedding_name=None, group_name=DEFAULT_GROUP_NAME)

  • 新:VarLenSparseFeat(sparsefeat, maxlen, combiner="mean", length_name=None, weight_name=None, weight_norm=True)

以上就是本次更新的说明,快使用命令pip install -U deepctr更新吧!希望朋友们能够多多支持,多多提意见!谢谢!

你可能感兴趣的:(DeepCTR v0.7.1 版本更新说明)