11.3面试相关

介绍下你的项目

说一贝叶斯优化算法

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

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

最简单的方法:对句子中所有单词的词向量取平均,得到句子向量
更好一点的:以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维度

说一下TextCNN

textcnn有输入层,卷积层,池化层,全连接层;
局部连接:卷积层和前一层的部分神经元连接
权值共享:在不同的层卷积核的参数是共享的,可以理解为一个卷积核只捕捉一种局部特征
textcnn中的使用了一维卷积,(一维卷积在i一个方向上滑动,二维卷积先在第一个维度上滑动,再在第二个维度上滑动)卷积核的一个维度和embedding的维度相同,另一个维度代表n-gram窗口的大小,可提取不同n-gram的信息;经过卷积层之后得到feature map,也是一个一维向量,然后经过池化层后转化成单个值,将所有池化后的值拼接成句子向量,最后接全连接层用于分类(经过softmax得到属于u每个类别的概率)。
卷积层:利用多个卷积核提取不同的局部特征
池化层:显著降低了参数量

项目流程

数据预处理:
分词,去停用,构建词表(BERT除外),将token转换成id,每个样本等长处理(短的padding,长的截断)
(特征工程)
模型搭建
调参
模型评估

为什么有了bert还选择textcnn

textcnn速度快模型轻量级也保证了精度
bert模型精度高,但是推理速度慢
两者适用不同的场景

怎么调参的

dropout一般设置0.5
学习率:如果使用了自适应学习率,那可以不用调节学习率,否则从0.01调整到0.001
迭代次数:
随着模型的迭代,一般会从欠拟合到过拟合
观察train loss和dev loss的变化来确定如何调整参数
如果train loss和dev loss都下降,说明模型仍在学习;如果train loss下降,dev loss上升,说明模型过拟合,此时我们需要采取一些过拟合的手段;如果train loss 下降,val loss不变,说明欠拟合;如果都上升,模型有问题。

过拟合,欠拟合手段

过拟合:学习到了训练集的噪声
增加数据,加正则化,dropout(网络的稀疏性),添加bn层,适当减小epoch次数,早停法(从dev的loss不在下降的位置拿到模型),降低网络复杂度,降低学习率使参数更新幅度减小,集成学习。
欠拟合:训练集和测试集效果都不好
增加训练迭代次数,网络结构复杂化,优化数据集。

RNN中采用了什么激活函数

如何处理数据不平衡问题

Bert是怎么分词的

Bert是基于wordpiece分词的,如果是英文,首先将文本分割成单词,然后将单词分割成subword;如果是中文,基于字符级的话,将文本切割成一个个字,如果是词级别,分割成一个个词。

了解过GPT吗

GPT是基于decoder的单向语言模型,是一个自回归模型,比较适合用来做句子生成的任务;它采用masked attention机制,是为了保证训练阶段和预测阶段的一致性,因为在测试阶段,模型不知道后面的输入,所以在训练阶段我们需要把后面的单词mask掉,同时使用teach forcing加速收敛。
Elmo是基于LSTM提取特征的,elmo的双向体现在使用前向和后向的lstm网络,最后将两个隐层进行拼接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石头猿rock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值