- 2024-09-12
-
发表了主题帖:
《大语言模型:原理与工程实践》-预训练数据构建
# 一、预训练数据主要来源
大模型的训练需要巨大和多样的数据量,下面的表格展示了大模型中主要使用的数据类型
| 数据类型 | 常用数据来源 |
| -------- | ---------------------- |
| 网页数据 | CommonCrawl、C4 |
| 书籍数据 | BookCorpus |
| 百科数据 | 维基百科、百度百科 |
| 代码数据 | Github、GitLab |
| 其他 | 学术论文、新闻、多语言 |
具体的数据集,在常用数据集中会介绍
# 二、数据的预处理方式
收集到的广泛的非结构化文本中,有很多低质量的数据,比如垃圾邮件、乱码文字和有害内容需要对数据进行预处理以后才可以使用
主要的预处理步骤如下:
1. 正文提取——**解决不同格式的问题**
1. HTML
2. PDF
3. EPUB、MOBI
4. DOCX
5. Markdown
2. 质量过滤——**筛去低质量文本**
1. 规则过滤
1. 格式转换——比如字符编码归一化,标点符号统一
2. 篇章级过滤——比如删除过长或过短的文本
3. 行级过滤——比如删除残留的HTML标签
2. 模型过滤
1. 机器学习分类预测文本质量
2. 毒害分类器
3. 文档去重——**防止过度记忆某些高频内容**
1. 文档内去重
1. 行内去重
2. 行间去重
2. 文档间去重
1. 文档相似度计算
1. 余弦相似度
2. Jaccard相似度
2. 大规模数据,近似哈希
1. SimHash算法
2. MinHashLSH算法
4. 数据集净化——**确保数据安全和可用性**
1. 数据脱敏
1. 确保隐私安全
2. 消除偏见
3. 开源工具数据过滤Perspective API
2. 测试集分离
1. 由于大模型的规模极大,所以需要特别注意测试和训练集的分离
# 三、常用数据集
## 英文数据集
### 1. Common Crawl 介绍
使用python的爬虫工具,从2008年开始爬取互联网上大量的网页数据,供研究人员、开发人员和公众使用
![1_Common_Crawl官网图片1](/data/attachment/forum/202409/12/235503hgyzn8jgg2w8sfy6.png.thumb.jpg?rand=2903.490231354007)
![2_Common_Crawl官网图片2](/data/attachment/forum/202409/12/235504ojlqy516rryj66tz.png.thumb.jpg?rand=1150.024653647248)
Common Crawl主要有以下几个部分组成
| 简称 | 数据类型 | 内容 |
| ---- | --------------------- | ---------------------------------- |
| WARC | Web ARChive | 完整内容、HTTP响应头、主体HTML内容 |
| WAT | Web ARChive Transform | 从WARC中提取了元数据和链接信息 |
| WET | Web Extracted Text | 只包含网页的正文文本内容 |
![3_Common_Crawl文件目录](/data/attachment/forum/202409/12/235505mn951mv5how10kw5.png.thumb.jpg?rand=6797.715393499222)
一般使用WET训使用的较多,满足纯文本需求,并空间占用最少,但是Common Crawl提取的比较粗糙,有的研究人员会自己使用WARC中提取
### 2. C4 数据集介绍
Google公司基于Common Crawl在2019年4月构建的开源数据集,对所有非英文文本内容进行了过滤,并进行了质量过滤
### 3. ROOTS 数据集介绍
ROOTS项目是一个由BigScience团队训练BLOOM模型时使用的数据集,包含46种自然语言,大约1.6TB,他们团队公开了数据处理代码
## 中文数据集
### 1. MNBVC
超大规模中文语料集,包括一切形式的纯文本中文数据。数据均来源于互联网收集,且至2024年9月持续更新中。
![4_MNBVC页面](/data/attachment/forum/202409/12/235505gttfrhgfbytyvovq.png.thumb.jpg?rand=4272.186598594126)
### 2. WanJuan-1.0
书生·万卷1.0为书生·万卷多模态语料库的首个开源版本,包含文本数据集、图文数据集、视频数据集三部分,数据总量超过2TB。
![5_万卷页面](/data/attachment/forum/202409/12/235506u62v8n8ufhh1uuyx.png.thumb.jpg?rand=9327.694389833825)
# 参考资料
[Common Crawl](https://commoncrawl.org/)
[C4 数据集](https://paperswithcode.com/dataset/c4)
[MassiveText](https://paperswithcode.com/dataset/massivetext)
[falcon-refinedweb](https://huggingface.co/datasets/tiiuae/falcon-refinedweb)
[ROOTS](https://huggingface.co/bigscience-data)
## 中文数据集
[MOP里屋社区](https://mnbvc.253874.net/)
[整理开源的中文大语言模型](https://github.com/HqWu-HITCS/Awesome-Chinese-LLM)
[MNBVC](https://githb.com/esbatmop/MNBVC)
[WanJuan-1.0](https://opendatalab.com/OpenDataLab/WanJuan1_dot_0)
- 2024-09-05
-
回复了主题帖:
【Follow me第二季第2期】+开发板硬件介绍和实现任务一 LED灯闪烁和串口打印
分享的内容很棒,学习到了
视频内容从1:03左右开始,电脑使用obs录制的时候,声音就偏小了,基本上完全听不到,持续到后面也是这样,楼主可以注意一下哈
-
加入了学习《【Follow me第二季第2期】+开发板硬件介绍和实现任务一 LED灯闪烁和串口打印》,观看 【Follow me第二季第2期】+开发板硬件介绍和实现任务一 LED灯闪烁和串口打印
-
回复了主题帖:
测评入围:ST NUCLEO-WB09KE
个人信息无误,确认可以完成测评分享计划,期待收到开发板
- 2024-09-04
-
回复了主题帖:
共读入围:《RISC-V开放架构设计之道》 第二轮
个人信息无误,确认可以完成评测计划
- 2024-08-29
-
回复了主题帖:
《大语言模型:原理与工程实践》-大模型基础技术
freebsder 发表于 2024-8-29 16:06
彩印价格应该要上大100了吧
书籍后面写的标价是119
- 2024-08-28
-
回复了主题帖:
《大语言模型:原理与工程实践》-大模型基础技术
oceansky 发表于 2024-8-28 14:00
《大语言模型:原理与工程实践》-大模型基础技术 ,有没有免费下载的PDF?
这是EEWorld站内的测评活动哦,没有提供下载的电子版,这是活动页面
【《大语言模型:原理与工程实践》】测评|【《大语言模型:原理与工程实践》】免费试用_电子工程世界 (eeworld.com.cn)
需要的话可以自行购买哦
-
发表了主题帖:
《大语言模型:原理与工程实践》-大模型基础技术
十分感谢EEWorld和电子工业出版社提供了此次书籍阅读和分享的机会。
# 一、书籍概览
数据在对模型的展示中,用了丰富的图示,可以更方便读者进行理解
![836522](/data/attachment/forum/202408/28/003002k9elo71414ae8rbq.jpg.thumb.jpg?rand=4268.273136761895)
每个章节后增加了参考文献,方便读者的阅读
# 二、大模型的基础技术
平时对大模型的推理了解的较多,但是对训练大模型背后的技术了解的比较少,本章主要从四个方面介绍了大模型的基础技术
1. 自然语言的基本表示方法
1. 词表示技术
1. 词的独热表示
2. 词的分布式表示
3. 基于预训练的词嵌入式表示
2. 分词技术
1. word粒度
2. character粒度
3. subword粒度
2. 经典结构Transformer
3. Transformer预训练语言模型
1. Encoder-Only预训练语言模型——BERT
2. Decoder-Only预训练语言模型——GPT
3. Encoder-Decoder预训练语言模型——T5、BART
4. 分别对开源和闭源大模型进行介绍
1. InstructGPT
2. LLaMA
本书对2.3.4.部分的章节描述的比较详细,所以主要补充一下第一部分的内容,笔者比较感兴趣
# 三、自然语言的基本表示方法
1. 词表示技术
词的独热表示是一种最简单最直接的词的向量化表示方式。主要步骤包含两步:
1) 对需要用到的文本中所有词进行编码(假设共用N个词),每个词有唯一的下标(0~N)
2) 根据词下标 i 生成一个长度为N的向量,除了第i位为1外,其他位都为0
下面举个简单的例子进行说明:
```shell
I like deep learning
I like NLP
I enjoy flying
```
忽略大小写,对不同的词进行编码:
```shell
word_dict = {0: 'i', 1: 'like', 2: 'deep', 3: 'learning', 4: 'NLP', 5: 'enjoy', 6: 'flying'}
```
显然,根据不同词个数(7),我们需要构建的One-Hot向量长度为7:
| 词 | 编码 | One-hot表示 |
| -------- | ---- | ------------- |
| i | 0 | [1,0,0,0,0,0,0] |
| like | 1 | [0,1,0,0,0,0,0] |
| deep | 2 | [0,0,1,0,0,0,0] |
| learning | 3 | [0,0,0,1,0,0,0] |
| NLP | 4 | [0,0,0,0,1,0,0] |
| enjoy | 5 | [0,0,0,0,0,1,0] |
| flying | 6 | [0,0,0,0,0,0,1] |
2. 基于预训练的词嵌入式表示
静态词向量语言模型,Word2vec,GloVe
动态词向量语言模型,ELMo,GPT,BEERT
主要介绍Word2vec,可以称为词嵌入
上面介绍的词的独热向量虽然十分的简单,但是不能准确的表达各个词语之间的相似度,所以在2013年,谷歌的科学家提出了Word2vec的方法,在词嵌入模式下,主要有两个模型跳元模型Skip-Gram和连续词袋CBOW模型
1) 跳元模型Skip-Gram
主要思想:假设一个词可以用来在文本序列中生成其周围的单词
图示:
对于如下的文本序列,给定中心词NLP
```shell
I like NLP and deep learning
```
跳元模型考虑生成上下文词I,like,and,deep,learning的条件概率
```shell
P("I","like","and","deep","learning")
```
假设上下文词是在给定中心词的情况下独立生成的(即条件独立性)。在这种情况下,上述条件概率可以重写为
```shell
P("NLP"|"I"),P("NLP"|"like"),P("NLP"|"and"),P("NLP"|"deep"),P("NLP"|"learning")
```
后面的公式可以参考参考资料14.1. 词嵌入(word2vec)
1) 连续词袋CBOW
主要思想:假设中心词是基于其在文本序列中的周围上下文词生成的
图示:
写的这些内容也仅仅是抛转引玉,更多的NLP内容读者可以自己加以学习,对于语言处理也是一门很深的学问,需要不断的学习
# 参考资料
[词的独热(one-hot)表示](https://blog.csdn.net/weixin_38659482/article/details/123316173)
[深入浅出 one-hot](https://zhuanlan.zhihu.com/p/634296763)
[如何通俗理解Word2Vec (23年修订版)](https://blog.csdn.net/v_JULY_v/article/details/102708459)
[14.1. 词嵌入(word2vec)](https://zh.d2l.ai/chapter_natural-language-processing-pretraining/word2vec.html)
[Distributed Representations of Words and Phrases and their Compositionality](https://arxiv.org/abs/1310.4546)
[Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/abs/1301.3781)
- 2024-08-26
-
回复了主题帖:
【Follow me第二季第2期】+ 搭建环境并开启第一步Blink / 串口打印Hello EEWorld!
这到货的也太快了吧,学习学习,不知道用vscode的PlatformIO开发是否方便呢
- 2024-08-20
-
加入了学习《全新树莓派4:它是否能替代你的pc》,观看 全新树莓派4:它是否能替代你的pc
- 2024-08-13
-
回复了主题帖:
共读入围名单:《大语言模型:原理与工程实践》
个人信息无误,确认可以完成评测计划
- 2024-08-05
-
加入了学习《GD32嵌入式开发入门》,观看 透彻理解嵌入式系统的概念
-
加入了学习《【Follow me第二季第1期】全部任务演示》,观看 全部任务演示2.0