diff --git a/ca_pages/techniques/activeprompt.ca.mdx b/ca_pages/techniques/activeprompt.ca.mdx new file mode 100644 index 0000000..10e5e23 --- /dev/null +++ b/ca_pages/techniques/activeprompt.ca.mdx @@ -0,0 +1,12 @@ +# Active-Prompt + +import { Callout, FileTree } from 'nextra-theme-docs' +import {Screenshot} from 'components/screenshot' +import ACTIVE from '../../img/active-prompt.png' + +Les mètodes de cadena de pensament (CoT) es basen en un conjunt fix d'exemplars anotats per humans. El problema d'això és que els exemplars podrien no ser els exemples més eficaços per a les diferents tasques. Per abordar això, [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf) van proposar recentment un nou enfocament de prompts anomenat Active-Prompt per adaptar els LLMs a diferents exemples de tasques específiques (anotats amb raonament CoT dissenyat per humans). + +A continuació es mostra una il·lustració de l'enfocament. El primer pas és consultar el LLM amb o sense alguns exemples de CoT. Es generen *k* respostes possibles per a un conjunt de preguntes d'entrenament. Es calcula una mètrica d'incertesa basada en les *k* respostes (es fa servir el desacord). Les preguntes més incertes es seleccionen per a ser anotades per humans. Els nous exemplars anotats s'utilitzen llavors per inferir cada pregunta. + + +Font de la imatge: [Diao et al., (2023)](https://arxiv.org/pdf/2302.12246.pdf) \ No newline at end of file diff --git a/ca_pages/techniques/ape.ca.mdx b/ca_pages/techniques/ape.ca.mdx new file mode 100644 index 0000000..6d821d7 --- /dev/null +++ b/ca_pages/techniques/ape.ca.mdx @@ -0,0 +1,26 @@ +# Enginyer automàtic de prompts (APE) + +import { Callout, FileTree } from 'nextra-theme-docs' +import {Screenshot} from 'components/screenshot' +import APE from '../../img/APE.png' +import APECOT from '../../img/ape-zero-shot-cot.png' + + +Font de la imatge: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910) + +[Zhou et al., (2022)](https://arxiv.org/abs/2211.01910) proposen un enginyer automàtic de prompts (APE), un marc per a la generació i selecció automàtica d'instruccions. El problema de generació d'instruccions es planteja com a síntesi de llenguatge natural i es tracta com a un problema d'optimització de caixa negra utilitzant LLMs per generar i buscar solucions candidates. + +El primer pas implica un model de llenguatge gran (com a model d'inferència) que rep demostracions de sortida per generar candidats d'instruccions per a una tasca. Aquestes solucions candidates guiaran el procediment de cerca. Les instruccions s'executen utilitzant un model objectiu i, a continuació, es selecciona la instrucció més apropiada en funció de les puntuacions d'avaluació calculades. + +APE descobreix un millor prompt de CoT de zero trets que el prompt creat per humans "Let's think step by step" (["Pensem pas a pas"]) ([Kojima et al., 2022](https://arxiv.org/abs/2205.11916)). + +El prompt "Treballem això de manera pas a pas per assegurar-nos que tenim la resposta correcta." provoca un raonament de cadena de pensament i millora el rendiment en els bancs de proves MultiArith i GSM8K: + + +Font de la imatge: [Zhou et al., (2022)](https://arxiv.org/abs/2211.01910) + +Aquest article tracta un tema important relacionat amb l'enginyeria de prompts, que és la idea d'optimitzar automàticament els prompts. Encara que no aprofundim en aquest tema en aquesta guia, aquí hi ha alguns articles clau si estàs interessat en el tema: + +- [AutoPrompt](https://arxiv.org/abs/2010.15980) - proposa un enfocament per crear automàticament prompts per a un conjunt divers de tasques basat en la cerca guiada per gradients. +- [Prefix Tuning](https://arxiv.org/abs/2101.00190) - una alternativa lleugera al fine-tuning que afegeix un prefix continu i entrenable per a tasques de generació de llenguatge natural (NLG). +- [Prompt Tuning](https://arxiv.org/abs/2104.08691) - proposa un mecanisme per aprendre prompts suaus a través de la retropropagació. \ No newline at end of file diff --git a/ca_pages/techniques/consistency.ca.mdx b/ca_pages/techniques/consistency.ca.mdx new file mode 100644 index 0000000..4264abb --- /dev/null +++ b/ca_pages/techniques/consistency.ca.mdx @@ -0,0 +1,76 @@ +# Autoconsistència + +Potser una de les tècniques més avançades en enginyeria de prompts és l'autoconsistència. Proposada per [Wang et al. (2022)](https://arxiv.org/pdf/2203.11171.pdf), l'autoconsistència té com a objectiu "substituir la descodificació ingènua i àvida utilitzada en la motivació de la cadena de pensament". La idea és mostrejar múltiples camins de raonament diversos mitjançant pocs trets de CoT i utilitzar les generacions per seleccionar la resposta més consistent. Això ajuda a augmentar el rendiment de la motivació de CoT en tasques que impliquen raonament aritmètic i de sentit comú. + +Provem el següent exemple per al raonament aritmètic: + +*Indicació:* +``` +Quan tenia 6 anys, la meva germana tenia la meitat de la meva edat. Ara tinc 70 anys, quants anys té la meva germana? +``` + +*Sortida:* +``` +35 +``` + +La sortida és incorrecta! Com podem millorar això amb autoconsistència? Provem-ho. Utilitzarem els exemplars amb pocs trets de Wang et al. 2022 (Taula 17): + +*Indicació:* +``` +Q: Hi ha 15 arbres al bosquet. Els treballadors del bosquet plantaran arbres avui. Després que acabin, +hi haurà 21 arbres. Quants arbres han plantat els treballadors del bosquet avui? +A: Comencem amb 15 arbres. Més tard tenim 21 arbres. La diferència ha de ser el nombre d'arbres que han plantat. +Així que, han de haver plantat 21 - 15 = 6 arbres. La resposta és 6. + +Q: Si hi ha 3 cotxes al pàrquing i arriben 2 cotxes més, quantes cotxes hi ha al pàrquing? +A: Hi ha 3 cotxes al pàrquing ja. Arriben 2 més. Ara hi ha 3 + 2 = 5 cotxes. La resposta és 5. + +Q: Leah tenia 32 xocolates i la seva germana en tenia 42. Si se'n mengen 35, quants trossos els queden en total? +A: Leah tenia 32 xocolates i la germana de Leah en tenia 42. Això significa que originalment hi havia 32 + 42 = 74 +xocolates. Se n'han menjat 35. Així que en total encara tenen 74 - 35 = 39 xocolates. La resposta és 39. + +Q: Jason tenia 20 llaminadures. Va donar algunes llaminadures a Denny. Ara Jason té 12 llaminadures. Quantas llaminadures +va donar Jason a Denny? +A: Jason tenia 20 llaminadures. Com que ara només en té 12, ha de haver donat la resta a Denny. El nombre de +llaminadures que llaminadures que ha donat a Denny ha de ser 20 - 12 = 8 llaminadures. La resposta és 8. + +Q: Shawn té cinc joguines. Per Nadal, va obtenir dues joguines de la seva mare i del seu pare. Quantas joguines +té ara? +A: Té 5 joguines. Va obtenir 2 de la mare, així que després d'això té 5 + 2 = 7 joguines. Després va obtenir 2 més del pare, així +que en total té 7 + 2 = 9 joguines. La resposta és 9. + +Q: Hi havia nou ordinadors a la sala de servidors. Es van instal·lar cinc ordinadors més cada dia, de +dilluns a dijous. Quantas ordinadors hi ha ara a la sala de servidors? +A: Hi ha 4 dies de dilluns a dijous. Es van afegir 5 ordinadors cada dia. Això vol dir que en total es van afegir 4 * 5 = +20 ordinadors. Hi havia 9 ordinadors al començament, així que ara hi ha 9 + 20 = 29 ordinadors. +La resposta és 29. + +Q: Michael tenia 58 boles de golf. Dimarts, va perdre 23 boles de golf. Dimecres, va perdre 2 més. Quantas +boles de golf tenia al final del dimecres? +A: Michael inicialment tenia 58 boles. Va perdre 23 dimarts, així que després d'això té 58 - 23 = 35 boles. El +dimecres va perdre 2 més, així que ara té 35 - 2 = 33 boles. La resposta és 33. + +Q: Olivia té 23 dòlars. Va comprar cinc rosquilles per 3 dòlars cadascuna. Quant de diners li queda? +A: Va comprar 5 rosquilles per 3 dòlars cadascuna. Això vol dir que va gastar 5 + +Q: Quan tenia 6 anys, la meva germana tenia la meitat de la meva edat. Ara tinc 70 anys, quants anys té la meva germana? +A: +``` + +*Sortida 1:* +``` +Quan tenia 6 anys, la meva germana tenia la meitat de la meva edat, així que tenia 3 anys. Ara tinc 70 anys, així que ella té 70 - 3 = 67 anys. La resposta és 67. +``` + +*Sortida 2:* +``` +Quan el narrador tenia 6 anys, la seva germana tenia la meitat de la seva edat, que és 3. Ara que el narrador té 70 anys, la seva germana tindria 70 - 3 = 67 anys. La resposta és 67. +``` + +*Sortida 3:* +``` +Quan tenia 6 anys, la meva germana tenia la meitat de la meva edat, així que tenia 3 anys. Ara tinc 70 anys, així que ella té 70/2 = 35. La resposta és 35. +``` + +El càlcul de la resposta final implica alguns passos (consulteu l'article per obtenir més detalls), però per simplificar, ja podem veure que hi ha una resposta majoritària emergent, de manera que aquesta resposta es convertiria essencialment en la resposta final. En aquest cas, la resposta correcta és 67, ja que la majoria de les sortides han arribat a aquesta conclusió. Així, l'autoconsistència ens ajuda a obtenir una resposta més precisa en comparació amb la motivació de CoT sense aquesta tècnica. \ No newline at end of file diff --git a/ca_pages/techniques/cot.ca.mdx b/ca_pages/techniques/cot.ca.mdx new file mode 100644 index 0000000..9bd6e4e --- /dev/null +++ b/ca_pages/techniques/cot.ca.mdx @@ -0,0 +1,92 @@ +# Cadena de pensament (CoT) Prompting + +import {Screenshot} from 'components/screenshot' +import COT from '../../img/cot.png' +import ZEROCOT from '../../img/zero-cot.png' + + +## Cadena de pensament (CoT) Prompting + + + +Font de la imatge: [Wei et al. (2022)](https://arxiv.org/abs/2201.11903) + +Introduït a [Wei et al. (2022)](https://arxiv.org/abs/2201.11903), la cadena de pensament (CoT) prompting permet habilitats de raonament complex a través de passos intermedis de raonament. Podeu combinar-ho amb el prompting de pocs exemples per obtenir resultats més precisos en tasques més complexes que requereixen raonament abans de respondre. + +*Prompt:* +``` +Els números senars d'aquest grup sumen un número parell: 4, 8, 9, 15, 12, 2, 1. +R: Afegint tots els números senars (9, 15, 1) dóna 25. La resposta és Fals. + +Els números senars d'aquest grup sumen un número parell: 17, 10, 19, 4, 8, 12, 24. +R: Afegint tots els números senars (17, 19) dóna 36. La resposta és Cert. + +Els números senars d'aquest grup sumen un número parell: 16, 11, 14, 4, 8, 13, 24. +R: Afegint tots els números senars (11, 13) dóna 24. La resposta és Cert. + +Els números senars d'aquest grup sumen un número parell: 17, 9, 10, 12, 13, 4, 2. +R: Afegint tots els números senars (17, 9, 13) dóna 39. La resposta és Fals. + +Els números senars d'aquest grup sumen un número parell: 15, 32, 5, 13, 82, 7, 1. +R: +``` + +*Sortida:* +``` +Afegint tots els números senars (15, 5, 13, 7, 1) dóna 41. La resposta és Fals. +``` + +Vaja! Podem veure un resultat perfecte quan vam proporcionar el pas de raonament. De fet, podem resoldre aquesta tasca proporcionant encara menys exemples, és a dir, només un exemple sembla suficient: + +*Prompt:* +``` +Els números senars d'aquest grup sumen un número parell: 4, 8, 9, 15, 12, 2, 1. +R: Afegint tots els números senars (9, 15, 1) dóna 25. La resposta és Fals. + +Els números senars d'aquest grup sumen un número parell: 15, 32, 5, 13, 82, 7, 1. +R: +``` + +*Sortida:* +``` +Afegint tots els números senars (15, 5, 13, 7, 1) dóna 41. La resposta és Fals. +``` + +Tingueu en compte que els autors afirmen que aquesta és una habilitat emergent que sorgeix amb models de llenguatge prou grans. + +## Prompting de Cadena de pensament en Zero-shot + + + +Font de la imatge: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916) + +Una idea recent que ha sorgit més recentment és la idea de [CoT en zero-shot](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022) que essencialment implica afegir "Pensem pas a pas" a la indicació original. Provem un problema simple i veiem com es comporta el model: + +*Prompt:* +``` +Vaig anar al mercat i vaig comprar 10 pomes. Vaig donar 2 pomes al veí i 2 al reparador. Després vaig anar a comprar 5 pomes més i em vaig menjar 1. Amb quantes pomes em vaig quedar? +``` + +*Sortida:* +``` +11 pomes +``` + +La resposta és incorrecta! Ara provem amb l'indicació especial. + +*Prompt:* +``` +Vaig anar al mercat i vaig comprar 10 pomes. Vaig donar 2 pomes al veí i 2 al reparador. Després vaig anar a comprar 5 pomes més i em vaig menjar 1. Amb quantes pomes em vaig quedar? + +Pensem pas a pas. +``` + +*Sortida:* +``` +Primer, vas començar amb 10 pomes. +Vas donar 2 pomes al veí i 2 al reparador, així que et van quedar 6 pomes. +Després vas comprar 5 pomes més, així que ara tenies 11 pomes. +Finalment, et vas menjar 1 poma, així que et quedarien 10 pomes. +``` + +És impressionant que aquesta simple indicació sigui eficaç en aquesta tasca. Això és particularment útil on no teniu massa exemples per utilitzar en la indicació. \ No newline at end of file diff --git a/ca_pages/techniques/dsp.ca.mdx b/ca_pages/techniques/dsp.ca.mdx new file mode 100644 index 0000000..907d757 --- /dev/null +++ b/ca_pages/techniques/dsp.ca.mdx @@ -0,0 +1,16 @@ +# Estimulació d'Estímuls Directius + +import { Callout, FileTree } from 'nextra-theme-docs' +import {Screenshot} from 'components/screenshot' +import DSP from '../../img/dsp.jpeg' + +[Li et al., (2023)](https://arxiv.org/abs/2302.11520) proposen una nova tècnica d'estimulació per guiar millor el LLM en la generació del resum desitjat. + +Es forma un LM de política ajustable per generar l'estímul/suggeriment. S'observa un ús més ampli de RL per optimitzar els LLM. + +La figura de sota mostra com l'Estimulació d'Estímuls Directius es compara amb l'estimulació estàndard. El LM de política pot ser petit i optimitzat per generar les pistes que guien un LLM congelat de caixa negra. + + +Font de la imatge: [Li et al., (2023)](https://arxiv.org/abs/2302.11520) + +Exemple complet properament! \ No newline at end of file diff --git a/ca_pages/techniques/fewshot.ca.mdx b/ca_pages/techniques/fewshot.ca.mdx new file mode 100644 index 0000000..528f868 --- /dev/null +++ b/ca_pages/techniques/fewshot.ca.mdx @@ -0,0 +1,109 @@ +# Estimulació de pocs trets (Few-shot) + +Encara que els grans models de llenguatge demostrin capacitats notables en situacions de zero trets, encara no són suficients en tasques més complexes utilitzant aquesta configuració. L'estimulació de pocs trets es pot utilitzar com a tècnica per permetre l'aprenentatge en context, on proporcionem demostracions en l'estímul per dirigir el model cap a un millor rendiment. Les demostracions serveixen com a condicionament per als exemples posteriors on volem que el model generi una resposta. + +Segons [Touvron et al. 2023](https://arxiv.org/pdf/2302.13971.pdf), les propietats de pocs trets van aparèixer primer quan els models es van escalar a una mida suficient [(Kaplan et al., 2020)](https://arxiv.org/abs/2001.08361). + +Anem a demostrar l'estimulació de pocs trets mitjançant un exemple presentat a [Brown et al. 2020](https://arxiv.org/abs/2005.14165). En l'exemple, la tasca és utilitzar correctament una paraula nova en una frase. + +*Estímul:* +``` +Un "whatpu" és un petit animal pelut originari de Tanzània. Un exemple d'una frase que utilitza +la paraula whatpu és: +Estàvem viatjant per Àfrica i vam veure aquests whatpus molt monos. +Fer un "farduddle" significa saltar amunt i avall molt ràpid. Un exemple d'una frase que utilitza +la paraula farduddle és: +``` + +*Sortida:* +``` +Quan vam guanyar el partit, tots vam començar a fer farduddle per celebrar-ho. +``` + +Podem observar que el model ha après de alguna manera com realitzar la tasca proporcionant-li només un exemple (és a dir, 1-tret). Per a tasques més difícils, podem experimentar amb l'augment de les demostracions (per exemple, 3-trets, 5-trets, 10-trets, etc.). + +Seguint les conclusions de [Min et al. (2022)](https://arxiv.org/abs/2202.12837), aquí hi ha alguns consells més sobre les demostracions/exemplars quan es fan pocs trets: + +- "l'espai d'etiquetes i la distribució del text d'entrada especificada per les demostracions són importants (independentment de si les etiquetes són correctes per a entrades individuals)" +- el format que utilitzis també juga un paper clau en el rendiment, fins i tot si utilitzes etiquetes aleatòries, això és molt millor que no tenir etiquetes en absolut. +- els resultats addicionals mostren que seleccionar etiquetes aleatòries d'una distribució veritable d'etiquetes (en lloc d'una distribució uniforme) també ajuda. + +Anem a provar alguns exemples. Provem primer un exemple amb etiquetes aleatòries (és a dir, les etiquetes Negatiu i Positiu s'assignen aleatòriament als inputs): + +*Estímul:* +``` +Això és increïble! // Negatiu +Això és dolent! // Positiu +Uau, aquesta pel·lícula és genial! // Positiu +Quin espectacle horrible! // +``` + +*Sortida:* +``` +Negatiu +``` + +Encara obtenim la resposta correcta, tot i que les etiquetes s'han randomitzat. Tingueu en compte que també hem mantingut el format, la qual cosa també ajuda. De fet, amb més experimentació, sembla que els models GPT més nous amb els quals estem experimentant es tornen més robustos fins i tot amb formats aleatoris. Exemple: + +*Estímul:* +``` +Positiu Això és increïble! +Això és dolent! Negatiu +Uau, aquesta pel·lícula és genial! +Positiu +Quin espectacle horrible! -- +``` + +*Sortida:* +``` +Negatiu +``` + +No hi ha consistència en el format anterior, però el model encara ha predit l'etiqueta correcta. Haurem de dur a terme una anàlisi més exhaustiva per confirmar si això es manté per a tasques diferents i més complexes, incloses diferents variacions de l'estímul. + +### Limitacions de l'estimulació de pocs trets + +L'estimulació estàndard de pocs trets funciona bé per a moltes tasques, però encara no és una tècnica perfecta, especialment quan es tracta de tasques de raonament més complex. Anem a demostrar per què és així. Recordeu l'exemple anterior on vam proporcionar la següent tasca: + +``` +Els nombres imparells d'aquest grup sumen un nombre parell: 15, 32, 5, 13, 82, 7, 1. + +A: +``` + +Si tornem a provar, el model produeix la següent sortida: + +``` +Sí, els nombres imparells d'aquest grup sumen 107, que és un nombre parell. +``` + +Aquesta no és la resposta correcta, la qual cosa no només destaca les limitacions d'aquests sistemes, sinó que també indica que hi ha una necessitat de millorar l'enginyeria dels estímuls. + +Anem a provar d'afegir alguns exemples per veure si l'estimulació de pocs trets millora els resultats. + +*Estímul:* +``` +Els nombres imparells d'aquest grup sumen un nombre parell: 4, 8, 9, 15, 12, 2, 1. +A: La resposta és Fals. + +Els nombres imparells d'aquest grup sumen un nombre parell: 17, 10, 19, 4, 8, 12, 24. +A: La resposta és Cert. + +Els nombres imparells d'aquest grup sumen un nombre parell: 16, 11, 14, 4, 8, 13, 24. +A: La resposta és Cert. + +Els nombres imparells d'aquest grup sumen un nombre parell: 17, 9, 10, 12, 13, 4, 2. +A: La resposta és Fals. + +Els nombres imparells d'aquest grup sumen un nombre parell: 15, 32, 5, 13, 82, 7, 1. +A: +``` + +*Sortida:* +``` +La resposta és Cert. +``` + +Això no ha funcionat. Sembla que l'estimulació de pocs trets no és suficient per obtenir respostes fiables per a aquest tipus de problema de raonament. L'exemple anterior proporciona informació bàsica sobre la tasca. Si mireu més de prop, el tipus de tasca que hem introduït implica alguns passos de raonament addicionals. En altres paraules, podria ser útil desglossar el problema en passos i demostrar-ho al model. Més recentment, l'[estimulació de cadena de pensament (CoT)](https://arxiv.org/abs/2201.11903) s'ha popularitzat per abordar tasques més complexes d'aritmètica, raonament de sentit comú i simbòlic. + +En general, sembla que proporcionar exemples és útil per resoldre algunes tasques. Quan l'estimulació de zero trets i pocs trets no és suficient, podria ser que el que ha après el model no sigui suficient per fer-ho bé en la tasca. A partir d'aquí, es recomana començar a pensar en ajustar els vostres models o experimentar amb tècniques d'estimulació més avançades. A continuació, parlem d'una de les tècniques d'estimulació populars anomenada estimulació de cadena de pensament, que ha guanyat molta popularitat. \ No newline at end of file diff --git a/ca_pages/techniques/graph.ca.mdx b/ca_pages/techniques/graph.ca.mdx new file mode 100644 index 0000000..4ffdaef --- /dev/null +++ b/ca_pages/techniques/graph.ca.mdx @@ -0,0 +1,5 @@ +# GraphPrompts + +[Liu et al., 2023](https://arxiv.org/abs/2302.08043) introdueix GraphPrompt, un nou marc d'estímuls per a gràfics per millorar el rendiment en tasques de riu avall. + +Més informació aviat! \ No newline at end of file diff --git a/ca_pages/techniques/knowledge.ca.mdx b/ca_pages/techniques/knowledge.ca.mdx new file mode 100644 index 0000000..31c00cd --- /dev/null +++ b/ca_pages/techniques/knowledge.ca.mdx @@ -0,0 +1,92 @@ +# Estímuls de coneixement generat + +import {Screenshot} from 'components/screenshot' +import GENKNOW from '../../img/gen-knowledge.png' + + + +Font de la imatge: [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf) + +Els LLM continuen millorant i una tècnica popular inclou la capacitat d'incorporar coneixement o informació per ajudar el model a fer prediccions més precises. + +Utilitzant una idea similar, es pot utilitzar també el model per generar coneixement abans de fer una predicció? Això és el que es prova en l'article de [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf): generar coneixement per ser utilitzat com a part de l'estímul. En particular, com d'útil és això per a tasques com el raonament de sentit comú? + +Provem un estímul simple: + +*Estímul:* +``` +Formar part del golf és intentar obtenir un total de punts més alt que els altres. Sí o no? +``` + +*Sortida:* +``` +Sí. +``` + +Aquest tipus d'error revela les limitacions dels LLM per realitzar tasques que requereixen més coneixement sobre el món. Com podem millorar això amb la generació de coneixement? + +En primer lloc, generem alguns "coneixements": + +*Estímul:* +``` +Entrada: Grècia és més gran que Mèxic. +Coneixement: Grècia té aproximadament 131.957 km², mentre que Mèxic té aproximadament 1.964.375 km², fent que Mèxic sigui un 1.389% més gran que Grècia. + +Entrada: Les ulleres sempre s'empassen. +Coneixement: La condensació es produeix en les lents de les ulleres quan el vapor d'aigua del teu suor, alè i humitat ambient cau sobre una superfície freda, es refreda i després es transforma en petites gotes de líquid, formant una pel·lícula que veus com boira. Les teves lents seran relativament fredes en comparació amb el teu alè, especialment quan l'aire exterior és fred. + +Entrada: Un peix és capaç de pensar. +Coneixement: Els peixos són més intel·ligents del que semblen. En moltes àrees, com ara la memòria, les seves capacitats cognitives igualen o superen les dels vertebrats 'superiors', incloent-hi els primats no humans. La memòria a llarg termini dels peixos els ajuda a mantenir un seguiment de les relacions socials complexes. + +Entrada: Un efecte comú de fumar molts cigarrets al llarg de la vida és una probabilitat més alta del normal de patir càncer de pulmó. +Coneixement: Aquells que van mantenir una mitjana de menys d'un cigarret al dia al llarg de la seva vida tenien nou vegades més risc de morir de càncer de pulmó que els que mai fumaven. Entre les persones que fumaven entre un i deu cigarrets al dia, el risc de morir de càncer de pulmó era gairebé 12 vegades més alt que el dels que mai fumaven. + +Entrada: Una roca té la mateixa mida que una pedra. +Coneixement: Una pedra és un fragment de roca amb una mida de partícula de 4 a 64 mil·límetres basat en l'escala de sedimentologia Udden-Wentworth. Les pedres generalment es consideren més grans que les grànules (2 a 4 mil·límetres de diàmetre) i més petites que els codols (64 a 256 mil·límetres de diàmetre). + +Entrada: Formar part del golf és intentar obtenir un total de punts més alt que els altres. +Coneixement: +``` + +*Coneixement 1:* +``` +L'objectiu del golf és jugar un conjunt de forats amb el menor nombre de cops possible. Una ronda de golf típicament consisteix en 18 forats. Cada forat es juga una vegada en la ronda en un camp de golf estàndard. Cada cop es compta com un punt, i el nombre total de cops s'utilitza per determinar el guanyador del joc. +``` + +*Coneixement 2:* +``` +El golf és un esport de precisió de pal i pilota en què els jugadors que competeixen (o golfistes) utilitzen molts tipus de pals per colpejar les pilotes en una sèrie de forats en un camp utilitzant el menor nombre de cops possible. L'objectiu és completar el camp amb la puntuació més baixa, que es calcula sumant el nombre total de cops realitzats en cada forat. El jugador amb la puntuació més baixa guanya el joc. +``` + +Estem utilitzant l'estímul proporcionat en l'article de [Liu et al. 2022](https://arxiv.org/pdf/2110.08387.pdf). + +El següent pas és integrar el coneixement i obtenir una predicció. He reformat la pregunta en format QA per guiar el format de la resposta. + +*Estímul:* +``` +Pregunta: Formar part del golf és intentar obtenir un total de punts més alt que els altres. Sí o no? + +Coneixement: L'objectiu del golf és jugar un conjunt de forats amb el menor nombre de cops possible. Una ronda de golf típicament consisteix en 18 forats. Cada forat es juga una vegada en la ronda en un camp de golf estàndard. Cada cop es compta com un punt, i el nombre total de cops s'utilitza per determinar el guanyador del joc. + +Explica i respon: +``` + +*Resposta 1 (confiança molt alta):* +``` +No, l'objectiu del golf no és obtenir un total de punts més alt que els altres. Més aviat, l'objectiu és jugar un conjunt de forats amb el menor nombre de cops possible. El nombre total de cops s'utilitza per determinar el guanyador del joc, no el total de punts. +``` + +``` +Pregunta: Formar part del golf és intentar obtenir un total de punts més alt que els altres. Sí o no? + +Coneixement: El golf és un esport de precisió de pal i pilota en què els jugadors que competeixen (o golfistes) utilitzen molts tipus de pals per colpejar les pilotes en una sèrie de forats en un camp utilitzant el menor nombre de cops possible. L'objectiu és completar el camp amb la puntuació més baixa, que es calcula sumant el nombre total de cops realitzats en cada forat. El jugador amb la puntuació més baixa guanya el joc. + +Explica i respon: +``` + +*Resposta 2 (la confiança és molt menor):* +``` +Sí, formar part del golf és intentar obtenir un total de punts més alt que els altres. Cada jugador intenta completar el camp amb la puntuació més baixa, que es calcula sumant el nombre total de cops realitzats en cada forat. El jugador amb la puntuació més baixa guanya el joc. +``` + +Algunes coses realment interessants van passar amb aquest exemple. En la primera resposta, el model estava molt confiat, però en la segona no tant. Simplifico el procés per a demostració, però hi ha alguns detalls més a tenir en compte a l'hora d'arribar a la resposta final. Consulteu l'article per a més informació. \ No newline at end of file diff --git a/ca_pages/techniques/multimodalcot.ca.mdx b/ca_pages/techniques/multimodalcot.ca.mdx new file mode 100644 index 0000000..956865d --- /dev/null +++ b/ca_pages/techniques/multimodalcot.ca.mdx @@ -0,0 +1,15 @@ +# Prompting Multimodal CoT + +import { Callout, FileTree } from 'nextra-theme-docs' +import {Screenshot} from 'components/screenshot' +import MCOT from '../../img/multimodal-cot.png' + +[Zhang et al. (2023)](https://arxiv.org/abs/2302.00923) van proposar recentment una aproximació de prompt multimodal en cadena de pensament (CoT). El CoT tradicional es centra en la modalitat del llenguatge. En contrast, el CoT multimodal incorpora text i visió en un marc de treball de dos etapes. El primer pas implica la generació de raonaments basats en informació multimodal. Això és seguit per la segona fase, inferència de respostes, que aprofita els raonaments informatius generats. + +El model multimodal CoT (1B) supera el GPT-3.5 en el banc de proves ScienceQA. + + +Font de la imatge: [Zhang et al. (2023)](https://arxiv.org/abs/2302.00923) + +Lectura addicional: +- [El llenguatge no és tot el que necessites: alinear la percepció amb els models de llenguatge](https://arxiv.org/abs/2302.14045) (febrer de 2023) \ No newline at end of file diff --git a/ca_pages/techniques/react.ca.mdx b/ca_pages/techniques/react.ca.mdx new file mode 100644 index 0000000..0bb1c20 --- /dev/null +++ b/ca_pages/techniques/react.ca.mdx @@ -0,0 +1,178 @@ +# ReAct: Generació de sol·licituds + +import { Callout, FileTree } from 'nextra-theme-docs' +import {Screenshot} from 'components/screenshot' +import REACT from '../../img/react.png' +import REACT1 from '../../img/react/table1.png' +import REACT2 from '../../img/react/alfworld.png' + +[Yao et al., 2022](https://arxiv.org/abs/2210.03629) van presentar un marc anomenat ReAct on els LLMs s'utilitzen per generar tant *rastres de raonament* com *accions específiques de la tasca* de manera entrellaçada. + +Generar rastres de raonament permet al model induir, seguir i actualitzar els plans d'acció, i fins i tot gestionar les excepcions. El pas d'acció permet interactuar amb i obtenir informació de fonts externes, com ara bases de coneixement o entorns. + +El marc ReAct pot permetre que els LLMs interactuïn amb eines externes per recuperar informació addicional que condueix a respostes més fiables i basades en fets. + +Els resultats mostren que ReAct pot superar diverses línies de base d'avantguarda en tasques de llenguatge i presa de decisions. ReAct també contribueix a millorar la interpretabilitat humana i la fiabilitat dels LLMs. En general, els autors van trobar que la millor aproximació utilitza ReAct combinat amb una cadena de pensament (CoT) que permet l'ús tant del coneixement intern com de la informació externa obtinguda durant el raonament. + +## Com funciona? + +ReAct s'inspira en les sinèrgies entre "actuar" i "raonar" que permeten als humans aprendre noves tasques i prendre decisions o raonar. + +La generació de sol·licituds en cadena de pensament (CoT) ha demostrat les capacitats dels LLMs per dur a terme rastres de raonament per generar respostes a preguntes que impliquen raonament aritmètic i de sentit comú, entre altres tasques [(Wei et al., 2022)](https://arxiv.org/abs/2201.11903). Però la falta d'accés al món extern o la incapacitat d'actualitzar el seu coneixement pot portar a problemes com ara la hallucinació de fets i la propagació d'errors. + +ReAct és un paradigma general que combina raonament i actuació amb LLMs. ReAct sol·licita als LLMs que generin rastres de raonament verbal i accions per a una tasca. Això permet al sistema realitzar raonament dinàmic per crear, mantenir i ajustar plans d'actuació alhora que permet la interacció amb entorns externs (per exemple, Wikipedia) per incorporar informació addicional al raonament. La figura a continuació mostra un exemple de ReAct i els diferents passos implicats per realitzar respostes a preguntes. + + +Font de la imatge: [Yao et al., 2022](https://arxiv.org/abs/2210.03629) + +En l'exemple de dalt, passem una sol·licitud com la següent pregunta de [HotpotQA](https://hotpotqa.github.io/): + +``` +A part del control remot d'Apple, quins altres dispositius poden controlar el programa amb el qual el control remot d'Apple va ser dissenyat originalment per interactuar? +``` + +Tingueu en compte que també s'afegeixen exemples en context a la sol·licitud, però els excloem aquí per simplicitat. Podem veure que el model genera *trayectorias de resolución de tareas* (Thought, Act). Obs correspon a l'observació de l'entorn amb el qual s'està interactuant (per exemple, motor de cerca). En essència, ReAct pot recuperar informació per donar suport al raonament, mentre que el raonament ajuda a enfocar què recuperar a continuació. + +## ReAct Prompting +Per demostrar com funciona la generació de sol·licituds ReAct, seguim un exemple del document. + +El primer pas és seleccionar casos d'un conjunt d'entrenament (per exemple, HotPotQA) i compondre trajectòries en format ReAct. Aquestes es fan servir com a exemples de poques mostres en les sol·licituds. Les trajectòries consisteixen en diversos passos de pensament-acció-observació, com es mostra en la figura de dalt. Els pensaments de forma lliure s'utilitzen per aconseguir diferents tasques, com ara descompondre preguntes + +Aquí teniu un exemple de com es veuen els exemples de sol·licituds ReAct (obtinguts del document i escurçats a un exemple per simplicitat): + +``` +Question What is the elevation range for the area that the eastern sector of the +Colorado orogeny extends into? +Thought 1 I need to search Colorado orogeny, find the area that the eastern sector +of the Colorado orogeny extends into, then find the elevation range of the +area. +Action 1 Search[Colorado orogeny] +Observation 1 The Colorado orogeny was an episode of mountain building (an orogeny) in +Colorado and surrounding areas. +Thought 2 It does not mention the eastern sector. So I need to look up eastern +sector. +Action 2 Lookup[eastern sector] +Observation 2 (Result 1 / 1) The eastern sector extends into the High Plains and is called +the Central Plains orogeny. +Thought 3 The eastern sector of Colorado orogeny extends into the High Plains. So I +need to search High Plains and find its elevation range. +Action 3 Search[High Plains] +Observation 3 High Plains refers to one of two distinct land regions +Thought 4 I need to instead search High Plains (United States). +Action 4 Search[High Plains (United States)] +Observation 4 The High Plains are a subregion of the Great Plains. From east to west, the +High Plains rise in elevation from around 1,800 to 7,000 ft (550 to 2,130 +m).[3] +Thought 5 High Plains rise in elevation from around 1,800 to 7,000 ft, so the answer +is 1,800 to 7,000 ft. +Action 5 Finish[1,800 to 7,000 ft] +... +``` + +Tingueu en compte que es fan servir diferents configuracions de sol·licituds per a diferents tipus de tasques. Per a tasques on el raonament és de primera importància (per exemple, HotpotQA), es fan servir múltiples passos de pensament-acció-observació per a la trajectòria de resolució de tasques. Per a tasques de presa de decisions que impliquen molts passos d'acció, els pensaments s'utilitzen escassament. + +## Resultats en tasques intensives en coneixement + +El document avalua primer ReAct en tasques de raonament intensives en coneixement, com ara respostes a preguntes (HotPotQA) i verificació de fets ([Fever](https://fever.ai/resources.html)). PaLM-540B es fa servir com a model base per a la generació de sol·licituds. + + +Font de la imatge: [Yao et al., 2022](https://arxiv.org/abs/2210.03629) + +Els resultats de les sol·licituds a HotPotQA i Fever amb diferents mètodes de sol·licituds mostren que ReAct generalment té un rendiment millor que Act (implica actuar només) en ambdues tasques. + +També podem observar que ReAct supera CoT a Fever i queda per darrere de CoT a HotpotQA. Al document es proporciona una anàlisi detallada dels errors. En resum: + +- CoT pateix d'al·lucinació de fets +- La restricció estructural de ReAct redueix la seva flexibilitat en la formulació de passos de raonament +- ReAct depèn molt de la informació que està recuperant; els resultats de cerca no informatius descarrilen el raonament del model i provoquen dificultats per recuperar i reformular pensaments + +Els mètodes de sol·licitud que combinen i donen suport al canvi entre ReAct i CoT + Autoconsistència generalment tenen un rendiment millor que tots els altres mètodes de sol·licitud. + +## Resultats en tasques de presa de decisions + +El document també informa dels resultats que demostren el rendiment de ReAct en tasques de presa de decisions. ReAct s'avalua en dos marcadors de referència anomenats [ALFWorld](https://alfworld.github.io/) (joc basat en text) i [WebShop](https://webshop-pnlp.github.io/) (entorn de lloc web de compres en línia). Tots dos impliquen entorns complexos que requereixen raonament per actuar i explorar de manera efectiva. + +Tingueu en compte que les sol·licituds de ReAct estan dissenyades de manera diferent per a aquestes tasques, tot i que mantenen la mateixa idea central de combinar raonament i actuació. A continuació es mostra un exemple d'un problema ALFWorld que implica sol·licituds ReAct. + + +Font de la imatge: [Yao et al., 2022](https://arxiv.org/abs/2210.03629) + +ReAct supera Act tant en ALFWorld com en Webshop. Act, sense cap pensament, no aconsegueix descompondre correctament els objectius en subobjectius. El raonament sembla ser avantatjós en ReAct per a aquests tipus de tasques, però els mètodes actuals basats en sol·licituds estan encara lluny del rendiment d'éssers humans experts en aquestes tasques. + +Consulteu el document per obtenir resultats més detallats. + +## Ús de LangChain ReAct + +A continuació es presenta un exemple d'alt nivell de com funciona l'enfocament de sol·licituds ReAct a la pràctica. Utilitzarem OpenAI per a l'LLM i [LangChain](https://python.langchain.com/en/latest/index.html), ja que ja té funcionalitat integrada que aprofita el marc de ReAct per construir agents que realitzen tasques combinant la potència dels LLM i diferents eines. + +En primer lloc, instal·lem i importem les biblioteques necessàries: + +``` python +%%capture +# actualitza o instal·la les biblioteques necessàries +!pip install --upgrade openai +!pip install --upgrade langchain +!pip install --upgrade python-dotenv +!pip install google-search-results + +# importa biblioteques +import openai +import os +from langchain.llms import OpenAI +from langchain.agents import load_tools +from langchain.agents import initialize_agent +from dotenv import load_dotenv +load_dotenv() + +# carrega les claus API; hauràs d'obtenir-les si encara no les tens +os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") +os.environ["SERPAPI_API_KEY"] = os.getenv("SERPAPI_API_KEY") + +``` + +Ara podem configurar l'LLM, les eines que utilitzarem i l'agent que ens permet utilitzar el marc ReAct juntament amb l'LLM i les eines. Tingueu en compte que estem utilitzant una API de cerca per cercar informació externa i l'LLM com a eina de matemàtiques. + +``` python +llm = OpenAI(model_name="text-davinci-003" ,temperature=0) +tools = load_tools(["serpapi", "llm-math"], llm=llm) +agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True) +``` + +Un cop configurat, ara podem executar l'agent amb la consulta/sol·licitud desitjada. Tingueu en compte que aquí no s'espera que proporcioneu exemples de poques mostres, com s'explica en el document. + +``` python +agent.run("Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?") +``` + +L'execució de la cadena es veu de la següent manera: + +``` yaml +> Entrant a una nova cadena d'AgentExecutor... +Necessito saber qui és el nòvio d'Olivia Wilde i després calcular la seva edat elevada a la potència de 0,23. +Acció: Cercar +Entrada d'acció: "Olivia Wilde boyfriend" +Observació: Olivia Wilde va començar a sortir amb Harry Styles després d'acabar el seu compromís de molts anys amb Jason Sudeikis: vegeu la seva cronologia de relació. +Pensament: Necessito descobrir l'edat d'Harry Styles. +Acció: Cercar +Entrada d'acció: "Harry Styles age" +Observació: 29 anys +Pensament: Necessito calcular 29 elevat a la potència de 0,23. +Acció: Calculadora +Entrada d'acció: 29^0.23 +Observació: Resposta: 2.169459462491557 + +Pensament: Ara sé la resposta final. +Resposta final: Harry Styles, el nòvio d'Olivia Wilde, té 29 anys i la seva edat elevada a la potència de 0,23 és 2.169459462491557. + +> Cadena finalitzada. +``` + +La sortida que obtenim és la següent: + +``` +"Harry Styles, el nòvio d'Olivia Wilde, té 29 anys i la seva edat elevada a la potència de 0,23 és 2.169459462491557." +``` + +Hem adaptat l'exemple de la [documentació de LangChain](https://python.langchain.com/en/latest/modules/agents/getting_started.html), així que el crèdit és per a ells. Animen a l'aprenent a explorar diferents combinacions d'eines i tasques. + +Podeu trobar el quadern de codi aquí: https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/react.ipynb \ No newline at end of file diff --git a/ca_pages/techniques/zeroshot.ca.mdx b/ca_pages/techniques/zeroshot.ca.mdx new file mode 100644 index 0000000..f89dd5e --- /dev/null +++ b/ca_pages/techniques/zeroshot.ca.mdx @@ -0,0 +1,24 @@ +----- +# Zero-Shot Prompting +Els grans LLMs d'avui dia, com GPT-3, estan ajustats per seguir instruccions i estan entrenats amb grans quantitats de dades; per tant, són capaços de realitzar algunes tasques de "zero-shot". + +Vam provar alguns exemples de zero-shot a la secció anterior. Aquí teniu un dels exemples que vam utilitzar: + +*Pregunta:* +``` +Classifica el text en neutral, negatiu o positiu. + +Text: Crec que les vacances estan bé. +Sentiment: +``` + +*Resposta:* +``` +Neutral +``` + +Tingueu en compte que a la pregunta anterior no vam proporcionar al model cap exemple de text juntament amb les seves classificacions, l'LLM ja entén "sentiment" - aquestes són les capacitats de zero-shot en acció. + +L'ajust d'instruccions ha demostrat millorar l'aprenentatge de zero-shot [Wei et al. (2022)](https://arxiv.org/pdf/2109.01652.pdf). L'ajust d'instruccions és essencialment el concepte d'ajustar models en conjunts de dades descrits a través d'instruccions. A més, [RLHF](https://arxiv.org/abs/1706.03741) (aprenentatge per reforç de la retroacció humana) s'ha adoptat per escalar l'ajust d'instruccions en el qual el model s'aligna per ajustar-se millor a les preferències humanes. Aquest desenvolupament recent dóna suport a models com ChatGPT. Discutirem tots aquests enfocaments i mètodes en les properes seccions. + +Quan el zero-shot no funciona, es recomana proporcionar demostracions o exemples en la pregunta, la qual cosa porta a la pregunta de poques mostres. A la següent secció, mostrem la pregunta de poques mostres. \ No newline at end of file