序列建模在推荐系统中的应用
在推荐领域 根据用户的历史活动记录预测用户下一次行为可能会选择什么项目也是一个重要 的问题,现有的推荐系统主要关注于找出用户或项目的近邻集,或者利 用隐式或显式信息 (如标签、评论、物品内容、用户属性) 来提升近邻感知能力。 然而,却少有工作利用数据当中的时序属性来参与构建推荐系统。在本篇文章中, 我将介绍数据的序列中其实包含着许多有价值的且激动人心的信息以及现代大型推荐系统是如何使用这种序列特性来提升推荐的质量的。以视频网站 为例,一个用户看了纪录片《河西走廊》第一集《使者》之后,接下来看的另一个 节目很有可能会是《河西走廊》第二集《通道》。甚至早在 2011 年举办的 Recsys 推荐系统大会上,来自音乐应用 Pandora1的研究人员给出的演讲上都提到了许多 用户听音乐具有时序特点。 在某些特别的应用场景下,常规的推荐系统甚至无法起作用。现有的推荐系 统都需要分析用户的数据,因此每个网站和应用的使用到需要让用户完成注册以 及登录,然而用户每次使用网站或者应用的服务时都不一定会愿意登录,这种场 景下对匿名用户的推荐显然挑战更大,常规的推荐策略显然无法起作用,基于匿 名用户本地浏览器和缓存的会话所蕴含的序列进行推荐则显现出很重要的实践意 义与价值。
Cross Entropy Loss Derivative
Matrix Derivative
矩阵求导(Matrix Derivative)也称作矩阵微分(Matrix Differential),在机器学习、图像处理、最优化等领域的公式推导中经常用到。矩阵求导实际上是多元变量的微积分问题,只是应用在矩阵空间上而已,即为标量求导的一个推广,他的定义为将自变量中的每一个数与因变量中的每一个数求导。
bazel C++语法入门
Bazel是Google开源的一款代码构建工具。Bazel支持多种语言并且跨平台,还支持增量编译、自动化测试和部署、具有再现性(Reproducibility)和规模化等特征。Bazel 在谷歌大规模软件开发实践能力方面起着至关重要的作用。
Multi Task Learning
0、背景
一般来说,在推荐系统应用场景下,最基础的目标就是提升用户的CTR,即推荐给用户看的物品尽可能是用户想要去点击的。但这样简单做了之后,反而暴露出一个粗俗的问题,即推荐给用户的物品会产生越来越多的标题党,因为这类标题党往往尝试利用人性的弱点,通过文字或图片的暗示的内容骗取高的点击率,但提供的内容于用户无益,甚至会造成用户流失、涉及黄赌毒等违法内容,于平台会是大大的损害。
Parameter Server
在机器学习和深度学习领域,分布式的优化已经成了一种先决条件,因为单机已经解决不了目前快速增长的数据与参数带来的问题。现实中,训练数据的数量可能达到1TB到1PB之间,
而训练过程中的参数可能会达到109到1012。而往往这些模型的参数需要被所有的worker节点频繁的访问,这就会带来很多问题和挑战:
LinkedList
Normalization
optimization
模型优化方法的选择直接关系到最终模型的性能。有时候效果不好,未必是特征的问题或者模型设计的问题,很可能是优化算法的问题,而且好的优化算法还能够帮助加速训练模型。
深度学习模型的发展进程:
SGD -> SGDM ->NAG -> AdaGrad -> AdaDelta -> Adam -> Nadam
AUC
AUC: Area Under Curve, 默认为ROC(receiver operating characteristic curve) Curve, 也可以指定PR(Precision Recall) curve。
由于ROC曲线的X轴为False Positive Rate,Y轴为True Positive Rate,AUC是可以指 随机给定一个正样本和一个负样本,分类器输出该正样本为正的 比 输出该负样本为正 要大的概率,即 AUC = P(P_tpr > P_fpr).
DeePray:深度学习推荐算法新基建
开源项目 DeePray 发布啦!针对推荐算法,特别是点击率预估领域目不暇接的诞生新模型现状,如何将心仪模型快速应用于领域内一直是一项棘手的问题,DeePray这个项目通过统一构建数据流水线,提供各类网络层组件,在此之上,以模块化设计,用组件之砖,搭建各类网络之模型,并以灵活配置式的方式提供调用接口,你也可以在DeePray的基础上,选用各类组件模块,就像玩乐高积木一样建造你自己的模型。deepray.model
目录下已实现LR、FM、FFM、DeepFM、Wide&Deep、Deep&Cross、NFM、xDeepFM、FLEN、AutoInt、DIN等各具特色的分类模型,你只需要处理好自己的数据,然后import deepray as dp
就可以使用啦!
总之DeePray的目标是:
- 容易使用, 即使新手也可以快速上手深度学习工具
- 面对大规模数据也能快速处理
- 易于扩展的模块化架构可以像玩乐高游戏一样构建神经网络!
kafka HelloWorld
核心概念
下面介绍Kafka相关概念,以便运行下面实例的同时,更好地理解Kafka.
\1. Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
\2. Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
\3. Partition
Partition是物理上的概念,每个Topic包含一个或多个Partition.
\4. Producer
负责发布消息到Kafka broker
\5. Consumer
消息消费者,向Kafka broker读取消息的客户端。
\6. Consumer Group
每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
配置HBase伪分布式娱乐环境
HBase是运行在Hadoop分布式文件系统HDFS上进行数据存储的开源非关系型分布式数据库,2020年我尝试在Mac上配置一个伪分布式的v2.2.3 HBase环境,看看能不能进行一些基本的读写操作,以便熟悉一下分布式数据库有什么特点。
Spark read CSV
```
在Mac上配置Hadoop娱乐环境
去年我曾发文记录如何在Ubuntu上配置伪分布式版的Hadoop3娱乐环境:https://fuhailin.github.io/Hadoop-Install/ ,通过配置Hadoop娱乐环境你可以熟悉Hadoop的一些基本概念与操作方式,后来我的Dell被我玩坏了,也就没法在Ubuntu上顺畅娱乐了,后来一狠心入手了现在MacBook Pro,希望它能皮实耐操一点。今天我们继续在MacOS配置一个Hadoop、Spark娱乐环境,看看它能不能运行处理一些HelloWorld程序。
激活函数
本文搜集整理了从Sigmoid、ReLU到Dice等十几种常见激活函数的原理与特点,并从底层用Numpy实现和Python绘制它们。
Linear Regression
别看线性回归算法原理简单,但其中也还有许多特殊的问题需要特别的手段处理。比如离群点就是一个特别的案例。
少数离群点会显著影响训练集的均值结果,对回归线的整体拟合度产生较大的影响,因此我们需要找出其中的离群点并去除它们。