信息聚合漫谈:加权平均思路
source link: https://allenwind.github.io/blog/9606/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
信息聚合漫谈:加权平均思路
在CNN中,常常使用AveragePooling方法和基于AdditiveAttention的加权Pooling方法。事实上,在深度学习中常常使用加权平均来聚合向量序列,如把词向量序列聚合成句向量;还有如时间序列的平滑处理,例如股票投资中的均线,量化投资中的趋势因子代理指标。
本文不是纯粹NLP中词向量相关文章,只是从数学角度介绍,有哪些加权平均方案。
随机变量或随机向量序列X=[X1,X2,…,Xn],对其进行加权平均能够获得信息聚合意义上的向量,不同的加权方法有着不同的物理意义和应用。例如词向量序列,在GlobalMeanPooling或GlobalMaxPooling下获得不同的信息聚合上的意义。
最简单的就是直接平均,
ˉx=1nn∑i=1xi在神经网络中,直接sum也可以当做加权平均,因为下游网络也会scaling回来。在深度学习中对应的就是GlobalMeanPooling。
这种平均方法如果在无限长的序列(源源不断)中,可以固定一个窗口再做平均,称为cumulative moving average,
ˉxn=x1+⋯+xnnˉxn+1=xn+1+n⋅ˉxnn+1通过简单的推导有递归形式,
ˉxn+1=xn+1+n⋅ˉxnn+1=xn+1+(n+1−1)⋅ˉxnn+1=(n+1)⋅ˉxn+xn+1−ˉxnn+1=ˉxn+xn+1−ˉxnn+1如果能够估计ˉxn,那么该迭代方法在大型数据集中运用可以节省内存或显存。
假设xi分别对应权重wi,那么有加权平均,
ˉx=n∑i=1wixin∑i=1wi加权平均的重点是如何计算wi。一般我们任务权重wi来自某个概率分布,
wi∼p(x)一般来说,我们要求wi≥0,且权重满足归一化,
n∑i=1wi=1,wi≥0因此,权重满足该条件的加权平均构成一个Convex combination。权重的选择有很多方法,在机器学习任务中,可以认为权重的设计或选择也是人工特征工程的一部分。如果是从神经网络出发,那么权重自然是可以让网络去学习。
k矩归一化加权
取权重为,
wi=xin∑i=1xi也就是说如果xi越大,其对应的权重wi越大。
加权平均有,
ˉx=n∑i=1wixi=n∑i=1x2in∑i=1xi仿照以上形式,我们有,
wi=xkin∑i=1xki ˉx=n∑i=1wixi=n∑i=1xk+1in∑i=1xki我称它为k矩归一化。注:k矩加权平均是我自己想的,类似与概率统计中的矩的计算,因此这样命名。
Power Mean
Power Mean定义为,
vp(x1,⋯,xn)=(xp1+⋯+xpnn)1p其中p>0。当p=1时就是均值。当p→+∞时,
limp→+∞vp(x1,⋯,xn)=max(x1,…,xn)证明,这里不是一般性假设xj≥x1≥⋯≥0,
limp→+∞vp(x1,⋯,xn)=limp→+∞(1nn∑i=1xpi)1p=xj×limp→+∞(1nn∑i=1(xixj)p)1p=max(x1,…,xn)类似地,当p→−∞,有vp(x1,⋯,xn)=min(x1,…,xn)。
基于位置加权
对于向量序列,考虑到权重wi所在的位置为i,因此有对应的位置权重,
wi=in∑i=1i基于位置加权为,
ˉx=n∑i=1i×xin∑i=1i时间序列中的Weighted moving average也是基于位置的加权平均,即
ˉxk=nxn+(n−1)pn−1+⋯+2p(n−k+2)+p(n−k+1)n+(n−1)+⋯+2+1基于位置的加权还可以这样处理,
ˉx=n∑i=1i×exin∑i=1exi这个与下面谈到的softmax加权相关。
指数加权平均
Exponential moving average,即指数加权平均或指数移动平均,
St={X1,t=1αXt+(1−α)⋅St−1,t>1其中α是衰减系数。递推方法不利于并行,展开来看,t>1的权重为,
wi=(1−α)t−1类似的思路可以推广的双指数和三指数回归。
双指数移动平均
Double exponential smoothing,即双指数移动平均,
s1=x1b1=x1−x0st=αxt+(1−α)(st−1+bt−1)bt=β(st−st−1)+(1−β)bt−1如果使用该结果做时间序列预测,有,
Ft+m=st+mbt最小方差加权平均
最小方差加权又称为逆方差加权(Inverse-variance weighting),期望随机变量序列加权平均后,方差最小。假设有随机变量序列,
X=[X1,…,Xn]有方差Var(Xi)=σ2i和均值E[Xi]=μi。随机变量的加权平均,
X=n∑i=1ωiXis.t.n∑i=1ωi=1随机变量的加权平均的方差,
Var(n∑iwiXi)=n∑i=1w2iVar(Xi)+2∑1≤i∑<j≤nwiwjCov(Xi,Xj)=n∑i=1ω2iσ2i随机变量的加权平均的均值,
E[n∑i=1wiXi]=n∑i=1wiμi然后通过广义拉格朗日函数可以解得权重,
ωi=λ2σ2i由于 T∑i=iωi=1,代入消除 λ ,得到,
ωi=σ−2in∑i=1σ−2i这就可以理解为什么最小方差加权平均也称为逆方差加权。求得权重后,容易计算加权平均后的方差,
var(e)=T∑i=1ω2iσ2i=T∑i=1(σ−2i∑Ti=1σ−2i)2σ2i=1T∑i=11σ2i不难估计这个方差的上界,不难得到下式,
T∑i=11σ2i⩾max(1σ21,...,1σ2T) max(1σ21,...,1σ2T)=1min(σ21,...,σ2T)对上述不等式左右两边分别取倒数,改变符号,
var(e)=1T∑i=11σ2i⩽min(σ21,...,σ2T)也就是说逆方差加权平均获得的随机变量的方差比原来所有随机变量的方差都小。
这里给出一种Numpy实现,
import numpy as np
def inverse_variance_weighted_sum(vs, return_weights=False):
"""逆方差加权平均"""
mu = np.mean(vs, axis=1, keepdims=True)
var = 1 / (vs.shape[1] - 1) * np.sum(np.square(vs - mu), axis=1, keepdims=True)
ivar = 1 / var
w = ivar / np.sum(ivar, axis=0, keepdims=True)
s = np.sum(vs * w, axis=0)
if return_weights:
return s, w
return s
以随机漫步演示一下,
对20个随机漫步的逆方差加权平均获得的曲线的方差远小于直接平均的。
softmax加权
使用softmax计算权重wi,
wi=exin∑i=1exi加权平均结果,
ˉx=n∑i=1wixi=n∑i=1exin∑i=1exixi=n∑i=1xiexin∑i=1exi这个结果容易让人联想到argmax的光滑近似,即softmax可以很自然地处理argmax的平滑问题,
argmax(x)=n∑i=1i×one-hot(argmax(x))i≈n∑i=1i×softmax(x)=n∑i=1i×exin∑i=1exi最小误差加权
把加权的权重计算转化为优化问题也是不错的思路,例如逐样本重构误差,
minw1,…,wnn∑i=1(n∑j=1wjXj−Xi)2类似地,整体重构误差,
minw1,…,wn,α‖[X1;…;Xn]m×n−α⊤n∑i=1wiXi‖通过深度学习框架可以容易获得权重结果。下面我们提供一个基于加性Attention加权的实例。
加性Attention加权
考虑到不定长的情况存在,如在传感器的多维时序中,不同样本的长度是不一样的。计算权重直接用两个全连接网络,
[α1,…,αn]=softmax(wTtanh(Wx))然后加权平均,
pool(x)=n∑i=1αixi=softmax(wTtanh(Wx))x如果序列是不定长,处理好掩码问题。
对于NLP任务来说,直接平均、SIF或TFIDF作为向量序列的权重是最常见的加权平均方法,且在大部分任务中取得不错的效果。跳出NLP任务来说,这里我们还介绍了很多加权平均方案。
[1] https://en.wikipedia.org/wiki/Weighted_arithmetic_mean
[2] https://en.wikipedia.org/wiki/Inverse-variance_weighting
[3] Information Aggregation via Dynamic Routing for Sequence Encoding
Recommend
-
55
原标题:随机加权平均 -- 在深度学习中获得最优结果的新方法 本文为雷锋网字幕组编译的技术博客 A Simple Guide to the Versions of the Inception Network,原标题,作者为 Bharath Raj。 翻译 | 龙翔 整理 | 孔令...
-
18
持续输出原创文章,关注我吧 本文是对于Dubbo负载均衡策略之一的加权随机算法的详细分析。从 2.6.4版本
-
16
1. 简单实现一般能想到的实现应该是记录一个 current index, 再取mod, 存在的问题是请求不够平滑。例如, 要对3台机器进行 加权轮询负载均衡, 权重分别是 1,2,3机器权重
-
11
Table of Contents一个集合里有 n 个元素,每个元素有不同的权重,现在要不放回地随机抽取 m 个元素,每个元素被抽中的概率为元素的权重占总权重的比例。要怎么做呢? 简单的解法 现在考虑只抽取一个元素...
-
10
针对anchor-point检测算法的优化问题,论文提出了SAPD方法,对不同位置的anchor point使用不同的损失权重,并且对不同的特征金字塔层进行加权共同训练,去除了大部分人为制定的规则,更加遵循网络本身的权值进行训练 来源:晓飞...
-
4
原文标题:《Chain Hill Capital :加密货币指数研究:波动率加权》撰文:Chain Hill Capital (仟峰资本)管理合伙人 Carrie波动率加权是实现风险分散化的指数构建方法,它可以提升加密货币组合的风险调整绩效,并获得主动回报。...
-
5
V2EX › PHP xunsearch 聚合搜索要怎么做 求思路。 gyinbj · 3 小时 57 分钟前 · 124 次点击
-
3
指数加权平均 创建时间:2018-05-21 15:32 字数:1,270 阅读:23 ...
-
4
一季度企业年金加权平均收益率告负 原创 蓝鲸基金 曹甜 · 2022-05-27 10:30:27 阅 9.5w -3.19%是有披露数据的10年来,仅有的四次亏损季度之一,也是有数据披露以来的最大单季度回撤!
-
3
36氪晚报丨央行:3月新发放贷款加权平均利率为4.34%;荷兰国际:美元或受益于美国债务上限僵局常敏潇·2023-05-15 13:03央行:3月新发放贷款加权平均利率为...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK