• Nie Znaleziono Wyników

Sieci neuronowe

N/A
N/A
Protected

Academic year: 2021

Share "Sieci neuronowe"

Copied!
5
0
0

Pełen tekst

(1)

Sieci neuronowe

Marcin Orchel

1 Wstęp 2 Zadania

2.1 Zadania na 3.0

Napisać skrypt w R. W skrypcie

• dla wygenerowanych danych dwuwymiarowych dwóch klas z rozkładów normal- nych zaznacz na wykresie dane treningowe, klasyfikator sieciami neuronowymi, dla różnej liczby neuronów w warstwach ukrytych i różnej liczbie warstw

• oblicz błąd klasyfikacji na zbiorze testowym dla klasyfikatora

• wykorzystać walidację krzyżową do testowania jakości

• wyświetlić sieć neuronową

• przetestować wyszukiwanie optymalnych wartości hiperparametrów sieci

• sprawdzić na wolframalpha.com jaka jest wartość przewidywana dla sieci z jednym neuronem dla x = 1

• wyświetlić na wolframalpha.com funkcję predykcji dla 1 neuronu, a także dla 3 neuronów

Wskazówki do R

• w poleceniu neuralnet można testować również sieci z wieloma warstwami ukrytymi

• aby była brana pod uwagę funkcja aktywacji w poleceniu neuralnet należy ustawić parametr linear.output na false, w przeciwnym razie na wyjściu otrzymujemy tylko iloczyn skalarny

• wyraz wolny jest dodawany do iloczynu skalarnego

• http://search.r-project.org/library/neuralnet/html/neuralnet.html

• https://www.rdocumentation.org/packages/nnet/topics/nnet

(2)

• tuning hiperparametrówhttps://www.rdocumentation.org/packages/e1071/topics/

tune.wrapper Wskazówki do Matlaba

• http://www.mathworks.com/help/nnet/gs/fit-data-with-a-neural-network.

html

• przykładowe zbiory danychhttp://www.mathworks.com/help/nnet/gs/neural- network-toolbox-sample-data-sets.html

• http://www.mathworks.com/matlabcentral/fileexchange/35364-fast-multilayer- neural-network-training/content/demo.m

• http://www.mathworks.com/help/nnet/gs/classify-patterns-with-a-neural- network.html

• http://www.mathworks.com/help/nnet/ug/adaptive-neural-network-filters.

html

Przykłady

• nn.iris<-nnet(irys, kli, skip=TRUE, softmax=TRUE, size=3, col=2, decay=0.01, maxit=1000)

print(summary(nn.iris))

y.pred<-predict(nn.iris, irys, type="class")

• granica decyzyjna require("MASS") require("e1071") n <- 2

A <- matrix(runif(n^2)*2-1, ncol=n) sigma <- t(A) %*% A

B <- matrix(runif(n^2)*2-1, ncol=n) sigma2 <- t(B) %*% B

points1<-mvrnorm(n = 1000, c(-1, -1), sigma) points2<-mvrnorm(n = 1000, c(2, 1), sigma2) points1b<-cbind(rep(1, 1000), points1) points2b<-cbind(rep(-1, 1000), points2) allPoints<-rbind(points1b, points2b)

allPointsDataFrame<-as.data.frame(allPoints) c <- allPointsDataFrame$V1

allPointsDataFrame$V1 <- as.factor(allPointsDataFrame$V1) w <- allPointsDataFrame$V2

l <- allPointsDataFrame$V3

#svm.model<-svm(as.factor(c)~w+l, data=allPointsDataFrame,

(3)

# kernel="radial", gamma=1.5, cost=10000,

# cross=0, scale=FALSE)

svm.model<-nnet(as.factor(c)~w+l, data=allPointsDataFrame, skip=TRUE, softmax=FALSE, size=30, col=2, decay=0.01, maxit=1000)

print(summary(svm.model))

y.theoretical <- fitted(svm.model)

#print(table(c, y.theoretical)) min.w <- min(w)

max.w <- max(w) min.l <- min(l) max.l <- max(l)

#plot(svm.model, allPointsDataFrame, w~l, svSymbol="o",

#dataSymbol="o")

zerojeden <- ifelse((svm.model$decision.values > 0), 1, 0) plot(allPoints[,2], allPoints[,3], col = zerojeden + 1, xlim =

c(-5,5), ylim=c(-5,5))

plot(allPoints[,2], allPoints[,3], col = allPoints[,1]+2, xlim = c(min.w,max.w), ylim=c(min.l,max.l))

x<- seq(min.w, max.w, length=100) y<- seq(min.l, max.l, length=100)

myallPointsDataFrameT<-expand.grid(w=x, l=y) n <- length(x)

y.pred <- predict(svm.model, myallPointsDataFrameT) z <- y.pred

zerojeden <- ifelse((y.pred > 0.5), 1, 0)

contour(x, y, matrix(zerojeden, n), add=TRUE, levels=0.5, labcex = 0,

drawlabels = FALSE)

#v <- t(svm.model$coefs) %*% svm.model$SV

#b <- -svm.model$rho

#abline(a=-b/v[1,2], b=-v[1,1]/v[1,2], col="black", lty=1)

#abline(a=-(b-1)/v[1,2], b=-v[1,1]/v[1,2], col="orange", lty=3)

#abline(a=-(b+1)/v[1,2], b=-v[1,1]/v[1,2], col="orange", lty=3)

#plot(allPoints[,3], z, xlim = c(-5,5), ylim=c(-5,5))

• przykład z neuralnet require("MASS") require("e1071") require("neuralnet") n <- 2

A <- matrix(runif(n^2)*2-1, ncol=n) sigma <- t(A) %*% A

(4)

B <- matrix(runif(n^2)*2-1, ncol=n) sigma2 <- t(B) %*% B

points1<-mvrnorm(n = 1000, c(-1, -1), sigma) points2<-mvrnorm(n = 1000, c(-1.5, -2), sigma2) points1b<-cbind(rep(1, 1000), points1)

points2b<-cbind(rep(-1, 1000), points2) allPoints<-rbind(points1b, points2b)

allPointsDataFrame<-as.data.frame(allPoints) c <- allPointsDataFrame$V1

allPointsDataFrame$V1 <- as.factor(allPointsDataFrame$V1) w <- allPointsDataFrame$V2

l <- allPointsDataFrame$V3

#svm.model<-svm(as.factor(c)~w+l, data=allPointsDataFrame,

#kernel="radial", gamma=1.5, cost=10000,

#

#cross=0, scale=FALSE)

#svm.model<-nnet(as.factor(c)~w+l, data=allPointsDataFrame,

# skip=TRUE, softmax=FALSE, size=30, col=2,

# decay=0.01, maxit=1000)

svm.model<-neuralnet(c~w+l, data=allPointsDataFrame, hidden=c(2)) print(summary(svm.model))

y.theoretical <- fitted(svm.model)

#print(table(c, y.theoretical)) min.w <- min(w)

max.w <- max(w) min.l <- min(l) max.l <- max(l)

#plot(svm.model, allPointsDataFrame, w~l, svSymbol="o",

#dataSymbol="o")

zerojeden <- ifelse((svm.model$decision.values > 0), 1, 0) plot(allPoints[,2], allPoints[,3], col = zerojeden + 1, xlim =

c(-5,5), ylim=c(-5,5))

plot(allPoints[,2], allPoints[,3], col = allPoints[,1]+2, xlim = c(min.w,max.w), ylim=c(min.l,max.l))

x<- seq(min.w, max.w, length=100) y<- seq(min.l, max.l, length=100)

myallPointsDataFrameT<-expand.grid(w=x, l=y) n <- length(x)

y.pred <- compute(svm.model, myallPointsDataFrameT)$net.result z <- y.pred

zerojeden <- ifelse((y.pred > 0.5), 1, 0)

contour(x, y, matrix(zerojeden, n), add=TRUE, levels=0.5, labcex = 0,

(5)

drawlabels = FALSE)

#v <- t(svm.model$coefs) %*% svm.model$SV

#b <- -svm.model$rho

#abline(a=-b/v[1,2], b=-v[1,1]/v[1,2], col="black", lty=1)

#abline(a=-(b-1)/v[1,2], b=-v[1,1]/v[1,2], col="orange", lty=3)

#abline(a=-(b+1)/v[1,2], b=-v[1,1]/v[1,2], col="orange", lty=3)

#plot(allPoints[,3], z, xlim = c(-5,5), ylim=c(-5,5))

2.2 Zadania na 4.0

• wykonać klasyfikację na wybranych danych rzeczywistych siecią neuronową wielo- warstową z członem momentum

Wskazówki do Matlaba

• http://www.mathworks.com/help/nnet/examples/training-a-deep-neural-network- for-digit-classification.html

2.3 Zadania na 5.0

• przetestować sieć konwolucyjną

• przetestować algorytm Levenberga-Marquardta Wskazówki do Matlaba

• http://www.mathworks.com/help/nnet/ref/trainlm.html

• http://yann.lecun.com/exdb/mnist/

• http://www.mathworks.com/matlabcentral/fileexchange/24291-cnn-convolutional- neural-network-class

Cytaty

Powiązane dokumenty

Modele koneksjonistyczne: sieci i rozproszone przetwarzanie równoległe, ale węzły nie działają jak neurony – sieci Bayesowskie, modele graficzne, uczenie się przez

• dla wygenerowanych danych trójwymiarowych dwóch klas z rozkładów normalnych zaznacz na wykresie trójwymiarowym dane treningowe i klasyfikator oparty na estymacji jądrowej.

• dla wygenerowanych danych dwuwymiarowych dwóch klas z rozkładów normalnych zaznacz na wykresie dane treningowe, klasyfikator svm, dla różnych wartości C oraz sigma, dla

• dla wygenerowanych danych jednowymiarowych dwóch klas z rozkładów normal- nych zaznacz na wykresie dwuwymiarowym funkcję regresji logistycznej wraz z danymi treningowymi

• dla wygenerowanych danych dwuwymiarowych dwóch klas z rozkładów normal- nych wykonać klasyfikację qda (macierz kowariancji i wartości średnie obliczone na podstawie danych).

Gdy mamy warstwę ukrytą problem jest taki, że nie znamy prawidłowej wartości na wyjściu neuronów z warstwy ukrytej, więc nie wiemy jak wyliczyć modyfikacje wag.. Algorytm

universal approximation theorem for neural networks states that every continuous function that maps intervals of real numbers to some output interval of real numbers can

Robert Sulej Sztuczne sieci neuronowe – aplikacje w analizie danych eksperymentalnych 11/05/2009.