It Sikkerhed

IT-sikkerhed - Facebook og dig

Forslag til øvelser der skal introducere interaktionsdesign og sikkerhed i forhold til adgangskodesystemer:

Øvelser

Håndkøring af perceptronalgoritmen

Intro

Vi besøger siden Apply magic sauce og prøver den.
Vi kigger på https://www.b.dk/globalt/dine-likes-afsloerer-naesten-alt-om-dig

Perceptron-algoritmen

Vi starter med punkter i planen. Dvs punkter med 2 koordinater.

Perceptron-algoritmen i 2 dimensioner.

Vi forestiller os at vi har en mængde punkter med to koordinater. Disse punkter er er enten røde eller blå. Denne klassificering skal være lineært separabel, dvs der skal findes en ret linje der deler punkterne op så de røde er på den ene side af linjen og de blå punkter er på den anden side.
Perceptron-algoritmen finder denne linje.
Man starter med en tilfældig linje. Tager det første punkt og undersøger om det er på den rigtige side af linjen. Hvis punktet er på den rigtige side af linjen, så gør man ikke noget. Hvis punkter er på den forkerte side af linje, så skal linjen ændres(opdateres) så punktet er på den rigtige side af den nye linje. Sådan bliver man ved indtil alle punkterne er blevet behandlet.
Vi har en funktion der hedder desided output:

(1)
\begin{align} \delta (x) = \left\{ \begin{array}{ll} +1 & \mbox{hvis $x$ er rød}\\ -1 & \mbox{hvis $x$ er blå} \end{array} \right. \end{align}

Terminologien er lidt anderledes en i er vant til fra matematik. I vores koordinatsystem hedder den vandrette akse $x_{1}$ og den lodrette akse $x_{2}$
Vi har en linje som vi starter med. Den hedder $w$ og er repræsenteret som en vektor med 3 koordinater.

(2)
\begin{align} w = \left( \begin{array}{l} w_{0}\\ w_{1}\\ w_{2} \end{array} \right) \end{align}

Dette repræsenterer en linje på følgende måde: $0=w_{0}+w_{1}x_{1}+w_{2}x_{2}$.

  1. Vælg et punkt $(x_{1},x_{2})$ som input.
  2. Hvis den er korret klassificeret, skal der ikke gøres noget.
  3. Ellers skal w updateres således
(3)
\begin{array} {ll} w_{0}&=&w_{0}+\eta \delta (x)\\ w_{1}&=&w_{1}+\eta \delta (x) x_{1}\\ w_{2}&=&w_{2}+\eta \delta (x) x_{2} \end{array}
Koordinatsystem

hvor $\eta$ er en korrektionsfaktor.
Lad os starte på eksemplet i øvelsen.

Vi starter med en tilfældig linje:

(4)
\begin{align} w = \left( \begin{array}{l} 0\\ 1\\ 0.5 \end{array} \right) \end{align}

Det betyder at vores linje er $0=0+1x_{1}+0.5x_{2}$. Hvis vi isolere $x_{2}$ fås $x_{2}=-2x_{1}$. Den skærer altså den lodrette akse i 0 og har en hældningskoefficient på $-2$.

Mangler at gøre regneeksemplet færdigt

Vi har udnyttet at en linje deler planen op i to dele.
Vi vil nu generalisere denne metode til 3 dimensioner.

Perceptron-algoritmen i 3 dimensioner.

Ligesom linjen deler planen i to dele, gælder der i rummet, at planen deler rummet i 2 dele.
Vi har sat en ekstra akse på koordinatsystemet. Den kalder vi $x_{3}$-aksen.
Vi har en plan som vi starter med. Den hedder $w$ og er repræsenteret som en vektor med 4 koordinater.

(5)
\begin{align} w = \left( \begin{array}{l} w_{0}\\ w_{1}\\ w_{2}\\ w_{3} \end{array} \right) \end{align}

Dette repræsenterer en plan på følgende måde: $0=w_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}$.

  1. Vælg et punkt $(x_{1},x_{2},x_{3})$ som input.
  2. Hvis den er korret klassificeret, skal der ikke gøres noget.
  3. Ellers skal w updateres således
(6)
\begin{array} {ll} w_{0}&=&w_{0}+\eta \delta (x)\\ w_{1}&=&w_{1}+\eta \delta (x) x_{1}\\ w_{2}&=&w_{2}+\eta \delta (x) x_{2}\\ w_{3}&=&w_{3}+\eta \delta (x) x_{3} \end{array}


hvor $\eta$ og $\delta (x)$ er helt som før.

Perceptron-algoritmen i n dimensioner.

Ligesom planen deler rummet i 2 dele gælder der i n dimensioner at en hyperplan deler det n-dimensionelle rum i to dele.
Vi har sat en ekstra akser på koordinatsystemet. Den sidste kalder vi $x_{n}$-aksen.
Glem alt om se en illustration over dette.
Vi har en hyperplan som vi starter med. Den hedder $w$ og er repræsenteret som en vektor med n koordinater.

(7)
\begin{align} w = \left( \begin{array}{l} w_{0}\\ w_{1}\\ w_{2}\\ w_{3}\\ \vdots \\ w_{n} \end{array} \right) \end{align}

Dette repræsenterer en plan på følgende måde: $0=w_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+ ... + w_{n}x_{n}$.

  1. Vælg et punkt $(x_{1},x_{2},x_{3},...,x_{n})$ som input.
  2. Hvis den er korret klassificeret, skal der ikke gøres noget.
  3. Ellers skal w updateres således
(8)
\begin{array} {ll} w_{0}&=&w_{0}+\eta \delta (x)\\ w_{1}&=&w_{1}+\eta \delta (x) x_{1}\\ w_{2}&=&w_{2}+\eta \delta (x) x_{2}\\ w_{3}&=&w_{3}+\eta \delta (x) x_{3}\\ \vdots \\ w_{n}&=&w_{n}+\eta \delta (x) x_{n} \end{array}


hvor $\eta$ og $\delta (x)$ er helt som før.

Implementering i python

Det IDE vi anvender til at køre python er Jupyter Notebook. Det får man ved at downloade Anaconda 5.1 Vælg Graphical Installer.
Installer Anaconda, start den og vælg Jupyter Notebook.
Nu skal du have percetronalgoritmen og data importeret.
Først downloader du denne zip-fil. Unzipper den og uploader de tre filer ved at bruge uploadknappen i Jupyter.
Åben den der hedder PerceptronIplanen.ipynb ved at klikke på den i Jupiter.

  • Læs den

Den laver det vi gjorde i øvelsen. På de samme punkter.

  • Prøv at identificere hvad de enkelte dele af programmet gør. Som du selv lige har gjort i øvelsen
  • Udpeg lykker, forgreninger og variable.
  • Kør programmet. Fik du den samme linje w som i øvelsen?

Nu kan du åbne den fil der hedder PerceptronGenerelt.ipynb og data.py. Den sidste er data. Hvor mange koordinater er der i hvert punkt?

  • Kør programmet.

To do til mig

mangler Lave en video med forklaring af perceptronen som https://www.youtube.com/watch?v=wL2aVUjDdoo
har data men ville hellere have noget fra facebook
Tænker 2 moduler af 95 minuter = 190 minutter. Måske mindre…

Medmindre andet er angivet, er indholdet af denne side licenseret under Creative Commons Attribution-NonCommercial 3.0 License