Maybaygiare.org

Blog Network

Basic Linear Algebra for Deep Learning

  • Inleiding
  • wiskundige objecten
  • computationele regels
  • Matrixvermenigvuldigingseigenschappen
  • inverse and Transpose
  • samenvatting
  • middelen

Inleiding

Lineaire Algebra is een continue vorm van wiskunde en wordt toegepast in de hele wetenschap en techniek omdat het u toelaat om natuurlijke verschijnselen en om ze efficiënt te berekenen. Omdat het een vorm van continue en niet discrete wiskunde is, hebben veel computerwetenschappers er niet veel ervaring mee. Lineaire Algebra is ook centraal in bijna alle gebieden van de wiskunde, zoals meetkunde en functionaalanalyse. De concepten zijn een cruciale voorwaarde voor het begrijpen van de theorie achter Machine Learning, vooral als je werkt met Deep Learning algoritmen. Je hoeft geen lineaire Algebra te begrijpen voordat je aan de slag gaat met Machine Learning, maar op een gegeven moment wil je misschien een beter begrip krijgen van hoe de verschillende Machine Learning-algoritmen echt onder de motorkap werken.
Dit zal u helpen om betere beslissingen te nemen tijdens de ontwikkeling van een Machine Learning systeem. Dus als je echt een professional wilt zijn op dit gebied, zul je de delen van de lineaire Algebra moeten beheersen die belangrijk zijn voor Machine Learning. In de lineaire Algebra worden gegevens weergegeven door lineaire vergelijkingen, die worden gepresenteerd in de vorm van matrices en vectoren. Daarom heb je meestal te maken met matrices en vectoren in plaats van met scalars (we zullen deze termen in de volgende sectie behandelen). Wanneer je de juiste bibliotheken, zoals Numpy, tot je beschikking hebt, kun je complexe matrixvermenigvuldiging heel gemakkelijk berekenen met slechts een paar regels code. (Opmerking: deze blogpost negeert concepten van lineaire Algebra die niet belangrijk zijn voor Machine Learning.)

Wiskundige Objecten

Scalaire

Een scalaire is gewoon een enkel nummer. Bijvoorbeeld 24.

Vector

een Vector is een geordende reeks getallen en kan zich in een rij of kolom bevinden. Een Vector heeft slechts een enkele index, die naar een specifieke waarde binnen de Vector kan wijzen. Bijvoorbeeld, v2 verwijst naar de tweede waarde binnen de Vector, die -8 in de grafiek hierboven is.

matrix

een matrix is een geordende 2D array van getallen en heeft twee indices. De eerste wijst naar de rij en de tweede naar de kolom. M23 verwijst bijvoorbeeld naar de waarde in de tweede rij en de derde kolom, die 8 is in de gele afbeelding hierboven. Een Matrix kan meerdere aantallen rijen en kolommen hebben. Merk op dat een Vector ook een Matrix is, maar met slechts één rij of één kolom.

De Matrix in het voorbeeld in de gele afbeelding is ook een 2-bij 3-dimensionale Matrix (rijen x kolommen). Hieronder zie je een voorbeeld van een Matrix samen met de notatie:

Tensor

U kunt denken aan een Tensor als een reeks van nummers, gerangschikt op een regelmatig grid, met een veranderlijk aantal rechten van assen. Een Tensor heeft drie indices, waarbij de eerste naar de rij wijst, de tweede naar de kolom en de derde naar de as. T232 wijst bijvoorbeeld naar de tweede rij, de derde kolom en de tweede as. Dit verwijst naar de waarde 0 in de rechter Tensor in de afbeelding hieronder:

Tensor is de meest algemene term voor al deze concepten boven omdat een Tensor is een multidimensionale array en het kan een Vector en Matrix, afhankelijk van het aantal indices heeft. Een eerste-orde Tensor zou bijvoorbeeld een Vector (1 index) zijn. Een tweede-orde Tensor is een Matrix (2 indices) en derde-orde Tensors (3 indices) en hoger worden hogere-orde Tensors (3 of meer indices) genoemd.

Matrix-scalaire operaties

als je een scalair vermenigvuldigt, deelt, aftrekt of toevoegt aan een Matrix, doe je dat met elk element van de Matrix. De afbeelding hieronder illustreert dit perfect voor de vermenigvuldiging:

Matrix-Vector Vermenigvuldiging

de Vermenigvuldiging van een Matrix met een Vector kan worden beschouwd als het vermenigvuldigen van elke rij van de Matrix door de kolom van de Vector. De uitvoer zal een Vector zijn die hetzelfde aantal rijen heeft als de Matrix. De afbeelding hieronder laat zien hoe dit werkt:

Voor het beter begrijpen van het concept, we zullen gaan door de berekening van het tweede beeld. Om de eerste waarde van de resulterende Vector (16) te krijgen, nemen we de getallen van de Vector die we willen vermenigvuldigen met de Matrix (1 en 5), en vermenigvuldigen we ze met de getallen van de eerste rij van de Matrix (1 en 3). Dit ziet er als volgt uit:

1*1 + 3*5 = 16

We doen hetzelfde voor de waarden in de tweede rij van de Matrix:

4*1 + 0*5 = 4

en opnieuw voor de derde rij van de Matrix:

2*1 + 1*5 = 7

Hier is een ander voorbeeld:

And here is a kind of cheat sheet:

Matrix-Matrix Addition and Subtraction

Matrix-Matrix Addition and Subtraction is fairly easy and straightforward. De eis is dat de matrices dezelfde afmetingen hebben en het resultaat is een Matrix die ook dezelfde afmetingen heeft. Je voegt gewoon elke waarde van de eerste Matrix toe of trekt deze af met de overeenkomstige waarde in de tweede Matrix. Zie hieronder:

matrix-matrix vermenigvuldiging

twee matrices samen vermenigvuldigen is ook niet zo moeilijk als je weet hoe je een matrix met een vector kunt vermenigvuldigen. Merk op dat je Matrices alleen samen kunt vermenigvuldigen als het aantal kolommen van de eerste Matrix overeenkomt met het aantal rijen van de tweede Matrix. Het resultaat is een Matrix met hetzelfde aantal rijen als de eerste Matrix en hetzelfde aantal kolommen als de tweede Matrix. Het werkt als volgt:

je splitst gewoon de tweede Matrix in kolomvectoren en vermenigvuldigt de eerste Matrix afzonderlijk met elk van deze vectoren. Dan zet je de resultaten in een nieuwe Matrix (zonder ze op te tellen!). De afbeelding hieronder legt dit stap voor stap uit:

And here is again some kind of cheat sheet:

Matrix Multiplication Properties

Matrix Multiplication has several properties that allow us to bundle a lot of computation into one Matrix multiplication. We will discuss them one by one below. We zullen beginnen met het uitleggen van deze concepten met Scalars en vervolgens met Matrices omdat dit je een beter begrip van het proces zal geven.

niet commutatief

scalaire vermenigvuldiging is commutatief maar matrixvermenigvuldiging niet. Dit betekent dat wanneer we Scalaren vermenigvuldigen, 7 * 3 hetzelfde is als 3 * 7. Maar als we Matrices met elkaar vermenigvuldigen, is A * B niet hetzelfde als B * A.

associatief

scalair en matrixvermenigvuldiging zijn beide associatief. Dit betekent dat de scalaire vermenigvuldiging 3 (5 * 3)hetzelfde is als (3*5) 3 en dat de matrixvermenigvuldiging A(B*C)hetzelfde is als (A*B) C.

distributief

scalaire en matrixvermenigvuldiging ook distributief zijn. Dit betekent dat
3 (5 + 3) hetzelfde is als 3*5 + 3*3 en dat A(B+C) hetzelfde is als A*B + A*C.

identiteitsmatrix

de identiteitsmatrix is een speciaal soort Matrix, maar eerst moeten we definiëren wat een identiteit is. Het getal 1 is een identiteit omdat alles wat je vermenigvuldigt met 1 gelijk is aan zichzelf. Daarom is elke Matrix die vermenigvuldigd wordt met een identiteitsmatrix gelijk aan zichzelf. Bijvoorbeeld, Matrix A maal zijn identiteitsmatrix is gelijk aan A.

U kunt een identiteitsmatrix herkennen aan het feit dat deze enen heeft langs zijn diagonalen en dat elke andere waarde nul is. Het is ook een “kwadraatmatrix”, wat betekent dat het aantal rijen overeenkomt met het aantal kolommen.

we hebben eerder besproken dat matrixvermenigvuldiging niet commutatief is, maar er is één uitzondering, namelijk als we een matrix vermenigvuldigen met een identiteitsmatrix. Daarom is de volgende vergelijking waar: A*I = I * A = A

Inverse en Transpose

De Matrix inverse en de matrix transpose zijn twee speciale soorten Matrix-eigenschappen. Nogmaals, we zullen beginnen met het bespreken hoe deze eigenschappen zich verhouden tot reële getallen en dan hoe ze zich verhouden tot Matrices.

Inverse

allereerst, wat is een inverse? Een getal dat vermenigvuldigd wordt met zijn inverse is gelijk aan 1. Merk op dat elk getal behalve 0 een inverse heeft. Als je een Matrix vermenigvuldigt met zijn inverse, is het resultaat zijn identiteitsmatrix. Het voorbeeld hieronder laat zien hoe de inverse van Scalars eruit ziet:

Maar niet elke Matrix heeft een inverse. Je kunt de inverse van een Matrix berekenen als het een “kwadraatmatrix” is en als het een inverse heeft. Bespreken welke Matrices een inverse hebben zou helaas buiten het bereik van deze post vallen.

Waarom hebben we een inverse nodig? Omdat we Matrices niet kunnen delen. Er is geen concept van delen door een Matrix, maar we kunnen een Matrix vermenigvuldigen met een inverse, wat in wezen resulteert in hetzelfde.

de afbeelding hieronder toont een Matrix vermenigvuldigd met zijn inverse, wat resulteert in een 2-bij-2 identiteitsmatrix.

u kunt eenvoudig de inverse van een matrix berekenen (als deze er een heeft) met numpy. Hier de link naar de documentatie: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.inv.html.

transponeren

en tot slot zullen we de eigenschap Matrix transponeren bespreken. Dit is eigenlijk het spiegelbeeld van een Matrix, langs een as van 45 graden. Het is vrij eenvoudig om de transponering van een Matrix te krijgen. De eerste kolom is de eerste rij van de matrix transponeren en de tweede kolom is de tweede rij van de Matrix transponeren. Een M * n-Matrix wordt omgezet in een N * m-Matrix. Ook is het AIJ-element van A gelijk aan het Aji-element (transponeren). De afbeelding hieronder illustreert dat:

samenvatting

in dit bericht leerde u over de wiskundige objecten van de lineaire algebra die worden gebruikt in machine learning. Je hebt geleerd om deze wiskundige objecten te vermenigvuldigen, te delen, toe te voegen en af te trekken. Verder heb je geleerd over de belangrijkste eigenschappen van Matrices en waarom ze ons in staat stellen om efficiëntere berekeningen te maken. Daarbovenop heb je geleerd wat inverse en transponeren Matrices zijn en wat je ermee kunt doen. Hoewel er ook andere delen van de lineaire Algebra gebruikt in Machine Learning, dit bericht gaf u een goede introductie tot de belangrijkste concepten.

Bronnen

Diep Leren (boek) — Ian Goodfellow, Joshua Bengio, Aaron Courville

Linear Algebra for Machine Learning

Andrew Ng Machine Learning cursus op Coursera

https://en.wikipedia.org/wiki/Linear_algebra

https://www.mathsisfun.com/algebra/scalar-vector-matrix.html

https://www.quantstart.com/articles/scalars-vectors-matrices-and-tensors-linear-algebra-for-deep-learning-part-1

Understanding Scalar and Vector Quantities

Dit bericht is oorspronkelijk gepubliceerd op mijn blog (https://machinelearning-blog.com).

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.