Galleria
Playlist immagini
Gruppi
Unisciti a un gruppo
Acquisizione
Nuovo oggetto
Mappe concettuali
Gestione
Tabelle (CRUD generico)
Ricerca tag
Elaborazioni
Somma di prova
Sistema
Impostazioni
Esci
☰
Oggetti
LOGISTAR
LMP
ospite
⋮
Profilo utente
Preferenze colonne
Guida programma
Segnala anomalia
Cambia utente
⌂
💾 Salva
↻ Aggiorna
☑ Lista
🏷 Righe
Id
Descrizione
dta reg (aaaa-mm-gg)
Body
<div id="content-center" class="content-center"> <div class="main-article-author v2"><strong> Long Story Short about BERT‍</strong></div> </div> <div class="w-embed"> <p>BERT stands for Bidirectional Encoder Representation from Transformers. The original <a href="https://arxiv.org/pdf/1810.04805.pdf">BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding</a>, actually, explains everything you need to know about BERT.</p> <p>Honestly saying, there are much better articles on the Internet explaining what BERT is, for example, <a href="https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270">BERT Explained: State of the art language model for NLP</a>. After reading this article, you may have some questions about attention mechanisms; this article <a href="https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a">Illustrated: Self-Attention</a> explains attentions.</p> <p>In this paragraph I just want to run over the ideas of BERT and give more attention to the practical implementation.</p> <p>BERT solves two tasks simultaneously:</p> <ul> <li>Next Sentence Prediction (NSP) ;</li> <li>Masked Language Model (MLM).</li> </ul> <p> </p> <h4>Building BERT</h4> <div class="w-embed"> <p>To build BERT we need to work out three steps:</p> <ul> <li>Prepare Dataset;</li> <li>Build a model;</li> <li>Build a trainer.</li> </ul> <h3>BERT</h3> <div class="w-embed"> <p>BERT module is a container that combines all the modules together and returns the output.</p> <pre class=" language-python"><code class="prism language-python"><span class="token keyword">class</span> <span class="token class-name">BERT</span><span class="token punctuation">(</span>nn<span class="token punctuation">.</span>Module<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">def</span> <span class="token function">__init__</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> vocab_size<span class="token punctuation">,</span> dim_inp<span class="token punctuation">,</span> dim_out<span class="token punctuation">,</span> attention_heads<span class="token operator">=</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token builtin">super</span><span class="token punctuation">(</span>BERT<span class="token punctuation">,</span> self<span class="token punctuation">)</span><span class="token punctuation">.</span>__init__<span class="token punctuation">(</span><span class="token punctuation">)</span> self<span class="token punctuation">.</span>embedding <span class="token operator">=</span> JointEmbedding<span class="token punctuation">(</span>vocab_size<span class="token punctuation">,</span> dim_inp<span class="token punctuation">)</span> self<span class="token punctuation">.</span>encoder <span class="token operator">=</span> Encoder<span class="token punctuation">(</span>dim_inp<span class="token punctuation">,</span> dim_out<span class="token punctuation">,</span> attention_heads<span class="token punctuation">)</span> self<span class="token punctuation">.</span>token_prediction_layer <span class="token operator">=</span> nn<span class="token punctuation">.</span>Linear<span class="token punctuation">(</span>dim_inp<span class="token punctuation">,</span> vocab_size<span class="token punctuation">)</span> self<span class="token punctuation">.</span>softmax <span class="token operator">=</span> nn<span class="token punctuation">.</span>LogSoftmax<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> self<span class="token punctuation">.</span>classification_layer <span class="token operator">=</span> nn<span class="token punctuation">.</span>Linear<span class="token punctuation">(</span>dim_inp<span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token keyword">def</span> <span class="token function">forward</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> input_tensor<span class="token punctuation">:</span> torch<span class="token punctuation">.</span>Tensor<span class="token punctuation">,</span> attention_mask<span class="token punctuation">:</span> torch<span class="token punctuation">.</span>Tensor<span class="token punctuation">)</span><span class="token punctuation">:</span> embedded <span class="token operator">=</span> self<span class="token punctuation">.</span>embedding<span class="token punctuation">(</span>input_tensor<span class="token punctuation">)</span> encoded <span class="token operator">=</span> self<span class="token punctuation">.</span>encoder<span class="token punctuation">(</span>embedded<span class="token punctuation">,</span> attention_mask<span class="token punctuation">)</span> token_predictions <span class="token operator">=</span> self<span class="token punctuation">.</span>token_prediction_layer<span class="token punctuation">(</span>encoded<span class="token punctuation">)</span> first_word <span class="token operator">=</span> encoded<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token punctuation">:</span><span class="token punctuation">]</span> <span class="token keyword">return</span> self<span class="token punctuation">.</span>softmax<span class="token punctuation">(</span>token_predictions<span class="token punctuation">)</span><span class="token punctuation">,</span> self<span class="token punctuation">.</span>classification_layer<span class="token punctuation">(</span>first_word<span class="token punctuation">)</span> </code></pre> <p>We use linear layer (and softmax) with output that is equal to the vocabulary size for token prediction task.</p> <pre class=" language-python"><code class="prism language-python">self<span class="token punctuation">.</span>token_prediction_layer <span class="token operator">=</span> nn<span class="token punctuation">.</span>Linear<span class="token punctuation">(</span>dim_inp<span class="token punctuation">,</span> vocab_size<span class="token punctuation">)</span> self<span class="token punctuation">.</span>softmax <span class="token operator">=</span> nn<span class="token punctuation">.</span>LogSoftmax<span class="token punctuation">(</span>dim<span class="token operator">=</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> </code></pre> <p>And linear layer with output of 2 for next sentence prediction task</p> <pre class=" language-python"><code class="prism language-python">self<span class="token punctuation">.</span>classification_layer <span class="token operator">=</span> nn<span class="token punctuation">.</span>Linear<span class="token punctuation">(</span>dim_inp<span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span> </code></pre> <p>The output of the network</p> <pre><code>argmax(NSP output) = [1, 0] is NOT next sentence argmax(NSP output) = [0, 1] is next sentence </code></pre> <p>Everything is simple in the <code>forward</code>. At first we calculate embedding, then pass embeddings to our encoder.</p> <pre class=" language-python"><code class="prism language-python">embedded <span class="token operator">=</span> self<span class="token punctuation">.</span>embedding<span class="token punctuation">(</span>input_tensor<span class="token punctuation">)</span> encoded <span class="token operator">=</span> self<span class="token punctuation">.</span>encoder<span class="token punctuation">(</span>embedded<span class="token punctuation">,</span> attention_mask<span class="token punctuation">)</span> </code></pre> <p>Secondly, we calculate the model output.</p> <pre class=" language-python"><code class="prism language-python">token_predictions <span class="token operator">=</span> self<span class="token punctuation">.</span>token_prediction_layer<span class="token punctuation">(</span>encoded<span class="token punctuation">)</span> first_word <span class="token operator">=</span> encoded<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token punctuation">:</span><span class="token punctuation">]</span> <span class="token keyword">return</span> self<span class="token punctuation">.</span>softmax<span class="token punctuation">(</span>token_predictions<span class="token punctuation">)</span><span class="token punctuation">,</span> self<span class="token punctuation">.</span>classification_layer<span class="token punctuation">(</span>first_word<span class="token punctuation">)</span> </code></pre> <p>The full model graph is also available. To build the graph, run the script <code>graph.py</code>. It saves the graph to <code>data/logs</code> directory. Run tensorboard</p> <pre class=" language-bash"><code class="prism language-bash">tensorboard --logdir data/logs </code></pre> <p>Open <a href="http://localhost:6006">http://localhost:6006</a> in the browser, go to Graph tab. You should see the graph of our BERT model.</p> </div> <p> </p> <p> </p> <p> </p> </div> <h2>Building BERT</h2> <div class="w-embed"> <p>To build BERT we need to work out three steps:</p> <ul> <li>Prepare Dataset;</li> <li>Build a model;</li> <li>Build a trainer.</li> </ul> </div> </div>
tipo ogg.
cat
subcat
proprietario
azienda
ute
selez1
op1
codart
codice
codclifor
motivo
url
email
tag
imgsrc
sunto_breve
sunto_medio
note
bert (46.0%), articolo (42.0%), text (40.0%), doctit (38.9%), text_classification (38.8%), leader (38.6%), dirigente (37.7%), dirigente (37.7%), libro (37.1%), codice articolo analisi intervista (37.1%), glossario (36.8%), indice (36.4%), giornalista (36.1%), professore (36.0%), text_generation (35.7%), concetto (35.3%), odila (35.1%), rivista (34.8%), llm (34.7%), tipologia (34.7%)
keyscrape
Lista tag dell'oggetto (oggettag)
cod_tag
value
ai
5
bert
5
pytorch
5
wpg
5
Lista delle righe dell'oggetto (oggettir)
tip_pro
cod_pro
descrizione
val_pro
pes_pro
---.