ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DeepCTR v0.7.1 版本更新说明

2020-01-28 22:09:28  阅读:285  来源: 互联网

标签:SparseFeat 版本 weight deepctr VarLenSparseFeat embedding v0.7 DeepCTR name


hello大家好,

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

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

主要功能和改进

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

  • 问题描述
    https://github.com/shenweichen/DeepCTR/issues/163

  • 问题分析

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

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

  • 解决方案

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

问题修复

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

  • 问题描述
    https://github.com/shenweichen/DeepCTR/issues/178

  • 问题分析

这个问题是在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。

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

  • 问题描述
    https://github.com/shenweichen/DeepCTR/issues/176

  • 问题分析

在一些无法连接网络或者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更新吧!希望朋友们能够多多支持,多多提意见!谢谢!

浅梦s 博客专家 发布了107 篇原创文章 · 获赞 58 · 访问量 23万+ 私信 关注

标签:SparseFeat,版本,weight,deepctr,VarLenSparseFeat,embedding,v0.7,DeepCTR,name
来源: https://blog.csdn.net/u012151283/article/details/104102846

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有