# Vähäisen ohjauksen kehottaminen

Vaikka suurten kielimallien nollakehottamisen kyvyt ovat huomattavia, ne eivät vielä pärjää monimutkaisemmissa tehtävissä käyttäen vain nollakehottamista. Vähäisen ohjauksen kehotteiden avulla voidaan  mahdollistaa kontekstissa tapahtuva oppiminen, jossa tarjoamme kehotteessa esimerkkejä mallin suorituskyvyn parantamiseksi. Esimerkit toimivat ehtona seuraaville askelille, joiden mukaisesti haluamme mallin tuottavan vastauksen.
While large-language models demonstrate remarkable zero-shot capabilities, they still fall short on more complex tasks when using the zero-shot setting. Few-shot prompting can be used as a technique to enable in-context learning where we provide demonstrations in the prompt to steer the model to better performance. The demonstrations serve as conditioning for subsequent examples where we would like the model to generate a response.

[Touvron ym. 2023](https://arxiv.org/pdf/2302.13971.pdf) mukaan vähäisen ohjauksen ominaisuudet ilmestyivät ensimmäisen kerran, kun malleja skaalattiin riittävän suuriksi [(Kaplan ym., 2020)](https://arxiv.org/abs/2001.08361).

Demonstroimme vähäisen ohjauksen oppimista esimerkin avulla, joka esiteltiin [Brown et al. 2020](https://arxiv.org/abs/2005.14165) julkaisussa. Esimerkissä tehtävänä on käyttää uutta sanaa oikein lauseessa.

*Kehote:*
```
"Whatpu" on pieni, karvainen eläin, joka on kotoisin Tansaniasta. Esimerkki lauseesta, joka käyttää sanaa whatpu on:
Matkustimme Afrikassa ja näimme näitä hyvin söpöjä whatpuja.
"Farduddle" tarkoittaa hypätä ylös ja alas todella nopeasti. Esimerkki lauseesta, joka käyttää sanaa farduddle on:

Vastaus:
```

*Tulos:*
```
Kun näimme whatput, ne alkoivat farduddlemaan innoissaan ympäriinsä.
```

Voimme havaita, että malli on jollakin tavalla oppinut suorittamaan tehtävän antamalla sille vain yhden esimerkin (eli yhden ohjeen kehotteella). Vaikeampien tehtävien kohdalla voimme kokeilla lisätä esimerkkien määrää (esim. 3-, 5-, tai 10-ohjeen kehottella jne.).

[Min ym. (2022)](https://arxiv.org/abs/2202.12837), löydösten mukaisesti, tässä on muutama lisävinkki demonstraatioiden/esimerkkien käyttöön vähäisen ohjauksen yhteydessä:

- "sekä esimerkkien määrittämän syötetekstin tunnistetila että jakautuminen ovat tärkeitä (riippumatta siitä, ovatko tunnisteet oikeita yksittäisille syötteille)"
- käyttämäsi muoto vaikuttaa myös suorituskykyyn, vaikka käyttäisit vain satunnaisia tunnisteita, tämä on paljon parempi kuin ei tunnisteita lainkaan.  
- lisätulokset osoittavat, että satunnaisten tunnisteiden valitseminen todellisesta tunnisteiden jakaumasta (sen sijaan, että käytettäisiin yhtenäistä jakaumaa) auttaa myös.

Kokeillaan muutamaa esimerkkiä. Kokeillaan ensin esimerkkiä, jossa on satunnaiset tunnisteet (eli tunnisteet Negative ja Positive on annettu syötteille satunnaisesti):

*Kehote:*
```
Tämä on mahtavaa! // Negatiivinen
Tämä on huonoa! // Positiivinen
Vau, tuo elokuva oli siisti! // Positiivinen
Mikä kamala esitys! //
```

*Tulos:*
```
Negatiivinen
```

Saatamme silti oikean vastauksen, vaikka tunnisteet on annettu satunnaisesti. Huomaa, että säilytimme myös muodon, mikä auttaa myös. Itse asiassa lisäkokeilujen avulla vaikuttaa siltä, että uudemmat GPT-mallit, joita kokeilemme, ovat muuttumassa joustavammiksi jopa satunnaisten formaattien suhteen. Esimerkki:

*Kehote:*
```
Positiivinen Tämä on mahtavaa!
Tämä on huonoa! Negatiivinen
Vau, tuo elokuva oli siisti!
Positiivinen
Mikä kamala esitys! --
```

*Tulos:*
```
Negatiivinen
```

Yllä olevassa formaatissa ei ole johdonmukaisuutta, mutta malli ennusti silti oikean tunnisteen. Meidän on tehtävä perusteellisempi analyysi, jotta voimme varmistaa, päteekö tämä erilaisiin ja monimutkaisempiin tehtäviin, mukaan lukien erilaiset kehotevariaatiot.


### Vähäisen Ohjauksen Kehotteiden Rajoitukset

Tavanomainen vähäisen ohjauksen kehote toimii hyvin monissa tehtävissä, mutta se ei ole täydellinen tekniikka, erityisesti monimutkaisempien päättelytehtävien kohdalla. Havainnollistetaan, miksi näin on. Muistatko aiemman esimerkin, jossa annoimme seuraavan tehtävän:

```
Parittomat luvut tässä ryhmässä muodostavat parillisen summan: 15, 32, 5, 13, 82, 7, 1.

Vastaus: 
```

Jos yritämme tätä uudelleen, malli tuottaa seuraavan vastauksen:

```
Kyllä, parittomat luvut tässä ryhmässä muodostavat 107, mikä on parillinen luku.
```

Tämä ei ole oikea vastaus, mikä korostaa paitsi järjestelmien rajoituksia myös tarvetta kehittyneemmälle kehotesuunnittelulle.

Kokeillaan lisätä joitakin esimerkkejä ja nähdä, paraneeko vähäisen ohjauksen kehotteiden avulla saatu tulos.

*Kehote:*
```
Parittomat luvut tässä ryhmässä muodostavat parillisen summan: 4, 8, 9, 15, 12, 2, 1.
A: Vastaus on Epätosi.

Parittomat luvut tässä ryhmässä muodostavat parillisen summan: 17, 10, 19, 4, 8, 12, 24.
A: Vastaus on Tosi.

Parittomat luvut tässä ryhmässä muodostavat parillisen summan: 16, 11, 14, 4, 8, 13, 24.
A: Vastaus on Tosi.

Parittomat luvut tässä ryhmässä muodostavat parillisen summan: 17, 9, 10, 12, 13, 4, 2.
A: Vastaus on Epätosi.

Parittomat luvut tässä ryhmässä muodostavat parillisen summan: 15, 32, 5, 13, 82, 7, 1.
A:
```

*Tulos:*
```
Vastaus on Tosi.
```

Se ei toiminut. Näyttää siltä, että vähäisen ohjauksen kehotteet eivät riitä luotettavien vastausten saamiseksi tämäntyyppiseen päättelyongelmaan. Yllä oleva esimerkki antaa perustietoa tehtävästä. Tarkemmin tarkasteltuna esittelemämme tehtävätyyppi sisältää useita lisäpäättelyvaiheita. Toisin sanoen, ongelman jakaminen osiin ja sen osoittaminen mallille saattaa auttaa.
Ajatusketjua höydyntävä [chain-of-thought (CoT) kehottaminen](https://arxiv.org/abs/2201.11903) on saavuttanut suosiota ratkaisemaan monimutkaisempia laskennallisia, yleistä järkeä vaativia ja symbolisia päättelytehtäviä.

Esimerkkien tarjoaminen on hyödyllistä joissakin tehtävissä. Kun nollakehottaminen ja vähäisen ohjauksen kehottaminen eivät riitä, se saattaa tarkoittaa, että mallin oppimat asiat eivät ole riittäviä tehtävän suorittamiseksi hyvin. Tässä vaiheessa on suositeltavaa alkaa harkita mallien asetusten hienosäätämistä tai kokeilla kehittyneempiä kehotesuunnittelutekniikoita. Seuraavaksi keskustelemme suositusta kehotesuunnittelutekniikasta, jota kutsutaan ajatusketjua hyödyntäväksi kehotesuunnitteluksi.