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.