Tekoäly
Haun lisättyjen kielimallien parantaminen: Itseään päättävä ja mukautuva lisäys keskustelujärjestelmille

By
Aayush Mittal Mittal
Suuret kielimallit kamppailevat usein tarkan ja ajantasaisen tiedon toimittamisessa, erityisesti monimutkaisissa tietopohjaisissa tehtävissä. Näiden esteiden voittamiseksi tutkijat tutkivat menetelmiä näiden mallien parantamiseksi integroimalla ne ulkoisiin tietolähteisiin.
Tällä alalla on ilmaantunut kaksi uutta lähestymistapaa itseään perustelevat puitteet ja adaptiivinen haku lisätty sukupolvi keskustelujärjestelmilleTässä artikkelissa syvennymme näihin innovatiivisiin tekniikoihin ja tutkimme, miten ne rikkovat kielimallien mahdollisuuksia.
Haulla lisättyjen kielimallien lupaus ja sudenkuopat
Ymmärretäänpä haulla täydennettyjen kielimallien (RALM) käsite. RALMien ydinajatuksena on yhdistää esikoulutettujen kielimallien laaja tietämys ja kielenymmärrys kyky kykyyn käyttää ja sisällyttää ulkoista, ajantasaista tietoa päättelyn aikana.
Tässä on yksinkertainen esimerkki siitä, miten perus-RALM saattaa toimia:
- Käyttäjä kysyy: "Mikä oli vuoden 2024 olympialaisten tulos?"
- Järjestelmä hakee asiaankuuluvat asiakirjat ulkoisesta tietokannasta.
- LLM käsittelee kysymyksen yhdessä haettujen tietojen kanssa.
- Malli tuottaa vastauksen sekä sisäisen tiedon että ulkoisen tiedon perusteella.
Tämä lähestymistapa on osoittanut suurta lupausta parantaa LLM-tulosten tarkkuutta ja relevanssia erityisesti tehtävissä, jotka edellyttävät pääsyä nykyiseen tietoon tai toimialuekohtaiseen tietoon. RALMeissa ei kuitenkaan ole haasteita. Kaksi keskeistä asiaa, joiden kanssa tutkijat ovat kamppailleet, ovat:
- Luotettavuus: Miten voimme varmistaa, että haetut tiedot ovat merkityksellisiä ja hyödyllisiä?
- JäljitettävyysKuinka voimme tehdä mallin päättelyprosessista läpinäkyvämmän ja todennettavamman?
Viimeaikaiset tutkimukset ovat ehdottaneet innovatiivisia ratkaisuja näihin haasteisiin, joita tutkimme perusteellisesti.
Omatoiminen päättely: RALM:ien parantaminen eksplisiittisillä päättelypoluilla
Tämä on arkkitehtuuri ja prosessi haulla täydennettyjen oikeustieteen mallien (LLM) taustalla, keskittyen itsearviointiin (Self-Reasoning). Tämä lähestymistapa käyttää trajektorioita parantaakseen mallin kykyä päätellä haettuja dokumentteja.
Kun kysymys esitetään, asiaankuuluvat asiakirjat haetaan ja käsitellään useiden perusteluvaiheiden kautta. Self-Reasoning-mekanismi soveltaa todisteita tietoisia ja liikeradan analysointiprosesseja tiedon suodattamiseksi ja syntetisoimiseksi ennen lopullisen vastauksen luomista. Tämä menetelmä ei ainoastaan lisää tulosten tarkkuutta, vaan myös varmistaa, että vastausten perustelut ovat läpinäkyviä ja jäljitettäviä.
Yllä annetuissa esimerkeissä, kuten elokuvan ”Catch Me If You Catch” julkaisupäivän määrittämisessä tai Firenzen katedraalin katon maalanneiden taiteilijoiden tunnistamisessa, malli suodattaa tehokkaasti haetut asiakirjat ja tuottaa tarkkoja, kontekstissa tuettuja vastauksia.
Tämä taulukko esittää vertailevan analyysin erilaisista LLM-varianteista, mukaan lukien LLaMA2-malleista ja muista haulla täydennetyistä malleista eri tehtävissä, kuten NaturalQuestions, PopQA, FEVER ja ASQA. Tulokset on jaettu lähtötasoihin ilman hakua ja niille, joita on parannettu hakuominaisuuksilla.
Tämä kuva esittää skenaarion, jossa oikeustieteen maisterin tehtävänä on antaa ehdotuksia käyttäjien kyselyiden perusteella. Tämä osoittaa, miten ulkoisen tiedon käyttö voi vaikuttaa vastausten laatuun ja relevanssiin. Kaavio korostaa kahta lähestymistapaa: toisessa malli käyttää tiedonpätkää ja toisessa ei. Vertailu korostaa, miten tiettyjen tietojen sisällyttäminen voi räätälöidä vastauksia paremmin käyttäjän tarpeisiin, mikä tarjoaa syvyyttä ja tarkkuutta, jota muuten saattaisi puuttua puhtaasti generatiivisesta mallista.
Yksi uraauurtava lähestymistapa RALM-mallien parantamiseen on itseään päättelevien viitekehysten käyttöönotto. Menetelmän ydinajatuksena on hyödyntää kielimallin omia ominaisuuksia eksplisiittisten päättelytrajektorien luomiseksi, joita voidaan sitten käyttää tulosteiden laadun ja luotettavuuden parantamiseen.
Puretaanpa itsearviointikehyksen keskeiset osat:
- Relevanssitietoinen prosessi (RAP-MUSIIKKI)
- Todistustietoinen valikoiva prosessi (EAP)
- Liikeradan analyysiprosessi (TAP)
Relevance-Aware Process (RAP)
RAP on suunniteltu ratkaisemaan yksi RALM-lomakkeiden perushaasteista: sen määrittäminen, ovatko haetut asiakirjat todella relevantteja annetun kysymyksen kannalta. Näin se toimii:
- Järjestelmä hakee joukon mahdollisesti relevantteja asiakirjoja hakumallin avulla (esim. DPR tai Contriever).
- Kielimallia ohjataan sitten arvioimaan näiden asiakirjojen merkitystä kysymyksen kannalta.
- Malli luo nimenomaisesti syitä, jotka selittävät, miksi asiakirjoja pidetään merkityksellisinä tai merkityksettöminä.
Esimerkiksi, kun otetaan huomioon kysymys "Milloin Eiffel-torni rakennettiin?", RAP saattaa tuottaa seuraavanlaisen tuloksen:
Relevant: True
Relevant Reason: The retrieved documents contain specific information about the construction dates of the Eiffel Tower, including its commencement in 1887 and completion in 1889.
Tämä prosessi auttaa suodattamaan pois epäolennaista tietoa jo varhaisessa vaiheessa, mikä parantaa mallin vastausten yleistä laatua.
Evidence-Aware Selective Process (EAP)
Yksilöllinen arviointimalli (EAP) vie relevanssin arvioinnin askeleen pidemmälle ohjeistamalla mallia tunnistamaan ja siteeraamaan tiettyjä todisteita asiaankuuluvista dokumenteista. Tämä prosessi jäljittelee sitä, miten ihmiset saattavat lähestyä tutkimustehtävää valitsemalla avainlauseita ja selittämällä niiden relevanssin. EAP:n tulos saattaa näyttää tältä:
Cite content: "Construction of the Eiffel Tower began on January 28, 1887, and was completed on March 31, 1889."
Reason to cite: This sentence provides the exact start and end dates for the construction of the Eiffel Tower, directly answering the question about when it was built.
Mainitsemalla lähteet nimenomaisesti ja selittämällä kunkin todisteen merkityksen, EAP parantaa mallin tulosten jäljitettävyyttä ja tulkittavuutta.
Liikeradan analyysiprosessi (TAP)
TAP on itsepäättelyn viitekehyksen viimeinen vaihe, jossa malli yhdistää kaikki edellisissä vaiheissa luodut päättelypolut. Se analysoi näitä kehityskulkuja ja tuottaa tiiviin yhteenvedon sekä lopullisen vastauksen. TAP:n tulos saattaa näyttää tältä:
Analysis: The Eiffel Tower was built between 1887 and 1889. Construction began on January 28, 1887, and was completed on March 31, 1889. This information is supported by multiple reliable sources that provide consistent dates for the tower's construction period.
Vastaus: Eiffel-torni rakennettiin vuosina 1887-1889.
Tämän prosessin avulla malli voi tarjota sekä yksityiskohtaisen selityksen perusteluistaan että ytimekkäästä vastauksesta, joka vastaa käyttäjien eri tarpeisiin.
Omatoimisen päättelyn toteuttaminen käytännössä
Tämän omaehtoisen kehyksen toteuttamiseksi tutkijat ovat tutkineet erilaisia lähestymistapoja, mukaan lukien:
- Esiopetettujen kielimallien esittäminen
- Hienosäätää kielimalleja parametritehokkailla tekniikoilla, kuten QLoRA
- Erikoistuneiden hermoarkkitehtuurien, kuten monen pään huomiomallien, kehittäminen
Jokaisella näistä lähestymistavoista on omat kompromissinsa suorituskyvyn, tehokkuuden ja toteutuksen helppouden suhteen. Esimerkiksi kehotusmenetelmä on yksinkertaisin toteuttaa, mutta se ei aina tuota johdonmukaisia tuloksia. Hienosäätö QLoRA:lla tarjoaa hyvän tasapainon suorituskyvyn ja tehokkuuden välillä, kun taas erikoistuneet arkkitehtuurit voivat tarjota parhaan suorituskyvyn, mutta vaativat enemmän laskentaresursseja.
Tässä on yksinkertaistettu esimerkki siitä, miten voit toteuttaa RAP:n käyttämällä kehotteita ja kielimallia, kuten GPT-3:a:
import openai def relevance_aware_process(question, documents): prompt = f""" Question: {question} Retrieved documents: {documents} Task: Determine if the retrieved documents are relevant to answering the question. Output format: Relevant: [True/False] Relevant Reason: [Explanation] Your analysis: """ response = openai.Completion.create( engine="text-davinci-002", prompt=prompt, max_tokens=150 ) return response.choices[0].text.strip() # Example usage question = "When was the Eiffel Tower built?" documents = "The Eiffel Tower is a wrought-iron lattice tower on the Champ de Mars in Paris, France. It is named after the engineer Gustave Eiffel, whose company designed and built the tower. Constructed from 1887 to 1889 as the entrance arch to the 1889 World's Fair, it was initially criticized by some of France's leading artists and intellectuals for its design, but it has become a global cultural icon of France." result = relevance_aware_process(question, documents) print(result)
Tämä esimerkki osoittaa, kuinka RAP voidaan toteuttaa käyttämällä yksinkertaista kehotuslähestymistapaa. Käytännössä käytettäisiin kehittyneempiä tekniikoita johdonmukaisuuden varmistamiseksi ja reunatapausten käsittelemiseksi.
Adaptive Retrieval-Augmented Generation for Conversational Systems
Samalla kun omaperusteinen viitekehys keskittyy yksittäisten vastausten laadun ja tulkittavuuden parantamiseen, toinen tutkimuslinja on tutkinut, miten haku-lisätystä sukupolvesta voidaan tehdä adaptiivisempi keskustelujärjestelmien kontekstissa. Tämä lähestymistapa, joka tunnetaan nimellä adaptiivinen haku lisätty sukupolvi, pyrkii määrittämään, milloin ulkopuolista tietoa tulisi käyttää keskustelussa ja miten se sisällytetään tehokkaasti.
Tämän lähestymistavan keskeinen pointti on, että jokainen keskustelun käänne ei vaadi ulkoista tiedon lisäämistä. Joissakin tapauksissa liiallinen luottaminen haettuun tietoon voi johtaa luonnottomiin tai liian monisanaisiin vastauksiin. Haasteena on siis kehittää järjestelmä, joka pystyy dynaamisesti päättämään, milloin käyttää ulkoista tietoa ja milloin luottaa mallin omiin ominaisuuksiin.
Adaptive Retrieval-Augmented Generationin osat
Tämän haasteen ratkaisemiseksi tutkijat ovat ehdottaneet RAGate-nimistä viitekehystä, joka koostuu useista avainkomponenteista:
- Binäärinen tietoporttimekanismi
- Relevanssitietoinen prosessi
- Todistustietoinen valikoiva prosessi
- Liikeradan analysointiprosessi
Binäärinen tietoporttimekanismi
RAGate-järjestelmän ydin on binäärinen tietoportti, joka päättää, käytetäänkö ulkopuolista tietoa tiettyyn keskusteluvuoroon. Tämä portti ottaa päätöksensä huomioon keskustelukontekstin ja valinnaisesti haetut tietokatkelmat.
Tässä on yksinkertaistettu esimerkki siitä, miten binäärinen tietoportti saattaisi toimia:
def knowledge_gate(context, retrieved_knowledge=None): # Analyze the context and retrieved knowledge # Return True if external knowledge should be used, False otherwise pass def generate_response(context, knowledge=None): if knowledge_gate(context, knowledge): # Use retrieval-augmented generation return generate_with_knowledge(context, knowledge) else: # Use standard language model generation return generate_without_knowledge(context)
Tämän portituksen avulla järjestelmä voi olla joustavampi ja kontekstitietoisempi ulkoisen tiedon käytössä.
Toteutetaan RAGate
Tämä kuva havainnollistaa RAGate-kehystä, kehittynyttä järjestelmää, joka on suunniteltu sisällyttämään ulkopuolinen tieto LLM:iin vastausten luomisen parantamiseksi. Tämä arkkitehtuuri osoittaa, kuinka perus-LLM:ää voidaan täydentää kontekstilla tai tiedolla, joko suoraan syöttämällä tai integroimalla ulkoisia tietokantoja generointiprosessin aikana. Tämä kaksinkertainen lähestymistapa – käyttämällä sekä sisäisiä malliominaisuuksia että ulkoista dataa – antaa LLM:lle mahdollisuuden tarjota tarkempia ja kontekstuaalisesti relevantteja vastauksia. Tämä hybridimenetelmä muodostaa sillan raakalaskentatehon ja toimialuekohtaisen asiantuntemuksen välillä.
Tämä esittelee suorituskykymittareita eri malliversioille RAGate-kehyksessä, joka keskittyy noudon integroimiseen parametritehokkaaseen hienosäätöön (PEFT). Tulokset korostavat kontekstiin integroitujen mallien paremmuutta, erityisesti ner-know- ja ner-source-upotuksia hyödyntävien mallien paremmuutta.
RAGate-PEFT- ja RAGate-MHA-mallit osoittavat merkittäviä parannuksia tarkkuudessa, muistamisessa ja F1-pisteissä, mikä korostaa sekä kontekstin että tietopanosten sisällyttämisen etuja. Näiden hienosäätöstrategioiden avulla mallit voivat suorittaa tehokkaammin tietointensiivisiä tehtäviä, mikä tarjoaa kestävämmän ja skaalautuvamman ratkaisun tosielämän sovelluksiin.
RAGaten toteuttamiseksi tutkijat ovat tutkineet useita lähestymistapoja, mukaan lukien:
- Käytä suuria kielimalleja huolellisesti laadituilla kehotteilla
- Kielimallien hienosäätö parametritehokkailla tekniikoilla
- Erikoistuneiden hermoarkkitehtuurien, kuten monen pään huomiomallien, kehittäminen
Jokaisella näistä lähestymistavoista on omat vahvuutensa ja heikkoutensa. Esimerkiksi kehotusmenetelmä on suhteellisen yksinkertainen toteuttaa, mutta se ei välttämättä aina tuota johdonmukaisia tuloksia. Hienosäätö tarjoaa hyvän tasapainon suorituskyvyn ja tehokkuuden välillä, kun taas erikoistuneet arkkitehtuurit voivat tarjota parhaan suorituskyvyn, mutta vaativat enemmän laskentaresursseja.
Tässä on yksinkertaistettu esimerkki siitä, miten voit toteuttaa RAGate-tyyppisen järjestelmän hienosäädetyn kielimallin avulla:
import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification class RAGate: def __init__(self, model_name): self.tokenizer = AutoTokenizer.from_pretrained(model_name) self.model = AutoModelForSequenceClassification.from_pretrained(model_name) def should_use_knowledge(self, context, knowledge=None): inputs = self.tokenizer(context, knowledge or "", return_tensors="pt", truncation=True, max_length=512) with torch.no_grad(): outputs = self.model(**inputs) probabilities = torch.softmax(outputs.logits, dim=1) return probabilities[0][1].item() > 0.5 # Assuming binary classification (0: no knowledge, 1: use knowledge) class ConversationSystem: def __init__(self, ragate, lm, retriever): self.ragate = ragate self.lm = lm self.retriever = retriever def generate_response(self, context): knowledge = self.retriever.retrieve(context) if self.ragate.should_use_knowledge(context, knowledge): return self.lm.generate_with_knowledge(context, knowledge) else: return self.lm.generate_without_knowledge(context) # Example usage ragate = RAGate("path/to/fine-tuned/model") lm = LanguageModel() # Your preferred language model retriever = KnowledgeRetriever() # Your knowledge retrieval system conversation_system = ConversationSystem(ragate, lm, retriever) context = "User: What's the capital of France?\nSystem: The capital of France is Paris.\nUser: Tell me more about its famous landmarks." response = conversation_system.generate_response(context) print(response)
Tämä esimerkki osoittaa, kuinka RAGate-tyyppinen järjestelmä voidaan toteuttaa käytännössä. The RAGate
luokka käyttää hienosäädettyä mallia päättääkseen, käytetäänkö ulkopuolista tietoa, kun taas ConversationSystem
luokka ohjaa portin, kielimallin ja noutajan välistä vuorovaikutusta.
Haasteet ja tulevaisuuden suunnat
Vaikka omatoimiset viitekehykset ja adaptiivinen haku lisätty sukupolvi ovat lupaavia, tutkijat pyrkivät ratkaisemaan edelleen useita haasteita:
- Laskennallinen tehokkuus: Molemmat lähestymistavat voivat olla laskennallisesti intensiivisiä, varsinkin kun käsitellään suuria määriä haettua tietoa tai luodaan pitkiä päättelypolkuja. Näiden prosessien optimointi reaaliaikaisia sovelluksia varten on edelleen aktiivinen tutkimusalue.
- kestävyys: On erittäin tärkeää varmistaa, että nämä järjestelmät toimivat johdonmukaisesti useissa eri aiheissa ja kysymystyypeissä. Tämä sisältää reunatapausten käsittelyn ja kontradiktoristen syötteiden käsittelyn, jotka voivat hämmentää merkityksellisyyden arviointia tai avainnusmekanismeja.
- Monikielinen ja monikielinen tuki: Näiden lähestymistapojen laajentaminen toimimaan tehokkaasti useilla kielillä ja käsittelemään monikielistä tiedonhakua ja päättelyä on tärkeä suunta tulevaa työtä varten.
- Integrointi muihin tekoälyteknologioihin: Tutkimalla, miten näitä lähestymistapoja voidaan yhdistää muihin tekoälyteknologioihin, kuten multimodaalisiin malleihin tai vahvistusoppimiseen, voisi saada entistä tehokkaampia ja joustavampia järjestelmiä.
Yhteenveto
Itsepäivystävän viitekehyksen ja adaptiivisen haun avulla lisätyn sukupolven kehittäminen on merkittävä edistysaskel luonnollisen kielen käsittelyn alalla. Antamalla kielimallille mahdollisuuden perustella selkeästi käyttämänsä tiedot ja mukauttaa tietämyksen lisäämisstrategioitaan dynaamisesti, nämä lähestymistavat lupaavat tehdä tekoälyjärjestelmistä luotettavampia, tulkittavampia ja kontekstitietoisempia.
Koska tutkimus tällä alalla kehittyy edelleen, voimme odottaa näkevämme näitä tekniikoita jalostettuna ja integroituvana monenlaisiin sovelluksiin kysymysvastausjärjestelmistä ja virtuaalisista avustajista opetusvälineisiin ja tutkimusapuvälineisiin. Kyky yhdistää suuriin kielimalleihin koodattu laaja tieto dynaamisesti haettuun, ajantasaiseen tietoon voi mullistaa tapomme olla vuorovaikutuksessa tekoälyjärjestelmien kanssa ja käyttää tietoja.
Olen viettänyt viimeiset viisi vuotta uppoutuen koneoppimisen ja syväoppimisen kiehtovaan maailmaan. Intohimoni ja asiantuntemukseni ovat saaneet minut osallistumaan yli 50:een erilaiseen ohjelmistosuunnitteluprojektiin keskittyen erityisesti tekoälyyn/ML:ään. Jatkuva uteliaisuuteni on myös vetänyt minut kohti luonnollisen kielen käsittelyä, alaa, jota olen innokas tutkimaan lisää.
Saatat pitää
-
Tekoälyn hallintaongelma: Riskit ja ratkaisut
-
Retrieval-Augmented Generation: Pk-yritysten ratkaisu tekoälyn tehokkaaseen ja tehokkaaseen hyödyntämiseen
-
Post-RAG Evolution: Tekoälyn matka tiedonhausta reaaliaikaiseen päättelyyn
-
Itserefleksion syntyminen tekoälyssä: kuinka suuret kielimallit käyttävät henkilökohtaisia oivalluksia kehittyäkseen
-
LLM:ien pitäminen merkityksellisinä: RAG:n ja CAG:n vertailu tekoälyn tehokkuuden ja tarkkuuden suhteen
-
Uusi tutkimus löytää kuusitoista suurta ongelmaa RAG-järjestelmissä, mukaan lukien hämmennys