<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Big_Huang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Big_Huang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Big_Huang]]></copyright><item><title><![CDATA[Transformer Pytorch复现]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124717624</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124717624</guid><author>Big_Huang</author><pubDate>Wed, 11 May 2022 20:06:15 +0800</pubDate><description><![CDATA[贴一个自己根据原论文已经参考众多项目的一个transformer复现：


import torch
import torch.nn as nn
from torch.nn import functional as F

class PositionalEncoding(nn.Module):
    def __init__(self, din, max_len=5000):
        super().__init__()
        self.dropout = nn.Dropout(p=0.]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- AFM]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124528619</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124528619</guid><author>Big_Huang</author><pubDate>Sun, 01 May 2022 17:35:05 +0800</pubDate><description><![CDATA[文字越多好像不一定就能更好的解释清楚，试试从简说明，读者觉得清晰的可以点个赞反馈下~~~



AFM模型的总体定义如下：



一阶特征部分：

用一层线性回归即可实现！

二阶特征交叉部分：





Embedding layer:

常用操作，无需多言；沐神说Embedding就是做个MLP的映射

Pair-wise Interaction Layer：

    和 NFM 中部分内容相同，FM模型基本都有该步骤，前述FM中仅仅需要最终求和...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- NFM]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124499702</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124499702</guid><author>Big_Huang</author><pubDate>Fri, 29 Apr 2022 17:29:18 +0800</pubDate><description><![CDATA[和前面的模型结构上都是大差不差的,但是FM归根结底还是个二阶特征交叉的模型,NFM在在Embedding层后添加 特征交叉池化层 用于对 Embedding向量两两计算元素积操作,并对交叉特征向量求和,得到池化层的输出向量。（可能描述不清楚，可以参考下面论文给出的计算过程）再把该向量输入上层的多层全连接神经网络，进行进一步的交叉。对比前面的DeepFM模型，讲二阶特征交叉部分由并行结构改为了串联的结构，DNN在二阶交叉特征进行进一步交叉，而DeepFM是二阶交叉特征 + 一阶特征DNN，...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- DeepFM]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124483044</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124483044</guid><author>Big_Huang</author><pubDate>Thu, 28 Apr 2022 20:36:31 +0800</pubDate><description><![CDATA[整体内容和前面相似，FM部分二阶交叉部分数学原理参考如下：

简单理解FM公式 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/354994307


class FM(nn.Module):
    def __init__(self, num_embeddings, embedding_dim):
        super().__init__()
        self.embedding_dim = embedding_dim

        s...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- Deep&Cross]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124390604</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124390604</guid><author>Big_Huang</author><pubDate>Sun, 24 Apr 2022 20:50:42 +0800</pubDate><description><![CDATA[DeepCross模型整体内容思想是和WideDeep保持一致的, 尤其是Deep部分基本一致, 但是将原先单线性回归的Wide部分替换为Cross网络,增加特征之间的交互力度. 论文总体结构如上图所示, DCN（论文中的叫法）模型从Embedding和Stacking层开始，然后是并行的Cross网络和Deep网络，最后是将两个网络的输出组合在一起的Stacking层和输出层。图示很清楚的表明了模型结构, 配合原论文 第二章一起食用更佳~

争对 Cross Netwo...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- Wide&Deep]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124369821</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124369821</guid><author>Big_Huang</author><pubDate>Sat, 23 Apr 2022 21:09:57 +0800</pubDate><description><![CDATA[WideDeep 模型是Google在2016年提出的，在业界具有非常大的影响力，模型由单层Wide部分和多层的Deep部分组成的混合模型。Wide 体现 “记忆能力” 主要是模型直接学习并利用历史数据中物品或者特征的“共现频率”能力。而Deep部分体现 “ 泛化能力 ” 主要是根据特征发掘甚至从未出现过的稀有特征与最终标签相关性的能力。 再简单理解就是Wide部分采用简单的线性回归模型，直接发掘了历史数据的分布规则，例如针对成对出现的特征； 而Deep部分则是通过深层的神经网络发...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- PNN]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124363126</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124363126</guid><author>Big_Huang</author><pubDate>Sat, 23 Apr 2022 14:31:20 +0800</pubDate><description><![CDATA[目录

原理介绍   

代码复现：

数据下载链接：

Product Layer 代码如下：

PNN 代码如下：

完整工程：

参考：





原理介绍：   

论文中原图乍一眼看上去和 DeepCrossing 很像，都是多特征的输入、具有Embedding层、多层的神经网络、以及最终预测的都是CTR指标；唯一的区别也是很容易发现的，就是 PNN模型用Product Layer 替换了 DeepCrossing 的 Stacking；相比较下，Stack...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- NeuralCF]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124353500</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124353500</guid><author>Big_Huang</author><pubDate>Fri, 22 Apr 2022 20:30:18 +0800</pubDate><description><![CDATA[背景故事：   

《深度学习推荐系统》中在介绍这一部分的内容时，给的标题是： 从深度学习的视角重新审视矩阵分解模型。个人觉得这句话非常非常精准，哈哈哈。。。

LFM作为CF的实现方法一种，根据 user-item 关系矩阵，找到表征 用户特征、物品特征的隐向量，再通过 内积 的计算方式确定用户和物品直接的关系（相似度？）。这里面主要有两块内容，第一是求解隐向量（或者说描述用户和物品的特征向量？）；第二是用户和物品之间关系的求解。LFM 争对这两部分给出了比较...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- DeepCrossing]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124282138</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124282138</guid><author>Big_Huang</author><pubDate>Tue, 19 Apr 2022 20:32:55 +0800</pubDate><description><![CDATA[类别型特征可以通过one-hot 或者 multi-hot 编码生成特征向量，数值型特征可以直接作为特征向量。 Deep Crossing 模型完整解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一些问题，可以将各类业务数据特征带入模型；总体来看Deep Crossing解决了：

通过Embedding 解决了某些离散型特征编码过于稀疏化的问题
	神经网络解决了特征自动交叉组合的问题
	输出层直接对 CTR 进行预估
网络的各部分在现在看来都很常见和合理，但是在开始的时...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 深度学习系列 -- AutoRec]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124281425</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124281425</guid><author>Big_Huang</author><pubDate>Tue, 19 Apr 2022 19:57:22 +0800</pubDate><description><![CDATA[个人简单理解 AutoRec 模型就是利用神经网络模型来实现矩阵分解的过程，数学表达上和LFM 隐语义模型很类似。假设图中蓝色神经元代表的为 k 层单隐藏层，图中 的 V M 分别代表输入到隐藏层、以及隐藏层到输出的参数矩阵，用数学表达形式就是：



其中，f() 和 g() 为输出层、隐藏层的激活函数。 其实从形式上来看，假设输入层维度为 n×m n表示batchsize，不考虑偏置项，第一层参数的维度为 m × k， 第二层参数的维度为 k × m，输入特征经过编码...]]></description><category></category></item><item><title><![CDATA[BCELoss() RuntimeError: the derivative for ‘target‘ is not implemented]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124271030</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124271030</guid><author>Big_Huang</author><pubDate>Tue, 19 Apr 2022 13:14:59 +0800</pubDate><description><![CDATA[解决方案见最后。。。。。。。。。。。。。。

最近复现模型的过程中，因为有段时间没有写工程了，非常生疏。写的过程漏洞百出，碰到这个问题，主要是利用 torch.nn.BCELoss( ) 计算损失的时候出现。


for iter, (feas, labels) in enumerate(train_dataloader, 1):
    
    optimizer.zero_grad()
    # 1. 正向
    outputs = model(feas)
    ...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 逻辑回归算法族 -- GBDT+LR]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124220552</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124220552</guid><author>Big_Huang</author><pubDate>Sat, 16 Apr 2022 21:24:29 +0800</pubDate><description><![CDATA[协同过滤仅仅使用有限的用户行为信息，逻辑回归算法模型大多引入用户行为、用户特征、物品特征和上下文特征等，从CF逐步过渡到综合不同特征的机器学习模型。

（1）逻辑回归模型

将用户特征（年龄、性别等）、用户行为（收藏、浏览等）、物品特征（属性、描述等）和上下文特征（当前时间、地点等）转化成数值型特征向量；以点击率为优化目标；利用已有数据进行训练学习模型参数；利用学习完成的模型进行推理预测用户点击率。



（2）POLY2模型--特征交叉的开始

防止“辛普森悖论”（数据...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 逻辑回归算法族 -- LR]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124220311</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124220311</guid><author>Big_Huang</author><pubDate>Sat, 16 Apr 2022 21:12:35 +0800</pubDate><description><![CDATA[协同过滤仅仅使用有限的用户行为信息，逻辑回归算法模型大多引入用户行为、用户特征、物品特征和上下文特征等，从CF逐步过渡到综合不同特征的机器学习模型。

（1）逻辑回归模型

将用户特征（年龄、性别等）、用户行为（收藏、浏览等）、物品特征（属性、描述等）和上下文特征（当前时间、地点等）转化成数值型特征向量；以点击率为优化目标；利用已有数据进行训练学习模型参数；利用学习完成的模型进行推理预测用户点击率。





代码编写原理参考大多参照《深度学习推荐系统》书籍内容，原理见后面附...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 协同过滤算法族-- LFM]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124201746</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124201746</guid><author>Big_Huang</author><pubDate>Fri, 15 Apr 2022 19:42:39 +0800</pubDate><description><![CDATA[基本介绍：

协同过滤算法（Collaborative Filtering），数据来源一般为用户的行为数据，不包含用户与物品本身特征信息，从物体相似度和用户相似度出发，分为Item-CF和User-Item。为了处理稀疏共现矩阵、增强模型泛化能力，衍生出矩阵分解模型。

（2）矩阵分解

对应的针对前述稀疏问题采用矩阵分解技术（Matrix Factorization， MF），使用更稠密的隐向量表征用户和物品，用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 协同过滤算法族-- ItemCF]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124201968</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124201968</guid><author>Big_Huang</author><pubDate>Fri, 15 Apr 2022 19:19:00 +0800</pubDate><description><![CDATA[基本介绍：
    协同过滤算法（Collaborative Filtering），数据来源一般为用户的行为数据，不包含用户与物品本身特征信息，从物体相似度和用户相似度出发，分为Item-CF和User-Item。为了处理稀疏共现矩阵、增强模型泛化能力，衍生出矩阵分解模型。

（1） 协同过滤
基于近邻的模型，根据用户还是物品分为 User-CF 和 Item-CF

User-CF：由行为数据找到相似用户，拿到相似用户的喜好物品作为候选，由用户相似度和其对为物体评分情况排序，对物品打分
Ite...]]></description><category></category></item><item><title><![CDATA[【推荐算法 学习与复现】-- 协同过滤算法族-- UserCF]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/124201524</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/124201524</guid><author>Big_Huang</author><pubDate>Fri, 15 Apr 2022 19:08:37 +0800</pubDate><description><![CDATA[基本介绍：

协同过滤算法（Collaborative Filtering），数据来源一般为用户的行为数据，不包含用户与物品本身特征信息，从物体相似度和用户相似度出发，分为Item-CF和User-Item。为了处理稀疏共现矩阵、增强模型泛化能力，衍生出矩阵分解模型。

（1） 协同过滤

基于近邻的模型，根据用户还是物品分为 User-CF 和 Item-CF

User-CF：由行为数据找到相似用户，拿到相似用户的喜好物品作为候选，由用户相似度和其对为物体评分情况排序，对物...]]></description><category></category></item><item><title><![CDATA[线激光扫描三维重建 平移装置 光平面标定]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/123324947</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/123324947</guid><author>Big_Huang</author><pubDate>Mon, 07 Mar 2022 11:01:09 +0800</pubDate><description><![CDATA[平移线扫重建 matlab代码，包含相机标定、光平面标定与方案、移动装置标定与方案、激光线条中心线自适应亚像素提取、畸变矫正、三维重建、点云滤波等部分，代码按模块编写，注释完整，附带一份完整苹果表面扫描数据，处理277张300w像素图片仅耗时15秒，测量精度0.1mm。 ]]></description><category></category></item><item><title><![CDATA[一文带你解决Git那些事~ git 指令 实用指南]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/121300861</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/121300861</guid><author>Big_Huang</author><pubDate>Sat, 13 Nov 2021 10:39:50 +0800</pubDate><description><![CDATA[Git是目前世界上最先进的分布式版本控制系统。虽然日常中最多的在上面找项目代码...... Git有非常完善版本控制流程，适合团体和个人的开发，提升开发效率，企业开发必备！日常使用的时候可能接触更多的是 github、或者国内的gitee等网站，这些都是部署在不同服务器的Git服务。因为 Git 定义是一个系统，所以不同公司的 Git 使用都是符合标准的，但是因为存在数据安全的问题，公司一般会在自己的服务器上部署Git服务。当然还有更多更多的介绍信息和复杂功能，本文主要介绍经常使用的代码工程...]]></description><category></category></item><item><title><![CDATA[解析 XML预测结果 至 TXT文件]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/115715287</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/115715287</guid><author>Big_Huang</author><pubDate>Thu, 15 Apr 2021 08:52:34 +0800</pubDate><description><![CDATA[import xml.etree.ElementTree as ET 
import os

def parse_rec(filename): 
    tree = ET.parse(filename) # 解析读取xml函数
    objects = []
    img_dir =[]

    for obj in tree.findall('object'):
        obj_struct = {}
        obj_struct['name'] = obj.find('name.]]></description><category></category></item><item><title><![CDATA[二叉树 几种遍历方式下的 序列化和反序列化]]></title><link>https://blog.youkuaiyun.com/Big_Huang/article/details/115493995</link><guid>https://blog.youkuaiyun.com/Big_Huang/article/details/115493995</guid><author>Big_Huang</author><pubDate>Wed, 07 Apr 2021 19:51:43 +0800</pubDate><description><![CDATA[二叉树的 序列化与反序列化 是一个很有趣的问题，假设树的结构如下





序列化：使用 # 代表 空指针 nullptr , ( ) 表示子树的划分，序列化中不存在.

此处我采用的序列化为例如前序遍历"1,2,#,4,#,#,3,#,#"


前序遍历： 1 (2 # 4 # #) (3 # #)
中序遍历： (# 2 # 4 #) 1 (# 3 #)
后序遍历： (# # # 4 2) (# # 3) 1
层序遍历： 1 2 3 # 4 # # # #

前序、后序、层序都能够很好的找到...]]></description><category></category></item></channel></rss>