当前位置: 首页 > news >正文

LNWT--篇章三小测

  • 问题1: BERT训练时候的学习率learning rate如何设置?

在训练初期使用较小的学习率(从 0 开始),在一定步数(比如 1000 步)内逐渐提高到正常大小(比如上面的 2e-5),避免模型过早进入局部最优而过拟合;

在训练后期再慢慢将学习率降低到 0,避免后期训练还出现较大的参数变化。

在 Huggingface 的实现中,可以使用多种 warmup 策略:

TYPE_TO_SCHEDULER_FUNCTION = {SchedulerType.LINEAR: get_linear_schedule_with_warmup,SchedulerType.COSINE: get_cosine_schedule_with_warmup,SchedulerType.COSINE_WITH_RESTARTS: get_cosine_with_hard_restarts_schedule_with_warmup,SchedulerType.POLYNOMIAL: get_polynomial_decay_schedule_with_warmup,SchedulerType.CONSTANT: get_constant_schedule,SchedulerType.CONSTANT_WITH_WARMUP: get_constant_schedule_with_warmup,
}

具体而言:

CONSTANT:保持固定学习率不变;

CONSTANT_WITH_WARMUP:在每一个 step 中线性调整学习率;

LINEAR:上文提到的两段式调整;

COSINE:和两段式调整类似,只不过采用的是三角函数式的曲线调整;

COSINE_WITH_RESTARTS:训练中将上面 COSINE 的调整重复 n 次;

POLYNOMIAL:按指数曲线进行两段式调整。 具体使用参考transformers/optimization.py: 最常用的还是get_linear_scheduler_with_warmup即线性两段式调整学习率的方案。

  • 问题2: BERT模型使用哪种分词方式?

BERT 使用的分词方式是基于 WordPiece Tokenization 的。

WordPiece 将单词分成子词单元。例如,单词 "playing" 可以被分解成 ["play", "##ing"],其中 "##" 表示这个子词不是一个独立的词,而是一个前一个词的继续

通过子词分词,BERT 可以使用较小的词汇表来覆盖更多的词汇。BERT 的词汇表大小通常是 30,000 左右

当遇到一个未登录词时,WordPiece 会将其拆分成多个子词,这些子词组合起来能够尽可能地匹配原始词

  • 问题3: 如何理解BERT模型输入的type ids?

用于区分模型输入中的不同句子,指示每个 token 属于哪一个句子

区分句子对

当输入包含两个句子时,type_ids 用于指示每个 token 属于哪个句子。句子 A 的所有 token 的 type_id 为 0,句子 B 的所有 token 的 type_id 为 1。

用于注意力机制

BERT 模型的自注意力机制会结合 type_ids 信息来学习句子间的关系。通过这种方式,模型能够区分两个句子并理解它们之间的关系。

  • 问题4: Hugginface代码中的BasicTokenizer作用是?

将输入文本分解成单独的 token:

将标点符号与单词分开、可以将文本转换为小写、去除多余的空格,确保每个 token 之间只有一个空格、确保输入文本是规范的 Unicode 格式

  • 问题5: WordPiece分词的好处是什么?

既在一定程度保留了词的含义,又能够照顾到英文中单复数、时态导致的词表爆炸和未登录词的 OOV(Out-Of-Vocabulary)问题,将词根与时态词缀等分割出来,从而减小词表,也降低了训练难度

  • 问题6: BERT中的warmup作用是什么?

避免模型过早进入局部最优而过拟合、避免后期训练还出现较大的参数变化

http://www.lryc.cn/news/367528.html

相关文章:

  • 【NoSQL】Redis练习
  • Git 和 Github 的使用
  • 学习分享-断路器Hystrix与Sentinel的区别
  • 社区物资交易互助平台的设计
  • 19-Nacos-服务实例的权重设置
  • R语言数据探索和分析23-公共物品问卷分析
  • Webix前端界面框架:深度解析与应用实践
  • Qt基于SQLite数据库的增删查改demo
  • 新书推荐:2.2.4 第11练:消息循环
  • MASA:匹配一切、分割一切、跟踪一切
  • Websocket前端传参:深度解析与实战应用
  • 造假高手——faker
  • 前端工程化工具系列(十二)—— PostCSS(v8.4.38):CSS 转换工具
  • Scanpy(3)单细胞数据分析常规流程
  • 【Stable Diffusion】(基础篇二)—— Stable Diffusion图形界面介绍和基本使用流程
  • OpenCv之简单的人脸识别项目(动态处理页面)
  • 【Linux】进程间通信
  • UI与前端:揭秘两者的微妙差异
  • idea如何根据路径快速在项目中快速打卡该页面
  • 探索成功者的特质——俞敏洪的观点启示
  • MCU的环形FIFO
  • 使用proteus仿真51单片机的流水灯实现
  • 【漏洞复现】Apache OFBiz 路径遍历导致RCE漏洞(CVE-2024-36104)
  • 数据库表中创建字段查询出来却为NULL?
  • 缓存方法返回值
  • 【十大排序算法】快速排序
  • linux系统ubuntu中在命令行中打开图形界面的文件夹
  • 【C++11数据结构与算法】C++ 栈
  • pdf文件如何防篡改内容
  • QT 音乐播放器【二】 歌词同步+滚动+特效