Archive for the 'filosofi' Category

TED techtalks

April 18th, 2008 by mind

Kolla in detta: http://www.ted.com/index.php/talks/view/id/247

Det är en helt klart sevärd liten filmsnutt med en kille som berättar om vår nya informationsålder på ett sätt som en del kanske inte har tänkt på. Ni som inte förstår vår generation (och en del upplysta människor från de äldre generationerna) och varför vi fungerar som vi gör borde se denna för att få lite perspektiv på saker och ting.

Tack Styrbjörn för länken!

Varför är det viktigt att ifrågasätta?

April 14th, 2008 by mind

monkeys.jpg

Därför.

Undersök, var frågvis, ta inte saker för givet.

Sluta aldrig ifrågasätta.

Funderingar om AI

April 14th, 2008 by mind

Jag har klurat länge på AI i olika former.

Min nuvarande tankekedja började med chatbottar i stil med MegaHAL. MegaHAL är alltså ett program som man kan chatta med, ungefär som man pratar på IRC. Man skriver in text och när man skrivit svarar MegaHAL. MegaHAL lär sig av vad man skrivit och utvecklas, i början kan inte MegaHAL svara nåt annat än det inbyggda hårdkodade svaret för när den inte har lärt sig nog mycket än. Efter ett tag börjar dock programmet spotta ur sig svar, i början ganska trevande saker som är i princip samma sak som man skrev in till att börja med. Om man är ihärdig och fortsätter prata med MegaHAL så kommer den svara med allt mänskligare svar och efter ett tag kan det bli svårt att förstå att detta inte är en person. Dock blir MegaHAL lätt psykotisk efter ett tag, och jag använder “lätt” här i ordets vidaste bemärkelse. MegaHAL har även en tendens att lyckas förolämpa personer som pratar med den grovt. Förutsatt att de inte förstår att det är ett program förstås. Förolämpningar riktade mot MegaHAL vänds snabbt till extremt passande motförolämpningar.

Ett exempel på vad MegaHAL kan säga:

“Cows fly like clouds but they are never completely succesful.”

Underbart filosofiskt. Men i slutändan är det bara ett program, MegaHAL förstår inte ett dugg av vad den säger och den mesta betydelsen och innebörden av det den säger är vår mänskliga förmåga att personifiera svaren, vår förmåga att sätta mänskliga egenskaper på det som inte är mänskligt och vår förmåga att se mönster där inte finns några. MegaHAL spottar ofta ur sig totalt nonsens också men det är dock underhållande tack vare de guldkorn den spottar ur sig ibland i form av klockrena visdomar med en gnutta humor.

MegaHAL bygger på en ganska enkel princip, kommer ni ihåg de där listorna man gjorde i skolan med en mängd olika ord på olika papper? Man satte alla ord av samma ordklass på ett papper, andra ord av en annan ordklass på ett annat papper, osv. Sen kunde man lappa ihop galna meningar genom att välja slumpmässiga ord från varje papper. MegaHAL fungerar ungefär efter samma princip, den lär sig statistiskt sett vilka ord som brukar komma efter varandra när man skriver saker till den, sedan slumpar den fram meningar med hjälp av detta, flera hundratals meningar faktiskt, sedan väljer den en mening som har nyckelord med mest information och den mening som är mest överraskande (se MegaHAL-länken för mer information och en matematisk modell som beskriver detta). Det spelar ingen roll vilket språk man använder till MegaHAL (såvida den använder vårt alfabet alltså, jag vet inte hur det fungerar med kinesiska eller japanska) den “lär” sig alla.

Denna tanke ledde mig vidare till Neurala nätverk. Min ursprungliga tanke var att hitta ett sätt att träna neurala nätverk att göra något liknande, att få ett något mer naturligt “tal” från en chatbot. Jag har vänt och vridit detta på alla sätt jag kan och min slutsats är att det inte går att göra såvida inte programmet faktiskt förstår vad den pratar om. Inte nog med det, den måste kunna det på ett plastiskt sätt, alltså, ingen kunskap den har får vara huggen i sten, den måste kunna utöka sina begrepp, vidga dem, inskränka dem. Den måste lära sig koncept. Den måste lära sig att luft kan man andas, att saker som färdas genom luften flyger, såvida de inte faller, men båda färdas dock genom luften, att det finns saker som tar upp plats, har massa, eller inte, som t.ex tankar. Att tankar också är ett verb, att man tankar bilen. Som ni ser, det blir mycket komplext att göra en sådan sak som vi tar för givet. Men hur ska man lära ett program koncept?

Kan man hårdkoda in dem? Dvs i förväg lära ett program att det finns luft, en planet, yttre rymden, atomer, tankar, osv och sedan låta den gruppera in framtida koncept den lär sig i relation till dessa? Ja, kanske men tänk efter hur mycket det finns att lära den, det blir ett omöjligt jobb. Ta bara en sådan sak som generaliseringar, saker vi tar för givet, saker vi bara har lärt oss genom erfarenhet. “Common sense”. Ok, så man måste alltså låta programmet få erfarenhet genom att lära sig, träna. För att förstå vårt sätt att tänka måste den förstå våra erfarenheter och därmed rimligen växa upp som oss, någorlunda i alla fall.

AI-illustration
(Credit: University of Wisconsin)

Så, för att få ett program som kan prata som oss måste den förstå vad den säger, för att förstå vad den säger måste den vara intelligent på riktigt och lära sig av erfarenheter som oss. Man måste alltså bygga en robot åt programmet som den får “leva” i. En kropp åt själen så att säga.

Nåja, att bygga en robot är ingen liten uppgift. Ta bara uppgiften att bygga en hand som fungerar lika bra som våra händer. Denna hand kommer inte ens i närheten, men den är en början:

Robothand
(Credit: Shadow Robot)

Ja, det är ingen liten uppgift, att bygga en robot. Det är så man baxnar. Men det finns en annan möjlighet. Simulera en värld med en simulerad robot i, låt programmet tro att den är i en riktig värld. Men frågan är förstås, vad är svårast, simulera en värld eller bygga en robot?

Jag har i alla fall vissa ideér om hur man kan börja lära neurala nätverk koncept och problemlösning på ett sätt som kan få dem att faktiskt lösa nya problem och nya frågeställningar, kanske en dag till och med forska. Men det krävs fortfarande mycket att bena ut och väldigt mycket mer finslipande innan jag kan göra något som ens liknar någonting i praktiken. Kanske kan jag få till något enkelt för exempelvis dataspel, “smarta” datorspelare i en rollspelsvärld som lär sig, utvecklas och har intriger inom den värld de är definierade. För att inte tala om att det krävs en kraftfull dator. En MYCKET kraftfull dator.

Syverne till sist får man fråga sig hur mänsklig man vill göra detta program och hur höga krav man har. Själv ser jag hela tiden saker som kan förbättras med allting, även om jag är nöjd med dem. Kanske ska man nöja sig med nästan mänskliga program, dock kan dessa bli kusliga och/eller farliga beroende på hur mycket kontroll man ger dem. Man kanske måste ge upp tanken på att ens ha dem mänskliga, kanske kan man få dem intelligenta men omänskliga. Just nu verkar både att bygga en robot eller att simulera en värld som ganska oöverstigliga hinder. :)

Programmering

December 2nd, 2007 by mind

Buggar är bokstavligt talat problem man har skapat åt sig själv, ändå är de så svåra att undvika.

Det har med entropi att göra.
Den oändliga striden mellan ordning och kaos. Livet existerar på gränsen. Livet skulle dö i perfekt ordning, det skulle dö i totalt kaos.

Då så ska jag fortsätta debugga detta program som använder threads =)