更多来自于GitHub:Reflection_Summary.

Bert的双向体现在什么地方?

mask+attention,mask的word结合全部其他encoder word的信息

Bert的是怎样实现mask构造的?

  • MLM:将完整句子中的部分字mask,预测该mask词
  • NSP:为每个训练前的例子选择句子 A 和 B 时,50% 的情况下 B 是真的在 A 后面的下一个句子, 50% 的情况下是来自语料库的随机句子,进行二分预测是否为真实下一句

在数据中随机选择 15% 的标记,其中80%被换位[mask],10%不变、10%随机替换其他单词,这样做的原因是什么?

  • mask只会出现在构造句子中,当真实场景下是不会出现mask的,全mask不match句型了
  • 随机替换也帮助训练修正了[unused]和[UNK]
  • 强迫文本记忆上下文信息

为什么BERT有3个嵌入层,它们都是如何实现的?

  • input_id是语义表达,和传统的w2v一样,方法也一样的lookup
  • segment_id是辅助BERT区别句子对中的两个句子的向量表示,从[1,embedding_size]里面lookup
  • position_id是为了获取文本天生的有序信息,否则就和传统词袋模型一样了,从[511,embedding_size]里面lookup

bert的损失函数?

  • MLM:在 encoder 的输出上添加一个分类层,用嵌入矩阵乘以输出向量,将其转换为词汇的维度,用 softmax 计算mask中每个单词的概率
  • NSP:用一个简单的分类层将 [CLS] 标记的输出变换为 2×1 形状的向量,用 softmax 计算 IsNextSequence 的概率
  • MLM+NSP即为最后的损失

手写一个multi-head attention?

tf.multal(tf.nn.softmax(tf.multiply(tf.multal(q,k,transpose_b=True),1/math.sqrt(float(size_per_head)))),v)

长文本预测如何构造Tokens?

  • head-only:保存前 510 个 token (留两个位置给 [CLS] 和 [SEP] )
  • tail-only:保存最后 510 个token
  • head + tail :选择前128个 token 和最后382个 token(文本在800以内)或者前256个token+后254个token(文本大于800tokens)

你用过什么模块?bert流程是怎么样的?

  • modeling.py
  • 首先定义处理好输入的tokens的对应的id作为input_id,因为不是训练所以input_mask和segment_id都是采取默认的1即可
  • 在通过embedding_lookup把input_id向量化,如果存在句子之间的位置差异则需要对segment_id进行处理,否则无操作;再进行position_embedding操作
  • 进入Transform模块,后循环调用transformer的前向过程,次数为隐藏层个数,每次前向过程都包含self_attention_layer、add_and_norm、feed_forward和add_and_norm四个步骤
  • 输出结果为句向量则取[cls]对应的向量(需要处理成embedding_size),否则也可以取最后一层的输出作为每个词的向量组合all_encoder_layers[-1]

知道分词模块:FullTokenizer做了哪些事情么?

  • BasicTokenizer:根据空格等进行普通的分词

    • 包括了一些预处理的方法:去除无意义词,跳过’\t’这些词,unicode变换,中文字符筛选等等
  • WordpieceTokenizer:前者的结果再细粒度的切分为WordPiece
    • 中文不处理,因为有词缀一说:解决OOV

Bert中如何获得词意和句意?

  • get_pooled_out代表了涵盖了整条语句的信息
  • get_sentence_out代表了这个获取每个token的output 输出,用的是cls向量

源码中Attention后实际的流程是如何的?

  • Transform模块中:在残差连接之前,对output_layer进行了dense+dropout后再合并input_layer进行的layer_norm得到的attention_output
  • 所有attention_output得到并合并后,也是先进行了全连接,而后再进行了dense+dropout再合并的attention_output之后才进行layer_norm得到最终的layer_output

为什么要在Attention后使用残差结构?

残差结构能够很好的消除层数加深所带来的信息损失问题

平时用官方Bert包么?耗时怎么样?

  • 第三方:bert_serving
  • 官方:bert_base
  • 耗时:64GTesla,64max_seq_length,80-90doc/s
    • 在线预测只能一条一条的入参,实际上在可承受的计算量内batch越大整体的计算性能性价比越高

你觉得BERT比普通LM的新颖点?

  • mask机制
  • next_sentence_predict机制

elmo、GPT、bert三者之间有什么区别?

  • 特征提取器:elmo采用LSTM进行提取,GPT和bert则采用Transformer进行提取。很多任务表明Transformer特征提取能力强于LSTM,elmo采用1层静态向量+2层LSTM,多层提取能力有限,而GPT和bert中的Transformer可采用多层,并行计算能力强。
  • 单/双向语言模型:GPT采用单向语言模型,elmo和bert采用双向语言模型。但是elmo实际上是两个单向语言模型(方向相反)的拼接,这种融合特征的能力比bert一体化融合特征方式弱。
  • GPT和bert都采用Transformer,Transformer是encoder-decoder结构,GPT的单向语言模型采用decoder部分,decoder的部分见到的都是不完整的句子;bert的双向语言模型则采用encoder部分,采用了完整句子

Bert需要理解的一些内容相关推荐

  1. 【NLP】 深入浅出解析BERT原理及其表征的内容

    本篇介绍目前NLP领域里影响力最大的预训练模型BERT.首先,大致介绍了BERT里有什么:接着,介绍了BERT的结构和其预训练的方式:最后,再总结BERT的表征的内容和分布. 作者&编辑 | ...

  2. 面向流行性疾病科普的用户问题理解与答案内容组织

    摘要 [目的] 为改善人们查找并理解科普信息的方式,构建基于流行性疾病知识图谱的问答系统,重点改进对用户问题的理解,以及对答案内容的组织,降低科普受众理解专业知识的门槛.[方法] 基于多种健康信息源总 ...

  3. LR需要理解的一些内容

    本系列为深入篇,尽可能完善专题知识,并不会所有的都会出现在面试中,更多内容,详见:Reflection_Summary,欢迎交流. 另外,欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follo ...

  4. bert本质理解记录一

    bert的双向理解:本质上来讲就是高层(输入层为最底层)的每个隐藏单元能接受上一层的所有信息(并非只是左边或者右边);类似DNN神经网络,每个隐藏神经元都能接受到上一层的所有信息;双向比单向功能更加强 ...

  5. python神器pandas_Python数据处理神器,pandas入门必需理解的核心内容

    在 Python 中做处理数据,那么必须要使用 pandas ,否则你根本做不到'人生苦短,我学Python'. 最近发生了一件小事情,让我意识到许多人没有系统掌握 pandas .我的一位同事在使用 ...

  6. bert 无标记文本 调优_使用BERT准确标记主观问答内容

    bert 无标记文本 调优 介绍 (Introduction) Kaggle released Q&A understanding competition at the beginning o ...

  7. 一句话理解Vue核心内容

    想必教程大家已经看过,也动手做过一些Demo.倘若让大家用一句话概括'"vue是什么",你的答案会是什么?.这里Vue官方教程也给出了自己的一句话解释.就是教程开头的第一句话 Vu ...

  8. 【学习方法】如何快速地进行阅读?如何在阅读的时候快速理解其中的内容?

    文章目录 如何快速阅读并理解一本书呢? 知乎:如何提高快速阅读的理解程度?如何快速进入学习状态? 关于各种阅读现象的解决方法 快速阅读术 快速阅读技巧方法和要注意的问题 如何用快速阅读法读技术性文章 ...

  9. 集成学习需要理解的一些内容

    本系列为深入篇,尽可能完善专题知识,并不会所有的都会出现在面试中,更多内容,详见:Reflection_Summary,欢迎交流. 另外,欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follo ...

最新文章

  1. torch序列化 pickle 慢
  2. spoj String To Binary(数字转二进制、读取数字和字符串)
  3. MIMO雷达比幅单脉冲测角精度分析(系统工程与电子技术)
  4. java面试mysql的引擎_面试官:你用过mysql哪些存储引擎,请分别展开介绍一下
  5. (1)stm32开发之标准库的介绍
  6. 如何移除项目中无用的 console.log 代码
  7. mac怎么安装python开发环境搭建_Mac OS搭建Python开发环境
  8. Windows 7丢失用户、密码解决办法-我体验了!
  9. iOS开发之UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
  10. [LeetCode]319. Bulb Switcher灯泡开关
  11. java udp 接收16进制,java udp接收16进制乱码
  12. 图片压缩软件有哪些?分享三个好用的图片压缩软件
  13. 根据身份证号 计算具体年龄
  14. 开机无法跳过谷歌验证_如何跳过Nexus7第一次开机设置的网络验证
  15. 支付宝 支付返回 4000 ,系统繁忙请稍后再试
  16. [etcd] 使用 Txn 一次性插入多个语句
  17. android开发中磁场传感器,Android NDK中的陀螺仪和磁场传感器事件
  18. 打死都不要进外包,来看看我在阿里外包的这2年......
  19. JavaScript-js操作标签style相关
  20. 用邮箱发简历,主题怎么写,正文怎么写

热门文章

  1. C#截取屏幕保存图片
  2. 快速完整的基于点云闭环检测的激光SLAM系统
  3. RGB图像重建非刚性物体三维形状(CVPR)
  4. ORB-SLAM3系列-多地图管理
  5. Structure-from-Motion Revisited
  6. React React-Redux的安装,使用
  7. Hi3516ampp编译错误之ls: cannot access '/hiwork/osdrvhi3516a.C02': No such file or directory
  8. 第二课.PyTorch入门
  9. Android类动态加载技术
  10. 服务器又中毒了,得治一治!