文章来源于浅梦的学习笔记,作者努力学习的浅梦
自deepctr v0.7.0在去年11月底发布后,由于个人的一些原因没能及时的跟进和解答朋友们在github issue区,DeepCTR交流群以及通过邮件的方式提出的相关问题,这里先说一声抱歉,希望没有影响到朋友们的学习和工作。
放假回家在家里躺平放空若干天后,总算有心情打开电脑改改代码了。这篇文章主要介绍一下在新版本v0.7.1中主要做了哪些改动~
问题描述
https://github.com/shenweichen/DeepCTR/issues/163
问题分析
这个问题起源于v0.6.3中deepctr支持了带权重的序列类型特征。
对于权重分数,我们在实现的时候是支持了对权重进行归一化操作的,而用户在实际使用的时候无法感知到这个功能,默认使用不进行归一化的模式,需要用户自己修改源码令WeightedSequenceLayer
中的weight_normalization=True
来实现启用权重分数归一化的模式。
解决方案
在VarLenSparseFeat
中添加weight_norm
参数,用户在定义带权序列特征的时候,通过设置weight_norm
为True
或者False
来控制是否进行权重分数归一化,默认为True
。
问题描述
https://github.com/shenweichen/DeepCTR/issues/178
问题分析
这个问题是在v0.7.0版本中支持了对不同特征组采用不同的embedding维度引入的。
在v0.7.0以前的版本中,模型支持linear_feature_columns
和dnn_feature_columns
,分别为代表记忆性的wide侧和代表泛化性的deep侧。wide侧的SparseFeat
模型会自动设置其embedding维度为1来模拟onehot的记忆特性,deep侧的SparseFeat
通过模型的embedding_size
参数来控制所有特征组的embedding维度。
在v0.7.0中,特征组的embedding维度需要在定义特征列时使用SparseFeat
的embedding_dim
参数设置,该参数默认为4。
若用户没有指定输入进linear_feature_columns
的SparseFeat
的embedding_dim=1
,则会导致模型的wide侧失去记忆性。这不符合预期。
解决方案
在获取wide侧logit值的方法get_linear_logit
中,强制覆盖SparseFeat
的embedding_dim=1
。换言之,输入进linear_feature_columns
的SparseFeat
的embedding_dim
失效,会被模型强制设置为1。
问题描述
https://github.com/shenweichen/DeepCTR/issues/176
问题分析
在一些无法连接网络或者pip配置有过修改的机器上,deepctr的版本检查会抛出大段用户难以理解的异常。
解决方案
版本检查在出现错误时提示用户访问deepctr网站进行人工版本检查,不再输出异常提示信息。
WeightedSequenceLayer
中的weight_normalization
默认值变为True
。
旧:deepctr.layers.sequence.WeightedSequenceLayer(weight_normalization=False, supports_masking=False)
新:deepctr.layers.sequence.WeightedSequenceLayer(weight_normalization=True, supports_masking=False)
由于VarLenSparseFeat
和SparseFeat
存在较多相同参数,且很多情况下相同参数的取值也是相同的(如用户历史商品点击序列和待预估商品),故将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
更新吧!希望朋友们能够多多支持,多多提意见!谢谢!
备注:公众号菜单包含了整理了一本AI小抄,非常适合在通勤路上用学习。
往期精彩回顾
适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”获取一折本站知识星球优惠券,请回复“知识星球”
喜欢文章,点个在看