介绍下你的项目

说一贝叶斯优化算法

贝叶斯优化算法和网格搜索不同的是:网格搜索在测试一个新点的时候会忽略前一个点的信息,而贝叶斯优化会充分利用之前的信息,贝叶斯优化是通过对进行学习,来找到使目标函数达到全局最优的,他学习目标函数的形状的方法是:首先根据先验信息假设一个目标函数,然后采样一个新点去测试目标函数,再利用得到的信息去更新这个先验分布,最后算法测试是通过后验分布给出全局最值最有可能出现的点。

如何计算句向量,计算相似度的方法有哪些?

最简单的方法:对句子中所有单词的词向量取平均,得到句子向量
更好一点的:以tf-idf值为权重,加权句子中所有单词的词向量
使用TextCNN模型:以大小不同的滑动窗口来提取句子的n-gram特征,然后最大池化每个卷积核得到的一维向量,然后将池化后所有最大的值进行拼接
使用Bert模型,提取CLS的向量作为句子向量。

计算两个句子向量的余弦相似度或计算欧式距离
通过预训练模型BERT计算前后两个子句的相似度,[SEP]

讲一下beam search

beam search是对greedy search的一个改进算法。相对greedy search扩大了搜索空间,但远远不及穷举搜索指数级的搜索空间,是二者的一个折中方案。

beam search有一个超参数beam size(束宽),设为k
。第一个时间步长,选取当前条件概率最大的 个词,当做候选输出序列的第一个词。之后的每个时间步长,基于上个步长的输出序列,挑选出所有组合中条件概率最大的 k个,作为该时间步长下的候选输出序列。始终保持 个候选。最后从 个候选中挑出最优的。

BERT的损失函数,BERT的改进模型

预训练loss: − ∑ i = 1 M l o g p ( m i ) − ∑ j = 1 N l o g p ( n i ) , m i -\sum_{i=1}^{M}logp(m_i)- \sum_{j=1}^{N}logp(n_i),m_i i=1Mlogp(mi)j=1Nlogp(ni),mi是条件概率
ALBERT:预训练任务的改进:去掉了下一句子预测,更换为句子顺序预测,能够学习到句子之间的连贯性等逻辑信息
跨层参数共享,减小输入层embedding的维度,增大了hidden层embedding维度
孟子:预训练任务上,使用句子顺序预测作为预训练任务。
(SpaCy 对语料进行词性标注(POS)和命名实体识别(NER),将识别的目标标签作为预测目标用于训练,让模型在语言建模的同时,去计算 POS 与 NER 的预测损失与原始语言建模损失相加得到的最终损失。这个方法可以在各数据集上带来一致的提升。)
我们探索了一些训练校正策略。第一个是评估 mask 对句子的破坏度。基本的假设是破坏程度越大,Loss 会越大,模型则要花更大的代价去更新梯度。第二个是计算预测结果与原始句子之间句子级别的语义距离。尽管两个句子形式上差异很大,但语义越近,Loss 则会更小,对 Token 级别的交叉熵是一个补充。

11-04 11:06