- Johdanto
- matemaattiset objektit
- Laskennalliset säännöt
- Matriisilukuominaisuudet
- inversio-ja Transponointiominaisuudet
- Yhteenveto
- resurssit
- Johdanto
- matemaattiset objektit
- skalaari
- vektori
- matriisi
- tensori
- matriisi-Skalaarioperaatiot
- matriisi-vektori-kertolasku
- Matrix-Matrix Addition and Subtraction
- matriisi-matriisi-kertolasku
- Matrix Multiplication Properties
- ei kommutatiivinen
- assosiatiivinen
- Distributiivinen
- Identiteettimatriisi
- käänteismatriisi ja Transponoi
- inversio
- Transponoi
- yhteenveto
- Resources
Johdanto
Lineaarialgebra on jatkuva matematiikan muoto ja sitä sovelletaan kaikkialla tieteessä ja insinööritieteessä, koska sen avulla voidaan mallintaa luonnonilmiöitä ja laskea ne tehokkaasti. Koska se on jatkuvan eikä diskreetin matematiikan muoto, monilla tietojenkäsittelytieteilijöillä ei ole paljon kokemusta siitä. Lineaarialgebra on myös keskeinen lähes kaikilla matematiikan osa-alueilla, kuten geometriassa ja funktionaalianalyysissä. Sen käsitteet ovat keskeinen edellytys koneoppimisen teorian ymmärtämiselle, varsinkin jos työskentelet syväoppimisen algoritmien kanssa. Sinun ei tarvitse ymmärtää lineaarialgebraa ennen koneoppimisen aloittamista, mutta jossain vaiheessa haluat ehkä saada paremman käsityksen siitä, miten erilaiset koneoppimisen algoritmit todella toimivat konepellin alla.
Tämä auttaa sinua tekemään parempia päätöksiä Koneoppimisjärjestelmän kehityksen aikana. Joten jos todella haluat olla ammattilainen tällä alalla, sinun täytyy hallita osia Linear Algebra, jotka ovat tärkeitä koneoppimisen. Lineaarialgebrassa dataa edustavat lineaariyhtälöt, jotka esitetään matriisien ja vektorien muodossa. Siksi käsittelet lähinnä matriiseja ja vektoreita skalaarien sijaan (käsittelemme näitä termejä seuraavassa osiossa). Kun käytössäsi on oikeat kirjastot, kuten Numpy, voit laskea monimutkaisen matriisin kertolaskun hyvin helposti vain muutamalla koodirivillä. (Huomautus: tässä blogikirjoituksessa sivuutetaan lineaarialgebran käsitteet, jotka eivät ole tärkeitä koneoppimisen kannalta.)
matemaattiset objektit
skalaari
skalaari on yksinkertaisesti yksi luku. Esimerkiksi 24.
vektori
vektori on järjestynyt joukko lukuja, ja se voi olla rivissä tai sarakkeessa. Vektorilla on vain yksi indeksi, joka voi osoittaa tiettyä arvoa vektorin sisällä. Esimerkiksi v2 tarkoittaa vektorin sisällä olevaa toista arvoa, joka on yllä olevassa graafissa -8.
matriisi
matriisi on järjestynyt 2D-lukujen joukko ja siinä on kaksi indeksiä. Ensimmäinen osoittaa riville ja toinen sarakkeeseen. Esimerkiksi M23 viittaa toisen rivin ja kolmannen sarakkeen arvoon, joka on yllä olevassa keltaisessa grafiikassa 8. Matriisissa voi olla useita rivejä ja sarakkeita. Huomaa, että vektori on myös matriisi, mutta siinä on vain yksi rivi tai yksi sarake.
keltaisen graafin esimerkin matriisi on myös 2 x – ulotteinen matriisi (rivit x-sarakkeita). Alla näet toisen esimerkin matriisista notaationsa ohella:
tensori
tensorin voi ajatella olevan lukujono, joka on järjestetty säännölliselle ruudukolle ja jossa on vaihteleva määrä akseleita. Tensorilla on kolme indeksiä, joista ensimmäinen osoittaa riville, toinen sarakkeelle ja kolmas akselille. Esimerkiksi T232 osoittaa toista riviä, kolmatta saraketta ja toista akselia. Tämä viittaa arvoon 0 oikeassa Tensorissa alla olevassa graafissa:
tensori on yleisempi termi kaikille edellä mainituille käsitteille, koska tensori on moniulotteinen joukko ja se voi olla vektori ja matriisi riippuen siitä, kuinka monta indeksiä sillä on. Esimerkiksi ensimmäisen kertaluvun tensori olisi vektori (1 indeksi). Toisen kertaluvun tensoria kutsutaan matriisiksi (2 indeksiä) ja kolmannen kertaluvun tensoreita (3 indeksiä) ja korkeampia kutsutaan korkeamman kertaluvun tensoreiksi (3 tai useampia indeksejä).
matriisi-Skalaarioperaatiot
Jos matriisiin kerrotaan, jaetaan, vähennetään tai lisätään Skalaari, tehdään se matriisin jokaisella alkiolla. Oheinen kuva havainnollistaa tämän kertolaskun kannalta täydellisesti:
matriisi-vektori-kertolasku
matriisin kertominen vektorilla voidaan ajatella niin, että jokainen matriisin rivi kerrotaan vektorin sarakkeella. Lähtö on vektori, jolla on sama määrä rivejä kuin matriisilla. Alla olevasta kuvasta näkyy, miten tämä toimii:
ymmärtääksemme käsitteen paremmin käymme läpi toisen kuvan laskennan. Saadaksemme syntyvän vektorin ensimmäisen arvon (16) otamme sen vektorin numerot, jonka haluamme kertoa matriisilla (1 ja 5), ja kerromme ne matriisin ensimmäisen rivin luvuilla (1 ja 3). Tältä näyttää:
1*1 + 3*5 = 16
teemme saman matriisin toisen rivin arvoille:
4*1 + 0*5 = 4
ja uudestaan matriisin kolmannelle riville:
2*1 + 1*5 = 7
tässä on toinen esimerkki:
And here is a kind of cheat sheet:
Matrix-Matrix Addition and Subtraction
Matrix-Matrix Addition and Subtraction is fairly easy and straightforward. Vaatimuksena on, että matriiseilla on samat mitat ja tuloksena on matriisi, jolla on myös samat mitat. Voit vain lisätä tai vähentää jokaisen arvon ensimmäisen matriisin sen vastaavan arvon toisessa matriisissa. Katso alla:
matriisi-matriisi-kertolasku
kahden matriisin kertominen yhteen ei ole myöskään kovin vaikeaa, jos osaa kertoa matriisin vektorilla. Huomaa, että voit kertoa matriisit yhteen vain, jos ensimmäisen matriisin sarakkeiden lukumäärä vastaa toisen matriisin rivien määrää. Tuloksena on matriisi, jossa on sama määrä rivejä kuin ensimmäisessä matriisissa ja sama määrä sarakkeita kuin toisessa matriisissa. Se toimii seuraavasti:
yksinkertaisesti jaetaan toinen matriisi sarakevektoreihin ja kerrotaan ensimmäinen matriisi erikseen kullakin näistä vektoreista. Sitten laitat tulokset uuteen matriisiin (laskematta niitä yhteen!). Alla oleva kuva selittää tämän vaihe vaiheelta:
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. Aloitamme selittämällä nämä käsitteet Skalaareilla ja sitten matriiseilla, koska tämä antaa sinulle paremman käsityksen prosessista.
ei kommutatiivinen
Skalaarikertolasku on kommutatiivinen, mutta Matriisikertolasku ei. Tämä tarkoittaa, että kun olemme kertomassa skalaareja, 7*3 on sama kuin 3*7. Mutta kun kerromme matriisit toisillamme,A * B ei ole sama kuin B * A.
assosiatiivinen
skalaari ja Matriisikertolasku ovat molemmat assosiatiivisia. Tämä tarkoittaa, että Skalaarikertolasku 3(5*3) on sama kuin (3*5)3 ja että Matriisikertolasku A(B*C) on sama kuin (A*B)C.
Distributiivinen
skalaari ja Matriisikertolasku ovat myös molemmat distributiivisia. Tämä tarkoittaa, että
3 (5 + 3) on sama kuin 3*5 + 3*3 ja että A(B+C) on sama kuin A*B + A*C.
Identiteettimatriisi
Identiteettimatriisi on erikoinen matriisi, mutta ensin on määriteltävä, mikä identiteetti on. Luku 1 on identiteetti, koska kaikki, mitä kerrotaan 1: llä, on yhtä kuin se itse. Siksi jokainen matriisi, joka kerrotaan Identiteettimatriisilla, on yhtä suuri itsensä kanssa. Esimerkiksi matriisi a kertaa sen identiteetti-matriisi on yhtä suuri kuin A.
voit bongata Identiteettimatriisin siitä, että sen lävistäjillä on ykkösiä ja että kaikki muut arvot ovat nolla. Se on myös ”neliömatriisi”, eli sen rivimäärä vastaa sen sarakkeiden määrää.
olemme aiemmin keskustelleet siitä, että matriisin kertolasku ei ole kommutatiivinen, mutta on olemassa yksi poikkeus, nimittäin jos kerromme matriisin identiteettimatriisilla. Näin ollen seuraava yhtälö on tosi: a * i = I*a = a
käänteismatriisi ja Transponoi
matriisi käänteismatriisi ja matriisi Transponoi ovat kaksi erikoista matriisin ominaisuutta. Jälleen aloitamme keskustelemalla siitä, miten nämä ominaisuudet liittyvät reaalilukuihin ja sitten siihen, miten ne liittyvät matriiseihin.
inversio
Ensinnäkin, mikä on inversio? Luku, joka kerrotaan sen käänteisluvulla, on yhtä suuri kuin 1. Huomaa, että jokainen numero paitsi 0 on käänteinen. Jos matriisi kerrotaan sen käänteismatriisilla, tuloksena on sen Identiteettimatriisi. Alla oleva esimerkki näyttää, miltä skalaarien käänteisarvo näyttää:
, mutta jokaisella matriisilla ei ole käänteistä. Matriisin käänteisarvon voi laskea, jos se on ”neliömatriisi” ja jos sillä on käänteismatriisi. Keskustelu, joka matriisit on käänteinen olisi valitettavasti pois soveltamisalan tämän postitse.
miksi tarvitsemme käänteistä? Koska emme voi jakaa matriiseja. Ei ole olemassa käsitettä jakamalla matriisilla, mutta voimme kertoa matriisin käänteisellä, mikä johtaa olennaisesti samaan asiaan.
alla olevassa kuvassa on matriisi kerrottuna sen käänteisellä matriisilla, jolloin tuloksena on 2-by-2-identiteettimatriisi.
voit helposti laskea matriisin käänteisarvon (jos sillä on sellainen) käyttäen numpy-menetelmää. Linkki asiakirjaan on tässä: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.inv.html.
Transponoi
ja lopuksi keskustellaan matriisin Transpositiominaisuudesta. Tämä on pohjimmiltaan matriisin peilikuva 45 asteen akselilla. Matriisin transponointi on melko yksinkertaista. Sen ensimmäinen sarake on matriisin Transpoosin ensimmäinen rivi ja toinen sarake on matriisin Transpoosin toinen rivi. M * n-matriisi muunnetaan n * m-matriisiksi. Myös A: N A-alkio on yhtä suuri kuin Aji(transpose) – alkio. Alla oleva kuva havainnollistaa, että:
yhteenveto
tässä viestissä opit lineaarialgebran matemaattisista objekteista, joita käytetään koneoppimisessa. Opit kuinka kertoa, jakaa, lisätä ja vähentää näitä matemaattisia objekteja. Lisäksi olet oppinut matriisien tärkeimmistä ominaisuuksista ja siitä, miksi niiden avulla voimme tehdä tehokkaampia laskelmia. Sen päälle on oppinut, mitä käänteiset ja transponoivat matriisit ovat ja mitä niillä voi tehdä. Vaikka on olemassa myös muita osia Linear Algebra käytetään koneoppimisen, tämä viesti antoi sinulle asianmukaisen johdatus tärkeimmät käsitteet.
Resources
Deep Learning (book) — Ian Goodfellow, Joshua Bengio, Aaron Courville
Andrew Ng ’ s Machine Learning 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
tämä kirjoitus julkaistiin alun perin blogissani (https://machinelearning-blog.com).