Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointiputka: Ennakkokysymys Ohjelmoi tekoälyllä -kilpailusta

mpni [10.05.2023 00:16:47]

#

Hieno kilpailu tulossa! Nykyään minulla menee nuo suomenkieliset terminologiat hieman sekaisin. Onko tarkoituksena koodata tekoälyllä jokin botti tai vastaavaa, vai onko aihepiiri laveampi, kuten ohjelmoi koneoppimismalli? Tuosta kuvasta sain vain ajatusta koneoppimisen suuntaan. Jos jotkut eivät vielä tienneet, niin Kagglesta löytyy lukuisia ongelmia, joita voi ratkoa koneoppimisen keinoin. Olisi mahtavaa, jos joku onnistuisi väläyttämään ja antamaan uusia ideoita ongelmiin, jotka ovat haasteellisia ratkoa. Itse parhaillaan työskentelen puheentunnistuksen parissa ja pyrin tunnistamaan puheen akustisten piirteiden (ei sanastollisten) avulla Alzheimer-potilaita! Työ tuntuu välillä tuskalliselta, mutta joka päivä oppii jotain uutta, mikä tekee tehtävästä mielenkiintoisen.

Aikaisemmin on ollut haasteellista saada ongelmakohtaisia datoja käsiteltäväksi ja nykyisen Suomen lainsäädännön mukaan kaikki tieto pitää tarkoin anonymisoida (erityisesti potilastiedot). Edes potilaiden ikä-/sukupuolitietoja ei saa julkisesti levittää. Henkilökohtaiseen käyttöönkin lupaprosessi on valtava ja saattaa viedä useasta kuukaudesta jopa vuoteen (tämä on tutkijan kohdalta ongelmallinen tilanne, koska apuraha juoksee myös noina "hyödyttöminä" kuukausina); datan käyttöä ja varastointia valvoo Findata (sairaala olosuhteissa tehtyjä kokeita valvoo paikallisen sairaanhoidon tutkimuseettien toimikunta tai neuvosto, miten onkaan). Onneksi monissa maissa on erilaiset lainsäädännöt ja on olemassa edes jotain avoimia "datopankkeja", joita tarjottu julkisesti saataville. Tämä tarjoaa harrastelijoille/aiheesta kiinnostuneille tutkijoille heti huomattavasti enemmän vapauksia.

Tästä voitaisiin edelleen spekuloida, että pitäisikö anonymiteetin suojaa hieman laventaa Suomessa tai apurahaprosessia helpottaa huomioimaan nämä edellä mainitut ongelmalliset seikat (tutkija tarvitsee kuitenkin elantonsa jokaiselta kuukaudelta), mutta nyt taitaa mennä jo vahvasti offtopicin puolelle..

Metabolix [10.05.2023 07:18:47]

#

Kiinnostavia pohdintoja. Kun nyt nostit esiin terveydenhuollolliset asiat, niin hyvä kohde tekoälylle olisi siellä ihan käyttäjärajapinnassa tiedon louhinta tekstistä tai älykäs hakutoiminto. Nytkin on moni kansalainen lehtien mielipideosastoilla valittanut, miksi ammattilaisten pitää selailla Kanta-palvelusta tekstejä. Jos puolueeton tekoäly voisi nämä "lukea" ja ammattilainen voisi siltä kysyä kaipaamaansa tiedonmurua tai linkkiä suoraan oikeaan tekstiin, säästyisi aikaa ja samalla tietosuoja paranisi: saataisiin lokitieto, mitä on kysytty ja mikä oli vastaus, ja kenenkään ihmisen ei tarvitsisi selaamalla etsiä tietoa ja nähdä tarpeettomia asioita.

Terveysasioissa tulee usein vastuukysymys ihmeellisellä tavalla rajoitteeksi, kun tekoälyltä vaaditaan virheetöntä toimintaa. Silti samassa tehtävässä ihmiseltä voi kelvata virheen selitykseksi, että tekstiä oli liikaa eikä oikea tieto löytynyt sieltä järkevässä ajassa.

Kilpailun tarkempaa aihetta ei tietenkään paljasteta tarkemmin ennen kisan alkua, ettei tule siinä mielessä etumatkaa kellekään.

TapaniS [10.05.2023 08:32:24]

#

No onpas kiva, kun on jotain, mitä odotella! Ei saa laittaa liian vaikeaa kisaa, että vähän heikommillakin taidoilla voi sitten osallistua! Ehkä viimein himoittu putkakisan voitto on saavutettavissa? (Oma paras sijoitus on toistaiseksi 2. sija Sika -korttipelikisassa.)
-----------
Toivottavasti kisa jatkuu heinäkuun puolelle. Itselläni on ainakin kesäloma heinäkuussa ja olisi mahdollisuus tehdä jotakin koodia sitten.

PetriKeckman [26.05.2023 16:16:53]

#

EDIT: On muuten Mastermind pelin nappuloiden värit tuossa tekoälykilpailun logossa - ettei vain tekoäly koskisi Mastermind peliä? :) Alanpa siis jo harjoittelun vuoksi ohjelmoimaan.

Kannatti tulla pitkästä aikaa Ohjelmointiputkaan. Jos vaatimattomat ohjelmointitaitoni riittävät, niin aion osallistua. Toisaalla puhuttiinkin jo ChatGPT:stä. Mietin vain, että ei voitane kieltää sen hyväksikäyttöä kilpailussa, sillä mitenpä sitä tarkkailtaisiin? Mutta olisiko sittenkään reilua? Toisaalta kaikillahan on tasapuolisesti mahdollisuus sitä käyttää. Eikä ChatGPT yleensä anna täydellisiä valmiita vastauksia ja harvoin edes toimivia.

Kävin äsken tällaisen keskustelun:

Voisitko antaa minulle pelipuu algoritmin Pascal kielellä toteutettuna?
-
ChatGTP vastasi:
Tässä on yksinkertainen esimerkki pelipuun algoritmin toteutuksesta Pascal-kielellä. Tämä esimerkki olettaa, että peliä pelataan kahden pelaajan välillä, ja jokainen pelaaja yrittää maksimoida omaa pistemääräänsä.

program MinimaxExample;

const
  MAX_DEPTH = 3;

type
  TGameState = array[1..3, 1..3] of Integer;

function IsTerminalState(state: TGameState): Boolean;
begin
  // Tarkista, onko peli päättynyt
  // Esimerkiksi, jos jompikumpi pelaajista on voittanut tai pelilauta on täynnä
end;

function GetPossibleMoves(state: TGameState): TArray<TGameState>;
begin
  // Palauta kaikki mahdolliset siirrot nykyisestä pelitilasta
end;

function EvaluateState(state: TGameState): Integer;
begin
  // Arvioi pelitilanne ja palauta pistemäärä
end;

function MaxValue(state: TGameState; depth: Integer): Integer;
var
  bestValue: Integer;
  moves: TArray<TGameState>;
  childState: TGameState;
  value: Integer;
begin
  if IsTerminalState(state) or (depth = MAX_DEPTH) then
  begin
    Result := EvaluateState(state);
    Exit;
  end;

  bestValue := Integer.MinValue;
  moves := GetPossibleMoves(state);

  for childState in moves do
  begin
    value := MinValue(childState, depth + 1);
    if value > bestValue then
      bestValue := value;
  end;

  Result := bestValue;
end;

function MinValue(state: TGameState; depth: Integer): Integer;
var
  bestValue: Integer;
  moves: TArray<TGameState>;
  childState: TGameState;
  value: Integer;
begin
  if IsTerminalState(state) or (depth = MAX_DEPTH) then
  begin
    Result := EvaluateState(state);
    Exit;
  end;

  bestValue := Integer.MaxValue;
  moves := GetPossibleMoves(state);

  for childState in moves do
  begin
    value := MaxValue(childState, depth + 1);
    if value < bestValue then
      bestValue := value;
  end;

  Result := bestValue;
end;

function FindBestMove(state: TGameState): TGameState;
var
  bestValue: Integer;
  bestMove: TGameState;
  moves: TArray<TGameState>;
  childState: TGameState;
  value: Integer;
begin
  bestValue := Integer.MinValue;
  moves := GetPossibleMoves(state);

  for childState in moves do
  begin
    value := MinValue(childState, 0);
    if value > bestValue then
    begin
      bestValue := value;
      bestMove := childState;
    end;
  end;

  Result := bestMove;
end;

var
  gameState: TGameState;
  bestMove: TGameState;
begin
  // Alusta pelitilanne

  // Etsi paras siirto
  bestMove := FindBestMove(gameState);

  // Tulosta paras siirto
  // ...
end.

Grez [26.05.2023 18:02:18]

#

PetriKeckman kirjoitti:

Mietin vain, että ei voitane kieltää sen hyväksikäyttöä kilpailussa, sillä mitenpä sitä tarkkailtaisiin?

Niin en tiedä huomasitko että kilpailun teema oli nimenomaan "Ohjelmoi tekoälyllä" - ei "ohjelmoi tekoäly" tms.

PetriKeckman [26.05.2023 18:26:16]

#

Grez kirjoitti:

PetriKeckman kirjoitti:

Mietin vain, että ei voitane kieltää sen hyväksikäyttöä kilpailussa, sillä mitenpä sitä tarkkailtaisiin?

Niin en tiedä huomasitko että kilpailun teema oli nimenomaan "Ohjelmoi tekoälyllä" - ei "ohjelmoi tekoäly" tms.

HEH! En tosiaan huomannut! Eli silloinhan tietysti saa...ohjelmoida tekoälyllä!

Metabolix [26.05.2023 20:56:15]

#

PetriKeckman kirjoitti:

On muuten Mastermind pelin nappuloiden värit tuossa tekoälykilpailun logossa - ettei vain tekoäly koskisi Mastermind peliä?

Saattaa koskeakin tai sitten ei. ;) Varaslähtönä nyt viikkoa ennakkoon voin kertoa, että tutkimalla kuvaa hieman syvemmin saattaa löytää vielä pienen lisävihjeen aiheesta – mutta eihän silti paljasteta sitä tässä, kiitos!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta