datawhale组队学习笔记——deepcrossing
deepcrossing的网络层
embedding层
embedding的解释在这篇博客说的很清晰:
link
将稀疏的类别型特征转成稠密的Embedding向量,Embedding的维度会远小于原始的系数特征向量。(embedding其实就是将本来使用高维才能表示出来的个体,通过降维技术使之可以通过低维也可以进行表示,并且还包含个体之间的联系)
稀疏矩阵(比如:one-hot编码)具有方便快捷,表达能力强的优点,但是过于稀疏时,会非常占用资源。因此就出现了embedding层,它使用的是矩阵乘法这一原理。embedding层将稀疏矩阵,通过一些线性变换,变成一个密集矩阵, 这个密集矩阵用N个特征来表征所有的文字,并且让这些原本独立的向量有了内在联系。这种关系在反向传播的过程中,是一直在更新的,因此能在多次epoch后,使得这个关系变成相对成熟,即:正确的表达整个语义以及各个语句之间的关系。这个成熟的关系,就是embedding层的所有权重参数。
stacking层
将embedding层的特征和数值型特征进行连接,形成新的特征向量
multiple residual units层
是使用多层残差网络对特征向量各个维度充分的交叉组合, 使得模型能够抓取更多的非线性特征和组合特征信息, 增加模型的表达能力。
scoring层
输出层,对于CTR预估二分类问题, Scoring往往采用逻辑回归, 对于多分类, 往往采用Softmax模型
deepcrossing结构就是embedding+多层神经网络,但是这个模型中没有任何特征工程的参与,只需要清洗数据,原始特征经过embedding输入网络层,自主交叉和学习(这一步其实就属于特征选择和特征的重新构建),deepcrossing通过调节神经网络的深度,进行特征之间的“深度交叉”,这就是名称由来
自己的一个embedding的例子:
以下两个句子:
“我认为我的狗很可爱,他很爱吃骨头”
“我的妈妈喜欢猫,她觉得猫很可爱”
这两句话如果使用one-hot编码将会使用到句子中出现的所有字的个数那么多的维度进行表示,但是比如说句子中的“的”,“我”,“很”。。。这些词,对识别这两个句子是没有任何帮助的,因此经过embedding就可以将这些无用的信息剔除,保留更能识别两个句子的信息,如仅仅使用”狗“,”猫“这两个词就能识别出两个句子。因此embedding就是使用更低维表示出原本的高维信息,并且业能识别出每个个体。
deepcrossing的例子,按照以下连接中的进行重现
link