task5:BERT具体应用

如何应用 BERT

@[toc]
  尝试 BERT 的最佳方式是通过托管在 Google Colab 上的 BERT FineTuning with Cloud TPUs。 BERT 代码可以运行在 TPU、CPU 和 GPU。

上一章我们查看 了BERT 仓库 中的代码:

1.BERT代码总结:

1.1 BertTokenizer(Tokenization分词)

  • 组成结构:BasicTokenizer和WordPieceTokenizer
  • BasicTokenizer主要作用:
    1. 按标点、空格分割句子,对于中文字符,通过预处理(加空格方式)进行按字分割
    2. 通过never_split指定对某些词不进行分割
    3. 处理是否统一小写
    4. 清理非法字符
  • WordPieceTokenizer主要作用:
    1. 进一步将词分解为子词(subword),例如,tokenizer 这个词就可以拆解为“token”和“##izer”两部分,注意后面一个词的“##”表示接在前一个词后面
    2. subword介于char和word之间,保留了词的含义,又能够解决英文中单复数、时态导致的词表爆炸和未登录词的OOV问题
    3. 将词根和时态词缀分割,减小词表,降低训练难度
阅读更多
task4:BERT代码讲解

BERT代码实现
@[toc]
前言
  本文是复制datawhale关于transformer教程里的一章《如何实现一个BERT》。本文包含大量源码和讲解,通过段落和横线分割了各个模块,同时网站配备了侧边栏,帮助大家在各个小节中快速跳转,希望大家阅读完能对BERT有深刻的了解。同时建议通过pycharm、vscode等工具对bert源码进行单步调试,调试到对应的模块再对比看本章节的讲解。

  本篇章将基于HuggingFace/Transformers, 48.9k Star进行学习。本章节的全部代码在huggingface bert,注意由于版本更新较快,可能存在差别,请以4.4.2版本为准。
  HuggingFace 是一家总部位于纽约的聊天机器人初创服务商,很早就捕捉到 BERT 大潮流的信号并着手实现基于 pytorch 的 BERT 模型。这一项目最初名为 pytorch-pretrained-bert,在复现了原始效果的同时,提供了易用的方法以方便在这一强大模型的基础上进行各种玩耍和研究。

  随着使用人数的增加,这一项目也发展成为一个较大的开源社区,合并了各种预训练语言模型以及增加了 Tensorflow 的实现,并且在 2019 年下半年改名为 Transformers。截止写文章时(2021 年 3 月 30 日)这一项目已经拥有 43k+ 的star,可以说 Transformers 已经成为事实上的 NLP 基本工具。

本文基于 Transformers 版本 4.4.2(2021 年 3 月 19 日发布)项目中,pytorch 版的 BERT 相关代码,从代码结构、具体实现与原理,以及使用的角度进行分析。

阅读更多
GitHub 进阶教程:分支管理

4.Git 进阶

4.1用户名和邮箱

  每一次commit都会产生一条log,==log标记了提交人的姓名与邮箱==,以便其他人方便的查看与联系提交人,所以我们在进行提交代码的第一步就是要设置自己的用户名与邮箱。执行以下代码:
git config —global user.name “stormzhang”
git config —global user.email “stormzhang.dev@gmail.com”
  以上进行了==全局配置==,当然有些时候我们的某一个项目想要用特定的邮箱,这个时候只需切换到你的项目,以上代码把 —global 参数去除,再重新执行一遍就ok了。

阅读更多
GitHub 安装使用详细教程

GitHub发现开源项目,提高工作效率

  本文是《learn-github-from-zero》读书笔记,做了一些简洁化修改。
  主要内容是GitHub页面介绍、Git Bash基础命令、GIT进阶、Git Flow分支管理流程和最后的开源项目参与。不包含GitHub账号注册、Git Bash下载安装、ssh密钥等内容。(这部分可参考《GitHub 新手详细教程》

初始化本地仓库,推送到空的git 仓库。

create a new repository on the command line
echo "# nlp-transformers" >> README.md
git init#本地仓库初始化
git add README.md
git add .#添加当前目录所有文件
git commit -m "first commit"
#此时本地仓库默认分支是master,直接提交需要合并到远程仓库mian,比较麻烦
git branch -M main#将本地仓库默认改为mian分支
git remote add origin https://github.com/zhxnlp/nlp-transformers.git
git push -u origin main

阅读更多
GitHub 安装使用详细教程

学习内容:

LightGBM(Light Gradient Boosting Machine)是微软开源的一个实现 GBDT 算法的框架,支持高效率的并行训练。LightGBM 提出的主要原因是为了解决 GBDT 在海量数据遇到的问题。本次学习内容包括使用LightGBM完成各种操作,包括竞赛和数据挖掘中的模型训练、验证和调参过程。

打卡汇总:

任务名称 难度、分数 所需技能
任务1模型训练与预测 低、1 LightGBM
任务2:模型保存与加载 低、1 LightGBM
任务3:分类、回归和排序任务 高、3 LightGBM
任务4:模型可视化 低、1 graphviz
任务5:模型调参(网格、随机、贝叶斯) 中、2 模型调参
任务6:模型微调与参数衰减 中、2 LightGBM
任务7:特征筛选方法 高、3 特征筛选方法
任务8:自定义损失函数 中、2 损失函数&评价函数
任务9:模型部署与加速 高、3 Treelite

一、使用LGBMClassifier对iris进行训练

阅读更多
task3:图解GPT-2

图解GPT-2

@[toc]
引言:
  本文是datawhale教程的读书笔记,由datawhale翻译自Jay Alammar的文章《The Illustrated GPT-2 (Visualizing Transformer Language Models)》。中文翻译版原文在datawhale课程《图解GPT》

1.GPT简介

  GPT是OpenAI公司2018年提出的生成式预训练模型(Generative Pre-Trainning,GPT),用来提升自然语言理解任务的效果。GPT的出现打破了NLP各个任务之间的壁垒,不需要根据特定任务了解太多任务背景。根据预训练模型就能得到不错的任务效果。
  GPT提出了“生成式预训练+判别式任务精调”的范式来处理NLP任务。

  • 生成式预训练:在大规模无监督语料上进行预训练一个高容量的语言模型,学习丰富的上下文信息,掌握文本的通用语义。
  • 判别式任务精调:在通用语义基础上根据下游任务进行领域适配。具体的在预训练好的模型上增加一个与任务相关的神经网络层,比如一个全连接层,预测最终的标签。并在该任务的监督数据上进行微调训练(微调的一种理解:学习率较小,训练epoch数量较少,对模型整体参数进行轻微调整)
阅读更多
task2:BERT入门

Bert

@[toc]
  开篇先分享苏神的两篇文章《Attention is All You Need》浅读(简介+代码)《Sep从语言模型到Seq2Seq:Transformer如戏,全靠Mask》。还有一篇讲BERT输入的《为什么BERT有3个嵌入层,它们都是如何实现的》(这篇不感兴趣可以不看)

1.1 BERT简介

  BERT是2018年10月由Google AI研究院提出的一种预训练模型,在多种不同NLP测试中创出SOTA表现,成为NLP发展史上的里程碑式的模型成就。BERT的出现标志着NLP 新时代的开始。
  BERT全称是“Bidirectional Encoder Representation from Transformers“,即双向Transformer解码器。是一种NLP领域的龙骨模型,用来提取各类任务的基础特征,即作为预训练模型为下游NLP任务提供帮助。

阅读更多
task1:多图详解attention

transformer原理

见CSDN帖子:https://blog.csdn.net/qq_56591814/article/details/119759105

说明:
  本文主要来自datawhale的开源教程《基于transformers的自然语言处理(NLP)入门》,此项目也发布在github。部分内容(章节2.1-2.5,3.1-3.2,4.1-4.2)来自北大博士后卢菁老师的《速通机器学习》一书。

   另外篇幅有限,关于多头注意力的encoder-decoder attention模块进行运算的更详细内容可以参考《Transformer概览总结》。从attention到transformer的API实现和自编程代码实现,可以查阅《Task02 学习Attention和Transformer》(这篇文章排版很好,干净简洁,看着非常舒服,非常推荐)

   Transformer代码参考《Transformer源代码解释之PyTorch篇》《《The Annotated Transformer》翻译————注释和代码实现《Attention Is All You Need》》

阅读更多