• 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网络,最后将两个隐层进行拼接。

  • 相关阅读:
    无线传文件 - AirDroid - 电脑远程安装apk到手机
    gRPC(一)入门:什么是RPC?
    「学习笔记」基环树
    Intel® Hyper-Threading Technolog 超线程技术
    王道考研数据结构代码总结(第八章)
    找实习之从0开始的后端学习日记【9.20】
    4.PHP数组与数组排序
    语音电话机器人的核心技术是什么
    React基础2(函数式组件钩子,边界错误,懒加载等)
    2022牛客暑期多校训练营4(ADHKLMN)
  • 原文地址:https://blog.csdn.net/weixin_42887772/article/details/127677772