Teknologian jakaminen

BERTin käyttäminen loppupään tehtäviin - Transformer Tutorial

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

BERT, Bidirectional Encoder Representations from Transformers, on valmiiksi koulutettu kielimalli, jonka Google julkaisi vuonna 2018. BERT:n syntyminen on tärkeä virstanpylväs luonnollisen kielen käsittelyn alalla, koska se parantaa merkittävästi useiden kielitehtävien suorituskykyä. Tässä artikkelissa esitellään yksityiskohtaisesti, kuinka BERT:tä käytetään loppupään tehtäviin, jotta kaikki ymmärtävät ja soveltavat tätä tehokasta työkalua paremmin.

Mikä on BERT?

BERT on Transformer-arkkitehtuuriin perustuva kielimalli. Toisin kuin aikaisemmissa kielimalleissa, BERT käyttää kaksisuuntaista koulutusmenetelmää ja voi tarkastella kontekstuaalista tietoa samanaikaisesti, mikä tekee siitä hyvin suoriutuvan erilaisissa tehtävissä. BERT:n perusideana on saavuttaa erinomainen suorituskyky laajalla ohjaamattomalla esikoulutuksella ja sitten hienosäädöllä tiettyihin tehtäviin.

BERTin esikoulutus ja hienosäätö

BERT:n koulutusprosessi on jaettu kahteen vaiheeseen: esikoulutukseen ja hienosäätöön.

  1. esikoulutus : Tässä vaiheessa BERT:tä koulutetaan suuren tekstidatamäärän avulla, ja tehtäviin kuuluvat Masked Language Model (MLM) ja Next Sentence Prediction (NSP). MLM-tehtävä edellyttää, että malli ennustaa peitettyjä sanoja, kun taas NSP-tehtävä vaatii mallin ennustamaan, ovatko kaksi lausetta jatkuvia.

  2. hienosäätö : Kun esikoulutus on suoritettu, meidän on hienosäädettävä mallia tiettyjen jatkotehtävien mukaan. Loppuvaiheen tehtävät voivat olla luokittelua, regressiota, kysymyksiin vastaamista, nimetyn kokonaisuuden tunnistusta jne. Lisäkoulutuksella tehtäväkohtaisista tietokokonaisuuksista BERT voi mukautua paremmin tiettyjen tehtävien tarpeisiin.

BERTin käyttäminen loppupään tehtäviin

Seuraavaksi esittelemme BERT:n käyttämisen tekstin luokittelutehtäviin tietyn esimerkin kautta.

Vaihe 1: Asenna tarvittavat kirjastot

Ensin meidän on asennettava Transformers-kirjasto, joka on erittäin suosittu Hugging Facen tarjoama kirjasto, jonka avulla voimme käyttää erilaisia ​​valmiiksi koulutettuja kielimalleja.

pip install transformers
pip install torch
  • 1
  • 2
Vaihe 2: Lataa esikoulutettu malli ja tiedot

Meidän on ladattava valmiiksi koulutettu BERT-malli ja vastaava Tokenizer Hugging Facen mallikirjastosta.

from transformers import BertTokenizer, BertForSequenceClassification
from transformers import Trainer, TrainingArguments

# 加载预训练的BERT模型和Tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Vaihe 3: Valmistele tiedot

Tekstin luokittelua varten meidän on muutettava tekstidata mallin hyväksymään syöttömuotoon. Tämä tarkoittaa tyypillisesti tekstin tokenointia ja muuntamista tunnustunnuksiksi sekä huomiomaskien luomista.

# 示例数据
texts = ["I love programming.", "I hate bugs."]
labels = [1, 0]

# 数据预处理
inputs = tokenizer(texts, return_tensors='pt', padding=True, truncation=True)
inputs['labels'] = torch.tensor(labels)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
Vaihe 4: Hienosäädä mallia

Trainer API:n avulla voimme helposti hienosäätää mallia. Ensin sinun on asetettava harjoitusparametrit ja sitten kutsuttava kouluttaja harjoittelemaan.

training_args = TrainingArguments(
    output_dir='./results',          # 输出目录
    num_train_epochs=3,              # 训练的epoch数
    per_device_train_batch_size=4,   # 训练时每个设备的batch size
    per_device_eval_batch_size=8,    # 评估时每个设备的batch size
    warmup_steps=500,                # 预热步数
    weight_decay=0.01,               # 权重衰减
    logging_dir='./logs',            # 日志目录
    logging_steps=10,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=inputs,
    eval_dataset=inputs
)

# 开始训练
trainer.train()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
Vaihe 5: Arvioi ja ennusta

Kun koulutus on suoritettu, voimme käyttää koulutettua mallia arviointiin ja ennustamiseen. Arvioinnissa voimme käyttää validointijoukkoa laskeaksemme indikaattoreita, kuten tarkkuutta ennustamiseen, voimme syöttää uutta tekstiä ja saada luokittelutulokset.

# 评估
results = trainer.evaluate()
print(results)

# 预测
test_texts = ["I enjoy learning new things.", "I dislike errors."]
test_inputs = tokenizer(test_texts, return_tensors='pt', padding=True, truncation=True)
predictions = model(**test_inputs)
print(predictions)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

BERT-sovellusskenaariot

Tekstin luokittelun lisäksi BERT toimii hyvin myös muissa luonnollisen kielen käsittelytehtävissä. Esimerkiksi:

  • kysymys ja vastaus järjestelmä: BERT:tä voidaan käyttää tehokkaan kysymys- ja vastausjärjestelmän rakentamiseen, joka voi vastata tarkasti käyttäjien kysymyksiin kontekstin ymmärtämisen kautta.
  • Nimetyn kokonaisuuden tunnistus: BERT voi tunnistaa entiteettejä tekstistä, kuten henkilöiden nimiä, paikannimiä, organisaatioiden nimiä jne.
  • tekstin luominen: Vaikka BERTiä käytetään pääasiassa tehtävien ymmärtämiseen, se voi auttaa myös joissakin sukupolvitehtävissä, kuten tyhjien täyttämisessä, uudelleenkirjoittamisessa jne.

Tee yhteenveto

Tehokkaana esikoulutettuna kielimallina BERT on saavuttanut merkittäviä tuloksia useissa luonnollisen kielen käsittelytehtävissä. Kahden esikoulutuksen ja hienosäädön vaiheen kautta BERT voi mukautua tehokkaasti erilaisiin loppupään tehtäviin. Toivon, että tämän artikkelin esittelyn kautta jokainen voi paremmin ymmärtää ja soveltaa BERT:tä ja ratkaista käytännön ongelmia.

Jos haluat lisää jännittävää sisältöä, kiinnitä huomiota: ChatGPT kiinalainen verkkosivusto