Online Learning算法理论与实践

背景

Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果。本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL(Follow The Regularized Leader)[1]和BPR(Bayesian Probit Regression)[2],以及Online Learning在美团移动端推荐重排序的应用。

什么是Online Learning

准确地说,Online Learning并不是一种模型,而是一种模型的训练方法,Online Learning能够根据线上反馈数据,实时快速地进行模型调整,使得模型及时反映线上的变化,提高线上预测的准确率。Online Learning的流程包括:将模型的预测结果展现给用户,然后收集用户的反馈数据,再用来训练模型,形成闭环的系统。如下图所示:

Online Learning有点像自动控制系统,但又不尽相同,二者的区别是:Online Learning的优化目标是整体的损失函数最小化,而自动控制系统要求最终结果与期望值的偏差最小。

传统的训练方法,模型上线后,更新的周期会比较长(一般是一天,效率高的时候为一小时),这种模型上线后,一般是静态的(一段时间内不会改变),不会与线上的状况有任何互动,假设预测错了,只能在下一次更新的时候完成更正。Online Learning训练方法不同,会根据线上预测的结果动态调整模型。如果模型预测错误,会及时做出修正。因此,Online Learning能够更加及时地反映线上变化。

Online Learning的优化目标

如上图所示,Online Learning训练过程也需要优化一个目标函数(红框标注的),但是和其他的训练方法不同,Online Learning要求快速求出目标函数的最优解,最好是能有解析解。

怎样实现Online Learning

前面说到Online Learning要求快速求出目标函数的最优解。要满足这个要求,一般的做法有两种:Bayesian Online Learning和Follow The Regularized Leader。下面就详细介绍这两种做法的思路。

Bayesian Online Learning

贝叶斯方法能够比较自然地导出Online Learning的训练方法:给定参数先验,根据反馈计算后验,将其作为下一次预测的先验,然后再根据反馈计算后验,如此进行下去,就是一个Online Learning的过程,如下图所示。

举个例子, 我们做一个抛硬币实验,估算硬币正面的概率\( \mu \)。我们假设\( \mu \)的先验满足 $$ p\left(\mu \right) = \operatorname{Beta}(\alpha, \beta)$$ 对于观测值\( Y=1 \),代表是正面,我们可以算的后验: $$p\left( \mu | Y=1 \right) = \operatorname{Beta}(\alpha+1, \beta)$$ 对于观测值\( Y=0 \),代表是反面,我们可以算的后验: $$ p\left(\mu \right | Y=0) = \operatorname{Beta}(\alpha, \beta+1)$$ 按照上面的Bayesian Online Learning流程,我们可以得到估算\( \mu \)的Online Learning算法: >初始化 \( \alpha \),\( \beta \) >for i = 0 … n >>如果 \( Y_i \)是正面 >> \( \alpha = \alpha + 1 \) >>如果 \(Y_i\)是反面 >>\( \beta = \beta + 1 \)   最终: \( \mu \sim \operatorname{Beta}(\alpha, \beta) \),可以取\( \mu \)的期望,\( \mu = \frac{\alpha}{\alpha+\beta}\) 假设抛了\(N\)次硬币,正面出现\(H\)次,反面出现\(T\)次,按照上面的算法,可以算得: $$ \mu = \frac{ \alpha + H}{\alpha + \beta + N} $$ 和最大化似然函数: $$ \mathrm{log}\left[ p\left(\mu \mid \alpha,\beta \right) \cdot p \left( Y = 1 \mid \mu \right)^{H} \cdot p \left( Y = 0 \mid \mu \right)^{T} \right] $$ 得到的解是一样的。

上面的例子是针对离散分布的,我们可以再看一个连续分布的例子。

有一种测量仪器,测量的方差\( \sigma^2\)是已知的, 测量结果为:\( Y_1 , Y_2 , Y_3 , … , Y_n \), 求真实值\( \mu \)的分布。 仪器的方差是\( \sigma ^{2}\), 所以观测值Y满足高斯分布: $$p\left(Y \mid \mu\right) = N\left( Y \mid \mu,\sigma^2 \right)$$ 观测到 \( Y_1 , Y_2 , Y_3 , … , Y_n \), 估计参数 \( \mu \) 。 假设参数 \( \mu \) 满足高斯分布: $$ p\left( \mu \right) = N\left( \mu \mid m ,v ^2 \right) $$ 观测到\( Y_i \), 可以计算的后验: $$ p \left( \mu \mid Y_i \right) = N\left( \mu \mid \frac{Yi v^{2}+m\sigma^{2}}{\sigma^{2}+v^{2}} , \frac{\sigma^{2}v^{2}}{\sigma^{2}+v^{2}} \right) $$ 可以得到以下的Online Learning算法: >初始化 \( m \),\( v ^{2} \) >for i = 0 … n >> 观测值为\( Y{i} \) >> 更新 >> $$ m = \frac{Y_i v^{2} + m \sigma^{2}}{\sigma^{2} + v^{2}} $$ >> $$ v^{2} = \frac{\sigma^{2} v^{2}}{\sigma^{2} + v^{2} } $$

上面的两个结果都是后验跟先验是同一分布的(一般取共轭先验,就会有这样的效果),这个后验很自然的作为后面参数估计的先验。假设后验分布和先验不一样,我们该怎么办呢?

举个例子:假设上面的测量仪器只能观测到\( Y \),是大于0,还是小于0,即\(Y_{i} \in \{-1,1\} \),\( Y_{i} = -1\),代表观测值小于0,\( Y_{i} = 1\)代表观测值大于0。 此时,我们仍然可以计算后验分布: $$ p( \mu \mid Y_i =1) = \frac{ I(\mu > 0 )p(\mu)}{ \int_{0}^{+\infty} p(\mu)\mathrm{d}u}$$ $$ p( \mu \mid Y_i =-1) = \frac{ I(\mu< 0) p(\mu)}{ \int_{-\infty}^{0} p(\mu)\mathrm{d}u}$$ 但是后验分布显然不是高斯分布(是截断高斯分布),这种情况下,我们可以用和上面分布KL距离最近的高斯分布代替。 观测到\( Y_{i} = 1\) $$ KL( p(\mu \mid Y_i =1) || N(\mu \mid \tilde m ,\tilde v^{2})) $$ 可以求得: $$\tilde m = m + v \cdot \upsilon\left(\frac{m}{v}\right)$$ $$\tilde v^{2} = v^2\left(1 - \omega\left(\frac{m}{v}\right)\right)$$

观测到\( Y_{i} = -1\) $$ KL( p(\mu \mid Y_i =-1) || N(\mu \mid \tilde \mu ,\tilde v^{2})) $$ 可以求得: $$\tilde m = m - v \cdot \upsilon\left(-\frac{m}{v}\right)$$ $$\tilde v^{2} = v^2\left(1 - \omega\left(-\frac{m}{v}\right)\right)$$

两者综合起来,可以求得: $$\tilde m = m + Y_{i} v \cdot \upsilon\left(Y_{i}\frac{m}{v}\right)$$ $$\tilde v^{2} = v^2\left(1 - \omega\left(Y_{i}\frac{m}{v}\right)\right)$$ 其中: $$\upsilon(t) = \frac{\phi(t)}{\Phi(t)}$$ $$\phi(t) = \frac{1}{2\pi} \mathrm{exp} \left(-\frac{1}{2} t^2\right) $$ $$\Phi(t)=\int_{-\infty}^{t} \phi(t)\mathrm{d}t$$ $$\omega(t) = \upsilon(t)*(t-\upsilon(t))$$

有了后验我们可以得到Online Bayesian Learning流程: >初始化 \( m \),\( v ^{2} \) >for i = 0 … n >> 观测值为\( Y_{i} \) >> 更新 >> $$ m = m + Y_{i} \cdot v \cdot \upsilon\left(Y_{i} \cdot \frac{m}{v}\right) $$ >> $$ v^{2} = v^2\left(1 - \omega\left(Y_{i} \cdot \frac{m}{v}\right)\right) $$

Bayesian Online Learning最常见的应用就是BPR(Bayesian Probit Regression)。

BPR

在看Online BPR前,我们先了解以下Linear Gaussian System(具体可以参考[3]的4.4节)。 \(x\)是满足多维高斯分布: $$p \left( x \right) = N \left(x \mid \mu_x, \Sigma_x \right) $$ \(y\)是\(x\)通过线性变换加入随机扰动\(\Sigma_y \)得到的变量: $$p \left(y \mid x \right) = N \left(y \mid Ax+b ,\Sigma_y \right)$$

已知\(x\),我们可以得到\(y\)的分布:

$$ p \left( y \right) = N \left( y \mid A\mu_X +b, \Sigma_y + A \Sigma_x A^{T} \right)$$

上面这个结论的具体的推导过程可以参考[3]的4.4节,这里我们直接拿来用。

我们可以假设特征权重 \(w\) 满足独立高斯分布,即$$ p(w) = N\left( w \mid \mu ,\Sigma \right)$$: $$ \mu = \left[ \mu_1,\mu_2,…,\mu_D\right]^{\mathrm{T}}$$ $$ \Sigma = \left[ \begin{matrix} \sigma_1^{2} & 0 & \ldots & 0 \newline 0 & \sigma_2^{2} & \ldots & 0 \newline \vdots &\vdots & \ddots & \vdots \newline 0 & 0 & \ldots & \sigma_D^{2} \newline \end{matrix} \right] $$

\(Y\)是一维变量,是\(w\)与特征向量\(x\)的内积,加入方差为\( \beta^{2}\)的扰动:

$$p\left( y \mid w\right) = N(y \mid x^Tw, \beta^2)$$ 根据上面的式子可以得出: $$p\left( y \mid w\right) = N(y \mid x^T\mu, x^T\Sigma x +\beta^2)$$ 由于我们只能观测到\( Y \),是大于0,还是小于0,即\(Y_{i} \in \{-1,1\} \),\( Y_{i} = -1\),代表观测值小于0,\( Y_{i} = 1\)代表观测值大于0。

对于观测值,我们可以先用KL距离近似\(y\)的分布,我们可以算出后验: $$ p\left(y\mid Y_i\right) = N\left(y\mid \tilde m, \tilde v^2 \right)$$ $$\tilde m = x^T\mu + Y_{i}\upsilon \left(Y_{i} \cdot \frac{x^T\mu}{\sqrt{x^T\Sigma x +\beta^2}}\right)$$ $$\tilde v^2 = \left(x^T\Sigma x +\beta^2\right)\left(1-\omega\left(Y_{i} \cdot \frac{x^T\mu}{\sqrt{x^T\Sigma x +\beta^2}} \right)\right) $$ 有了\(y\)的近似分布,我们可以计算出后验: $$p\left(w \mid y \right) \propto p\left(y \mid w \right) p\left(w\right)$$

可以求得: $$ p\left( w_{d} \mid y \right) = N\left( w_{d} \mid \tilde \mu_{d},\tilde \sigma_{d} \right)$$ $$ \tilde \mu_{d} = \mu_{d} + Y_{i} x_{i,d}\cdot \frac {\sigma_{d}^{2} }{\sqrt{x^T\Sigma x +\beta^2}} \cdot \upsilon \left(Y_{i} \cdot \frac{x^T\mu}{\sqrt{x^T\Sigma x +\beta^2}}\right) $$

$$ \tilde \sigma_{d} = \sigma_{d} \cdot \left[ 1 - x_{i,d} \cdot \frac{\sigma_{d}^{2}}{x^T\Sigma x +\beta^2} \omega\left(Y_{i} \cdot \frac{x^T\mu}{\sqrt{x^T\Sigma x +\beta^2}} \right) \right]$$

Online Bayesian Probit Regression 训练流程如下: >初始化 \( \mu_{1} \),\( \sigma_{1}^{2} \), \( \mu_{2} \),\( \sigma_{2}^{2} \) , … , \( \mu_{D} \),\( \sigma_{D}^{2} \) >for i = 1 … n >> 观测值为\( Y{i} \) >> for d = 1 … D >> 更新 >> $$ \mu_{d} = \mu_{d} + Y_{i} x_{i,d}\cdot \frac {\sigma_{d}^{2} }{\sqrt{x_{i}^T\Sigma x_{i} +\beta^2}} \cdot \upsilon \left(Y_{i} \cdot \frac{x_{i}^T\mu}{\sqrt{x_{i}^T\Sigma x_{i} +\beta^2}}\right) $$ >> $$ \sigma_{d} = \sigma_{d} \cdot \left[ 1 - x{i,d} \cdot \frac{\sigma_{d}^{2}}{x_{i}^T\Sigma x_{i} +\beta^2} \omega\left(Y_{i} \cdot \frac{x_{i}^T\mu}{\sqrt{x_{i}^T\Sigma x +\beta^2}} \right) \right]$$

FTRL

除了Online Bayesian Learning,还有一种做法就是FTRL(Follow The Regularized Leader)。 FTRL的网上资料很多,但是大部分介绍怎么样产生稀疏化解,而往往忽略了FTRL的基本原理。顾名思义,FTRL和稀疏化并没有关系,它只是一种做Online Learning的思想。

先说说FTL(Follow The Leader)算法,FTL思想就是每次找到让之前所有损失函数之和最小的参数。流程如下:

初始化 \( w \) for t = 1 … n > 损失函数 \( f_{t} \) >更新 > $$ w = argmin_{w} \sum_{i=1}^{t} f_i \left (w \right) $$

FTRL算法就是在FTL的优化目标的基础上,加入了正规化,防止过拟合: $$ w = argmin_{w} \sum_{i=1}^{t} f_i \left (w \right) + R(w) $$ 其中,\(R(w)\)是正规化项。

FTRL算法的损失函数,一般也不是能够很快求解的,这种情况下,一般需要找一个代理的损失函数。

代理损失函数需要满足几个要求: 1. 代理损失函数比较容易求解,最好是有解析解 2. 优化代理损失函数求的解,和优化原函数得到的解差距不能太大

为了衡量条件2中的两个解的差距,这里需要引入regret的概念。

假设每一步用的代理函数是\( h_t \left( w \right)\) 每次取

$$ w_{t} = argmin_{w} h_{t-1} \left (w \right) $$ $$Regret_{t} =\sum_{t=1}^{T}f_{t}\left(w_{t}\right) - \sum_{t=1}^{T}f_{t}\left(w^{*}\right)$$

其中\( w^{*} = argmin_{w} \sum_{i=1}^{t}f_i\left(w\right) \),是原函数的最优解。就是我们每次代理函数求出解,离真正损失函数求出解的损失差距。当然这个损失必须满足一定的条件,Online Learning才可以有效,就是:

$$ \lim_{t \rightarrow \infty } \frac{Regret_t}{t} = 0 $$

随着训练样本的增多,这两个优化目标优化出的参数的实际损失值差距越来越小。

代理函数 \( h_t(w)\) 应该该怎么选呢? 如果\( f_t(w) \) 是凸函数,我们可以用下面的代理损失函数:

$$ h_{t} = \sum_{i=1}^{t} g_{i}\cdot w + \sum_{i=1}^{t} \left(\frac{1}{2 \eta_{t}} - \frac{1}{2 \eta_{t-1}} \right)||w - w_{t}||^{2}$$

其中\(g_i\)  是\(f_i( w_i) \)次梯度(如果 \(f_i(w_i)\)是可导的,次梯度就是梯度)。\( \eta_{t} \)满足: $$ \eta_{t} = \frac{\alpha}{\sqrt{\sum_{i=1}^{t} g_{t}^{2}}} $$

为了产生稀疏的效果,我们也可以加入l1正规化:

$$ h_{t} = \sum_{i=1}^{t} g_{i}\cdot w + \sum_{i=1}^{t} \left(\frac{1}{2 \eta_{t}} - \frac{1}{2 \eta_{t-1}} \right)||w - w_{t}||^{2} + \lambda_{1}|w|$$ 只要\( f_t(w) \) 是凸函数,上面的代理函数一定满足:

$$ \lim_{t \rightarrow \infty } \frac{Regret_t}{t} = 0 $$

上面的式子我们可以得出\(w\)的解析解:

$$ w_{t+1,i} = \left\{ \begin{array}{ll} 0 & |z_{t,i}| < \lambda_{1} \newline -\eta_{t}(z_{t,i} - sgn(z_{t,i})\lambda_{1}) ) & otherwise \end{array} \right. $$

其中 $$ z_{t,i} = \sum_{s=1}^{t}g_{s,i} + \sum_{s=1}^{t}\left( \frac{1}{ \eta_{t,i}} - \frac{1}{ \eta_{t-1,i}} \right) w_{t,i} $$

可以得到FTRL的更新流程如下:

输入\(\alpha \), \( \lambda_{1} \) 初始化 \( w_{1…N} \), \( z_{1..N} = 0\) , \(n_{1..N} = 0\) for t = 1 … T > 损失函数 \( f_{t} \) > for i = 1 ..N >> 计算 >> $$ g_{t,i} = \frac{\partial f_{i}\left(w_{t-1}\right)}{w_{t-1,i}}$$ >> $$ z_{t} += g_{t,i} + \frac{1}{\alpha} \left( \sqrt{n_{i} + g_{t,i}^{2}} -\sqrt{ n_{i} } \right) w_{t,i} $$ >> $$ n_{i} += g_{t,i}^{2}$$ >>更新 >> $$ w_{t+1,i} = \left\{ \begin{array}{ll} 0 & |z_{t,i}| < \lambda_{1} \newline -\eta_{t}(z_{t,i} - sgn(z_{t,i})\lambda_{1}) ) & otherwise \end{array} \right. $$

Online Learning实践

前面讲了Online Learning的基本原理,这里以移动端推荐重排序为例,介绍一下Online Learning在实际中的应用。

推荐重排序介绍

目前的推荐系统,主要采用了两层架构,首先是触发层,会根据上下文条件和用户的历史行为,触发用户可能感兴趣的item,然后由排序模型对触发的item排序,如下图所示:

推荐重排序既能融合不同触发策略,又能较大幅度提高推荐效果(我们这里主要是下单率)。在移动端,屏幕更加小,用户每次看到的item数目更加少,排序的作用更加突出。

美团重排序Online Learning架构

美团Online Learning架构如下图所示:

线上的展示日志,点击日志和下单日志会写入不同的Kafka流。读取Kafka流,以HBase为中间缓存,完成label match(下单和点击对映到相应的展示日志),在做label match的过成中,会对把同一个session的日志放在一起,方便后面做skip above:

训练数据生成

移动端推荐的数据跟PC端不同,移动端一次会加载很多item,但是无法保证这些item会被用户看到。为了保证数据的准确性,我们采用了skip above的办法,如下图所示:

假设用户点击了第i个位置,我们保留从第1条到第i+2条数据作为训练数据,其他的丢弃。这样能够最大程度的保证训练样本中的数据是被用户看到的。

特征

用的特征如下图所示:

算法选择

我们尝试了FTRL和BPR效果,线下实验效果如下表:

算法   AUC     模型参数个数  
FTRL0.8432200W
BPR0.84411500W

BPR的效果略好,但是我们线上选用了FTRL模型,主要原因是FTRL能够产生稀疏化的效果,训练出的模型会比较小。

模型训练

训练算法不断地从HBase中读取数据,完成模型地训练,训练模型放在Medis(美团内部地Redis)中,线上会用Medis中的模型预测下单率,根据预测的下单率,完成排序。

线上效果

上线后,最终的效果如下图所示,和base算法相比,下单率提高了5%。

参考资料

  • [1] McMahan H B, Holt G, Sculley D, et al. Ad Click Prediction: a View from the Trenches. Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD). 2013.
  • [2] Graepel T, Candela J Q, Borchert T,et al. Web-Scale Bayesian Click-Through Rate Prediction for Sponsored Search Advertising in Microsoft’s Bing Search Engine. Proceedings of the 27th International Conference on Machine Learning ICML. 2010.
  • [3] Murphy K P. Machine Learning: A Probabilistic Perspective. The MIT Press. 2012.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM架构-银河麒麟v10-server离线安装Harbor

咱也刚接触Harbor&#xff0c;在x86上部署倒是没什么问题&#xff0c;在arm上部署还是费了一些事的&#xff0c;趟了一些小坑&#xff0c;基本填平&#xff0c;小白学习中&#xff0c;请多指教。 目录 安装docker-compose环境 2.harbor离线安装准备 3.Https方式部署 3.1 生…

在斯坦福,做 Manning 的 phd 要有多强?

文 | 付瑶编 | 小轶博士的毕业论文是我们博士学位教育重要的一环&#xff0c;不仅仅是获得学位的最后一个难关&#xff0c;也是读博期间工作的总结展现。那么一个优秀的博士在读博期间会做出多少成果&#xff1f;ta 的博士论文又长什么样&#xff1f;今天&#xff0c;让我们打开…

LeetCode 655. 输出二叉树(二叉树高度二叉树遍历)

1. 题目 在一个 m*n 的二维字符串数组中输出二叉树&#xff0c;并遵守以下规则&#xff1a; 行数 m 应当等于给定二叉树的高度。列数 n 应当总是奇数。根节点的值&#xff08;以字符串格式给出&#xff09;应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分…

pyhon爬虫—爬取原创力文档(全面解析)

https://blog.csdn.net/weixin_46184311/article/details/115291441

开源开放 | 计算机科学示意图问答数据集CSDQA(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/csdqa开源地址&#xff1a;http://zscl.xjtudlc.com:888/CSDQA/开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;西安交通大学(王绍伟、张玲玲、杨祎、胡欣、秦涛、魏笔凡、刘均…

数据驱动精准化营销在大众点评的实践

精准化营销一直以来都是互联网营销业务在细分市场下快速获取用户和提高转化的利器。在移动互联网爆发的今天&#xff0c;数据量呈指数增长&#xff0c;如何在移动和大数据场景下用数据驱动进行精准营销&#xff0c;从而提高营销效能&#xff0c;成为营销业务部门的主要挑战之一…

LeetCode 1104. 二叉树寻路(数学位运算)

1. 题目 在一棵无限的二叉树上&#xff0c;每个节点都有两个子节点&#xff0c;树中的节点 逐行 依次按 “之” 字形进行标记。 如下图所示&#xff0c;在奇数行&#xff08;即&#xff0c;第一行、第三行、第五行……&#xff09;中&#xff0c;按从左到右的顺序进行标记&am…

构建基于Python的CI/CD流水线

构建基于Python的CI/CD流水线

再介绍一篇最新的Contrastive Self-supervised Learning综述论文

文 | 对白源 | 对白的算法屋自监督学习&#xff08;Self-supervised learning&#xff09;最近获得了很多关注&#xff0c;因为其可以避免对数据集进行大量的标签标注。它可以把自己定义的伪标签当作训练的信号&#xff0c;然后把学习到的表示&#xff08;representation&#…

论文浅尝 | 重新审视语言模型与知识库的关系

笔记整理&#xff1a;陈卓&#xff0c;浙江大学在读博士&#xff0c;主要研究方向为低资源学习和知识图谱论文链接&#xff1a;https://arxiv.org/pdf/2106.09231发表会议&#xff1a;ACL 2021动机这篇文章类似于是批判性的文章&#xff0c;反驳的之前EMNLP2019的一篇文章knowl…

Spark在美团的实践

本文已发表在《程序员》杂志2016年4月期。 前言 美团是数据驱动的互联网服务&#xff0c;用户每天在美团上的点击、浏览、下单支付行为都会产生海量的日志&#xff0c;这些日志数据将被汇总处理、分析、挖掘与学习&#xff0c;为美团的各种推荐、搜索系统甚至公司战略目标制定提…

【pd读取csv文件踩坑】读取csv文件时报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0

【pd读取csv文件踩坑】读取csv文件时报错&#xff1a;UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0

LeetCode 958. 二叉树的完全性检验(层序遍历)

1. 题目 给定一个二叉树&#xff0c;确定它是否是一个完全二叉树。 百度百科中对完全二叉树的定义如下&#xff1a; 若设二叉树的深度为 h&#xff0c;除第 h 层外&#xff0c;其它各层 (1&#xff5e;h-1) 的结点数都达到最大个数&#xff0c;第 h 层所有的结点都连续集中在…

论文浅尝 | 通过学习中间步骤的监督信号改进多跳知识库问答

笔记整理&#xff1a;陈永锐&#xff0c;东南大学博士论文链接&#xff1a;https://arxiv.org/pdf/2101.03737.pdf概述该论文处理多跳知识库问答&#xff08;KBQA&#xff09;任务&#xff0c;主要关注训练过程在中间步骤缺乏监督信号的挑战。由于这一挑战&#xff0c;多跳 KBQ…

打破情感分类准确率 80 分天花板!更加充分的知识图谱结合范式

文 | SeverusNLP的研究者们一直都在尝试&#xff0c;怎么样让模型像人类一样&#xff0c;学会“知识”。而最直观的想法莫过于将人类已经总结出来供机器解读的“知识体系”&#xff0c;及其嵌入表示作为额外的特征添加到NLP模型之中。至少&#xff0c;从直觉上看&#xff0c;将…

分布式块存储系统Ursa的设计与实现

引言 云硬盘对IaaS云计算平台有至关重要的作用&#xff0c;几乎已成为必备组件&#xff0c;如亚马逊的EBS(Elastic Block Store)、阿里云的盘古、OpenStack中的Cinder等。云硬盘可为云计算平台带来许多优良特性&#xff0c;如更高的数据可靠性和可用性、灵活的数据快照功能、更…

sql日期转【pd读取csv文件踩坑】读取csv文件时报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0

【pd读取csv文件踩坑】读取csv文件时报错&#xff1a;UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0 select trunc(2020-08-10 10:43:32 ,yyyy-MM-dd hh24:mi:ss )1.当前时间 select CURRENT_TIMESTAMP 2020-08-10 10:41:22.94347308 select C…

LeetCode 919. 完全二叉树插入器(层序遍历队列)

1. 题目 完全二叉树是每一层&#xff08;除最后一层外&#xff09;都是完全填充&#xff08;即&#xff0c;结点数达到最大&#xff09;的&#xff0c;并且所有的结点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter&#xff0c;它支持以下几种操作…

开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)

OpenKG地址&#xff1a;http://openkg.cn/dataset/rcwi-dataset开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;北京语言大学&#xff08;阙孟溪、张宇飞、于东&#xff09;1. 摘要中文领域的词汇复杂度评估资源较为匮乏&#x…

提升 NLP 实战技能的一点建议

作为最典型的 AI 领域之一&#xff0c;NLP 这些年也是越来越热门&#xff0c;基本上是各大厂必备了。随着 OpenAI 等技术的诞生、迁移学习等技术的成功应用&#xff0c;使得 NLP 技术在搜索、推荐、信息流、互联网金融、社交网络等领域不断发展壮大。与此同时&#xff0c;NLP 工…