This commit is contained in:
erenup 2021-08-21 08:07:23 +08:00
parent 2d5e217df7
commit 07531d17f4
3 changed files with 6 additions and 6 deletions

View File

@ -9,7 +9,7 @@ git clone https://github.com/datawhalechina/learn-nlp-with-transformers.git
```
## 配置本项目本地运行环境
### 本地vscode打开项目文件夹
建议通过vscode软件打开本项目文件夹vscode可以直接预览Markdown格式的文档下图最右边所示:
建议通过vscode软件打开本项目文件夹vscode可以直接预览Markdown格式的文档下图最右边所示:
![](./pictures/vscode-preview.png)
### 本地环境配置以Mac为例
1. 在vscode中新建一个Terminal用于安装一个新的python环境和相应的python依赖包

View File

@ -52,7 +52,7 @@ BERT 开发的两个步骤:第 1 步,你可以下载预训练好的模型(
- BERT BASE - 与 OpenAI 的 Transformer 大小相当,以便比较性能
- BERT LARGE - 一个非常巨大的模型,它取得了最先进的结果
BERT 基本上是一个训练好的 Transformer 的 decoder 的栈。关于 Transformer 的介绍,可以阅读之前的文章[《 图解Transformer完整版》](https://github.com/datawhalechina/transformers-quick-start-zh/blob/main/transformer%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86%E8%AE%B2%E8%A7%A3/2-%E5%9B%BE%E8%A7%A3transformer.md),这里主要介绍 Transformer 模型,这是 BERT 中的一个基本概念。此外,我们还会介绍其他一些概念。
BERT 基本上是一个训练好的 Transformer 的 encoder 的栈。关于 Transformer 的介绍,可以阅读之前的文章[《 图解Transformer完整版》](https://github.com/datawhalechina/transformers-quick-start-zh/blob/main/transformer%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86%E8%AE%B2%E8%A7%A3/2-%E5%9B%BE%E8%A7%A3transformer.md),这里主要介绍 Transformer 模型,这是 BERT 中的一个基本概念。此外,我们还会介绍其他一些概念。
2 种不同大小规模的 BERT 模型都有大量的 Encoder 层(论文里把这些层称为 Transformer Blocks- BASE 版本由 12 层 EncoderLarge 版本有 20 层 Encoder。同时这些 BERT 模型也有更大的前馈神经网络(分别有 768 个和 1024 个隐藏层单元)和更多的 attention heads分别有 12 个和 16 个),超过了原始 Transformer 论文中的默认配置参数(原论文中有 6 个 Encoder 层, 512 个隐藏层单元和 8 个 attention heads

View File

@ -5,7 +5,7 @@
## 前言
这篇文章翻译自http://jalammar.github.io/illustrated-gpt2/。多图详细解释当今最为强大的人工智能 GPT-2(截至 2019 年 8 月 12 日)。
这篇文章翻译自[GPT2](http://jalammar.github.io/illustrated-gpt2)。多图详细解释当今最为强大的人工智能 GPT-2(截至 2019 年 8 月 12 日)。
今年我们看到了机器学习在许多场景的广泛应用。OpenAI GPT-2(https://openai.com/blog/better-language-models/)表现出了令人印象深刻的能力它能够写出连贯而充满激情的文章这超出了我们当前对语言模型的预期效果。GPT-2 不是一个特别新颖的架构,而是一种与 Transformer 解码器非常类似的架构。不过 GPT-2 是一个巨大的、基于 Transformer 的语言模型,它是在一个巨大的数据集上训练的。在这篇文章,我们会分析它的结构,以及这种结构产生的作用。我们会深入了解 Self Attention 层的细节。然后我们会再了解一下这种只有 Decoder 的 Transformer 在语言建模之外的应用。
@ -181,7 +181,7 @@ Self-Attention 沿着句子中每个 token 的路径进行处理,主要组成
![query](./pictures/4-gpt-query.webp)图: query
一个粗略的类比是把它看作是在一个文件柜里面搜索Query 向量是一个便签,上面写着你正在研究的主题,而 Key 向量就像是柜子里的文件夹的标签。当你将便签与标签匹配时,我们取出匹配的那些文件夹的内容,这些内容就是 Value 向量。但是你不仅仅是寻找一个 Value 向量,而是在一系列文件夹里寻找一系列 Value 向量。
Value 向量与每个文件夹的 Key 向量相乘,会为每个文件夹产生一个分数(从技术上来讲:就是点积后面跟着 softmax
Query 向量与每个文件夹的 Key 向量相乘,会为每个文件夹产生一个分数(从技术上来讲:就是点积后面跟着 softmax
![score](./pictures/4-gpt-score.webp)图: score
@ -300,7 +300,7 @@ Self-Attention 主要通过 3 个步骤来实现:
*评价模型:每次处理一个 token*
我们可以让 GPT-2 像 mask Self Attention 一样工作。但是在评价评价模型时,当我们的模型在每次迭代后只添加一个新词,那么对于已经处理过的 token 来说,沿着之前的路径重新计算 Self Attention 是低效的。
我们可以让 GPT-2 像 mask Self Attention 一样工作。但是在评价模型时,当我们的模型在每次迭代后只添加一个新词,那么对于已经处理过的 token 来说,沿着之前的路径重新计算 Self Attention 是低效的。
在这种情况下,我们处理第一个 token现在暂时忽略 \<s>)。
@ -379,7 +379,7 @@ Self-Attention 将它的输入乘以权重矩阵(并添加一个 bias 向量
`第 1 层`
全连接神经网络是用于处理 Self Attention 层的输出,这个输出的表示包含了合适的上下文。全连接神经网络由两层组成。第一层是模型大小的 4 倍(由于 GPT-2 small 是 768因此这个网络会有 个神经元)。为什么是四倍?这只是因为这是原始 Transformer 的大小(如果模型的维度是 512那么全连接神经网络中第一个层的维度是 2048。这似乎给了 Transformer 足够的表达能力,来处理目前的任务。
全连接神经网络是用于处理 Self Attention 层的输出,这个输出的表示包含了合适的上下文。全连接神经网络由两层组成。第一层是模型大小的 4 倍(由于 GPT-2 small 是 768因此这个网络会有3072个神经元)。为什么是四倍?这只是因为这是原始 Transformer 的大小(如果模型的维度是 512那么全连接神经网络中第一个层的维度是 2048。这似乎给了 Transformer 足够的表达能力,来处理目前的任务。
![全连接层](./pictures/4-full.gif)动态图:全连接层