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..
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.
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.
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.
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.
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ä!
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!
Aihe on jo aika vanha, joten et voi enää vastata siihen.