Suomi Englanti

Tekoäly ja laajat kielimallit


Kun puhutaan tekoälystä, tarkoitetaan usein koneoppimiseen pohjautuvia laajoja kielimalleja, jotka ennustavat seuraavan tekstin osan todennäköisyyksien perusteella. Tämä parin minuutin lukuaikaan tiivistetty teksti on tarkoitettu kaikille aiheesta kiinnostuneille. Mukana on myös lopuksi käytännön koodiesimerkki ilahduttamassa tänne eksyviä ohjelmistokehittäjiä.


🚀 Hämmästyttävä suorituskyky


Siihen nähden miten alkeelliseen teknologiaan moderni tekoäly perustuu, on silti hämmästyttävää kuinka hyvin laajat kielimallit suoriutuvat käytännössä monista tehtävistä, jotka vaativat ihmiseltä monivaiheista päättelyä. Nykyinen teknologia mahdollistaa tehtävien automatisoinnin tavalla, joka olisi ollut ennen mahdotonta tai erittäin kallista.


Ota yhteyttä ajoissa ja kerro projektistasi, niin keskustellaan aikataulusta ja katsotaan voisiko yhteistyö olla mahdollista.

Näin laajat kielimallit toimivat


Kaikki mallin käyttämä teksti koodataan numeroiksi. Koulutuksen eli lähdemateriaalin sovituksen aikana mallin parametrit säädetään. Nämä ovat mallin sisällä olevia painoja, jotka määrittävät todennäköisyysjakauman. Tekstiä generoitaessa malli laskee todennäköisyydet mahdollisille seuraaville tekstin osille, joista arpoo yhden ja toistaa prosessin.


💡 Laajat kielimallit eivät päättele


Nimestään huolimatta keinotekoisia neuroverkkoja ei ole tarkoitettu mallintamaan aivojen toimintaa. Ne ovat matemaattisia funktion approksimaattoreita, jotka sovittavat tilastollisia säännönmukaisuuksia lähdemateriaaliin. Päättelyltä näyttävä toiminta perustuu yksinkertaisesti vain siihen, että malli toistaa lähdemateriaalissa esiintyviä päättelyn kaltaisia rakenteita sen sijaan, että se noudattaisi loogisia sääntöjä.


Esimerkkejä päättelyn kaltaisista rakenteista:

Kysymys: Jos valo on pois päältä, onko huone pimeä?
Fakta: Valo on pois päältä.
Päättely: Kun valo on pois päältä, huone on pimeä.
Vastaus: Huone on pimeä.

Kysymys: Jos laite on irrotettu pistorasiasta, onko se päällä?
Fakta: Laite on irrotettu pistorasiasta.
Päättely: Kun laite on irrotettu pistorasiasta, se ei ole päällä.
Vastaus: Se ei ole päällä.

Kysymys: Jos ovi on lukossa, voiko sen avata?
Fakta: Ovi on lukossa.
Päättely: Kun ovi on lukossa, sitä ei voi avata.
Vastaus: Sitä ei voi avata.

Laajat kielimallit eivät ole mustia laatikoita


Niitä voi olla vaikea tulkita, mutta niiden sisäinen toiminta ei ole tuntematonta. Niiden toimintaa ohjaavat tilastolliset säännönmukaisuudet ennemmin kuin piilevä logiikka, joten niitä voidaan ymmärtää tilastollisella tasolla.


📉 Laajojen kielimallien luhistuminen


Nykyiset mallit ovat perustavanlaatuisesti rajoittuneita lähdemateriaalin takia, eivät laskentatehon. Niiden suorituskyky riippuu korkealaatuisesta, monipuolisesta, reaalimaailman lähdemateriaalista, joka on sekä rajallista että yhä enemmän saastunutta. Mallien luhistuminen on jo havaittavissa, mikä heijastaa taustalla olevan todennäköisyysjakauman heikentymistä.


Näin funktion approksimaattori toimii käytännössä


Lähdemateriaali:

// The key represents the x-coordinate, and the value represents the y-coordinate.

$source_material = [ 

    1 => 3,
    2 => 5.1,
    3 => 6.9,
    4 => 9.2,
    5 => 10.8
];

Esimerkki siitä miten lähdemateriaali sovitetaan malliin:

/*

This example uses linear regression because it is one of the simplest machine
learning models that fits inputs and outputs rather than applying fixed rules.

*/

function fitter(array $source_material): array {

    $x = array_keys($source_material);
    $y = array_values($source_material);

    $n = count($x);
    $average_x = array_sum($x) / $n;
    $average_y = array_sum($y) / $n;

    $numerator = 0;
    $denominator = 0;

    for($i = 0; $i < $n; $i++){

        // Add how changes in x relate to changes in y (covariance)
        $numerator += ($x[$i] - $average_x) * ($y[$i] - $average_y);

        // Measure how much x varies from its average (variance)
        $denominator += ($x[$i] - $average_x) ** 2;
    }

    $slope = $numerator / $denominator;
    $offset = $average_y - $slope * $average_x;

    return [$slope, $offset];
}

Esimerkki siitä miten malli ajetaan:

/*

This binds model parameters to a model, creating a function that
behaves like hard-coded logic but is derived from source material.

*/

function function_approximator(callable $model, array $parameters): callable {

    return function(float $input) use ($model, $parameters){

        [$slope, $offset] = $parameters;
    
        return $model($input, $slope, $offset);
    };
}

function model(float $input, float $slope, float $offset): float {

    return $slope * $input + $offset;
}

$parameters = fitter($source_material);
$fitted_function = function_approximator('model', $parameters);

// Make a prediction

$input = 4;
$output = $fitted_function($input);

/*

Because the source material does not follow an exact rule, the model finds the best-fitting
approximation, so the result may differ slightly from what an exact rule would produce.

*/

echo $output; // 8.97

Liitä tämän sivun linkki käyttämääsi tekoälypalveluun ja kysy miten koodi toimii, laajat kielimallit ovat siinä erittäin hyviä.