Tensorflow2.0-常用函数

最近学习了一些TensorFlow2.0的常用函数,大致如下:

Learning to rank

三种技术变迁和比较

常见的排序算法LTR(Learning to rank),将学习任务分为三种策略,即pointwise,pairwise,Listwise三类其

pointwise将其转化为多类分类或者回归问题

pairwise将其转化为pair分类问题

Listwise为对查询下的一整个候选集作为学习目标,三者的区别在于loss不同。

word2vec

Word2vec是一种词嵌入模型

句子需要先进行分词,而后将每词表示成一个固定长度的向量。假设词库大小为N,词向量长度为L,则通过语料库学习到这个W=N*L矩阵的内容,也就是该预料库下每个词的向量表示。

Word2vec考虑词之间共出现的概率,但是未考虑语义信息。有了词的向量表示,后续就可以衔接其他分类模型,解决文本分类或其他问题了。

BERT衍生模型

结合网络大牛的总结(致谢大牛!),目前存在一些针对BERT进行优化的衍生模型。

主要优化方向:

性能(ALBERT)

增加图谱实体(ERINE, K-BERT)

多样的Attention方式(XLNet, UNILM)

新增训练任务(MT-DNN)

兼容生成式任务(MASS, UNILM)等

隐语义模型

LSA

LSA即潜语义分析(或主题模型,主题即为潜在的语义信息),认为“一篇文章是通过一定的概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到的。

目标是:通过对“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布,即根据给定的一篇文档,推测其主题分布。

主要有2种主要方法:奇异值分解SVD、非负矩阵分解NMF

单词集合W={w1, w2, …, wm}

文档集合D={d1, d2, …, dn}

单词向量空间Xm*n:单词-文本矩阵,每个单词在文档中出现的频率(行-单词,列-文档)

话题向量空间Tm*k:单词-话题矩阵,每个单词在话题中出现的频率(行-单词,列-话题),T是X的一个子集

文本在话题空间的向量表示Yk*n: Xmn = Tmk * Ykn,Ykn 就是我们需要求得的隐变量,即每个文本对应每个话题的权重,可将每个文本标记为权重较大的话题上。

TextCNN

用途:一般用于文本分类,主要包括输入层、卷积层、max-pooling层、全连接+softmax层

输入:文本向量矩阵(行:每个词、列:每个词的向量表示-word2vec or glove),如果输入有多个channel,则针对每个词使用了多个不同的向量化表示

卷积核:卷积核的“宽度”通常与输入矩阵的宽度相同,高度或区域大小可以变化,一般为2-5个单词的窗口

最大期望算法

极大似然算法

极大似然算法的思想:知道结果,反推条件θ

如果概率模型不依赖隐变量,则可直接用极大似然算法获取参数估计值。

举例:随机抛硬币A和B很多轮,每轮记录A和B是正面还是反面的次数,估计A正面朝上的概率、B正面朝上的概率。

随机森林

随机森林是有很多随机得决策树构成,它们之间没有关联。得到RF以后,在预测时分别对每一个决策树进行判断,最后使用Bagging的思想进行结果的输出(也就是投票的思想)。

学习过程简介

现在有N个训练样本,每个样本的特征为M个,需要建K颗树

从N个训练样本中有放回的取N个样本作为一组训练集(其余未取到的样本作为预测分类,评估其误差)

从M个特征中取m个特征左右子集特征(m<<M)

对采样的数据使用完全分裂的方式来建立决策树,这样的决策树每个节点要么无法分裂,要么所有的样本都指向同一个分类

重复2的过程K次,即可建立森林