bert.rst 9.52 KB
Newer Older
Sylvain Gugger's avatar
Sylvain Gugger committed
1
2
3
4
5
6
7
8
9
10
11
12
.. 
    Copyright 2020 The HuggingFace Team. All rights reserved.

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
    the License. You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
    an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
    specific language governing permissions and limitations under the License.

13
BERT
Sylvain Gugger's avatar
Sylvain Gugger committed
14
-----------------------------------------------------------------------------------------------------------------------
15

Lysandre's avatar
Lysandre committed
16
Overview
Sylvain Gugger's avatar
Sylvain Gugger committed
17
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lysandre's avatar
Lysandre committed
18

Sylvain Gugger's avatar
Sylvain Gugger committed
19
20
21
22
The BERT model was proposed in `BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
<https://arxiv.org/abs/1810.04805>`__ by Jacob Devlin, Ming-Wei Chang, Kenton Lee and Kristina Toutanova. It's a
bidirectional transformer pretrained using a combination of masked language modeling objective and next sentence
prediction on a large corpus comprising the Toronto Book Corpus and Wikipedia.
Lysandre's avatar
Lysandre committed
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

The abstract from the paper is the following:

*We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations
from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional
representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result,
the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models
for a wide range of tasks, such as question answering and language inference, without substantial task-specific
architecture modifications.*

*BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural
language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI
accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute
improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).*

Tips:

Sylvain Gugger's avatar
Sylvain Gugger committed
40
41
- BERT is a model with absolute position embeddings so it's usually advised to pad the inputs on the right rather than
  the left.
Sylvain Gugger's avatar
Sylvain Gugger committed
42
43
- BERT was trained with the masked language modeling (MLM) and next sentence prediction (NSP) objectives. It is
  efficient at predicting masked tokens and at NLU in general, but is not optimal for text generation.
Lysandre's avatar
Lysandre committed
44

45
46
This model was contributed by `thomwolf <https://huggingface.co/thomwolf>`__. The original code can be found `here
<https://github.com/google-research/bert>`__.
47

Lysandre's avatar
Lysandre committed
48
BertConfig
Sylvain Gugger's avatar
Sylvain Gugger committed
49
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50

51
.. autoclass:: transformers.BertConfig
52
    :members:
53
54


Lysandre's avatar
Lysandre committed
55
BertTokenizer
Sylvain Gugger's avatar
Sylvain Gugger committed
56
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57

58
.. autoclass:: transformers.BertTokenizer
Lysandre Debut's avatar
Lysandre Debut committed
59
60
    :members: build_inputs_with_special_tokens, get_special_tokens_mask,
        create_token_type_ids_from_sequences, save_vocabulary
61
62


63
BertTokenizerFast
Sylvain Gugger's avatar
Sylvain Gugger committed
64
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65
66
67
68
69

.. autoclass:: transformers.BertTokenizerFast
    :members:


70
Bert specific outputs
Sylvain Gugger's avatar
Sylvain Gugger committed
71
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72

Sylvain Gugger's avatar
Sylvain Gugger committed
73
.. autoclass:: transformers.models.bert.modeling_bert.BertForPreTrainingOutput
Sylvain Gugger's avatar
Sylvain Gugger committed
74
75
    :members:

Sylvain Gugger's avatar
Sylvain Gugger committed
76
.. autoclass:: transformers.models.bert.modeling_tf_bert.TFBertForPreTrainingOutput
77
78
    :members:

79
80
81
.. autoclass:: transformers.models.bert.modeling_flax_bert.FlaxBertForPreTrainingOutput
    :members:

82

Lysandre's avatar
Lysandre committed
83
BertModel
Sylvain Gugger's avatar
Sylvain Gugger committed
84
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85

86
.. autoclass:: transformers.BertModel
Sylvain Gugger's avatar
Sylvain Gugger committed
87
    :members: forward
88
89


Lysandre's avatar
Lysandre committed
90
BertForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
91
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92

93
.. autoclass:: transformers.BertForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
94
    :members: forward
95
96


97
BertLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
98
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
99
100

.. autoclass:: transformers.BertLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
101
    :members: forward
102
103


Lysandre's avatar
Lysandre committed
104
BertForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
105
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
106

107
.. autoclass:: transformers.BertForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
108
    :members: forward
109
110


Lysandre's avatar
Lysandre committed
111
BertForNextSentencePrediction
Sylvain Gugger's avatar
Sylvain Gugger committed
112
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113

114
.. autoclass:: transformers.BertForNextSentencePrediction
Sylvain Gugger's avatar
Sylvain Gugger committed
115
    :members: forward
116
117


Lysandre's avatar
Lysandre committed
118
BertForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
119
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120

121
.. autoclass:: transformers.BertForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
122
    :members: forward
123
124


Lysandre's avatar
Lysandre committed
125
BertForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
126
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127

128
.. autoclass:: transformers.BertForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
129
    :members: forward
130
131


Lysandre's avatar
Lysandre committed
132
BertForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
133
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
134

135
.. autoclass:: transformers.BertForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
136
    :members: forward
137
138


Lysandre's avatar
Lysandre committed
139
BertForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
140
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141

142
.. autoclass:: transformers.BertForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
143
    :members: forward
144

LysandreJik's avatar
LysandreJik committed
145

Lysandre's avatar
Lysandre committed
146
TFBertModel
Sylvain Gugger's avatar
Sylvain Gugger committed
147
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
148

149
.. autoclass:: transformers.TFBertModel
Sylvain Gugger's avatar
Sylvain Gugger committed
150
    :members: call
LysandreJik's avatar
LysandreJik committed
151
152


Lysandre's avatar
Lysandre committed
153
TFBertForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
154
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
155

156
.. autoclass:: transformers.TFBertForPreTraining
Sylvain Gugger's avatar
Sylvain Gugger committed
157
    :members: call
LysandreJik's avatar
LysandreJik committed
158
159


160
TFBertModelLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
161
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
162
163

.. autoclass:: transformers.TFBertLMHeadModel
Sylvain Gugger's avatar
Sylvain Gugger committed
164
    :members: call
165
166


Lysandre's avatar
Lysandre committed
167
TFBertForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
168
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
169

170
.. autoclass:: transformers.TFBertForMaskedLM
Sylvain Gugger's avatar
Sylvain Gugger committed
171
    :members: call
LysandreJik's avatar
LysandreJik committed
172
173


Lysandre's avatar
Lysandre committed
174
TFBertForNextSentencePrediction
Sylvain Gugger's avatar
Sylvain Gugger committed
175
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
176

177
.. autoclass:: transformers.TFBertForNextSentencePrediction
Sylvain Gugger's avatar
Sylvain Gugger committed
178
    :members: call
LysandreJik's avatar
LysandreJik committed
179
180


Lysandre's avatar
Lysandre committed
181
TFBertForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
182
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
183

184
.. autoclass:: transformers.TFBertForSequenceClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
185
    :members: call
LysandreJik's avatar
LysandreJik committed
186
187


Lysandre's avatar
Lysandre committed
188
TFBertForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
189
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
190

191
.. autoclass:: transformers.TFBertForMultipleChoice
Sylvain Gugger's avatar
Sylvain Gugger committed
192
    :members: call
LysandreJik's avatar
LysandreJik committed
193
194


Lysandre's avatar
Lysandre committed
195
TFBertForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
196
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
197

198
.. autoclass:: transformers.TFBertForTokenClassification
Sylvain Gugger's avatar
Sylvain Gugger committed
199
    :members: call
LysandreJik's avatar
LysandreJik committed
200
201


Lysandre's avatar
Lysandre committed
202
TFBertForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
203
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LysandreJik's avatar
LysandreJik committed
204

205
.. autoclass:: transformers.TFBertForQuestionAnswering
Sylvain Gugger's avatar
Sylvain Gugger committed
206
    :members: call
207
208
209
210
211
212
213


FlaxBertModel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertModel
    :members: __call__
214
215


216
217
218
219
220
221
222
FlaxBertForPreTraining
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForPreTraining
    :members: __call__


223
224
225
226
227
FlaxBertForMaskedLM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForMaskedLM
    :members: __call__
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262


FlaxBertForNextSentencePrediction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForNextSentencePrediction
    :members: __call__


FlaxBertForSequenceClassification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForSequenceClassification
    :members: __call__


FlaxBertForMultipleChoice
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForMultipleChoice
    :members: __call__


FlaxBertForTokenClassification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForTokenClassification
    :members: __call__


FlaxBertForQuestionAnswering
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.FlaxBertForQuestionAnswering
    :members: __call__