Inhalt

Dieser Artikel ist eine Übersetzung des englischsprachigen Originalartikels. Die Übersetzung wurde teilweise automatisch mit www.DeepL.com/Translator erstellt.

Mit BERT automatisiert Fragen beantworten (Teil 2)

Natural Language Processing Question Answering Word Embeddings Biomedicine BERT

Im ersten Teil dieses Blogbeitrags haben wir gesehen, wie die BERT-Architektur im Allgemeinen funktioniert. Jetzt werden wir eine besondere praktische Anwendung von BERT untersuchen: die automatisierte Beantwortung von Fragen.

BERT für die Beantwortung von Fragen: SQuAD 

Der SQuAD-Datensatz ist ein Benchmark-Problem für Textverständnis- und Fragebeantwortungsmodelle.


Es handelt sich um zwei hauptsächlich verwendete Versionen: Es gibt SQuAD 1.0/1.1, der aus ~100 000 Fragen besteht, die sich auf Ausschnitte aus ~500 Wikipedia-Artikeln beziehen, die die Antwort auf die einzelnen Fragen enthalten. Die Daten werden mit einem Label versehen, d.h. jede Frage wird mit der entsprechenden Textspanne (Beginn der Antwort - Ende der Antwort) versehen, die mit dem entsprechenden Textausschnitt assoziiert ist.


SQuAD 2.0 enthält die Frage/Antwort-Paare aus SQuAD 1.0 mit zusätzlichen ~50 000 Fragen, die als unbeantwortbar in Bezug auf den entsprechenden Zieltext gekennzeichnet sind. Anstatt nur die richtige Antwortspanne zu finden, muss das Modell nun beurteilen, ob eine vernünftige Antwort im Text vorhanden ist, und dann die textliche Spanne der Antwort ableiten.


Ein Auszug aus den Daten:

"question": "When were the Normans in Normandy?",
    "id": "56ddde6b9a695914005b9629",
    "answers": [
                {
                "text": "10th and 11th centuries",
                "answer_start": 94
                },
                {
                "text": "in the 10th and 11th centuries",
                "answer_start": 87
                },
                {
                "text": "10th and 11th centuries",
                "answer_start": 94
                },
                {
                "text": "10th and 11th centuries",
                "answer_start": 94
                }
                ]

ist eine Beispielfrage mit möglichen Antworten auf den Kontext, der durch

"context": "The Normans (Norman: Nourmands; French:
Normands; Latin: Normanni) were the people who in the
10th and 11th centuries gave their name to Normandy, 
a region in France. They were descended from Norse 
(\"Norman\" comes from \"Norseman\") raiders and 
pirates from Denmark, Iceland and Norway who,
under their leader Rollo, agreed to swear fealty to
King Charles III of West Francia. Through generations
of assimilation and mixing with the native Frankish
and Roman-Gaulish populations, 
their descendants would gradually merge with the 
Carolingian-based cultures of West Francia. The
distinct cultural and ethnic identity of the Normans
emerged initially in the first half of the 10th
century, and it continued to evolve over the
succeeding centuries."

gegeben ist.


Beachten Sie, dass mehrere (teilweise redundante) Antworten gegeben werden können.


Das ursprüngliche BERT-Papier schlug sowohl SQuAD 1.1 als auch SQuAD 2.0 als Aufgaben vor.


Wir befassen uns zunächst mit der einfacheren Aufgabe, die Antwort ohne vorherige Klassifizierung der "Unmöglichkeit" zu bestimmen. Sowohl die Frage (Segment $$A$$) als auch die Kontextdaten (Segment $$B$$) werden dem Modell durch den [SEP]-Token getrennt zugeführt. Vektor-Darstellungen des Anfangs- und End-Tokens im Hidden Layer werden durch $$S \in \mathbb{R}^H$$ und $$E \in \mathbb{R}^H$$$ bezeichnet. Für jedes der Token $${t_1, \dots, t_l}$$ im Segment $$B$$ wird die Hidden Layer Vektordarstellung $$T_i \in \mathbb{R}^H$$ berechnet. Start- und Endwahrscheinlichkeiten werden über Softmax-Funktionen bestimmt als


$$ P_i^S := \frac{\exp(S \cdot T_i)}{ \sum_j \exp(S \cdot T_j) },\; P_i^E := \frac{\exp(E \cdot T_i)}{ \sum_j \exp(E \cdot T_j) }. $$


Die Trainingsiteration erfolgt nun durch Maximierung des Ziels


$$ \sum_k (\log(P^S_{\xi_k}) + \log(P^E_{\zeta_k})), $$


wobei $$\xi_k$$ und $$\zeta_k$$ die Indizes des korrekten Anfangs- und Endindex des Beispiels $$k$$ im gewählten Batch sind.


Zur Inferenzzeit erfolgt eine Vorhersage der Start- und Endindex-Kandidaten in Bezug auf das Optimierungsproblem


$$ \max_{i,j} (S \cdot T_i + E \cdot T_j) $$


unter der Einschränkung $$i < j$$: die optimalen Indizes unter diesem Wert werden als endgültige Start- und Endpunkte zurückgegeben.


Im Falle von SQuAD 2.0 muss bestimmt werden, ob die Frage beantwortbar ist, bevor die Schlussfolgerung wie oben beschrieben durchgeführt wird. Zu diesem Zweck wird das [CLS]-Token in das Modell aufgenommen. Ein "Null-Antwort"-Score wird analog zu dem obigen Vorhersage-Score als


$$ S \cdot C + E \cdot C, $$


eingeführt, wobei $$C \in \mathbb{R}^H$$ die Hidden Layer-Repräsentation des [CLS]-Tokens ist. Das endgültige Modell sagt eine unbeantwortbare Frage voraus, wenn


$$ S \cdot C + E \cdot C + \tau \geq \max_{i,j} (S \cdot T_i + E \cdot T_j), $$


wobei $$\tau \in \mathbb{R}$$ ein vorberechneter Schwellenwert ist, so dass diese Entscheidungsregel den $$F1$$-Score auf den Trainingsdaten maximiert. Für den Fall, dass das Modell entscheidet, dass die Frage beantwortbar ist, wird der Standard-Inferenz-Score auf der rechten Seite verwendet.

Domänenspezifischer Anwendungsfall: biomedizinische Forschungsarbeiten 

BERT wurde an viele spezielle Bereiche angepasst. Ein spezifisches Beispiel ist BioBERT, das für biomedizinisches Text Mining konzipiert wurde und speziell auf Forschungsarbeiten ausgerichtet ist. BioBERT ist im Wesentlichen eine Version von BERT, die mit den ursprünglichen BERT-Gewichtungen initialisiert wurde und weiter auf domänenspezifische biomedizinische Textkorpora trainiert wurde, zum Beispiel mit Arbeiten aus der PubMed-Datenbank. Dadurch können Aufgaben wie die Eigennamenerkennung (NER) dazu verwendet werden, Abkürzungen und biomedizinische Fachbegriffe in Texten zu erkennen.


Das BioBERT NER-Modell kann zum Beispiel in dieser Webanwendung getestet werden. Das Modell extrahiert benannte Entitäten in Bezug auf ihre entsprechenden Kategorien, z.B. "Drogen/Chemikalien" oder "Spezies".


Eine besonders interessante Anwendung ist die Beantwortung von Fragen im Zusammenhang mit biomedizinischen Forschungsarbeiten mit BioBERT, basierend auf der ursprünglichen Idee, SQuAD 1.1/2.0 mit BERT zu lösen (siehe hier für die Originalarbeit, die BioBERT zur Beantwortung biomedizinischer Fragen vorschlug).


Die für die Feinabstimmung benötigten Daten stammen aus der BioASQ-Challenge, die einen Benchmark-Datensatz für die biomedizinische Semantik-Indexierung und Fragebeantwortung vorschlägt. Die allgemeine Idee ist einfach: Nehmen Sie einfach die trainierte Version von BioBERT und führen Sie eine Feinabstimmung auf den BioASQ-Daten mit dem architektonischen Design durch, das für die Lösung von SQuAD 1.1/2.0 mit der ursprünglichen Version von BERT verwendet wird.


Es wird im Allgemeinen zwischen Ja/Nein-Fragen und so genannten faktoiden Fragen unterschieden (d.h. Fragen, die auf Antworten abzielen, die in bestimmten Bestandteilen des entsprechenden Textes enthalten sind, genau wie in SQuAD). Ja/Nein-Fragen werden durch Verwendung einer abschließenden Sigmoidschicht über der HIdden Layer-Darstellung $$C \in \mathbb{R}^H$$ des [CLS]-Tokens beantwortet, die die Wahrscheinlichkeit der Antwort "ja" vorhersagt:


$$ P_{yes} = \frac{1}{1 + \exp{(-C\cdot W})}, $$


wobei $$W \in \mathbb{R}^H$$ der Gewichtsvektor in der Ausgabeschicht des Modells ist. Als Zielfunktion wird die binäre Kreuzentropie in Bezug auf Ja/Nein-Label verwendet.

Praktische Anwendung: COVID-19 und CORD-19 

Eine spezifische Anwendung von BioBERT ist die Wissensextraktion aus dem CORD-19-Datensatz, der eine breite Palette akademischer Artikel aus verschiedenen Forschungsbereichen wie Epidemiologie und Virologie enthält. CORD-19 wurde als Open-Source-Datensatz für Forscher initiiert, die nach Erkenntnissen über die Coronavirus-Pandemie 2019 suchen. In einer entsprechenden Kaggle-Challenge wurde eine Liste potenziell relevanter wissenschaftlicher Fragen über das neuartige Coronavirus veröffentlicht. Der CORD-19-Datensatz wird regelmäßig aktualisiert und enthält zum Zeitpunkt der Erstellung dieses Artikels ~63000 Artikel (die meisten davon mit Volltext).


Sehen wir uns an, wie das BioASQ-Modell bei CORD-19-Artikeln abschneidet, wenn wir typische Fragen aus der Kaggle-Herausforderung stellen. Für unseren ersten Test wählen wir die Zusammenfassung dieser Arbeit:


G. Kampf, D. Todt, S. Pfaender, E. Steinmann, Persistence of coronaviruses on inanimate surfaces and their inactivation with biocidal agents, Journal of Hospital Infection, Volume 104, Issue 3, 2020, Pages 246-251, ISSN 0195-6701, https://doi.org/10.1016/j.jhin.2020.01.022.


Die Antworten auf die Fragen, die wir im Folgenden stellen werden, sind fett hervorgehoben.


Currently, the emergence of a novel human coronavirus, SARS-CoV-2, has become a global health concern causing severe respiratory tract infections in humans. Human-to-human transmissions have been described with incubation times between 2-10 days, facilitating its spread via droplets, contaminated hands or surfaces. We therefore reviewed the literature on all available information about the persistence of human and veterinary coronaviruses on inanimate surfaces as well as inactivation strategies with biocidal agents used for chemical disinfection, e.g. in healthcare facilities. The analysis of 22 studies reveals that human coronaviruses such as Severe Acute Respiratory Syndrome (SARS) coronavirus, Middle East Respiratory Syndrome (MERS) coronavirus or endemic human coronaviruses (HCoV) can persist on inanimate surfaces like metal, glass or plastic for up to 9 days, but can be efficiently inactivated by surface disinfection procedures with 62-71% ethanol, 0.5% hydrogen peroxide or 0.1% sodium hypochlorite within 1 minute. Other biocidal agents such as 0.05-0.2% benzalkonium chloride or 0.02% chlorhexidine digluconate are less effective. As no specific therapies are available for SARS-CoV-2, early containment and prevention of further spread will be crucial to stop the ongoing outbreak and to control this novel infectious thread.


Er enthält mehrere spezifische Antworten auf typische Fragen in Form von Zahlenwerten und ist für unser Szenario gut geeignet. Wir formulieren unsere Fragen unter Verwendung von Synonymen, die nicht im Text enthalten sind, so dass eine Übereinstimmung der jeweiligen Antwort nicht sofort durch ein entsprechendes Signalwort abgeleitet werden kann. Wenn der Text beispielsweise den Begriff "biozider Wirkstoff" enthält, verwenden wir in unserer Frage "Desinfektionsmittel". Anstelle von "persistieren" verwenden wir "überleben" usw.


Das Modell ist in der Lage, verschiedene im Text enthaltene Zeitspannen mit der entsprechenden Frage zu assoziieren.


Frage: How long can the coronavirus survive on surfaces?

Antwort: "up to 9 days"


Frage: How long does it take to disinfect surfaces?

Antwort: "1 minute"


Frage: How long is the latent period?

Antwort: "between 2-10 days"


Darüber hinaus extrahiert es korrekterweise Reihen von Items (auch mit entsprechenden Wirkstoffkonzentrationswerten im Falle von Desinfektionsmitteln). 


Frage: Which sanitizer is the best to disinfect surfaces?

Antwort: "62-71% ethanol, 0.5% hydrogen peroxide or 0.1% sodium hypochlorite"


Frage: How is the coronavirus spread?

Antwort: "via droplets, contaminated hands or surfaces"


Obwohl diese Ergebnisse wirklich beeindruckend sind, müssen einige Vorbehalte berücksichtigt werden. Da das von uns verwendete BioASQ-Modell auf SQuAD 1.1 trainiert ist, kann es nicht entscheiden, ob der Zieltext nicht in der Lage ist, Auskunft über eine bestimmte Frage zu geben. Wenn wir nach Informationen fragen, die eindeutig nicht im Text enthalten sind, erhalten wir einfach die Antwortspanne mit der höchsten Punktzahl. Je nach Kontext können diese Antworten mehr oder weniger sinnvoll sein:


Frage: What are the risk factors for the coronavirus?

Antwort: "droplets, contaminated hands or surfaces"


Frage: How tall is the Eiffel Tower?

Antwort: "between 2-10 days"


Außerdem ist es nicht einfach, mit BioBERT Text Mining auf einer großen Anzahl von Papieren gleichzeitig durchzuführen. Um Antworten aus mehreren Arbeiten zu extrahieren, müsste jede Frage zusammen mit einer einzigen Arbeit aus dem Korpus in das Modell eingegeben werden. Am Ende müsste eine Bewertung der Antworten durchgeführt werden, um die "bestmögliche" im Korpus enthaltene Antwort zu ermitteln. Typischerweise ist ein solcher Ansatz allein schon aus Gründen der rechnerischen Ineffizienz suboptimal. Es wurden jedoch genau für das Szenario der Fragenbeantwortung auf der Grundlage eines großen Korpus von Dokumenten Alternativen entwickelt. Dies geht über den Rahmen dieses Artikels hinaus, aber der Leser kann zum Beispiel diese Arbeit für eine Echtzeit-Fragenbeantwortung konsultieren.

Quellen

  • A Neural Named Entity Recognition and Multi-Type Normalization Tool for Biomedical Text Mining; Kim et al., 2019.
  • Attention Is All You Need; Vaswani et al., 2017.
  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding; Devlin et al., 2018.
  • BioBERT: a pre-trained biomedical language representation model for biomedical text mining; Lee et al., 2019.
  • Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation; Wu et al., 2016.
  • Neural machine translation by jointly learning to align and translate; Bahdanau et al. 2015.
  • Pre-trained Language Model for Biomedical Question Answering; Yoon et al., 2019.
  • Real-Time Open-Domain Question Answering with Dense-Sparse Phrase Index; Seo et al., 2019.
  • The Annotated Transformer; Rush, Nguyen and Klein.