Documente Academic
Documente Profesional
Documente Cultură
Prediction Algorithms
In acesta publicare s-a prezentat diferiti algoritmii de predictie pentru a rezolva problemele severe
in arhitectura calculatorului.
Mecanismul general de predicție constă în anticiparea contextelor viitoare bazate pe informatii din
contextul actual și anterior , recuperarea contextului corect în cazul în care speculația eșuează și
actualizarea predictorului pentru a îmbunătăți acuratețea de predicție viitoare.
Predicția poate fi foarte utila în cazul în care disponibilitatea unor date în avans, permite reducerea
timpului de așteptare, îmbunătățind astfel eficiența.
In aceasta publicare s-a pus la dispozitie o descriere a predictorului model de design.
Motivativatia de a dezvolta predictorul model de design este faptul ca exista situatii cand
comportamentul proceselor software intr-un anumit context este mereu sau in mare parte acelasi.
In astfel de cazuri daca inregistram contextele din istorie si comportamentul asociat cand identificam
acelasi context in viitor putem prezice cu mare acuratete comportamentele corespunzatoare.Predictia
poate fi evitata crescand acuratetea generala.
AbstractConfid
ence
Trust(Object)
untrust(Object)
IsPredictible(O
bject)
ConcreteConfi
dence
Trust(Object)
untrust(Object)
IsPredictible(O
bject)
ConcretePredi
ctor
Predict()
Update(Object
)
AbstractPredic
tor
Predict()
Update(Object
)
Client
Predictorul model de design poate fi folosit in aplicatiile care au procese de predictie si ajuta la
implementarea eficienta a mecanismelor de predictie.
Figura 1 prezinta diagrama de clase a sistemului care foloseste predictorul model de design.
Principalul dezavantaj utilizand predictorul poate aparea in unele aplicatii daca acuratetea
predictiei este mica datorata numarului mare de misprediction( absenta predictiei) si recuperarea este
consumatoare de timp .
Aplicatia doar genereaza statistici in ceea ce priveste predictia miscarii persoanei si raporteaza
numarul de predictii, numarul de predictii corecte si de asemenea precizia predictiei.Figura 2 prezinta
diahrama de clase din aplicatie.
Clasa Markov este un concret lant Markov bazat pe predictor care defineste metodele predict si
update din interfata AbstarctPredictor. Metoda predict identifica contextul constand in ultimul R
(parametru de intrare), simboluri de observare, cautat in secventa de observare determina care simbol de
observare a urmat contextul cu cea mai mare frecventa si returneaza acel simbol ca urmatoarea
observare precisa,O implementare bazata pe tranzatia de tabele este de asemenea posibila dar este
ineficienta pentru un numar mare de simboluri de observare. Metoda update adauga simbolurile reale de
observare cand sunt disponibile in secventa de observatie.
Prezentare clasa Markov: Clasa MLP este un alt predictor concret, Multy-Layer-Perceptron cu un
strat ascuns si este folosit la algoritmul de invatare propagare inapoi.In general numarul de neuroni din
staturilede intrare si de iesire depind reprezentarea problemei.
public class Markov implements AbstractPredictor{
T = Q.size ();
isContext = false;
break;
}
if (isContext)
P [((Integer)Q.get(i)).intValue ()]++;
int pred = 0;
max = P [k];
pred = k;
Q.add (observation);
In aceasta aplicatie noi am ales codificarea binara pentru stratul de intrare si o camera un neuron
codificarea pentru stratul de iesire.Clasa MLP defineste metodele predict si update din interfata
AbstractPredictor.In afara de aceste metode contine cateva metode MLP specifica ca
generateRandomWeights, F, dF, forward si backward, dar de asemenea
cateva metode sa codifice simbolurile de observatie pentru a potriva stratul de intrare sau stratul de
iesiere respectiv decimalToBinary si decimalToCode. Pentru codul binar de intrare si de iesire functia de
activare sigmoida uni-polar poate fi folosita:
f(x)=1/(1+e(-x))
Deoarece in aplicatia prezentata intrarile si iesirile sunt codificate cu -1 si 1 urmatorul sigmoid bi-
polar functia de activare a fost considerata:
f(x)=(1-e(-x))/(1+e(-x))
private double neth []; //the hidden layer values before activation
public MLP (int nNeuronsForSymbol, int m, int p, double learningRate, int history){
this.nNeuronsForSymbol = nNeuronsForSymbol;
this.history = history;
this.nHiddenLayerNeurons = m;
this.nOutputLayerNeurons = p;
this.learningRate = learningRate;
generateRandomWeights ();
return (1 − (F(x)*F(x)))/2;
/* hidd <- in */
int j, l;
/* hidd -> in */
deltain [ j] = 0;
public void decimalToBinary (int dec, int bin [], int n){
int k = 0, r = 0, q = dec;
while (q ! = 0){
r = q%2;
if (r == 0)
r = −1;
bin [k++] = r;
q = q/2;
if (dec < n)
bin [dec] = 1;
forward (input);
int maxOutputPos = 0;
maxOutputPos = i;
Q.add (observation);
După cum se poate observa, metoda prezice codifică datele de intrare (constând
într-o anumită istorie de observații) din zecimal în binar, propagates intrarea inainte prin
intermediul rețelei prin apelarea metodei înainte și după aceea indicele producției
maxime este considerată ca fiind observația prezisă. Metoda de actualizare adaugă
simbolul de observație reală (când este disponibil) pentru a secvența de observație,
calculează erorile existente între simbolul de observație reală și prezisă una și după
aceea propagates acești termeni de eroare înapoi prin intermediul rețelei prin apelarea
metodei înapoi. obiectiv al pas înapoi este de a ajusta greutățile în ordine pentru a
minimiza eroarea.