首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
a起个什么名字好
门头沟学院 Java
发布于湖北
关注
已关注
取消关注
@SweetBean:
算法岗常见面试题(七):语言模型
两种策略将预训练的语言表示应用到下游任务:基于特征 (feature-base):将训练出的表示作为feature用于任务。微调 (fine-funing):在预训练好的模型上加些针对任务的层,再对后几层进行精调。1 Word2vec (feature-base)理解 Word2Vec 之 Skip-Gram 模型word2vec原理推导与代码分析word2vec Parameter Learning Explained(5条消息) 图解Word2vec,读这一篇就够了(通俗易懂)_文晓武的博客-CSDN博客_word2vec流程1.1 说说word2vec ?语言离散表示的缺点:维度过高,数据稀疏,难以优化不包含语义,无法衡量词与词之间的关系word2vec是一种分布式表示。(为什么叫分布式表示:相比于one-hot只有一个维度是1,将词的表示集中在某个维度,分布式表示将词的信息分散到每个维度。)word2vec是从大量文本语料中以无监督的方式学习语义知识的一种模型,通过一个嵌入空间使得语义上相似的单词在该空间中距离很近。基本流程:先基于训练数据构建一个神经网络,当模型训练好之后,用这个模型通过训练数据所学到的参数,如隐层的权重矩阵,作为词向量。模型的输出概率代表了词典中每个词有多大的概率跟input word同时出现。1.2 word2vec为什么通过单词预测可以学习到单词的embedding?无监督的学习方式,利用上下文语言环境学习词的嵌入表示。通过一个嵌入空间,使得语义上相似的单词再该空间内距离很近。1.3 两种原理/框架skip-gram和CBOW的训练目标都不是得到一个预测上下文词的模型,而是作为一种预训练任务,得到词向量。每个模型包含三个层:输入层、投影层、输出层。从上图中可以看出,初始的Word2vec方法中可以产生两种词向量,输入层到投影层之间的权重矩阵得到输入向量vwv_wvw,投影层到输出层之间的权重矩阵得到输出向量vw’v_w^’vw’。最终使用的词向量是输入向量vwv_wvw,而输出向量会在后期的模型优化过程中被省略。输入层是词的one-hot表示。预测使用softmax激活函数。损失函数是对数似然函数:E=−logp(wO∣wI)E=-logp(w_O|w_I)E=−logp(wO∣wI),wIw_IwI和wOw_OwO分别为输入单词和目标输出单词,p(wO∣wI)p(w_O|w_I)p(wO∣wI)对应了输出层的yOy_OyO,最小化EEE。损失函数是如何得到的?对于CBOW和skip-gram,训练目标为maxp(wO∣wI)maxp(w_O|w_I)maxp(wO∣wI),即使得目标输出的softmax的概率最大,对maxp(wO∣wI)maxp(w_O|w_I)maxp(wO∣wI)进一步推导得到:maxp(wO∣wI)=maxyj∗=maxlogyj∗=maxlog(euj∗∑j′∈Veuj′)=uj∗−log∑j′∈Veuj′:=−Emaxp(w_O|w_I)=maxy_{j*}=maxlogy_{j*}=maxlog(\frac{e^{u_{j*}}}{\sum_{j'\in V}e^{u_{j'}}})=u_{j*}-log\sum_{j'\in V}e^{u_{j'}}:=-Emaxp(wO∣wI)=maxyj∗=maxlogyj∗=maxlog(∑j′∈Veuj′euj∗)=uj∗−log∑j′∈Veuj′:=−E其中j∗j*j∗对应了目标单词的下标。1.3.1 skip-gram给定input word预测上下文。神经网络的模型图:输入层:一个单词的词向量。投影层:没有操作,直接将输入的词向量传向输出层。如果需要用300维的向量表示词向量,则隐层需要有300个节点,隐层矩阵为10000行,300列(10000为词汇数,300为隐层个数)。最终目标就是学习隐层的权重矩阵(10000x300)模型训练完毕,直接查询word对应的index所在行的向量,即为输入单词的词嵌入。如果两个词具有非常相似的上下文,那么他们的嵌入向量也会非常相似。输出层:每个单词都是相互独立的,没有顺序关系,共享权重矩阵。损失函数为对数似然函数:L=−∑w∈Clogp(Context(w)∣w)L=-\sum_{w\in C}logp(Context(w)|w)L=−∑w∈Clogp(Context(w)∣w)其中,p(Context(w)∣w)=∏u∈Context(w)p(u∣w)p(Context(w)|w)=\prod_{u\in Context(w)}p(u|w)p(Context(w)∣w)=∏u∈Context(w)p(u∣w)1.3.2 CBOW用中心词的C个上下文单词,预测中心词。输入层:上下文的词向量。投影层:每个上下文使用的权重矩阵是共享的,且该层不使用激活函数。投影层对输入进行向量相加求平均值的操作。输出层:输出最可能的w。可以看做一个对分类问题,最朴素的做法是softmax回归。损失函数为对数似然函数:L=−∑w∈Clogp(w∣Context(w))L=-\sum_{w\in C}logp(w|Context(w))L=−∑w∈Clogp(w∣Context(w))1.4 优化策略(超参数一面)(答出前两条即可)层次softmax(Hierarchical Softmax):时间复杂度从V降到logV (V为词表的大小)负采样:时间复杂度从V下降到NnegN_{neg}Nneg+1(NnegN_{neg}Nneg为负采样的样本个数)二次采样subsampling:对高频次单词进行抽样来减少训练样本的个数将常见的单词组合或者词组作为单个“words”来处理对优化目标采用负采样方法,这样每个训练样本的训练只会更新一小部分的模型权重,从而降低计算负担1.4.1 层次softmax从隐藏层到输出的softmax层的计算量很大,因为要计算所有词的softmax概率,并从中找概率最大的值。层次softmax是计算softmax 的一种高效策略。基本思想:在求概率分布时,不对所有单词的概率求和来做归一化,而是用哈夫曼树来构建softmax,无需计算词表中所有单词的softmax并选择最大的作为输出,只需遍历树的深度个节点,即可找到softmax值最大的词作为输出。基本结构:根据词频,通过哈夫曼树构建词表,其中,叶子节点表示单词,叶子节点的个数为词表的大小V,非叶子节点用来求到达叶子节点的概率,非叶子节点的个数为V-1。从根节点到叶子节点只有一条路径,用这条路径上所有非叶子节点概率的乘积作为该单词是输出单词的概率。这样只用计算树深度个输出节点的概率就可以得到目标单词的概率。此外,高频词非常接近树根,所需要的计算次数将进一步减少。训练过程:将投影层输出的向量直接和哈夫曼树中的根节点相连。然后在非叶子节点上计算二分概率(sigmoid),这个概率是指从当前节点向左子树走还是右子树走的概率。具体而言,每个非叶子节点相当于一个神经元/感知机(一个sigmoid激活函数),任务是预测它在随机游走过程中应该向左走还是向右走。层次softmax算法去掉了原始word2vec模型的输出向量,取而代之的是,每个非叶子节点都包含一个输出向量vn(w,j)’v^’_{n(w,j)}vn(w,j)’,vn(w,j)’v^’_{n(w,j)}vn(w,j)’是一个可学习的参数,并在模型训练过程中不断调整。一个词被定义为输出单词的概率的计算公式vn(w,j)’v^’_{n(w,j)}vn(w,j)’反向传播过程中的更新计算公式以上的反向传播的计算过程同时适用于CBOW和skip-gram,区别在于,在应用于skip-gram时,需要对输出的上下文中的每个单词都重复这个更新过程。哈夫曼树是一种带权路径长度最短的二叉树,也称最优二叉树。哈夫曼树的构建针对的是带权的叶子节点,应用到word2vec中,权重就是词频。基于词表的哈夫曼树的构建:每次从集合中选出权值最小的两个节点,以这两个节点作为左右子树构建新的树,其中,权重较小的作为左子树,权重较大的作为右子树,两个节点相同时就将深度较小的作为左子树。根据词频构建,高词频的放在前面。于是每个叶子节点代表一个词,且每个词都可以表示为01的哈夫曼编码。多个二分类解决多分类问题SVM中的多分类是由二分类组成的,且使用的也是二叉树的结构。1.4.2 负采样为了解决每轮都有大量的输出向量需要更新的问题,我们选择只更新其中的一小部分样本。负样本:输出端期望预测为0的word,即非期望预测结果的word正样本:输出端期望预测为1的word,即为期望预测结果的word如,输入"so",期望输出上下文词"quick",则"quick"为正样本,除"quick"以外的所有词为负样本。基本思想:在输出向量中随机选择少量的负样本(比如5个)来更新权重,而不是对所有的词语都更新权重。正样本也需要更新权重。即,从原来的更新所有词的权重变为只更新少量负样本+正样本的权重。负样本数量的选择:对于小规模数据集,5~20个,大规模数据集,2~5个。如何选择负样本:采样过程中需要构建概率分布,也可以随机抽取,还可以根据经验定义一个良好的分布。某个词被选为负样本的概率和词频成正比。损失函数:上述公式同时适用于CBOW和skip-gram模型,其中,应用于skip-gram模型时,一次只对上下文中的一个单词计算这个等式。反向传播的过程中,只更新输出向量中正样本和负样本对应的权重参数。1.4.3 二次采样subsampling对于训练原始文本中遇到的每一个单词,他们都有一定的概率被删掉,删除的概率与单词的频率有关。2 FastText使用word2vec的结构训练,加上了ngram,ngram一方面可以增加信息,一方面避免OOV。2.1 N-gram(1条消息) 浅谈fastText中的N-gram特征_43v3rY0unG的博客-CSDN博客_fasttext ngramngram缓解了word2vec无序的问题,具体而言,fasttext将n-gram的词也当作文本中的词,在输入端体现处理,在计算隐层时,把n-gram的向量也加进去求和取平均。反向传播的过程中,模型会同时学到词的向量和n-gram的向量。哈希桶由于n-gram的量远大于原有的词,所以完全存下所有的n-gram并不现实。采用哈希桶的方式,把所有n-gram哈希到buckets个桶中,哈希到同一个桶的所有n-gram共享一个embedding vector。哈希的方式保证了查找效率O(1),桶的方式保证了内存消耗控制在O(buckets*dim)内。ngram的使用前提是数据稀疏,分为两种:用于分类(有监督的,需要设定label)用于词向量(cbow和skipgram)2-gram的形式:['I love', 'love deep', 'deep learning', 'learning as', 'as it', 'it can', 'can help', 'help me', 'me resolve', 'resolve some', 'some complicated', 'complicated problems', 'problems in', 'in 2018']缺点会使词汇量成指数级增长2.2 FastText是什么(超参数二面)面试官让我回顾NLP模型发展时,我提到了FastText,于是面试官问FastText是什么?使用word2vec的结构训练,加上了ngram,ngram一方面可以增加信息,缓解word2vec无序的问题,一方面避免OOV。3 ELMo (feature-base)ELMo(Embedding from language Model)是一个语言模型(根据前k个词预测第k个词),其核心结构为一个双向LSTM,目标函数是最大化正反两个方向的语言模型的最大似然。模型的输入为由word2vec或其他方式得到的token embedding,word2vec缺点每个词的特征向量只与自身相关,无法捕获上下文信息。每个单词的特征向量是唯一的,不能解决一词多义ELMo的核心要点使用大规模的无标签语料库训练双向LSTM语言模型将ELMo得到的特征向量送到下游任务中,得到任务相关的预测结果。应用到下游任务优势可以处理一词多义具有不同层次的表征能力。ELMo通过对多层LSTM的输出进行自适应加权的结构,使用其可以根据下游任务自适应调整ELMo的输出。具有强大的灵活性,可以和各种下游任务结合缺点速度较慢,对每个token编码,都要通过language model计算得出。4 GPT (fine-funing)可迁移到多种NLP任务的,基于Transformer的语言模型。模型的训练分两步:无监督的预训练目标函数是最大化似然函数。有监督的训练数据优点:循环神经网所捕获到的信息较少,而transformer可以捕获到更长范围的信息。计算速度比循环神经网络更快,易于并行化实验结果显示,Transformer的效果比ELMo和LSTM网络更好缺点:对于某些类型的任务需要对输入数据的结构作调整。
点赞 8
评论 3
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-17 16:22
陕西师范大学 算法工程师
滴滴26届校招挂了,会影响正常批投递吗
rt,看见提前批开了就投了,秒挂了,不知道有咩有影响?
是单身的猕猴桃很优秀:
可以参考高考吧,提前批挂了不影响正常批吧
26届校招投递进展
点赞
评论
收藏
分享
07-11 22:11
滴滴_运维开发工程师(准入职员工)
滴滴内推
薪资: 我是运营岗,本科生 150/d,工作时间是早10晚7,弹性打卡(但其实每天打卡四小时就算一天),午休 2 小时(不过中午休息区比较难抢) 交通: 我在东软职场,每天上下班有西二旗到公司往返的摆渡车,不同职场之间往来打车可以报销,21:00 下班回家也可以报销(但我从来没用过,没加过班) 福利: 开水畅饮,特定节假日有礼盒,公司经常会举办各种活动,参加会有小礼品和积分,积分可以在商城兑换物品。 吃饭: 午饭需要自己解决,每晚有 30 的餐补,可以去周边餐馆点餐,也可以在内部软件点餐,直接送到所在楼层茶水间 总体感觉在滴滴很舒服,工作强度不大,我所在的部门也没有太多dirty wo...
滴滴公司福利 1026人发布
点赞
评论
收藏
分享
05-23 20:59
湖南工商大学 测试开发
26届后端实习,接下来该咋办
前面醒悟的太晚了,学的也太慢了,以至于真的没学什么东西,简历写的太烂了,现在是不知道改怎么走了,特来请教一下各位大佬,有没有好心人给一点建议,😭要转去干别的吗?还是再花时间在后端上,写项目,再继续学?还有一个数字马力的校招机会,还有两轮,或者准备数字马力?
影中藏刀:
看得出你准备的真的很少,不过去年在这个时候我还在学ssm呢,比我要好得多呢,肯定有机会的呢,努力成为八股文战神吧
投递数字马力等公司7个岗位
点赞
评论
收藏
分享
05-27 13:17
门头沟学院 测试工程师
一投简历就想骂人正常吗
得了一种一投简历就想骂人的病春招找工作到现在的心情已经不知道怎么说了从一有面试会高兴 进度跟进会开心到后来被泡池子拿捏的难受心情的不断起起伏伏 时而焦虑时而躺平自我安慰到现在已经完全毫无波澜 甚至不想投简历一投简历就想骂人现在环境说真的已经太糟糕了承受着低薪奋力入行 还要在外地租房面临着一堆未知的风险 孤身一人承担且不说 找到工作才是痛苦的开始 我已经能想象到 现在的环境 就算拿了offer 进公司也要被压榨被劝退被压力被卡试用期 各种卡 像我这种抗压能力弱的更是完蛋双非更是只能吃💩味巧克力哪有什么小而美 全都是庙小妖风大这个时代已经由不得人了 共勉吧
只写bug的程序媛:
之前一个重庆的,5k还要线下面试,笑死,这些人是从十几年前穿越过来的吗
点赞
评论
收藏
分享
07-12 16:28
门头沟学院 Java
面试官:Cookie、Session、Token 有什么区别?
Cookie、Session、Token 有什么区别? 本文作者:程序员小白条 本站地址:https://xbt.xiaobaitiao.top 大家伙,我是程序员小白条,今天来聊一聊,经典面试问题,一般我开发项目就是 Token,JWT,第三方 Oauth2。 在 Web 开发中,Cookie、Session 和 Token 都是用来管理用户状态的机制,但它们的工作原理和应用场景有很大不同。今天我们就来聊聊它们的区别,以及各自适合什么场景。 1. Cookie(小饼干) Cookie 是服务器发给浏览器的一小块数据(通常只有几 KB),浏览器会把它存起来,并在每次请求时自动带上。 怎么工...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我和妈妈讲以后我可能给不了她一个月1500
4991
2
...
滴滴提前批一面
4358
3
...
后端实习到底该干什么啊
3993
4
...
滴滴提前批一面秒挂面经
3918
5
...
王侯将相宁有种乎!
3659
6
...
双非本应届是如何拿到30
3128
7
...
明天五场面试,加油
3116
8
...
实习,别太较真
2938
9
...
腾讯提前批后台开发凉经teg
2655
10
...
卷王的风气还是吹到了实习
2552
创作者周榜
更多
正在热议
更多
#
如何提高实习转正率?
#
11147次浏览
157人参与
#
打工人的工作餐日常
#
51033次浏览
395人参与
#
追觅科技求职进展汇总
#
17582次浏览
119人参与
#
你觉得技术面多长时间合理?
#
98527次浏览
713人参与
#
哪些公司真双非友好?
#
14793次浏览
80人参与
#
26届的你们有几段实习?
#
37635次浏览
425人参与
#
月薪多少能在一线城市生存
#
20274次浏览
260人参与
#
你后悔自己读研吗?
#
15963次浏览
227人参与
#
你以为的实习VS真实的实习
#
22507次浏览
206人参与
#
双非能在秋招上岸吗?
#
220552次浏览
1166人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
116852次浏览
808人参与
#
你认为哪些项目算烂大街?
#
15167次浏览
258人参与
#
机械校招之路总结
#
93348次浏览
1893人参与
#
非技术2023笔面经
#
248191次浏览
2412人参与
#
你被哪些公司秒挂过?
#
28274次浏览
234人参与
#
网申一定要掌握的小技巧
#
10519次浏览
66人参与
#
学历贬值真的很严重吗?
#
23125次浏览
165人参与
#
最难的技术面是哪家公司?
#
8444次浏览
69人参与
#
找工作时的取与舍
#
82390次浏览
588人参与
#
机械人,你拿到几个offer啦
#
38632次浏览
320人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务