ãŸããèªåãšã³ã³ãŒããŒã«ã€ããŠæžãããšãèããŸããã Rã§ã¯ããåãã®ãšãããåé¡ã¯ãã¥ãŒã©ã«ãããã¯ãŒã¯ã©ã€ãã©ãªã«ãããŸãïŒ slow ã buggy ããŸãã¯ããªããã£ãã§ãã GPUãå®å šã«ãµããŒãããŠããªããã°ïŒããã¯Pythonãšæ¯èŒããŠéåžžã«å€§ããªRã§ãïŒãããããçš®é¡ã®è€éãªãã¥ãŒã©ã«ãããã¯ãŒã¯ïŒç¹ã«ãã£ãŒãã©ãŒãã³ã° ïŒã§äœæ¥ããããšã¯å®è³ªçã«æå³ããããŸããïŒéçºäžã®ææãªMXNetãããžã§ã¯ãããããŸãïŒã èå³æ·±ãã®ã¯ãæ¯èŒçæ°é®®ãªh2oãã¬ãŒã ã¯ãŒã¯ã§ããããã®èè ã¯æªåé«ãTrevor Hastieããå©èšãåããŠãããCiscoãeBayãããã³PayPalã¯ããã䜿çšããŠäººé¡ã奎é·åããèšç»ãäœæããŸãã ãã¬ãŒã ã¯ãŒã¯ã¯Javaã§èšè¿°ãããŠããŸãïŒã¯ãããããŠå®éã«RAMã倧奜ãã§ãïŒã æ®å¿µãªãããGPUã§ã®äœæ¥ããµããŒãããŠããŸããã ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã¯ãããã«ç°ãªããŸãããå®å šã«ã¹ã±ãŒãªã³ã°ãããRãšPythonãžã®ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãïŒãã ããããŸããºã ã®ãã¡ã³ã¯ã localhostïŒ54321ã§ããã©ã«ãã§ãã³ã°ããWebã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããããšãã§ããŸãïŒ ã
ãã®ãããããŒã¿ã»ããã®æž¬å®æ°ã«ã€ããŠçåãçããå Žåãããã¯éåžžã«å€ãã®æž¬å®å€ãããããšãæå³ããæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®äœ¿çšãããŸã䟿å©ã§ã¯ãªãçç±ã§ãã ãŸããããŒã¿ã®äžéšã¯åãªãæ å ±ãã€ãºã§ãããç¡é§ãªãŽãã§ãã ãããã£ãŠãæã䟡å€ã®ãã枬å®å€ãå¯èœãªéãæœåºããŠãäžèŠãªæž¬å®å€ãåé€ããããšããå§ãããŸãã ãšããã§ãéã®åé¡ãçºçããå¯èœæ§ããããŸã-ããå€ãã®æ¬¡å ãè¿œå ããããåã«ããé¢çœããŠäŸ¿å©ãªæ©èœã å°çšã³ã³ããŒãã³ãã¯ãèŠèŠåã®ç®çã«ã圹ç«ã¡ãŸãïŒããšãã°ã t-SNEã¯ããã«å¯Ÿå¿ããŠããŸãïŒã å解ã¢ã«ãŽãªãºã ã¯ãæåž«ãªãã®æ©æ¢°åŠç¿æ¹æ³ãšããŠãããèªäœãèå³æ·±ããã®ã§ããããã¯ãäž»ãªåé¡ã®è§£æ±ºã«ã€ãªããããšããããŸãã
ãããªãã¯ã¹å解
ååãšããŠã1ã€ãŸãã¯å¥ã®å¹çã§ããŒã¿ã®æ¬¡å ãåæžããããã«ãæ©æ¢°åŠç¿ã®ã»ãšãã©ã®æ¹æ³ãé©å¿ãããããšãã§ããŸããå®éããããã®æ¹æ³ã¯ã1ã€ã®å€æ¬¡å 空éãå¥ã®ç©ºéã«ãããã³ã°ããŸãã ããšãã°ãPCAãšK-meansã®çµæã¯ãããæå³ã§åçã§ãã ãã ããéåžžã¯ãã¢ãã«ãã©ã¡ãŒã¿ãŒã®æ€çŽ¢ã§å€§éšãããã«ãããŒã¿ã®æ¬¡å ãåæžããå¿ èŠããããŸãã ãã¡ããããããã®ã¡ãœããã®äžã§æãéèŠãªã®ã¯SVDã§ãã ããªãPCAã§ã¯ãªãSVDãªã®ã§ããïŒããšããªãã¯å°ããŸãã SVDã¯ãããèªäœãããŒã¿åæã«ãããŠç¬ç«ããéèŠãªææ³ã§ãããå解ã®çµæãšããŠåŸãããè¡åã¯ãæ©æ¢°åŠç¿ã®èŠ³ç¹ããå®å šã«æå³ã®ãã解éãæã£ãŠããããã§ãã 第äºã«ãPCAã«äœ¿çšããããšãã§ããNMF ïŒããã³ä»ã®è¡åå解æ³ïŒã®ããã€ãã®äºçŽã§äœ¿çšã§ããŸãã 第äžã«ãSVDã¯ICAã®ããã©ãŒãã³ã¹ãæ¹åããããã«é©åãããããšãã§ããŸãã ããã«ãSVDã«ã¯ãããšãã°ãæ£æ¹ïŒ LU ã Schurã®å解ïŒãŸãã¯æ£æ¹å¯Ÿç§°æ£å®è¡åïŒ Cholesky ïŒã®ã¿ããŸãã¯èŠçŽ ãéè² ïŒ NMF ïŒã®è¡åã®ã¿ã«é©çšã§ãããªã©ã®äžå¿«ãªç¹æ§ã¯ãããŸããã åœç¶ãæ®éæ§ã®ä»£äŸ¡ãæããªããã°ãªããŸãã-ç¹ç°å解ã¯ããªãé ãã§ãã ãããã£ãŠãè¡åã倧ããããå Žåã ã©ã³ãã åãããã¢ã«ãŽãªãºã ã䜿çšãããŸãã
SVDã®æ¬è³ªã¯åçŽã§ã-ä»»æã®ãããªãã¯ã¹ïŒå®æ°ãŸãã¯è€çŽ æ°ïŒã¯ã3ã€ã®ãããªãã¯ã¹ã®ç©ãšããŠè¡šãããŸãã
X =UΣV * ã
ããã§ãUã¯æ¬¡æ°mã®ãŠãã¿ãªè¡åã§ãã Σã¯ãµã€ãºmxnã®è¡åã§ããã®äž»å¯Ÿè§ã«ã¯ç¹ç°ãšåŒã°ããéè² ã®æ°ããããŸãïŒäž»å¯Ÿè§ã®å€åŽã®èŠçŽ ã¯ãŒãã«çãã-ãã®ãããªè¡åã¯é·æ¹åœ¢ã®å¯Ÿè§è¡åãšåŒã°ããããšããããŸãïŒã V *ã¯ã次æ°nã®Vè¡åã®ãšã«ããŒãå ±åœ¹ã§ãã è¡åUã®måãšè¡åVã®nåã¯ãããããè¡åXã®å·Šç¹ç°ãã¯ãã«ãšå³ç¹ç°ãã¯ãã«ãšåŒã°ããŸãã枬å®æ°ãæžããåé¡ã«ã€ããŠã¯ã2çªç®ã«äžããèŠçŽ ãå ±éã®åå ã«ãå ¥ãããããåæ£ãšããŠè§£éã§ããè¡åΣã§ããæåãéé ïŒÏ1â¥Ï2â¥...â¥Ïnoiseã ãããã£ãŠãSVDã®ã³ã³ããŒãã³ãã®æ°ãéžæãããšãïŒPCAã®å Žåãšåæ§ïŒãèæ ®ãããã³ã³ããŒãã³ããäžããåæ£ã®åèšã«ãã£ãŠæ£ç¢ºã«å°ãããŸãã Rã§ã¯ãç¹ç°å解æäœã¯svdïŒïŒé¢æ°ã«ãã£ãŠå®è¡ãããç¹ç°å€ãæã€ãã¯ãã«dcãè¡åuããã³vã®3ã€ã®èŠçŽ ã®ãªã¹ããè¿ããŸãã
ã¯ããããã¯1ã€ã®ã³ã³ããŒãã³ãã®ã¿ãåããç°è²ã®ããŒãããŒã³ã®ãµãŒã·ã£ã®ããã«èŠããŸãããããã§ã¯ãå ã®ç»åã®ã°ã©ããŒã·ã§ã³ã«åŸã£ãŠãåºæ¬çãªç·åœ¢åãããæ§é ãèŠãããšãã§ããŸãã ã³ã³ããŒãã³ãèªäœã¯ãå·Šã®ç¹ç°ãã¯ãã«ã«å¯Ÿå¿ããç¹ç°å€ãšå³ã®ç¹ç°ãã¯ãã«ãæãããšåŸãããŸãã ãã¯ãã«ã®æ°ãå¢ãããšãç»ååæ§æã®å質ãåäžããŸãã
次ã®ã°ã©ãã¯ãæåã®ã³ã³ããŒãã³ããåæ£ã®80ïŒ ä»¥äžã説æããŠããããšã瀺ããŠããŸãã
Rã³ãŒããç¹ç°å解ïŒ
library(jpeg) img <- readJPEG("source.jpg") svd1 <- svd(img) # comp1 <- svd1$u[, 1] %*% t(svd1$v[, 1]) * svd1$d[1] par(mfrow=c(1,2)) image(t(img)[,nrow(img):1], col=gray(0:255 / 255), main="") image(t(comp1)[,nrow(comp1):1], col=gray(0:255 / 255), main="1 ") # par(mfrow=c(2,2)) for (i in c(3, 15, 25, 50)) { comp <- svd1$u[,1:i] %*% diag(svd1$d[1:i])%*% t(svd1$v[,1:i]) image(t(comp)[,nrow(comp):1], col=gray(0:255 / 255), main=paste0(i," ()")) } par(mfrow=c(1,1)) plot(svd1$d^2/sum(svd1$d^2),pch=19,xlab="",ylab="% ", cex=0.4) grid()
å ã®ç»åããååã®å¹³åå€ãæžç®ããçµæã®è¡åãå ã®è¡åã®åæ°ã®å¹³æ¹æ ¹ã«åå²ããç¹ç°å解ãå®è¡ãããšã©ããªããŸããïŒ çµæã®å解ã®è¡åVã®åã¯ãPCAã§ååŸãããäž»èŠãªã³ã³ããŒãã³ãã«æ£ç¢ºã«å¯Ÿå¿ããããšãããããŸãïŒãšããã§ãPCAã®Rã§ã¯ãprcompïŒïŒé¢æ°ã䜿çšã§ããŸãïŒ
> img2 <- apply(img, 2, function(x) x - mean(x)) / sqrt(ncol(img)) > svd2 <- svd(img2) > pca2 <- prcomp(img2) > svd2$v[1:2, 1:5] [,1] [,2] [,3] [,4] [,5] [1,] 0.007482424 0.0013505222 -1.059040e-03 0.001079308 -0.01393537 [2,] 0.007787882 0.0009230722 -2.512017e-05 0.001324682 -0.01373691 > pca2$rotation[1:2, 1:5] PC1 PC2 PC3 PC4 PC5 [1,] 0.007482424 0.0013505222 -1.059040e-03 0.001079308 -0.01393537 [2,] 0.007787882 0.0009230722 -2.512017e-05 0.001324682 -0.01373691
ãããã£ãŠãæ£èŠåãããåæè¡åã®ç¹ç°å解ãå®è¡ããå Žåãäž»æåãåé¢ããããšã¯é£ãããããŸããã ããã¯ãããããèšç®ãã1ã€ã®æ¹æ³ã§ãã 2çªç®ã¯ãå ±åæ£è¡å XX Tã® åºæãã¯ãã«ã®æ€çŽ¢ã«çŽæ¥åºã¥ããŠããŸãã
äž»æåã®æ°ãéžæããåé¡ã«æ»ããŸãããã ãã£ããã³ã®ã«ãŒã«ã¯æ¬¡ã®ãšããã§ããã³ã³ããŒãã³ãã倧ããã»ã©ãããå€ãã®å·®ç°ãèšè¿°ãããŸãã ããšãã°ã Andrew Ng㯠ã90ïŒ ãè¶ ããåæ£ã«æ³šç®ããããšãæšå¥šããŠããŸãã ä»ã®ç 究è ã¯ããã®æ°ã¯50ïŒ ã§ãããšäž»åŒµããŠããŸãã ããŒã³ã®ãããã䞊ååæã§ãããã¢ã³ãã«ã«ãã·ãã¥ã¬ãŒã·ã§ã³ã«åºã¥ããŠçºæãããŸããã ãã®ããã®ããã±ãŒãžãRã«ãããŸãã éåžžã«ç°¡åãªã¢ãããŒãã¯ã ã¹ã¯ãªãŒããããã䜿çšããããšã§ã ãã°ã©ãäžã§ãèããæ¢ãããã®ãèãã®ç©ãããªéšåã圢æãããã¹ãŠã®ã³ã³ããŒãã³ããç Žæ£ããå¿ èŠããããŸãã 次ã®å³ã§ã¯ã6ã€ã®ã³ã³ããŒãã³ããèæ ®ããå¿ èŠããããŸãã
äžè¬çã«ã¯ãã芧ã®ãšããã§ãã 質åã¯ããŸã解決ãããŠããŸãã ãŸããPCAã¯æ£èŠååžã®ããŒã¿ã«ã®ã¿é©çšå¯èœã§ãããšèããããŠããŸããã Wikiã¯ããã«åæãããSVD / PCAã¯ããããååžã®ããŒã¿ã§äœ¿çšã§ããŸããããã¡ãããå¿ ãããå¹ççã§ã¯ãããŸããïŒçµéšçã«æããã«ãããŠããŸãïŒã
ãã1ã€ã®èå³æ·±ãå±éã¯ã éè² è¡åã®å æ°å解ã§ã ãããã¯ãååã瀺ããšãããéè² è¡åãéè² è¡åã«å解ããããã«äœ¿çšãããŸãã
X = WH
äžè¬ã«ããã®ãããªåé¡ã«ã¯ïŒSVDãšã¯ç°ãªãïŒæ£ç¢ºãªè§£æ±ºçããªããèšç®ã«ã¯æ°å€ã¢ã«ãŽãªãºã ã䜿çšãããŸãã ãã®åé¡ã¯ã 2次èšç»æ³ã§å®åŒåã§ããŸãããã®æå³ã§ã¯ã SVMã«è¿ããªããŸãã 空éã®æ¬¡å ãæžããåé¡ã§ã¯ã次ãéèŠã§ãïŒè¡åXã®æ¬¡å ãmxnã®å Žåãè¡åWãšHã®æ¬¡å ã¯ããããmxkãškxnã§ãããkã®éžæã¯mãšnèªäœãããã¯ããã«å°ããããããã®åæ次å ãå€§å¹ ã«æžããããšãã§ããŸãã 圌ãã¯ãéè² è¡åãããŒã¿ã®æ§è³ªãšããäžèŽããããã¹ãããŒã¿åæã« NMFã䜿çšããããšã奜ã¿ãŸãããäžè¬ã«ã ãã®ææ³ã®é©çšç¯å²ã¯ PCAã«å£ããŸããã Rã®æåã®ç»åã®å解ã«ããã次ã®çµæãåŸãããŸãã
RãNMFã®ã³ãŒãïŒ
library(NMF) par(mfrow=c(2,2)) for (i in c(3, 15, 25, 50)) { m.nmf <- nmf(img, i) W <- m.nmf@fit@W H <- m.nmf@fit@H X <- W%*%H image(t(X)[,nrow(X):1], col=gray(0:255 / 255), main=paste0(i," ()")) }
ãã£ãšãšããŸããã¯ãªãã®ãå¿ èŠãªå Žå
ããšããšå ç®æåã§ä¿¡å·ãå解ããããã«éçºãããæ¹æ³ããããŸã-ç§ã¯ICAã«ã€ããŠè©±ããŠããã ãã®å Žåããããã®ã³ã³ããŒãã³ãã«ã¯ç°åžžãªååžãããããã®ãœãŒã¹ã¯ç¬ç«ããŠãããšãã仮説ãåãå ¥ããããŸãã æãåçŽãªäŸã¯ãå€ãã®é³å£°ãæ··åšããããŒãã£ã§ããã¿ã¹ã¯ã¯ãåãœãŒã¹ããåé³å£°ä¿¡å·ãåé¢ããããšã§ãã éåžžãç¬ç«ããã³ã³ããŒãã³ãã®æ€çŽ¢ã«ã¯2ã€ã®ã¢ãããŒãã䜿çšãããŸãã1ïŒ Kullback-Leiblerçºæ£ã«åºã¥ãçžäºæ å ±éã®æå°åã 2ïŒãéã¬ãŠã¹æ§ããæ倧åããïŒããã§ã¯ãéå°ä¿æ°ãè² ã®ãšã³ããããŒãªã©ã®å°ºåºŠã䜿çšãããŸã ïŒã
次ã®å³ã§ã¯ã2ã€ã®æ£åŒŠæ³¢ãæ··åãããŠããåçŽãªäŸã§ãICAã䜿çšããŠããããåºå¥ãããŠããŸãã
RãICAã®ã³ãŒãïŒ
x <- seq(0, 2*pi, length.out=5000) y1 <- sin(x) y2 <- sin(10*x+pi) S <- cbind(y1, y2) A <- matrix(c(1/3, 1/2, 2, 1/4), 2, 2) y <- S %*% A library(fastICA) IC <- fastICA(y, 2) par(mfcol = c(2, 3)) plot(x, y1, type="l", col="blue", pch=19, cex=0.1, xlab="", ylab="", main=" ") plot(x, y2, type="l", col="green", pch=19, cex=0.1, xlab = "", ylab = "") plot(x, y[,1], type="l", col="red", pch=19, cex=0.5, xlab = "", ylab = "", main=" ") plot(x, y[,2], type="l", col="red", pch=19, cex=0.5, xlab = "", ylab = "") plot(x, IC$S[,1], type="l", col="blue", pch=19, cex=0.5, xlab = "", ylab = "", main="ICA") plot(x, IC$S[,2], type="l", col="green", pch=19, cex=0.5, xlab = "", ylab = "")
ICAã¯ãããŒã¿ãã£ã¡ã³ã·ã§ã³ãåæžããã¿ã¹ã¯ãšäœã®é¢ä¿ããããŸããïŒ ãã®æ§è³ªã«é¢ä¿ãªããããŒã¿ãã³ã³ããŒãã³ãã®æ··åç©ãšããŠæ瀺ããŠã¿ãŸãããããã®æ··åç©ããç§ãã¡ã«åã£ãæ°ã®ãä¿¡å·ãã«åå²ããããšãã§ããŸãã PCAã®å Žåã®ããã«ãã³ã³ããŒãã³ãã®æ°ãéžæããããã®ç¹å¥ãªåºæºã¯ãããŸãã-å®éšçã«éžæãããŸãã
ãã®ã¬ãã¥ãŒã®æåŸã®å®éšã¯èªåãšã³ã³ãŒããŒã§ã ãããã¯ã èªåãšã³ã³ãŒããŒã®åºåã§ã®å¿çãå ¥åä¿¡å·ã«å¯èœãªéãè¿ããªãããã«æ§æããããã¥ãŒã©ã«ãããã¯ãŒã¯ã®ç¹å¥ãªã¯ã©ã¹ã§ãã ãã¥ãŒã©ã«ãããã¯ãŒã¯ã®ãã¹ãŠã®èœåãšæè»æ§ã«ãããæé©ãªãã©ã¡ãŒã¿ãŒãèŠã€ããããšã«é¢é£ããå€ãã®åé¡ãåŸãããŸãïŒé ãå±€ãšãã®äžã®ãã¥ãŒãã³ã®æ°ã掻æ§åé¢æ°ïŒ sigmoid ã tanh ã ReLu ïŒãåŠç¿ã¢ã«ãŽãªãºã ãšãã®ãã©ã¡ãŒã¿ãŒãæ£ååã®æ¹æ³ïŒ L1 L2 ã ããããã¢ãŠã ïŒã ãã€ãºã®å€ãããŒã¿ã§èªåãšã³ã³ãŒããŒããã¬ãŒãã³ã°ããŠããããã¯ãŒã¯ããããå埩ããããã«ãããšãèªåãšã³ã³ãŒããŒã®ãã€ãºãé€å»ãããŸãã äºåèšå®ãããèªåãšã³ã³ãŒããŒãã«ã¹ã±ãŒã圢åŒã§ããããã³ã°ãã㊠ãæåž«ãªãã§ãã£ãŒããããã¯ãŒã¯ãäºåãã¬ãŒãã³ã°ããããšãã§ããŸã ã
æãåçŽãªè¡šçŸã§ã¯ãèªåãšã³ã³ãŒããŒã¯å€å±€ããŒã»ãããã³ãšããŠã¢ãã«åã§ããŸãããã®å Žåãåºåå±€ã®ãã¥ãŒãã³ã®æ°ã¯å ¥åã®æ°ã«çãããªããŸãã äžã®å³ãããå°ããªæ¬¡å ã®äžéã®é ãå±€ãéžæããããšã«ãããåæããŒã¿ããå§çž®ããããããšãæããã§ãã
å®éãäžã§è¿°ã¹ãh2oããã±ãŒãžã«ã¯ããã®ãããªèªåã¢ãœã·ãšãŒã¿ãŒãååšããããã䜿çšããŸãã æåã¯ãžã§ã¹ãã£ãŒã䜿ã£ãŠäŸãèšå®ãããã£ãã®ã§ãããããã«ããã€ãã®æç« ã§
ããŒã¿ã¯.csvãã¡ã€ã«ïŒtrain.csvããã³test.csvïŒã®åœ¢åŒã§æ瀺ãããŸããããããã¯éåžžã«å€ããããããå°æ¥çã«ã¯train.csvã®ããŒã¿ã®10ïŒ ã䜿çšããŠåçŽåããäºå®ã§ãã ã©ãã«ã®ä»ããåã¯ãèŠèŠåã®ç®çã§ã®ã¿äœ¿çšãããŸãã ããããèªåãšã³ã³ãŒããŒã䜿çšããŠäœãã§ããããç解ããåã«ãPCAãICAãNMFãå解ãããšãã«æåã®3ã€ã®ã³ã³ããŒãã³ããæäŸãããã®ãèŠãŠã¿ãŸãããã
3ã€ã®æ¹æ³ã¯ãã¹ãŠãã¯ã©ã¹ã¿åã®åªããä»äºãããŸãããç»åã§ã¯ãã¯ã£ãããšèŠããã°ã«ãŒããçžäºã«ã¹ã ãŒãºã«ç§»è¡ããŸãã ãããã®é·ç§»ã¯ãæ°åã®èªèãç¹ã«å°é£ãªå¢çç·ã®å Žåã§ãã PCAã¯ã©ã¹ã¿ãŒã®å³ã§ã¯ãäž»æåæ³ãéèŠãªåé¡ã解決ããæ¹æ³ãéåžžã«æ確ã§ããå€æ°ãéçžé¢åããŸããã¯ã©ã¹ã¿ãŒã0ããšã1ãã¯æ倧ééã§ãã NMFã®ãç°åžžãªããã¿ãŒã³ã¯ãã¡ãœãããéè² è¡åã§ã®ã¿æ©èœãããšããäºå®ãšæ£ç¢ºã«é¢é£ããŠããŸãã ãã ãããã®ãããªã»ããã®åé¢ã¯ãèªåãšã³ã³ãŒããŒã䜿çšããŠååŸã§ããŸãã
Rãh2oèªåãšã³ã³ãŒããŒã®ã³ãŒãïŒ
train <- read.csv("train.csv") label <- data$label train$label <- NULL train <- train / max(train) # library(caret) tri <- createDataPartition(label, p=0.1)$Resample1 train <- train[tri, ] label <- label[tri] # h2o library(h2o) h2o.init(nthreads=4, max_mem_size='14G') train.h2o <- as.h2o(train) # m.deep <- h2o.deeplearning(x=1:ncol(train.h2o), training_frame=train.h2o, activation="Tanh", hidden=c(150, 25, 3, 25, 150), epochs=600, export_weights_and_biases=T, ignore_const_cols=F, autoencoder=T) deep.fea <- as.data.frame(h2o.deepfeatures(m.deep, train.h2o, layer=3)) library(rgl) palette(rainbow(length(unique(labels)))) plot3d(deep.fea[, 1], deep.fea[, 2], deep.fea[, 3], col=label+1, type="s", size=1, box=F, axes=F, xlab="", ylab="", zlab="", main="AEC")
ããã§ã¯ãã¯ã©ã¹ã¿ãŒãããæ確ã«å®çŸ©ããã空éã«ééã空ããããŠããŸãã ãã®ãããã¯ãŒã¯ã¯ã5ã€ã®é ãå±€ãšå°æ°ã®ãã¥ãŒãã³ãå«ãããªãåçŽãªã¢ãŒããã¯ãã£ãåããŠããŸãã 3çªç®ã®é ãå±€ã«ã¯3ã€ã®ãã¥ãŒãã³ãããªããããããã®ç¹åŸŽã¯äžã«ç€ºãããšããã§ãã ããã€ãã®ããèå³æ·±ãåçïŒ
Rã³ãŒããæåã®é ãå±€ã®éã¿ã®èŠèŠåïŒ
W <- as.data.frame(h2o.weights(m.deep, 1)) pdf("fea.pdf") for (i in 1:(nrow(W))){ x <- matrix(as.numeric(W[i, ]), ncol=sqrt(ncol(W))) image(x, axes=F, col=gray(0:255 / 255)) } dev.off()
å®éããããã¯ãã¥ãŒãã³ã®éã¿ã®åãªãç»åã§ããåç»åã¯åå¥ã®ãã¥ãŒãã³ã«é¢é£ä»ããããç¹å®ã®ãã¥ãŒãã³ã«åºæã®æ å ±ãéžæãããã£ã«ã¿ãŒãè¡šããŸãã åºåã¬ã€ã€ãŒã®ã¹ã±ãŒã«ã®æ¯èŒã¯æ¬¡ã®ãšããã§ãã
åè¿°ã®èªåãšã³ã³ãŒããŒã¯ããã€ãºãé€å»ããèªåãšã³ã³ãŒããŒã«ç°¡åã«å€æã§ããŸãã ãã®ãããªèªåãšã³ã³ãŒããŒã¯ãæªãã ç»åãå ¥åã«éä¿¡ããå¿ èŠããããããæåã®é衚瀺ã¬ã€ã€ãŒã®åã«ããããã¢ãŠãã¬ã€ã€ãŒãé 眮ããã ãã§ååã§ãã ãã®ãããã§ãããçšåºŠã®ç¢ºçã§ããã¥ãŒãã³ã¯ããªããç¶æ ã«ãªããaïŒåŠçãããç»åã«æªã¿ãå°å ¥ãããŸãã bïŒãã¬ãŒãã³ã°ã®äžçš®ã®æ£ååãšããŠæ©èœããŸãã
èªåãšã³ã³ãŒãã®å¥ã®èå³æ·±ãã¢ããªã±ãŒã·ã§ã³ã¯ãç»ååæ§æã®ãšã©ãŒã«é¢ããããŒã¿ã®ç°åžžã®æ±ºå®ã§ãã äžè¬ã«ããã¬ãŒãã³ã°ã»ããã®ããŒã¿ããªãŒããšã³ã³ãŒããŒã®å ¥åã«äŸçµŠãããªãå Žåããã¡ãããæ°ãããµã³ãã«ããã®åç»åã®åæ§æãšã©ãŒã¯ããã¬ãŒãã³ã°ã»ããã®åæ§æãšã©ãŒããã倧ãããªããŸãããã»ãŒåã次æ°ã§ãã ç°åžžãããå Žåããã®ãšã©ãŒã¯æ°åãŸãã¯æ°çŸåã«ãªããŸãã
ãããã«
ãã¡ãããããå§çž®æ¹æ³ãä»ã®å§çž®æ¹æ³ãããåªããŠããããŸãã¯å£ã£ãŠãããšããèšè¿°ã¯èª€ãã§ããããããã«åºæã®ä»æ§ãšç¯å²ããããŸãã å€ãã¯ããŒã¿èªäœã®æ§è³ªã«äŸåããŸãã ããã§ã®æåŸã®åœ¹å²ã¯ãã¢ã«ãŽãªãºã ã®é床ã§ã¯ãããŸããã äžèšã®ãã¡ãæéã®ãã®ãSVD / PCAã§ããããšãå€æãã次ã«ICAãNMFãé çªã«é²ã¿ãèªåãšã³ã³ãŒããŒãã·ãªãŒãºãå®äºããŸãã èªåã¢ãœã·ãšãŒã¿ãŒã§äœæ¥ããããšã¯ç¹ã«å°é£ã§ã-ç¹ã«ãã©ã¡ãŒã¿ãŒã®éžæãéèªæã§ããããã