Tagged: etiikka

Googlen toimintaperiaatteet eettisille algoritmeille

Googlen toimitusjohtaja Sundar Pichai kirjoitti kesäkuussa 2018 blogipostauksen Googlen eettisistä algoritmiperiaatteista. Tiivistän tässä sen ydinkohdat suomeksi.

Googlen tavoitteet tekoälysovelluksille

Kehittäessään tekoälysovelluksia Google pyrkii ottamaan huomioon seuraavat tavoitteet.

1. Ole sosiaalisesti hyödyllinen.

Uusi teknologia koskettaa yhä enemmän yhteiskuntaa kokonaisuutena. Tekoälyteknologian vaikutust tuntuu monilla eri aloilla, esimerkkeinä terveydenhuolto, turvallisuus, energia, kuljetus, teollisuus ja viihde. Googlen näkemys on, että kokonaishyödyt näillä aloilla ylittävät huomattavasti ennakoitavissa olevat riskit ja haitat. Google pyrkii tekemään laadukkaan ja täsmällisen tiedon saataville samalla kunnioitaen eri maiden kulttuurisia, sosiaalisia ja oikeudellisia normeja.

2. Vältä epäreilun puolueellisuuden luontia tai vahvistamista.

AI-algoritmit ja data voivat heijastaa, vahvistaa tai vähentää kohtuuttomia ennakkoluuloja. Google pyrkii välttämään epäoikeudenmukaisia ​​vaikutuksia ihmisiin, erityisesti liittyen arkaluonteisiin ominaisuuksiin, kuten rotuun, etniseen alkuperään, sukupuoleen, kansalaisuuteen, tuloihin, seksuaaliseen suuntautumiseen, ja poliittiseen tai uskonnolliseen vakaumukseen.

3. Rakenna ja testaa turvallisuutta.

Google kehittää ja soveltaa vahvoja turvallisuus- ja turvallisuuskäytäntöjä, jotta vältytään tahattomilta vahingoilta AI-sovelluksissa. Google suunnittelee tekoälyjärjestelmät uusimman turvallisuustutkimuksen parhaiden käytäntöjen mukaisesti. Tarvittaessa AI-tekniikoita testataan kontrolloiduissa ympäristöissä ja niiden toimintaa seurataan käyttöönoton jälkeen.

4. Ole vastuullinen ihmisille.

Google suunnittelee AI-järjestelmiä, jotka tarjoavat käyttäjille mahdollisuuden antaa palautetta, nähdä algoritmin valintoihin liittyviä selityksiä ja valittaa mahdollisista epäkohdista. Googlen AI-teknologia on ihmiskeskeistä ja antaa ihmisille mahdollisuuden vaikuttaa.

5. Sisällytä tietosuojasuunnitteluperiaatteet.

Google yhdistää tietosuojaperiaatteet AI-teknologioiden kehittämiseen ja käyttöön. Käyttäjiä tiedotetaan heidän tietojensa käytöstä ja siihen pyydetään suostumus. Lisäksi Google kehittää yksityisyyden suojaa tukevia ohjelmistoarkkitehtuureja, jotka tukevat avoimuuden periaatetta ja mahdollistavat tiedon käytön valvonnan.

6. Ylläpidä korkeatasoista tieteellistä huippuosaamista.

Teknologinen innovaatio perustuu tieteelliseen menetelmään ja avoimen tutkimuksen sekä yhteistyön periaatteisiin. AI-työkalujen avulla on mahdollista kehittää tieteellistä tutkimusta kriittisillä aloilla, kuten biologia, kemia, lääketiede ja ympäristötieteet. Google pyrkii investoimaan korkeatasoiseen tieteelliseen huippuosaamiseen.

Lisäksi Google tekee yhteistyötä eri sidosryhmien kanssa tukeakseen huippututkimusta ja kehittääkseen tieteellisesti päteviä ​​lähestymistapoja. Google lisää tekoälytietoisuutta julkaisemalla opetusmateriaaleja, parhaita käytäntöjä ja tutkimustietoa, joiden avulla eri toimijat voivat kehittää hyödyllisiä AI-sovelluksia.

7. Käyttötarkoituksia, jotka noudattavat näitä periaatteita.

Monilla tekniikoilla on useita käyttötarkoituksia. Tekoälysovellusten kehittämisessä on tärkeää mieltää ja ymmärtää sen mahdolliset käyttötarkoitukset, mukaanlukien mahdollinen väärinkäyttö. Kehittäessään tekoälysovelluksia Google pyrkii arvioimaan haitallisen käytön riskiä seuraavien kriteereiden pohjalta:

  • Ensisijainen tarkoitus ja käyttö: mikä on teknologian tai sovelluksen ensisijainen tarkoitus ja todennäköinen käyttö? Miten se soveltuu mahdolliseen haitalliseen käyttöön?
  • Ainutlaatuisuus: onko kehitetty teknologia ainutlaatuinen tai yleisesti saatavilla? Onko sen jakelua mahdollista rajoittaa?
  • Mittakaava: onko kehitetyllä teknologialla mahdollisesti kriittinen vaikutus? Millä tavalla?
  • Googlen osallistumisen luonne: tarjoaako Google yleiskäyttöisiä työkaluja, integrointeja vai mukautettuja ratkaisuja?

Musta lista

Google ei aio kehittää teknologioita, jotka täyttävät seuraavat tuntomerkit:

  • Teknologiat, jotka aiheuttavat tai todennäköisesti aiheuttavat yleistä haittaa. Jos on olemassa merkittäviä haittoja, Google tekee kehitystyötä ainoastaan mikäli odotetut hyödyt ovat huomattavasti suurempia kuin riskit.
  • Aseet tai muut teknologiat, joiden pääasiallinen tarkoitus on aiheuttaa ihmisten loukkaantuminen tai vahingoittaminen.
  • Teknologiat, jotka keräävät tai käyttävät tietoa tavalla, joka rikkoo kansainvälisesti hyväksyttyjä normeja.
  • Teknologiat, joiden tarkoitus on ristiriidassa kansainvälisen oikeuden ja ihmisoikeuksien periaatteiden kanssa.

Vaikka Google ei kehitä tekoälyä aseellisiin tarkoituksiin, se tekee yhteistyötä hallitusten ja armeijan kanssa monilla muilla aloilla. Näihin kuuluvat kyberrikollisuus, koulutus, sotilasrekrytointi, veteraanien terveydenhuolto ja pelastustoimi.

Tekoälyn vaikutusten huomiointi pitkällä aikavälillä

Googlen tavoitteena on olla mukana algoritmien eettisyyttä edistävässä toiminnassa pitkällä aikavälillä. AI-teknologioiden kehittyessä Google pyrkii tekemään poikkitieteellistä yhteistyötä eri sidosryhmien kanssa tukeakseen eettisten periaatteiden huomioimista tekoälyteknologian kehityksessä ja soveltamisessa. Liiketoimintanäkökulmasta Google on valmis tekemään lyhyen tähtäimen kompromisseja toimiakseen eettisten arvojen mukaisesti.

9 eettistä ongelmaa keinoälyssä

Keinoälyssä on kyse muustakin kuin teknologisista edistysaskeleista. Nykyisin tunnustetaan laajalti, että keinoälyjärjestelmiin liittyy keskeisesti inhimillisten arvojen ylläpitäminen ja riskienhallinta. Teknologiayritykset, kuten Googlen emoyhtiö Alphabet, Amazon, Facebook, IBM, Nokia ja Microsoft, sekä useat tieteen ja teknologian maailmassa tunnetut mielipidevaikuttajat, kuten Stephen Hawking, Elon Musk ja Bill Gates uskovat, että nyt on paras aika keskustella paitsi keinoälyn mahdollisuuksista, myös sen varjopuolista ja potentiaalisista riskeistä.

Tämän vuoksi on olennaista käydä läpi eettisiä ja ajankohtaisia kysymyksiä keinoälyyn liittyen. Tässä blogiartikkelissa esitetään yhdeksän keinoälyn yhteiskunnallista riskiä.

  1. Työttömyys. Mitä tapahtuu työpaikkojen loppuessa?

Yleisenä trendinä on, että automaatio sysää ihmisiä pois suorittavan tason teollisista töistä kohti korkeamman jalostusarvon työtehtäviä. Esimerkiksi kuljetusalalla on monia autonomisen ajamisen kokeiluja ympäri maailmaa, jotka saavat myös pohtimaan automaation eettistä puolta. Jos autonomisen ajamisen hyödyntämisen avulla pystytään radikaalista vähentämään liikenneonnettomuuksia taikka merenkulussa alusten uppoamisia inhimillisten virheiden seurauksena, ja tämän kustannus on ihmisten työpaikkojen menetys, voidaanko lopputulos tulkita pääasiallisesti eettiseksi?

Toisaalta työpaikkojen kohdalla kyse on myös ajankäytöstä. Onko työllä ollut liian keskeinen rooli ihmiskunnan historiassa? Automaatio ja keinoäly saattavatkin tarjota ihmisille mahdollisuuden löytää elämälleen muunlaisen tarkoituksen kuin työn. Tämän kysymyksen lisäksi Algoritmitutkimuksen tiimoilta on esitetty ajatuksia, että työpaikkojen korvaantuminen on tilapäinen ongelma, joka on toistunut historian saatossa useita kertoja.

  1. Epätasa-arvo. Miten yhteiskunnassa jaetaan keinoälystä kertyvä varallisuus?

Nykyinen vallitseva talousjärjestelmä perustuu ihmisten ajan ja kykyjen panoksesta saatavaan korvaukseen, joka useimmiten arvotetaan tuntipalkan muodossa. Mutta tulevaisuudessa keinoälyä hyödyntämällä yritykset voivat merkittävästi vähentää riippuvuuttaan ihmistyövoimasta. Sen seurauksena yksilöt, joilla on eniten omistuksia keinoälyyn keskittyneissä yrityksissä, keräävät suurimmat voitot. Jakaantuuko maailma siten entistä enemmän voittajiin ja häviäjiin?

Taloudellisen epätasa-arvon kasvu on jo nyt nähtävissä esimerkiksi startup-yritysten perustajien kohdalla, jotka keräävät valtaosan luomastaan taloudellisesta hyödystä. Esimerkiksi vuonna 2014 suurin piirtein samaa liikevaihtoa kerryttivät USA:ssa kolme Detroitin suurinta yritystä kuin kolme suurinta Silicon Valleyn startupia – sillä erotuksella, että jälkimmäisissä yrityksissä työskenteli 10 kertaa vähemmän työntekijöitä.

Jos haluamme kehittää ”työnteon jälkeistä” yhteiskuntaa, miten luomme siihen soveltuvan reilun talousjärjestelmän? Tämä vanha marxilainen kysymys tuotantotekijöiden omistajuudesta ja niistä koituvan varallisuuden jakautumisesta nostaa siis päätään myös keinoälyn kontekstissa. Ehdotuksena on esitetty mm. universaalia perustuloa; toisaalta siihen liittyy useita ongelmia, kuten sosialististen talouksien toimettomuuden ongelma.

  1. Ihmiskunta. Miten keinoäly vaikuttaa käyttäytymiseemme?

Keinoälyyn perustuvista boteista tulee jatkuvasti kehittyneempiä mallintamaan ihmisten välisiä kanssakäymisiä. Vuonna 2014 botti nimeltä Eugene Goostman voitti Turingin testin ensimmäistä kertaa. Goostman sai yli puolet häntä arvioinutta ihmistä luulemaan, että he puhuvat aidolle henkilölle.

Kyseinen virstanpylväs tuskin jää viimeiseksi. Tälläkin hetkellä moni yritys hyödyntää esimerkiksi chat-botteja asiakaspalvelussaan (Suomessa esimerkiksi IF Vakuutusyhtiön ”Emma”). Ihmisten kapasiteetti osoittaa huomiota ja huolenpitoa toisilleen on rajallinen, mutta botit pystyvät panostamaan niihin rajattomasti ja ovat siksi kenties ihanteellisempia asiakaspalvelijoita. On kuitenkin vielä kyseenalaista, miten tehokkaasti botit voivat ratkoa monimutkaisia asiakasongelmia sekä ennen kaikkea osoittamaan asiakaspalvelutyössä tärkeää empatiakykyä.

Joka tapauksessa voimme jo huomata, miten keinoäly onnistuu aktivoimaan aivojemme palkintojärjestelmiä. Esimerkkeinä klikkiotsikot, joiden tarkoituksena on testata erilaisten viestien toimivuutta mielenkiintomme herättäjänä, leviävät tehokkaasti sosiaalisen median uutisvirta-algoritmien välityksellä. Samankaltaisia keinoja käytetään myös muiden ohella luomaan videopeleistä addiktiivisia eli riippuvuutta aiheuttavia. Vaikka näissä esimerkeissä ihminen varsinaisesti luo sisällön, kone pystyy eri sisällöistä valitsemaan sen kaikkein koukuttavimman.

  1. Keinoälyttömyys. Miten voimme estää virheitä?

Älykkyys muodostuu oppimisen kautta, oli kyseessä ihminen tai keinoäly. Järjestelmillä on yleensä harjoitusjakso, joissa ne ”opetetaan” havaitsemaan oikeita kuvioita ja toimimaan niille syötetyn komennon perusteella. Kun järjestelmän harjoitusjakso on valmis, se voidaan siirtää haastavampaan testivaiheeseen ja sen jälkeen ottaa julkiseen käyttöön.

Järjestelmiä on kuitenkin mahdollista huijata tavoilla, joissa ihminen ei erehtyisi. Esimerkiksi satunnaiset pistekuviot voivat johtaa keinoälyn havaitsemaan jotain, mitä ei tosiasiassa ole olemassa. Jos haluamme luottaa keinoälyyn tulevaisuudessa entistä enemmän, on syytä varmistaa, että se toimii kuten suunniteltu, ja etteivät ihmiset voi saada sitä valtaansa omien etujensa ajamista varten. Ns. blackhat-hakukoneoptimointi eli Google-hakutulosten keinotekoinen manipulointi ja valeuutisten levittäminen ovat esimerkkejä algoritmipohjaisten järjestelmien manipulaatiosta, jolla voi olla laajamittaisia yhteiskunnallisia vaikutuksia. Vaikka ihmiset yhtäältä tietävät, ettei kaikkeen netissä vastaan tulevaan voi uskoa, toisaalta informaatiokuplaan ajautuminen ja sitä seuraava polarisoituminen on yllättävän yleistä koulutustasosta riippumatta.

  1. Robotit ja syrjintä. Miten eliminoimme keinoälyn puolueellisuuden?

Vaikka keinoäly kykenee nopeuteen ja suorituskykyyn, joka on ihmisen ulottumattomissa, sen ei voida luottaa olevan aina reilu ja neutraali. Esimerkiksi taannoin ohjelmisto, jota käytettiin tulevien rikollisten ennustamiseen, osoitti ennakkoluuloja mustia kohtaan. On tärkeä muistaa, että keinoälyn järjestelmät ovat ihmisten luomia. Ihmiset voivat olla myös puolueellisia ja tuomitsevia, ja vähintääkin erehtyväisiä. Itse asiassa algoritmi voisi teoriassa lievittää ihmisluonteen haitallisia puolia, sillä koneen päätöksentekoprosessissa ei ole mukana tarkoitusperäistä epäluotettavuutta.

  1. Turvallisuus. Miten pidämme keinoälyn turvassa vahingollisilta tahoilta?

Keinoälyn kehittyessä jokainen maailman valtio, myös Suomi, haluaa sen hyödyistä osansa.  Oli kyse sitten ihmissotilaiden korvikkeiksi tarkoitetut roboteista, itseohjautuvista asejärjestelmistä tai keinoälyjärjestelmistä, keinoälyä voidaan käyttää monenlaisiin tarkoitusperiin. Tulevaisuuden konflikteja ei käydä vain maanpinnalla, kuten esimerkiksi kauko-ohjattavat dronet ovat osoittaneet. Siksi kyberturvallisuudesta muodostuu myös keinoälyyn liittyvän keskustelun tärkeä osa-alue.

  1. ”Pahat” lampunhenget. Miten suojaudumme seurauksilta, joita ei oltu tarkoitettu?

Mitä jos keinoäly kääntyisi ihmiskuntaa vastaan? Se ei välttämättä tarkoita ”pahaa” samassa mielessä kuin ihminen toimisi tai tapaa, jolla keinoälyn luomat onnettomuudet dystooppisissa elokuvissa esitetään. Sen sijaan on mahdollista kuvitella tilanne, jossa kehittyneestä keinoälystä tulee ”lampunhenki”, joka voi täyttää toiveita tai komentoja, mutta myös kauhistuttavilla seurauksilla.

Silloin kyseessä saattaa pahanteon sijaan olla kuitenkin kyse väärinymmärryksestä ja kontekstin ymmärtämättömyydestä. Kuvittele esimerkiksi keinoälyjärjestelmä, jolle on annettu komennoksi hävittää syöpä maailmasta. Prosessoituaan asiaa se muodostaa kaavan, joka tosiasiallisesti hävittää syövän – tuhoamalla kaikki ihmiset. Tavoite täytyy, mutta tuskin ihmisten tarkoittamalla tavalla.

  1. Singulariteetti. Miten pystymme hallitsemaan monimutkaisia keinoälyjärjestelmiä?

Ihmiskunnan valta maailmassa perustuu kekseliäisyyteen ja älykkyyteen. Pärjäämme paremmin kuin isommat, nopeammat ja vahvemmat eläimet, koska pystymme kontrolloimaan ja ehdollistamaan niitä.

Mutta onko keinoälyllä jonain päivänä vastaava etu meihin nähden? Emme voi laskea kaikkea sen varaan, että vain nappia painamalla suljemme sen, koska tarpeeksi kehittynyt keinoälyjärjestelmä osaa odottaa sellaista ja puolustaa itseään. Tätä jotkut tutkijat kutsuvat singulariteetiksi, joka voidaan määritellä ajankohtana, jolloin ihmiset eivät enää ole älykkäin olento maan päällä.

  1. Robottien oikeudet. Kuinka määrittelemme keinoälyn humaanin kohtelun?

Onko roboteilla oikeuksia? Vaikka neurotieteilijät työskentelevät vieläkin tietoisuuden salaisuuksien selvittämiseksi, ymmärrämme jo monia perusmekanismeja, kuten kehun ja moitteen järjestelmiä. Tavallaan kehitämme nyt tekoälyä kepin ja porkkanan avulla. Esimerkiksi algoritmin oppimisen vahvistumista palkitaan samalla tavoin kuin koiraa sen kasvatuksessa: oppimista vahvistetaan virtuaalisella palkkiolla. Tällä hetkellä kyseiset mekanismit ovat vielä lapsenkengissä, mutta niistä tulee monimutkaisempia ja arkielämää lähestyviä teknologian kehittyessä.

Kun koemme keinoälyn olevan entiteetti, joka voi muodostaa käsityksiä, tuntea ja toimia niihin perustuen, niin oikeudellisen aseman pohtiminen ei ole enää kaukaista. Pitäisikö keinoälyä kohdella kuin eläimiä tai vertaistaan älykkyyttä? Mitä ajattelemme tunteisiin kykenevän keinoälyn kärsimyksen tasoista? Myös geneettiset algoritmit, evoluutioalgoritmit, joita käytetään järjestelmän kehittämisessä etsimällä niistä paras iteraatio, joka selviytyy, kun taas huonosti menestyneet poistetaan, edustavat monimutkaisia eettisiä ongelmia. Missä kohtaa alamme pitämään geneettisiä algoritmeja massamurhana? Tällä hetkellä yleisenä rajanvetona näissä kysymyksissä pidetään tietoisuutta – niin kauan kuin robotti tai kone ei ole tietoinen itsestään samassa mielessä kuin ihminen, tuntea kipua tai toimia itsenäisesti, sitä ei pidetä olentona, jolla olisi itseisarvo.

Johtopäätös

Edellä mainittuja keinoälyn riskejä tulee pohtia ja niiden eettistä ulottuvuutta tarkastella vakavasti. Keinoälyllä on valtava potentiaali ja on yhteiskunnan tehtävänä on saada sen potentiaali edistämään kaikkien ihmisten elämää, parhaalla mahdollisella tavalla. Tämä edellyttää laajamittaista yhteistyötä tutkijoiden ja elinkeinoelämän välillä.

***

Artikkeli perustuu World Economic Forumin katsaukseen keinoälyn eettisistä ongelmista. Alkuperäinen artikkeli ”Top 9 ethical issues in artificial intelligence” on luettavissa täältä.

Algoritmien läpinäkyvyyden ja vastuullisuuden ohjenuorat

Kari Haakana (@Karde) piti esityksen Kone Säätiön ja Kaute-säätiön järjestämässä ”Algorytmittyvä elämä” -tilaisuudessa Helsingissä (12.5.2017). Kari mainitsi USACM:n (Association for Computing Machinery US Public Policy Council) julkaiseman ohjeistuksen algoritmien läpinäkyvyydelle ja vastuullisuudelle. Tietääkseni sitä ei ole vielä käännetty suomeksi, joten päätin kääntää sen. Alla ohjeistus.

Miksi algoritmien salaisuuksia ei paljasteta?

ACM kirjoittaa, että algoritmien läpinäkymättömyyteen on olemassa useita syitä, kuten 1) tekniset syyt (algoritmin toimintaa ei ole helppo selittää), 2) taloudelliset syyt (liikesalaisuudet estävät algoritmien toiminnan paljastamisen), ja 3) sosiaaliset syyt (tietojen paljastaminen voi rikkoa odotuksia yksityisyydensuojasta). Lisään tähän neljännen: 4) tietojen paljastaminen voi rikkoa lakeja yksityisyydensuojasta tai palvelun itse määrittelemiä käyttöehtoja. Lisäksi on huomioitava, että monet algoritmiset edistysaskeleet on julkaistu joko avoimissa konferenssi- tai journaalijulkaisuissa (ks. arxiv.org) tai avoimen lähdekoodin alla (esim. Google, Facebook, Airbnb).

Algoritmien läpinäkyvyyden ja vastuullisuuden ohjenuorat

  1. Tietoisuus: Analyyttisten järjestelmien omistajien, suunnittelijoiden, rakentajien, käyttäjien ja muiden sidosryhmien tulisi olla tietoisia mahdollisista ennakkoluuloista, jotka liittyvät niiden suunnitteluun, käyttöönottoon ja käyttöön sekä potentiaalisiin haittoihin, joita niiden puolueellisuus voi aiheuttaa yksilöille ja yhteiskunnalle.
  2. Pääsy ja oikeussuojakeinot: Lainsäätäjiä olisi kannustettava sellaisten mekanismien käyttöönottoon, jotka mahdollistavat koneellisten päätösten kyseenalaistamisen ja oikeussuojan antamisen yksilöille ja ryhmille, joita koneelliset päätökset mahdollisesti haittaavat.
  3. Vastuullisuus: Organisaatioiden tulisi olla vastuussa käytettävien algoritmien tekemistä päätöksistä, vaikka ei olisikaan mahdollista selittää yksityiskohtaisesti, miten algoritmit tuottavat tuloksensa.
  4. Selitys: Algoritmista päätöksentekoa käyttäviä järjestelmiä ja organisaatioita kannustetaan tuottamaan selityksiä sekä algoritmin suorittamista toimenpiteistä että yksittäisistä päätöksistä. Tämä on erityisen tärkeää julkishallinnon yhteydessä.
  5. Tietojen alkuperä: Algoritmien kehittäjien tulisi dokumentoida, kuinka koneoppimismallien harjoitteluaineisto kerättiin, sekä arvioida ihmisen tai koneellisen tiedonkeruuprosessin aiheuttamia mahdollisia vääristymiä. Tietojen julkinen tarkastelu tarjoaa mahdollisuuden korjata mallien aineistosta johtuvia virheitä. Kuitenkin huoli yksityisyyden suojasta, liikesalaisuuksien suojelemisesta tai sellaisten toiminnallisuuksien paljastamisesta, jotka voivat antaa pahaa tarkoittaville toimijoille mahdollisuuden hyväksikäyttää järjestelmää, voivat oikeuttaa rajoittamaan pääsyn päteviin ja luotettaviin henkilöihin.
  6. Tarkastettavuus: Mallit, algoritmit, tiedot ja päätökset on dokumentoitava siten, että ne voidaan ulkopuolisen tahon toimesta tarkastaa tapauksissa, joissa haittaa epäillään.
  7. Validointi ja testaus: Organisaatioiden tulee käyttää uskottavia menetelmiä malliensa vahvistamiseen ja dokumentoida nämä menetelmät ja tulokset. Erityisesti niiden tulisi tasaisin väliajoin suorittaa testejä arvioidakseen ja määrittääkseen, aiheuttaako malli yhteiskunnallisia haittoja. Koneellista päätöksentekoa soveltavia organisaatioita kannustetaan tekemään tällaisten testien tulokset julkiseksi.

Alkuperäinen lähde: https://www.acm.org/binaries/content/assets/public-policy/2017_usacm_statement_algorithms.pdf