AMKoodari 4: Saammeko suositella? Tekoäly ehdottaa koodauskursseja.

Tässä jaksossa AMKoodari-hankkeen projektipäällikkö Jenni Koponen keskustelee lehtori Vesa Ollikaisen, Tieto- ja viestintätekniikan tutkinto-ohjelmasta tekoälysuosittelijoista ja siitä, miten suosittelua käytettiin AMKoodari-hankkeessa
Podcast tiedostona: Lataa omalle laitteellesi (46.1MB)
MetroPodian RSS-syöte: RSS
————————————————————————————————————————
Puhuja 1 Jenni Koponen
Puhuja 2 Vesa Ollikainen
[äänite alkaa]
Haastattelija 1 [00:00:11]: AMKoodari, koulutuksella koodaavampaa Suomea. Tervetuloa tähän viiden suomalaisen ammattikorkeakoulun yhteisen AMKoodari-hankkeen podcast-sarjaan. Tässä podcast-sarjassa keskustelemme hankkeen tuloksista ja opeista. AMkoodari-hanke on vastannut suomalaiseen koodaripulaan kokoamalla yhteen viiden suomalaisen ammattikorkeakoulun opintotarjontaa ja tarjoamalla ilmaista koodarikoulutusta kaikille koodaamisesta kiinnostuneille. Nimeni on Jenni Koponen ja toimin tämän AMKoodari-hankkeen projektipäällikkönä. Tässä hankkeen toteuttajia ovat olleet Haaga-Helia, Hämeen ammattikorkeakoulu, Laurea, Metropolia ja Kaakkois-Suomen ammattikorkeakoulu. AMKoodari-hankkeen on rahoittanut opetus- ja kulttuuriministeriö. Tervetuloa kaikille mukaan. Tässä jaksossa meillä on tosi mielenkiintoinen aihe. Keskustelemme tekoälysuosittelijoista ja siitä, miten suosittelua käytettiin tässä AMKoodari-hankkeessa. Kanssani studiossa tänään lehtori Vesa Ollikainen Metropolian tieto- ja viestintätekniikan tutkinto-ohjelmasta. Tervetuloa Vesa.
Puhuja 1 [00:01:22]: Kiitos, terve.
Haastattelija 1 [00:01:23]: Kiva kun pääsit mukaan kertomaan vähän työstäsi. Kerro alkuun, mikä roolisi on ollut tässä hankkeessa?
Puhuja 1 [00:01:31]: Roolini on ollut opettajan rooli. Opetan Metropoliassa ohjelmistotuotannon pääaineessa datan käsittelyyn ja tiedon hallintaan ja koneoppimiseen liittyviä juttuja. Olen ollut vähän niin kuin sisältöasiantuntijaroolissa tässä.
Haastattelija 1 [00:01:48]: Oikein hyvä. Tässä jaksossa puhumme tekoälysuosittelijoista ja siitä, että miten niitä on käytetty tässä AMKoodari-hankkeessa. Jokaisella on varmaan kokemusta näistä tekoälysuosittelijoista, esimerkiksi verkkokaupoissa tai suoratoistopalveluissa tai sosiaalisessa mediassa. Tämä suositusten laatu varmasti voi vaihdella tosi paljon. Tässä AMKoodari-hankkeessa on tarjottu maksuttomia koodauskursseja kaikille kiinnostuneille ja siinäkin on tarvittu suosittelua siihen, että miten opiskelija löytää hänelle sopivat koodauskurssit. Eräänä ratkaisuna tässä onkin käytetty tekoälyä hyödyntävää sovellusta. Kohta pääsemme jäljille siitä, että miten tämä AMKoodari-sovellus suosittelee kursseja ja mitä haasteita löytyy. Olen ymmärtäny, että se ei ole ihan suoraviivaista kuitenkaan. Puhumme kylmäkäynnistysongelmasta ja siitä, että miten se ratkaistaan, mitä se ikinä tarkoittaakaan. Aloitetaan vaikka siitä, että miten tässä AMKoodarissa opiskelija pystyi etsimään ja löytämään itselleen sopivia koodauskursseja?
Puhuja 1 [00:03:10]: Varmaan ihan ensimmäinen keino, mitä jokainen opiskelijaksi aikova kokeilee, niin on mennä AMKoodarin verkkosivuille ja selata sieltä tarjotaan, että minkälaisia kursseja on tarjolla ja minkälaisia nämä kurssikuvaukset on, niin sitä kautta yrittää saada käsityksen siitä sisällöstä. Sitten on erilaisia neuvontapalveluita. Tässä on ehkä vähän sellainen haaste, että näitä teknologioita on aika paljon. On erilaisia ohjelmointikieliä ja ympäristöjä ja niihin liittyviä tekniikoita ja ne ei välttämättä sano kauhean paljon opiskelijalle, joka etsii sieltä kursseja. Sitten on vielä sellainen haaste, että monella on jotain aikaisempaa osaamista tästä alueesta ja sitten voi olla vähän vaikea sanoittaa sitä aikasempaa osaamista ja ikään kuin mätsätä sitä näihin tarjolla oleviin kursseihin.
Haastattelija 1 [00:04:02]: Ihan varmasti. Näitä opiskelijoita tuntui olevankin hyvin erilaisilla taustoilla. Opiskelija tarvitsee siihen apua, että miten hän sieltä selviää näiden kaikkien mahdollisuuksien seassa. Kurssivalintojen tueksihan kehitettiin AMKoodari-sovellus. Mikä se on ja miten se on auttanut löytämään sopivia kursseja?
Puhuja 1 [00:04:29]: Se AMKoodari-sovellus on mobiilisovellus, jonka kautta voi perehtyä AMKoodari-tarjontaan. Sitä voi periaatteessa käyttää ihan siihen, että selailee tätä opetustarjontaa ja katselee, että minkälaisia kursseja on olemassa. Yksi idea, mihin sitä pystyisi kuitenkin käyttämään, oli se, että sen sovelluksen kautta voisi saada henkilökohtaisia suosituksia siitä, että mitkä olisi sellaisia kursseja, jotka juuri minun tarpeeseeni tässä soveltuisi. Eli siinä on tällainen tuotesuosittelija niin sanotusti, tässä tapauksessa kurssisuosittelija, sisäänrakennettuna.
Haastattelija 1 [00:05:08]: Miten se suosittelija toimii? Mihin ne suositukset oikein perustuu? Se tekoäly ei kuitenkaan vielä ole ehkä ihan samalla tasolla kuin keskusteleva ihminen, niin mihin se perustelee nämä suosittelut?
Puhuja 1 [00:05:25]: Oikeastaan kaikissa tällaisissa suosittelijoissa on pohjimmiltaan kysymys siitä, että on käyttäjiä ja tuotteita ja sitten täytyy nämä käyttäjät ja tuottajat jollain tavalla saada löytämään toisensa. Käyttäjät ovat tietysti niitä henkilöitä, jotka haluavat näitä suosituksia, mutta sitten nämä tuotteet voivat olla periaatteessa mitä tahansa. Ne voivat olla vaikka leffoja jossain suoratoistopalvelussa tai sitten niin kuin tässä AMKoodarin tapauksessa, niin ne ovat näitä kursseja, joita opiskelija haluaa löytää. Sitten ne voisivat olla periaatteessa jopa toisia käyttäjiä, jos meillä olisi joku deittisovellus vaikka kyseessä. Nämä pitäisi saada sitten ikään kuin löytämään toisensa. Tässä tarvitaan dataa, oppimista, että tämä homma onnistuu. Periaatteessa tätä dataa voi kertyä sillä tavalla, että kerätään tietoa, että kuka käyttää mitäkin tuotteita. Jos ajatellaan vaikka leffojen suosittelua, niin se voi olla ihan sitä, että kuka käyttäjä katsoo mitäkin elokuvia. Toisaalta se voi perustua palautteisiin tai arvosteluihin, että montako tähteä olet antanut elokuvalle, niin heti saadaan vähän tarkempaa palautetta siitä. Sitten se voi toisaalta perustua näiden käyttäjien ja tuotteiden ominaisuuksiin. Jos me tunnetaan se käyttäjä jotenkin, vaikka kyselemällä käyttäjältä, että minkälaisia mieltymyksiä hänellä on ja toisaalta, jos tunnemme ne tuotteet, että voimme ikään kuin koodata näiden tuotteiden ominaisuudet, niin voi myös siihen perustua se suosittelu.
Haastattelija 1 [00:07:02]: Tämä on varmaan sitä, mitä sanotaan yhteistoiminnalliseksi ja sisältöpohjaiseksi suositteluksi, olenko oikeassa?
Puhuja 1 [00:07:12]: Aivan oikeassa kyllä. Tässä on kaksi lähtökohtaa, eli voidaan tehdä toisaalta yhteistoiminnallista suosittelua ja toisaalta sisältöpohjaista suosittelua. Tämä yhteistoiminnallinen suosittelu, niin siinä se data kertyy siitä, että mitä muut käyttäjät tekevät. Jos taas ajatellaan sitä leffaesimerkkiä, niin silloin kerätään tietoa muiden ihmisten katselusta ja muiden ihmisten palautteista, jommastakummasta, ja sitten siihen perustetaan nämä tuotesuositukset. Jos ajattelemme tällaista yhteistoiminnallista suosittelua, niin siinäkin on vielä kaksi alaryhmää. Se voidaan tehdä käyttäjäpohjaisesti tai tuotepohjaisesti. Nyt tällainen käyttäjäpohjainen yhteistoiminnallinen suosittelu tarkoittaisi sitä, että yritetään etsiä sellaiset käyttäjät, jotka ovat mahdollisimman samankaltaisia kuin sinä itse. Eli sellaisia käyttäjiä, jotka ovat antaneet vaikka nyt tässä leffojen suosittelun tapauksessa samoille elokuville samankaltaisia arvioita. Sitten niistä samankaltaisista käyttäjistä, kun ne ovat löytyneet, niin sitten voidaan suositella sellaisia tuotteita, joita sinä itse et ole vielä käyttänyt tai nähnyt, mutta joille nämä toiset käyttäjät ovat antaneet hyviä arvioita. Eli perustetaan se siihen, että löydetään ehkä sellaisia käyttäjiä, jotka ovat samanlaisia kuin sinä itse ja ajatellaan, että sinä ehkä tykkäät niistä samoista asioista sitten kuin nämä samankaltaiset käyttäjät. Tämän voi tehdä myös tuotepohjaisesti. Se toinen lähestymistapa, tuotepohjainen lähestymistapa on se, että etsitäänkin sellaisia tuotteita, joita käyttäjät ovat arvostelleet mahdollisimman samankaltaisesti kuin sitä tuotetta, jolle arvostelua ollaan ikään kuin ennustamassa. Eli silloin saadaan ennuste siitä, että millaisen arvion sinä ehkä olisit antanut tälle tuotteelle ja se perustuu näiden muiden käyttäjien antamiin arvosteluihin. Nämä ovat ne kaksi pääryhmää tässä yhteistoiminnallisessa suosittelussa. Sitten vielä toinen ryhmä on sisältöpohjaiset suosittelijat. Siinä onkin sitten erilainen lähestymistapa. Nyt ei katsotakaan niin paljon sitä, että mitä muut käyttäjät ovat olleet mieltä näistä tuotteista, vaan lähdetään koodaamaan tämän tuotteen ominaisuuksia, sen ikään kuin sisällönpiirteitä, että minkälaisiin tarpeisiin se tuote sopii ja toisaalta sitten käyttäjältä jollain tavalla koitetaan onkia tai kerätä tieto siitä, että minkälaisia asioita tämä käyttäjä arvostelee. Toisin kuin tämä yhteistoiminnallinen suosittelu, niin ei tarvitse sellaista datamassaa vastaavalla tavalla tuekseen. Mut sitten on sellaista käsityötä vähän enemmän, että saadaan se suosittelija toimimaan.
Haastattelija 1 [00:10:12]: Tämä on ehkä monimutkaisempaa, mitä käyttäjä suoraan ajattelisi, kun tähän itse törmää ja varmaan tässä koulutuskontekstissa tämä ei vielä ole niin tuttua, tällainen suosittelu, mutta miten tässä AMKoodari-kurssien tapauksessa, minkälainen suosittelijalähestymistapa tässä oli?
Puhuja 1 [00:10:32]: Tämä on mielenkiintoinen ongelma, koska heti äkkiseltään voisi ajatella, että tässä toimisi kumpi vain, että voisimme lähteä yhteistoiminnallisesti tai sisältöpohjaisesti. Mutta jos lähtisimme yhteistoiminnallisen suosittelun polulle, niin se tarkoittaisi sitä, että pitäisi odottaa, että toiset käyttäjät ensin käy niitä kursseja ja ehkä sitten antaa palautetta niistä kursseista. Sitten siinä meneekin jo aika paljon aikaa. Siinä on hidas palautesykli, voi useita kuukausia vierähtää ja sitten sitä dataakin tulee vähän tipoittain. Eli ei oikein pääse vauhtiin kunnolla vielä tuo suosittelija sellaisessa tilanteessa. Sitten kyllä tässä aika paljon kallistuivat ratkaisut sinne sisältöpohjaisen suosittelijan puolelle, koska halusimme välttää tällainen kylmäkäynnistysongelma niin kuin puhutaan.
Haastattelija 1 [00:11:27]: Nyt pääsemme tähän slangiin sopivasti sitten, että puhutaan usein kuplista ja kylmäkäynnistysongelmista, niin niistä vielä tarkemmin. Mitä ne tarkoittavat?
Puhuja 1 [00:11:40]: Aina kun tällainen suosittelija rakennetaan, niin siinä on kaikenlaisia käynnistysvaikeuksia ja sitten voidaan myös käytön aikanakin huomata, että se ei toimi ihan optimaalisella tavalla, eli ne ovat tällaisia tunnettuja suosittelujärjestelmien ongelmia. Ensin mainitsit kuplan. Näitä kutsutaan myös monesti kaikukammioiksi. Siinä on se ajatus, että helposti se oma aikasempi käytös ja ne aikasemmat valinnat alkavat ikään kuin monistua siinä sillä tavalla, että sitten nämä suosituksetkin kohdistuvat samankaltaisiin tuotteisiin. Ajatellaan vaikka netin suoratoistopalvelua, että jos tulet vaikka katsoneeksi muutaman kauhuelokuvan, niin sitten saat ehkä pelkistä kauhuleffoista sen jälkeen suosituksia, eikä oikein pääse ainakaan niiden suositusten kautta kurkistamaan, että mitä siellä ulkopuolella olisi. Tämä on yksi sellainen haaste. Sitten mainitsit kylmäkäynnistysongelman. Se on myös tärkeä haaste. Tämä liittyy siihen, että kun meillä on uusi suosittelujärjestelmä, niin aluksi ei voi olla kovin paljon dataa olemassa siihen pohjaksi, ainakin jos meillä on tällainen yhteistoiminnallinen suosittelija. Jos ajatellaan vaikka leffojen suositteluja, niin siinäkin se kylmäkäynnistysongelma on, koska vielä ei ole kukaan antanut yhtään tähteä yhdellekään elokuvalle, jolloin ne suosituksetkin oikeastaan ovat arpapeliä aluksi. Siinä leffojen tapauksessa se ei ole niin iso ongelma, koska siitä ei ole kenellekään ehkä kovin mittavaa haittaa, jos heti ei toimi hyvin se suosittelija. Sitten vain tulee vähän huonompia vinkkejä, mitä voisi katsoa. Silloin todennäköisesti myös lievittyy aika nopeasti se ongelma sen vuoksi, että se palautesykli on nopea ja ei mene ehkä kuin joitain tunteja, niin alkaa tulla niitä tähtiarvosteluja ja sitten tarkentuu ja tarkentuu se suosittelijan toiminta koko ajan. Tällaisia tulee, kun meillä on uusi järjestelmä otettu käyttöön. Sitten ihan samalla tavalla, jos olisi vaikka uusi tuote, esimerkiksi uusi elokuva tai sitten AMKoodarin tapauksessa uusi kurssi tarjolla, niin siinä taas lähtisimme sen tuotteen osalta nollatilanteesta, eli kestäisi aika kauan ennen kuin saisimme ensimmäiset palautteet, jonka perusteella pääsisimme suosittelemaan. Sitten se on vielä käyttäjätasollakin tämä sama ongelma, että jos tulee uusi käyttäjä, joka ei ole vielä arvostellut mitään tai vaikka käynyt yhtään kurssia, niin emme saisi vielä kovin hyviä ennusteita, kun emme tunne sitä käyttäjää. Tämä on kylmäkäynnistysongelma. Sitten on vielä muitakin haasteita, mihin voi näiden suosittelijoiden kanssa törmätä. Esimerkiksi jos mieli muuttuu, tulee erilaisia trendejä, niin niistä ei välttämättä pysty kaikki suosittelujärjestelmät kovin nopeasti nappaamaan kiinni.
Haastattelija 1 [00:14:38]: Miten tämä kylmäkäynnistysongelma ihan konkreettisesti näkyi siinä AMKoodari-sovelluksessa?
Puhuja 1 [00:14:45]: Se oikeastaan näkyi siinä vaiheessa, kun siihen lähti miettimään, että mitkä olisi mahdollisia ratkaisuja. Koska juuri tällaiset yhteistoiminnalliset suosittelujärjestelmät lähtökohtaisesti eivät voi kauhean hyvin tässä toimia, koska on tämä kylmäkäynnistysongelma, että kestää kauan ennen kuin alkaa sitä palautetta tulemaan. Eli sitten siinä ohjelmiston toimittajalla aika nopeasti ajatus meni näihin sisältöpohjaisiin suosittelijoihin, missä sitten hyödynnetään sitä, että kurssit kuitenkin tunnetaan, että niistä voimme sitä sisältöä kertoa, että mitä asioita näissä on. Sitten toisaalta käyttäjistä pystymme vähän ikään kuin utelemaan tietoa. Oikeastaan sanoisin vastauksena tuohon kysymykseesi, että ongelma näyttäytyi sillä, että täytyi mennä näiden sisältöpohjaisten suosittelijoiden puolelle.
Haastattelija 1 [00:15:39]: Juuri näin, eli se ei ole ihan suoraviivaista vaikka näin maallikkona ajattelisi. Miten tätä voidaan lievittää, tätä kylmäkäynnistysongelmaa?
Puhuja 1 [00:15:50]: Lähestymistavan valinta on ensimmäinen. Sisältöpohjaisissa suosittelijoissa se on ikään kuin sisäänrakennettuna, että siinä on sellainen vaihe, missä pitää manuaalisesti kertoa näistä tuotteista ensin ja sitten käyttäjäkin pitäisi jollain tavalla oppia tuntemaan. Siinä on yksi ratkaisu sellainen, että kysyy käyttäjältä suoraan sitä, että minkälaisista asioista hän on kiinnostunut tai minkälaisia asioita hän jo ennalta osaa. Näin saadaan tarkentuva käyttäjäprofiili. Sitten näistä kursseista taas pystytään tunnistamaan näitä avainsanoja. Jos meillä on vaikka JavaScript -ohjelmoinnin kurssi, niin sitten voisi olla sellaiset avainsanat kuin web-ohjelmointi ja ohjelmointi. Sitten näille voidaan antaa erilaisia painoarvoja sillä tavalla, että esimerkiksi tämä web-ohjelmointi kuvaa vähän tarkemmin tämän JavaScript -kurssin sisältöä, niin sen painoarvoksi voi antaa vaikka nelosen siinä missä yleisemmälle ohjelmointitermille vaikkapa kakkosen. Tämä on näissä sisältöpohjaisissa suosittelijoissa se lähestymistapa, jolla pystytään tätä kylmäkäynnistysongelmaa kiertämään. Sitten jos meillä on yhteistoiminnallinen suosittelija, niin siihenkin on erilaisia mahdollisuuksia. Yksi tapa on olla tekemättä mitään. Voidaan tavallaan hyväksyä, että ensin tulee vähän huonompia suosituksia ja sitten ne paranevat siinä. Jos ne suositukset ovat sellaisia, että niiden perusteella ei tarvitse tehdä mitään isoja päätöksiä vaan ainoastaan miettiä, että katsonko tämän leffan vai en, niin siinä ei suurta vahinkoa tule vielä siinä kylmäkäynnistysvaiheessa. Yhteistoiminnallisessa suosittelijassakin voisi ajatella sitä, että käyttäjältä kysytään, jos ajatellaan vaikka leffojen suosittelua, niin kysytään, mitä leffoja hän on jo nähnyt etukäteen ja pyydetään antamaan niille tähtiarvioita, niin saadaan udeltua sitä opetusdataa siihen, jonka avulla se käyttäjä opitaan tuntemaan. Sitten on vielä uuden käyttäjän tapauksessa sellainenkin mahdollisuus, mikä ei tietysti aina sovellu, mutta jos on sitä profiilitietoa jostain muualta olemassa, esimerkiks jostain somepalvelusta, niin periaatteessahan sitä voisi hyödyntää uuden palvelun käyttöönotossa.
Haastattelija 1 [00:18:16]: Tässä on monia mahdollisuuksia ja monia haasteitakin varmaan vielä. Miten konkreettisesti nyt AMKoodari-hankkeessa ratkaistiin tämä kylmäkäynnistysongelma?
Puhuja 1 [00:18:31]: Tämä sovelluksen tuottaja, [?? 00:18:33] -niminen yritys ratkaisi sen sillä tavalla, että he tekivät sellaisen avainsanataulukon, missä ajatus oli, että me opettajat pisteytimme näitä avainsanoja. Eli kävimme kaikkien kurssien sisällöt läpi ja annoimme avainsanoja painoja näille, jolloin tuli sitten tämä tuotepuoli kuvattua, että millaisia nämä sisällöt ovat. Sitten tämä yritys teki siihen mobiilisovellukseen erilaisia kyselyitä ja testejä, joiden avulla kartotetaan sitä, että millaisia ovat käyttäjien kiinnostukset ja mitä asioita he osaavat jo valmiiksi. Tällä tavalla saatiin käyttäjälle rakentumaan henkilökohtainen profiili, jota pystyttiin yhdistämään näihin avainsanoihin ja tätä kautta saatiin näitä suosituksia aikaiseksi.
Haastattelija 1 [00:19:27]: Kuulostaa vielä siltä, että tässä tarvitaan sekä ihmistä että tekoälyä, että tässä päästään eteenpäin. Mutta tässä on AMKoodari-hankkeessa ollut yhtenä tavoitteena juuri tämä tekoälyn kehittäminen ja jostainhan täytyy lähteä alkuun ja ruveta testaamaan, että miten ne konkreettisesti tällaisessa koulutuskontekstissa toimii. Tästä varmaan päästään sitten eteenpäin. Kiitos, Vesa, sinulle kun tulit mukaan tähän AMKoodari-hankkeen podcast-sarjaan ja me jatkamme tekoälyn kehittämistä.
Puhuja 1 [00:19:58]: Kiitos.
[äänite päättyy]
Ei kommentteja