Introduksjon til AI og Lisp 1 fagoversikt - del ut syllabus, Lisp-kompendium, AI-paper, emacs-ark - email til alle som skal ta faget - gå igjennom syllabus: vi skal folge et spesiellt opplegg noye, let gjerne opp alternativ litteratur http://www.hig.no/~erikh/classes/AI (bruk web mye) 3vt -> 12-13 timer/uke, bruk 10 timer utenom forelesning (mest til lesing og tenking med AIMA) alt vi skal igjennom er ganske kunstig, men det setter oss i perspektiv mtp hva vi kan få til, og hvor vi går hen - NB! tøff start! tøft fag (vanskelig aa holde perspektiv)! oppgaver - skrive egne funksjoner selv de første ukene for å lære grunnleggende Lisp, deretter finnes hjelpekode til alle oppgaver (klar dere gjerne uten) obligatorisk oppgave (paper) - velge et AI-emne, presentere det ut fra minst 3 papere (ikke strenge krav til innhold, men muligens kåring av beste paper) examen - 4t, alle ikke-levende (vi betrakter PC som levende) hjelpemidler, prøve-exmner vil bli utdelt. forslag til hovedprosjekt - programmere et rammeverk for en intelligent agent som skal kunne håndtere både visuelt input (connectix kamera) og audio input (talegjenkjenning), og kunne gi respons i form av tale (talegenerering). Det må programmereres mest mulig plattformuavhengig (ergo i java), men fortrinnsvis rettet mot NT. Software for talegjenkjenning og generering finnes på nettet. Målet i første omgang er at agenten skal registrere når et ansikt befinner seg foran skjermen slik at en velkomstmelding kan genereres. Oppgaven vil innebære mye programmering, men også mye utnyttelse av kode som finnes tilgjengelig. 2 intro til AI - videosnutter - TENK!!! SETT FAGET I PERSPEKTIV GJENNOM SEMESTERET!!! (det er INGEN TVIL hvor utviklingen går hen...) AI-historie - noyes-oversikt, chp1 - AAAI (IEEE) intelligente agenter - def. agent: noe som tar noe input/stimuli/persept fra sine omgivelser gjennom sensorer, og utfører viss handlinger tilbake på omgivelsene utfra disse input/stimuli/persept (med effektorer - daalig ord) (fig 2.1) - en fornuftig agent er en som gjør det riktige - hva er det riktige: mål for suksess - ideell fornuftig agent, se def s 33 - mapping og ideel mapping fra input til handling - autonomi: en autonom intelligent agent baserer sine handlinger både på innebygd kunnskap og egne erfaringer - intelligente agenter: det vi som driver med AI skal gjøre, er å lage agent programmet (det er det AIMA dreier seg om) - hva er en agent, fig 2.3, fig 2.4 - enkel agent: refleks agent, fig 2.7, fig 2.8 - refleks agent med status, fig 2.9, fig 2.10 - agent med mål, fig 2.11 - en nyttig agent, fig 2.12 - egenskaper ved omgivelser, s 46 - oppsummering, s 49 - hvor er vi idag: TRAINS demo TRAINS video 1 A-PAGE: A reiseplanleggingsassistent P mikrofon A snakke til reisende G komme frem til beste reiserute i samarbeid med reisende E mennesker som skal reise med tog TRAINS video 2 tenk over hvordan systemet må holde oppdatert minne ("Let's go to Albany", "Let's take the last train and go to Lexington") 3 intro til Common Lisp - LISP = LISt Processing - Lisp historie (figur 2.1), et av de aller eldste programmeringsspråk, forent til Common Lisp på 80-tallet. - symbolsk programmeringsspråk, manipulering av symboler representert på forskjellige former (symbol stort sett lik en tegnsekvens). Lisp baserer seg på å alltid returnere verdier (evaluer,returner) Lisp er et ikke-imperativt programmeringsspråk, du trenger ikke å instruere maskina i samme grad som f.eks. C (ikke legg mye vekt på dette) - Lisp skiller ikke mellom små og store bokstaver (ikke case-sensitive) - programmerer som regel mot en kommandotolker (interpreter) i stedet for editor (kopierer/limer gjerne att og fram mellom Lisp-interpretern og en text-editor) - infix, prefix, postfix notasjon. Lisp benytter prefix (HP postfix). - prefix sammen med parenteser: "ta denne funksjonen og bruk på følgende argumenter" >(+ 3 4 5) 12 > - hvordan bruke Lisp: vis Allegro CL, GNU CL og emacs - retur fra funksjoner kan være argument til andre funksjoner >(+ 3 (sqrt 16)) 7 > - les-evaluer-skriv løkke, gjentaes til vi avslutter Lisp - avslutt (bye), tilbake til øverste nivå :r - les 29-32 selv - datatyper i Lisp: atomer og lister - atomer: numeriske (tall) eller symbolske/literale (tegnsekvens) - unngå tegnene i tabell 2.3 for symbolske atomer - lister er en ordna sekvens av elementer/objekter (som regel atomer og andre lister) med parenteser rundt - reserverte symbolske atomer: t (true) nil (false) - NB! alt som ikke er nil er t !!! (så lenge Lisp kan returnere noen annet enn nil, så gjør den det) - eksempler på lister side 34 og 35 - minn om oppgaver til neste gang