рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ BERT: рдПрдХ рдЗрд▓рд╕реНрдЯреНрд░реЗрдЯреЗрдб рдЧрд╛рдЗрдб

рдмрд░реНрдЯ-distilbert рд╡рд╛рдХреНрдп-рд╡рд░реНрдЧреАрдХрд░рдг


рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рдкреНрд░рдЧрддрд┐ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рд╕реЗ рдмрдврд╝реА рд╣реИред рдореЙрдбрд▓ рдиреЗ рдЕрдиреБрд╕рдВрдзрд╛рди рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдкреНрд░рдореБрдЦ рдбрд┐рдЬрд┐рдЯрд▓ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдиреАрдВрд╡ рдмрди рдЧрдПред рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣рд╛рд▓рд┐рдпрд╛ рдШреЛрд╖рдгрд╛ рд╣реИ рдХрд┐ Google рдХреА рдЦреЛрдЬ рдХреЗ рдкреАрдЫреЗ BERT рдореЙрдбрд▓ рдореБрдЦреНрдп рдШрдЯрдХ рдмрди рдЧрдпрд╛ рд╣реИ ред Google рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрджрдо (рдЬреЛ рдХрд┐ рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдПрдХ рдЙрдиреНрдирдд рдореЙрдбрд▓ рдХреА рд╢реБрд░реВрдЖрдд рд╣реИ) "рдкрд┐рдЫрд▓реЗ рдкрд╛рдВрдЪ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдФрд░ рдЦреЛрдЬ рдЗрдВрдЬрди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред"


тАУ BERT' . , , , , .


, Colab.


: SST2


SST2, , ( 1), ( 0):


sst2


:


тАУ , ( , ) 1 ( ), 0 ( ). :


рднрд╛рд╡рдирд╛-рд╡рд░реНрдЧреАрдХрд╛рд░рдХ-1.png


:



, , 768. , .


distilbert-рдмрд░реНрдЯ-рднрд╛рд╡рдирд╛-classifier.png


, BERT, ELMO ( NLP ): ( [CLS]).



, , . DistilBERT', . , , ┬л┬╗ BERT', . , , BERT , [CLS] . , , . , , BERT .


transformers DistilBERT', .


рдореЙрдбрд▓-рдкреНрд░рд╢рд┐рдХреНрд╖рдг



, . DistilBERT' 2 .


рдмрд░реНрдЯ-distilbert-рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╡рд╛рдХреНрдп-рдПрдореНрдмреЗрдбрд┐рдВрдЧ


DistilBERT'. Scikit Learn. , , :


рдмрд░реНрдЯ-distilbert-рдЯреНрд░реЗрди-рдкрд░реАрдХреНрд╖рдг-рд╡рд┐рднрд╛рдЬрди рдХреА рд╕рдЬрд╛-рдПрдореНрдмреЗрдбрд┐рдВрдЧ


distilBERT' ( #1) , ( #2). , sklearn , , 75% ,


:


рдмрд░реНрдЯ-рдкреНрд░рд╢рд┐рдХреНрд╖рдг-рд░рд╕рдж рдкреНрд░рддрд┐рдЧрдорди



, , , .


┬лa visually stunning rumination on love┬╗. BERT' , . , ( [CLS] [SEP] ).


рдмрд░реНрдЯ-distilbert-tokenization -1


, . Word2vec .


рдмрд░реНрдЯ-distilbert-tokenization-2-рдЯреЛрдХрди-рдЖрдИрдбреА


:


tokenizer.encode("a visually stunning rumination on love", add_special_tokens=True)

DistilBERT'.


BERT, ELMO ( NLP ), :



DistilBERT


DistilBERT' , BERT'. , 768 .


рдмрд░реНрдЯ-рдореЙрдбрд▓-рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ -1


, , ( [CLS] ). .


рдмрд░реНрдЯ-рдореЙрдбрд▓-calssification-рдЙрддреНрдкрд╛рджрди-рд╡реЗрдХреНрдЯрд░ cls


, , . :


рдмрд░реНрдЯ-distilbert рд╡рд╛рдХреНрдп-рд╡рд░реНрдЧреАрдХрд░рдг-рдЙрджрд╛рд╣рд░рдг


, .



. Colab github.


:


import numpy as np
import pandas as pd
import torch
import transformers as ppb # pytorch transformers
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import train_test_split

github, pandas:


df = pd.read_csv('https://github.com/clairett/pytorch-sentiment-classification/raw/master/data/SST2/train.tsv', delimiter='\t', header=None)

df.head() , 5 , :


df.head()

sst2-df рд╕рд┐рд░


DistilBERT


model_class, tokenizer_class, pretrained_weights = (ppb.DistilBertModel, ppb.DistilBertTokenizer, 'distilbert-base-uncased')

##  BERT  distilBERT?   :
#model_class, tokenizer_class, pretrained_weights = (ppb.BertModel, ppb.BertTokenizer, 'bert-base-uncased')

#   / 
tokenizer = tokenizer_class.from_pretrained(pretrained_weights)
model = model_class.from_pretrained(pretrained_weights)

. , , . . ( , 2000).



tokenized = df[0].apply((lambda x: tokenizer.encode(x, add_special_tokens=True)))

.


sst2-рдкрд╛рда рд╕реЗ tokenized-рдЖрдИрдбреА-рдмрд░реНрдЯ-рдЙрджрд╛рд╣рд░рдг


( Series/DataFrame pandas) . DistilBERT , 0 (padding). , ( , Python).


, /, BERT':


рдмрд░реНрдЯ-рдЗрдирдкреБрдЯ-рдЯреЗрдиреНрд╕рд░


DistilBERT'


DistilBERT.


input_ids = torch.tensor(np.array(padded))

with torch.no_grad():
    last_hidden_states = model(input_ids)

last_hidden_states DistilBERT', ( , , DistilBERT). , 2000 (.. 2000 ), 66 ( 2000 ), 278 ( DistilBERT).


рдмрд░реНрдЯ-distilbert-рдЙрддреНрдкрд╛рджрди-рдЯреЗрдиреНрд╕рд░-рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ


BERT'


3-d . :


рдмрд░реНрдЯ-рдЙрддреНрдкрд╛рджрди-рдЯреЗрдиреНрд╕рд░



. :


рдмрд░реНрдЯ-рдЗрдирдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди-рдЯреЗрдиреНрд╕рд░-рд╕рдВрдХреНрд╖рд┐рдкреНрдд



BERT' [CLS]. .


рдмрд░реНрдЯ-рдЙрддреНрдкрд╛рджрди-рдЯреЗрдиреНрд╕рд░ рдЪрдпрди


, 3d , 2d :


#        ,      
features = last_hidden_states[0][:,0,:].numpy()

features 2d numpy, .


рдмрд░реНрдЯ-рдЙрддреНрдкрд╛рджрди-cls-senteence-embeddings


, BERT'



, BERT', , . 768 , .


рд░рд╕рдж рдкреНрд░рддрд┐рдЧрдорди-рдбрд╛рдЯрд╛рд╕реЗрдЯ-рд╕реБрд╡рд┐рдзрд╛рдУрдВ-рд▓реЗрдмрд▓


, . BERT' [CLS] ( #0), (. ). , тАУ , BERT/DistilBERT


, , .


labels = df[1]
train_features, test_features, train_labels, test_labels = train_test_split(features, labels)

:


рдмрд░реНрдЯ-distilbert-рдЯреНрд░реЗрди-рдкрд░реАрдХреНрд╖рдг-рд╡рд┐рднрд╛рдЬрди рдХреА рд╕рдЬрд╛-рдПрдореНрдмреЗрдбрд┐рдВрдЧ


.


lr_clf = LogisticRegression()
lr_clf.fit(train_features, train_labels)

, .


lr_clf.score(test_features, test_labels)

, (accuracy) тАУ 81%.



: тАУ 96.8. DistilBERT , тАУ , . BERT , ( downstream task). DistilBERT' 90.7. BERT' 94.9.



Colab.


рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд╣рд▓рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдЖред рдЕрдЧрд▓рд╛ рдХрджрдо рдкреНрд░рд▓реЗрдЦрди рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рдФрд░ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╣реИред рдЖрдк рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рд╕реНрдЯрд┐рд▓рдмрд░реНрдЯ рд╕реЗ рдмреАрдИрдЖрд░рдЯреА рддрдХ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдзрдиреНрдпрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд╣рд░рдмрд╛рди Delangue , рд╡рд┐рдХреНрдЯрд░ Sanh , рдФрд░ Huggingface рдЯреАрдо рд╣реИ рдЬреЛ рдЗрд╕ рдЧрд╛рдЗрдб рдХреЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИред


рд▓реЗрдЦрдХ



All Articles