fix: http to https

This commit is contained in:
camera-2018
2023-04-25 20:11:02 +08:00
parent 78828f70da
commit aa2d06bc00
19 changed files with 105 additions and 105 deletions

View File

@@ -7,17 +7,17 @@
- **DNN局限**
当我们使用DNN网络解决推荐问题的时候存在网络参数过于庞大的问题这是因为在进行特征处理的时候我们需要使用one-hot编码来处理离散特征这会导致输入的维度猛增。这里借用AI大会的一张图片
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-11-15.png" style="zoom: 50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-11-15.png" style="zoom: 50%;" />
</div>
这样庞大的参数量也是不实际的。为了解决DNN参数量过大的局限性可以采用非常经典的Field思想将OneHot特征转换为Dense Vector
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-11-40.png" style="zoom: 50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-11-40.png" style="zoom: 50%;" />
</div>
此时通过增加全连接层就可以实现高阶的特征组合,如下图所示:
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-11-59.png" style="zoom:67%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-11-59.png" style="zoom:67%;" />
</div>
但是仍然缺少低阶的特征组合于是增加FM来表示低阶的特征组合。
@@ -25,7 +25,7 @@
结合FM和DNN其实有两种方式可以并行结合也可以串行结合。这两种方式各有几种代表模型。在DeepFM之前有FNN虽然在影响力上可能并不如DeepFM但是了解FNN的思想对我们理解DeepFM的特点和优点是很有帮助的。
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-12-19.png" style="zoom:50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片2021-02-22-10-12-19.png" style="zoom:50%;" />
</div>
FNN是使用预训练好的FM模块得到隐向量然后把隐向量作为DNN的输入但是经过实验进一步发现在Embedding layer和hidden layer1之间增加一个product层如上图所示可以提高模型的表现所以提出了PNN使用product layer替换FM预训练层。
@@ -33,7 +33,7 @@ FNN是使用预训练好的FM模块得到隐向量然后把隐向量作为
- **Wide&Deep**
FNN和PNN模型仍然有一个比较明显的尚未解决的缺点对于低阶组合特征学习到的比较少这一点主要是由于FM和DNN的串行方式导致的也就是虽然FM学到了低阶特征组合但是DNN的全连接结构导致低阶特征并不能在DNN的输出端较好的表现。看来我们已经找到问题了将串行方式改进为并行方式能比较好的解决这个问题。于是Google提出了Wide&Deep模型将前几章但是如果深入探究Wide&Deep的构成方式虽然将整个模型的结构调整为了并行结构在实际的使用中Wide Module中的部分需要较为精巧的特征工程换句话说人工处理对于模型的效果具有比较大的影响这一点可以在Wide&Deep模型部分得到验证
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/Javaimage-20200910214310877.png" alt="image-20200910214310877" style="zoom:65%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/Javaimage-20200910214310877.png" alt="image-20200910214310877" style="zoom:65%;" />
</div>
如上图所示,该模型仍然存在问题:**在output Units阶段直接将低阶和高阶特征进行组合很容易让模型最终偏向学习到低阶或者高阶的特征而不能做到很好的结合。**
@@ -41,7 +41,7 @@ FNN和PNN模型仍然有一个比较明显的尚未解决的缺点对于低
## 模型的结构与原理
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225180556628.png" alt="image-20210225180556628" style="zoom:50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225180556628.png" alt="image-20210225180556628" style="zoom:50%;" />
</div>
前面的Field和Embedding处理是和前面的方法是相同的如上图中的绿色部分DeepFM将Wide部分替换为了FM layer如上图中的蓝色部分
@@ -58,12 +58,12 @@ $$
\hat{y}_{FM}(x) = w_0+\sum_{i=1}^N w_ix_i + \sum_{i=1}^N \sum_{j=i+1}^N v_i^T v_j x_ix_j
$$
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225181340313.png" alt="image-20210225181340313" style="zoom: 67%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225181340313.png" alt="image-20210225181340313" style="zoom: 67%;" />
</div>
### Deep
Deep架构图
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225181010107.png" alt="image-20210225181010107" style="zoom:50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225181010107.png" alt="image-20210225181010107" style="zoom:50%;" />
</div>
Deep Module是为了学习高阶的特征组合在上图中使用用全连接的方式将Dense Embedding输入到Hidden Layer这里面Dense Embeddings就是为了解决DNN中的参数爆炸问题这也是推荐模型中常用的处理方法。
@@ -130,13 +130,13 @@ def DeepFM(linear_feature_columns, dnn_feature_columns):
关于每一块的细节这里就不解释了在我们给出的GitHub代码中我们已经加了非常详细的注释大家看那个应该很容易看明白 为了方便大家的阅读,我们这里还给大家画了一个整体的模型架构图,帮助大家更好的了解每一块以及前向传播(画的图不是很规范,先将就看一下,后面我们会统一在优化一下这个手工图)。
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210228161135777.png" alt="image-20210228161135777" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210228161135777.png" alt="image-20210228161135777" />
</div>
下面是一个通过keras画的模型结构图为了更好的显示数值特征和类别特征都只是选择了一小部分画图的代码也在github中。
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片DeepFM.png" alt="image-20210225180556628" style="zoom:50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片DeepFM.png" alt="image-20210225180556628" style="zoom:50%;" />
</div>
## 思考
@@ -144,7 +144,7 @@ def DeepFM(linear_feature_columns, dnn_feature_columns):
2. 对于下图所示根据你的理解Sparse Feature中的不同颜色节点分别表示什么意思
<div align=center>
<img src="http://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225180556628.png" alt="image-20210225180556628" style="zoom:50%;" />
<img src="https://ryluo.oss-cn-chengdu.aliyuncs.com/图片image-20210225180556628.png" alt="image-20210225180556628" style="zoom:50%;" />
</div>