Avendt Maskinelæring 08/10 2021

Jeg blander dansk og engelsk. Jeg glemmer at rette mig selv når jeg lytter med nogle gange.

How to use a loss function and an optimizer to find the best parameters

We want to update the weights until the results are sufficient. This is done in a neural network.

The loss function defines how good a model performs.

Optimizer

It is necesary to know what parameters are beeing optimized.

Hvis man arbejder videre på en model efter at have gemt den i en ny session, så får man ikke nødvendigvis de samme resultater som at have arbejdet videre i samme session.

Tips:

Start altid med adam optimizeren. Den er ofte best. Brug den som benchmark, og anved så andre.

Neural network er gode til at håndtere multidimentionelt data.

Batch gradient descent

Batch gradient descent computes the gradient of the cost function. It uses the previous parameters as a base.

Stochastic gradient decent SGD

Create volitile path down to minimum.

Can be exploitet, but can be bad.

Mini batch decent

Laver tilfældige valg fra data (slices).

Momentum

Med SGD er momentum simpelt. Det kan være at flytte gennemsnittet, så det bliver mere udlignet. Det ligner gradient decent.

Nesterov accelerated gradient

Ligesom med momentum, men tager også højde for hele funktionen. Det er ikke åbenlyst hvorfor det virker bedre, men nogen gange gør det.

Lave netværk

Man kan med keras tensorflow bruge .add for at tilføje lag til netværk. Det gør scripts nemmere at læse.

Ustrukturerert data

Data er ofte ustruktureret.

Tids data kan nogen gange være kategoriseret som ustruktureret.

Afhænigt data har ulempen at det afhænger af de initielle observationer.

Træning i for lang tid

Der er ikke en klar måde at vide hvornår man skal stoppe. Men bliver man ved for længe bliver modellerne overfittet.

Derfor kan man anvende early stopping.

Siden at det foregår iterativt (i epochs), så kan man undersøge hvornår en gradient nærmer sig 0 (det bliver måske aldrig 0).

Ellers kan man predifinere hvor mange epochs skal være med fra starten.

Essentielle steps til Neural network i tensorflow

sparse_categorical_crossentropy er i nogle tilfælde en værdi fra 1-9 eller noget i den stil. Jeg fik kun det halvde med pga. toilet besøg. I andre tilfælde tilføjer man 0 som værdi.

I keras tensorflow history objekter kan man finde loss, val_loss, accuracy og cal_accuracy. Det er især pratisk når man vil plotte resultater.

I et tensorflow kan man følge udviklingen, og så kan man stoppe modellen når det passer en, i stedet for at lade den køre x iterationer færdigt.

Fundament for succesfult neural network

  • Passende data
  • Passende arkitektur
  • God loss funktion
  • God optimizer
  • Find god balance mellem bias og varians (og undgå overfitting)

Learning rate

I mange tilfælde så er langsom læringsrate langsom til at finde minimum, medium finder den relativt hurtigt og høj læringsrate finder den ofte aldrig. Det afhænger meget stærkt af data, så se det som tommelfingerregel. Man kan bruge en kombination. Momentum foretrækker ofte en høj learning rate. Momentum kan få en ud af lokal minimum.

Learning rate og batch size i kode

Learning rate defineres i optimizer “outside” med .compile

Bach difineres som parameter med .fit

Tradeoff mellem de 2 er således at høj batch size tillader højere læringsrate. Tommelfingerregel. Det afhænger yderligere af sample size. Så batch size relativiteren skal ses som i forholdsvis høj batch size ud fra sample size.

Der er ingen regel for hvor mange epochs der skal anvendes. Hvis man er meget i tvivl kan man prøve med 100, og så stoppe den tidligt hvis det overfitter.

Practicalities when using neural networks

  • Saving and loading models should be done in certain frequencies. Preferby often.
  • Terminate traning when stagnating
  • When working in teams, start using early models, while others continue training

Tensorboard

Med tensorboard kan man følge udviklingen løbende.

Nogen gange kan implementeringen være besværligt. Det kan være restriktivt at arbejde med.

Fordele og ulemper ved Neural networks

Fordele:

  • Kan modeleres til alt
  • Virker på struktureret og ustruktureret data
  • Kan opnå SOTA for en lang række af problemer især når der er meget data og det er ustruktoreret

Ulemper:

  • Trods for at de kan bruges til alt, så kan det være nærmest umuligt at opnå.
  • De kan være svære at forstå (black box)
  • De er meget tilbøjelige til overfitting
  • De kan være besværelige at anvende