User
Write something
Välkommen nya medlemmar!
Introducera gärna er själva!
0
0
@Alexander - struktur?
Vet att du programmerar front end men också ML, har du någon struktur för när du gör vad? Kan bli lite spretigt för mig ibland för jag vill så gå extremt djupt in i ML. Men sedan också front end 🤣
0
3
New comment Feb 26
ML i C
De som har testat att bygga någonting med ML känner nog till bibliotek såsom PyTorch eller Tensorflow. Dessa har blivit extremt populära eftersom de abstraherar bort mycket av de jobbiga sakerna såsom att se till så att beräkningarna görs hypereffektivt. Biblioteken är även gjorda för att användas i Python, ett väldigt användarvänligt programmeringsspråk. Det låter en helt enkelt att jobba på de viktiga sakerna, att bygga riktigt grymma modeller. För att få en bättre förståelse för hur algoritmerna fungerar matematiskt men även vad som händer "inuti datorn" försökte jag bygga mitt egna ML bibliotek från scratch i C. Detta var inte lätt men jag fick en mycket större uppskattning för PyTorch och lärde mig en hel del. Jag kommer visa hur jag implementerade ett "fully connected"/linear/dense layer. I ett neural network har man lager vilket enkelt förklarat är olika typer av operationer som görs på datan. Det enklaste lagret "dense layer" (så jag kallar det i mitt bibliotek även fast jag mestadels använder PyTorch lol) tar en samling nummer som representerar någonting, multiplicerar det med en "vikt" och adderas med en "bias". Vikter och bias kallas för parametrar och påverkar outputen av nätverket, det är dessa man vill ändra på för att uppnå ett så bra resultat som möjligt. För att göra multiplikationen generell för hur stora datamängder som helst använder man matrismultiplikation. Note: Matriser och linjär algebra är utanför scopet av denna post men rekommenderar starkt att lära sig det om man vill bli bra på ML och förstå algoritmerna. Att gå igenom ett dense layer kan kompakt skrivas som: Y = WX + b, där W är en matris med alla vikter, Y är outputen, X är inputdatan och b är bias. För att implementera detta i mitt program var jag först tvungen att implementera en matris struktur. (Se första bild). En matris kan ses som en tabell där man har rader och kolumner. Detta kan ses som motsvarigheten till en klass i Python. För att skapa matriser implementerade jag, createMatrix på detta vis (Se andra bild). Lägg märke till funktionen malloc. I andra mer high level språk är det väldigt enkelt att definiera arrays, man definierar en ny variabel och sen kanske man använder [] eller liknande tecken. I C fungerar det inte riktigt likadant, man måste istället definiera exakt hur stor del av ram minnet som ska användas. Eftersom arrayen kommer ha längd cols * rows och vara av typ floats innebär det att storleken kommer vara antal element gånger storleken på datatypen. Jag har även implementerat andra funktioner relaterade till matriser som jag inte kommer gå igenom en som finns på min github att kika på.
1
4
New comment Feb 26
ML i C
Reinforcement Learning (RL) är AWESOMEBALLS
Yo team! Har plöjt igenom en hel del RL (Reinforcement Learning) senaste tiden och måste säga att jag är helt såld på detta. Det är inte bara grundpelaren bakom självkörande bilar och avancerade robotar, utan det står också bakom genombrottet Alfa Go (du måste se, jag länkar). Något med RL har helt enkelt fångat mig – tror det är det magin i att inte behöva berätta för en modell exakt hur den ska göra saker, utan bara vad målet är. Tänk er scenariot: vi ska landa en raket på månen. Vi sparkar igång med att definiera en "reward" funktion. Det är inte bara en enkel +10 för rätt drag och -10 för fel, utan det kan bli riktigt knivigt och sofistikerat, beroende på vad vi vill att vår robot ska optimera mot. Detta är kärnan i RL – att styra lärandet genom belöningar mot det beteende vi vill se. Här står vår raket, eller robot, i ett visst "state" (s), redo att göra sin grej. Den väljer en "action" (a), och boom – den landar i en ny situation, eller ett nytt state (s'). Målet är att i varje given situation (s), välja en handling som maximerar returen från vår belöningsfunktion. Och här kommer Bellmans ekvation in i bilden, som vår räknemästare. Den ser till att utvärdera alla möjliga framtida scenarier (s') som vår robot kan hamna i, för att sedan välja den handling (a) som maximerar vår reward. Det är som en oupphörlig optimeringsdans, där ekvationen (V(s) = maxa(R(s,a) + γV(s'))) guidar varje steg. Och med hyperparametern gamma (γ) får vi makt att influera om vår robot ska tänka mer på korta eller långa drag – precis som en schackmästare som planerar flera drag framåt. Med denna hyperparameter kan vi ställa in om roboten ska ta det där steget åt höger för 15 poäng nu, eller navigera en lite klurigare väg som kanske tar 6 steg men leder till 25 poäng i slutändan. Det handlar alltså om att balansera mellan att utforska nya vägar och att utnyttja de vägar som redan är kända för att ge bra utdelning. Jag rekommenderar dig STARKT att kolla på dokumentären jag bifogar för att se kraften av RL.
2
2
New comment Feb 26
Reinforcement Learning (RL) är AWESOMEBALLS
Hur fungerar AI / computer vision (förklaring för 5 åring)
Låt mig bryta ned det. 1. Datorn får en bild skickad till sig. 2. Datorn använder en process som heter convolution: Vi kan se det som att vi "anställer" en liten gubbe med ett förstoringsglas som analyserar varje pixel av bilden, där gubben letar efter mönster och detaljer. Oftast så anställer man 16, 32 eller 64 små gubbar samtidigt. När dessa små gubbar gjort klart sin analys ger de oss en tabell med numeriska värden där de högsta värdena på den tabellen reflekterar de delar av bilden där de hittat mönster och detaljer. 3. Förenkla gubbarnas resultat: Våra små gubbar med förstoringsglas har nu försett oss med 16, 32 eller 64 olika individuella tabeller med data. Dessa tabeller har VÄLDIGT mycket data och är tredimensionella. Därför så applicerar vi en funktion som heter pooling, där vi extraherar endast de högsta numeriska värdena, eftersom det är de högsta värdena som betyder att våra gubbar hittat ett mönster i bilden. Detta minskar även storleken på dessa tabeller och gör att våra datorer kan enklare "computa" dessa tabeller. 4. Vi repeterar steg 2 och 3: Vi anställer 16, 32 eller 64 små gubbar med förstoringsglass som ska convolva bilderna IGEN och leta efter FLER komplexa mönster. Dessa gubbar fortsätter arbetet från de tidigare gubbarna - alltså så analyserar de vad de andra redan tidigare har analyserat. Vi applicerar pooling igen, för att endast få med oss den datan som är relevant (där våra arbetare funnit mönster). Man kan repetera detta steg med att fortsätta anställa små gubbar och poola deras resultat många gånger. Desto fler gånger man gör det, desto mer detaljer av bilden man fångar, men det kan medföra problematik i form av att modellen blir för smart för sitt egna bästa och börjar lära sig fel saker (overfitting/high variance). Om du kollar på den bifogade bilden så ser du att varje bild har en gul ruta på sig och att den blir mindre och mindre – den gula rutan representerar gubben med förstoringsglas som analyserar, och att bilden blir mindre är för att vi applicerar pooling för att få bort all irrelevanta delar av bilden vi längre inte vill ha
1
3
New comment Feb 21
Hur fungerar AI / computer vision (förklaring för 5 åring)
1-8 of 8
<hackersson>
skool.com/hackersson-7455
Här samlas Sveriges bästa programmerare och hackers för att bygga framtiden. Häng på.
Leaderboard (30-day)
powered by